Appendix A. Error Numbers and Messages

External interfaces to the language processor can generate three of the error messages either before the language processor gains control or after control has left the language processor. Therefore, SIGNAL ON SYNTAX cannot trap these errors. The error numbers involved are: 3 and 5 (if the initial requirements for storage could not be met) and 26 (if on exit the returned string could not be converted to form a valid return code). Error 4 can be trapped only by SIGNAL ON HALT or CALL ON HALT. Five errors the language processor detects cannot be trapped by SIGNAL ON SYNTAX unless the label SYNTAX appears earlier in the program than the clause with the error. These errors include: 6, 12, 13, 22, and 30. The following is a list of the error codes and their associated CICS messages:

Table 4. List of Error Codes and CICS Messages
Error code CICS message   Error code CICS message
No number CICREX255T   Error 26 CICREX466E
Error 3 CICREX451E   Error 27 CICREX467E
Error 4 CICREX452E   Error 28 CICREX486E
Error 5 CICREX450E   Error 29 CICREX487E
Error 6 CICREX453E   Error 30 CICREX468E
Error 7 CICREX454E   Error 31 CICREX469E
Error 8 CICREX455E   Error 32 CICREX492E
Error 9 CICREX456E   Error 33 CICREX488E
Error 10 CICREX457E   Error 34 CICREX470E
Error 11 CICREX458E   Error 35 CICREX471E
Error 12 CICREX459E   Error 36 CICREX472E
Error 13 CICREX460E   Error 37 CICREX473E
Error 14 CICREX461E   Error 38 CICREX489E
Error 15 CICREX462E   Error 39 CICREX474E
Error 16 CICREX463E   Error 40 CICREX475E
Error 17 CICREX465E   Error 41 CICREX476E
Error 18 CICREX491E   Error 42 CICREX477E
Error 19 CICREX482E   Error 43 CICREX478E
Error 20 CICREX483E   Error 44 CICREX479E
Error 21 CICREX464E   Error 45 CICREX480E
Error 22 CICREX449E   Error 46 CICREX218E
Error 23 CICREX1106E   Error 47 CICREX219E
Error 24 CICREX484E   Error 48 CICREX490E
Error 25 CICREX485E   Error 49 CICREX481E

In these messages, the term "language processor" refers to the REXX/CICS interpreter.

In addition to the following error messages, the language processor issues this terminal (unrecoverable) message:

CICREX255T
Insufficient storage for Exec interpreter
Explanation:

There is insufficient storage for the language processor to initialize itself.

System action:

Execution is terminated at the point of the error.

User response:

Redefine storage and reissue the command.

The following are the REXX error messages:

CICREX218E
Error 46 Invalid variable reference
Explanation:

Within an ARG, DROP, 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 should immediately follow the variable name may be missing.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX219E
Error 47 Unexpected label
Explanation:

A label, being used incorrectly, was encountered in the expression being evaluated for an INTERPRET instruction or in an expression entered during interactive debug.

System action:

Execution stops.

User response:

Do not use a label in these expressions.

CICREX449E
Error 22 running fn ft, line nn: Invalid character string
Explanation:

A character string scanned with OPTIONS ETMODE in effect contains one of the following:

System action:

Execution stops.

User response:

Correct the incorrect character string in the EXEC file.

CICREX450E
Error 5 running fn ft, line nn: User storage exhausted or request exceeds limit
Explanation:

While trying to process 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, variables, and so on.) The program that called the language processor may already have used up most of the available storage itself. Or a request for storage may have been for more than the implementation maximum.

System action:

Execution stops.

User response:

Run the exec or macro on its own, or check a program issuing NUCXLOAD for a possible loop that has not terminated properly. See your system administrator for additional storage requirements.

CICREX451E
Error 3 running fn ft: Program is unreadable
Explanation:

The REXX program could not be read. This is probably due to bad data in the exec file or an I/O error.

System action:

Execution stops.

User response:

Examine and correct the exec file.

Note:
Sequence numbers are not allowed in columns 73 through 80 in a REXX exec.
CICREX452E
Error 4 running fn ft, line nn: Program interrupted
Explanation:

The system interrupted execution of your REXX program. Certain utility modules may force this condition if they detect a disastrous error condition.

System action:

