Product SiteDocumentation Site

Appendix C. Error Numbers and Messages

The error numbers produced by syntax errors during the processing of Rexx programs are all in the range 1 to 99. Errors are raised in response to conditions, for example, SYNTAX, NOMETHOD, and PROPAGATE. When the condition is SYNTAX, the value of the error number is placed in the variable RC when SIGNAL ON SYNTAX is trapped.
You can use the ERRORTEXT built-in function to return the text of an error message.
Some errors have associated subcodes. A subcode is a one- to three-digit decimal extension to the error number, for example, 115 in 40.115. When an error subcode is available, additional information that further defines the source of the error is given. The ERRORTEXT built-in function cannot retrieve the secondary message, but it is available from the condition object created when SIGNAL ON SYNTAX traps an error.

C.1. Error List

C.1.1. Error 3 - Failure during initialization

Explanation:
The REXX program could not be read from the disk.
The associated subcodes are:
001
Failure during initialization: File "filename" is unreadable
900
message
901
Failure during initialization: Program "program" was not found
902
Error writing output file "file"
903
Program "program_name" cannot be run by this version of the REXX interpreter
904
Failure during initialization: Program "program" needs to be tokenized. To run untokenized scripts you need a full version of Object REXX.

C.1.2. Error 4 - Program interrupted

Explanation:
The system interrupted the execution of your program because of an error or a user request.
The associated subcodes are:
001
Program interrupted with condition condition
900
message

C.1.3. Error 5 - System resources exhausted

Explanation:
While trying to execute a program, the language processor was unable to get the resources it needed to continue. For example, it could not get the space needed for its work areas or variables. The program that called the language processor might itself have already used up most of the available storage. Or a request for storage might have been for more than the implementation maximum.
The associated subcodes are:
900
message

C.1.4. Error 6 - Unmatched "/*" or quote

Explanation:
A comment or literal string was started but never finished. This could be because the language processor detected:
  • The end of the program (or the end of the string in an INTERPRET instruction) without finding the ending "*/" for a comment or the ending quotation mark for a literal string
  • The end of the line for a literal string.
