An argument must have a type that can be converted to the corresponding parameter’s type.
If a parameter is strongly typed, any argument passed to it must have the same type.
An argument must have a type that can be converted to the corresponding parameter’s type.
Only an EXTERNAL ENTRY CONSTANT, an ENTRY CONSTANT representing a non-nested PROCEDURE, or an ENTRY VARIABLE with the LIMITED attribute can be passed to a LIMITED ENTRY parameter.
POINTER expressions can be converted to OFFSET only if the OFFSET is declared with an AREA qualifier.
OFFSET variables can be converted to POINTER only if the OFFSET is declared with an AREA qualifier.
ORDINALs cannot be passed to other ORDINALs having different ORDINAL types.
The array can be assigned to an array of LABEL variables, and that array can be passed.
lx(1): ... ; lx(2): ... ; call x( lx );
The number of arguments must match the number of parameters in the ENTRY declaration.
The target in an assignment through a pseudovariable must not have the NONASSIGNABLE attribute.
dcl a static nonasgn char(7) init(’example’); unspec(a) = ’’b;
The target in an assignment through a pseudovariable must not have the NONASSIGNABLE attribute.
dcl a static nonasgn char(7) init(’example’); substr(a,1,2) = ’tr’;
Scalars cannot be converted to aggregates.
dcl a entry( fixed bin ), b(10) fixed bin; call a( b );
Dummy aggregate arguments are not supported except when passing a non-AREA scalar to a non-CONTROLLED array of scalars, and the array must have no bounds specified as *. The scalar can be assigned to an aggregate, and that aggregate can be passed.
dcl a entry( 1, 2 fixed bin, 2 fixed bin ); call a( 0 );
Dummy aggregate arguments are not supported. If an entry description describes an aggregate parameter, then any argument passed must match that parameter’s description.
Dummy aggregate arguments are not supported. If an entry description describes an aggregate parameter, then any argument passed must match that parameter’s description.
Dummy aggregate arguments are not supported. If an entry description describes an aggregate parameter, then any argument passed must match that parameter’s description.
Dummy aggregate arguments are not supported. If an entry description describes an aggregate parameter, then any argument passed must match that parameter’s description.
Dummy aggregate arguments are not supported. If an entry description describes an aggregate parameter, then any argument passed must match that parameter’s description.
Array arguments and parameters must have the same number of dimensions.
dcl a entry( (*,*) fixed bin ), b (10) fixed bin; call a( b );
Array arguments and parameters must have the same lower and upper bounds.
dcl a entry( (0:10) fixed bin ), b (10) fixed bin; call a( b );
Charset 48 is no longer supported. The source code must be converted to charset 60.
The compilation requires more virtual memory than is available. It may help to specify one or more of the following compiler options: NOTEST, NOXREF, NOATTRIBUTES, and/or NOAGGREGATE
If an offset variable is declared without an AREA reference, it cannot be set in an ALLOCATE or LOCATE statement unless an IN clause names an AREA reference.
The built-in function AVAILABLEAREA is defined only for AREAs.
An expression contains the built-in function ASIN or ACOS applied to a restricted expression that evaluated to a number outside the domain of that function.
An expression contains the built-in function ATANH applied to a restricted expression that evaluated to a number outside the domain of that function.
An expression contains the named built-in function with an argument having mode COMPLEX.
An expression contains the named built-in function with its first argument having neither type POINTER nor OFFSET.
An expression contains the named built-in function with its first argument having mode COMPLEX. This message applies, for example, to the ATAN and ATAND built-in functions when two arguments are given.
An expression contains the named built-in function, with its second argument having mode COMPLEX. This message applies, for example, to the ATAN and ATAND built-in functions when two arguments are given.
An expression contains the reference BINARYVALUE(x) where x has a type other than POINTER, OFFSET or ORDINAL.
Any other linkage is invalid.
An expression contains the named built-in function with an argument that has neither string nor numeric type.
The result of the REPEAT or COPY built-in function must not be longer than the maximum allowed for the base string type.
An expression contains the named built-in function with an argument having type other than REAL FLOAT. This message applies, for instance, to the floating-point inquiry built-in functions such as HUGE and RADIX, and to the floating-point manipulation built-in functions such as EXPONENT and SUCC.
An expression contains the named built-in function with an argument that is not a reference.
An expression contains the named built-in function with an argument that is not an array expression. This message applies, for example, to the built-in functions ALL, ANY, SUM and PROD.
An expression contains the named built-in function with an argument that is not a FILE. This message applies, for example, to the I/O built-in functions such as LINENO and PAGENO.
A value must be specified as an argument to a BUILTIN function unless the argument is optional.
dcl a float; a = sqrt(*);
An expression contains the named built-in function with the specified argument having mode COMPLEX. This message applies to the MAX and MIN built-in functions.
An expression contains the named built-in function with the specified argument having noncomputational type. This message applies to the MAX and MIN built-in functions.
An expression contains the named built-in function with a first argument that has neither string nor numeric type.
This applies to the RANK built-in function.
An expression contains the named built-in function with a first argument that is not an array. This message applies, for instance, to the DIMENSION, HBOUND, and LBOUND built-in functions.
This applies to the PLIFILL built-in subroutine.
An expression contains the named built-in function with a second argument that has neither string nor numeric type.
The PLISTSIZE built-in functions may be used only in procedures.
The PLISTSIZE built-in function may not be used in procedures with any of the linkages OPTLINK, PASCAL, etc.
This message applies to the COMPLETION and STATUS pseudovariables.
This message applies to the PRIORITY pseudovariable.
An expression contains the named built-in function with a third argument that has neither string nor numeric type. This message applies, for example, to the SUBSTR and CENTER built-in functions.
The ALL and ANY built-in functions are restricted to two types of array expressions: an array expression that is a NONVARYING BIT array reference or an array expression that has known length. The first five examples below meet these restrictions, but the remaining examples do not.
dcl a(10) bit(16) varying; dcl b(10) bit(16); if all( b ) then ... if any( a ^= ’’b ) then ... if all( a = b & a ) then ... if any( ’’b ^= b ) then ... if all( a = ’’b | b = ’’b ) then ... if any( a ) then ... if all( substr(b,1,n) ) then ...
An expression contains the named built-in function with a second argument that has neither string nor numeric type.
If a third argument is given for one of the built-in functions INDEX, SEARCH or VERIFYR, it must be positive. For SEARCHR and VERIFYR, it must be nonnegative.
The second argument for the built-in functions CENTER, LEFT and RIGHT must not be zero or negative.
The argument to the VALID built-in function must have exactly the indicated attributes. It is not sufficient that it can be converted to these attributes.
An expression contains the BUILTIN function SQRT applied to a restricted expression that evaluated to a number outside the domain of that function.
An expression contains the named built-in function applied to a restricted expression that evaluated to a number outside the domain of that function. This message applies, for instance, to the LOG, LOG2, and LOG10 built-in functions.
RULES(ANS) dose not permit non-zero scale factors with FIXED BIN, and hence it does not allow ROUND to be applied to FIXED BIN (or BIT) arguments.
The argument to the HANDLE built-in must be a structure type, and conversely the argument to the TYPE built-in must be a handle.
The second argument for the built-in functions CHARACTER, BIT, and GRAPHIC must be zero or greater.
Supply the minimum number of arguments required.
An expression contains the named built-in function applied to a restricted expression that evaluated to a number outside the supported domain of that function.
An expression contains the built-in function ATAN or ATAND applied to a restricted expression that evaluated to a number outside the domain of that function.
The argument to the named built-in function must be a reference (for example, not an expression or a literal), and that reference must be CONNECTED.
The ALLOCATION built-in function cannot be used with structure members or with non-CONTROLLED variables.
The OMITTED built-in function cannot be used with BYVALUE parameters, structure members, or non-parameters.
Add the OPTIONAL attribute to the entry declaration or replace the * by an actual argument.
The indicated argument to built-in functions such as PLIMOVE and COMPARE must be a locator.
This applies to the HEXIMAGE built-in subroutine.
This applies to the OFFSET built-in function.
This applies to the POINTER built-in function.
This applies to the OFFSET and POINTER built-in functions.
If the first argument to built-in functions such as PLIMOVE and COMPARE has the attribute OFFSET, it must be an OFFSET reference not an OFFSET value.
If the first argument to built-in functions such as PLIMOVE and COMPARE is an OFFSET variable, that OFFSET variable must be declared with an AREA qualifier so that the offset can be converted to an address.
If the indicated argument to built-in functions such as PLIMOVE and COMPARE has the attribute OFFSET, it must be an OFFSET reference not an OFFSET value.
If the indicated argument to built-in functions such as PLIMOVE and COMPARE is an OFFSET variable, that OFFSET variable must be declared with an AREA qualifier so that the offset can be converted to an address.
This applies to the OFFSETDIFF built-in function.
This applies to the POINTERDIFF built-in function.
The STRING built-in function and pseudovariable cannot be applied to discontiguous array cross-sections or to array parameters not declared with the CONNECTED attribute.
Any other argument type is invalid. This message applies to the PLISRTx built-in functions.
This applies to the CHARGRAPHIC built-in function. For instance, in the following example, g should be declared as graphic, not as char.
dcl c char(10); dcl g char(5); c = charg( g );
The LOCATION and BITLOCATION built-in functions cannot be applied to subscripted references.
The STRING built-in function and pseudovariable cannot be applied to UNIONs or to structures containing UNIONs.
The STRING built-in function and pseudovariable cannot be applied to structures or arrays containing elements with the ALIGNED attribute.
The STRING built-in function and pseudovariable cannot be applied to structures or arrays containing VARYING strings.
The STRING built-in function and pseudovariable cannot be applied to structures or arrays containing noncomputational types or arithmetic types other than pictures.
The STRING built-in function and pseudovariable cannot be applied to structures or arrays containing different string types, for example, BIT and CHARACTER strings.
This applies to the floating-point inquiry and manipulation built-in functions such as HUGE and EXPONENT.
This applies to the EDIT built-in function.
This applies to the PRIORITY built-in function.
This applies to the COMPLETION and STATUS built-in functions.
The named built-in function is not a pseudovariable and may not be used as one.
It is invalid to assign an array, structure, or union to one of the built-in functions ONCHAR, ONSOURCE, or ONGSOURCE.
The BUILTIN attribute can be applied only to identifiers that are the names of built-in functions or subroutines.
This applies to the PLISRTx built-in functions. For instance, in the following example, rc should be declared as fixed bin(31), not fixed bin(15).
dcl rc fixed bin(15); call plisrta( ’SORT FIELDS=(1,80,CH,A) ’, ’RECORD TYPE=F,LENGTH=(80) ’, 256000, rc );
This applies to the ADDR and similar built-in functions. It is invalid, for instance, to apply the ADDR built-in function to a label constant.
The argument for the built-in functions LOW and HIGH must be zero or greater.
The ENTRYADDR built-in function cannot be applied to non-ENTRYs or to INTERNAL ENTRY constants.
Pseudovariables cannot be applied to expressions.
unspec( 12 ) = ’00’b4;
The SUBSTR pseudovariable cannot be applied to expressions.
substr( ’nope’, 1, 1 ) = ’d’;
The compiler does not support the named pseudovariable applied to arrays, structures, or unions.
The compiler does not support the named pseudovariable applied to arrays, structures, or unions.
The REAL and IMAG pseudovariable can be applied only to COMPLEX arithmetic variables.
The SUBSTR pseudovariable cannot be applied to numeric variables or to noncomputational values.
The ENTRYADDR pseudovariable can be applied only to ENTRY variables.
The indicated built-in function cannot be applied to file constants with attributes that conflict with the indicated attribute.
The indicated built-in function cannot be applied to non-STREAM files.
The indicated built-in function cannot be applied to non-PRINT files.
Specified file attributes and ENVIRONMENT options on a declaration statement are in conflict. The following DECLARE statement is an example of this type of conflict:
dcl file f1 direct env(consecutive);
Use of the DIRECT file attribute needs an ENVIRONMENT option specification of INDEXED, REGIONAL, RELATIVE, or VSAM.
dcl file f1 direct env(relative);
%INCLUDE must be followed by a name and either a semicolon or else a second name in parenthesis and then a semicolon.
The maximum length of the file specification is 8 characters.
%INCLUDE must be followed by a file name, not just a semicolon.
If a parameter is an unaligned bit string or an array or structure consisting entirely of unaligned bit strings, then OPTIONS(NODESCRIPTOR) must not be specified or implied.
Aggregates with more than 131071 elements and dimension specifications would require descriptors that would require too much storage.
The named reference is not a member of any structure or union declared in the block in which it is referenced or declared in any block containing that block.
An expression specifying an array bound, a string length or an AREA size must not be a reference to an array, a structure, or a union.
An expression specifying an array bound, a string length, or an AREA size must have numeric or string type.
An expression used as a subscript must not be an array, structure, or union reference.
Only expressions having numeric or string type may be used as subscripts.
Array bounds, string lengths, and AREA sizes in STATIC variables must evaluate at compile-time to constants.
In the assignment of one array to another, the two arrays must have the same number of dimensions.
In the assignment of one array to another, the two arrays must have the same lower and upper bound in each dimension.
Executing such a program would most likely cause a protection exception.
dcl a(5:10) fixed bin(31); a(1) = 0;
Executing such a program would most likely cause a protection exception.
dcl a(5:10) fixed bin(31); a(20) = 0;
In structure assignments and structure expressions, all subelements that are arrays must have the same number of dimensions.
dcl 1 a, 2 b(8) fixed bin, 2 c char(10); dcl 1 x, 2 y(8,9) fixed bin, 2 z char(10); a = x;
In structure assignments and structure expressions, all subelements that are arrays must have the same bounds.
dcl 1 a, 2 b(8) fixed bin, 2 c char(10); dcl 1 x, 2 y(9) fixed bin, 2 z char(10); a = x;
In structure assignments and structure expressions, if any element of one structure is itself a structure, then the corresponding element in all the other structures must also be a similar structure.
In structure assignments and structure expressions, all structures must have the same number of elements.
Only scalars and arrays of scalars are permitted in GENERIC descriptions.
Aggregates containing no strings or arithmetic variables cannot be used in PUT or GET statements.
Aggregates containing one or more UNION statements cannot be used in PUT or GET statements.
An array of structures must be referenced in its entirety or element by element.
dcl 1 a(8,9), 2 b fixed bin, 2 c char(10); a(2,*) = 0;
An array of unions must be referenced in its entirety or element by element.
dcl 1 a(8,9) union, 2 b fixed bin, 2 c char(10); a(2,*) = 0;
It must be possible to compute the value of the DIMENSION built-in function for an array. In DECLARE x(x:y), ( y-x+1) must be less than 214748648.
The maximum physical level allowed is 255, but the maximum logical level is 15.
Aggregates containing unaligned bits must be less than 2**28 bytes in size while all other aggregates must be less than 2**31.
If the TO value is bigger than the maximum value that a FIXED or PICTURE variable can hold, then a loop dominated by that variable would cause SIZE to be raised. For example, in the first code fragment below, x can not be assigned a value bigger than 99. In the second code fragment below, y can not be assigned a value bigger than 32767.
dcl x pic’99’; do x = 1 to 100; put skip list( x ); end; dcl y fixed bin(15); do y = 1 to 32768; put skip list( y ); end;
The number of subscripts given for a variable must match that variable’s number of dimensions
The number of subscripts given for a variable must match that variable’s number of dimensions
Arrays with more than 15 dimensions are not supported.
dcl 1 dim7(2,3,4,5,6,7,8), 2 dim7more(2,3,4,5,6,7,8) 3 dim2many(2,3) fixed bin, 3 * fixed bin, 2 * char(10);
The LIKE reference cannot be a scalar or an array of scalars.
dcl a fixed bin, 1 b like a;
The LIKE reference needs enough qualification to be unique.
dcl 1 x like b, 1 a, 2 b, 3 c, 3 d, 2 e, 3 f, 3 g, 1 h, 2 b, 3 j, 3 k;
LIKE from LIKE is not supported.
dcl 1 a, 2 b1 like c, 2 b2 like c, 1 c, 2 d fixed bin, 2 e fixed bin; dcl 1 x like a;
LIKE from LIKE is not supported.
dcl 1 a, 2 b1 like c, 2 b2 like c, 1 c, 2 d fixed bin, 2 e fixed bin; dcl 1 x like a.b1;
The LIKE reference must be known in the block containing the LIKE attribute specification.
If a parameter is declared as controlled, non-controlled variables and expressions with operators cannot be passed to it.
dcl c char(20); call a(c); a: proc( b ); dcl b controlled char(*);
Differences in any arithmetic attributes are not permitted. The following example will emit this message.
dcl x fixed bin(15) controlled; call a(x); a: proc( b ); dcl b controlled fixed bin(31);
Subscripts are permitted only in array element references.
Temporary arrays of strings are supported only if the string length is known.
dcl a entry, (b(10),c(10)) char(20) var; call a( b || c );
The total number of logical levels after LIKE expansion must not exceed 15.
Execution of the statement would raise the RECORD condition.
dcl datei file record output env( fb recsize (80) total ); dcl satzaus char (100); write file(datei) from(satzaus);
Only scalars can be assigned to scalars.
Unions and structures containing unions may not be used in expressions except when used as an argument to a built-in function such as ADDR or UNSPEC.
Structure expressions may not, for instance, be assigned to arrays of scalars.
Array expressions may not, for instance, be assigned to structures or scalars.
An E15 sort exit have the RETURNS attribute since it will be invoked as a function by the sort library routine.
An E15 sort exit may return a NONVARYING, VARYING or VARYINGZ CHARACTER string, but it must be a character string.
The target in an assignment statement must not have the NONASSIGNABLE attribute.
The target of an assignment statement must be an array, structure, union or scalar reference. Function references are not permitted as target of assignments.
Assignments to UNIONs are not supported.
In a PROCEDURE containing ENTRY statements, if the PROCEDURE and ENTRY statements do not all have the same RETURNS attributes, then all values must be returned BYADDR. You can compile with DFT(RETURNS(BYADDR)) to force this, or you can add the BYADDR attribute to each set of RETURNS attribute. For example, you must either compile the following program with DFT(RETURNS(BYADDR)) or change the "fixed bin" to "fixed bin byaddr".
a: proc; return; b: entry returns( fixed bin ); return( 1729 ); end;
The source in a structure assignment cannot be an array of scalars or a structure that does not match the target.
A BY NAME assignment may have not have a mixture of array and non-array targets.
dcl 1 a, 2 a1 fixed bin, 2 a2 fixed bin; dcl 1 b(3), 2 a1 fixed bin, 2 a2 fixed bin; dcl 1 c, 2 a1 fixed bin, 2 a2 fixed bin; a,b = c, by name;
Only the simple assignment operator can be used to assign to a NONVARYING string.
The target in an assignment must not contain any UNIONs.
These two options are mutually exclusive.
ENTRY constants representing nested procedures and ENTRY variables not declared with the LIMITED attribute cannot be assigned to variables with the attributes LIMITED ENTRY.
An ENTRY constant or variable without an argument list will not be invoked and hence can be assigned only to an ENTRY variable.
The target attributes conflict with the source attributes.
POINTER expressions can be converted to OFFSET only if the OFFSET is declared with an AREA qualifier.
OFFSET variables can be converted to POINTER only if the OFFSET is declared with an AREA qualifier.
A maximum of 25 preprocessor invocations can be specified in the PP option or in combination with the MACRO option.
The target in a BY NAME assignment cannot be an array or a scalar.
For instance, in the assignment, x = y, by name, if both x and y immediately contain a member z, then either both x.z and y.z are structures or neither x.z and y.z is a structure.
In a BY NAME assignment, arrays with matching names must have the same number of dimensions.
dcl 1 a, 2 b(4,5) bin(31,0), 2 c bin(31,0); dcl 1 x, 2 b(4) bin(31,0), 2 c bin(31,0); a = x, by name;
In a BY NAME assignment, arrays with matching names must have the same lower and upper bounds.
dcl 1 a, 2 b(1:5) bin(31,0), 2 c bin(31,0); dcl 1 x, 2 b(0:4) bin(31,0), 2 c bin(31,0); a = x, by name;
The target structure in a BY NAME assignment must not contain any UNIONs even if no names in those UNIONs match names in the source. The source expression also must contain any unions or structures containing unions.
If the DLI compiler option is specified, PLITDLI cannot be declared with any OPTIONS other than OPTIONS(ASM).
If the DLI compiler option is specified, PLITDLI cannot be declared with an entry description list.
If the DLI compiler option is specified, PLITDLI cannot be declared as a function.
Functions, i.e. entrys declared with the RETURNS attribute, cannot be declared with OPTIONS(ASM) or OPTIONS(COBOL).
In ENTRY descriptors, each array bound, string length and AREA size must be specified either with an asterisk or with a restricted expression that has computational type.
There is no default RETURNS attribute.
dcl e entry; a = e();
The TASK, EVENT and PRIORITY options may be specified only once in any CALL statement.
CALL x is invalid unless x is a built-in subroutine, an ENTRY constant, or an ENTRY variable. Built-in functions are not built-in references. For example, "Call SQRT(x)" is invalid.
CALL x is invalid unless x is a built-in subroutine, an ENTRY constant, or an ENTRY variable.
All RETURN statements inside functions must specify a value to be returned.
a: proc returns( fixed bin ); return;
A statement of the form RETURN(x) is valid inside only PROCEDUREs that are defined with a RETURNS attribute.
A statement of the form RETURN(x) is valid inside a BEGIN block only if the PROCEDURE enclosing that BEGIN block has the RETURNS(BYADDR) attribute explicitly or by default.
Arrays, structures, and unions cannot be passed BYVALUE.
Only AREA variables with constant size can be passed BYVALUE.
Only strings with constant size can be passed BYVALUE.
Structures and union may not be returned.
CALL references must be scalars.
dcl ea(10) entry; call ea;
A function can have only one argument list unless it returns an ENTRY, in which case it can have only two argument lists unless the returned ENTRY returns an ENTRY, and so on.
The RETURN expression must have a type that can be converted to the type indicated in the RETURNS option.
a: proc returns( pointer ) return( 0 ); end;
The RETURN expression must have a type that can be converted to the type indicated in the RETURNS option.
a: proc returns( pointer ) dcl f entry returns( pointer ); return( f ); end;
Only an EXTERNAL ENTRY CONSTANT, an ENTRY CONSTANT representing a non-nested PROCEDURE, or an ENTRY VARIABLE with the LIMITED attribute can be specified as the RETURNS expression in a function that returns a LIMITED ENTRY.
POINTER expressions can be converted to OFFSET only if the offset is declared with an AREA qualifier.
OFFSET variables can be converted to POINTER only if the OFFSET is declared with an AREA qualifier.
In a function that returns an ordinal, the ORDINAL type in any RETURN expression must be the same as returned by the function.
a: proc returns( ordinal color ); dcl i ordinal intensity; return( i ); end;
The expression in a RETURN statement must not be an array, a structure, or an union.
EXTERNAL(’’) is invalid.
Functions must contain at least one RETURN statement.
In RETURNS descriptors, each array bound, string length, and AREA size must be specified with a restricted expression that has computational type. Unlike ENTRY descriptors, asterisks are not permitted.
RETURN statements are not permitted in an ON-unit or any of its contained BEGIN blocks unless the contained block is also contained in a procedure defined in the ON-unit.
Expressions in FORMAT lists, including SKIP clauses, must represent scalar values.
Expressions in FORMAT lists, including SKIP clauses, must have computational type so that the expression can be converted to FIXED BIN(31).
The expression in an IF, WHILE, UNTIL, SELECT, or WHEN clause must have computational type so that it can be converted to BIT(1).
The expression in an IF, WHILE, UNTIL, SELECT, or WHEN clause must have computational type so that it can be converted to BIT(1). An ENTRY cannot be used as a boolean expression. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
An expression used in calculating the size of a variable must not depend on any values that the variable may have because those values do not exist until storage can be allocated for the variable.
The compiler’s space for evaluating expressions has been exhausted. Rewrite the expression in terms of simpler expressions.
Compilation will terminate when the number of messages has exceeded the limit set in the MAXMSG compiler option.
The length of the string literal produced by concatenating two string literals must not be greater than the maximum allowed for a literal with the derived string type.
One of the operands in an addition must be computational and the other must be either computational or a locator.
An ENTRY cannot be used as an arithmetic operand. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
The first operand in a subtraction must be computational or a locator. The second operand can be a locator only if the first is a locator. Otherwise, the second operand must be computational.
An ENTRY cannot be used as an arithmetic operand. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
Both operands in a multiplication must be computational.
An ENTRY cannot be used as an arithmetic operand. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
Both operands in a division must be computational.
An ENTRY cannot be used as an arithmetic operand. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
Aggregate expressions are supported only as the source in an assignment statement and, with some limitations, as an argument to the ANY or ALL built-in functions.
Only expressions having string or numeric type may be concatenated.
The prefix operators (plus, minus, and logical not) may be applied only to expressions having string or numeric type.
No relational operations are defined for AREA variables.
Computational types can be compared only with other computational types, and non-computational types can be compared only with like non-computational types.
ENTRYs can be compared only with other ENTRYs. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
ENTRYs can be compared only with other ENTRYs. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
No relational operations are defined for TASK variables.
An OFFSET can be compared with a POINTER as long as the OFFSET can be converted to a POINTER. This requires that the OFFSET is declared with an AREA qualifier.
Comparisons of strongly-typed variables are invalid unless both have the same type.
dcl hp handle point; dcl hr handle rectangle; if hp = hr then ...
ORDINALs cannot be compared with other ORDINALs having a different ORDINAL type.
Assignments of strongly-typed variables are invalid unless both have the same type.
ORDINALs cannot be assigned to other ORDINALs having different ORDINAL type.
For instance, in a function that returns a typed structure, any RETURN expression must have the same structure type.
These expressions must be reducible to a constant at compile-time.
dcl a fixed bin static nonassignable init(0); dcl m fixed bin value( a ); dcl n fixed bin static init( a );
This is a compiler restriction. Reorder the declarations and blocks in your program. For example, the following declarations should be in reverse order.
dcl a char( csize( x, y ) ); dcl csize entry( char(2), fixed bin ) returns( fixed bin );
Reorder the declarations in your program. For example, the following declarations should be in reverse order.
dcl a char( length(b) ) auto; dcl b char( 10 ) auto;
Aggregate expressions are not valid as INITIAL and VALUE expressions.
LABEL variables require block activation information; they cannot be initialized at compile-time. If the variable were not a member of a structure, the storage class would be changed to AUTOMATIC and an E-level message would be issued instead.
ENTRY variables that don’t have the LIMITED attribute require block activation information, and hence they cannot be initialized at compile-time.
FORMAT variables require block activation information, and hence they cannot be initialized at compile-time. If the variable were not a member of a structure, the storage class would be changed to AUTOMATIC and an error message would be issued instead.
Since an asterisk iteration factor completes the initialization of a variable, it cannot be followed by more initial values.
dcl a(10) fixed bin init( 1, 2, (*) 0, 8 );
An asterisk iteration can be used only in a non-nested INITIAL item list. The following example is invalid.
dcl a(20) fixed bin init( (2) ( 1, (*) 2 ) );
Only arrays can have an INITIAL list with more than one element.
dcl a fixed bin init( 1, 2 );
Change the storage class to AUTOMATIC.
lx:; subproc: proc; dcl la static label init( lx ); end;
If more than one element in a STATIC UNION had an INITIAL value, it would not be clear which should take precedence.
dcl 1 a union static, 2 b fixed bin(31) init( 17 ), 2 c fixed bin(15) init( 19 );
The only supported INITIAL values for a STATIC UNALIGNED BIT variable with inherited dimensions are bit strings equal to ’’b.
dcl 1 a(10,2) static, 2 b1 bit(1) init( (20) ’1’b ), 2 b2 bit(1) init( (20) ’0’b );
Replace the subscripted LABEL with an unsubscripted one or change the storage class to AUTOMATIC.
lx(1):; lx(2):; dcl la(2) static label init( lx(2), lx(1) );
The variable y in DCL x ENTRY LIMITED INIT(y) must not be FETCHABLE; y must not be used in a FETCH or RELEASE statement, and y must not have the OPTIONS(FETCHABLE) attribute.
Iteration factors in INITIAL lists must have numeric or string types.
An iteration factor in an INITIAL list must not be an array, structure, or union.
Strings with nonconstant length must be passed and received by address.
a: proc( x ); dcl x char(*) byvalue;
Named strings must have a constant length or a length determined from their VALUE.
dcl a fixed bin automatic; dcl s char(a) value(’variable length’);
Named constants must be evaluated before they are used. Reorder the declarations so that each named constant is declared before its first use.
dcl a char(n) static init( ’tooSoon’ ); dcl n fixed bin value( 7 );
Named constants may not be used as control variables in DO loops.
dcl n fixed bin value( 7 ); do n = 1 to 5;
Constants may not be used as control variables in DO loops.
dcl ex external entry, (ev1, ev2) entry; do ex = ev1, ev2;
If the control variable in a DO loop has POINTER type, the TO expression must have POINTER type. Implicit conversion from OFFSET to POINTER is not supported in this context.
In a DO loop with a TO clause, the control variable must have a type that allows a comparison of less than and greater than. This is possible only for computational and locator types.
SUBSTR and UNSPEC may be used as pseudovariables in DO-loops only if their derived length is known at compile time.
In a DO loop of the form DO a = b TO c, b must be a scalar.
In a DO loop of the form DO x = .., x must be a scalar.
In a DO loop of the form DO x = .., if x is a string or an area, then it must have constant size or must be static, automatic, or defined.
The expression in the BY clause of a DO loop must have a string or numeric type. It cannot have a locator type because it must be comparable to zero.
The expression in the BY clause of a DO loop must be REAL.
dcl z cplx float; do jx = 1 to 10 by z;
The expression in the TO clause of a DO loop must be REAL
dcl z cplx float; do jx = 1 to z;
In a DO loop with a TO clause, the control variable must have a type that allows a comparison of less than and greater than. This is possible for numeric types only if the numeric type is REAL.
The expression in the TO clause of a DO loop must have a string or numeric type.
ON ANYCONDITION may be used to trap conditions not otherwise trapped, but ANYCONDITION may not be signalled.
Bitwise operands must have a computational type.
An ENTRY cannot be used as a bitwise operand. If the ENTRY is a function which should be invoked, an argument list, even if it consists only of a left and right parenthesis, must be provided.
A variable declared as BASED instead of as BASED( reference ) must always be explicitly qualified. This is necessary even when the variable is an argument to built-in functions such as STORAGE.
Functions, but not subprocedures, can be used as locator qualifiers (and then only if they return a locator).
Only scalars can be used as locator qualifiers.
The named built-in function cannot be used as a locator qualifier since it does not return a POINTER.
x(...)->y is invalid unless x returns a POINTER or an OFFSET declared with a qualifying AREA.
Only POINTERs and OFFSETs declared with a qualifying AREA can be used as locator qualifiers.
Locator qualification is valid only for BASED variables.
All references must be unambiguous.
Locator qualified references must be explicitly declared. BASED variables may not be implicitly declared.
Only IMAG, REAL, SUBSTR and UNSPEC may be used as pseudovariables in DO loops.
An implicitly qualified variable must require no more than 15 qualifiers to be completely qualified. If it requires more, this may indicate its qualifiers are too interdependent.
dcl a pointer based(b); dcl b pointer based(a); a = null();
An OFFSET variable can be used as a locator qualifier only if it can be converted to a pointer value. This requires that the offset be declared with an AREA qualification.
Arrays, structures, and unions may not be used as locator qualifiers.
The REFER option cannot be used in a BASED variable which also has an extent that is set by a non-constant expression.
The picture character F specifies a picture scaling factor for fixed-point decimal numbers. The number of digits following the V picture character, minus the integer specified with F, must be between -128 and 127.
The picture specification can contain only A X 9 for the Character Data, and only 9 V Z * , . / B S + - $ CR DB Y K E F < > for the Numeric Data. The characters between the insertion characters < > are not affected by this rule.
The picture character F specifies a picture scaling factor for fixed-point decimal numbers. The format is F(n) where n can be any signed integer between -128 and 127 inclusively.
The picture specification can contain only A, X, or 9 for the character data. Other characters are not permitted.
The number of digits for the precision field within a numeric data picture specification must be between one and the maximum allowed by the LIMITS(FIXEDDEC) option.
T, I, or R are the overpunched characters in the picture specification. Only one overpunched character can appear in the specification for a fixed point number. A floating-point specification can contain two (One in the mantissa field and one in the exponent field).
Character PICTURE specifications are not permitted in C-format items.
The precision field within a numeric data picture specification must contain at least one digit.
The precision in the fixed decimal picture specification must not exceed that specified in the LIMITS compiler option.
The precision in the float decimal picture specification is limited by the hardware to 18 digits.
Null picture strings (’’P) are invalid.
The number of digits in the exponent of the float decimal picture specification is limited to 4.
The exponent in the float decimal picture specification is missing. It must be entered even if it is zero.
V specifies an implicit decimal point. Therefore, it is not permitted in the exponent field.
Credit (CR), debit (DB), and scale factor (F) are only allowed in the FIXED picture specification.
The compiler restrictions on the length of the picture specification are:
fixed decimal: 254 float decimal: 253 character data: 511
The floating insertion string is delimited by < >. Floating is done by the > character. The string can contain any character with one exception: the delimiters themselves. In order to include the characters < and > in the floating insertion string, these angle brackets must be used in an escaped format. << must be used to specify the character <, and <> must be used to specify the character >. So, for example, <aaa<<bbb<>ccc> denotes the insertion string aaa<bbb>ccc.
Built-in subroutines cannot be used as functions - they can only be called. For instance, the following code is invalid
dcl pliretc builtin; rc = pliretc( 16 );
The expression must be arithmetic or string.
dcl x label variable; put list( x );
The KEYTO reference should have the data type character or graphic. The reference can also be a variable with a non-numeric picture string specification.
An option on the I/O statement conflicts with prior options.
open file(f1) input output; read file(f) into(x) set(p);
Each option may be specified only once.
read file(f1) ignore(1) ignore(2);
A required statement element has not been specified.
open output; write file(x);
An invalid scalar or aggregate reference has been specified for the FROM or INTO clause in a record I/O statement. The example below will cause this message to be issued.
dcl f1 file; read file(f1) into(f1);
The expression in a KEY or KEYFROM record I/O statement option must be computational data.
In the SET clause of an ALLOCATE or LOCATE statement, the reference must have the type POINTER or OFFSET.
The expression in the named keyword clause must be scalar. This keyword clause could be an IF, UNTIL, WHILE, WHEN, KEY, KEYFROM or KEYTO clause.
dcl f1 file; dcl x char(10); dcl z(10) char(10); read file(f1) into(x) key(z);
The references for the KEYTO, FROM, INTO, and SET record I/O options cannot be built-in functions. The example below will cause this message to be issued.
dcl f1 file; dcl x char(10); read file(f1) into(hex(x));
The references for the KEYTO, FROM, INTO, and SET record I/O options cannot be entry.
The specified reference is invalid. It must be of type character. The example below will cause this message to be issued.
dcl p pointer; display (’what is your name?’) reply(p);
The specified reference is invalid. It must be a scalar. The example below will cause this message to be issued.
dcl z(10) char(10); display (’what is your name?’) reply(z);
The declared attributes conflict with their use in the statement.
dcl f file stream; read file(f) into(x);
The expression must be arithmetic or string.
dcl p pointer; put list( ptradd(p,2) );
Provide a SET clause in the LOCATE statement.
dcl f file; dcl x char(10) based; locate x file(f1);
The reference in the SET clause of a FETCH statement must have the POINTER type. OFFSET types are not supported in this context.
The specified reference in the FROM or INTO record I/O option is invalid. The reference must be connected. The example below will cause this message to be issued.
dcl f1 file; dcl 1 a(3), 2 b(4) char(4), 2 c(4) char(4); read file(f1) into(b);
The specified expression in the IGNORE option of the READ statement must be computational. The example below will cause this message to be issued.
dcl a area; read file(f1) ignore(a);
The LOCATE reference may not be a structure member and must have the storage attribute BASED.
The INITIAL attribute is valid only for scalars and arrays of scalars.
The specified reference is invalid. It cannot be a named constant. The example below will cause this message to be issued.
dcl f1 file; dcl x char(2); dcl val fixed bin(15) value(4); read file(f1) into(x) keyto(val);
Only AUTOMATIC, CONTROLLED, PARAMETER, STATIC and and implicitly qualified BASED variables are supported in data directed I/O.
dcl q based; put data(q);
Use a temporary or use LIST- or EDIT directed I/O.
Use a temporary or use GET LIST or GET EDIT.
The format argument is outside the valid range.
put edit(’hi’) (a( -1) );
The width specified is too small for complete processing.
put edit(10190) (f(3));
The fractional number of digits must be less than or equal to the field width and non-negative.
The argument to the R-format item must be either a format constant or a format variable.
The number of significant digits must be greater than or equal to the number of fractional digits, less than or equal to the field width and non-negative.
G, L, PAGE, LINE, SKIP, and COLUMN format items may not be used in GET/PUT EDIT statements using the STRING option.
The target of a GOTO cannot be inside a DO loop unless the GOTO itself is in the same DO loop.
The INCLUDE file could not be found or opened.
Under CMPAT(V1), bounds must be between -32768 and 32767 inclusive. To use bounds outside this range, specify a different CMPAT option.
Under CMPAT(V1), bounds must be between -32768 and 32767 inclusive. To use bounds outside this range, specify a different CMPAT option.
An unexpected error occurred while trying to open an include source file.
A preprocessor specified in the PP compiler option is unknown.
The argument in the FETCH and RELEASE statements must be a FETCHABLE entry constant.
The compiler attempted to load the module specified in the PP-DEF installation option for the preprocessor.
A terminating error was detected in a preprocessor invoked by the compiler.
The compiler was unable to load the user exit.
The compiler detected a terminating error in the user exit.
The user exit aborted the compile by setting the return code to 16.
All other statements must be enclosed in a PACKAGE or PROCEDURE statement.
PACKAGE statements cannot follow any other statements in the program.
This message can occur, for instance, if the first PROCEDURE statement is invalid or if a PROCEDURE contains too many END statements.
The nesting of PROCEDURE, DO, SELECT and similar statements is greater than that supported by the compiler. Rewrite the program so that it is less complicated.
AUTOMATIC variables must be declared inside a PROCEDURE, and DEFINED variables declared outside a PROCEDURE must be defined on STATIC.
Support for the indicated built-in function has been discontinued.
The variable implicitly qualifying the BASED variable must be a scalar that is not part of an array, structure or union, and it must be a POINTER with either the AUTOMATIC or STATIC storage attribute.
Support for the indicated statement has been discontinued.
Support for the indicated pseudovariable has been discontinued.
iSUB references are permitted only in DEFINED clauses.
For example, neither of the following are supported.
allocate x(5); allocate y char(10);
If the SYSTEM action is specified in an ON statement, an ON-unit may not be specified as well.
on error system stop;
x in CONDITION(x) refers to a variable that does not have the type CONDITION.
The reference in the named FILE condition does not have the type FILE.
DO statements can be nested only 50 deep. Simplify the program.
IF statements can be nested only 50 deep. Simplify the program.
SELECT statements can be nested only 50 deep. Simplify the program.
Blocks may be nested only 30 deep.
A reference of any other type is invalid and is invalid.
A reference of any other type is invalid and is invalid.
A file variable or constant is required.
dcl x format variable; open file(x);
Enough qualification must be provided to make any reference unique.
References in ALLOCATE statements must be level-1 variable names, and those variables must have the BASED or CONTROLLED attributes.
Provide a SET clause in the ALLOCATE statement.
dcl a based; allocate a;
A reference of any other type is invalid.
A reference of any other type is invalid.
Provide enough qualification to make the name unique.
dcl 1 a based, 2 b1, 3 c bit(8) aligned, 3 d char(10), 2 b2, 3 c bit(8) aligned, 3 d char(10), 2 e( n refer(c)) char(10);
The named REFER object cannot be declared in another structure or in the same structure, but after its first usage.
It must be possible to convert the REFER object safely to and from REAL FIXED BIN(31,0).
dcl 1 a based, 2 b, 3 c pointer, 3 d char(10), 2 e( n refer(c)) char(10);
The REFER object may not have any dimensions in its declaration and neither may any of its parents.
dcl 1 a based, 2 b(8), 3 c fixed bin, 3 d char(10), 2 e( n refer(c)) char(10);
Reorder the elements in the declaration so that all REFER objects precede the first level-2 element containing a REFER.
dcl 1 a based, 2 b fixed bin, 2 c char( n refer(b) ), 2 d fixed bin, 2 e char( n refer(d) );
REFER can be used only in declarations of BASED variables.
If a REFER object is a string, it must have constant length.
REFER cannot be used only in declarations of scalars or arrays of scalars.
In the statement FREE x, x must not have any subscripts or arguments.
If the DIRECTED(ASM) option is used, comparisons and assignments are not supported for ENTRYs declared with OPTIONS(ASM). Similarly, if the DIRECTED(COBOL) option is used, comparisons and assignments are not supported for ENTRYs declared with OPTIONS(COBOL).
If the DIRECTED(ASM) option is used, ENTRY VARIABLES may not be declared with OPTIONS(ASM). Similarly, if the DIRECTED(COBOL) option is used, ENTRY VARIABLES may not be declared with OPTIONS(COBOL).
If simple defining is not intended, specify POSITION(1) to force string defining.
You can define a variable only another user variable.
Convert the DEFINED and base variables into a UNION.
All bounds and string lengths for DEFINED structures and unions consisting of bit strings must be constant.
The POSITION attribute has no meaning without DEFINED attribute.
The POSITION expression must have a numeric or string type.
The compiler must be able to evaluate the expression to an integer constant when it scans the POSITION attribute.
A variable that is either based or controlled should immediately follow the FREE keyword.
An invalid option immediately follows a controlled variable in an ALLOCATE or FREE statement.
Using the specified AREA reference to qualify an OFFSET variable is invalid. The reference must be scalar. The following example will issue this message.
dcl a(10) area; dcl o offset(a);
The extent specified for the controlled variable is invalid. The following example will emit this message.
dcl c(*) char(10) controlled;
Extents for AUTOMATIC and DEFINED variables must be specified by expressions.
The named attributes, for example PARAMETER and INITIAL, are mutually exclusive.
Parameters can have no storage attributes other than CONTROLLED. Parameters also cannot have any of the attributes BUILTIN, CONDITION, CONSTANT, EXTERNAL, and GENERIC.
All statement labels in any block must be unique.
All statement labels in any block must be unique.
A BEGIN block or a statement associated with an ON clause may not have a label.
x in GOTO x must have type LABEL. x must not have type FORMAT.
x in GOTO x must not be an array.
Sister procedures must have different names.
a: proc; b: proc; end; b: proc; end; end;
The source contains either no statements or all statements that it contains are invalid.
None of the names in an ORDINAL should have been declared elsewhere. If they are, perhaps the ORDINAL definition has been accidentally repeated.
Each EXTERNAL name must have only one INTERNAL name. So, for example, the following declares would be illegal since the external name Z is specified for two different internal names: X and Y.
dcl X fixed bin(31) ext(’Z’); dcl Y fixed bin(31) ext(’Z’);
The maximum precision of FIXED BINARY constants is set by the FIXEDBIN suboption of the LIMITS compiler option.
The maximum precision of FIXED DECIMAL constants is set by the FIXEDDEC suboption of the LIMITS compiler option.
The exponent in a FLOAT BINARY constant may contain no more than 5 digits.
The mantissa in a FLOAT BINARY constant may contain no more than 64 digits.
The exponent in a FLOAT BINARY constant may contain no more than 4 digits.
The mantissa in a FLOAT DECIMAL constant may contain no more than maximum number of digits allowed on the platform.
The number of bytes used to represent a constant in your program must not exceed 8192. This limit holds even for bit strings where the internal representation will consume only one-eighth the number of bytes as the external representation does.
The source value is not in the domain of the target.
dcl x fixed bin(15); x = 172900;
The ERROR condition was while the compiler was trying to build CEEUOPT from PLIXOPT. There may an error in the Language Environment APIs used by the compiler. Contact IBM service.
The compiler was unable to open the named temporary file used to communicate with the code generation module. Check the value of the TMP environment variable.
The compiler was unable to write to a temporary file used to communicate with the code generation module. The disk to which the TMP environment variable points may be full.
The compiler was unable to close the named temporary file used to communicate with the code generation module. Check the value of the TMP environment variable.
Shorten the name of the source file or the directory specified by the TMP variable.
Assign the structure to a temporary and pass the temporary, or omit the parameter description in the entry declaration.
Assign the structure to a temporary and pass the temporary, or describe the parameter in the entry declaration.
The back end of the compiler either could not be found or else it detected an error from which it could not recover. The latter problem can sometimes occur, on Intel, if your disk is short of free space and, on the z/Series, if your job’s region size is not large enough. Otherwise, report the problem to IBM.
For parameters, each array bound, string length and AREA size must be specified either with an asterisk or with a restricted expression that has computational type.
The message must be in the current directory or in one of the directories specified in the DPATH environment variable.
The operands in an exponentiation must have numeric or string type.
This message is used by %NOTE statements with a return code of 12.
This message is used by %NOTE statements with a return code of 16.
This applies to all the precision-handling built-in functions.
Compilation will terminate when the number of messages has exceeded the limit set in the FLAG compiler option.
This applies to all the precision-handling built-in functions.
Extents in BASED variables must be either constants or specified with the REFER option.
The specified reference is invalid. An AREA variable is needed.
The argument list in a GENERIC reference must match one of the generic descriptors in one of that GENERIC’s WHEN clauses. If an OTHERWISE clause was specified, the argument list must have the same number of elements as the OTHERWISE entry reference.
Compile-time evaluation of a restricted expression raised a condition.
display( 1/0 );
Each identifier in a parameter list must be unique.
a: proc( b, c, b );
Variables with the CONTROLLED attribute must be named, and a variable with the EXTERNAL attribute may not have an * instead of a name unless a name is given with the EXTERNAL attribute itself.
An INITIAL CALL must be evaluated at run-time; it can be used to initialize only non-STATIC data.
EXTERNAL variables can be declared in more than one procedure in a compilation unit, but the attributes in those declarations must match.
Variables cannot be DEFINED on NONCONNECTED references.
EXTERNAL FILE constants and CONDITIONs may be declared only once in a compilation unit. Remove all but the outermost declare.
ITERATE is not valid inside type-I do groups.
The expression representing the number of items to wait for in a WAIT statement is invalid. The expression must be of computational type. The following example will issue this message.
dcl e event; dcl p pointer: wait (e) (p);
The event reference in the WAIT statement is invalid. It must be of type EVENT. The following example will issue this message.
dcl e entry; wait (e);
References in WAIT statements can be scalars. The only valid aggregate reference is a simple array of events. Structures, unions, and arrays of structures or unions would be flagged as as errors.
If ORDINAL x is used in a declaration, x must be a defined ORDINAL type.
Any values specified in INITIAL clauses in an ORDINAL definition must be in strictly increasing order.
ORDINAL values must fit in the range of a FIXED BIN(31) variable.
An expression contains the named built-in function with an argument that is not an ORDINAL. This message applies, for example, to the ORDINALNAME, ORDINALPRED and ORDINALSUCC built-in functions.
A label on a PROCEDURE statement constitutes a declaration for an ENTRY constant with that name. That name also appears in a DECLARE statement, but the attributes in those two declarations do not match.
All references must be unambiguous.
HANDLE qualified references must be explicitly declared.
Functions, but not subprocedures, can be used as handles (and then only if they return a handle).
x(...)=>y is invalid unless x returns a HANDLE.
Only scalars can be used as handles.
The named built-in function cannot be used as a handle.
GENERIC references may not be used as handles.
x=>y is invalid unless x has the HANDLE attribute
Hex strings (strings ending in one of the suffixes X, BX, B4, GX or XN), bit strings, (strings ending in the suffix B), and character strings not ending in the suffix M must contain only SBCS characters.
Mixed SBCS and DBCS is allowed only in M constants.
Outside of comments, SBCS can be encoded as DBCS only as part of an identifier.
The named built-in function may be used only inside procedures.
The named file could not be opened. Make sure that the file is named correctly, that it exists, that it has the proper attributes and that you have the needed permissions to access it.
The file does not exist in the current directory, in the path specified by the appropriate environment variable. Check to see that the file name was entered correctly.
The path does not exist for the drive specified, or the path was entered incorrectly.
The maximum number of open files has been reached. On some platforms, there is a system limit on the number of open files, but the compiler also has a limit of 2047 include files.
Either the file is in use or you tried to open a file for which you do not have sufficient privilege.
The length of the file name or extension is greater than the maximum allowed.
Apart from z/OS UNIX, file names should not contain quotes. Under z/OS UNIX, if the file name does contain quotes, it should specify a PDS member.
The compiler attempted to load the SQL preprocessor but was unable to do so. Check that DB2/2 is properly installed.
The command syntax is:
PLI {d:}{path}filename{.ext} {( options}If you hit CTL-BRK during the compilation, the compilation will stop.
This message indicates that there is an error in the front end of the compiler. Please report the problem to IBM.
This message indicates that there is an error in the front end of the compiler. Please report the problem to IBM.
This message indicates that there is an error in the front end of the compiler. Please report the problem to IBM.
This message indicates that there is an error in the front end of the compiler. Please report the problem to IBM.
This message indicates that there is an error in the front end of the compiler. Please report the problem to IBM.
This message indicates that there is an error in the back end of the compiler. Please report the problem to IBM.
IBM License Manager is installed on your system, but the request to verify that you have a license to use the PL/I compiler has failed.
An error has occurred while attempting to close a file.
An error has occurred while attempting to write to a file.
If the ATTACH reference is declared without an argument list, change the declare to specify a null argument list by adding a pair of parentheses.
GENERIC references and built-in subroutines may not be attached.
An ATTACH reference must not have the RETURNS attribute, even if the value returned is an ENTRY.
Unless the default linkage is overridden, OPTIONS(LINKAGE(SYSTEM)) must be specified on the declare for the ATTACH reference.
An ATTACH reference may not be used in a FETCH or RELEASE statement.
An ATTACH reference must be a level-1 procedure, although it does need to be external.
Specify the LIMITED attribute in the declare for the ENTRY VARIABLE.
No other argument types are support in ATTACH statements.
Like RETURNS descriptors, the attributes STRUCTURE, UNION and DIMENSION are not permitted. Hence, the following are invalid:
define alias array (10) fixed bin; define alias point 1, 2 fixed bin, 2 fixed bin;
The syntax allows the name in an alias definition to be followed by a description list, but that description list must consist of exactly one description. The following is invalid:
define alias x fixed bin, float bin;
In ALIAS and STRUCTURE descriptors, each string length and AREA size must be specified with a restricted expression. Like RETURNS descriptors, asterisks and non-constant expressions are not permitted.
The VALUE attribute is allowed only with computational data types as well as pointer, offset, handle and ordinal.
The VALUE attribute is valid only on scalars, and the INITIAL attribute is not allowed on typed structures.
INITIAL TO is not valid for NONNATIVE POINTERs. It is also invalid for non-POINTERs since they cannot be assigned addresses.
INITIAL TO is not supported for variables belonging to any storage class other than STATIC.
Specify OPTIONS(LINKAGE(OPTLINK)) or, on WINDOWS, OPTIONS(LINKAGE(CDECL)) on the PROCEDURE or ENTRY having a parameter with the LIST attribute and then recompile.
All references must be unambiguous.
All structure references must be explicitly declared.
Functions, but not subprocedures, can be used as typed structure qualifiers (and then only if they return a typed structure).
x(...)=>y is invalid unless x returns a typed structure.
For instance, if x is an array of structure t with member m, x.m(2) is invalid. However, x(2).m is valid.
The named built-in function cannot be used as a typed structure qualifier.
GENERIC references may not be used as typed structure qualifiers.
x.y is invalid unless x is a structure, a union or a function returning a typed structure.
The DEFINE STRUCTURE or DEFINE ALIAS statement for a type x must precede any of use of x as attribute type. The following two statements should be in the opposite order.
dcl x type point; define structure 1 point 2 x fixed bin(31), 2 y fixed bin(31);
A DEFINE STRUCTURE statement must specify a structure or union type with level numbers.
define structure int fixed bin;
Defined structure types must be initialized via assignments.
Storage attributes, such as AUTOMATIC and BYADDR, must be specified with variables declared with structure type.
The level 1 name in a structure definition may not have the DIMENSION attribute.
The syntax allows the name in a structure definition to be followed by a description list, but that description list must consist of exactly one structure description. The following is invalid:
define structure 1 point 2 x fixed bin(31), 2 y fixed bin(31), 1 rectangle 2 upper_left type point, 2 lower_right type point;
The argument to the type functions FIRST and LAST must be a type name, and that type must be an ordinal type.
The argument to the type function NEW must be a type name, and that type must be a structure type.
The second argument to the BIND type function must be a pointer or offset value that is to be converted to a handle to the structure type named as the first argument.
The first argument to the type functions BIND must be a type name, and that type must be a structure type.
An expression contains the named built-in function with an argument that is not a HANDLE.
The TYPE pseudovariable can be applied only to HANDLEs.
The first argument to the type function SIZE must be the name of a defined type.
The first argument to the type function CAST must be the name of a defined type.
The second argument to the type function CAST must be a scalar.
The second argument to the type function CAST must have the same size as the size of the type that is the first argument.
The function should be declared as
dcl get entry( pointer byvalue,
fixed bin(31) byaddr,
fixed bin(31) byaddr )
returns( pointer );The function should be declared as
dcl free entry( pointer byvalue,
pointer byvalue,
fixed bin(31) byvalue );If an entry has a variable number of arguments, i.e. its last parameter has the LIST attribute, OPTIONS(NODESCRIPTOR) must be specified (and valid) if any of the required parameters could have a descriptor.
The VARGLIST built-in function obtains the address of the variable argument list passed to procedures whose last parameter had the LIST attribute. It may not be used in subprocedures of such routines or in procedures having either no parameters or having no parameter declared with the LIST attribute.
The LIST attribute causes a variable argument list to be built, and such argument lists are permitted neither with nested procedures nor with entry variables declared without the LIMITED attribute.
The LIST attribute indicates that zero or more parameters may be specified after it, but those parameters may not be described.
If OPTIONS( FORTRAN DESCRIPTOR ) applies, all parameters other than character strings must have constant extents.
If OPTIONS( FORTRAN DESCRIPTOR ) applies to an ENTRY statement or to a procedure containing an ENTRY statement, all parameters must have constant extents.
Either BYADDR must be specified in the RETURNS option of the PROCEDURE statement, or the RETURNS(BYADDR) suboption of the DEFAULT statement must be in effect.
Either BYADDR must be specified in the RETURNS option of the ENTRY statement, or the RETURNS(BYADDR) suboption of the DEFAULT statement must be in effect.
Either BYADDR must be specified in the declares for the parameters, or the BYADDR suboption of the DEFAULT statement must be in effect.
Either BYADDR must be specified in the declares for the parameters, or the BYADDR suboption of the DEFAULT statement must be in effect.
ENTRY statements are allowed in non-iterative DO groups, but not in iterative DO loops.
A RETURN statement is valid inside a BEGIN block only if the PROCEDURE enclosing that BEGIN block contains no ENTRY statements.
Either BYADDR must be specified in the RETURNS option of the ENTRY statement, or the RETURNS(BYADDR) suboption of the DEFAULT statement must be in effect.
Only ALIGNED BIT strings with constant length are valid with OPTIONS(FORTRAN).
Attributes may be specified only in ALLOCATEs of CONTROLLED variables.
An attribute, such as CHARACTER, may be specified in an ALLOCATE statement only if it is also specified in the declaration of the variable to be allocated.
In an ALLOCATE statement for a structure, all the levels specified in its declaration must be specified, and no new levels may be specified.
An attribute, such as CHARACTER, may be specified in an ALLOCATE statement only if it is also specified in the declaration of the variable to be allocated with either an asterisk or a non-constant expression.
If a bound for a CONTROLLED variable is declared as a constant, then it must be specified as the same constant value in any ALLOCATE statement for that variable.
If a bound for a CONTROLLED variable is declared as a constant, then it must be specified as the same constant value in any ALLOCATE statement for that variable.
A ENTRY type or argument used with the type function CAST must have the attribute LIMITED.
A FLOAT type or argument used with the type function CAST must have the attributes NATIVE REAL.
A FIXED BIN type or argument used with the type function CAST must have the attributes REAL PRECISION(p,0).
The first argument to the type function CAST must be a type with one of the following sets of attributes: REAL FIXED BIN(p,0) or NATIVE REAL FLOAT.
The second argument to the type function CAST must have one of the following sets of attributes: REAL FIXED BIN(p,0) or NATIVE REAL FLOAT.
See the Language Reference Manual for a list of the supported DATE patterns.
The DATE attribute cannot be used on any other than the named types.
The DATE attribute can be used on a numeric only if it has a scale factor of zero.
The DATE attribute can be used on a numeric only if it is REAL.
The DATE attribute can be used on a PICTURE only if the PICTURE consists entirely of 9’s.
The DATE attribute can be used on a numeric only if its precision equals the length of the DATE pattern.
The DATE attribute can be used on a string only if its length equals the length of the DATE pattern.
The DATE attribute can be used on a string only if the string is declared with a constant length.
The options string built from the response file must be less than 32767 characters long.
All lines in any response file must contain no more than 100 characters.
The named statement cannot be used under CICS.
DISPLAY with REPLY cannot be used under CICS.
The named built-in function cannot be used under CICS.
The named I/O statement cannot be used under CICS unless the file used in the statement is SYSPRINT.
The source in a CAST to a FLOAT must be FLOAT, FIXED or ORDINAL.
The target in a CAST from a FLOAT must be FLOAT, FIXED BIN or ORDINAL.
The target in a CAST from a FIXED DEC must be FLOAT, FIXED BIN or ORDINAL.
A FIXED DEC type or argument used with the type function CAST must have the attributes REAL PRECISION(p,q) with p >= q and q >= 0.
The source in a CAST to a FIXED DEC must be FLOAT, FIXED or ORDINAL.
The two strings in the CASEX option must have the same length. The second argument is the uppercase value of the first. If a character in the first string does not have an uppercase value, use the character itself as the uppercase value.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
This message is issued in explanation of the message immediately preceding it in the listing.
A match for the GENERIC reference has been found, but the match is not suitable because while the GENERIC reference is used as a function, the matching ENTRY is not a function. For example, the first GENERIC reference below is invalid, while the second is ok.
dcl e1 entry( fixed bin ); dcl e2 entry( fixed bin, fixed bin ) returns( fixed bin ); dcl gp generic( e1 when( * ), e2 when( *, * ) ); rc = gp( 0 ); rc = gp( 0, 0 );
A match for the GENERIC reference has been found, but the match is not suitable because while the GENERIC reference is used as a locator, the matching ENTRY is not a function returning a POINTER. For example, the first GENERIC reference below is invalid, while the second is ok.
dcl f1 entry( fixed bin ) returns( fixed bin ); dcl f2 entry( fixed bin, fixed bin ) returns( pointer ); dcl bx based fixed bin; dcl gf generic( f1 when( * ), f2 when( *, * ) ); rc = gf( 0 )->bx; rc = gf( 0, 0 )->bx;
A match for the GENERIC reference has been found, but the match is not suitable because while the GENERIC reference is used as a function whose return value is a function that is invoked (and so on, as the number of argument lists mandates), the matching ENTRY cannot be so used. For example, the first GENERIC reference below is invalid, while the second is ok.
dcl x1 entry( fixed bin ) returns( entry ); dcl x2 entry( fixed bin, fixed bin ) returns( entry returns( fixed bin ) ); dcl gx generic( x1 when( * ), x2 when( *, * ) ); rc = gx( 0 )(); rc = gx( 0, 0 )();
The POSITION attribute can be used only with string overlay defining.
dcl b(4) char(2) pos(2) def( a(1sub,1sub) );
The defined and base arrays in iSUB defining must have identical attributes apart from the dimension attribute.
dcl a(4) fixed bin(31); dcl b(4) fixed bin(15) def( a(1sub,1sub) );
The i in an iSUB reference must refer to a subscript of the DEFINED variable and hence must not be greater than the number of dimensions for that variable.
dcl a(4,4) fixed bin(31); dcl b(4) fixed bin(15) def( a(1sub,2sub) );
In an iSUB variable, no asterisks may appear in the specification of the base array.
dcl a(4,4) fixed bin(31); dcl b(4) fixed bin(15) def( a(1sub,*) );
iSUB defining is not supported for structures and unions.
If CMPAT(V1) or CMPAT(V2) is specified, then DFT(DESCLOCATOR) must be in effect (as it is by default on z/OS).
The number of indices given for an element of a label constant array must not vary.
a(1,1): .... a(1,2): .... a(3): ....
A label constant cannot be subscripted if its first use contains no subscripts.
a: .... a(3): ....
A label constant must be subscripted if its first use contains subscripts.
a(3): .... a: ....
You are using Language Environment 2.10 (or earlier!), which is not supported by the compiler.
The second argument to the REPLACEBY2 built-in function provides the set of pairs of characters which are to replace the corresponding characters in the third argument, and hence the length of the second string must be twice that of the third.
The first argument to the named built-in subroutine must be a structure supplying the event handlers for the SAX parser.
The first argument to the named built-in subroutine must be a structure supplying the event handlers for the SAX parser, and that structure must exactly the right number of members. See the Language Reference Manual for more details.
The first argument to the named built-in subroutine must be a structure supplying the event handlers for the SAX parser, and that structure must exactly the right number of members. See the Language Reference Manual for more details.
The first argument to the named built-in subroutine must be a structure supplying the event handlers for the SAX parser, and each element of that structure must be a scalar. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must be a LIMITED ENTRY. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must be a function returning BYVALUE a NATIVE FIXED BIN(31). See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a non-empty entry description list. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have the correct number of parameters. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE POINTER as its first parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE POINTER as its second parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE NATIVE FIXED BIN(31) as its third parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE POINTER as its fourth parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE NATIVE FIXED BIN(31) as its fifth parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE POINTER as its second parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE NATIVE FIXED BIN(31) as its fourth parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE NATIVE FIXED BIN(31) as its second parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE CHAR (or BYVALUE WIDECHAR) of length one as its second parameter. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have the PL/I default linkage. See the Language Reference Manual for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have the NODESCRIPTOR option. See the Language Reference Manual for more details.
The XMLCHAR built-in function cannot be applied to structures containing noncomputational types.
The XMLCHAR built-in function cannot be applied to unions or to structures containing unions.
The XMLCHAR built-in function cannot be applied to structures containing any GRAPHIC data.
The XMLCHAR built-in function cannot be applied to structures containing any WIDECHAR data.
The XMLCHAR built-in function cannot be applied to structures containing substructures using an asterisk as a name.
Support for long external names is incompatible with support for using the PRV to address CONTROLLED variables.
Support for the RENT option is incompatible with support for using the PRV to address CONTROLLED variables.
Support for the CMPAT(LE) option is incompatible with support for using the PRV to address CONTROLLED variables.
When using the PRV to address CONTROLLED variables, there may be no more than 568 INTERNAL CONTROLLED variables.
Under the NOWRITABLE option, every FETCHABLE ENTRY constant must be declared inside a PROCEDURE.
Under the NOWRITABLE option, every FILE CONSTANT must be declared inside a PROCEDURE.
Under the NOWRITABLE option, every CONTROLLED variable must be declared inside a PROCEDURE.
The length of the string literal produced by applying the REPLACEBY2 built-in function to 3 literals must not be greater than the maximum allowed for a character literal.
The REPLACEBY2 built-in function currently supports only second and third arguments that have a length and value known at compile time.
The HEX and HEXIMAGE built-in functions cannot be applied to strings using more than 16383 bytes of storage.
The named file is the file intended to be used as the SYSADATA file, but such a file must not be a member of a PDS.
When the LINEDIR option is in effect, your source must contain no INCLUDE statements.
The %LINE directive generated by the PPTRACE must fit on one line. You must either make the margins wide enough to allow this or make the source file names short enough.
Any input/output operation using a KEYED DIRECT file must include the key of the record to which the the operation is to be applied.
This applies to the PICSPEC built-in function, for example.
This applies to the PICSPEC built-in function, for example.
This applies to the PICSPEC built-in function, for example.
Break up the source files into smaller files.
This applies to the ISFINITE and similar built-in functions.
The named built-in function is not supported for float using DFP. This message applies, for instance, to the SQRTF built-in functions
A DFP literal value when adjusted to have no decimal point (e.g. 3.14E0 would be adjusted to 314E-2) must have an exponent no larger than the maximum for its precision. For precision <= 7, the maximum is 90. For 7 < precision <= 16, the maximum is 369. For 16 < precision, the maximum is 6111.
A DFP literal value when adjusted to have no decimal point (e.g. 3.14E0 would be adjusted to 314E-2) must have an exponent no smaller than the minimum for its precision. For precision <= 7, the minimum is -95. For 7 < precision <= 16, the minimum is -383. For 16 < precision, the minimum is -6143.
Under CMPAT(V2) and CMPAT(LE), bounds must be between -2147483648 and +2147483647.
Under CMPAT(V2) and CMPAT(LE), bounds must be between -2147483648 and +2147483647.
You must specify at least one valid character in each of the OR, NOT and QUOTE or NAMES compiler options.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE POINTER in the specified parameter position. See the Programming Guide for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE NATIVE FIXED BIN(31) in the specified parameter position. See the Programming Guide for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYADDR POINTER in the specified parameter position. See the Programming Guide for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYADDR NATIVE FIXED BIN(31) in the specified parameter position. See the Programming Guide for more details.
The indicated element of the structure supplying the event handlers for the SAX parser must have a BYVALUE ALIGNED BIT(8) in the specified parameter position. See the Programming Guide for more details.
This applies to the UVALID and ULENGTH built-in functions, for example.
This applies to the UPOS and UWIDTH built-in functions, for example.
The compiler backend requires the XPLINK(ON) option to be in effect.