Execution stops.

User response:

Look for a problem with a utility module called in your exec or macro.

CICREX453E
Error 6 running fn ft, line nn: Unmatched "/*" or quote
Explanation:

A comment or literal string was started but never finished. This could be because the language processor detected:

System action:

Execution stops.

User response:

Edit the exec and add the closing "*/" or quote. You can also insert a TRACE SCAN statement at the top of your program and rerun it. The resulting output should show where the error exists.

CICREX454E
Error 7 running fn ft, line nn: WHEN or OTHERWISE expected
Explanation:

The language processor expects a series of WHENs and an OTHERWISE within a SELECT statement. This message is issued when any other instruction is found or if all WHEN expressions are found to be false and an OTHERWISE is not present. The error is often caused by forgetting the DO and END instructions around the list of instructions following a WHEN. For example:

   WRONG                       RIGHT

Select                      Select
  When a1=b1 then             When a1=b1 then DO
    Say 'A1 equals B1'          Say 'A1 equals B1'
    exit                        exit
  Otherwise nop                 end
  end                         Otherwise nop
                              end
System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX455E
Error 8 running fn ft, line nn: Unexpected THEN or ELSE
Explanation:

The language processor has found a THEN or an ELSE that does not match a corresponding IF clause. This situation is often caused by using an incorrect DO-END in the THEN part of a complex IF-THEN-ELSE construction. For example,

   WRONG                       RIGHT

If a1=b1 then do;           If a1=b1 then do;
  Say EQUALS                  Say EQUALS
  exit                        exit
 else                         end
  Say NOT EQUALS             else
                              Say NOT EQUALS
System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX456E
Error 9 running fn ft, line nn: Unexpected WHEN or OTHERWISE
Explanation:

The language processor has found a WHEN or OTHERWISE instruction outside of a SELECT construction. You may have accidentally enclosed the instruction in a DO-END construction by leaving off an END instruction, or you may have tried to branch to it with a SIGNAL statement (which cannot work because the SELECT is then terminated).

System action:

Execution stops.

User response:

Make the necessary correction.

CICREX457E
Error 10 running fn ft, line nn: Unexpected or unmatched END
Explanation:

The language processor has found more ENDs in your program than DOs or SELECTs, or the ENDs were placed so that they did not match the DOs or SELECTs. Putting the name of the control variable on ENDs that close repetitive loops can help locate this kind of error.

This message can be caused if you try to signal into the middle of a loop. In this case, the END will be unexpected because the previous DO will not have been executed. Remember, also, that SIGNAL terminates any current loops, so it cannot be used to transfer control from one place inside a loop to another.

This message can also be caused if you place an END immediately after a THEN or ELSE construction or if you specified a name on the END keyword that does not match the name following DO.

System action:

Execution stops.

User response:

Make the necessary corrections. It may be helpful to use TRACE Scan to show the structure of the program, making it easier to find your error. Putting the name of the control variable on ENDs that close repetitive loops can also help locate this kind of error.

CICREX458E
Error 11 running fn ft, line nn: Control stack full
Explanation:

This message is issued if you exceed the limit of 250 levels of nesting of control structures (DO-END, IF-THEN-ELSE, and so forth) or when user storage limit is reached, whichever is less.

This message could be caused by a looping INTERPRET instruction, such as:

line='INTERPRET line'
INTERPRET line

These lines would loop until they exceeded the nesting level limit and this message would be issued. Similarly, a recursive subroutine that does not terminate correctly could loop until it causes this message.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX459E
Error 12 running fn ft, line nn: Clause too long
Explanation:

You have exceeded the limit for the length of the internal representation of a clause. The actual limit is the amount of storage that can be obtained on a single request.

If the cause of this message is not obvious to you, it may be due to a missing quote that has caused a number of lines to be included in one long string. In this case, the error probably occurred at the start of the data included in the clause traceback (flagged by +++ on the console).

The internal representation of a clause does not include comments or multiple blanks that are outside of strings. Note also that any symbol (name) or string gains two characters in length in the internal representation.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX460E
Error 13 running fn ft, line nn: Invalid character in program
Explanation:

The language processor found an incorrect character outside of a literal (quoted) string. Valid characters are:

A-Z a-z 0-9      (Alphamerics)