The associated subcodes are:
001
Unmatched comment delimiter ("/*") on line line_number
002
Unmatched single quote (')
003
Unmatched double quote (")
900
message

C.1.5. Error 7 - WHEN or OTHERWISE expected

Explanation:
At least one WHEN construct (and possibly an OTHERWISE clause) is expected within a SELECT instruction. This message is issued if any other instruction is found or there is no WHEN construct before the OTHERWISE or all WHEN expressions are false and an OTHERWISE is not present. A common cause of this error is if you forget the DO and END around the list of instructions following a WHEN. For example:
WRONG                  RIGHT

Select                 Select
When a=c then          When a=c then DO
Say 'A equals C'       Say 'A equals C'
exit                   exit
Otherwise nop            end
end                    Otherwise nop
end
The associated subcodes are:
001
SELECT on line line_number requires WHEN
002
SELECT on line line_number requires WHEN, OTHERWISE, or END
003
All WHEN expressions of SELECT are false; OTHERWISE expected

C.1.6. Error 8 - Unexpected THEN or ELSE

Explanation:
A THEN or an ELSE clause was found that does not match a corresponding IF or WHEN clause. This often occurs because of a missing END or DO...END in the THEN part of a complex IF...THEN...ELSE construction. For example:
WRONG                     RIGHT

If a=c then do;           If a=c then do;
Say EQUALS                Say EQUALS
exit                      exit
else                        end
Say NOT EQUALS            else
Say NOT EQUALS
The associated subcodes are:
001
THEN has no corresponding IF or WHEN clause
002
ELSE has no corresponding THEN clause

C.1.7. Error 9 - Unexpected WHEN or OTHERWISE

Explanation:
A WHEN or OTHERWISE was found outside of a SELECT construction. You might have accidentally enclosed the instruction in a DO...END construction by leaving out an END, or you might have tried to branch to it with a SIGNAL instruction (which does not work because the SELECT is then ended).
The associated subcodes are:
001
WHEN has no corresponding SELECT
002
OTHERWISE has no corresponding SELECT

C.1.8. Error 10 - Unexpected or unmatched END

Explanation:
More ENDs were found in your program than DO, LOOP, or SELECT instructions, or the ENDs did not match the DO, LOOP, or SELECT instructions. This message also occurs if you try to transfer control into the middle of a loop using SIGNAL. In this case, the language processor does not expect the END because it did not process the previous DO instruction. Remember also that SIGNAL deactivates any current loops, so it cannot transfer control from one place inside a loop to another.
Another cause for this message is placing an END immediately after a THEN or ELSE subkeyword or specifying a name on the END keyword that does not match the name following DO or LOOP. Putting the name of the control variable on ENDs that close repetitive loops can also help locate this kind of error.
The associated subcodes are:
001
END has no corresponding DO, LOOP, or SELECT
002
Symbol following END ("symbol") must match block specification name ("control_variable") on line line_number or be omitted
003
END corresponding to block on line symbol must not have a symbol following it because there is no LABEL or control variable; found "line_number"
004
Symbol following END ("symbol") must match LABEL of SELECT specification ("control_variable") on line line_number or be omitted
005
END must not immediately follow THEN
006
END must not immediately follow ELSE
007
END corresponding to SELECT on line symbol must not have a symbol following it because there is no LABEL; found "line_number"

C.1.9. Error 11 - Control stack full

Explanation:
Your program exceeds the nesting level limit for control structures (for example, DO...END and IF...THEN...ELSE). This could be because of a looping INTERPRET instruction, such as:
    
      line='INTERPRET line'
      INTERPRET line
    
These lines loop until they exceed the nesting level limit and the language processor issues this message. Similarly, a recursive subroutine or internal function that does not end correctly can loop until it causes this message.
The associated subcodes are:
001
Insufficient control stack space; cannot continue execution
900
message

C.1.10. Error 13 - Invalid character in program

Explanation:
A character was found outside a literal (quoted) string that is not a whitespace character or one of the valid alphanumeric and special characters.
The associated subcodes are:
001
Incorrect character in program "character" ('hex_character'X)
900
message

C.1.11. Error 14 - Incomplete DO/LOOP/SELECT/IF

Explanation:
At the end of the program or the string for an INTERPRET instruction, a DO, LOOP, or SELECT instruction was found without a matching END or an IF clause that is not followed by a THEN clause. Putting the name of the control variable on each END closing a controlled loop can help locate this kind of error.
The associated subcodes are:
001
DO instruction on line line_number requires matching END
002
SELECT instruction on line line_number requires matching END
003
THEN on line line_number must be followed by an instruction
004
ELSE on line line_number must be followed by an instruction
005
LOOP instruction on line line_number requires matching END
901
OTHERWISE on line line_number requires matching END

C.1.12. Error 15 - Invalid hexadecimal or binary string

Explanation:
Hexadecimal strings must not have leading or trailing whitespace characters and whitespace can only be embedded at byte boundaries. Only the digits 0-9 and the letters a-f and A-F are allowed. The following are valid hexadecimal strings:
    
        '13'x
        'A3C2 1c34'x
        '1de8'x
    
Binary strings can have whitespace only at the boundaries of groups of four binary digits. Only the digits 0 and 1 are allowed. These are valid binary strings:
    
        '1011'b
        '110 1101'b
        '101101 11010011'b
    
You might have mistyped one of the digits, for example, typing a letter O instead of the number 0. Or you might have used the one-character symbol X or B (the name of the variable X or B, respectively) after a literal string when the string is not intended as a hexadecimal or binary specification. In this case, use the explicit concatenation operator (||) to concatenate the string to the value of the symbol.
The associated subcodes are:
001
Incorrect location of whitespace character in position position in hexadecimal string
002
Incorrect location of whitespace character in position position in binary string
003
Only 0-9, a-f, A-F, and whitespace characters are valid in a hexadecimal string; found "character"
004
Only 0, 1, and whitespace characters are valid in a binary string; found "character"

C.1.13. Error 16 - Label not found

Explanation:
A SIGNAL instruction has been executed or an event for which a trap was set with SIGNAL ON has occurred, and the language processor could not find the label specified. You might have mistyped the label or forgotten to include it.
The associated subcodes are:
001
Label "label_name" not found

C.1.14. Error 17 - Unexpected PROCEDURE

Explanation:
A PROCEDURE instruction was encountered at an incorrect position. This could occur because no internal routines are active or because the PROCEDURE instruction was not the first instruction processed after the CALL instruction or function call. One cause for this error is dropping through to an internal routine, rather than calling it with a CALL instruction or a function call.
The associated subcodes are:
001
PROCEDURE is valid only when it is the first instruction executed after an internal CALL or function invocation
901
INTERPRET data must not contain PROCEDURE

C.1.15. Error 18 - THEN expected

Explanation:
A THEN clause must follow each REXX IF or WHEN clause. The language processor found another clause before it found a THEN clause.
The associated subcodes are:
001
IF instruction on line line_number requires matching THEN clause
002
WHEN instruction on line line_number requires matching THEN clause

C.1.16. Error 19 - String or symbol expected

Explanation:
A symbol or string was expected after the CALL or SIGNAL keywords but none was found. You might have omitted the string or symbol or inserted a special character (such as a parenthesis).
The associated subcodes are:
001
String or symbol expected after ADDRESS keyword
002
String or symbol expected after CALL keyword
003
String or symbol expected after NAME keyword
004
String or symbol expected after SIGNAL keyword
006
String or symbol expected after TRACE keyword
007
String or symbol expected after PARSE keyword
900
message
901
String or symbol expected after ::CLASS keyword
902
String or symbol expected after ::METHOD keyword
903
String or symbol expected after ::ROUTINE keyword
904
String or symbol expected after ::REQUIRES keyword
905
String expected after EXTERNAL keyword
906
String or symbol expected after METACLASS keyword
907
String or symbol expected after SUBCLASS keyword
908
String or symbol expected after INHERIT keyword
909
String or symbol expected after tilde (~)
911
String or symbol expected after superclass colon (:)
912
String or symbol expected after STREAM keyword
913
String or symbol expected after MIXINCLASS keyword
914
String or symbol expected as ::ATTRIBUTE directive name
915
String or symbol expected as ::CONSTANT directive name
916
String or symbol expected as ::CONSTANT value
917
String or symbol expected as DIGITS value
918
String or symbol expected as FUZZ value
919
String or symbol expected as TRACE value

C.1.17. Error 20 - Symbol expected

Explanation:
A symbol is expected after CALL ON, CALL OFF, END, ITERATE, LEAVE, NUMERIC, PARSE, SIGNAL ON, or SIGNAL OFF. Also, a list of symbols or variable references is expected after DROP, EXPOSE, and PROCEDURE EXPOSE. Either there was no symbol when one was required or the language processor found another token.
The associated subcodes are:
900
message
901
Symbol expected after DROP keyword
902
Symbol expected after EXPOSE keyword
903
Symbol expected after PARSE keyword
904
Symbol expected after PARSE VAR
905
NUMERIC must be followed by one of the keywords DIGITS, FORM, or FUZZ; found "symbol"
906
Symbol expected after "(" of a variable reference
907
Symbol expected after LEAVE keyword
908
Symbol expected after ITERATE keyword
909
Symbol expected after END keyword
911
Symbol expected after ON keyword
912
Symbol expected after OFF keyword
913
Symbol expected after USE ARG
914
Symbol expected after RAISE keyword
915
Symbol expected after USER keyword
916
Symbol expected after ::
917
Symbol expected after superclass colon (:)
918
Symbol expected after LABEL keyword

C.1.18. Error 21 - Invalid data on end of clause

Explanation:
A clause such as SELECT or NOP is followed by a token other than a comment.
The associated subcodes are:
900
message
901
Data must not follow the NOP keyword; found "data"
902
Data must not follow the SELECT keyword; found "data"
903
Data must not follow the NAME keyword; found "data"
904
Data must not follow the condition name; found "data"
905
Data must not follow the SIGNAL label name; found "data"
906
Data must not follow the TRACE setting; found "data"
907
Data must not follow the LEAVE control variable name; found "data"
908
Data must not follow the ITERATE control variable name; found "data"
909
Data must not follow the END control variable name; found "data"
911
Data must not follow the NUMERIC FORM specification; found "data"
912
Data must not follow the GUARD OFF specification; found "data"
913
Data must not follow the ::CONSTANT value; found "data"

C.1.19. Error 22 - Invalid character string

Explanation:
A literal string contains character codes that are not valid. This might be because some characters are not possible, or because the character set is extended and certain character combinations are not allowed.
The associated subcodes are:
001
Incorrect character string "character_string" ('hex_string'X)
900
message
901
Incorrect double-byte character

C.1.20. Error 23 - Invalid data string

Explanation:
A data string (that is, the result of an expression) contains character codes that are not valid. This might be because some characters are not possible, or because the character set is extended and certain character combinations are not allowed.
The associated subcodes are:
001
Incorrect data string "string" ('hex_string'X)
900
message

C.1.21. Error 24 - Invalid TRACE request

Explanation:
This message is issued when:
  • The option on a TRACE instruction or the argument to the built-in function does not start with A, C, E, F, I, L, N, O, or R.
  • In interactive debugging, you entered a number that is not a whole number.
The associated subcodes are:
001
TRACE request letter must be one of "ACEFILNOR"; found "value"
901
Numeric TRACE requests are valid only from interactive debugging

C.1.22. Error 25 - Invalid subkeyword found

Explanation:
An unexpected token was found at his position of an instruction where a particular subkeyword was expected. For example, in a NUMERIC instruction, the second token must be DIGITS, FUZZ, or FORM.
The associated subcodes are:
001
CALL ON must be followed by one of the keywords ERROR, FAILURE, HALT, NOTREADY, USER, or ANY; found "word"
002
CALL OFF must be followed by one of the keywords ERROR, FAILURE, HALT, NOTREADY, USER, or ANY; found "word"
003
SIGNAL ON must be followed by one of the keywords ERROR, FAILURE, HALT, LOSTDIGITS, NOTREADY, NOMETHOD, NOSTRING, NOVALUE, SYNTAX, USER, or ANY; found "word"
004
SIGNAL OFF must be followed by one of the keywords ERROR, FAILURE, HALT, LOSTDIGITS, NOTREADY, NOMETHOD, NOSTRING, NOVALUE, SYNTAX, USER, or ANY; found "word"
011
NUMERIC FORM must be followed by one of the keywords SCIENTIFIC or ENGINEERING; found "word"
012
PARSE must be followed by one of the keywords ARG, LINEIN, PULL, SOURCE, VALUE, VAR, or VERSION; found "word"
015
NUMERIC must be followed by one of the keywords DIGITS, FORM, or FUZZ; found "word"
017
PROCEDURE must be followed by the keyword EXPOSE or nothing; found "word"
900
message
901
Unknown keyword on ::CLASS directive; found "word"
902
Unknown keyword on ::METHOD directive; found "word"
903
Unknown keyword on ::ROUTINE directive; found "word"
904
Unknown keyword on ::REQUIRES directive; found "word"
905
USE must be followed by the keyword ARG; found "word"
906
RAISE must be followed by one of the keywords ERROR, FAILURE, HALT, LOSTDIGITS, NOMETHOD, NOSTRING, NOTREADY, NOVALUE, SYNTAX, or USER; found "word"
907
Unknown keyword on RAISE instruction; found "word"
908
Duplicate DESCRIPTION keyword found
909
Duplicate ADDITIONAL or ARRAY keyword found
911
Duplicate RETURN or EXIT keyword found
912
GUARD ON or GUARD OFF must be followed by the keyword WHEN; found "word"
913
GUARD must be followed by the keyword ON or OFF; found "word"
914
CALL ON condition must be followed by the keyword NAME; found "word"
915
SIGNAL ON condition must be followed by the keyword NAME; found "word"
916
Unknown keyword on FORWARD instruction; found "keyword"
917
Duplicate TO keyword found
918
Duplicate ARGUMENTS or ARRAY keyword found
919
Duplicate RETURN or CONTINUE keyword found
921
Duplicate CLASS keyword found
922
Duplicate MESSAGE keyword found
923
SELECT must be followed by the keyword LABEL; found "word"
924
Unknown keyword on ::OPTIONS directive; found "word"
925
Unknown keyword on ::ATTRIBUTE directive; found "word"

C.1.23. Error 26 - Invalid whole number

Explanation:
An expression was found that did not evaluate to a whole number or is greater than the limit (the default is 999,999,999 for 32-bit system and 999,999,999,999,999,999 for 64-bit systems):
  • The positional patterns in parsing templates (including variable positional patterns)
  • The operand to the right of the power operator
  • The values of exprr and exprf in the DO instruction
  • The values given for DIGITS or FUZZ in the NUMERIC instruction
  • The number used in the option of the TRACE setting This error is also raised if the value is not permitted (for example, a negative repetition count in a DO instruction), or the division performed during an integer divide or remainder operation does not result in a whole number.
The associated subcodes are:
002
Value of repetition count expression in DO instruction must be zero or a positive whole number; found "value"
003
Value of FOR expression in DO instruction must be zero or a positive whole number; found "value"
004
Positional pattern of PARSE template must be a whole number; found "value"
005
DIGITS value must be a positive whole number; found "value"
006
FUZZ value must be zero or a positive whole number; found "value"
007
Number used in TRACE setting must be a whole number; found "value"
008
Operand to the right of the power operator (**) must be a whole number; found "value"
011
Result of % operation did not result in a whole number
012
Result of // operation did not result in a whole number
900
message
901
Result of a method call did not result in a whole number; found "value"
902
Result of a COMPARETO method call did not result in a whole number; found "value"
903
Result of a COMPARE method call did not result in a whole number; found "value"

C.1.24. Error 27 - Invalid DO syntax

Explanation:
A syntax error was found in the DO instruction. You probably used BY, TO, FOR, WHILE, or UNTIL twice, used a WHILE and an UNTIL, or used BY, TO, or FOR when there is no control variable specified.
The associated subcodes are:
001
WHILE and UNTIL keywords cannot be used on the same DO loop
901
Incorrect data following FOREVER keyword on the DO loop; found "data"
902
DO keyword keyword can be specified only once

C.1.25. Error 28 - Invalid LEAVE or ITERATE

Explanation:
A LEAVE or ITERATE instruction was found at an incorrect position. Either no loop was active, or the name specified on the instruction did not match the control variable of any active loop. Note that internal routine calls and the INTERPRET instruction protect DO loops by making them inactive. Therefore, for example, a LEAVE instruction in a subroutine cannot affect a DO loop in the calling routine. You probably tried to use the SIGNAL instruction to transfer control within or into a loop. Because a SIGNAL instruction ends all active loops, any ITERATE or LEAVE instruction causes this message.
The associated subcodes are:
001
LEAVE is valid only within a repetitive loop or labeled block instruction
002
ITERATE is valid only within a repetitive loop
003
Symbol following LEAVE ("symbol") must either match the label of a current loop or block instruction.
004
Symbol following ITERATE ("symbol") must either match the label of a current loop or be omitted
005
Symbol following ITERATE ("symbol") does not match a repetitive block instruction

C.1.26. Error 29 - Environment name too long

Explanation:
The environment name specified on the ADDRESS instruction is longer than permitted for the system under which the interpreter is running.
The associated subcodes are:
001
Environment name exceeds limit characters; found "environment_name"

C.1.27. Error 30 - Name or string too long

Explanation:
A variable name, label name, literal (quoted) string has exceeded the allowed limit of 250 characters. The limit for names includes any substitutions. A possible cause of this error is if you use a period (.) in a name, causing an unexpected substitution. Leaving off an ending quotation mark for a literal string, or putting a single quotation mark in a string, can cause this error because several clauses can be included in the string. For example, write the string 'don't' as 'don't' or "don't".
The associated subcodes are:
001
Name exceeds 250 characters: "name"
002
Literal string exceeds 250 characters: "string"
900
message
901
Hexadecimal literal string exceeds 250 characters "string"
902
Binary literal string exceeds 250 characters "string"

C.1.28. Error 31 - Name starts with number or "."

Explanation:
A variable was found whose name begins with a numeric digit or a period. You cannot assign a value to such a variable because you could then redefine numeric constants.
The associated subcodes are:
001
A value cannot be assigned to a number; found "number"
002
Variable symbol must not start with a number; found "symbol"
003
Variable symbol must not start with a "."; found "symbol"
900
message

C.1.29. Error 33 - Invalid expression result

Explanation:
The result of an expression was found not to be valid in the context in which it was used.
The associated subcodes are:
001
Value of NUMERIC DIGITS ("value") must exceed value of NUMERIC FUZZ ("value")
002
Value of NUMERIC DIGITS ("value") must not exceed value
900
message
901
Incorrect expression result following VALUE keyword of ADDRESS instruction
902
Incorrect expression result following VALUE keyword of SIGNAL instruction
903
Incorrect expression result following VALUE keyword of TRACE instruction
904
Incorrect expression result following SYNTAX keyword of RAISE instruction

C.1.30. Error 34 - Logical value not 0 or 1

Explanation:
An expression was found in an IF, WHEN, DO WHILE, or DO UNTIL phrase that did not result in a 0 or 1. Any value operated on by a logical operator must result in a 0 or 1. For example, the phrase If result then exit rc fails if result has a value other than 0 or 1.
The associated subcodes are:
001
Value of expression following IF keyword must be exactly "0" or "1"; found "value"
002
Value of expression following WHEN keyword must be exactly "0" or "1"; found "value"
003
Value of expression following WHILE keyword must be exactly "0" or "1"; found "value"
004
Value of expression following UNTIL keyword must be exactly "0" or "1"; found "value"
005
Value of expression to the left of the logical operator "operator" must be exactly "0" or "1"; found "value"
006
Value of logical list expression element must be exactly "0" or "1"; found "value"
900
message
901
Logical value must be exactly "0" or "1"; found "value"
902
Value of expression following GUARD keyword must be exactly "0" or "1"; found "value"
903
Authorization return value must be exactly "0" or "1"; found "value"
904
Property logical value must be exactly "0", "1", "true", or "false"; found "value"

C.1.31. Error 35 - Invalid expression

Explanation:
An expression contains a grammatical error. Possible causes:
  • An expression is missing when one is required
  • You ended an expression with an operator
  • You specified, in an expression, two operators next to one another with nothing in between them
  • You did not specify a right parenthesis when one was required
  • You used special characters (such as operators) in an intended character expression without enclosing them in quotation marks
The associated subcodes are:
001
Incorrect expression detected at "token"
900
message
901
Prefix operator "operator" is not followed by an expression term
902
Missing conditional expression following IF keyword
903
Missing conditional expression following WHEN keyword
904
Missing initial expression for DO control variable
905
Missing expression following BY keyword
906
Missing expression following TO keyword
907
Missing expression following FOR keyword
908
Missing expression following WHILE keyword
909
Missing expression following UNTIL keyword
911
Missing expression following OVER keyword
912
Missing expression following INTERPRET keyword
913
Missing expression following OPTIONS keyword
914
Missing expression following VALUE keyword of an ADDRESS instruction
915
Missing expression following VALUE keyword of a SIGNAL instruction
916
Missing expression following VALUE keyword of a TRACE instruction
917
Missing expression following VALUE keyword of a NUMERIC FORM instruction
918
Missing expression following assignment instruction
919
Operator "operator" is not followed by an expression term
921
Missing expression following GUARD keyword
922
Missing expression following DESCRIPTION keyword of a RAISE instruction
923
Missing expression following ADDITIONAL keyword of a RAISE instruction
924
Missing "(" on expression list of the ARRAY keyword
925
Missing expression following TO keyword of a FORWARD instruction
926
Missing expression following ARGUMENTS keyword of a FORWARD instruction
927
Missing expression following MESSAGE keyword of a FORWARD instruction
928
Missing expression following CLASS keyword of a FORWARD instruction
929
Missing expression in logical expression list
930
Missing expression following "=" token of a USE STRICT ARG instruction
931
Missing expression following ( of parse template
932
Missing expression for calculated CALL name

C.1.32. Error 36 - Unmatched "(" or "[" in expression

Explanation:
A matched parenthesis or bracket was found within an expression. There are more left parentheses than right parentheses or more left brackets than right brackets. To include a single parenthesis in a command, enclose it in quotation marks.
The associated subcodes are:
900
message
901
Left parenthesis "(" in position position on line line_number requires a corresponding right parenthesis ")"
902
Square bracket "[" in position position on line line_number requires a corresponding right square bracket "]"

C.1.33. Error 37 - Unexpected ",", ")", or "]"

Explanation:
Either a comma was found outside a function invocation, or there are too many right parentheses or right square brackets in an expression. To include a comma in a character expression, enclose it in quotation marks. For example, write the instruction:
       Say Enter A, B, or C
as follows:
       Say 'Enter A, B, or C'
The associated subcodes are:
001
Unexpected ","
002
Unmatched ")" in expression
900
message
901
Unexpected "]"

C.1.34. Error 38 - Invalid template or pattern

Explanation:
A special character that is not allowed within a parsing template (for example, "%") has been found, or the syntax of a variable pattern is incorrect (that is, no symbol was found after a left parenthesis). This message is also issued if you omit the WITH subkeyword in a PARSE VALUE instruction.
The associated subcodes are:
001
Incorrect PARSE template detected at "column_position"
002
Incorrect PARSE position detected at "column_position"
003
PARSE VALUE instruction requires WITH keyword
900
message
901
Missing PARSE relative position

C.1.35. Error 39 - Evaluation stack overflow

Explanation:
The expression is too complex to be evaluated by the language processor.

C.1.36. Error 40 - Incorrect call to routine

Explanation:
An incorrect call to a routine was found. Possible causes:
  • You passed incorrect data (arguments) to the built-in or external routine.
  • You passed too many arguments to the built-in, external, or internal routine.
  • The external routine called was not compatible with the language processor.
If you did not try to call a routine, you might have a symbol or a string adjacent to a "(" when you meant it to be separated by a blank or other operator. The language processor would treat this as a function call. For example, write TIME(4+5) as follows: TIME*(4+5)
The associated subcodes are:
001
External routine "routine" failed
003
Not enough arguments in invocation of routine; minimum expected is number
004
Too many arguments in invocation of routine; maximum expected is number
005
Missing argument in invocation of routine; argument argument_number is required
011
function_name argument argument_number must be a number; found "value"
012
function_name argument argument_number must be a whole number; found "value"
013
function_name argument argument_number must be zero or positive; found "value"
014
function_name argument argument_number must be positive; found "value"
019
function_name argument 2, "value", is not in the format described by argument 3, "value"
021
function_name argument argument_number must not be a null string
022
function_name argument argument_number must be a single character or null; found "value"
023
function_name argument argument_number must be a single character; found "value"
024
function_name argument argument_number must be a binary string; found "value"
025
function_name argument argument_number must be a hexadecimal string; found "value"
026
function_name argument argument_number must be a valid symbol; found "value"
027
function_name argument 1 must be a valid stream name; found "value"
029
function_name conversion to format "value" is not allowed
032
RANDOM difference between argument 1 ("value") and argument 2 ("value") must not exceed 999,999,999
033
RANDOM argument 1 ("argument") must be less than or equal to argument 2 ("argument")
034
SOURCELINE argument 1 ("argument") must be less than or equal to the number of lines in the program (argument)
035
X2D argument 1 cannot be expressed as a whole number; found "value"
043
function_name argument number must be a single non-alphanumeric character or the null string; found "value"
044
function_name argument number, "value", is a format incompatible with the separator specified in argument number
900
message
901
Result returned by routine is longer than length: "value"
902
function_name argument argument_number must not exceed the whole number limit.
903
function_name argument argument_number must be in the range 0-99; found "value"
904
function_name argument argument_number must be one of values; found "value"
905
TRACE setting letter must be one of "ACEFILNOR"; found "value"
912
function_name argument argument_number must be a single-dimensional array; found "value"
913
function_name argument argument_number must have a string value; found "value"
914
Unknown VALUE function variable environment selector; found "value"
915
function_name cannot be used with QUEUE:
916
Cannot read from a write-only property.
917
Cannot write to a read-only property or typelib element.
918
Invalid native function signature specification
919
Argument argument must have a stem object or stem name value; found "value"

C.1.37. Error 41 - Bad arithmetic conversion

Explanation:
A term in an arithmetic expression is not a valid number or has an exponent outside the allowed range of whole number range.
You might have mistyped a variable name, or included an arithmetic operator in a character expression without putting it in quotation marks.
The associated subcodes are:
001
Nonnumeric value ("value") used in arithmetic operation
003
Nonnumeric value ("value") used with prefix operator
004
Value of TO expression of DO instruction must be numeric; found "value"
005
Value of BY expression of DO instruction must be numeric; found "value"
006
Value of control variable expression of DO instruction must be numeric; found "value"
007
Exponent exceeds number digits; found "value"
900
message
901
Value of RAISE instruction SYNTAX expression must be numeric; found "value"

C.1.38. Error 42 - Arithmetic overflow/underflow

Explanation:
The result of an arithmetic operation requires an exponent that is greater than the platform limit of nine digits.
This error can occur during the evaluation of an expression (often as a result of trying to divide a number by 0) or while stepping a DO loop control variable.
The associated subcodes are:
001
Arithmetic overflow detected at: "valueoperatorvalue"
002
Arithmetic underflow detected at: "valueoperatorvalue"
003
Arithmetic overflow; divisor must not be zero
900
message
901
Arithmetic overflow; exponent ("exponent") exceeds number digits
902
Arithmetic underflow; exponent ("exponent") exceeds number digits
903
Arithmetic underflow; zero raised to a negative power

C.1.39. Error 43 - Routine not found

Explanation:
A function has been invoked within an expression or a subroutine has been invoked by a CALL, but it cannot be found. Possible reasons:
  • The specified label is not in the program
  • It is not the name of a built-in function
  • The language processor could not locate it externally
Check if you mistyped the name.
If you did not try to call a routine, you might have put a symbol or string adjacent to a "(" when you meant it to be separated by a blank or another operator. The language processor then treats it as a function call. For example, write the string 3(4+5) as 3*(4+5).
The associated subcodes are:
001
Could not find routine "routine"
900
message
901
Could not find routine "routine" for ::REQUIRES

C.1.40. Error 44 - Function or message did not return data

Explanation:
The language processor called an external routine within an expression. The routine seemed to end without error, but it did not return data for use in the expression.
You might have specified the name of a program that is not intended for use as a REXX function. Call it as a command or subroutine instead.
The associated subcodes are:
001
No data returned from function "function"
900
message

C.1.41. Error 45 - No data specified on function RETURN

Explanation:
A REXX program has been called as a function, but returned without passing back any data.
The associated subcodes are:
001
Data expected on RETURN instruction because routine "routine" was called as a function

C.1.42. Error 46 - Invalid variable reference

Explanation:
Within an ARG, DROP, EXPOSE, PARSE, PULL, or PROCEDURE instruction, the syntax of a variable reference (a variable whose value is to be used, indicated by its name being enclosed in parentheses) is incorrect. The right parenthesis that must immediately follow the variable name might be missing or the variable name might be misspelled.
The associated subcodes are:
001
Extra token ("token") found in variable reference list; ")" expected
900
message
901
Missing ")" in variable reference
902
Extra token ("token") found in USE ARG variable reference; "," or end of instruction expected

C.1.43. Error 47 - Unexpected label

Explanation:
A label was used in the expression being evaluated for an INTERPRET instruction or in an expression entered during interactive debugging.
The associated subcodes are:
001
INTERPRET data must not contain labels; found "label"

C.1.44. Error 48 - Failure in system service

Explanation:
The language processor stopped processing the program because a system service, such as stream input or output or the manipulation of the external data queue, has failed to work correctly.
The associated subcodes are:
001
Failure in system service: service
900
message

C.1.45. Error 49 - Interpretation error

Explanation:
A severe error was detected in the language processor or execution process during internal self-consistency checks.
The associated subcodes are:
001
Interpretation error: unexpected failure initializing the interpreter
900
message

C.1.46. Error 88 - Invalid argument

Explanation:
An argument passed to a method, function, or routine was not valid.
The associated subcodes are:
900
message
901
Missing argument; argument argument is required
902
Argument argument must be a number; found "value"
903
Argument argument must be a whole number; found "value"
904
Argument argument must be zero or a positive whole number; found "value"
905
Argument argument must be a positive whole number; found "value"
906
Argument argument must not exceed limit; found "value"
907
Argument argument must be in the range min to max; found "value"
908
Argument argument must not be a null string
909
Argument argument must have a string value
910
Argument argument is an incorrect pad or character argument; found "value"
911
Argument argument is an incorrect length argument; found "value"
912
Argument argument is an incorrect position argument; found "value"
913
Argument argument must have a single-dimensional array value
914
Argument argument must be of the class class
915
Argument argument could not be converted to type type
916
Argument argument must be one of values; found "value"
917
Argument argument reason
918
Argument argument is not in a valid format; found "value"
919
Argument argument is not in valid pointer format; found "value"
920
Argument argument must have a stem object or stem name value; found "value"
921
Argument argument must be a valid double value; found "value"
922
Too many arguments in invocation; number expected

C.1.47. Error 89 - Variable or message term expected

Explanation:
An instruction was expecting either a single Rexx variable symbol or a message term to be used for an assignment.
The associated subcodes are:
001
The USE instruction requires a comma-separated list of variables or assignment message terms
002
The PARSE was expecting a variable or a message term.

C.1.48. Error 90 - External name not found

Explanation:
An external class, method, or routine (specified with the EXTERNAL option on a ::CLASS, ::METHOD, or ::ROUTINE directive, or as a second argument on a NEW message to the Method class) cannot be found.
The associated subcodes are:
900
message
997
Unable to find external class "class"
998
Unable to find external method "method"
999
Unable to find external routine "routine"

C.1.49. Error 91 - No result object

Explanation:
A message term requires a result object, but the method did not return one.
The associated subcodes are:
900
message
999
Message "message" did not return a result

C.1.50. Error 92 - OLE error

The associated subcodes are:
900
message
901
An unknown OLE error occurred (HRESULT=hresult).
902
Cannot convert OLE VARIANT to REXX object: The conversion of the VARIANT type varianttype into a REXX object failed.
903
Cannot convert REXX object to OLE VARIANT: The conversion of rexx_object into a VARIANT failed.
904
The number of elements provided to the method or property is different from the number of parameters accepted by it.
905
One of the parameters is not a valid VARIANT type.
906
OLE exception: exc_name
907
The requested method does not exist, or you tried to set the value of a read-only property.
908
One of the parameters could not be coerced to the desired type.
909
One or more of the parameters could not be coerced to the desired type. The first parameter with incorrect type is argument index.
910
A required parameter was omitted.
911
Could not create OLE instance.
912
The object invoked has disconnected from its clients.

C.1.51. Error 93 - Incorrect call to method

Explanation:
The specified method, built-in function, or external routine exists, but you used it incorrectly.
The associated subcodes are:
900
message
901
Not enough arguments for method; number expected
902
Too many arguments in invocation of method; number expected
903
Missing argument in method; argument argument is required
904
Method argument argument must be a number; found "value"
905
Method argument argument must be a whole number; found "value"
906
Method argument argument must be zero or a positive whole number; found "value"
907
Method argument argument must be a positive whole number; found "value"
908
Method argument argument must not exceed limit; found "value"
909
Method argument argument must be in the range 0-99; found "value"
911
Method argument argument must not be null
912
Method argument argument must be a hexadecimal string; found "value"
913
Method argument argument must be a valid symbol; found "value"
914
Method argument argument must be one of arguments; found "value"
915
Method option must be one of "arguments"; found "value"
916
Method argument argument must have a string value
917
Method method does not exist
918
Incorrect list index "index"
919
Incorrect array position "position"
921
Argument missing on binary operator
922
Incorrect pad or character argument specified; found "value"
923
Incorrect length argument specified; found "value"
924
Incorrect position argument specified; found "value"
925
Not enough subscripts for array; number expected
926
Too many subscripts for array; number expected
927
Length must be specified to convert a negative value
928
D2X value must be a valid whole number; found "value"
929
D2C value must be a valid whole number; found "value"
931
Incorrect location of whitespace character in position position in hexadecimal string
932
Incorrect location of whitespace character in position position in binary string
933
Only 0-9, a-f, A-F, and whitespace characters are valid in a hexadecimal string; character found "character"
934
Only 0, 1, and whitespace characters are valid in a binary string; character found "character"
935
X2D result is not a valid whole number with NUMERIC DIGITS digits
936
C2D result is not a valid whole number with NUMERIC DIGITS digits
937
No more supplier items available
938
Method argument argument must have a string value
939
Method argument argument must have a single-dimensional array value
941
Exponent "exponent" is too large for number spaces
942
Integer part "integer" is too large for number spaces
943
method method target must be a number; found "value"
944
Method argument argument must be a message object
945
Missing argument in message array; argument argument is required
946
A message array must be a single-dimensional array with 2 elements
947
Method SECTION can be used only on single-dimensional arrays
948
Method argument argument must be of the class class
949
The index and value objects must be the same for PUT to an index-only collection
951
Incorrect alarm time; found "time"
952
Method argument argument is an array and does not contain all string values
953
Method argument argument could not be converted to type type
954
Method "method" can be used only on a single-dimensional array
956
Element element of the array must be a string
957
Element element of the array must be a subclass of the target object
958
Positioning of transient streams is not valid
959
An array cannot contain more than 99,999,999 elements
961
Method argument argument must have a string value or an array value
962
Invalid Base 64 encoded string.
963
Call to unsupported or unimplemented method
964
Application error: message
965
Method name is ABSTRACT and cannot be directly invoked
966
Incorrect queue index "index"
967
NEW method is not supported for the name class
968
Invalid native method signature specification
969
Method argument argument must have a stem object value; found "value"
970
COPY method is not supported for object object
971
Method argument argument cannot have more than a single dimension

C.1.52. Error 97 - Object method not found

Explanation:
The object does not have a method with the given name. A frequent cause of this error is an uninitialized variable.
The associated subcodes are:
001
Object "object" does not understand message "message"
900
message

C.1.53. Error 98 - Execution error

Explanation:
The language processor detected a specific error during execution. The associated error gives the reason for the error.
The associated subcodes are:
900
message
902
Unable to convert object "object" to a double-float value
903
Unable to load library "name"
904
Abnormal termination occurred
905
Deadlock detected on a guarded method
906
Incorrect object reference detected
907
Object of type "type" was required
908
Metaclass "metaclass" not found
909
Class "class" not found
911
Cyclic inheritance in program "program"
913
Unable to convert object "object" to a single-dimensional array value
914
Unable to convert object "object" to a string value
915
A message object cannot be sent more than one SEND or START message
916
Message object "object" received an error from message "message"
917
Incorrect condition object received for RAISE OBJECT; found "value"
918
No active condition available for PROPAGATE
919
Unable to convert object "object" to a method
935
REPLY can be issued only once per method invocation
936
RETURN cannot return a value after a REPLY
937
EXIT cannot return a value after a REPLY
938
Message search overrides can be used only from methods of the target object
939
Additional information for SYNTAX errors must be a single-dimensional array of values
941
Unknown error number specified on RAISE SYNTAX; found "number"
942
Class "class" must be a MIXINCLASS for INHERIT
943
Class "class" is not a subclass of "class" base class "class"
944
Class "class" cannot inherit from itself, a superclass, or a subclass ("class")
945
Class "class" has not inherited class "class"
946
FORWARD arguments must be a single-dimensional array of values
947
FORWARD can only be issued in an object method invocation
948
Authorization failure: value
951
Concurrency not supported
975
Missing array element at position position
976
Stem object default value cannot be another stem object
978
Unable to load method "name" from library "library"
979
Unable to load routine "name" from library "library"
980
Unable to load native routine "name"
981
Target RexxContext is no longer active
982
Library "name" is not compatible with current interpreter version.
983
Execution thread does not match API thread context.

C.1.54. Error 99 - Translation error

Explanation:
An error was detected in the language syntax. The associated error subcode identifies the syntax error.
The associated subcodes are:
900
message
901
Duplicate ::CLASS directive instruction
902
Duplicate ::METHOD directive instruction
903
Duplicate ::ROUTINE directive instruction
904
Duplicate ::REQUIRES directive instruction
905
CLASS keyword on ::METHOD directive requires a matching ::CLASS directive
907
EXPOSE must be the first instruction executed after a method invocation
908
INTERPRET data must not contain EXPOSE
909
GUARD must be the first instruction executed after EXPOSE or USE
911
GUARD can only be issued in an object method invocation
912
INTERPRET data must not contain GUARD
913
GUARD instruction did not include references to exposed variables
914
INTERPRET data must not contain directive instructions
915
INTERPRET data must not contain USE
916
Unrecognized directive instruction
917
Incorrect external directive name "method"
918
USE ARG requires a "," between variable names; found "token"
919
REPLY can only be issued in an object method invocation
921
Incorrect program line in method source array
922
::REQUIRES directives must appear before other directive instructions
923
INTERPRET data must not contain FORWARD
924
INTERPRET data must not contain REPLY
925
An ATTRIBUTE method name must be a valid variable name; found "name"
926
Incorrect class external; too many parameters
927
"classname" is not a valid metaclass
928
Incorrect class external; class name missing or invalid
929
Incorrect class external; invalid class server "servername"
930
The "..." argument marker can only appear at the end of the argument list
931
Duplicate ::ATTRIBUTE directive instruction
932
Duplicate ::CONSTANT directive instruction
933
Abstract methods cannot have a method body
934
Attribute methods cannot have a method body
935
External attributes cannot have a method body
936
External methods cannot have a method body
937
Attribute methods without a SET or GET designation cannot have a method body
938
Constant methods cannot have a method body
939
External routines cannot have a method body
940
Abstract attributes cannot have a method body