Example Programs

PowerBASIC Examples

Hello World

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN() AS LONG
    PRINT "Hello, PBXA64!"
    FUNCTION = 0
END FUNCTION

Variables and Expressions

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN() AS LONG
    LOCAL x AS LONG
    LOCAL y AS LONG
    LOCAL name$ AS STRING

    x = 10
    y = 20
    name$ = "Result"

    PRINT name$; ": "; x + y
    FUNCTION = 0
END FUNCTION

Strings and Arrays

#COMPILE EXE "strings_arrays_winapi.exe"
#DIM ALL

DECLARE FUNCTION MessageBoxA LIB "user32.dll" ALIAS "MessageBoxA" _
    (BYVAL hWnd AS QUAD, BYVAL lpText AS ASCIIZ PTR, _
     BYVAL lpCaption AS ASCIIZ PTR, BYVAL uType AS LONG) AS LONG

FUNCTION PBMAIN() AS LONG
    LOCAL s$ AS STRING
    LOCAL t$ AS STRING
    LOCAL a(1 TO 3) AS LONG

    s$ = "Hello"
    t$ = s$ + ", PBXA64"
    a(1) = LEN(t$)
    a(2) = 42
    a(3) = a(1) + a(2)

    PRINT t$
    PRINT a(3)
    CALL MessageBoxA(0, STRPTR(t$), "PBXA64", 0)
    FUNCTION = 0
END FUNCTION

File I/O

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN() AS LONG
    LOCAL line$ AS STRING

    OPEN "output.txt" FOR OUTPUT AS #1
    PRINT #1, "Hello, File!"
    CLOSE #1

    OPEN "output.txt" FOR INPUT AS #1
    INPUT #1, line$
    CLOSE #1

    PRINT "Read: "; line$
    FUNCTION = 0
END FUNCTION

Control Flow

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN() AS LONG
    LOCAL i AS LONG

    FOR i = 1 TO 5
        IF i MOD 2 = 0 THEN
            PRINT i; " is even"
        ELSE
            PRINT i; " is odd"
        END IF
    NEXT i

    FUNCTION = 0
END FUNCTION

WinAPI Message Box

#COMPILE EXE
#DIM ALL

DECLARE FUNCTION MessageBoxA LIB "user32.dll" ALIAS "MessageBoxA" _
    (BYVAL hWnd AS QUAD, BYVAL lpText AS ASCIIZ PTR, _
     BYVAL lpCaption AS ASCIIZ PTR, BYVAL uType AS LONG) AS LONG

FUNCTION PBMAIN() AS LONG
    CALL MessageBoxA(0, "Hello from PBXA64!", "Greeting", 0)
    FUNCTION = 0
END FUNCTION

PILOT Examples

Simple Quiz

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN() AS LONG
    #PCODE
    T: Welcome to the Quiz!
    T: What is 2 + 2?
    A:
    M: 4
    Y: Correct!
    N: Wrong, the answer is 4.
    E:
    #ENDP
    FUNCTION = 0
END FUNCTION

Multi-Block PILOT

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN() AS LONG
    #PCODE
    C: score = 0
    *ASK
    T: What is the capital of France?
    A:
    M: PARIS
    Y: Correct! $score = $score + 1
    N: Wrong! It is Paris.
    T: Your score: #score
    T: Try again? (YES/NO)
    A:
    M: Y*
    Y: *ASK
    E:
    #ENDP
    FUNCTION = 0
END FUNCTION

MGC Examples

Basic MGC Program

fn main() -> i32 {
    var x: i32 = 42;
    return x - 42;
}

MGC with Control Flow

fn main() -> i32 {
    var i: i32 = 0;
    var sum: i32 = 0;
    while i < 10 {
        sum = sum + i;
        i = i + 1;
    }
    return sum - 45;
}
More examples: See the examples/ directory in the PBXA64 installation for additional sample programs including: real_usable.pb, feature_pass.pb, gosub_trim.pb, v10_pilot_features.pb, and more.