@ # £ $ . ? ! _  (Name Characters)

& * ( ) - + = \ ¬ ' " ; : < , > / | (Special Characters)

If surrounded by X'0E' (shift-out) and X'0F' (shift-in), and if ETMODE is on, the following are also valid characters:

X'41' - X'FE' (DBCS Characters)

Some causes of this error are:

  1. Using accented and other language-specific characters in symbols.
  2. Using DBCS characters without ETMODE in effect.
System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX461E
Error 14 running fn ft, line nn: Incomplete DO/SELECT/IF
Explanation:

The language processor has reached the end of the file (or end of data for an INTERPRET instruction) and has found that there is a DO or SELECT without a matching END, or an IF that is not followed by a THEN clause.

System action:

Execution stops.

User response:

Make the necessary corrections. You can use TRACE Scan to show the structure of the program, making it easier to find where the missing END or THEN should be. Putting the name of the control variable on ENDs that close repetitive loops can also help locate this kind of error.

CICREX462E
Error 15 running fn ft, line nn: Invalid hexadecimal or binary string
Explanation:

Binary strings are new in REXX and the language processor may now be considering the string in your statement to be binary when that was not your intention.

For the language processor, hexadecimal strings cannot have leading or trailing blanks and can have imbedded blanks only at byte boundaries. Only the digits 0-9 and the letters a-f and A-F are allowed. Similarly, binary strings can have blanks only at the boundaries of groups of four binary digits, and only the digits 0 and 1 are allowed.

The following are all valid hexadecimal or binary constants:

'13'x                       '0101 1100'b
'A3C2 1c34'x                '001100'B
'1de8'x                     "0 11110000"b

You may have mistyped one of the digits, for example, typing a letter o instead of 0. Or you may have put the 1-character symbol X, x, B, 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.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX463E
Error 16 running fn ft, line nn: Label not found
Explanation:

The language processor could not find the label specified by a SIGNAL instruction or a label matching an enabled condition when the corresponding (trapped) event occurred. You may have mistyped the label or forgotten to include it, or you may have typed it in mixed case when it needs to be in uppercase.

System action:

Execution stops. The name of the missing label is included in the error traceback.

User response:

Make the necessary corrections.

CICREX464E
Error 21 running fn ft, line nn: Invalid data on end of clause
Explanation:

You have followed a clause, such as SELECT or NOP, by some data other than a comment.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX465E
Error 17 running fn ft, line nn: Unexpected PROCEDURE
Explanation:

The language processor encountered a PROCEDURE instruction in an incorrect position. This could occur because no internal routines are active, because a PROCEDURE instruction has already been encountered in the internal routine, or because the PROCEDURE instruction was not the first instruction executed after the CALL or function invocation. This error can be caused by "dropping through" to an internal routine, rather than invoking it with a CALL or a function call.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX466E
Error 26 running fn ft, line nn: Invalid whole number
Explanation:

The language processor found an expression in the NUMERIC instruction, a parsing positional pattern, or the right-hand term of the exponentiation (**) operator that did not evaluate to a whole number, or was greater than the limit, for these uses, of 999999999.

This message can also be issued if the return code passed back from an EXIT or RETURN instruction (when a REXX program is called as a command) is not a whole number or will not fit in a general register. This error may be due to mistyping the name of a symbol so that it is not the name of a variable in the expression on any of these statements. This might be true, for example, if you entered "EXIT CR" instead of "EXIT RC".

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX467E
Error 27 running fn ft, line nn: Invalid DO syntax
Explanation:

The language processor found a syntax error in the DO instruction. You might have used BY, TO, FOR, WHILE, OR UNTIL twice, or used a WHILE and an UNTIL.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX468E
Error 30 running fn ft, line nn: Name or string > 250 characters
Explanation:

The language processor found a variable or a literal (quoted) string that is longer than the limit.

The limit for names is 250 characters, following any substitutions. A possible cause of this error is the use of a period (.) in a name, causing an unexpected substitution.

The limit for a literal string is 250 characters. This error can be caused by leaving off an ending quote (or putting a single quote in a string) because several clauses can be included in the string. For example, the string 'don't' should be written as 'don''t' or "don't".

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX469E
Error 31 running fn ft, line nn: Name starts with number or "."
Explanation:

