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.
Execution stops.
Make the necessary corrections.
A label, being used incorrectly, was encountered in the expression being evaluated for an INTERPRET instruction or in an expression entered during interactive debug.
Execution stops.
Do not use a label in these expressions.
Execution stops.
Correct the incorrect character string in the EXEC file.
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.
Execution stops.
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.
The REXX program could not be read. This is probably due to bad data in the exec file or an I/O error.
Execution stops.
Examine and correct the exec file.
The system interrupted execution of your REXX program. Certain utility modules may force this condition if they detect a disastrous error condition.
Execution stops.
Look for a problem with a utility module called in your exec or macro.
Execution stops.
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.
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
Execution stops.
Make the necessary corrections.
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
Execution stops.
Make the necessary corrections.
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).
Execution stops.
Make the necessary correction.
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.
Execution stops.
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.
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.
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.Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
(Alphamerics)
A-Z a-z 0-9
(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)
Execution stops.
Make the necessary corrections.
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.
Execution stops.
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.
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.
'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.
Execution stops.
Make the necessary corrections.
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.
Execution stops. The name of the missing label is included in the error traceback.
Make the necessary corrections.
You have followed a clause, such as SELECT or NOP, by some data other than a comment.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
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".
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
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".
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Rename the variable correctly. It is best to start a variable name with an alphabetic character, but some other characters are allowed.
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.
Execution stops.
Make the necessary corrections.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
Say Enter A, B, or C
should be written as:
Say 'Enter A, B, or C'
Execution stops.
Make the necessary corrections.
The language processor was not able to evaluate the expression because it is too complex (many nested parentheses, functions, and so forth).
Execution stops.
Break up the expressions by assigning subexpressions to temporary variables.
Execution stops.
Make the necessary corrections.
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!".
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
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).
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
The language processor carries out numerous internal self-consistency checks. It issues this message if it encounters a severe error.
Execution stops.
Report any occurrence of this message to your IBM representative.
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.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
The language processor encountered an environment name specified on an ADDRESS instruction that is longer than the limit of 8 characters.
Execution stops.
Specify the environment name correctly.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Make the necessary corrections.
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.
Execution stops.
Ensure that your input is correct and that your program is working correctly. If the problem persists, notify your system support personnel.
All REXX IF and WHEN clauses must be followed by a THEN clause. Another clause was found before a THEN statement was found.
Execution stops.
Insert a THEN clause between the IF or WHEN clause and the following clause.
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.
Execution stops.
Change the program so that it does not attempt to change the value of a stem.
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.
Execution stops.
Correct the incorrect character string.