JES: Just Educational Services

Jonathan E. Sisk's
Pick/BASIC: A Programmer's Guide

Appendix D - PICK/BASIC Error Messages

Click to enlarge

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

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

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

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

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


Creative Commons License
Jonathan E. Sisk's "Pick/BASIC: A Programmer's Guide" by Jonathan E. Sisk is licensed under a Creative Commons Attribution 3.0 Unported License.
Based on a work at