The maximum size allowed for an AREA variable is 16777216.
In certain contexts, for example after an IF-THEN clause, only executable statements are permitted. A DECLARE, DEFINE, DEFAULT or FORMAT statement has been found in one of these contexts. A null statement, (a statement consisting of only a semicolon) will be inserted before the offending statement.
In certain contexts, for example after an IF-THEN clause, only executable statements are permitted. A DEFAULT statement has been found in one of these contexts. A null statement (a statement consisting of only a semicolon) will be inserted in place of the DEFAULT statement.
In certain contexts, for example after an IF-THEN clause, only executable statements are permitted. A FORMAT statement has been found in one of these contexts. A null statement (a statement consisting of only a semicolon) will be inserted in place of the FORMAT statement.
Argument lists are valid only for ENTRY references.
dcl a(15) entry returns( fixed bin(31) ); i = a(3)(4);
Argument/subscript lists are valid only for ENTRY and array references.
dcl a fixed bin; i = a(3);
A comma was followed by a semicolon rather than by a valid syntactical element (such as an identifier). The comma will be ignored in order to make the semicolon valid. Under RULES(LAXPUNC), a message with the same text, but lesser severity would be issued
dcl 1 a, 2 b fixed bin, 2 c fixed bin, ;
The indicated character is missing, and there are no more characters in the source. The missing character has been inserted by the parser in order to correct your source. Under RULES(LAXPUNC), a message with the same text, but lesser severity would be issued
The indicated character is missing and has been inserted by the parser in order to correct your source. Under RULES(LAXPUNC), a message with the same text, but lesser severity would be issued
display( ’Program starting’ ;
Data items cannot be transmitted unless a data format item is given in the format list.
put edit ( (130)’-’ ) ( col(1) );
A label specified on a PROCEDURE, PACKAGE or ENTRY statement should have no subscripts.
An undeclared variable is used with an arguments list. This should give it a contextual declaration as BUILTIN, but its name is not that of a built-in function.
The sift amount in ISLL is should not be greater than the precision of the result.
i = isll( n, 221 );
The named attribute is either not part of the SAA PL/I language and is not supported on this platform.
dcl f file transient;
The RETURNS descriptor may not specify a structure, union or array.
dcl a entry returns( 1 union, 2 ptr, 2 ptr );
Equal and not equal are defined for complex variables, but you have attempted to relate them in some other way.
Other relationships between program control data are not defined. Perhaps a variable was misspelled.
REGIONAL(2) and REGIONAL(3) ENVIRONMENT options are syntax-checked during compile-time but are not supported during run-time.
This applies to the KEYLENGTH, KEYLOC and RECSIZE suboptions.
This applies to the PASSWORD suboption.
This message applies, for example, to the ADDR built-in function. The value returned by the ADDR function is the address of the first byte of its argument. If you use this pointer to refer to a based variable, the variable may be mapped over storage occupied by some other variable, rather than the storage occupied by the argument.
The argument to the named built-in function should have arithmetic type. The required implicit conversion will be performed, but this may indicate a programming error.
The argument to the named built-in function should have CHARACTER type. The required implicit conversion will be performed, but this may indicate a programming error.
The second argument to built-in functions such as COPY and REPEAT must be nonnegative.
x = copy( y, -1 );
The third argument to built-in functions such as COMPARE, PLIFILL, and PLIMOVE must be nonnegative.
call plimove( a, b, -1 );
Expressions in IF, WHILE, UNTIL and undominated WHEN clauses should have the attributes BIT(1) NONVARYING. If not, the expression should be compared to an appropriate null value. This message will not be issued if the RULES(LAXIF) option is specified.
dcl x bit(8) aligned; ... if x then ...
OPTIONS(RETCODE) is not supported on ATTACH references.
The maximum length allowed for a WIDECHAR variable is 16383.
The maximum length allowed for a BIT variable is 32767.
The default lower bound is 1, but the upper bound must be greater than the lower bound.
dcl x(-5) fixed bin;
The arguments passed to the MAIN procedure when SYSTEM(IMS) or SYSTEM(CICS) is in effect should not have the BYADDR attribute.
*process system(ims); a: proc( x ); dcl x ptr byaddr;
In a BY NAME, the source and target structures should have at least one matching base element identifier.
dcl 1 a, 2 b, 2 c, 2 d; dcl 1 w, 2 x, 2 y, 2 z; a = w, by name;
In a B3 literal, each character must be either 0-7.
The maximum length allowed for a CHARACTER variable is 32767.
This is an E-level message because RULES(NOLAXDCL) has been specified.
An E in a FLOAT constant must be followed by at least one decimal digit (optionally preceded by a sign).
Each block should contain no more than 31 DEFAULT predicates.
The LBOUND, HBOUND, and DIMENSION built-in functions require two arguments when applied to arrays having more than one dimension.
dcl a(5,10) fixed bin; do i = 1 to lbound(a);
The DIMENSION, HBOUND and LBOUND built-in functions require that the second argument be positive.
The second argument to the LBOUND, HBOUND, and DIMENSION built-in functions must be no greater than the number of dimensions of their array arguments.
dcl a(5,10) fixed bin; do i = 1 to lbound(a,3);
Level 1 variable names must not be repeated in the same block.
dcl a fixed bin, a float;
The precision attribute must be specified only once in a declare.
dcl a fixed(15) bin(31);
The variable names at any given sublevel within a structure or union must be unique.
dcl 1 a, 2 b fixed, 2 b float;
Attributes like INITIAL must not be repeated for an element of a DECLARE statement.
dcl a fixed init(0) bin init(2);
Attributes must be consistent.
dcl a fixed real float;
The external name should contain some nonblank characters.
dcl x external( ’ ’ );
WX literals must represent unicode strings and hence must contain a multiple of 4 hex digits.
x = ’00’wx;
ELSE clauses are valid immediately after an IF-THEN statement.
do; if a > b then; end; else a = 0;
END statements for groups with a subscripted label must have labels that are also subscripted.
a(1): do; ... end a;
A Label on END statement must match a LABEL on an open BEGIN, DO, PACKAGE, PROCEDURE, or SELECT statement.
a: do; ... end b;
After an OTHERWISE unit in a SELECT statement, only an END statement is valid.
select; when ( ... ) do; end; otherwise do; end; display( .... );
There was a conflict detected in the ENVIRONMENT options specification. In the example ENV(CONSECUTIVE INDEXED), the INDEXED option conflicts with the CONSECUTIVE option.
During the conversion of a user expression during the compilation, the target string was found to be shorter than the source, thus causing the STRINGSIZE condition to be raised.
If all the arguments in a SUBSTR reference are constants or restricted expressions, the reference will be evaluated at compile- time and the STRINGRANGE condition will occur if the arguments do not comply with the rules described for the SUBSTR built-in function.
a = substr( ’abcdef’, 5, 4 );
LEAVE/ITERATE statements for groups with a subscripted label must have labels that are also subscripted.
a(1): do; ... leave a;
LEAVE/ITERATE must specify a label on an open DO loop in the same block as the LEAVE/ITERATE statement.
a: do loop; begin; leave a;
ITERATE/LEAVE statements are valid only inside DO groups.
a: begin; ... leave a; ... end a;
Names in the EXPORTS clause of a package statement must be unique.
a: package exports( a1, a2, a1 );
Each name in the EXPORTS clause of a package statement must be the name of some level-1 procedure in that package.
a: package exports( a1, a2, a3 );
An asterisk may be used only for structure or union names, or for members of structures or unions. An asterisk may not be used for a level-1 structure name that specifies the LIKE attribute.
dcl * char(20) static init(’who can use me’);
If the parameter is EBCDIC or has the attribute NONNATIVE, unpredictable results can occur.
If the parameter is ASCII or has the attribute LITTLEENDIAN, unpredictable results can occur. This message applies only to SYSTEM(MVS) etc.
The I in an iSUB token must represent a valid dimension number.
dcl b(8) fixed bin def(0sub,1);
The I in an iSUB token must have only 1 or 2 digits.
dcl b(8) fixed bin def(001sub,1);
A width must be specified on A, B, and G format items when specified on a GET statement.
get edit(name) (a);
All array bounds in generic descriptions must be asterisks.
dcl x generic ( e1 when( (10) fixed ), ...
All string lengths and area sizes in generic descriptions must be asterisks.
dcl x generic ( e1 when( char(10) ), ...
Any ENTRY attribute in a generic description list must not be qualified with an entry description list.
dcl x generic ( e1 when( entry( ptr ) ), ...
The maximum length allowed for a GRAPHIC variable is 16383.
GX literals must represent graphic strings and hence must contain a multiple of 4 hex digits.
x = ’00’gx;
A variable has been declared with an upper bound that is less than its lower bound. The upper and lower bounds will be swapped in order to correct this. For example, DECLARE x(3:1) will be changed to DECLARE x(1:3).
The maximum length of an identifier is set by the NAME suboption of the LIMITS compiler option.
An argument containing BIT data has been found in a call to a COBOL routine. Mapping of such structures between PL/I and COBOL is not supported.
dcl f ext entry options( cobol ); dcl 1 a, 2 b bit(8), 2 c bit(8); call f( a );
An argument containing UNION data has been found in a call to a COBOL routine. Mapping of such structures between PL/I and COBOL is not supported.
dcl f ext entry options( cobol ); dcl 1 a union, 2 b char(4), 2 c fixed bin(31); call f( a );
An argument containing non-constant extents has been found in a call to a COBOL routine. Mapping of such structures between PL/I and COBOL is not supported.
dcl f ext entry options( cobol ); dcl n static fixed bin init(17); dcl 1 a, 2 b char(n), 2 c fixed bin(31); call f( a );
The suboption should be specified as ARGn where "n" is an integer greater than 0.
dcl f ext entry options( cobol nomap(arg0) );
NOMAP, NOMAPIN and NOMAPOUT are valid only for COBOL, FORTRAN and ASM Procedures and Entrys.
The level-1 DECLARE statement may be missing.
dcl 2 a, 3 b, 3 c,
This is required to avoid ambiguities. For example, it is unclear whether all of the elements should be initialized with the value 4 or if the first element should be initialized with the value 9.
dcl a(5) fixed bin init( (5)+4 );
There is no language element of the form 1su.
dcl a(10) def b(1su, 1sub );
In a BINARY constant, each digit must be a zero or one.
In a BIT literal, each character must be either zero or one.
The indicated character is not part of the PL/I character set. This can occur if a program containing NOT or OR symbols is ported from another machine and those symbols are translated to a character that is not part of the PL/I character set. Using the NOT and OR compiler options can help avoid this problem.
In a hex literal, each character must be either 0-9 or A-F.
The statement entered could not be parsed because the specified element is invalid.
Under LANGLVL(SAA), identifiers must start with an alphabetic character or with one of the extralingual characters. They may not start with an underscore. Under LANGLVL(SAA2), identifiers may start with an underscore, although names starting with _IBM are reserved for use by IBM.
A reference of the form x(1)(2).y.z is invalid.
A reference of the form x().y.z is invalid.
The indicated character is not part of the PL/I character set, but was immediately followed by the same character. This can occur if a program containing an OR symbol is ported from another machine and this symbol is translated to a character that is not part of the PL/I character set. Using the OR compiler option can help avoid this problem.
The indicated character is not part of the PL/I character set, but was immediately followed by an =, < or > symbol. This can occur if a program containing a NOT symbol is ported from another machine and this symbol is translated to a character that is not part of the PL/I character set. Using the NOT compiler option can help avoid this problem.
This applies to the ROUND built-in function. The non-positive value will be changed to 1.
dcl x float bin(53); x = round( x, -1 );
The names must be in ascending order.
default range( h : a ) fixed bin;
The name of a FORMAT constant cannot be used as the name of a LABEL constant as well.
f(1): format( a, x(2), a ); f(2): ;
The name of a LABEL constant cannot be also used as the name of a FORMAT constant.
f(1): ; f(2): format( a, x(2), a );
Declarations for label constant arrays are not permitted.
dcl a(10) label variable; a(1): ... a(2): ...
The maximum structure level supported is 255.
dcl 1 a, 256 b, 2 c,
A structure level is probably missing.
dcl a, 2 b, 2 c,
To determine if a statement is an assignment or another PL/I statement, many elements of the statement may need to be examined. If too many have to be examined, the compiler will flag the statement as in error. For instance, the following statement could be a DECLARE until the equal sign is encountered by the lexer.
dcl ( a, b, c ) = d;
LIKE cannot be specified on a parent structure or union.
dcl 1 a like x, 2 b, 2 c,
A WHEN or OTHERWISE may be missing.
select; i = i + 1; when ( a > 0 ) ...
The named attribute is valid only on parent structures.
dcl 1 a, 2 b union, 2 c1 fixed bin(31), 2 c2 float bin(21), ...
OPTIONS(MAIN) may be specified for only one PROCEDURE in a PACKAGE. All but the first specification will be ignored.
Extents must be positive.
dcl x char(-10);
Under the option RULES(NOLAXQUAL), all structure elements should be qualified with the name of at least one of their parents.
The EXTERNAL attribute is valid only on external procedures and entrys: for example, in a non-package, only on the outermost procedure and entry statements contained in it, and in a package, only on the procedures and entrys listed in the EXPORTS clause of the PACKAGE statement.
a: proc; b: proc ext(’_B’);
Under the RULES(NOLAXDCL) option, all variables must be declared except for contextual declarations of built-in functions, SYSPRINT and SYSIN.
Only those contextual attributes that can be applied to a parameter will be applied. For example, CONSTANT and EXTERNAL, which apply to contextual file declarations, will not be applied to file parameters.
a: proc( f ); open file( f );
The number of bits, characters or graphics needed for a DEFINED variable must be no more than in the base variable.
dcl a char(10); dcl b char(5) defined ( a ) pos( 8 );
Only attributes can be factored into declaration lists.
dcl 1 a, 2 ( b, 3 c, 3 d ) fixed;
Scale factors are valid only for FIXED values.
x = binary(1e0,4,2);
GENERIC entry references are not allowed to contain an arguments or subscripts list.
dcl t generic( sub1(10) when((*)), sub2 when((*,*)) );
GENERIC references cannot be locator-qualified.
dcl x generic ( ... ); call p->x;
In an assignment to a structure, some element of the structure must have the assignable attribute.
dcl 1 a based, 2 nonasgn fixed bin, 2 nonasgn fixed bin; p->a = 0;
If a BIT structure (or union) is defined on a variable that is not aligned on a byte boundary, unpredictable results may occur. This is especially true if a substructure of the DEFINED variable is passed to another routine.
FORMAT variables require block activation information; they cannot be initialized at compile-time. If the variable were a member of a structure, the storage class would not be changed to AUTOMATIC, and a severe message would be issued instead.
Labels are not permitted on DECLARE, DEFAULT, and DEFINE statements or on WHEN and OTHERWISE clauses.
This message is used to report back end error messages.
The base variable in the DEFINED attribute must consist of UNALIGNED, NONVARYING string variables of the same string type as the DEFINED variable.
When one bit variable is defined on a second (the base), the base may be an array, but it must not be subscripted.
dcl a(20) bit(8) unaligned; dcl b bit(8) defined( a(3) );
A parameter can have * extents only if a descriptor is also passed. The NODESCRIPTOR attribute will be ignored, and descriptors will be assumed to have been passed for all array, structure and string arguments.
a: proc( x ) options(nodescriptor); dcl x char(*);
A parameter can have the NONCONNECTED attribute only if a descriptor is also passed.
a: proc( x ) options(nodescriptor); dcl x(20) fixed bin nonconnected;
The BUILTIN attribute can be applied only to identifiers that are the names of built-in functions or subroutines.
This message is used by %NOTE statements with a return code of 8.
An end-of-comment marker is probably missing.
A closing quote is probably missing.
The indicated element of the options list is invalid.
dcl a file options( assembler );
The indicated element of the options list is invalid for BEGIN blocks (although it may be valid for PROCEDUREs).
begin options( assembler );
The indicated element of the options list is invalid for PACKAGEs (although it may be valid for PROCEDUREs).
a: package exports(*) options( assembler );
The indicated element of the options list is invalid for PROCEDUREs (although it may be valid for ENTRYs).
a: procedure options( inter );
The indicated element of the options list is invalid for nested PROCEDUREs (although it may be valid for PROCEDUREs).
a: proc; b: proc options( main );
The indicated element of the options list is not a supported option in any statement or declaration.
a: proc options( unknown );
The indicated element of the options list is invalid for ENTRY statements (although it may be valid for PROCEDUREs).
a: entry options( chargraphic );
The elements of the options list must be consistent, unlike in the example where BYVALUE and BYADDR conflict.
a: proc options( byvalue byaddr );
Parameter attributes, such as BYVALUE or CONNECTED, may be specified only for parameters.
a: proc; dcl x byvalue ptr;
The POSITION attribute must specify a positive value.
dcl a def b pos(-10);
The source should contain END statements for all PACKAGEs, PROCEDUREs, BEGIN blocks, DO groups, and SELECT statements, as well as statements for all IF-THEN and ELSE clauses.
Declarations for internal procedures are not permitted.
a: proc; dcl b entry options(byvalue); b: proc;
A function can return only one value.
dcl b entry returns( ptr, ptr );
The string represented by a repetition factor applied to another string must conform to the same limits imposed on strings without repetition factors.
a = (32767) ’abc’;
Scale factors must lie between -128 and 127 inclusive.
Scale factors must lie between -128 and 127 inclusive.
A WHEN or OTHERWISE clause has been found outside of a SELECT statement.
An END statement enclosing a statement such as DO or SELECT has been found before the statement required after ELSE.
do; if a > b then ... else end;
An END statement enclosing a statement such as DO or SELECT has been found before the statement required after ON condition.
do; ... on zdiv end;
An END statement may be misplaced or a semicolon may be missing.
An END statement may be misplaced or a semicolon may be missing.
An END statement may be misplaced or a semicolon may be missing.
The source file contains statements after the END statement that closed the first PACKAGE or PROCEDURE. These statements will be ignored, but their presence may indicate a programming error.
Subscripts can be specified only for elements of an array.
Otherwise the STRINGRANGE condition would be raised.
Otherwise the STRINGRANGE condition would be raised.
Otherwise the STRINGRANGE condition would be raised.
The maximum K constant is 2097151K, and the maximum M constant is 2047M.
The maximum number of dimensions allowed for a variable, including all inherited dimensions, is 15.
A block should contain no more than 500 LIKE references. Under LANGLVL(SAA2), there is no limit.
All AREA variables must be ALIGNED.
An */ was found when there was no open comment.
See the :cit.Language Reference Manual:ecit. for the list of supported compiler directives.
Structure level numbers must be positive.
Numeric precisions must be positive.
An X literal may not contain an odd number of digits.
In DCL 1 a BASED, 2 b FIXED BIN INIT(3), 2 c( n REFER(b)), the initial clause for ’b’ is invalid and will be ignored.
If an ORDINAL type is declared with the UNSIGNED attribute, any INITIAL values specified must be nonnegative.
An ORDINAL type must have a precision larger enough to cover the range of values defined for it.
define ordinal colors ( red init(0), orange init(256) yellow init(512) ) unsigned prec(8);
An ORDINAL type may be defined only once in any block.
Names in the RESERVES clause of a package statement must be unique.
a: package reserves( a1, a2, a1 );
Each name in the RESERVES clause of a package statement must be the name of some level-1 static external variable in that package.
a: package reserves( a1, a2, a3 );
Precision values must be positive.
middle = divide( todo, 2, 0 );
Scale factors must be between -128 and 127 inclusive.
f = fixed( i, 15, 130 );
The maximum FIXED BINARY precision supported allowed depends on the FIXEDBIN suboption of the LIMITS option.
i = signed( n, 63 );
More arguments were specified in an ENTRY reference than were defined as parameters in that ENTRY’s declaration.
dcl e entry( fixed bin ); call e( 1, 2 );
More arguments were specified for the indicated built-in function than are supported by that built-in function.
i = acos( j, k );
In a comparison of two ENTRY variables or constants, the ENTRY and RETURNS description lists should match. The linkages must also match.
dcl e1 entry( fixed ), e2 entry( float ); if e1 = e2 then
In an assignment of an ENTRY variable or constant, the ENTRY and RETURNS description lists for the source should match those of the target. The linkages must also match.
dcl e1 variable entry( fixed ), e2 entry( float ); e1 = e2;
When initializing an ENTRY variable or constant, the ENTRY and RETURNS description lists for the source should match those of the target. The linkages must also match.
dcl e1 variable entry( fixed ); dcl e2 variable entry( float ) init( e1 );
When a function returns an ENTRY variable or constant, the ENTRY and RETURNS description lists in the returned ENTRY reference should match those in the containing procedure’s RETURNS option. The linkages must also match.
a: proc returns( entry( float ) ); dcl e1 entry( fixed ); return( e1 );
This message also occurs if the linkages do not match.
dcl a entry( entry( float ) ); dcl e1 entry( fixed ); call a( e1 );
Otherwise the STRINGRANGE condition would be raised.
In PL/I statements, hex literals should be specified with an X suffix.
In the SAA level-1 language definition, extents in BASED variables must all be constant except where the REFER option is used. The following would be invalid
dcl x based char(n);
Type functions are not part of the SAA level-1 language.
The indicated keyword (UNSIGNED in the example below) is not defined in the SAA level-1 language.
dcl x fixed bin unsigned;
The definition of the SAA level-1 language does not include S, D, and Q floating-point constants.
The definition of the SAA level-1 language does not permit using underscores in numeric and hex constants.
The definition of the SAA level-1 language does not permit using asterisks for structure element names.
The definition of the SAA level-1 language does not include XN and XU constants.
Under LANGLVL(SAA), the DATETIME built-in function cannot have any arguments.
s = datetime(’DDMMYYYY’);
Under LANGLVL(SAA), the VERIFY and INDEX built-in functions are supposed to have exactly 2 arguments.
i = verify( s, j, k );
Under LANGLVL(SAA), the DIM, LBOUND and HBOUND built-in functions are supposed to have 2 arguments.
i = dim( a );
Under RULES(NOGOTO), there should be no GOTO statements in your source program.
The AUTOMATIC variables in a block may be used in the declare statements and the executable statements of any contained block, but in the block in which they are declared, they should be used only in the executable statements.
dcl x fixed bin(15) automatic; dcl y(x) fixed bin(15) automatic;
RULES(IBM) allows scaled FIXED BIN, but RULES(ANS) supports it only for FIXED DECIMAL. RULES(ANS) will ignore the scale factors in the following declares
dcl x fixed bin(31,16); dcl y entry( fixed bin(31,16) );
RULES(IBM) allows scaled FIXED BIN, but RULES(ANS) supports it only for FIXED DECIMAL. RULES(ANS) will ignore the scale factors in the following built-ins
dcl (x,y) fixed bin(15,0); put list( add(x,y,31,2) ); put list( bin(x,31,2) ); put list( prec(x,31,2) );
In a comparison, if one comparand has the DATE attribute, the other should also. If the non-date is an expression that could have a value that is valid for the date pattern, it will be viewed as if it had the same DATE attribute as the date comparand.
Comparisons are the only infix operations where operands with the DATE attribute may be used. If they are used in any other operation, the DATE attribute will be ignored. So, in the following code, the addition will be flagged and the DATE attribute ignored.
dcl x char(5) date(’YYDDD’); put list( x + 1 );
In a comparison, if one comparand has the DATE attribute, the other should also. If the non-date is an expression that could not have a value that is not valid for the date pattern, the DATE attribute will be ignored.
If the target in an assignment has the DATE attribute, the source should also. If the target is a pseudovariable, message 1466 is issued instead.
dcl x char(6); x = date();
If the source in an assignment has the DATE attribute, the target should also.
If an INITIAL expression has the DATE attribute, the target should also.
The argument and parameter should match, unlike in the example below
dcl x entry( char(6) ); call x( date() );
The attributes of the RETURNed expression and in the RETURNS option should match, unlike in the example below
x: proc returns( char(6) ); ... return( date() );
No other options are valid for the INCLUDE preprocessor.
The INCLUDE preprocessor ID option must have one suboption consisting of a string specifying the INCLUDE directive.
The suboption specified for the INCLUDE preprocessor ID option must be closed with a right parenthesis.
A statement that starts with the preprocessor INCLUDE directive specified in that preprocessor’s ID option must be followed by a name and, optionally, a semicolon.
If the target in an assignment has the DATE attribute, the source should also. If the target is a pseudovariable, message 1475 is issued instead.
dcl x char(6) date(’YYMMDD’); x = ’’;
If the target in an assignment has the DATE attribute, the source should also.
If a variable has the DATE attribute, then any INITIAL value for it should also.
The argument and parameter should match, unlike in the example below
dcl x entry( char(6) date(’YYMMDD’) ); call x( ’’ );
The attributes of the RETURNed expression and in the RETURNS option should match, unlike in the example below
x: proc returns( char(6) date(’YYMMDD’) ); ... return( ’’ );
Under RULES(NOMULTICLOSE), there should be no multiple closure of groups in your source program.
Under RULES(NOBYNAME), there should be no BYNAME assignment statements in your source program.
It will be given the default attributes, but this may be because of an error in the declare. For instance, in the following example, parentheses may be missing. Under RULES(LAXDCL), this is a W-level message.
dcl a, b fixed bin;
It will be given the default attributes, but this may be because of an error in the declare. For instance, in the following example, the level number on c and d should probably be 3. Under RULES(LAXDCL), this is a W-level message.
dcl a, b fixed bin; 1 a, 2 b, 2 c, 2 d;
It will be given the default attributes, but this may be because of an error in the declare. For instance, in the following example, the level number on c and d should probably be 3. Under RULES(LAXDCL), this is a W-level message.
dcl a, b fixed bin; 1 a, 2 *, 2 c, 2 d;
Look in STDOUT to see the message issued by the compiler backend.
The indicated character is missing and has been inserted by the parser in order to correct your source. Under RULES(LAXPUNC), a message with the same text, but lesser severity would be issued
xx: dcl test fixed bin;
The amount of storage needed for a BASED variable must be no more than provided by its base variable.
dcl a char(10); dcl b char(5) based(addr(a));
When the NOPROCESS option is in effect, the source should contain no PROCESS statements.
The amount of storage needed for a BASED variable must be no more than provided by its base variable.
dcl 1 a, 2 a1 char(10), 2 a2 char(10); dcl b char(15) based(addr(a2));
Under RULES(NOEVENDEC), there should be no FIXED DECIMAL data declared with an even precision.
dcl a fixed dec(10);
In DEFAULT statements, numeric precisions should be specified only inside VALUE clauses.
dft range(*) fixed bin(31);
In DEFAULT statements, lengths of strings should be specified only inside VALUE clauses.
dft range(*) bit(8);
In DEFAULT statements, sizes of AREAs should be specified only inside VALUE clauses.
dft range(*) area(10000);
All RETURN statements inside functions must specify a value to be returned.
a: proc returns( fixed bin ); return;
Functions must contain at least one RETURN statement.
The STRINGOFGRAPHIC( CHARACTER ) option will be ignored if the argument contains any elements that are VARYING or if the argument is a NONCONNECTED slice of an array.
If a procedure contains a RETURN statement, it should have the RETURNS attribute specified on its PROCEDURE statement.
a: proc; return( 0 ); end;
Attributes must be consistent.
dcl a fixed based connected;
The specified options conflict and cannot be used together. On ASCII systems, the compiler will produce this message if you specify the GRAPHIC and EBCDIC options. Conversely, on EBCDIC systems, the compiler will produce this message if you specify the GRAPHIC and ASCII options.
The indicated APAR will fix a compiler problem with this statement.
When the LINEDIR option is in effect, only the NOSEPARATE suboption of the TEST option is supported.
In FETCHABLE code, all CONTROLLED variables should be parameters.
Under RULES(NOUNREF), the compiler will issue this message for any level-1 AUTOMATIC variable that is not referenced.
The HGPR option will be ignored unless the ARCH option is 5 or greater since the necessary instructions are available only with ARCH(5) or later.
The FLOAT(DFP) option will be ignored unless the ARCH option is 7 or greater since the necessary instructions are available only with ARCH(7) or later.
In an ENDFILE block for a file, it is invalid to close that file in the ENDFILE block.
Under the FLOAT(DFP) option, all FLOAT DECIMAL will be treated as DFP and may not be declared as HEXADEC. The attribute is still valid for FLOAT BIN.
Under the FLOAT(DFP) option, all FLOAT DECIMAL will be treated as DFP and may not be declared as IEEE. The attribute is still valid for FLOAT BIN.
Scale factors are valid only in declares of FIXED BIN or FiXED DEC. The first declaration below is invalid and should be changed to one of the subsequent declarations.
dcl a1 float dec(15,2); dcl a2 fixed dec(15,2); dcl a3 float dec(15);
Under RULES(NOELSEIF), the compiler will issue this message for statement where an ELSE is immediately followed by an IF statement.
The nesting of DO statements has exceeded the value specified in the DO suboption of the MAXNEST compiler option.
The nesting of IF statements has exceeded the value specified in the IF suboption of the MAXNEST compiler option.
The nesting of PROC and BEGIN statements has exceeded the value specified in the BLOCK suboption of the MAXNEST compiler option.
The use of the CMPAT(V3) option with LIMITS(FIXEDBIN(31,31)) is not supported. Since CMPAT(V3) will cause various built-in functions (such as HBOUND) to return a FIXED BIN(63) result, at least the second value in the FIXEDBIN suboption of LIMITS must be 63 (i.e. LIMITS(FIXEDBIN(31,63)) or LIMITS(FIXEDBIN(63,63)) must be in effect).
If the file has F format and is not a PRINT file, then the LINESIZE must be no greater than the RECSIZE. If the file has F format and is a PRINT file, then the LINESIZE must be less than the RECSIZE. If the file has V format and is not a PRINT file, then the LINESIZE must be no greater than the RECSIZE-4. If the file has V format and is a PRINT file, then the LINESIZE must be less than the RECSIZE-4.
The specified option is not permitted with the GOFF option, and the GOFF option will be turned off so that the compile may proceed. This applies, for example, to the NOWRITABLE(PRV) and COMMON options.
The INITIAL attribute, for example, is invalid with parameters (since their storage will have been allocated elsewhere).
dcl a fixed bin parameter initial( 0 );
The INITIAL attribute, for example, is invalid with DEFINED variables (since their storage will have been allocated elsewhere).
dcl b char(1) initial( ’’ ) defined(a);
Under RULES(NOLAXENTRY), all ENTRY declares must be prototyped. If the ENTRY should have no parameters, it should be declared as ENTRY() rather than as simply ENTRY.