User Tools

Site Tools


specific_errors.htm
Navigation:  Language Reference > App D - Error Codes > Compiler Errors >====== Specific Errors ====== Previous pageReturn to chapter overviewNext page

The following error messages occur when the compiler has detected a specific syntax problem and is attempting to alert you to exactly what the problem is so that you may correct it.

Some of the following error messages contain a “%V” token. The compiler substitutes an explicit label indicating what problem is occurring for this token when it generates the error message, which should help point to the cause of the error.

! introduces a comment

This is a common C programmer's error. If you type IF A != 1 THEN you get this warning.

Actual value parameter cannot be array

The passed parameter must not be an array.

ADDRESS parameter ambiguous

ADDRESS(MyLabel) where MyLabel is the label of both a procedure and a data item.

All fields must be declared before JOINs

All PROJECT statements for the file must precede any JOIN statements in the VIEW structure.

Ambiguous label

The field qualification syntax has come up with more that one solution for the label you have supplied.

For example:

   G   GROUP

   S:T   SHORT   !Referenced as G:S:T

       END

   G:S  GROUP

   T    SHORT   !Referenced as G:S:T

        END

    CODE

    G:S:T = 7   !Which are you talking about?

Array too big

Arrays are limited to 64K in 16 bit.

Attribute parameter must be QUEUE, QUEUE field or constant string

The parameter must be the label of a previously declared QUEUE structure, a field within a QUEUE structure, or a string constant.

Attribute requires more parameters

You must pass all required parameters to an attribute that takes parameters.

Attribute string must be constant

The parameter must be a string constant, not the label of a variable.

Attribute variable must be global

The parameter must be a variable declared in the PROGRAM module as global data.

Attribute variable must have string type

The parameter must be a variable declared as a STRING, CSTRING, or PSTRING.

BREAK structure must enclose DETAIL

There must be at least one DETAIL structure within nested BREAK structures (at the lowest level).

Calling function as procedure

A Warning that a PROCEDURE which returns a value and does not have the PROC attribute is being called as a PROCEDURE without a return value would be and the return value will be lost.

Cannot call procedure as function

You cannot call a PROCEDURE which does not return a value as the source of an assignment statement or as a parameter.

Cannot declare KEY in a VIEW

A KEY declaration is not valid in a VIEW structure.

Cannot EXIT from here

Only a ROUTINE may contain the EXIT statement.

Cannot GOTO into ROUTINE

The target of GOTO must be the label of an executable code statement within the same procedure or ROUTINE, and may not be the label of a ROUTINE.

Cannot have default parameter here

You may only have a default value on non-omittable integer data type parameters passed by value.

Cannot have initial values with OVER

A variable declaration with the OVER attribute may not also have an initial value parameter.

Cannot have statement here

This happens if the compiler thinks you have tried to define a code label inside the global data section.

Cannot initialize variable reference

A reference variable cannot have an initial value.

Cannot return CSTRING from CLARION function

CSTRING is not a valid return data type for a PROCEDURE written in Clarion (only for functions written in other languages).

Cannot RETURN value from procedure

Only a PROCEDURE prototyped to return a value may contain the RETURN statement with a return value parameter.

CLARION function cannot use RAW or NAME

These attributes are not appropriate for a PROCEDURE written in Clarion (only for functions written in other languages).

DECIMAL has too many places

A DECIMAL or PDECIMAL declaration may only have a maximum of 30 places to the right of the decimal, and the decimal portion must be less than the total length.

DECIMAL too long

A DECIMAL or PDECIMAL declaration may have a maximum length of 31 digits.

Declaration not valid in FILE structure

This data declaration may not be contained within a FILE structure.

Declaration too big

The compiler has detecteda PSTRING > 255 or MEMO > 64K in 16 bit, etc.

DLL attribute requires EXTERNAL attribute

The DLL attribute further defines the EXTERNAL attribute and is necessary in 32-bit programs.

Dynamic INDEX must be empty

An attempt to use the 2 parameter form of BUILD on a KEY or INDEX declared with component fields.

Embedded OVER must name field in same structure

The parameter to the OVER attribute must be the label of a previously declared variable in the same structure.

ENCRYPT attribute requires OWNER

The ENCRYPT attribute and OWNER attribute function together.

Entity-parameter cannot be an array

You cannot pass an array of entity parameters (FILE, QUEUE, etc.).

Expected: %V

This is one of the most common errors. The compiler was expecting to find something (one of the items in the list substituted for the %V token) as the next code to compile, but instead found the code at the point in the source that the error is generated.

Expression cannot be picture

You have attempted to use an EQUATE label to a picture token in a place where a picture token is not valid.

