This chapter describes diagnostic messages for the SAS/C mainframe Compiler and SAS/C Cross-Platform Compiler. Most of the Cross-Platform Compiler messages, which are generated on a workstation running under UNIX, are identical to those generated by the SAS/C Compiler on the mainframe.
Diagnostic messages include numbered and unnumbered messages that are produced during the three phases of the compiler. All lexical and syntax diagnostics are produced by phase 1 of the compiler, and code generation diagnostics are produced by phase 2. Messages containing the text CXERR are compiler internal errors and are not described in this chapter.
The Cross-Platform Compiler return codes, unlike those of the mainframe
compiler, have been chosen to be compatible with traditional UNIX program
development tools such as make.
If the return code is a nonzero
integer, an error occurred; if it is zero, no error occurred.
Cross-platform warning messages do not affect the return code. If the
-mrc option is specified, the return code is the same as would be
found on the mainframe.
Message levels ERROR and WARNING can be
controlled by compiler options. For example, the enforce option (SAS/C
mainframe Compiler) or -w~n option (SAS/C Cross-Platform Compiler)
can be used to turn any WARNING into an ERROR. Similarly, the suppress or
-wn option can be used to make any phase 1 WARNING
disappear. This chapter describes the default message level (that is,
no options affect the message level).
When the compiler detects an error in an input file, it generates a diagnostic for numbered messages in the following form:
message-number Error in file at line line-number before column column-number : message-textwhere
#include file.
Sometimes recovery from a single error may produce a succession of subsequent errors in a cascade effect. You should attempt to correct the obvious error or errors first and not be overly concerned about subsequent error messages for apparently valid source lines.
suppress or -wn option cannot be
used to ignore phase 2 error and warning messages.
suppress or -wn option
cannot be used to ignore these error and warning messages.
Note: The LSCC prefix that appears when a diagnostic message is generated has been omitted in the following descriptions. Additionally, SAS/C Compiler and SAS/C Cross-Platform messages are not always identical, so the exceptions are noted in the explanatory text.
WARNING: Invalid preprocessor command.
ERROR: Invalid preprocessor command.
sizeof keyword or any cast expression in a
#if command is used. Such uses are non-ISO/ANSI.
ERROR: Unexpected end of file.
#include file or the original source file. In many
cases, correcting a previous error eliminates this
error.
ERROR: File not found file-name.
#include command
was not found.
ERROR: Invalid lexical token.
ERROR: Invalid macro usage: macro-name
#define macro was used with the
wrong number of arguments.
WARNING: Large (possibly non-portable) expansion for macro: macro-name.
#define macro caused the compiler's expansion
buffer to overflow. This error may occur if more than one lengthy macro
appears on a single input line, or if a macro call is ill-formed by
having too few right parentheses. In the following example, if MAC is a macro taking two arguments and a right parenthesis is omitted
in its call, the preprocessor will continue past the semicolon,
believing that it is still gathering arguments for the macro:
MAC(f(1),f(2);Although there is no fixed buffer size, an expansion that requires more space than the longest logical line occurring thus far in the compilation may cause buffer overflow. This error rarely occurs.
WARNING: #include nesting level exceeded n-levels.
#include file nesting was exceeded.
ERROR: Invalid conversion.
ERROR: Undefined identifier symbol.
int (which may cause other errors).
ERROR: Invalid subscript expression.
ERROR: String too large or not terminated.
ERROR: Invalid structure reference.
.) or
structure (->) reference operator was not recognized by the compiler as a
structure or pointer to a structure.
ERROR: Member name missing.
.) or structure (->) operator.
ERROR: Undefined member symbol.
.) or structure (->)
reference operator referred.
ERROR: Invalid function call.
( function call operator
was not implicitly or explicitly declared as a function.
ERROR: Invalid function argument.
( function call operator. This error may occur if an argument
expression is omitted as in the following:
f(; f(.); f(,1);
ERROR: Too many operands.
ERROR: Unresolved operator.
ERROR: Unbalanced parentheses.
ERROR: Invalid constant expression.
ERROR: Illegal use of struct, union or array type.
WARNING: Floating point value assigned to shorter type.
enforce option (or cross-platform
-w~n option) is specified.
ERROR: Invalid use of conditional operator (?:).
?) operator
is present, but the colon (:) is not found where expected.
ERROR: Pointer operand required.
ERROR: Modifiable lvalue required.
const) is a modifiable lvalue. This error may occur if
the expression following & is not a modifiable lvalue or if the
left side of an assignment expression is not a modifiable lvalue. Note
that a cast does not yield a modifiable lvalue.
ERROR: Arithmetic operand required.
ERROR: Arithmetic or pointer operand required.
ERROR: Missing operand.
ERROR: Operation cannot be performed on a pointer.
X was never defined:
struct X *p; . . . p++;
WARNING: Pointers do not point to same type of object.
=) operator did not
evaluate to a pointer of the same type as the assigned or NULLpointer variable.
The warning also occurs when a pointer of any type is assigned
to an arithmetic object.
The same message is generated as an ERROR when
an expression initializes a pointer to an
int (or vice versa), or during a pointer comparison operation.
ERROR: Integral operand required.
char, int, short,
long, unsigned char, unsigned int, unsigned short, or unsigned long.
WARNING: Cannot convert to required type.
ERROR: Illegal initializer expression.
extern variable that has been
declared in function (or inner block) scope, as this example
illustrates:
func() extern int count = 0; . . .
ERROR: Invalid initializer expression.
char a [10] = 0; char b [3] = 1 2 3;
ERROR: Closing brace expected.
WARNING: Control cannot reach this statement.
return, continue, or goto precipitating an unconditional
transfer of control; code within a switch block that was not reachable via a
case or default statement.
ERROR: Duplicate statement label symbol. See line line-number file file-name.
ERROR: Unbalanced braces.
{) and closing right braces (}) was not equal.
The compiler may have been out of phase because of a previous
error.
ERROR: Invalid use of keyword symbol.
ERROR: Break not inside loop or switch.
break statement was detected that was not within
the scope of a while, do, for, or
switch statement. This error
may be caused by an error in a preceding statement.
ERROR: Case not inside switch.
case prefix was encountered outside the scope of
a switch statement. This error
may be caused by an error in a preceding statement.
WARNING: Case expression not integral.
case value did not
evaluate to an integral constant.
ERROR: Duplicate case value. See line line-number file file-name.
case prefix was encountered that defined a
constant value already used in a previous case prefix
within the same switch statement.
ERROR: Continue not inside loop.
continue statement was detected that was not
within the scope of a while, do, or for loop.
This message may be caused by an error in a preceding
statement.
ERROR: Default not inside switch.
default prefix was encountered outside the scope
of a switch statement. This message may be caused by an error
in a preceding statement.
WARNING: Duplicate default. See line line-number file file-name.
default prefix within the scope
of a switch statement that already contained a default prefix.
ERROR: While missing from do statement.
while clause was expected but not found after the body of a
do statement. This message may
be caused by an error within the body of the
do statement.
ERROR: Invalid while expression.
while or do loop was NULL (not present).
Indefinite loops must supply a constant, such as 1, if that is
what is intended.
ERROR: Else not associated with if.
else keyword was detected that was not within
the scope of a preceding if statement. This message
may be caused by an error in a preceding statement.
ERROR: label missing from goto.
goto keyword was
expected but not found.
This message may be caused by an error in a preceding statement.
ERROR: Invalid if expression.
if keyword was not present.
ERROR: Invalid return expression.
return keyword could
not be converted to the type of the value returned
by the function.
WARNING: Switch expression not integral.
switch statement could not be converted to an
integral type.
WARNING: Invalid switch expression.
switch statement
did not contain at least one case prefix.
ERROR: Colon expected.
:), but did not find one. This
error may be generated if a case expression is improperly
specified or if the colon was omitted following a label or prefix to a
statement.
ERROR: Semi-colon expected.
;). Typically, the compiler
completed the processing of a statement but did not find
the statement terminator. This error may be caused by too
many closing parentheses, too few closing braces, or a statement
that is otherwise formed incorrectly.
ERROR: Missing parentheses.
while or for keyword. This error
may also occur if a parenthesized expression is incorrectly specified,
causing the compiler to end the expression early.
ERROR: Invalid storage class.
auto or register. This
message may be generated if previous errors have caused the compiler
to misinterpret statements within a function as file-scope
declarations.
ERROR: Incompatible struct, union or array types.
WARNING: Undefined struct/union tag symbol.
strict option
(or cross-platform -W1,-ll option) is used.
ERROR: Structure/union type mismatch.
WARNING: Item item-name already declared. See line line-number file file-name.
__actual declarations of an
__inline function are encountered.
ERROR: Structure contains no members.
ERROR: Invalid function definition.
WARNING: Invalid array limit expression.
ERROR: Illegal object.
ERROR: Illegal object for structure.
ERROR: Structure includes instance of self.
*) is forgotten on a structure pointer declaration
or if (due to some intertwining of structure definitions) the structure
actually contains an instance of itself.
ERROR: Formal declaration error symbol.
WARNING: Conflict with prior declaration of external: symbol. See line line-number file file-name.
int function returns
some other kind of value. Functions that return a value other than
int must be declared before they are used so that the compiler
is aware of the type of the function value.
This message is issued as a warning if the type mismatch is harmless,
for example, int/long, const/volatile, or
char/unsigned char. The message is issued as an error if the
mismatch is harmful.
ERROR: Declaration expected.
WARNING: Initializer data truncated.
char or wchar_t was initialized from a
string literal, but the literal contained more characters (not including
the ending null character) than the size of the array. The excess characters
were discarded.
ERROR: Invalid sizeof expression.
sizeof.
This message also may be generated if
an attempt is made to take the size of a structure via
a tag that has not been defined, or if an attempt is made
to take the size of a function, bitfield, or incomplete type.
ERROR: Left brace expected.
ERROR: Identifier expected.
ERROR: Undefined statement label symbol.
goto statement
referred to a statement label but the compiler
could not find the definition of the label.
WARNING: Duplicate enumeration value in line line-number.
WARNING: Invalid bitfield or misplaced.
int)
ERROR: Pre-processor symbol loop (macro expansion too long or circular).
ERROR: Maximum object/storage size exceeded. Size limit for this class is max-size.
WARNING: Reference beyond object size.
WARNING: Redefinition of pre-processor symbol symbol. See line line-number file file-name.
#define
statement for an already-defined
symbol. The symbol and the new statement specified a different replacement text
(that is, it was a nonbenign redefinition).
A warning is issued unless the redef compiler option
(or cross-platform -W1,-cr option) is
specified. In that case, the previous declaration is stacked and
reappears when a #undef statement for the symbol appears. The
warning message is suppressed unless the enforce or strict
option (or cross-platform -w~n or -W1,-ll
option) is specified.
WARNING: Return value mismatch found for function function-name. See line line-number file file-name.
WARNING: Formal definitions conflict with type list. See line line-number file file-name.
WARNING: Argument count incorrect, expecting arg-count arguments. See line line-number file file-name.
WARNING: Argument type incorrect. Expecting arg-type, found arg-type.
char to int, is needed.
WARNING: Constant converted from const-type to const-type.
ERROR: Invalid argument type specifier.
void).
ERROR: Illegal void operand.
void operand was found in a context where a value is required.
WARNING: Statement has no effect.
x+2;Although this statement is a valid C statement, it may not be what the programmer intended to write.
WARNING: No reference to identifier symbol.
auto variable named in the message was declared but never
used. Although this is valid C, it may not be what the programmer
intended. Perhaps another variable was used where this one should have
been used.
WARNING: Uninitialized auto variable symbol.
auto variable appeared to be used before it
was assigned a value. This message may be generated for correct code,
if at execution time non-sequential execution (possibly using goto or for statements) would cause the variable to be
initialized before any use. Note that if the variable is inspected
before it is initialized, its value is undefined.
Although uninitialized variables often, by chance, have the
value 0, this is not (for auto variables) guaranteed by the
ANSI/ISO Standard language definition. Changing the program or moving the program
to another system can change the value and cause undefined program
behavior.
WARNING: Symbol previously mapped.
#pragma map statement has already
been mapped by a previous #pragma map statement. The first
#pragma map statement takes precedence.
WARNING: New pragma map symbol longer than 8 characters; truncated.
WARNING: Mapped name may conflict with other compiler-generated external names.
WARNING: The line number in a #line directive is zero or greater than 32767. Possible portability problem.
#line directive is zero or greater than 32767.
The ANSI C standard permits only line numbers
in the range of 1 to 32767. This condition may be considered to be an error
by other ANSI conforming compilers.
ERROR: Attempt to change a const lvalue.
const cannot be
changed. Either the program uses the identifier incorrectly, or the
const type qualifier should be removed from the declaration.
WARNING: No prototype declared for function symbol.
reqproto option
(or cross-platform -W1,-cf option) is in
effect. No prototype is in scope for the function at the time that
a call is made to the function.
ERROR: Redundant keywords in declaration.
xyz is declared as long long xyz.
ERROR: Conflicting keywords in declaration.
short long xyz contains conflicting type
specifiers. The declaration extern static xyz contains
conflicting storage-class specifiers.
WARNING: Uninitialized constant symbol.
auto or register const variable was not initialized.
Constant values should be initialized at compile time since they cannot
be changed at execution time, and their values will be unpredictable
if they are not initialized.
WARNING: Conversion from pointer to const/volatile to pointer to non-const/volatile.
const object to
a pointer to a non-const object, or from a pointer to a
volatile object to a pointer to a non-volatile object.
If a pointer to non-const is used to modify an object
declared as const, a protection exception or other
incorrect results may occur. If a pointer to non-volatile
is used to access an object declared as volatile, the results
are unpredictable.
ERROR: Function prototype not allowed for non-C function (except Assembler).
int i).
_ _cobol void cobsub(int i)See the SAS/C Compiler Interlanguage Communication Feature User's Guide for addition information.
ERROR: Too many initializers.
ERROR: Invalid use of type name or keyword: symbol.
typedef name or
keyword where an identifier or lvalue was expected.
ERROR: Execution terminated.
char literal.
WARNING: External name longer than 8 characters symbol.
extname option
is specified.
WARNING: Extraneous information in include file name: symbol.
.h or .H. The
qualifier was ignored.
WARNING: Unable to open specified file, will attempt to include file-name.
#include "[file-name.h]".
It attempts to recover by opening the file as if it had
been specified by #include <file-name.h>.
ERROR: Floating point constant out of machine range.
ERROR: Invalid record size (>1024 bytes).
WARNING: Undefined enum tag symbol.
ERROR: Undefined enum tag symbol.
enum tag was not previously defined.
The message is issued as an error if an attempt is made to define
an enumeration by means of the undefined tag. Declarations that
are not definitions cause the message to be issued as a warning.
ERROR: Enum contains no members.
enum type did not define at least one
enumeration constant.
ERROR: Conflicting use of enum/struct/union tag symbol.
struct,
union or enum) within a scope, and then referenced as
another sort. Usage of the tag must be consistent within its scope.
ERROR: Identifiers missing from definition of function symbol.
ERROR: Object overlaps segment boundary.
char object. The compiler ignores all
but the last eight bits in the constant. For example, if the constant
x1234 is specified, the warning is issued and the
constant is treated as equivalent to x34. The prefix
L may be employed to specify a wide character constant as in
L'x12x34'.
WARNING: Missing ellipsis.
...), which
indicates that unspecified parameters may follow the last declared
parameter, is missing.
ERROR: Debugger symbol table overflow.
debug option, or split the compilation
unit into several units to reduce the number of symbols in each.
ERROR: Invalid number.
This message can also be generated if a number beginning
with a 0 contains an invalid octal digit, for example 08.
WARNING: #endif, #else, or #elif out of order.
#endif directive was read with no
previous unmatched #if or #ifdef.
ERROR: Operand to # operator must be a macro argument.
ERROR: message-text
#error directive was
encountered by the preprocessor. The text of the message is
specified by the #error directive.
ERROR: Ambiguous structure or union member member-name.
ERROR: Invalid or unsupported use of at-sign operator.
@ operator only can be used in the argument list of
a function call.
WARNING: Extra tokens after valid preprocessor directive.
ERROR: Cannot redefine macro symbol.
__LINE__, __FILE__,
__STDC__, __DATE__, and
__TIME__ macro names cannot be used in a #define or #undef preprocessor directive.
ERROR: Too many arguments
ERROR: Invalid use of register keyword.
register storage class specifier can be used only in the
declaration of a formal parameter or auto variable for
integer, floating-point, and pointer types.
WARNING: Conversion from far pointer to non-far pointer may lose information.
WARNING: Missing #endif. See line line-number file file-name.
#endif preprocessor directive to
terminate a previous #if or #ifdef directive.
WARNING: Sizeof operator used on array that has been converted to pointer.
sizeof operator is applied to a formal array, the return
value is the size of the pointer, not the size of the array.
WARNING: Array size never given for symbol.
ERROR: Array size never given for symbol.
ERROR: Object has no address.
register variables and bitfields cannot have their
addresses taken.
ERROR: Combined storage for strings and constants exceeds maximum.
const- qualified objects exceeds 2 gigabytes.
WARNING: #include file name or suffix truncated to 8 characters.
#include preprocessing directive exceeded eight characters
in length. The name is truncated on the right.
WARNING: Conversion between function and data pointers.
WARNING: Use of incomplete struct/union/enum tag type. See line line-number file file-name.
strict option is used.
WARNING: Tag type was incomplete in prototype. See line line-number file file-name.
struct, union, and enum tags
that are used in a function prototype should be defined before the
prototype.
ERROR: Conversion to different struct/union/enum type.
ERROR: Cannot define function via typedef name.
typedef int FNC(void);
FNC f {/* ... */}
WARNING: No prototype declared for function pointer.
reqproto option
(or cross-platform -W1,-cf option) is used.
WARNING: No statement after label.
;) after the label.
switch(i) {
.
.
.
default: ; }
WARNING: Operation/comparison of pointer to int and pointer to symbol.
int may not be compared with or assigned to variables of
type pointer to short or pointer to long. The compiler
flags the statement as a possible portability problem.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
ERROR: Invalid type name.
offsetof macro
is used incorrectly. This macro requires a structure
type name as its first argument.
WARNING: Use of unary minus on unsigned value.
unsigned
types cannot have a negative value. Examine the program to ensure that
the operator will have its intended effect.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: No prototype declared at definition for function symbol.
reqproto option
(or cross-platform -W1,-cf option)
is used.
WARNING: '&' applied to an array.
int a[10]; int *i; i = &a /* msg 164 */The programmer probably meant to apply the & operator to an array element instead (for example,
i = &a[1];).
WARNING: Use of narrow type in prototype.
char, short, or float was specified in a prototype. Such arguments
will not be widened in a function call. Because the behavior will be
different in a context where no prototype is in scope, this message
indicates a potential problem if all uses of the function are not
within scope of a prototype.
ERROR: Unrecoverable error or too many errors -- terminating the compilation.
ERROR: This function type should not be defined in C: type.
__asm function prefix may only appear in function
declarations which are not definitions.
WARNING: Assignment of long to symbol.
long is assigned to a short or int.
It is intended to warn of possible truncation and
portability problems.
WARNING: Incompatible operands of conditional operator (?:). symbol-1 conflicts with symbol-2.
?) do not agree. Use casts to ensure that the types match.
WARNING: Overflow during operation on constants.
ERROR: Structure qualifiers do not match previous declarations of structure symbol.
__alignmem or __noalignmem keywords in the named
structure declaration did not match a previous declaration of the same
tag.
WARNING: Implicitly promoted formal parameter conflicts with prototype. See line line-number file file-name.
char, short
or float). The function definition was not in prototype format,
which implies that all arguments should be widened. This discrepancy
between the prototype and the function definition is not
standard-conforming, and may lead to incorrect results with some C
compilers. Either correct the prototype to specify the widened type,
or use the prototype format in the function definition.
WARNING: Function function-name declared static but defined external. See line line-number file file-name.
dollars option
(or cross-platform -W1,-cd option) has not been specified.
However, if the only error in the macro was
the omission of white space following the macro name, the macro will
work as intended.
WARNING: Static function function-name declared but not defined. See line line-number file file-name.
WARNING: Static function declared but not defined symbol.
WARNING: Inline function function-name declared but not defined. See line line-number file file-name.
WARNING: Multiple characters in integral character constant.
ERROR: Comma expected.
WARNING: Implicit conversion between pointer and scalar.
static or extern pointer variable is
initialized using a scalar value. A cast should be used to
perform the conversion to a pointer type explicitly.
WARNING: Negative value assigned to unsigned type.
strict option (or cross-platform -W1,-ll option)
is used.
ERROR: Ambiguous use of ILC language keyword.
__fortran. The following code shows
a pointer to a function returning a pointer to a function that returns a
pointer to int:
__pli int * (* (* ab)( ) ) ( );In this case, however, the compiler cannot tell whether the first function or the second is in PL/I. Specify language keywords directly before the
* (for function pointers) or the name (for
functions). For example:
int * (__pli * (* ad ) ( ) ) ( );This code shows a pointer to a function returning a pointer to a PL/I function that returns a pointer to
int.
ERROR: Malformed double-byte characters.
WARNING: Mixed types in string concatenation - using original type.
ERROR: DBCS used outside of comment, character constant or string.
WARNING: Multiple characters in wide character constant.
wchar_t.
ERROR: AT option required when using @ operator.
@ operator unless the
at option (or cross-platform -Kat option) is used.
Recompile the program using the at option (or cross-platform
-W1,-ca option).
WARNING: No external functions or data defined.
ERROR: Unable to open pass 2 print file. Using stderr.
stderr instead. stderr also should be
inspected for information on why the phase 2 listing file failed to
open.
WARNING: Empty object module.
WARNING: Item is wrong size for conversion to pointer.
char or short item was converted to a pointer.
However, since all pointers on the IBM 370 are 4 bytes in length, it is
unlikely that the input item will convert to a valid pointer. However,
code to do the conversion is generated.
WARNING: Default section name function-name is too long. Section name truncated to 7 characters.
Since this message appears for the default section name only, you can
avoid it by supplying the sname option
(or cross-platform -Ksname option), which is limited to seven characters.
ERROR: Wrong number of parameters for built-in function. An actual function call has been generated.
This message is rare because the library prototypes for built-in functions ensure correct parameters in most cases. However, it can occur if a library prototype is removed from the header file.
ERROR: A constant has an invalid type or value, (unsigned) 1 was used instead.
double instead of int,
was specified for a constant argument to a built-in function.
The compiler substitutes an unsignedconstant 1.
ERROR: Maximum number of extended external names exceeded.
ERROR: Maximum number of extended function names exceeded.
NOTE: No extended names found.
extname option
(or cross-platform -Kextname option) is specified and
no extended names are found.
NOTE: No extended names defined.
enxref option
(or any of the cross-platform -Wl,-xxe, -Wl,-xxs,
-Wl,-xxx, or -Wl,-xxy options) is specified and
no functions or variables with extended names are defined.
ERROR: Unsupported use of __remote with pflocal or __asm function.
__local or
__asm function pointer to a __remote function pointer.
This conversion cannot be performed, because the source function
pointer contains no PRV information. Note that this message can be
generated for an unqualified function pointer if the pflocal
compiler option is used.
ERROR: Pointer to FILE required for this built-in function parameter.
__builtin_getc or the second parameter
or __builtin_putc must be a pointer to the FILE type.
ERROR: Register mask is not a compile-time constant.
_ldregs, _stregs,
_code, and branch
functions must be a compile-time constant so the compiler
can know what registers are needed.
ERROR: Undefined bits set in register mask.
<regs.h> to create the register mask.
ERROR: Register mask does not match number of function parameters.
_ldregs function must define a number of registers that matches
the number of parameters (excluding the mask) in the function call.
The register mask used in the _stregs function must define a
number of registers that either equals the number of other parameters in
the function call or exceeds that number by one.
ERROR: Register mask specifies unsupported register(s).
ERROR: Parameter must be address or pointer.
_stregs built-in
function, but one was not supplied. All arguments to the
_stregs function (except the register mask) must be pointers.
ERROR: SVC number must be a compile-time constant in the range 0-255.
ERROR: DIAGNOSE number unsupported or not a compile-time constant.
_diag function was
not a compile-time constant. The number must be a constant, since it
forms a part of the generated machine instruction.
ERROR: Parameter must be a constant in the range 0-0xFFFF.
_code function must be
halfword constants.
ERROR: Structure or union parameter cannot be loaded into a register.
_ldregs function. Inspect the function arguments
to see if an & operator has been omitted.
ERROR: Inline machine code sequence does not begin with _ldregs.
builtin_code (or some other machine code function)
was made without a previous call to
__builtin_ldregs, which must immediately
precede any sequence of calls to other inline machine code functions.
This message can occur if some C code intervenes
between a call to __builtin_ldregs and a call to another
inline machine code function.
ERROR: Register mask does not specify a result register.
__builtin_stregs with a parameter, but the
value of that parameter, the register mask, did not specify a result register.
ERROR: _stregs not preceded by _ldregs. (_stregs operand may be too complex.)
__builtin_stregs must be
preceded by a call to __builtin_ldregs. No C code other than
calls to inline machine code functions may appear between the call to __builtin_ldregs and the call to __builtin__stregs. The
generation of code will be halted if the operands of
the __builtin_stregs function are overly complex, since they may
force interruption of the inline code sequence to compute the target
addresses.
ERROR: Unsupported opcode, mask, or index register for branch.
__builtin_branch function specified an invalid
opcode, register mask, or index register.
ERROR: Error in debugging file: explanation
ERROR: Implementation limit exceeded: explanation
ERROR: Problem processing _ _builtin function 'function-name'. Possibly incorrect type or number of arguments.
ERROR: Use of far pointer requires the ARMODE (-ea) option.
armode option must be
specified in order for the compiler to generate code that uses far pointers.
The generated code is very unlikely to execute correctly, and additional compilation
error messages may be produced.
WARNING: Indirect reference through NULL pointer.
WARNING: Type punning involves representation change symbol.
long object was accessed as a pointer.
This message
can occur when an assignment is made to a member
of a union, and then the value is accessed from a different member of
the union. It can also occur when an address to data of one type is used
to access data of a dissimilar type by means of a cast.
WARNING: Reference has overlapping definition symbol.
WARNING: Dead assignment eliminated symbol.
WARNING: Uninitialized variable symbol.
NOTE: reason function inlined: function-name from line line-number.
The reason indicates whether the __inline keyword,
complexity=[c] option, or local
option caused the inlining to occur. The [c] represents the
complexity of the function, not the value of the complexity=[c]
option.
Although the cross-platform form of the complexity=[c]
option is -Oic=complexity, the value for reason will assume
the "complexity" form even when the cross-platform compiler is used.
WARNING: Return value missing in inline function.
return statement does not specify one.
WARNING: Inline function does not use formal parameter symbol.
WARNING: Integer operation overflows.
WARNING: Static variable is unreachable
WARNING: Static function is unreachable
WARNING: Possibly uninitialized variable
WARNING: Invalid comparison of pointer and scalar.
ERROR: Illegal pointer subtraction for void pointers.
void * pointers cannot be used in arithmetic
expressions because they point to objects that have no
size.
WARNING: Function symbol declared/defined static but was previously defined extern. See line line-number file file-name.
static
keyword. This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is specified.
WARNING: Variable name symbol conflicts with typedef name. See line line-number file file-name.
typedef
name that had been declared in an outer scope. The typedef was
hidden in the inner scope declaration. This message is
suppressed unless the strict option is specified.
WARNING: Extraneous braces in initializer expression.
strict option
(or cross-platform -W1,-ll option) is specified.
WARNING: 'If' condition always [true | false].
if
statement was a constant expression. If the condition is true, the
compiler only generates code for the then branch. If the
condition is false, the compiler only generates code for the
else branch.
WARNING: Assignment statement as 'if' condition.
=) was used when an equality operator
(==) may have been intended.
WARNING: Function declared static within a block.
static keyword if it is used in a
function declaration in an inner block. Static functions cannot be
declared in inner blocks.
ERROR: Size of object is unknown.
WARNING: Comparison of unsigned value and constant is always [true | false].
For example, this comparison will
always be false because ui can never be a negative value:
unsigned int ui; if (ui < 0 ) ...The compiler does not generate code to perform the test, nor does it generate any code for the true branch of the
if
statement.
WARNING: Conversion of negative constant to unsigned type.
unsigned long:
static unsigned long u1 = -1;The compiler issues a warning message in this case. A more correct method of setting all bits to 1 is as follows:
static unsigned long u1 = 0xffffffff;
WARNING: Trailing comma in enum declaration.
enum
declaration.
WARNING: Empty argument to a preprocessor macro.
cat(X,,Z) produces XZ:
#define cat(a,b,c) a##b##cThis message is suppressed unless the
strict option
(or cross-platform -W1,-ll option) is specified.
ERROR: Unexpected I/O error.
stderr for more information.
WARNING: Argument type is unsupported for __ref functions.
__ref function is of a type that
cannot have the @
operator applied to it. For instance, an attempt was made to pass
a bitfield to a __ref function.
WARNING: Symbol exceeds maximum length: symbol.
extname
option is specified, an identifier can be up to 64K characters long.
This message is suppressed unless the mention option is
specified.
WARNING: Unknown option name.
#pragma options
statement but is not a recognized compiler option. The option may be
misspelled, or it may be a command-line-only option.
WARNING: Option does not accept argument name.
#pragma options statement,
does not accept an argument in parentheses.
WARNING: Invalid argument to option name.
#pragma options
statement is invalid or out of range.
WARNING: Invalid argument for define: name.
define compiler option specified
in a #pragma options directive is invalid.
The target of the define option is not a valid
symbol. Perhaps it begins with a digit or contains an invalid character.
WARNING: Invalid option in pragma: name.
#pragma options statement, the compiler
found the specified symbol instead of an option name.
WARNING: Option not allowed in options pragma: name.
WARNING: Option can not be negated: name.
no. For example,
nopagesize is not a valid option.
WARNING: Static prototype in included file.
mention option (or cross-platform +n option) is specified.
WARNING: Non-static prototype in main source file.
mention option (or cross-platform -W1,+n option) is specified.
WARNING: Only first dimension may be undefined.
WARNING: Assignment to non-const __norent variable will prevent reentrancy.
__norent in a compilation using the rent or rentext option, but the const qualifier was not specified.
This implies that the variable may be assigned elsewhere in the
program. If, in fact, the variable is assigned elsewhere, the program will
be non-reentrant.
WARNING: Initialization prevents reentrancy.
__norent keyword in
the SAS/C Compiler and Library User's Guide for more information
WARNING: Operation/comparison of pointer to "char" and pointer to symbol.
char may not be compare or assigned to pointers of other
types. The compiler flags the statement as a possible portability
problem.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Application of this linkage request is invalid.
#pragma linkage was specified for
an identifier declared with a conflicting keyword, such as __ref.
Either remove the conflicting keyword or the #pragma linkage directive.
WARNING: Assignment of int to short.
signed or unsigned int was assigned to a short
or unsigned short. Data truncation may
occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Function declared with two different types: function-name
WARNING: Assignment of short to char.
signed or unsigned short was assigned to a char
(possibly signed or unsigned). Data truncation may occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Assignment of int to char.
signed or unsigned int was assigned to a char.
Data truncation may occur
(possibly signed or unsigned).
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Assignment of long to char.
signed or unsigned long was assigned to a char.
Data truncation may occur
(possibly signed or unsigned).
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Assignment of long to short.
signed or unsigned long was assigned to a
signed or unsigned short. Data truncation may occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too large for char.
char was assigned to a variable of type char.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too small for char.
char was assigned to a variable of type char.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too large for unsigned char.
unsigned char. Data truncation will occur.
WARNING: Constant assignment too small for unsigned char.
unsigned char. Data truncation will occur.
WARNING: Constant assignment too large for signed char.
signed char. Data truncation will occur.
WARNING: Constant assignment too small for signed char.
signed char. Data truncation will occur.
WARNING: Assignment of long constant to char.
long was assigned to a variable of
type char. This may indicate a portability problem, as
data truncation could occur on a different platform.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too large for short.
short was assigned to a variable of type short. Data
truncation will occur.
WARNING: Constant assignment too small for short.
short was assigned to a variable of type short. Data
truncation will occur.
WARNING: Constant assignment too large for unsigned short.
unsigned short was assigned to a variable of type
unsigned short. Data truncation will occur.
WARNING: Constant assignment too small for unsigned short.
unsigned short was assigned to a variable of type unsigned short.
Data truncation may occur.
WARNING: Assignment of unsigned constant to short
0x7FFF
was made to a short. This will produce a
negative value for the short and may not be what the programmer intended. For example,
short i = (unsigned short) 0x8FFF; /* msg 458 *
WARNING: Assignment of long constant to short.
long was assigned to a variable of
type short. This may indicate a portability problem, as
data truncation could occur on a different platform.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too large for int.
unsigned value for the type int was assigned to a variable of type
int. Data truncation will occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too small for int.
int was assigned to a variable of type int. Data
truncation will occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too large for unsigned int.
unsigned int was assigned to a variable of type
unsigned int. Data truncation will occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too small for unsigned int.
unsigned int. The
constant will be converted to a large unsigned value, which
may not be the intended effect.
WARNING: Assignment of long constant to int.
long was assigned to a variable of
type int. The assignment will behave properly on the 370,
but may not if ported to another machine architecture. This message is
suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: Constant assignment too small for unsigned long.
unsigned long.
The constant will be converted to a large unsigned long value, which
may not be the intended effect.
WARNING: Assignment of unsigned constant to long.
unsigned long whose value is greater than
the maximum value of the type long was assigned to a
variable of type long. Data truncation will occur.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
WARNING: "unsigned char *" and "signed char *" are not assignment compatible.
signed and unsigned char
pointers.
This message is suppressed unless the strict option
(or cross-platform -W1,-ll option) is used.
ERROR: Invalid control expression in FOR statement.
for statement had void type.
The control expression must either have an arithmetic or
pointer type, or be omitted.
WARNING: Unmatched quote in #pragma title preprocessor command.
#pragma title
compiler directive.
WARNING: Invalid character character.
WARNING: Cast of a pointer to a char, short, int, or long
char a; char *bar = &a int foobar; foobar = (int) bar; /* msg 485 */The programmer probably intended to dereference the pointer using the
* operator (for example, foobar = (int) *bar;).
WARNING: Direct (in)equality comparison of float or double
double d = 100000001;
float f = 100000001;
if (d != f) /* compiler generates message 486 */
printf("Precision problems detected.\n");
Because of the differences in accuracy of float and double arithmetic, comparison of
a float and a double for equality can produce unexpected results,
such as inequality for numbers that appear to be equal. In the above example, the actual
value of f is 100000000, because a float offers at most 7 digits of
accuracy. In such cases, it may be better to compare the difference between
the two values to a small threshold value rather than comparing them directly.
WARNING: C++ comment detected.
//) has been detected. This might indicate that
a C++ program is being compiled as a C program.
WARNING: Unrecognized #pragma operand
#pragma statement was encountered
with an unrecognized operand. See the section on language extensions in Chapter
2, "Source Code Conventions" in the SAS/C Compiler and Library
User's Guide for valid #pragma operands.
WARNING: Statement label conflicts with identifier name
int bob = 0; bob: bob++; /* msg 491 */
WARNING: Negative shift or shift too big for type, Shifts for type type-name must be between 0 and max-shift bits.
int i = 1; i >> 33; /* msg 492 */ i << -1; /* msg 492 */
WARNING: Argument count incorrect for macro macro-name, expecting number arguments. See line line-number file file-name.
#define foo(x,y)=x*y int i=1,j; j=foo(i); /* msg 494 */
ERROR: Operation invalid for pointer to void.
void.
void *p = 0; p = p + 1; /* msg 495 *
WARNING: Unrecognized escape sequence.
\'
\"
\?
\\
\a
\b
\f
\n
\r
\t
\v
Invalid DDname prefix specified
files compiler option
contains characters that cannot be used in a DDname, or the argument
is longer than three characters (OS/390, TSO only).
Invalid default bitfield type.
bitfieldoption
must be either 1, 2, or 4. The bitfield option
(or cross-platform -Kbitfield option) is
ignored.
Invalid GO complexity() option: 0-20 allowed - overridden.
complexity
option (or cross-platform -Oic=number
option) requires an integer value between 0 and 20,
inclusive. The compiler will use a default value of 0.
Invalid GO depth() option: 0-6 allowed - overridden.
depth option (or cross-platform -Oid=number option)
requires an integer value between
0 and 6, inclusive. The compiler will use a default value of 3.
Invalid GO inline option text.
Invalid GO rdepth() option: 0-6 allowed - overridden.
rdepth option (or cross-platform -Oir=number option)
requires an integer value between 0 and 6, inclusive.
The compiler will use a default value of 1.
Invalid LISTING disposition specified
Invalid multiple specified for zapspace size.
zapspace option (or cross-platform -Kzapspace option)
requires an integer value between
0 and 22, inclusive. A value was found that did not fit these
criteria, so the compiler used the default value of 1.
Invalid number of lines per page specified for listing.
pagesize option was not greater
than 10 and less than 255. The compiler sets the page size to
55.
Unknown option unknown-option assumed-option.
Invalid option-type option: text
Invalid section name specified.
sname option (or cross-platform -ksname option)
specified a string that either contained invalid characters
or was longer than seven characters.
Invalid symbol definition.
define option (or cross-platform -Dsym=value option).
Invalid value specified for minimum zapspace size.
zapmin option (or cross-platform -Kzapmin
option) requires an integer value between 24 and 512, inclusive.
The compiler will use a default value of 1.
stderr, provide additional information.
Can't close file for debugger symbol information.
Can't create file for debugger symbol information.
Can't create object file.
Can't create quad file.
Can't open quad file.
Can't open source file.
End-of-file on object file.
Error closing object file.
Intermediate file error.
Invalid quad file.
No functions or data defined.
Not enough memory.
Object file error.
Can't reopen output quad file.
Error while replacing quad file.
Quad file not replaced.
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.