Jonathan E. Sisk's
Pick/BASIC: A Programmer's Guide
Appendix D - PICK/BASIC Error Messages
B0 programname cataloged
Displayed when cataloging a PICK/BASIC program.
B1 Run-time abort at line linenumber B3 String length exceeds 32,266 characters B10 Variable has not been assigned a value; zero used!
Displayed when executing a PICK/BASIC program that references a variable that has not previously been referenced. Also occurs when writing dimensioned arrays that have not been "set" to null with a MAT assignment.
Bll Tape record truncated to tape record length!
This occurs in programs that write tape records when a tape record exceeds the number of bytes at which the tape was attached.
B12 File has not been opened
Indicates that a read or write operation was attempted on a file that has not previously been opened with an OPEN statement.
B13 Null conversion code is illegal; no conversion done!
This means that the conversion code expression in an ICONV or OCONV statement evaluated to a "null" and that it did not do exactly what was expected.
B14 Bad stack descriptor
Indicates that the number of arguments passed with a CALL statement differ from the number of arguments in the SUBROUTINE statement in the external subroutine. Also occurs when a file variable is used as an operand.
B15 Illegal opcode: opcode
Try recompiling the program.
B16 Non-numeric data when numeric required; zero used!
Typically occurs when a mathematical function is attempted on a string variable.
B17 Array subscript out-of-range
This fatal error occurs when referencing a subscript less than zero or greater than the number of subscripts (attributes) declared in the DIM or DIMENSION statement that established storage space for the dimensioned array.
B18 Attribute number less than -1 is illegal
Occurs when the attribute expression of the READV or WRITEV statement evaluates to a negative number.
B19 Illegal pattern
Indicates a meaningless pattern in a MATCH or MATCHES statement.
B20 COL1 or COL2 used prior to executing a FIELD strut; zero used!
This means that a reference was made to either the COL1 ( ) or COL2 ( ) functions prior to issuing a FIELD statement.
B22 Illegal value for STORAGE statement
Indicates that an argument of the STORAGE statement is less than 10, or not divisible by 10.
B23 Program programname must be recompiled
Means that the object code being executed is not compatible with the current release of the operating system.
B24 Divide by zero illegal; zero used!
This indicates that a number was attempted to be divided by zero. Check the divisor to make sure that it has been assigned a value.
B25 Program programname has not been cataloged
This message displays when a CALL statement is issued, referring to an external PICK/BASIC program subroutine which has not been cataloged.
B26 UNLOCK attempted before LOCK
This indicates that an attempt was made to UNLOCK one of the 48 system execution locks prior to its having been locked.
B27 RETURN executed with no GOSUB
This typically occurs when an internal subroutine is executed without having been transferred to with a GOSUB statement, causing the RETURN statement to force this error.
B28 Not enough work space
This typically occurs when running a large PICK/BASIC program that may be dealing with one or more large data items. Program size is limited to 32,000 bytes. The solution is to break the program into smaller subroutines until this limitation is removed from the Pick System.
B30 Array size mismatch
This occurs when a mainline program and an external subroutine both refer to the same dimensioned array, but each declares a different number of attributes. Also occurs in a "MAT copy" (MAT A = MAT B) when the number of vectors are different.
B31 Stack overflow
This occurs when a program calls too many nested subroutines.
B32 Page heading exceeds maximum of 1400 characters
A HEADING statement in PICK/BASIC cannot exceed 1400 characters.
B33 Precision declared in subprogram programname is different from that declared in the mainline program
This indicates that there is a PRECISION statement in an external subroutine that specifies a different number of decimal places than that of the PRECISION statement in the mainline program.
B34 File variable used where string expression expected
This indicates that some reference was made to a variable that has been declared as a file variable in an OPEN statement.
B41 Lock number is greater than 47
This means that the expression evaluated in the LOCK statement contained a number greater than 47. PICK/BASIC divides the number by 48 and the remainder is used as the lock number.
B100 Compilation aborted; no object code produced
This is displayed when a compile fails for any reason. As a general nile of thumb, ignore all but the first message that displays when a compile fails. Find and fix the problem indicated with the first message and then recompile.
B101 Ambiguous ELSE clause
This indicates that a statement with an optional ELSE clause is used in a single-line IF statement.
B102 Bad statement
This compile-time error indicates that there is something syntactically wrong with the line displayed immediately above this message. Look for misspelled statements and/or unclosed quotes or parentheses.
B103 Label label is missing
Displayed when a GOTO statement refers to a statement label that cannot be located in the program. Make sure that the statement label is the first executable parameter on the line. If it follows an asterisk, for example, it will never be seen by the compiler. This also occurs when a reference to a dimensioned array is made without indicating a subscript (vector).
B104 Label label is doubly defined
Indicates that there are two occurrences of the same statement label.
B105 variable has not been dimensioned
This displays when a non-dimensioned variable is treated as a dimensioned variable.
B106 variable has been dimensioned and used without subscripts
This is displayed when a reference is made to a dimensioned array without being followed by a subscript (attribute) specification.
B107 LOOP statement nested too deep
Indicates that a LOOP statement is nested within too many outer LOOP statements.
B109 Variable missing in "NEXT" statement
This occurs when the NEXT statement is not followed by the variable declared in the FOR statement.
B110 END statement missing
This often occurs when the END statements do not "balance" in a program, meaning that there may be a missing END statement somewhere in a series of IF-THEN clauses.
B111 EXIT used outside of LOOP statement
Indicates that an EXIT statement occurred outside of a LOOP / REPEAT clause.
Bl12 REPEAT missing in LOOP statement
This means that the REPEAT statement cannot be located for the initiating LOOP statement.
Bl13 Terminator missing
This displays when a line containing quoted literals is missing one or more of the quote marks, or when "garbage" follows a legal statement.
Bl14 Maximum number of variables exceeded
PICK/BASIC allows for about 3200 variables in a program. This is normally enough for most people. If not, try moving some of the variables to an external subroutine.
B115 label label is used before the equate statement
This occurs when a reference is made to a constant prior to its being declared with the EQU or EQUATE statement.
Bl16 label label is used before the COMMON stmt
All variables must be declared in the COM or COMMON statement prior to being used in a program. This can be avoided, as can other problems, by not using the COMMON statement.
Bl17 label label is missing a subscript list
This displays when a reference is made to a dimensioned array variable without indicating a subscript (attribute) specification.
Bl18 label label is the object of an EQUATE statement and is missing
Indicates that the variable after the TO portion of an EQU statement has not been declared, or is used elsewhere in the program.
Bl19 Warning - precision value out of range - ignored
Indicates that a precision less than zero (0) or greater than nine (9) was attempted.
B120 Warning - multiple precision statements - ignored!
This non-fatal error message indicates that more than one PRECISION statement is specified in the program. All but the first are ignored.
B121 Label label is a constant and cannot be written into.
This occurs when an attempt is made to change the value of a constant declared in an EQU or EQUATE statement.
B122 Label label is improper type
Indicates an invalid expression follows the TO in an EQU or EQUATE statement.
B124 Label label has literal subscripts out of range
Indicates a reference to a subscript (attribute) greater than the number of subscripts declared for the array in the DIM or DIMENSION statement; alternately, may indicate a subscript of less
B125 No source statements found; no object code produced
Indicates a source item with no source lines.
B126 ELSE clause missing
Indicates that an ELSE clause is missing in a statement where it is required.
B127 NEXT missing
Indicates that the NEXT statement in a FOR-NEXT loop is missing.
B128 Item itemname not found
Indicates that the itemname specified in an $INCLUDE or $CHAIN directive has been omitted.
B129 Illegal: program name same as dictionary item name
There may not be a program in a file with the same name as the file.
B199 Source file must have separate DICT and DATA sections
Indicates that the PICK/BASIC source file has only a dictionary level. A data section must be created.
B209 File is update protected
Indicates that an update (write operation) was attempted on an update- restricted file.
B210 File is access protected
Indicates that a read operation was attempted on a read-restricted file.
B222 'CSYM' is not a file name or needs a data level
This displays when the pointer to the CSYM file is missing or improperly defined in the MD