Expression cannot have conditional type

An expression is not a numeric value. For example, MyValue = A > B is invalid.

Expression must be constant

Variables are not valid in this expression.

Field equate label not defined: %V

The named field equate label has not been previously declared.

Field not found

Using field qualification syntax to reference a field that is not in the parent item. For example, referencing MyGroup.SomeField where SomeField is not in the MyGroup declaration.

Field not found in parent FILE

A JOIN statement must declare all the linking fields between the parent and child files.

Field requires (more) subscripts

This is referencing an array with multiple dimensions, and you must supply an index into each dimension.

FILE must have DRIVER attribute

The DRIVER attribute is required to declare the file system for which the data file is formatted.

FILE must have RECORD structure

It is invalid to declare a FILE which does not contain a RECORD structure.

FILEs must have same DRIVER attribute

All files named in a LOGOUT statement must use the same file system.

Function did not return a result

A warning that the implementation of the PROCEDURE prototyped to return a value did not return a result.

Function result is not of correct type

The RETURN statement must return a value consistent with the return data type prototyped in the MAP structure.

Group too big

GROUPs are limited to 64K in 16 bit.

Ignoring EQUATE redefinition: %V

A Warning that the named equate is being ignored. This is really a label-redefined error except that the definition is not thrown away.

Illegal array assignment

An assignment to an array must reference a single element, not the entire array.

Illegal character

A non-valid lexical token. For example, an ASCII 255 in your source.

Illegal data type: %V

The named data type is inappropriate for the structure in which it is placed.

Illegal key component

A KEY has any type of illegal component.

Illegal nesting of window controls

Window controls other than RADIO have been placed within an OPTION structure, or controls other than TAB have been placed directly within a SHEET structure.

Illegal parameter for LIKE

An illegal parameter to a LIKE declaration. For example, LIKE(7).

Illegal parameter type for STRING

An illegal parameter to a STRING declaration. For example, STRING(MyVar) where MyVar is the label of a variable and not an EQUATE.

Illegal reference assignment

A reference variable may only be assigned another reference variable of the same type, or the label of a variable of the type it references.

Illegal return type or attribute

The prototype contains an invalid data type as the return data type (such as *CSTRING).

Illegal target for DO

The target of DO must be the label of a ROUTINE.

Illegal target for GOTO

The target of GOTO must be the label of an executable code statement within the same procedure or ROUTINE, and may not be the label of a ROUTINE.

INCLUDE invalid, expected: %V

The INCLUDE statement's parameter must be a well formed Clarion string. In particular, type conversion is not valid, so INCLUDE('MyFile'&MyValue) is invalid.

INCLUDE misplaced

INCLUDE has to follow a line-break, or a semi-colon (possibly followed by white space).

INCLUDE nested too deep

You can only nest INCLUDEs 3 deep. In other words you can INCLUDE a file that INCLUDEs a file that INCLUDEs a file, but the last file must not INCLUDE anything.

Incompatible assignment types

An attempt to assign between incompatible data types.

Incorrect procedure profile

An attempt to pass a procedure with the wrong prototype as a procedure-parameter.

Indices must be constant

An attempt has been made to have a USE variable that is an array element with variable indices.

Indistinguishable new prototype: %V

A prototype that the compiler cannot uniquely distinguish from a previous prototype using the rules for procedure overloading .

Integer expression expected

The expression must evaluate to an integer.

Invalid BREAK statement

A BREAK that attempts to break to a non-LOOP label or is outside a LOOP or ACCEPT structure.

Invalid CYCLE statement

A CYCLE that attempts to cycle to a non-LOOP label or is outside a LOOP or ACCEPT structure.

Invalid data declaration attribute

An attribute that is inappropriate on the data declaration.

Invalid data type for value parameter

The data type prototyped in the MAP may not be passed by value and must be passed by address. For example, to pass a CSTRING parameter to a Clarion procedure, it may only be prototyped as *CSTRING.

Invalid FILE attribute

An attribute that is inappropriate on a FILE declaration.

Invalid first parameter of ADD

The statement's first parameter is not appropriate.

Invalid first parameter of FREE

The statement's first parameter is not appropriate.

Invalid first parameter of NEXT

The statement's first parameter is not appropriate.

Invalid first parameter of PUT

The statement's first parameter is not appropriate.

Invalid GROUP/QUEUE/RECORD attribute

An attribute that is inappropriate on a GROUP, QUEUE, or RECORD declaration.

Invalid KEY/INDEX attribute

An attribute that is inappropriate on a KEY or INDEX declaration.

Invalid label

A label that contains characters other than letters, numbers, underscore (_), or colon (:), or does not start with a letter or underscore.

