Table of Contents

Introduction
BaCon usage and parameters
General syntax
Mathematics, variables
Equations
The BETWEEN keyword
Indexed arrays
    Declaration of static arrays
    Declaration of dynamic arrays
    Dimensions
    Passing arrays to functions or subs
    Returning arrays from functions
Associative arrays
    Declaration
    Relations, lookups, keys
    Basic logic programming
Records
    Declaration
    Arrays of records
    Passing records to functions or subs
    Returning records from functions
Strings by value or by reference
ASCII, Unicode, UTF8
Binary trees
Creating and linking to libraries created with BaCon
    Step 1: create a library
    Step 2: compile the library
    Step 3: copy library to a system path
    Step 4: update linker cache
    Step 5: demonstration program
    Step 6: compile and link
    Remarks
Creating internationalization files
    Step 1: create program
    Step 2: compile program
    Step 3: create catalog file
    Step 4: add translations
    Step 5: create object file
    Step 6: install
    Step 7: setup Unix environment
Networking
    TCP
    UDP
    BROADCAST
    MULTICAST
    SCTP
TLS secured network connections
Ramdisks and memory streams
Delimited strings
Regular expressions
Error trapping, error catching and debugging
Notes on transcompiling
Using the ASCII editor
Support for GUI programming
    Enabling GUI functions
    Defining the GUI
    Setting properties
    Entering the mainloop
    Defining helper functions
    Using native functions
Overview of BaCon statements and functions
    ABS
    ACCEPT
    ACOS
    ADDRESS
    ALARM
    ALIAS
    ALIGN$
    AMOUNT
    AND
    APPEND
    APPEND$
    ARGUMENT$
    ASC
    ASIN
    ATN
    ATN2
    B64DEC$
    B64ENC$
    BAPPEND
    BASENAME$
    BIN$
    BIT
    BLOAD
    BREAK
    BSAVE
    BYTELEN
    CA$
    CALL
    CATCH
    CEIL
    CERTIFICATE
    CHANGE$
    CHANGEDIR
    CHOP$
    CHR$
    CIPHER$
    CL$
    CLASS
    CLEAR
    CLOSE
    CMDLINE
    CN$
    COIL$
    COLLAPSE$
    COLLECT
    COLOR
    COLUMNS
    CONCAT$
    CONST
    CONTINUE
    COPY
    COS
    COUNT
    CR$
    CURDIR$
    CURSOR
    CUT$
    DATA
    DAY
    DEC
    DECLARE
    DECR
    DEF FN
    DEG
    DEL$
    DELETE
    DELIM$
    DIRNAME$
    DLE$
    DO
    DOTIMES
    EL$
    END
    ENDFILE
    ENUM
    EPRINT
    EQ
    EQUAL
    ERR$
    ERROR
    ESCAPE$
    EVAL
    EVEN
    EXCHANGE$
    EXEC$
    EXIT
    EXP
    EXPLODE$
    EXTRACT$
    FALSE
    FILEEXISTS
    FILELEN
    FILETIME
    FILETYPE
    FILL$
    FIND
    FIRST$
    FLATTEN$
    FLOOR
    FOR
    FORK
    FP
    FREE
    FUNCTION
    GETBYTE
    GETENVIRON$
    GETFILE
    GETKEY
    GETLINE
    GETPEER$
    GETX / GETY
    GLOBAL
    GOSUB
    GOTO
    GOTOXY
    GUIDEFINE
    GUIEVENT$
    GUIFN
    GUIGET
    GUISET
    GUIWIDGET
    HASDELIM
    HASH
    HEAD$
    HEX$
    HOST$
    HOSTNAME$
    HOUR
    IF
    IIF / IIF$
    IMPORT
    INBETWEEN$
    INCLUDE
    INCR
    INDEX
    INDEX$
    INPUT
    INSERT$
    INSTR
    INSTRREV
    INTL$
    INVERT
    ISASCII
    ISFALSE
    ISKEY
    ISTOKEN
    ISTRUE
    ISUTF8
    JOIN
    LABEL
    LAST$
    LCASE$
    LEFT$
    LEN
    LET
    LINENO
    LOAD$
    LOCAL
    LOG
    LOOKUP
    LOOP
    LOOP$
    MAKEDIR
    MAP
    MATCH
    MAX / MAX$
    MAXNUM
    MAXRANDOM
    ME$
    MEMCHECK
    MEMORY
    MEMREWIND
    MEMTELL
    MERGE$
    MID$
    MIN / MIN$
    MINUTE
    MOD
    MONTH
    MONTH$
    MYPID
    NE
    NL$
    NNTL$
    NOT
    NOW
    NRKEYS
    OBTAIN$
    ODD
    ON
    OPEN
    OPTION
    OR
    OS$
    OUTBETWEEN$
    PARSE
    PEEK
    PI
    POKE
    POW
    PRAGMA
    PRINT
    PROPER$
    PROTO
    PULL
    PUSH
    PUTBYTE
    PUTLINE
    RAD
    RANDOM
    READ
    READLN
    REALPATH$
    REAP
    RECEIVE
    RECORD
    REDIM
    REGEX
    REGLEN
    RELATE
    REM
    RENAME
    REPEAT
    REPLACE$
    RESIZE
    RESTORE
    RESUME
    RETURN
    RETVAL
    REV$
    REVERSE$
    REWIND
    RIGHT$
    RIP$
    RND
    ROL
    ROR
    ROTATE$
    ROUND
    ROWS
    RUN
    RUN$
    SAVE
    SCREEN
    SCROLL
    SEARCH
    SECOND
    SEED
    SEEK
    SELECT
    SEND
    SETENVIRON
    SETSERIAL
    SGN
    SIGNAL
    SIN
    SIZEOF
    SLEEP
    SORT
    SORT$
    SOURCE$
    SP
    SPC$
    SPLIT
    SQR
    STOP
    STR$
    SUB
    SUM / SUMF
    SWAP
    SYSTEM
    TAB$
    TAIL$
    TALLY
    TAN
    TELL
    TEXTDOMAIN
    TIMER
    TIMEVALUE
    TOASCII$
    TOKEN$
    TRACE
    TRAP
    TREE
    TRUE
    TYPE
    TYPEOF$
    UBOUND
    UCASE$
    UCS
    ULEN
    UNESCAPE$
    UNFLATTEN$
    UNIQ$
    USEC
    USEH
    UTF8$
    VAL
    VAR
    VERIFY
    VERSION$
    WAIT
    WALK$
    WEEK
    WEEKDAY$
    WHERE
    WHILE
    WITH
    WRITELN
    YEAR
Appendix A: Runtime error codes
Appendix B: standard POSIX variables
Appendix C: reserved keywords and functions
Appendix D: details on string optimization in BaCon
    Different binary layout
    Hash table
    Pointer swap
    Memory pool
    Static character pointers
    Using a pre-buffer