The language processor found a symbol whose name begins with a numeric digit or a period (.). The REXX language rules do not allow you to assign a value to a symbol whose name begins with a number or a period because you could then redefine numeric constants, and that would be catastrophic.

System action:

Execution stops.

User response:

Rename the variable correctly. It is best to start a variable name with an alphabetic character, but some other characters are allowed.

CICREX470E
Error 34 running fn ft, line nn: Logical value not 0 or 1
Explanation:

The language processor found an expression 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 (¬, \, |, &, or &&) must result in a 0 or 1. For example, the phrase "If result then exit rc" will fail if result has a value other than 0 or 1. Thus, the phrase would be better written as If result¬=0 then exit rc.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX471E
Error 35 running fn ft, line nn: Invalid expression
Explanation:

The language processor found a grammatical error in an expression. This could be because:

An example of the last case is that LISTFILE * * * should be written as LISTFILE '* * *' (if LISTFILE is not a variable) or even as 'LISTFILE * * *'.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX472E
Error 36 running fn ft, line nn: Unmatched "(" in expression
Explanation:

The language processor found an unmatched parenthesis within an expression. You will get this message if you include a single parenthesis in a command without enclosing it in quotation marks. For example, COPY A B C A B D (REP should be written as COPY A B C A B D '('REP.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX473E
Error 37 running fn ft, line nn: Unexpected "," or ")"
Explanation:

The language processor found a comma (,) outside a routine invocation or too many right parentheses in an expression. You will get this message if you include a comma in a character expression without enclosing it in quotation marks. For example, the instruction:

Say Enter A, B, or C

should be written as:

Say 'Enter A, B, or C'
System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX474E
Error 39 running fn ft, line nn: Evaluation stack overflow
Explanation:

The language processor was not able to evaluate the expression because it is too complex (many nested parentheses, functions, and so forth).

System action:

Execution stops.

User response:

Break up the expressions by assigning subexpressions to temporary variables.

CICREX475E
Error 40 running fn ft, line nn: Invalid call to routine
Explanation:

The language processor encountered an incorrectly used call to a routine. Some possible causes are:

If you were not trying to invoke a routine, you may have a symbol or a string adjacent to a "(" when you meant it to be separated by a space or an operator. This causes it to be seen as a function call. For example, TIME(4+5) should probably be written as TIME*(4+5).

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX476E
Error 41 running fn ft, line nn: Bad arithmetic conversion
Explanation:

The language processor found a term in an arithmetic expression that was not a valid number or that had an exponent outside the allowed range of -999999999 to +999999999.

You may have mistyped a variable name, or included an arithmetic operator in a character expression without putting it in quotation marks. For example, the command MSG * Hi! should be written as 'MSG * Hi!', otherwise the language processor will try to multiply "MSG" by "Hi!".

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX477E
Error 42 running fn ft, line nn: Arithmetic overflow/underflow
Explanation:

The language processor encountered a result of an arithmetic operation that required an exponent greater than the limit of 9 digits (more than 999999999 or less than -999999999).

This error can occur during evaluation of an expression (often as a result of trying to divide a number by 0), or during the stepping of a DO loop control variable.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX478E
Error 43 running fn ft, line nn: Routine not found
Explanation:

The language processor was unable to find a routine called in your program. You invoked a function within an expression, or in a subroutine invoked by CALL, but the specified label is not in the program, or is not the name of a built-in function, and REXX/CICS is unable to locate it externally.

The simplest, and probably most common, cause of this error is mistyping the name. Another possibility may be that one of the standard function packages is not available.

If you were not trying to invoke a routine, you may have put a symbol or string adjacent to a "(" when you meant it to be separated by a space or operator. The language processor would see that as a function invocation. For example, the string 3(4+5) should be written as 3*(4+5).

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX479E
Error 44 running fn ft, line nn: Function did not return data
Explanation:

The language processor invoked an external routine within an expression. The routine seemed to end without error, but it did not return data for use in the expression.

This may be due to specifying the name of a module that is not intended for use as a REXX function. It should be called as a command or subroutine.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX480E
Error 45 running fn ft, line nn: No data specified on function RETURN
Explanation:

A REXX program has been called as a function, but an attempt is being made to return (by a RETURN; instruction) without passing back any data. Similarly, an internal routine, called as a function, must end with a RETURN statement specifying an expression.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX481E
Error 49 running fn ft, line nn: Language processor failure
Explanation:

The language processor carries out numerous internal self-consistency checks. It issues this message if it encounters a severe error.

System action:

Execution stops.

User response:

Report any occurrence of this message to your IBM representative.

CICREX482E
Error 19 running fn ft, line nn: String or symbol expected
Explanation:

The language processor expected a symbol following the CALL or SIGNAL instructions, but none was found. You may have omitted the string or symbol, or you may have inserted a special character (such as a parenthesis) in it.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX483E
Error 20 running fn ft, line nn: Symbol expected
Explanation:

The language processor either expected a symbol following the CALL ON, CALL OFF, END, ITERATE, LEAVE, NUMERIC, PARSE, PROCEDURE, SIGNAL ON, or SIGNAL OFF keywords or expected a list of symbols or variable references following the DROP, UPPER, or PROCEDURE (with EXPOSE option) keywords. Either there was no symbol when one was required or some other characters were found.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX484E
Error 24 running fn ft, line nn: Invalid TRACE request
Explanation:

The language processor issues this message when:

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX485E
Error 25 running fn ft, line nn: Invalid sub-keyword found
Explanation:

The language processor expected a particular sub-keyword at this position in an instruction and something else was found. For example, the NUMERIC instruction must be followed by the sub-keyword DIGITS, FUZZ, or FORM. If NUMERIC is followed by anything else, this message is issued.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX486E
Error 28 running fn ft, line nn: Invalid LEAVE or ITERATE
Explanation:

The language processor encountered an incorrect LEAVE or ITERATE instruction. The instruction was incorrect because of one of the following:

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 can cause this message to be issued if you use the SIGNAL instruction to transfer control within or into a loop. A SIGNAL instruction terminates all active loops, and any ITERATE or LEAVE instruction issued then would cause this message to be issued.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX487E
Error 29 running fn ft, line nn: Environment name too long
Explanation:

The language processor encountered an environment name specified on an ADDRESS instruction that is longer than the limit of 8 characters.

System action:

Execution stops.

User response:

Specify the environment name correctly.

CICREX488E
Error 33 running fn ft, line nn: Invalid expression result
Explanation:

The language processor encountered an expression result that is incorrect in its particular context. The result may be incorrect in one of the following:

(FUZZ must be smaller than DIGITS.)

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX489E
Error 38 running fn ft, line nn: Invalid template or pattern
Explanation:

The language processor found an incorrect special character, for example %, within a parsing template, or the syntax of a variable trigger was incorrect (no symbol was found after a left parenthesis). This message is also issued if the WITH sub-keyword is omitted in a PARSE VALUE instruction.

System action:

Execution stops.

User response:

Make the necessary corrections.

CICREX490E
Error 48 running fn ft, line nn: Failure in system service
Explanation:

The language processor halts execution of the program because some system service, such as user input or output or manipulation of the console stack, has failed to work correctly.

System action:

Execution stops.

User response:

Ensure that your input is correct and that your program is working correctly. If the problem persists, notify your system support personnel.

CICREX491E
Error 18 running fn ft, line nn: THEN expected
Explanation:

All REXX IF and WHEN clauses must be followed by a THEN clause. Another clause was found before a THEN statement was found.

System action:

Execution stops.

User response:

Insert a THEN clause between the IF or WHEN clause and the following clause.

CICREX492E
Error 32 running fn ft, line nn: Invalid use of stem
Explanation:

The REXX program attempted to change the value of a symbol that is a stem. (A stem is that part of a symbol up to the first period. You use a stem when you want to affect all variables beginning with that stem.) This may be in the UPPER instruction where the action in this case is unknown, and therefore in error.

System action:

Execution stops.

User response:

Change the program so that it does not attempt to change the value of a stem.

CICREX1106E
Error 23 running fn ft, line nn: Invalid SBCS/DBCS mixed string.
Explanation:

A character string that has unmatched SO-SI pairs (that is, an SO without an SI) or an odd number of bytes between the SO-SI characters was processed with OPTIONS EXMODE in effect.

System action:

Execution stops.

User response:

Correct the incorrect character string.