Invalid LOOP variable

An attempt to use an illegal data type (DATE, TIME, STRING, etc.) as a LOOP variable.

Invalid MEMBER statement

The parameter to the MEMBER statement is not a string constant or does not reference the PROGRAM module for the current project.

Invalid method invocation syntax

An attempt to use the {} syntax for method invocation on a BLOB or FILE.

Invalid number

A number is required, for example inside the repeat character notation ({}) in a string constant.

Invalid OMIT expression

The parameter to the OMIT statement is invalid.

Invalid parameters for attribute

You must pass valid parameters to an attribute that takes them.

Invalid picture token

A picture token that contains inappropriate characters.

Invalid printer control token

A PRINT statement containing a printer control token.

Invalid QUEUE/RECORD attribute

An attribute that is inappropriate on a QUEUE or RECORD declaration.

Invalid SIZE parameter

SIZE(Junk+SomeMoreJunk)

Invalid string (misused <;…> or {…} )

A string constant contains a single beginning bracket (<; or {) without a matching terminating bracket (> or }). These characters must have two together (<;<; or {{) if intended to be part of the string. **Invalid structure as first parameter** The statement's first parameter is not appropriate. **Invalid structure within property syntax** A structure that is inappropriate in a property assignment statement. **Invalid USE attribute parameter** The parameter is not appropriate for a USE attribute. **Invalid use of PRIVATE data** Attempt to access a PRIVATE data member outside the CLASS module. **Invalid use of PRIVATE procedure** Attempt to call a PRIVATE method outside the CLASS module. **Invalid variable data parameter type** When passing parameters by address, you must pass the same data type as prototyped in the MAP structure. **Invalid WINDOW control** A control that is inappropriate in a WINDOW structure. **ISL error: %V** Contact Technical Support and provide all details of the error message. **KEY must have components** You cannot declare a KEY without naming the component fields that establish the KEY's sort order. **Label duplicated, second used: %V** The named field equate label is used multiple times within the same module and only the last encountered is used in the list of equate labels that may be used within the executable code. Correctable with the third parameter to the USE attribute. **Label in prototype not defined: %V** Using a prototype where one of the data types has not yet been defined. **Label not defined: %V** The named label has not been previously declared. **Mis-placed string slice operator** A string slice that is not the last array index. For example, MyStringArray[3:4,5]. **Missing procedure definition: %V** The named procedure is not prototyped in a MAP structure. **Missing virtual function** Compiler bug. **Must be dimensioned variable** This must be an array. **Must be field of a FILE or VIEW** Must be a field that is a member of a FILE or VIEW structure. For example NULL(LocalVariable) with give this error. **Must be FILE or KEY** The parameter to JOIN is not a FILE or KEY label. **Must be reference variable** You can only DISPOSE of a reference variable. **Must be variable** This must be the label of a previously declared variable. **Must have constant string parameter** The parameter must be a string constant, not the label of a variable. **Must RETURN value from function** A PROCEDURE prototyped to return a value must contain the RETURN statement with a return value parameter. **Must specify DECIMAL size** A DECIMAL or PDECIMAL declaration must declare the maximum number of digits it stores. **Must specify identifier** An indentifier was required but not supplied. **Must specify print-structure** A PRINT statement may only print a structure in a REPORT. **No matching prototype available** Attempt to define a procedure for which there is no matching prototype in a MAP or CLASS. **Not valid inside structure** A data type is inappropriate for the structure in which it is placed. **OMIT cannot be nested** You are in an OMIT (or COMPILE) that is //not// omitting code and the compiler encounter another OMIT. **OMIT misplaced** OMIT has to follow a line-break, or a semi-colon (possibly followed by white space). **OMIT not terminated: %V** The referenced OMIT parameter was not found before the end of the source module. **Order is MENUBAR, TOOLBAR, Controls** The MENUBAR structure must come before the TOOLBAR, and the TOOLBAR structure must come before the controls in a WINDOW or APPLICATION. **OVER must name variable** The parameter to the OVER attribute must be the label of a previously declared variable. **OVER must not be larger than target variable** The parameter to the OVER attribute must be the label of a previously declared variable that is greater than or equal to the size of the variable being declared OVER it. **OVER not allowed with STATIC or THREAD** A variable declaration with the OVER attribute may not also have the STATIC or THREAD attribute (these must be on the initial declaration). **Parameter cannot be omitted** The procedure call must pass all parameters that have not been prototyped as omittable parameters. **Parameter kind does not match** When passing parameters by address, you must pass the same data type as prototyped in the MAP structure. **Parameter must be picture** This must be a display picture token. **Parameter must be procedure label** This must be the label of a procedure. **Parameter must be report DETAIL label** A PRINT statement may only print a DETAIL structure in a REPORT. **Parameters must have labels** Attempt to define a procedure without using labels on parameters. **Parameter type label ambiguous (CODE or DATA)** You may have a PROCEDURE and data declaration with the same name, but then you cannot use that name in a procedure prototype. **PROCEDURE cannot have return type** If you declare a prototype without a return data type in the MAP, you must create it as a PROCEDURE. **Procedure doesn't belong to module: %V** An attempt to define a procedure that has a prototype that says it belongs in another module. **Procedure in parent CLASS has VIRTUAL mismatch** Virtual methods require the VIRTUAL attribute on the prototypes in both the parent and derived CLASSes. **Prototype is: %V** Attempt to define a procedure with the wrong prototype. **QUEUE/RECORD not valid in GROUP** A GROUP structure may not contain a QUEUE or RECORD structure. **Redefining system intrinsic: %V** A Warning that the named procedure (part of your source code) has the same name as a Clarion run time library procedure and that your procedure will be called instead of the built-in library's. **Routine label duplicated** The label of a ROUTINE statement has been previously used on another statement. **Routine not defined: %V** The named ROUTINE does not exist. **SECTION duplicated: %V** The named SECTION exists twice in the INCLUDE file. **SECTION not found: %V** The named SECTION does not exist in the INCLUDE file. **Statement label duplicated** Two lines of executable source code have the same label. **Statement must have label** The statement (such as a ROUTINE or PROCEDURE statement) must have a label. **String not terminated** A string constant without a terminating single quote ('). **Subscript out of range** An attempt to reference an array element beyond the valid number of elements dimensioned in the data declaration. **Too few indices** This is referencing an array with multiple dimensions, and you must supply an index into each dimension. **Too few parameters** The procedure call must pass all parameters that have not been prototyped as omittable parameters. **Too many indices** This is referencing an array and you are supplying too many indexes into the dimensions. **Too many parameters** The procedure call may not pass more parameters than have been prototyped. **Too many SEGDEF in file** The linker needs to collect information about object and resource files to be linked into the targetbinary (Exe or Dll). The limit for number of segments per object file is ~16k. The compiler produces segments for: - Every Procedure or ROUTINE is a separate segment - Every static variable or constant string is a separate segment - Every FILE structure produces 5 segments, plus if the FILE declaration has the NAME, OWNER or a defined driver string, one segment for everyone of these, plus one possible additional segment if the FILE is threaded, and a segment for every KEY, Memo, VIEW, and QUEUE. In general, with the current linker segment limit a single source file can have thousands of entities declared and used. The most probable ways to get the "too many SEGDEF in file error are: 1- to have too many global INCLUDE() files that declare variables; the solution is to include files on the module level rather than globally wherever it is possible 2- to declare too many FILEs with large number of KEYs and/or MEMOs in one source file (generally the main PROGRAM source file, as a rule); the solution is to use the Template setting found under Global Properties->Actions->File Control->Generate File declarations in Modules as shown here: {{filesinmodules.png|FilesInModules}} **Unable to verify validity of OVER attribute** A Warning that you are declaring a variable OVER a passed parameter and the data types may not match at run time. **Unknown attribute: %V** The named attribute is not part of the Clarion language. **Unknown function label** The PROCEDURE has not been previously prototyped in a MAP structure. **Unknown identifier** The label has not been previously declared. **Unknown identifier: %V** The named identifier has not been previously declared. **Unknown key component: %V** The named key component does not exist within the FILE structure. **Unknown procedure label** The PROCEDURE has not been previously prototyped in a MAP structure. **UNTIL/WHILE illegal here** Attempt to use UNTIL or WHILE to terminate a LOOP structure that is already terminated. **Value-parameter cannot be an array** You cannot pass an array as a value-parameter. **Value requires (more) subscripts** This is referencing an array with multiple dimensions, and you must supply an index into each dimension. **Variable expected** This must be the label of a previously declared variable. **Variable-size must be constant** The variable declaration must contain a constant expresion for its size parameter. **VIRTUAL illegal outside of CLASS structure** You can only use the VIRTUAL attribute on prototypes in a CLASS structure, not in a MAP. **Wrong number of parameters** The procedure call must pass all parameters that have not been prototyped as omittable parameters. **Wrong number of subscripts** An attempt to access a multi-dimensioned array without providing an element number for each dimension. For example: **    MyShort SHORT,DIM(8,2)  !Two-dimensional array** **     CODE** **     MyValue = MyShort[7]  !Wrong number of subscripts error**

specific_errors.htm.txt · Last modified: 2021/04/15 15:57 (external edit)