PBXA64 V22 vs PowerBASIC Compatibility
YES = Fully supported PART = Partial NO = Not implemented
Compiler Directives
| Directive | PBXA64 | Notes |
#COMPILE EXE/DLL | YES | DLL/GUI modes rejected with diagnostic (V22) |
#DIM ALL / NONE | YES | #DIM ALL only |
#INCLUDE / ONCE / INCLUDELONCE | YES | Recursive resolution with depth tracking (V22) |
#PCODE / #ENDP | YES | PILOT embedded blocks |
#IF / #ELSEIF / #ELSE / #ENDIF / $IF | YES | Conditional compilation (V21) |
#DEFINE / #UNDEF / %DEF() | YES | Symbol definition and detection (V21/V22) |
MACRO / MACROFUNCTION / MACROTEMP | YES | Full macro expansion engine (V22) |
#RESOURCE | NO | PE resources |
#DEBUG / #TOOLS / #OPTIMIZE | NO | |
#REGISTER / #ALIGN / #STACK | NO | |
Declarations & Procedures
| Feature | PBXA64 | Notes |
FUNCTION name(...) AS type | YES | |
SUB name(...) | YES | |
FUNCTION PBMAIN() AS LONG | YES | Entry point |
DECLARE FUNCTION/SUB ... LIB ... ALIAS ... | YES | |
DECLARE ... ALIAS "#ordinal" | YES | V13+ |
DECLARE ... VARARG | YES | V17+ |
BYVAL / BYREF | YES | |
OPTIONAL / OPT | NO | |
CALLBACK FUNCTION | YES | V17+ |
MACRO / MACROFUNCTION | YES | Full expansion engine (V22) |
CLASS / INTERFACE / METHOD / PROPERTY | NO | COM objects |
Variable Declarations
| Feature | PBXA64 | Notes |
LOCAL | YES | |
DIM | YES | |
STATIC | YES | |
GLOBAL | YES | Limited support |
THREADED | NO | |
REGISTER | NO | |
Data Types
| Type | Suffix | PBXA64 | Notes |
| BYTE | ? | YES | |
| WORD | ? | YES | |
| DWORD | ? | YES | |
| INTEGER | % | YES | |
| LONG | & | YES | |
| QUAD | && | YES | |
| SINGLE | ! | PART | Partial SSE lowering |
| DOUBLE | # | PART | Partial SSE lowering |
| EXT | ## | PART | Partial x87 |
| CURRENCY | @ | YES | |
| STRING | $ | PART | Fixed buffers; heap runtime in V19 |
| WSTRING | $$ | PART | Scalar only, heap runtime in V19 |
| ASCIIZ / PTR | | YES | |
| VARIANT | | NO | |
| OBJECT / GUID | | NO | |
User-Defined Types
| Feature | PBXA64 | Notes |
TYPE ... END TYPE | PART | Numeric/STRING/nested fields, member access, deep copy (V15) |
UNION ... END UNION | NO | |
ENUM ... END ENUM | NO | |
Control Flow Statements
| Statement | PBXA64 | Notes |
IF / ELSEIF / ELSE / END IF | YES | |
FOR var = start TO end [STEP n] / NEXT | YES | |
WHILE / WEND | YES | |
DO [WHILE|UNTIL] / LOOP [WHILE|UNTIL] | YES | |
SELECT CASE / CASE / CASE ELSE / END SELECT | YES | |
GOTO label | YES | |
GOSUB label / RETURN | YES | |
EXIT FOR|WHILE|DO|FUNCTION|SUB | YES | |
ITERATE FOR|WHILE|DO | YES | |
CALL name(args) | YES | |
I/O Statements
| Statement | PBXA64 | Notes |
PRINT expr | YES | |
INPUT [prompt;] var | YES | Console ReadFile |
PRINT #n, expr | YES | |
INPUT #n, var | YES | |
LINE INPUT #n, var$ | YES | CR/LF-aware (V13) |
LINE INPUT prompt; var$ | NO | |
OPEN FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM | YES | RANDOM/BINARY in V19 |
OPEN ... ENCODING UTF16LE_BOM|AUTO|UTF8|ANSI | YES | V17-V19 |
CLOSE #n | YES | |
GET #n, [pos,] var | YES | |
PUT #n, [pos,] var | YES | |
SEEK #n, pos | YES | |
PUT #n UDT with STRING/WSTRING | YES | V20: descriptor-safe serialization |
WRITE #n | NO | |
LPRINT | NO | |
File Functions
| Function | PBXA64 | Notes |
EOF(#n) | YES | V12+ |
LOF(#n) | YES | V12+ |
LOC(#n) | YES | V19+ |
SEEK(#n) | YES | V19+ |
FREEFILE | NO | |
FILEATTR | NO | |
DIR$ / FILECOPY / KILL / NAME / MKDIR / CHDIR | NO | |
String Functions
| Function | PBXA64 | Notes |
LEFT$(s$, n) | YES | |
RIGHT$(s$, n) | YES | |
MID$(s$, start [, n]) | YES | |
TRIM$ / LTRIM$ / RTRIM$ | YES | |
UCASE$ / LCASE$ | YES | |
LEN(s$) | YES | |
STRPTR(s$) / VARPTR(v) | YES | |
FORMAT$(n) | PART | Numeric only, no mask |
SPACE$ / STRING$ | PART | Runtime exists (V12/V19) |
REMOVE$ / EXTRACT$ / PARSE$ | PART | Runtime exists (V12/V19) |
INSTR / TALLY / VERIFY | PART | INSTR (V21); TALLY/VERIFY not yet |
STR$ / VAL / CHR$ / ASC / HEX$ / BIN$ / OCT$ | PART | STR$/VAL/CHR$/ASC/HEX$ (V21); BIN$/OCT$ no |
USING$ / REPEAT$ / BUILD$ / WRAP$ | NO | |
MKL$ / CVI / MKI$ / CVS / MKD$ / CVD etc. | NO | |
Math Functions
| Function | PBXA64 | Notes |
ABS / SGN / INT / FIX / FRAC / ROUND | PART | ABS/SGN/INT (V21); FIX/FRAC/ROUND no |
SIN / COS / TAN / ATN | PART | SIN/COS (V21); TAN/ATN no |
EXP / LOG / SQR | PART | SQR (V21); EXP/LOG no |
RND / RANDOMIZE | YES | V21+ |
MIN / MAX / SWAP | PART | SWAP (V21); MIN/MAX no |
Arrays
| Feature | PBXA64 | Notes |
Fixed arrays: DIM a(upper) | YES | |
Fixed arrays: DIM a(lower TO upper) | YES | |
REDIM a(bounds) AS type | YES | Stack-backed |
REDIM PRESERVE | PART | Basic support (V15) |
LBOUND / UBOUND | YES | |
ARRAYATTR | NO | |
ERASE | NO | |
ARRAY SCAN / SORT / INSERT / DELETE | NO | |
Operators
| Operator | PBXA64 | Notes |
+ - * / \ MOD ^ | YES | |
= <> < > <= >= | YES | |
AND OR NOT | YES | |
+ (string concat) | YES | |
& (string concat) | YES | V21+ |
XOR EQV IMP | YES | V21+ |
IS ISFALSE ISTRUE | NO | Object operators |
Miscellaneous
| Feature | PBXA64 |
SLEEP / WAITKEY$ / STDOUT / STDIN | PART | SLEEP (V21); others no |
LSET / RSET / LET / SWAP / INCR / DECR | YES | V21+ |
WRITE #n | YES | V21+ |
POKE / PEEK / POKE$ / PEEK$ / MEMORY | NO | |
DATE$ / TIME$ / NOW / TIMER | YES | V21+ |
CODEPTR / FUNCPTR | YES | V21+ |
KILL / NAME / MKDIR / CHDIR / DIR$ / FREEFILE | YES | V21+ |
SHELL | YES | V21+ |
PILOT (T: A: M: Y: N: C: J: U: E: R: S: D: GR: SO:) | YES |
| Standalone .pilot/.pil/.pcode files | YES |
#ASM inline assembly blocks | NO |
Summary
| Category | YES | PART | NO |
| Directives | 7 | 0 | 3 |
| Declarations & Procedures | 9 | 0 | 3 |
| Variable Declarations | 4 | 0 | 2 |
| Data Types | 8 | 4 | 2 |
| User-Defined Types | 0 | 1 | 2 |
| Control Flow | 10 | 0 | 0 |
| I/O Statements | 11 | 0 | 3 |
| File Functions | 4 | 0 | 2 |
| String Functions | 9 | 6 | 10 |
| Math Functions | 1 | 4 | 10 |
| Arrays | 4 | 1 | 4 |
| Operators | 17 | 0 | 2 |
| Other | 22 | 1 | 11 |
| TOTAL | 106 | 17 | 54 |
106 fully supported, 17 partial, 54 not yet implemented. PBXA64 V22 covers the core PB language plus macros, conditional compilation, string functions, file I/O, math functions, arrays, WinAPI, and PILOT. Missing: COM/objects, full graphics, PE resources, UNION, and advanced string packing.