CBASIC in General CBASIC Compile-Time Toggled Options Compiler Error Messages Run-Time Error Messages -- Warnings Run-Time Error Messages -- Error Codes CBASIC Reserved Words :CBASIC: CBASIC in General CBASIC is a compiler BASIC which may be executed on any floppy disk based CP/M system having at least 20K bytes of memory. In order to make the best use of the power and flexibility of CBASIC, a dual floppy disk system and at least 32K of memory is recommended. If CBASIC is executed in a system smaller than 20K, a CP/M LOAD ERROR may occur. The CBASIC system consists of two programs -- CBASIC and CRUN. CBASIC is the compiler, and CRUN is the run-time intepreter. In a typical CBASIC session, the user will write the program using ED, compile it using CBASIC (with the $B option to suppress listing), and run it using CRUN. Refer to the 84-page CBASIC manual -- C B A S I C A Commercially Oriented Compiler/Interpreter BASIC Language Facility for CP/M Systems February 17, 1978 :CBASIC: CBASIC Compile-Time Toggled Options Compiler toggles are a series of switches that can be set when the compiler is executed. The toggles are set by typing a dollar-sign ($) followed by the letter designations of the desired toggles starting one space or more after the program name on the command line. Toggles may only be set for the compiler. Examples of compiler toggles and invocation forms are -- CBASIC INVENTRY $BGF B:CBASIC A:COMPARE $GEC CBASIC PAYROLL $B CBASIC B:VALIDATE $E CBASIC Compiler Toggles TOGGLE B: Suppresses the listing of the program on the console during compilation. If an error is detected, the source line with the error and the error message will be printed even if Toggle B is set. Toggle B does not affect listing to the printer (Toggle F) or disk file (Toggle G). Toggle B is initially off. TOGGLE C: Suppresses the generation of an INT file. Engaging this toggle will provide a syntax check without the overhead of writing the intermediate file. Toggle C is initially off. TOGGLE D: Suppresses translation of lower-case letters to upper-case. For example, if Toggle D is on, 'AMT' will not refer to the same variable as 'amt'. Toggle D is initially off. TOGGLE E: Causes the run-time program (CRUN) to accompany any error messages with the CBASIC line number in which the error occurred. Toggle E must be set in order for the TRACE option (see section 13.4 of the manual) to work. Toggle E is initially off. TOGGLE F: Causes the compiler output listing to be printed on the LST: device in addition to the system console. Toggle F is initially off. TOGGLE G: Causes the compiler output listing to be written to diskette. The file containing the compiler listing has the same name as the .BAS file, but its type is .LST. Toggle G is initially off. :CBASIC: Compiler Error Messages Text Messages NO SOURCE FILE: <FILENAME>.BAS The compiler could not locate a source file used in either a CBASIC command or an INCLUDE directive. PROGRAM CONTAINS n UNMATCHED FOR STATEMENT(S) There are n FOR statements for which a NEXT could not be found. PROGRAM CONTAINS n UNMATCHED WHILE STATEMENT(S) There are n WHILE statements for which a WEND could not be found. WARNING: INVALID CHARACTER IGNORED The previous line contains an invalid ASCII character; this character is ignored by the compiler, and a question mark is printed in its place. 2-Letter Error Codes CE -- Close Error The intermediate (.INT) file could not be closed. DE -- Disk Error A disk error occurred while trying to read the .BAS file. DF -- Disk Full There was no space on the disk or the disk directory was full. The .INT file was not created. DL -- Duplicate Line number The same line number was used on two different lines. Other compiler errors may cause a DL error message to be printed even if duplicate line numbers do not exist. DP -- Defined Previously A variable in a DIM statement was previously defined. EF -- Exponential Format A number in exponential format was input with no digits following the E. FD -- Function Definition A function name that has been previously defined is being redefined in a DEF statement. FI -- FOR Index An expression which is not an unsubscripted numeric variable is being used as a FOR loop index. FN -- Function parameter Number A function reference contains an incorrect number of parameters. FP -- Function Parameter type A function reference parameter type does not match the parameter type used in the function's DEF statement. FU -- Function Undefined A function has been referenced before it has been defined. IE -- IF Expression An expression used immediately following an IF evaluates to type string. Only type numeric is permitted. IF -- In File A variable used in a FILE statement is of type numeric where type string is required. IP -- Input Prompt An input prompt string is not surrounded by quotes. IS -- Invalid Subscript A subscripted variable was referenced before it was dimensioned. IU -- Invalid Use A variable defined as an array is used with no subscripts. MF -- Mixed Format An expression evaluates to type string when type numeric is required. MM -- Mixed Mode Variables of type string and type numeric are combined in the same expression. NI -- NEXT Index A variable referenced by a NEXT statement does not match the variable referenced by the associated FOR statement. NU -- NEXT Unexpected A NEXT statement occurs without an associated FOR statement. OO -- ON Overflow More than 25 ON statements were used in the program. SE -- Syntax Error The source line contains a syntax error. SN -- Subscript Number A subscripted variable contains an incorrect number of subscripts. SO -- Syntax Overflow The expression is too complex and should be simplified and placed on more than one line. TO -- Table Overflow The program is too large for the system. The program must be simplified or the system size increased. UL -- Undefined Line number A line number that does not exist has been referenced. US -- Undefined String A string has been terminated by a carriage return rather than quotes. VO -- Variable Overflow Variable names are too long for one statement. This should not occur. WE -- WHILE Error The expression immediately following a WHILE statement is not numeric. WU -- WHILE Undefined A WEND statement occurs without an associated WHILE statement. :CBASIC: Run-Time Error Messages -- Warnings Two textual run-time error messages are presented by CRUN: NO INTERMEDIATE FILE A file name was not specified with the CRUN command, or no file of type .INT and the specified file name was found on disk. IMPROPER INPUT - REENTER This message occurs when the fields entered from the console do not match the field specified in the INPUT statement. This can occur when field types do not match or the number of fields entered is different from the number of fields specified. All fields specified by the INPUT statement must be reentered. 2-Letter Warning Codes DZ -- Divide by Zero A number was divided by zero. The result is set to the largest valid CBASIC number. FL -- Field Length A field length greater than 255 bytes was encountered during a READ LINE. Only the first 255 characters of the record are retained. LN -- Logarithm error The argument given in the LOG function was zero or negative. The value of the argument is returned. NE -- NEgative number A negative number was specified following the raise to a power operator (^). The absolute value is used in the calculation. OF -- OverFlow A calculation produced a number too large. The result is set ot the largest valid CBASIC number. SQ -- SQuare root error A negative number was specified in the SQR function. The absolute value is used. :CBASIC: Run-Time Error Messages -- Error Codes AC -- AsCii error The string used as the argument in an ASC function evaluated to a null string. CE -- Close Error An error occurred upon closing a file. CU -- Close Undefined file A close statement specified a file number that was not active. DF -- Defined File An OPEN or CREATE was specified with a file number that was already active. DU -- Delete Undefined file A DELETE statement specified a file number that was not active. DW -- Disk Write error An error occurred while writing to a file. This occurs when either the directory or the disk is full. EF -- End of File A read past the end of file occurred on a file for which no IF END statement has been executed. ER -- Error in Record An attempt was made to write a record of length greater than the maximum record size specified in the associated OPEN, CREATE, or FILE statement. FR -- File Rename An attempt was made to rename a file to an existing file name. FU -- File Undefined An attempt was made to read or write to a file that was not active. IR -- Invalid Record number A record number less than one was specified. LW -- Line Width A line width less than 1 or greater than 133 was specified in an LPRINTER WIDTH statement. ME -- MAKE Error An error occurred while creating or extending a file because the disk directory was full. MP -- MATCH Parameter The third parameter in a MATCH function was zero or negative. NF -- Number of FILE The file number specified was less than 1 or greater than 20. NM -- No Memory There was insufficient memory to load the program. NN -- No Number field An attempt was made to print a number with a PRINT USING statement but there was not a numeric data field in the USING string. NS -- No String field An attempt was made to print a string with a PRINT USING statement but there was not a string field in the USING string. OD -- Overflow Data A READ statement was executed with no DATA available. OE -- OPEN Error An attempt was made to OPEN a file that didn't exist and for which no IF END statement had been previously executed. OI -- ON Index The expression specified in an ON ... GOSUB or an ON ... GOTO statement evaluated to a number less than 1 or greater than the number of line numbers contained in the statement. OM -- Overflow Memory The program ran out of memory during execution. QE -- Quote Error An attempt was made to PRINT to a file a string containing a quotation mark. RE -- READ Error An attempt was made to read past the end of a record in a fixed file. RG -- RETURN with no GOSUB A RETURN occurred for which there was no GOSUB. RU -- Random Undefined A random read or print was attempted to other than a fixed file. SB -- SuBscript An array subscript was used which exceeded the boundaries for which the array was defined. SL -- String Length A concatenation operation resulted in a string of more than 255 bytes. SS -- SubString error The second parameter of a MID$ function was zero or negative. TF -- Too many Files An attempt was made to have more than 20 active files simultaneously. TL -- TAB Length A TAB statement contained a parameter less than 1 or greater than the current line width. UN -- UNdefined edit string A PRINT USING statement was executed with a null edit string. WR -- WRite error An attempt was made to write to a file after it had been read, but before it had been read to the end of the file. :CBASIC: CBASIC Reserved Words CBASIC Reserved Words ABS EQ LEN POS STOP AND EXP LET PRINT STR$ AS FEND LINE RANDOMIZE SUB ASC FILE LOG READ TAB ATN FOR LPRINTER RECL TAN CALL FRE LT REM THEN CHR$ GE MATCH REMARK TO CLOSE GO MID$ RENAME USING CONSOLE GOSUB NE RESTORE VAL COS GOTO NEXT RETURN WEND CREATE GT NOT RIGHT$ WHILE DATA IF ON RND WIDTH DEF INP OPEN SGN XOR DELETE INPUT OR SIN DIM INT OUT SIZE ELSE LE PEEK SQR END LEFT$ POKE STEP