``

Prev Menu Next

## Specifications Summary

Language Specifications are in accordance with the Graphics module, the modules module, and the individual character input module of ISO Full BASIC.

### Restrictions

On the following cases, GOTO statements and IF-THEN-line_number statements can not be executed.
branches from inside to outside of when-body (i.e. inside of WHEN～USE)
branches from inside to outside of a DO block that contains a protection block that contains a EXIT DO.
branches from inside to outside of a FOR block that contains a protection block that contains a EXIT FOR.

If a routine (or the main program) has a when-in block that has an exception-handler containing a GOSUB～RETURN subroutine, the routine can not have a GOSUB～RETURN subroutine that is not contained in any protection block.

Currently implementation of On ～ GOSUB statements are experimentally.

Parameters of PROGRAM or CHAIN statements should be simple variables (Arrays not allowed).

Maximum length declaration for string variables is ignored. (no cut off done.)

### Known Faults

EXTYPE,RETRY and CONTINUE do not work properly for exceptions raised in exception handlers.

DRAW MODE NOTXOR (MASK, MERGE, XOR),which are Decimal BASIC original enhancement, do not work properly.
On Mac, they are neglected. On Windows and Linux, then won't work until a PLOT LINES is executed.

### Incompatibilities with Decimal BASIC

#### Character Encoding

The character encoding is UTF-8.
This is a problem when non-ASCII characters such as © , µ , ° , ± , Ä or Æ are used.
ORD-functions and CHR$-functions are defined under Unicode.
File I/O assumes the character encoding is UTF-8.
Executing a line like
`SET #n: CODING "SYSTEM"`
just after the execution of the OPEN-statement enables files of system default encoding to be read or written.
Even in such a case, the internal encoding remains to be UTF-8.
PRINT USING-statements and USING$-functions need the formatting characters as many as the byte length of the string.
If you want to manipulate byte files, you can change the internal character encoding to byte encoding by adding a line
`OPTION CHARACTER BYTE`
into each program unit, or change the Compatibility setting in the Option menu.
In such a case, no ANSI encoded non-ASCII characters can be displayed on the screen.
UTF-8 encoding slows some string operations such as `s$(m:n)`.
If you use only ASCII 7-bit characters, consider to change the Compatibility setting in the Option menu.

#### Program Encoding

Programs shall be encoded to the system default encoding on saving and decoded on loading.
That is, program files have compatibility with Decimal BASIC.
If you want programs to be saved and loaded remaining the character encoding UTF-8, change the Editor Option setting in the Option menu.

#### CHAIN statements

A CHAIN statement may launch a file of extension ".BAS" with file association or not. The destination programs shall not be compiled.
No CHAIN or EXECUTE statement can have array parameters.

#### BREAK

Any BREAK statement will do, but it only breaks the program.

#### GOSUB

When GOSUB statements are used, each line must have a line number.

## Windows

ASSIGN
ASSIGN statements work, but a DLL using GUI probably fail.
If so, add GUI option as follows.
`ASSIGN DLL-file-name, function-name, GUI`

## Mac (intel)

Known Faults
SET DRAW MODE (NOTXOR, MASK, MERGE, XOR) do not work on MAC.
MOUSE POLL statement does not work properly.
Printers do not work good. And if no printer is registered on the OS, Paract BASIC can not start.
Behaviors of some graphics statements are no good as in Decimal BASIC Mac(Intel).
The Followings may not work on MAC.
`CHARACTER INPUT
LOCATE CHOICE
LOCATE VALUE
GET POINT
SET BITMAP SIZER
FILE GETNAME, GETOPENNAME, GETSAVENAME
GLOAD
GSAVE
` These use TThread.Synchronize, which do not work good on MAC.
See. Lazarus RoadMap