Compiling the script

Before you can execute a script, you must compile it.

To compile a script:

  • Click the Compile button, or select Edit>Compile from the menu bar.

    PowerBuilder compiles the script and reports any problems it finds, as described in Handling problems.

PowerBuilder compiles automatically

When you attempt to open a different script in a Script view, PowerBuilder compiles the current script. When you save the object, such as the window containing a control you wrote a script for, PowerBuilder recompiles all scripts in the object to make sure they are still valid. For example, PowerBuilder checks that all objects that were referenced when you wrote the script still exist.

Handling problems

If problems occur when a script is compiled, PowerBuilder displays messages in a Message window below the script.


There are three kinds of messages:

  • Errors

  • Warnings

  • Information messages

Understanding errors

Errors indicate serious problems that you must fix before a script will compile and before you can close the Script view or open another script in the same view. Errors are shown in the Message window as:

line number: Error error number:message

Understanding warnings

Warnings indicate problems that you should be aware of but that do not prevent a script from compiling.

There are three kinds of warnings.

Compiler warnings. Compiler warnings inform you of syntactic problems, such as undeclared variables. PowerBuilder lets you compile a script that contains compiler warnings, but you must fix the problem in the script before you can save the object that the script is for, such as the window or menu.Compiler warnings are shown in the Message window as:

line number: Warning warning number:message

Obsolete warnings. Obsolete warnings inform you when you use any obsolete functions or syntax in your script. Obsolete functions, although they still compile and run, have been replaced by more efficient functions and will be discontinued in a future release of PowerBuilder. You should replace all references to obsolete functions as soon as possible. Obsolete warnings are shown in the Message window as:

line number: Warning warning number:message

Database warnings. Database warnings come from the database manager you are connected to. PowerBuilder connects to the database manager when you compile a script containing embedded SQL. Typically, these warnings arise because you are referencing a database you are not connected to. Database warnings are shown in the Message window as:

line number: Database warning number:message

PowerBuilder lets you compile scripts with database warnings and also lets you save the associated object. It does this because it does not know whether the problem will apply during execution, since the execution environment might be different from the compile-time environment.

You should study database warnings carefully to make sure the problems will not occur at runtime.

Understanding information messages

Information messages are issued when there is a potential problem. For example, an information message is issued when you have used a global variable name as a local variable, because that might result in a conflict later.

Information messages are shown in the Message window as:

line number: Information number:message

Displaying warnings and messages

To specify which messages display when you compile, select Design>Options to open the Options dialog box, select the Script tab page, and check or clear the Display Compiler Warnings, Display Obsolete Messages, Display Information Messages, and Display Database Warnings check boxes. The default is to display compiler and database warning messages. Error messages always display.

Fixing problems

To fix a problem, click the message. The Script view scrolls to display the statement that triggered the message. After you fix all the problems, compile the script again.

To save a script with errors

Comment out the lines containing errors.

Disabling database connection when compiling and building

When PowerBuilder compiles an application that contains embedded SQL, it connects to the database profile last used in order to check for database access errors during the build process. For applications that use multiple databases, this can result in spurious warnings during the build since the embedded SQL can be validated only against that single last-used database and not against the databases actually used by the application. In addition, an unattended build, such as a lengthy overnight rebuild, can stall if the database connection cannot be made.

To avoid these issues, you can select the Disable Database Connection When Compiling and Building check box on the General page of the System Options dialog box.

Caution

Select the check box only when you want to compile without signing on to the database. Compiling without connecting to a database prevents the build process from checking for database errors and may therefore result in runtime errors later.

Compiler Errors

C0001 Compiler Error
C0002 Compiler Error
C0003 Compiler Error
C0004 Compiler Error
C0005 Compiler Error
C0006 Compiler Warning
C0007 Compiler Error
C0008 Compiler Error
C0009 Compiler Error
C0010 Compiler Error
C0011 Compiler Error
C0013 Compiler Error
C0014 Compiler Warning
C0015 Compiler Error
C0016 Compiler Error
C0017 Compiler Error
C0018 Compiler Error
C0019 Compiler Error
C0020 Compiler Error
C0021 Compiler Error
C0022 Fatal Compiler Error
C0023 Compiler Error
C0024 Compiler Error
C0025 Compiler Error
C0026 Compiler Error
C0027 Compiler Error
C0028 Compiler Error
C0029 Compiler Error
C0030 Fatal Compiler Error
C0031 Compiler Error
C0032 Fatal Compiler Error
C0033 Compiler Error
C0034 Compiler Error
C0035 Compiler Error
C0036 Compiler Error
C0037 Compiler Error
C0038 Database Error
C0039 Compiler Error
C0040 Compiler Error
C0041 Compiler Error
C0042 Compiler Error
C0043 Compiler Error
C0044 Compiler Error
C0045 Compiler Error
C0046 Compiler Error
C0047 Compiler Error
C0048 Compiler Error
C0049 Compiler Error
C0050 Compiler Error
C0051 Compiler Error
C0052 Compiler Error
C0053 Compiler Error
C0054 Database Error
C0055 Compiler Error
C0056 Compiler Error
C0057 Compiler Error
C0058 Compiler Warning
C0059 Compiler Warning
C0060 Compiler Error
C0061 Compiler Error
C0062 Compiler Error
C0063 Compiler Error
C0064 Compiler Error
C0065 Compiler Error
C0066 Compiler Error
C0067 Compiler Error
C0068 Compiler Error
C0069 Compiler Error
C0070 Compiler Error
C0071 Compiler Error
C0072 Compiler Error
C0073 Compiler Warning
C0074 Compiler Error
C0075 Compiler Warning
C0076 Compiler Error
C0077 Compiler Error
C0078 Compiler Error
C0079 Compiler Error
C0080 Compiler Error
C0081 Compiler Error
C0082 Compiler Error
C0083 Compiler Error
C0084 Compiler Error
C0085 Compiler Error
C0086 Compiler Warning
C0087 Compiler Warning
C0088 Compiler Warning
C0089 Compiler Warning
C0090 Compiler Error
C0091 Compiler Error
C0092 Compiler Error
C0093 Compiler Error
C0094 Compiler Error
C0095 Compiler Error
C0096 Compiler Error
C0097 Compiler Error
C0098 Compiler Error
C0099 Compiler Warning
C0100 Compiler Error
C0101 Compiler Error
C0102 Compiler Error
C0103 Compiler Error
C0104 Compiler Error
C0105 Compiler Error
C0106 Compiler Error
C0107 Compiler Error
C0108 Compiler Error
C0109 Compiler Error
C0110 Compiler Warning
C0111 Compiler Error
C0112 Compiler Error
C0113 Compiler Error
C0114 Compiler Error
C0115 Compiler Error
C0116 Compiler Error
C0117 Compiler Error
C0118 Compiler Error
C0119 Compiler Error
C0120 Compiler Error
C0121 Compiler Error
C0122 Compiler Error
C0123 Compiler Error
C0124 Compiler Error
C0125 Compiler Error
C0126 Compiler Error
C0127 Compiler Error
C0128 Compiler Error
C0129 Compiler Warning
C0130 Compiler Error
C0131 Compiler Error
C0132 Compiler Error
C0133 Compiler Error
C0134 Compiler Error
C0135 Compiler Error
C0136 Compiler Error
C0137 Compiler Error
C0138 Compiler Error
C0139 Compiler Error
C0140 Compiler Error
C0141 Compiler Error
C0142 Compiler Error
C0143 Compiler Error
C0144 Compiler Error
C0145 Compiler Error
C0146 Informational Message
C0147 Informational Message
C0148 Informational Message
C0149 Informational Message
C0150 Compiler Warning
C0151 Compiler Warning
C0152 Compiler Error
C0153 Compiler Error
C0154 Compiler Error
C0155 Compiler Error
C0156 Compiler Warning
C0157 Informational Message
C0158 Compiler Error
C0159 Compiler Error
C0160 Compiler Error
C0161 Compiler Error
C0162 Compiler Error
C0163 Compiler Error
C0164 Compiler Error
C0165 Compiler Error
C0166 Compiler Error
C0167 Compiler Error
C0168 Informational Message
C0169 Compiler Error
C0170 Compiler Error
C0171 Compiler Warning
C0172 Compiler Error
C0173 Compiler Error
C0174 Compiler Error
C0175 Compiler Error
C0176 Compiler Error
C0177 Compiler Error
C0178 Compiler Warning
C0179 Compiler Warning
C0180 Compiler Error
C0181 Compiler Error
C0182 Compiler Error
C0183 Compiler Error
C0184 Compiler Error
C0185 Obsolete Warning
C0186 Compiler Warning
C0187 Compiler Error
C0188 Compiler Warning
C0189 Compiler Error
C0190 Compiler Warning
C0191 Compiler Error
C0192 Compiler Error
C0193 Compiler Error
C0194 Compiler Error
C0195 Compiler Error
C0196 Compiler Error
C0197 Informational Message
C0198 Compiler Warning
C0199 Compiler Warning
C0200 Compiler Error
C0201 Compiler Error
C0202 Compiler Error
C0203 Compiler Error
C0204 Compiler Error
C0205 Migration Warning
C0206 Migration Warning
C0207 Migration Warning
C0208 Informational Message
C0209 Compiler Warning
C0210 Compiler Warning
C0212 Compiler Error
C0213 Compiler Error
C0214 Compiler Error
C0215 Compiler Error
C0216 Compiler Error
C0217 Informational Message
C0218 Compiler Warning
C0300 Compiler Error
C0301 Compiler Error
C0302 Compiler Error
C0303 Compiler Error
C0304 Compiler Error
C0305 Compiler Error
C0306 Compiler Error
C0307 Compiler Error
C0308 Compiler Error
C0309 Compiler Error
C0310 Compiler Error
C0311 Compiler Error
C0312 Compiler Error
C0313 Compiler Error
C0314 Compiler Warning
C0315 Compiler Warning
C0316 Compiler Error
C0317 Compiler Warning
C0318 Compiler Warning
C0319 Compiler Error
C0320 Compiler Error
C0321 Compiler Error
C0322 Compiler Error
C0323 Compiler Warning
C0324 Compiler Warning
C0325 Compiler Error
C0326 Compiler Error
C0327 Compiler Error
C0328 Compiler Error
C0329 Compiler Error
C0330 Compiler Error
C0331 Compiler Error

C0001 Compiler Error

Message text

Illegal datatype: type.

Explanation

The following statement generates Error C0001: Illegal datatype indt:

indt li_num

A variable can be a standard datatype, a structure, or an object. Object datatypes can be system objects as displayed in the Browser or they can be objects you have defined by deriving them from those system object types.

See Also

Declaring Variables in the section called “Declaring variables” in PowerScript Reference.

C0002 Compiler Error

Message text

Array subscript is not an integer.

Explanation

The following code generates C0002:

char lc_char='a'
int li_array[2]
li_array[lc_char]=1   //generates error C0002

Boolean lb_bool=false
int li_array2[2]
li_array2[lb_bool]=1   //generates error C0002

Array subscripts must be integers. The following code compiles without error:

char lc_char='a'
char li_array[2]
li_array[1]=lc_char

Boolean lb_bool=false
boolean li_array2[2]
li_array2[1]=lb_bool

See Also

Declaring arrays in the section called “Declaring arrays” in PowerScript Reference.

C0003 Compiler Error

Message text

Condition for if statement must be a boolean.

Explanation

The following code generates C0003:

int li_num
if li_num then // generates C0003
   li_num++
end if

The following code compiles without error:

int li_num
if li_num < 100 then
   li_num++
end if

See Also

IF...THEN in the section called “IF...THEN” in PowerScript Reference.

C0004 Compiler Error

Message text

Condition for elseif statement must be a boolean.

Explanation

The following code generates C0004:

boolean lb_cond
int li_num
char lc_charc

if lb_cond then
   li_num++
elseif lc_charc then // generates C0004
   li_num -- // note space required before --
end if

The following code compiles without error:

boolean lb_cond
int li_num
char lc_charc

if lb_cond then
   li_num++
elseif lc_charc = 'Z' then
   li_num --
end if

See Also

IF...THEN in the section called “IF...THEN” in PowerScript Reference.

C0005 Compiler Error

Message text

Condition for do loop must be a boolean.

Explanation

The following code generates C0005:

boolean lb_cond
int li_a=1,li_b

DO UNTIL li_b  // generates C0005
   li_a++
LOOP

DO WHILE li_b  // generates C0005
   li_a++
LOOP

The following code compiles without error:

boolean lb_cond
int li_a=1,li_b

DO UNTIL li_a = 100
   li_a++
LOOP

DO WHILE lb_cond
   li_a++
LOOP

See Also

DO...LOOP in the section called “DO...LOOP” in PowerScript Reference.

C0006 Compiler Warning

Message text

Unused label: label.

Explanation

The following code generates C0006:

int li_b
nextline: li_b=3  //generates C0006
li_b=3

The following code compiles without error:

int li_b
goto nextline
nextline: li_b=3
li_b=3

See Also

GOTO in the section called “GOTO” in PowerScript Reference.

C0007 Compiler Error

Message text

No label for goto: string.

Explanation

The following code generates C0007:

int li_num=123
goto start // generates C0007
goto nextline
nextline: li_num++

See Also

GOTO in the section called “GOTO” in PowerScript Reference.

C0008 Compiler Error

Message text

Incompatible types in assignment: type1, type2.

Explanation

The following code generates C0008:

int li_num
li_num = "string"  // generates C0008: Incompatible
                // types in assignment: integer, string

See Also

Assignment in the section called “Assignment” in PowerScript Reference.

C0009 Compiler Error

Message text

Array initialization has too many members.

C0010 Compiler Error

Message text

Nested array list expressions are illegal.

Explanation

The following code generates C0010:

int li_a[3]={{1,2},3}  // generates C00010

See Also

Using arraylists to assign values to an array in the section called “Using arraylists to assign values to an array” in PowerScript Reference.

C0011 Compiler Error

Message text

Incompatible types in expression: type1, type2.

Explanation

The following code generates C00011:

int li_a
string ls_b

// Each of the following statements generates C00011:
// Incompatible types in expression: integer, string
ls_b = li_a + ls_b
ls_b = li_a * ls_b
ls_b = li_a - ls_b
ls_b = li_a / ls_b

See Also

Datatype of PowerBuilder expressions in the section called “Datatype of PowerBuilder expressions” in PowerScript Reference.

C0013 Compiler Error

Message text

Incompatible types in boolean expression: type1, type2.

Explanation

The following code generates C00013:

char lc_ch
int li_n

do while lc_ch and li_n // generates C0013: Incompatible
                        // types in boolean expression:
                        // character, integer
...
loop 

See Also

Datatype of PowerBuilder expressions in the section called “Datatype of PowerBuilder expressions” in PowerScript Reference.

C0014 Compiler Warning

Message text

Undefined variable: variable.

Explanation

The following code generates C00014:

num=10     // generates C0014: Undefined variable: num
char lc_ch
lc_ch = achar // generates C0014: 
              // Undefined variable: achar

See Also

Declaring Variables in the section called “Declaring variables” in PowerScript Reference.

C0015 Compiler Error

Message text

Undefined variable: variable.

Explanation

The following code generates C00015 when the global variables gi_var and gc_var have not been defined:

int li_a=::gi_var
char lc_ch=::gc_var

See Also

Declaring Variables in the section called “Declaring variables” in PowerScript Reference.

C0016 Compiler Error

Message text

Incompatible type in expression: type.

Explanation

The following code generates C00016:

char lc_a
int num= - lc_a // generates C0016: Incompatible type
                // in expression: character

See Also

Datatype of PowerBuilder expressions in the section called “Datatype of PowerBuilder expressions” in PowerScript Reference.

C0017 Compiler Error

Message text

Incompatible type for NOT operator: type.

Explanation

The following code generates C00017:

int li_a
int li_b

if not li_b then // generates C00017: Incompatible type
                 // for NOT operator: integer
   li_a ++
end if

The following code compiles without error:

int li_a
boolean bstatus

if not bstatus then
   li_a ++
end if

See Also

Relational operators in PowerBuilder in the section called “Relational operators in PowerBuilder” in PowerScript Reference.

C0018 Compiler Error

Message text

Cannot use dot operator on expression of undetermined type.

C0019 Compiler Error

Message text

Incompatible property property for type type.

Explanation

Error C0019 is generated when you try to access a property that does not exist. The window w_compiler has an instance variable, integer xyz, but it does not have an instance variable named abc. The last line in this code in the open event of the window generates C00019: Incompatible property abc for type w_compiler:

integer li_num
li_num = w_compiler.xyz // compiles without error
li_num = w_compiler.abc // generates C0019

C0020 Compiler Error

Message text

Function with no return value used in expression.

Explanation

In a custom class user object, two functions are defined. Function f1 has no return value. The following script in function f2 generates C0020:

int li_num
li_num=1+f1()  //generates C0020

C0021 Compiler Error

Message text

Global variables must be declared outside a routine.

Explanation

In a custom class user object, a function f1 is defined. The following statement in function f1 generates C0021:

global char lc_ch  //generates C0021

The global variable char lc_ch should be defined on the Declare Global Variables tab in the Script view.

See Also

Where to declare variables in the section called “Where to declare variables” in PowerScript Reference.

C0022 Fatal Compiler Error

Message text

Error Internal overflow, script is too large.

C0023 Compiler Error

Message text

Script is too large: divide script into multiple events or functions.

C0024 Compiler Error

Message text

Cannot mix valued enumerated properties with non-valued enumerated properties.

C0025 Compiler Error

Message text

Illegal datatype for parent: type.

Explanation

The following source code for a custom class user object generates C0025:

forward
global type my_nvo from nonvisualobject
end type
end forward

global type my_nvo from my_nvo //generates C0025
end type
global my_nvo my_nvo

C0026 Compiler Error

Message text

Cannot inherit from enumerated type: type.

Explanation

The following source code for a custom class user object generates C0026:

forward
global type my_nvo from nonvisualobject
end type
end forward

global type my_nvo from border //generates C0026
end type
global my_nvo my_nvo

C0027 Compiler Error

Message text

Error opening routine: routine.

C0028 Compiler Error

Message text

Event event is illegal for current object.

C0029 Compiler Error

Message text

System event type event not found.

C0030 Fatal Compiler Error

Message text

Stack overflow in parser.

C0031 Compiler Error

Message text

Syntax error.

C0032 Fatal Compiler Error

Message text

Undetermined error.

C0033 Compiler Error

Message text

Error creating obtypeid.h.

C0034 Compiler Error

Message text

Error opening typedef.scr.

C0035 Compiler Error

Message text

Unclosed comment beginning at line: number.

C0036 Compiler Error

Message text

Illegal symbol: symbol.

C0037 Compiler Error

Message text

Unclosed quoted string.

C0038 Database Error

Message text

Error string generated by the DBMS.

Explanation

This string is generated by the database management system to which you are connected. For example, if you are using the PowerBuilder Desktop edition and you attempt to use a SQL Anywhere stored procedure, you see the following error message:

Database   C0038: The PowerBuilder Desktop edition does not support stored procedures.

C0039 Compiler Error

Message text

Cursor/Procedure (procedure) has not been declared.

Explanation

The following script in a function generates C0039 because the cursors li_a and abc have not been declared:

int li_a
DECLARE curs CURSOR FOR
SELECT employee.emp_id
FROM employee
WHERE employee.salary > 1000;

OPEN curs; // compiles
OPEN li_a; // generates C0039
OPEN abc; // generates C0039

The following script in a function generates C0039 because the procedures li_a and abc have not been declared:

int li_a
DECLARE proc PROCEDURE FOR procname;
EXECUTE proc; // compiles
EXECUTE li_a; // generates C0039
EXECUTE abc; // generates C0039

C0040 Compiler Error

Message text

Cursor/Procedure procedure has already been declared.

C0041 Compiler Error

Message text

Count mismatch between fetch and declare variable references.

C0042 Compiler Error

Message text

Cannot compile without valid database sign-on.

C0043 Compiler Error

Message text

Database command must reference transaction object.

Explanation

The following script in a function generates C0043 because the cursor curs and procedure proc do not reference transaction objects:

int li_a = 1
transaction trans
transaction trans_arr[5]

CONNECT USING sqlca; // ok - default transaction
COMMIT USING trans; // ok - declared transaction

DECLARE curs CURSOR FOR
SELECT employee.emp_id
INTO :li_a
FROM employee
WHERE employee.salary > 1000
USING li_a; // error - integer, not transaction

DECLARE proc PROCEDURE FOR procname
USING trans_arr; // error - array
DELETE FROM employee
WHERE emp_id<200
USING trans_arr[1]; // ok - array element

See Also

Using SQL in scripts in the section called “Using SQL in scripts” in PowerScript Reference.

C0044 Compiler Error

Message text

Variable reference in database statement has unsupported datatype.

Explanation

The following script in a function in the custom class user object n_nvo generates C0044 because the integer array and nonvisualobject datatypes are not supported:

int idnum = 0    // ok
int int_arr[]    // error
char char_arr[]  // ok
n_nvo n          // error

int minsalary = 1000
SELECT employee.emp_id
INTO :idnum, :int_arr, :char_arr, :n // generates C0044
FROM employee
WHERE employee.salary > :minsalary;

See Also

Using SQL in scripts in the section called “Using SQL in scripts” in PowerScript Reference.

C0045 Compiler Error

Message text

Indicator variable reference in database statement must be an integer.

Explanation

The following script in a function in the custom class user object n_nvo generates C0045 because the integer array and nonvisualobject datatypes are not supported:

int idnum = 0
char char_arr[]
int li_ind    //ok
char lc_ind   //error

int minsalary = 1000

SELECT employee.emp_id
INTO :idnum :li_ind, :char_arr :lc_ind 
FROM employee
WHERE employee.salary > :minsalary;

See Also

Using SQL in scripts in the section called “Using SQL in scripts” in PowerScript Reference.

C0046 Compiler Error

Message text

Illegal datatype for within clause: type.

Explanation

If you edit the source of a window, you will notice "within" clauses like the following: type cb_1 from commandbutton within w_1. Changing the object referenced in the within clause can cause this error.

C0047 Compiler Error

Message text

Simple datatype illegal for statement statement: type.

C0048 Compiler Error

Message text

Enumerated datatype illegal for statement statement: type.

C0049 Compiler Error

Message text

Illegal datatype for on statement: type.

C0050 Compiler Error

Message text

Datatype type must be created in context of its 'within' class.

C0051 Compiler Error

Message text

Unknown function name: function.

Explanation

The following script in a function in a custom class user object generates C0051 because the function openn() does not exist:

openn() // generates C0051
return 1

C0052 Compiler Error

Message text

Bad argument list for function: function.

Explanation

Consider two functions defined on a custom class user object. Function f1 takes one integer argument by value. The following script in function f2 generates C0052 because "a" is declared as a char:

char a
f1(a) // generates C0052

C0053 Compiler Error

Message text

Duplicate symbol symbol in library library.

C0054 Database Error

Message text

Database command not supported for this DBMS.

C0055 Compiler Error

Message text

Illegal for loop counter variable type: type.

Explanation

You cannot initialize a FOR loop with a non-numeric datatype. The following script generates C0055:

char lc_ch
for lc_ch= 1 to 3 // generates C0055: Illegal for loop
                  // counter variable type: character
   ...
next

See Also

FOR...NEXT in the section called “FOR...NEXT” in PowerScript Reference.

C0056 Compiler Error

Message text

Illegal for loop initializer expression type: type.

Explanation

You cannot use a non-numeric datatype in an expression in a FOR loop. . The following script generates C0056:

char lc_ch = 'a'
int li_num
for li_num = lc_ch to 3 // generates C0056: Illegal for
                       // loop initializer expression
                       // type: character
   ...
next

See Also

FOR...NEXT in the section called “FOR...NEXT” in PowerScript Reference.

C0057 Compiler Error

Message text

Illegal for loop terminator expression type: type.

Explanation

You cannot use a non-numeric datatype in an expression in a FOR loop. The following script generates C0057:

char lc_ch = 'a'
int li_num
for li_num = 1 to lc_ch // generates C0057: Illegal for
                       // loop terminator expression
                       // type: character
   ...
next

See Also

See DO...LOOP and FOR...NEXT in the section called “DO...LOOP” in PowerScript Reference and the section called “FOR...NEXT” in PowerScript Reference.

C0058 Compiler Warning

Message text

Exit statement occurs outside loop construct.

Explanation

Both these functions generate C0058:

// function f1
boolean lb_bool
int li_num
do while lb_bool
   li_num++
   exit
loop
exit  // generates C0058
// function f2
int li_num
for li_num=1 to 4
   li_num++
next
exit  // generates C0058

These functions compile without errors:

// function f1
boolean lb_bool
int li_num
do while lb_bool
   li_num++
   exit
loop
// function f2
int li_num
for li_num=1 to 4
   li_num++
   exit
next

See Also

See DO...LOOP and FOR...NEXT in the section called “DO...LOOP” in PowerScript Reference and the section called “FOR...NEXT” in PowerScript Reference.

C0059 Compiler Warning

Message text

Continue statement occurs outside loop construct.

Explanation

This function generates C0059:

int li_num
for li_num=1 to 4
   li_num++
next
continue

This function compiles without errors:

int li_num
for li_num=1 to 4
   li_num++
   continue
next

See Also

See DO...LOOP and FOR...NEXT in the section called “DO...LOOP” in PowerScript Reference and the section called “FOR...NEXT” in PowerScript Reference.

C0060 Compiler Error

Message text

Illegal enumerated constant: constant.

Explanation

This script generates C0059: Illegal enumerated constant: happiness:

border lb_a = box!
border lb_b = happiness!

C0061 Compiler Error

Message text

Current object has no parent.

Explanation

This statement in the open event of a window generates C0061:

parent.width = 1000 // generates C0061

A window has no parent. Its properties can be accessed using the pronoun "this" or using the pronoun "parent" with a control on the window. This statement in the open event of the window compiles without error:

this.width = 1000 

This statement in the clicked event of a button on the window produces the same result:

parent.width = 1000 

C0062 Compiler Error

Message text

Invalid case.

C0063 Compiler Error

Message text

Invalid operand type for Dot operator: type.

Explanation

These statements generate C0063: Invalid operand type for Dot operator: integer:

int li_a,li_b
li_a = li_a.li_b // generates C0063

C0064 Compiler Error

Message text

Invalid ~ octal character sequence in string.

Explanation

This statement generates C0064. Octals can contain only the digits 0 through 7:

string ls_b = "~o128" // generates C0064

This statement compiles correctly and the string ls_b is set to the uppercase letter W:

string ls_b = "~o127"

See Also

Special ASCII characters in the section called “Special ASCII characters” in PowerScript Reference.

C0065 Compiler Error

Message text

Invalid ~ hex character sequence in string.

Explanation

This statement generates C0065. Hexadecimals can contain only the digits 0 through 9 and the letters A through F:

string ls_b = "~h4H" // generates C0065

This statement compiles correctly and the string ls_b is set to the uppercase letter O:

string ls_b = "~h4F"

See Also

Special ASCII characters in the section called “Special ASCII characters” in PowerScript Reference.

C0066 Compiler Error

Message text

Invalid ~ decimal character sequence in string.

Explanation

These statements generate C0066. Decimals must contain three digits in the range 000 to 255:

string ls_a = "~266" // generates C0066
string ls_b = "~3" // generates C0066

This statement compiles correctly and the string ls_b is set to the uppercase letter B:

string ls_b = "~066"

See Also

Special ASCII characters in the section called “Special ASCII characters” in PowerScript Reference.

C0067 Compiler Error

Message text

Illegal to use array as for loop counter variable.

Explanation

This sample generates C0067:

int li_a
int li_arr[2]
int li_brr[2,2]

for li_arr=li_arr[1] to li_brr[2,2]  // generates C0067
   beep(1)
next

for li_brr=li_a to li_brr[2,2]  // generates C0067
   beep(1)
next

C0068 Compiler Error

Message text

Illegal use of array in expression.

Explanation

The following samples generate C0068:

// Example 1
int li_arr[2]
li_arr+=1 // generates C0068
int li_b[2]={1,2}
li_b=1+{1} // generates C0068
// Example 2
int li_arr[2]
int li_a
li_a = li_arr.abc // generates C0068
// Example 3
int li_arr[2], li_int
char lc_arr[2]
string ls_str

if li_int > 5 then 
   ...
elseif lc_arr < "ab" then //char arr<literal string (ok)
   ...
elseif ls_str >= lc_arr then //string >= char arr (ok)
   ...
elseif li_arr <= "ab" then //int arr <= literal string
                            // generates C0068
   ...
elseif "ab" <= li_arr then //literal string <= int arr
                            // generates C0068
   ...
end if 
// Example 4
int li_arr[2]
boolean lb_a

if li_arr and lb_a then // generates C0068 and C0003
   ...
end if
// Example 5
int li_arr[2]
int li_a
boolean lb_a

lb_a = not li_arr[] // generates C0068
li_a = -li_arr // generates C0068
// Example 6
int li_arr[2]
int li_a

li_a = 5 * li_arr // generates C0068
// Example 7
int li_arr[2]
char lc_arr[2]
int li_a
string ls_a
char lc_a

ls_a = lc_arr + ls_a // char array + string (ok)
ls_a = lc_arr + lc_a // char array + char (ok)
ls_a = ls_a + lc_arr // string + char array(ok)
ls_a = lc_a + lc_arr // char + char array (ok)
ls_a = lc_arr + lc_arr // char array + char array (ok)

// The following statements generate C0068
li_a = li_arr + li_arr // int array + int array (error)
li_a = li_arr + 5 // int array + int (error)
li_a = 5 + li_arr // int + int array (error) 
// Example 8
int li_arr[2]
char lc_arr[2]
string ls_str

if li_arr[1] = 5 then 
elseif lc_arr = "ab" then //char arr=literal string (ok)
elseif ls_str = lc_arr then //string = char arr (ok)
elseif li_arr = "ab" then //int arr = literal string
                          // generates C0068 and C0011
elseif "ab" = li_arr then //literal string = int arr
                          // generates C0068 and C0011
end if

C0069 Compiler Error

Message text

Subscripted expression not an array.

Explanation

This sample generates C0069:

int li_arr[10]
int li_1a,li_1b
int li_1arr[2]

for li_1b=li_1a[1] to li_1a[2] // generates C0069 for
                               // li_la[1] and li_la[2]
   ...
next

int li_2arr[3]={1,2,3}
int li_2b
constant int li_2c=1
int li_2d=li_2arr[li_2b]*li_2b[li_2arr[li_2c]]
                                   // generates C0069
li_1a = li_arr[3] //ok

C0070 Compiler Error

Message text

Mixing array and non-array in assignment statement.

Explanation

With the following variables declared as instance variables:

int ii_arr[2]
int ii_b

this script in a function generates C0070:

int li_arr[4] = {0, 1, 2, 3} // ok
int li_a = {0, 1, 2, 3} // generates C0070
this.ii_arr = {1,2} // ok
this.ii_b = {1,2} // generates C0070
int li_brr[3]
li_brr = {4,5,6} // ok
int li_bli_b = {4,5,6} // generates C0070

C0071 Compiler Error

Message text

Out-of-date entry referenced during compile: entry.

C0072 Compiler Error

Message text

Decimal precision value out of range: number.

Explanation

This statement generates C0072: Decimal precision value out of range: 39:

decimal {39} ld_a = 3.14159265 // generates C0072

This statement compiles successfully:

decimal {28} ld_a = 3.14159265

C0073 Compiler Warning

Message text

{"number"} meaningless with type type.

Explanation

This statement generates C0073: {3} meaningless with type string:

constant string {3} ls_str="aaa" // generates C0073

This statement generates C0073: {1} meaningless with type integer:

int {1} li_a[3]={1} // generates C0073

These statements compile successfully:

constant string ls_str="aaa"
int li_a[3]={1}
decimal {28} ld_a = 3.14159265

C0074 Compiler Error

Message text

Illegal array declaration.

Explanation

For fixed-size arrays, you can use TO to specify a range of element numbers (instead of a dimension size) for one or more of the dimensions. The syntax is:

[ lowerbound1 TO upperbound1 {, lowerbound2 TO upperbound2}...]

The upperboundn value must be greater than the lowerboundn value. These statements generate C0074, because the upper bound is greater than the lower bound:

int li_array1[10 to 5] // generates C0074
int li_array2[1 to 9,3 to 1] // generates C0074

This statement compiles successfully:

int li_array3[1 to 9,3 to 6] 

C0075 Compiler Warning

Message text

Decimal precision value used in function declaration ignored.

C0076 Compiler Error

Message text

Duplicate subroutine reference: subroutine.

C0077 Compiler Error

Message text

Integer constant out of range, max = 18446744073709551615.

Explanation

The maximum range for a longlong variable, which is the longest integer type supported in PowerScript, is from -9223372036854775808 to 9223372036854775807. These statements all generate C0077, because they all exceed the maximum value of 18446744073709551615 (9223372036854775808 + 9223372036854775807):

constant longlong lll_a = 18446744073709551616 
longlong lll_b = 18446744073709551616/2
constant long ll_a = 18446744073709551616
int li_a = 18446744073709551616

These statements compile successfully, but you should be aware that you should not exceed the limits for each type specified in the documentation, because your code will fail at runtime:

constant longlong lll_a = 18446744073709551615 
longlong lll_b = 18446744073709551615/2
constant long ll_a = 18446744073709551615
int li_a = 18446744073709551615

These statements compile successfully and the values specified are valid at runtime:

constant longlong lll_a = 9223372036854775807 
longlong lll_b = 9223372036854775807/2
constant long ll_a = 2147483647
int li_a = 32767

C0078 Compiler Error

Message text

Invalid time constant.

Explanation

Two of the following statements generate C0078 because they exceed the maximum range for the time datatype of 00:00:00 to 23:59:59:999999:

constant time lt_a=25:05:08 // generates C0078
constant time lt_b=23:59:59 // ok
constant time lt_c=23:59:59.999999 // ok
constant time lt_d=23:59:59.1000000 // generates C0078

C0079 Compiler Error

Message text

Invalid date constant.

Explanation

Two of the following statements generate C0079. The ranges for each part of the date datatype are 1000 to 3000 for the year, 01 to 12 for the number of the month, and 01 to 31 for the day. In the first statement, both the month and day are out of range. In the third statement, there was no February 29 in the year 1900, but there was one in 2004, so the second statement compiles successfully:

constant date ld_a=1234-34-34 // generates C0079
constant date ld_b=2004-02-29 // ok
constant date ld_c=1900-02-29 // generates C0079

C0080 Compiler Error

Message text

Invalid object name: object.

C0081 Compiler Error

Message text

Duplicate variable: variable.

Explanation

Declaring a variable with the same name twice in the same script generates C0081: Duplicate variable: li_a:

int li_a
...
int li_a[4]// generates C0081

C0082 Compiler Error

Message text

Reference argument must be a non-constant and non-readonly variable reference.

Explanation

If two functions are defined on a custom class user object, and function f1 takes one integer argument by reference, the following script in function f2 generates C0082:

f1(6) // generates C0082

C0083 Compiler Error

Message text

Illegal for loop step value.

Explanation

The increment values in the STEP clauses in some of the following FOR loops generate C0083. Any increment value that evaluates to 0 generates the error. For example, for integer variables, 0.1 is rounded down to 0 and generates the error, while 2.3 is rounded down to 2.

For an integer, -1E-1 evaluates to 0 and the error is generated, but for decimal and real values, it evaluates to a small negative number and the error is not generated. However, the FOR loop will not be entered at runtime if the ending value of the variable is greater than the starting value.

int li_a
long ll_a
longlong lll_a
dec ld_a
real lr_a

// Integer variables
for li_a=1 to 5 step 0 // generates C0083
...
next

for ll_a=1 to 5 step 0.1 // generates C0083
...
next

for lll_a=1 to 5 step 2.3 // ok
...
next

for li_a=1 to 5 step -1E-1 // generates C0083
...
next

// Decimal variables
for ld_a=1 to 5 step 0.1 // ok
...
next

for ld_a=1 to 5 step -1E-1 // ok
...
next

for ld_a=1 to 5 step 0.0 // generates C0083
...
next

// Real variables
for lr_a=1 to 5 step 0.1 // ok
...
next

for lr_a=1 to 5 step -1E-1 // ok
...
next

for lr_a=1 to 5 step 0E1 // generates C0083
...
next

C0084 Compiler Error

Message text

Bad number of arguments for function: function.

Explanation

If two functions are defined on a custom class user object and function f1 takes one integer argument by value, the following script in function f2 generates C0084:

int a, b
f1(a, b) // generates C0084

C0085 Compiler Error

Message text

Invalid variable declaration initialization.

C0086 Compiler Warning

Message text

Duplicate instance variable name: variable.

Explanation

Declaring an instance variable with the same name twice for the same object generates C0086: Duplicate instance variable name: li_a:

int li_a
...
int li_a[4]// generates C0086

C0087 Compiler Warning

Message text

Instance variable with same name as property: variable.

C0088 Compiler Warning

Message text

Duplicate property name: property.

C0089 Compiler Warning

Message text

Maximum string constant length exceeded.

C0090 Compiler Error

Message text

Incompatible types in array list expression: type1, type2.

Explanation

The first statement in this example generates C0090: Incompatible types in array list expression: long, string. The second statement generates C0090: Incompatible types in array list expression: real, boolean:

int li_arr[2]={1,'a'} // generates C0090
long ll_arr[4] = {1, 2.3, 4E3, true} // generates C0090

C0091 Compiler Error

Message text

Returned expression cannot be an array.

Explanation

The return statement in this example generates C0091:

int li_arr[2]={1,2}
return li_arr // generates C0091

C0092 Compiler Error

Message text

Return expression in subroutine.

Explanation

The return statement in this function that was defined as returning no value generates C0092:

return 10 // generates C0092

C0093 Compiler Error

Message text

Incompatible type type returned for function.

Explanation

The return statement in this function that was defined as returning no value generates C0093 and C0094:

string a
return a // generates C0093 and C0094

C0094 Compiler Error

Message text

Routine must return a value.

Explanation

Omitting the return statement in a function that was defined as returning a value generates C0094.

C0095 Compiler Error

Message text

Reserved keyword 'type' used as a variable.

C0096 Compiler Error

Message text

Referencing number dimensional array with number subscripts.

Explanation

The FOR statement in this function generates C0096: Referencing 3 dimensional array with 2 subscripts:

int li_num,li_arr[2,2,1]={1,2,3,4}
for li_num=li_arr[1,1] to 5 // generates C0096
...
next 

C0097 Compiler Error

Message text

Invalid statement.

C0098 Compiler Error

Message text

Function qualifier type type not ancestor of current object.

C0099 Compiler Warning

Message text

Fixed length binary arrays not supported; using unbounded.

Explanation

The second statement in this example generates C0099. The third statement defined an unbounded array of blobs:

blob {5} lb_a 
blob {5} lb_arr[] // generates C0099
blob lb_arr2[]

C0100 Compiler Error

Message text

Initialization of binary variables not supported.

Explanation

Attempting to initialize a blob generates C0100:

blob lb_a=1 // generates C0100

C0101 Compiler Error

Message text

Referenced object object is out of date, must be converted.

C0102 Compiler Error

Message text

Dynamic SQL command variable must be a string.

Explanation

You can use only string variables in dynamic SQL commands. The following sample generates C0102:

int li_a

prepare sqlsa from :li_a; // generates C0102
execute immediate :li_a; // generates C0102

This sample compiles without error:

string ls_a

prepare sqlsa from :ls_a; // ok
execute immediate :ls_a; // ok

See Also

Using dynamic SQL in the section called “Using dynamic SQL” in PowerScript Reference.

C0103 Compiler Error

Message text

Dynamic SQL command must reference DynamicStagingArea object.

Explanation

PowerBuilder has four dynamic SQL formats. You must reference a DynamicStagingArea object in some dynamic SQL commands. For more information, see SQL Statements in PowerScript Reference for more information.

The last five statements in this example generate C0103 because they reference a DynamicDescriptionArea object (sqlda) or other variables instead of a DynamicStagingArea object (sqlsa):

string str
int num
long l
int numarr[]
throwable t

prepare sqlsa from :str;
describe sqlsa into sqlda;
execute sqlsa using :num;
declare my_cursor dynamic cursor for sqlsa;
declare my_proc dynamic procedure for sqlsa;

// The following statements generate C0103
prepare num from :str; 
describe numarr into sqlda; 
execute sqlda using :num; 
declare my_cursor1 dynamic cursor for t; 
declare my_proc1 dynamic procedure for l; 

See Also

Using dynamic SQL in the section called “Using dynamic SQL” in PowerScript Reference.

C0104 Compiler Error

Message text

Open/execute command with parameters must reference dynamic cursor/procedure.

Explanation

PowerBuilder has four dynamic SQL formats. If you use an OPEN or EXECUTE statement that has parameters, you must reference a dynamic cursor or procedure. For more information, see SQL Statements in PowerScript Reference for more information.

Two statements in this example generate C0104 because they reference a cursor or procedure that was not declared using the DYNAMIC keyword:

int li_a

declare curs cursor for select emp_id from employee;
declare dyncurs dynamic cursor for sqlsa;
declare proc procedure for webchanged;
declare dynproc dynamic procedure for sqlsa;

open dynamic curs using :li_a; // generates C0104
execute dynamic proc using :li_a; // generates C0104

open dynamic dyncurs using :li_a; // ok
execute dynamic dynproc using :li_a;// ok

See Also

Using dynamic SQL in the section called “Using dynamic SQL” in PowerScript Reference.

C0105 Compiler Error

Message text

Dynamic SQL command must reference DynamicDescriptionArea object.

Explanation

PowerBuilder has four dynamic SQL formats. You must reference a DynamicDescriptionArea object in some dynamic SQL commands. For more information, see SQL Statements in PowerScript Reference for more information.

The last three statements in this example generate C0105 because they reference a DynamicStagingArea object (sqlsa) or other variables instead of a DynamicDescriptionArea object (sqlda):

int num
int numarr[]
throwable t

declare proc procedure for webchanged;
declare dynproc dynamic procedure for sqlsa;
declare dyncursor dynamic cursor for sqlsa;

fetch proc using descriptor sqlda;
execute dynamic dynproc using descriptor sqlda;
open dynamic dyncursor using descriptor sqlda;

declare proc1 procedure for webchanged;
declare dynproc1 dynamic procedure for sqlsa;
declare dyncursor1 dynamic cursor for sqlsa;

// The following statements generate C0105
fetch proc using descriptor num;
execute dynamic dynproc using descriptor numarr;
open dynamic dyncursor using descriptor t;

See Also

Using dynamic SQL in the section called “Using dynamic SQL” in PowerScript Reference.

C0106 Compiler Error

Message text

'Super' keyword can be used only within an inherited type.

See Also

Using dynamic SQL in the section called “Using dynamic SQL” in PowerScript Reference.

C0107 Compiler Error

Message text

Open/execute command with descriptor must reference dynamic cursor/procedure.

Explanation

PowerBuilder has four dynamic SQL formats. If you use an OPEN or EXECUTE statement with a descriptor, you must reference a dynamic cursor or procedure.

Two statements in this example generate C0107 because they reference a cursor or procedure that was not declared using the DYNAMIC keyword:

int li_a

declare curs cursor for select emp_id from employee;
declare dyncurs DYNAMIC cursor for sqlsa;
declare proc procedure for webchanged;
declare dynproc DYNAMIC procedure for sqlsa;

// The following statements generate C0107
open dynamic curs using descriptor sqlda; 
execute dynamic proc using descriptor sqlda; 

// The following statements compile without error
open dynamic dyncurs using descriptor sqlda; 
execute dynamic dynproc using descriptor sqlda; 

See Also

FOR...NEXT in the section called “FOR...NEXT” in PowerScript Reference.

C0108 Compiler Error

Message text

Database command must reference blob variable.

C0109 Compiler Error

Message text

Private or protected function cannot be accessed: function.

Explanation

You cannot access a private or protected function in another object. In this example, of_add is a protected function in n_math that is being called from another object:

integer li_result
li_result = n_math.of_add(10, 20) // generates C0109

See Also

Working with User-Defined Functions.

C0110 Compiler Warning

Message text

Mixing signed and unsigned values in for statement

Explanation

Two statements in this example generate C0110 because they mix int and uint values in the FOR statement:

int li_a, li_b, li_c
uint lu_a, lu_b, lu_c

for li_a = li_b to li_c // both int values
   ...
next
for lu_a = lu_b to lu_c // both uint values
   ...
next
for li_a = li_b to lu_c // generates C0110
   ...
next
for lu_a = li_b to lu_c // generates C0110
   ...
next

C0111 Compiler Error

Message text

Maximum script size exceeded.

C0112 Compiler Error

Message text

Incompatible types in array assignment: type1, type2.

Explanation

This example generates C0112 because it mixes int and char values in the array assignment:

int li_arr[2] = {'a','b'}
char lc_arr[2] = {3, 0.2}
int arr[]

arr = {'a', 'b', 'c'}

See Also

Assignment statement in the section called “Assignment” in PowerScript Reference.

C0113 Compiler Error

Message text

Error reading object source entry: source.

C0114 Compiler Error

Message text

Error scanning object source entry: source.

C0115 Compiler Error

Message text

Array subscript is out of bounds.

C0116 Compiler Error

Message text

Reference argument type does not match function definition: type.

C0117 Compiler Error

Message text

Illegal datatype for increment statement: type.

Explanation

The datatype of the variable used with the increment assignment shortcut must be a datatype that can be incremented, such as a numeric or Any datatype. Other datatypes, such as Char or String, generate C0117, as shown in this example:

int li_a
any la_a
char lc_a

li_a++ // ok
la_a++ // ok
lc_a++ // generates C0117

See Also

Assignment statement in the section called “Assignment” in PowerScript Reference.

C0118 Compiler Error

Message text

Illegal datatype for decrement statement: type.

Explanation

The datatype of the variable used with the decrement assignment shortcut must be a datatype that can be decremented, such as a numeric or Any datatype. Other datatypes, such as Char or String, generate C0118, as shown in this example:

int li_a
any la_a
char lc_a

li_a-+ // ok
la_a-+ // ok
lc_a-+ // generates C0118

See Also

Assignment statement in the section called “Assignment” in PowerScript Reference.

C0119 Compiler Error

Message text

Invalid function template argument: argument.

C0120 Compiler Error

Message text

Invalid number of indirect property templates.

C0121 Compiler Error

Message text

Invalid indirect property.

C0122 Compiler Error

Message text

Function argument differs from ancestor only by pass by reference or value for function function.

C0123 Compiler Error

Message text

Function function differs from ancestor only by return type.

C0124 Compiler Error

Message text

Illegal expression on left side of assignment.

Explanation

The expression on the left side of an assignment must be the name of a variable or object property to which you want to assign a value. For example, the classname function returns the class of an object. You cannot assign a value to it:

powerobject po
po = create powerobject
po.classname() = "newname" // generates C0124

// these statements assign the string 
// powerobject to ls_classname
string ls_classname
ls_classname = po.classname()

See Also

Assignment statement in the section called “Assignment” in PowerScript Reference.

C0125 Compiler Error

Message text

Event qualifier type type not ancestor of current object.

C0126 Compiler Error

Message text

Function has conflicting argument or return type in ancestor.

C0127 Compiler Error

Message text

Invalid host variable or SQL name.

C0128 Compiler Error

Message text

Only one variable allowed in INTO clause of SelectBlob command.

Explanation

The INTO clause in a SELECTBLOB statement can contain only one variable:

blob lb_a, lb_b
selectblob catalog_picture
into :lb_a
from product;

selectblob catalog_picture
into :lb_a, :lb_b      // generates C0128
from product;

See Also

SELECTBLOB statement in the section called “SELECTBLOB” in PowerScript Reference.

C0129 Compiler Warning

Message text

Indicator variables not supported in SelectBlob command.

Explanation

A special type of integer variable called an indicator variable is used in SELECT, FETCH, UPDATE, UPDATE WHERE CURRENT, and INSERT commands to identify null values and in SELECT and FETCH commands to identify truncated output strings. The use of indicator variables in SELCTBLOB statements is restricted.

See Also

SELECTBLOB statement in the section called “SELECTBLOB” in PowerScript Reference.

C0130 Compiler Error

Message text

Invalid keyword keyword used in a method call.

C0131 Compiler Error

Message text

Duplicate keyword keyword used in a method call.

Explanation

You cannot use the same keyword more than once when calling a function or event. This example repeats the use of the DYNAMIC keyword:

dynamic f2()
dynamic dynamic f2() // generates C0131
dynamic post dynamic f2() // generates C0131

See Also

Syntax for calling PowerBuilder functions and events in the section called “Syntax for calling PowerBuilder functions and events” in PowerScript Reference.

C0132 Compiler Error

Message text

The DYNAMIC keyword can be specified only once per method call.

Explanation

You cannot use the DYNAMIC keyword more than once when calling a function or event. In this example, a nonvisualobject mynvo has a simple function, returnself, that takes a nonvisual object as an argument and returns the nonvisualobject. The following example shows a second function that calls the returnself function iteratively, effectively repeating the use of the DYNAMIC keyword:

mynvo a,b,c,d

returnself(a).dynamic returnself(returnself(b).dynamic returnself(c)).returnself(d) // ok

returnself(a).returnself(dynamic returnself(b).dynamic returnself(c)).returnself(d) // generates C0132

returnself(a).dynamic returnself(returnself(b).returnself(c)).dynamic returnself(d) // generates C0132

See Also

Using cascaded calling and return values in the section called “Using cascaded calling and return values” in PowerScript Reference.

C0133 Compiler Error

Message text

The POST keyword can be applied only to the last method in a sequence of calls.

Explanation

In a sequence of calls, you can apply the POST keyword only to the last method in the sequence because POST makes the return value unavailable to the caller. Calls before the last call must return a valid object that can be used by the following call. In this example, a nonvisualobject mynvo has several simple functions, return1, return2, and so on, each of which takes a nonvisual object as an argument and returns the nonvisualobject. The following code shows another function that uses the POST keyword incorrectly:

mynvo a,b,c,d

return0(a).post return1(d) // ok
return0(a).post return1(d).post // generates C0133

return2(a).post return3(return4(b).return5(c)).post return6(d) // generates C0133

See Also

Using cascaded calling and return values in the section called “Using cascaded calling and return values” in PowerScript Reference.

C0134 Compiler Error

Message text

The STATIC keyword cannot override the DYNAMIC keyword.

Explanation

If you use the DYNAMIC keyword in a chain of cascaded calls, it carries over to all function calls that follow. You cannot apply the STATIC keyword to calls that follow the DYNAMIC keyword. In this example, a nonvisualobject mynvo has a simple function, returnself, that takes a nonvisual object as an argument and returns the nonvisualobject. The following code shows two statements that generate C0134 because the STATIC keyword follows the DYNAMIC keyword:

mynvo a,b,c,d

returnself(a).static returnself(b).dynamic returnself(c) // ok
returnself(a).dynamic returnself(b).static returnself(c) // generates C0134
d = dynamic returnself(a).returnself(b).static returnself(c) // generates C0134

See Also

Static versus dynamic calls in the section called “Static versus dynamic calls” in PowerScript Reference.

C0135 Compiler Error

Message text

The keywords keyword1 and keyword2 cannot be applied to the same method.

Explanation

When you call a function or event, you can only use one of the following pairs of keyword: FUNCTION and EVENT, STATIC and DYNAMIC, and TRIGGER and POST.

// generates C0135: The keywords function and event 
// cannot be applied to the same method
function event f1()

// generates C0135: The keywords static and dynamic 
// cannot be applied to the same method
static dynamic f1() 

// generates C0135: The keywords trigger and post 
// cannot be applied to the same method
trigger post f1() 

See Also

Syntax for calling PowerBuilder functions and events in the section called “Syntax for calling PowerBuilder functions and events” in PowerScript Reference.

C0136 Compiler Error

Message text

It is illegal to POST a method whose result is needed as an argument value, or for a subsequent expression.

Explanation

In this example, a nonvisualobject has a simple function, f2, that takes an integer argument and returns 1. The following code shows another function that uses the POST keyword incorrectly:

int li_a = post f2(1) // generates C0136
int li_b

li_b = 5 + post f2(2) // generates C0136
li_b = f2(post f2(3)) // generates C0136
post f2(4) // ok

See Also

Triggering versus posting functions and events in the section called “Triggering versus posting functions and events” in PowerScript Reference.

C0137 Compiler Error

Message text

Qualified Class is not supported on a DYNAMIC method call.

C0138 Compiler Error

Message text

It is illegal to POST an INTRINSIC method.

Explanation

Some built-in PowerScript functions, including Int, Abs, Blob, Ceiling, Exp, Len, Max, Min, IsValid, Trim, and Upper, cannot be posted because of the way they are handled internally. For example:

post MessageBox("", "") //ok
post blob("") // generates C0138

See Also

Triggering versus posting functions and events in the section called “Triggering versus posting functions and events” in PowerScript Reference.

C0139 Compiler Error

Message text

Illegal datatype for CREATEUSING statement: type. Must be a non-array variable or expression resulting in a STRING or an ANY.

Explanation

You cannot use an array or any expression that does not result in an Any or String datatype in a CREATE USING statement:

string ls_arr[3]
int li_a
any la_a, la_a2

la_a2 = create using la_a      // ok - any
la_a2 = create using ls_arr[1] // ok - results in string
la_a2 = create using ls_arr    // array -generates C0139
la_a2 = create using li_a       // int - generates C0139

See Also

CREATE in the section called “CREATE” in PowerScript Reference.

C0140 Compiler Error

Message text

The datatype for a CONSTANT property or variable must be either a simple non-object type or an enumerated type.

Explanation

You cannot use the CONSTANT keyword when you declare an object of system object type:

constant commandbutton cb_1 // generates C0140
constant transaction mytrans // generates C0140
constant border mybordertype = raised!// ok
commandbutton cb_2 // ok
transaction mytrans2 // ok

See Also

Declaring constants in the section called “Declaring constants” in PowerScript Reference.

C0141 Compiler Error

Message text

A property or variable marked as CONSTANT must have an initializing value or expression.

Explanation

You must supply an initial value when you declare a constant:

constant int li_a // generates C0141
constant date ld_a // generates C0141
constant int li_b = 100 // ok
constant date ld_b = today() // ok

See Also

Declaring constants in the section called “Declaring constants” in PowerScript Reference.

C0142 Compiler Error

Message text

A property or variable marked as CONSTANT cannot be an array.

Explanation

You cannot use the CONSTANT keyword when you declare an array:

constant int li_arr[3] // generates C0142
constant date ld_arr[2] // generates C0142

See Also

Declaring constants in the section called “Declaring constants” in PowerScript Reference.

C0143 Compiler Error

Message text

A property property can be modified only in an event or function in its parent class.

C0144 Compiler Error

Message text

Multiple routines named routine were found that match this set of arguments, causing an ambiguous match.

C0145 Compiler Error

Message text

A READONLY argument cannot be assigned into or passed to a function or event as a reference argument.

Explanation

The function f2 takes an integer argument by reference. The following function, f1, takes a readonly integer argument:

f2(ai_readonly) // generates C0145
ai_readonly = 1 // generates C0145
return 1 

See Also

Passing arguments to functions and events in the section called “Passing arguments to functions and events” in PowerScript Reference.

C0146 Informational Message

Message text

The identifier identifier conflicts with an existing global variable with this name. The new definition of identifier will take precedence and the prior value will be ignored until this version of identifier goes out of scope.

C0147 Informational Message

Message text

The identifier identifier conflicts with an existing shared variable with this name. The new definition of identifier will take precedence and the prior value will be ignored until this version of identifier goes out of scope.

C0148 Informational Message

Message text

The identifier identifier conflicts with an existing property with this name. The new definition of identifier will take precedence and the prior value will be ignored until this version of identifier goes out of scope.

C0149 Informational Message

Message text

The identifier identifier conflicts with an existing property with this name in the parent class. The new definition of identifier will take precedence and the prior value will be ignored until this version of identifier goes out of scope.

C0150 Compiler Warning

Message text

Function function is obsolete.

C0151 Compiler Warning

Message text

Function function has been renamed to newfunction (no prefix); switch to the new name.

C0152 Compiler Error

Message text

string can be specified only on PUBLIC or PROTECTED property definitions.

C0153 Compiler Error

Message text

string can be specified only on PUBLIC property definitions.

C0154 Compiler Error

Message text

The access modifier access modifier can be specified only once per property declaration.

C0155 Compiler Error

Message text

The property property was found, but insufficient rights are available to access it.

C0156 Compiler Warning

Message text

The property property was found, but insufficient rights are available to access it.

C0157 Informational Message

Message text

A call to a nonexistent ancestor event was detected and will be ignored. This message is triggered by removing an event definition from an ancestor object while the event still has script in a descendant object.

See Also

Calling functions and events in an object's ancestor in the section called “Calling functions and events in an object's ancestor” in PowerScript Reference.

C0158 Compiler Error

Message text

The property property was found in class class, but insufficient rights are available to access it.

Explanation

You can access private or protected variables in an object only from the object itself. In this example, Employee is a custom class user object with a private or protected variable of type double named salary. Attempting to access the variable generates C0158:

double salary
Employee e

e = create Employee
salary = e.salary // generates C0158

See Also

Access for instance variables in the section called “Access for instance variables” in PowerScript Reference.

C0159 Compiler Error

Message text

Conversion of string1(string2) failed.

Probable library file I/O error.

C0160 Compiler Error

Message text

Regenerate of string1(string2) failed.

Probable library file I/O error.

C0161 Compiler Error

Message text

Regenerate of string1(string2) failed.

Destination library is not in the current library list.

C0162 Compiler Error

Message text

Cannot regenerate string1(string2) while it is open in another painter.

C0163 Compiler Error

Message text

The definition of referenced global variable variable was improperly compiled in object object.

C0164 Compiler Error

Message text

The type type of referenced global variable variable is an unresolved external.

C0165 Compiler Error

Message text

Misused type: type.

C0166 Compiler Error

Message text

Variable name conflicts with parameter name: parameter.

C0167 Compiler Error

Message text

External objects are not supported with operatorname operator.

C0168 Informational Message

Message text

The identifier identifier conflicts with a variable variable of the same name. It can be accessed using only an explicit 'this.'

C0169 Compiler Error

Message text

Autoinstantiated class illegal for statement statement: class.

C0170 Compiler Error

Message text

Array type illegal for statement statement: type.

C0171 Compiler Warning

Message text

FOR statement end value out of range for iterator variable. Use type for the type of the iterator variable.

Explanation

The end value for the iterator in a FOR loop must be within the range defined for the datatype:

int li_a, li_b

for li_a = li_b to 2147483648 // generates C0171
next

for li_a = li_b to 2147483647 // ok
next

See Also

Standard datatypes in the section called “Standard datatypes” in PowerScript Reference.

C0172 Compiler Error

Message text

Global function calls cannot be DYNAMIC.

C0173 Compiler Error

Message text

Global operator '::'cannot be used with a qualified class.

C0174 Compiler Error

Message text

Type of actual parameter cannot be ancestor of formal reference parameter type.

C0175 Compiler Error

Message text

Strings cannot be implicitly converted into multi-dimensional static character arrays. Only one-dimensional or dynamic arrays are supported.

Explanation

Attempting to assign a string to a multidimensional static character array. A string can be assigned to a one-dimensional array:

string ls_str

ls_str="abcdef"

char lc_str[2,3]
char lc_str2[2]

lc_str=ls_str // generates C0175
lc_str2=ls_str // ok
return 1

See Also

Values for array elements in the section called “Values for array elements” in PowerScript Reference.

C0176 Compiler Error

Message text

Badly ordered TYPE and VARIABLE declarations. Is this modified exported source?

C0177 Compiler Error

Message text

Unexpected '[' at top level.

C0178 Compiler Warning

Message text

Different DESCRIPTOR values on prototype:

"value1"

and routine declaration:

"value2"

C0179 Compiler Warning

Message text

Different REF TO values on prototype:

"value1"

and routine declaration:

"value2"

C0180 Compiler Error

Message text

Attribute cannot be assigned to.

C0181 Compiler Error

Message text

The argument to SetNull cannot be an argument.

C0182 Compiler Error

Message text

External event event triggered. This can only be posted.

C0183 Compiler Error

Message text

Must specify either LIBRARY or RPCFUNC.

C0184 Compiler Error

Message text

Error opening name.

C0185 Obsolete Warning

Message text

Function function is now obsolete and will be removed in a future release.

C0186 Compiler Warning

Message text

The identifier identifier conflicts with an existing constant constant with this name.

C0187 Compiler Error

Message text

Illegal use of an Arraylist. An Arraylist can be used only to initialize an array.

C0188 Compiler Warning

Message text

Argument value not available at compile time. Use a separate assignment statement for initialization.

C0189 Compiler Error

Message text

SQL host variable or SQL name cannot be a constant or read-only variable.

Explanation

The INTO clause in the following function, which takes a readonly argument (ai_readonly) attempts to use the readonly variable as well as two constant variables:

constant int outvar_const = 1
int outvar = 1
constant int invar = 1
constant int indicator = 1

select employee.emp_id

// generates C0189
into :outvar:indicator, :ai_readonly, :outvar_const
from employee
where employee.emp_id = :invar
using sqlca;

return 1

See Also

SELECT in the section called “SELECT” in PowerScript Reference.

C0190 Compiler Warning

Message text

Instance variables of local structure type structure will be implicitly private in the next release.

C0191 Compiler Error

Message text

Instance variable name conflicts with an inherited private instance variable: variable.

C0192 Compiler Error

Message text

Declaration using descendant's nested type type2 not supported. type1 is an ancestor of type2.

C0193 Compiler Error

Message text

One or more of the files in your library list could not be opened for write.

C0194 Compiler Error

Message text

Missing pcode block for indirect function.

Possible cause: library missing from library list.

C0195 Compiler Error

Message text

Error string.

C0196 Compiler Error

Message text

GOTO statement is illegal inside try block.

C0197 Informational Message

Message text

Component Validation.

C0198 Compiler Warning

Message text

Illegal type1 type: type2.

C0199 Compiler Warning

Message text

EAServer/Application Server component deployment error: error string.

C0200 Compiler Error

Message text

Illegal datatype type used in statement statement. Must be a variable that derives from the system type THROWABLE.

C0201 Compiler Error

Message text

Try statement must contain at least one catch block or a finally block.

C0202 Compiler Error

Message text

Label is illegal inside try block.

C0203 Compiler Error

Message text

Exception type exception must either be caught in this method or declared in the throws clause of this method prototype.

C0204 Compiler Error

Message text

Catch statement unreachable. Ancestor (or same type) is caught in previous statement.

C0205 Migration Warning

Message text

Function function has been replaced with function newfunction.

C0206 Migration Warning

Message text

Append extra argument argument to function function for backward compatibility.

C0207 Migration Warning

Message text

Append ALIAS FOR clause to external function function for backward compatibility.

C0208 Informational Message

Message text

An application object cannot be added to a namespace. The defined namespace namespace will be ignored.

C0209 Compiler Warning

Message text

Function or event method must be declared before it can be compiled.

C0210 Compiler Warning

Message text

Event event cannot be overloaded.

C0212 Compiler Error

Message text

Invalid #if preprocessor statement.

C0213 Compiler Error

Message text

Invalid #elseif preprocessor statement.

C0214 Compiler Error

Message text

#end if directive expected.

C0215 Compiler Error

Message text

Unexpected preprocessor directive.

C0216 Compiler Error

Message text

Preprocessor syntax error.

C0217 Informational Message

Message text

Please note that the user-defined event event can now be implemented using the equivalent system event event.

C0218 Compiler Warning

Message text

Migration: Invalid multibyte character(s) in source string1(string2) have been replaced with the character '?'.

C0300 Compiler Error

Message text

The statement is not complete.

Explanation

Error C0300 is generated when you deploy a .NET target that contains an incomplete statement inside a conditional compilation clause:

int i
#if defined PBWEBFORM the
   i = // generates C0300
#end if

C0301 Compiler Error

Message text

; expected.

Explanation

Error C0301 is generated when you deploy a .NET target that has a statement with a missing semicolon inside a conditional compilation clause:

int EmpNbr
string EmpName

#if defined PBWEBFORM then
INSERT INTO Employee (employee.Emp_nbr, employee.Emp_name) VALUES (:EmpNbr, :EmpName) USING sqlca // generates C0301
#end if

C0302 Compiler Error

Message text

) expected.

Explanation

Error C0302 is generated when you deploy a .NET target that has a statement with a missing closing parenthesis inside a conditional compilation clause:

#if defined PBWEBFORM then
   System.Net.Mail.Attachment att
// the following staement generates C0302
   att = create System.Net.Mail.Attachment("c:\temp\emp_data.pdf"
#end if 

C0303 Compiler Error

Message text

{ expected.

Explanation

This is an internal error that may be generated in the context of other errors.

C0304 Compiler Error

Message text

Syntax Error, string expected.

Explanation

Error C0304 is generated when you deploy a .NET target that has a statement with a missing component inside a conditional compilation clause:

#if defined PBWEBFORM then

// the following statement generates C0304: 
// Syntax Error 'RCURLY' expected.
   string ls_city[ ]  =  { "aaaa", "bbbb", "cccc"

// the following statement generates C0304: 
// Syntax Error 'IDENTIFIER' expected.
   string ls_city[ ]  = "aaaa", "bbbb", "cccc" }

#end if 

C0305 Compiler Error

Message text

; or newline expected.

Explanation

This is an internal error that may be generated in the context of other errors.

C0306 Compiler Error

Message text

Syntax error: string.

Explanation

Error C0306 is generated when you deploy a .NET target that has a statement with incomplete or incorrect syntax like the following inside a conditional compilation clause:

#if defined PBWEBFORM then
   integer i = // generates C0306 
#end if 

The following code also generates error C0306:

#if defined PBDOTNET then
    // generates C0306: Syntax error: 'create'
   System.Text.ASCIIEncoding enc = create &
      System.Text.ASCIIEncoding
#end if 

To avoid the error, declare an instance of the object and issue the CREATE statement on separate lines:

#if defined PBDOTNET then
    // compiles successfully
   System.Text.ASCIIEncoding enc
   enc = create System.Text.ASCIIEncoding
#end if 

C0307 Compiler Error

Message text

Syntax error: unexpected string.

Explanation

Error C0307 is generated when you deploy a .NET target that has a statement like the following inside a conditional compilation clause:

#if defined PBWEBFORM then

   halt clos // generates C0307: 
             // Syntax error: unexpected "clos"
#end if 

C0308 Compiler Error

Message text

'end if' expected.

Explanation

Error C0308 is generated when you deploy a .NET target that has an IF statement with no closing END IF inside a conditional compilation clause:

#if defined PBWEBFORM then
   if a then // generates C0308 
#end if 

C0309 Compiler Error

Message text

'end try' expected.

Explanation

Error C0309 is generated when you deploy a .NET target that has a TRY statement with no closing END TRY inside a conditional compilation clause:

n_throwable1 thr1
n_throwable2 thr2
n_throwable3 thr3
n_throwable4 thr4

#if defined pbwebform then
   try
      try
         hasthrow1()
         throw thr3
         throw thr4
      catch (n_throwable4 exce4)
      end try
   catch (n_throwable3 exce3)
   // missing end try generates C0309
#end if

C0310 Compiler Error

Message text

'end choose' expected.

Explanation

Error C0310 is generated when you deploy a .NET target that has a CHOOSE CASE statement with no closing END CHOOSE inside a conditional compilation clause:

decimal weight
decimal postage

#if defined pbwebform then
   choose case weight
      case is<10
         postage=weight*0.30
      case 10
         postage=4.50
      case 11 to 20
         postage=6.0
      case is>21, is<=40, 44
         postage=10.0
      case else
         postage=25.00   // missing end choose generates C0310
#end if

C0311 Compiler Error

Message text

'end for' expected.

Explanation

Error C0311 is generated when you deploy a .NET target that has a FOR statement with no closing END FOR inside a conditional compilation clause:

int i
#if defined PBWEBFORM then
   for i = 1 to 100
   // missing end for generates C0311
#end if

C0312 Compiler Error

Message text

An object reference is required for a nonstatic field, method, or property.

Explanation

To access a nonstatic variable in a .NET class in a conditional compilation clause, an instance of the class must be created. This example uses a simple public class Department that is in the .NET assembly PBInterop.dll. Department has two member variables: public string Name and public static int ID. In the following example, the attempt to access the nonstatic variable Name without creating and using an instance of the Department class generates C0312:

String dept_name
#if defined pbwebform then
   PBInterOp.Department dept
   dept_name = PBInterOp.Department.Name  // C0312
#end if 

This example deploys without error because an instance of the Department class is created and used to access the nonstatic variable:

String dept_name
   dept = create PBInterOp.Department
   dept_name = dept.Name
#end if

See Also

C0313 Compiler Error

C0313 Compiler Error

Message text

Static member name cannot be accessed with an instance reference. Qualify the static member with a type name.

Explanation

To access a static variable in a .NET class in a conditional compilation clause, you must use a type name, not a reference to an instance of the class. This example uses a simple public class Department that is in the .NET assembly PBInterop.dll. Department has two member variables: public string Name and public static int ID. In the following example, the attempt to access the static variable ID using an instance of the Department class generates C0313:

long dept_id
#if defined pbwebform then
   PBInterOp.Department dept
   dept = create PBInterOp.Department
   dept_id = dept.ID // generates C0313
#end if

This example deploys without error because the type name of the class is used to access the static variable:

long dept_id
#if defined pbwebform then
   dept_id = PBInterOp.Department.ID
#end if

See Also

C0312 Compiler Error

C0314 Compiler Warning

Message text

Value of maths literal above maximum allowed for datatype type.

Explanation

Warning C0314 is generated when you deploy a .NET target that sets the value of a numeric variable to a value greater than its range, for example:

int i = 4449999998999 // generates C0314

C0315 Compiler Warning

Message text

Value of maths literal below minimum allowed for datatype type.

Explanation

Warning C0315 is generated when you deploy a .NET target that sets the value of a numeric variable to a value that is less than its minimum value, for example:

int i = -4449999998999 // generates C0315
byte b = -1 // generates C0315

C0316 Compiler Error

Message text

Function scope cannot be of type type.

Explanation

Error C0316 is generated when you deploy a .NET target that contains a statement like the following in the body of a function, where f1 is a function that does not return a value:

f1().f2()  // generates C0316: Function scope 
           // cannot be of type "void"

C0317 Compiler Warning

Message text

May cause data loss.

C0318 Compiler Warning

Message text

'this' cannot be used in a global function.

Explanation

Warning C0318 is generated when you deploy a .NET target that contains a global function that uses the this keyword:

PowerObject po
po = this  // generates C0318

C0319 Compiler Error

Message text

No suitable constructor for statement statement: name.

Explanation

Error C0319 is generated when you deploy a .NET target that uses incorrect syntax in a statement that requires a constructor. This example uses a simple public class Class1 that is in the .NET assembly Interop.dll. Attempting to create an instance of Class1generates C0319, because the constructor for Class1 does not take a System.Nullable argument:

#if defined PBDOTNET then
   Interop.Class1 obj
   System.Nullable p 
   p = create System.Nullable
   obj = create Interop.Class1(p) //generates C0319: 
// No suitable constructor for create statement: class1
#end if 

C0320 Compiler Error

Message text

Event (event) cannot be overloaded: event.

Explanation

Error C0320 is generated when you deploy a .NET target that contains an inherited event that is overloaded. This can occur if the datatype of an inherited event's argument is changed in the Source editor. Suppose a window w_1 has an event e that takes an integer argument. If w_2 is inherited from w_1, but the inherited event's argument is changed from integer to long, C320 is generated. This is the incorrect code in the Source editor:

global type w_2 from w_1
event e ( long i ) // generates C320
end type
global w_2 w_2

C0321 Compiler Error

Message text

Event (event) is different from its prototype: event.

Explanation

Error C0321 is generated when you deploy a .NET target that contains an inherited event that has a different argument from its prototype. This can occur if the datatype of an inherited event's argument is changed in the Source editor. Suppose a window w_1 has an event e that takes an integer argument. If w_2 is inherited from w_1, the inherited event also takes an integer argument. If the event is redefined to take a long argument in the Source editor, C321 is generated. This is the incorrect code in the Source editor:

global type w_2 from w_1
event e ( integer i )
end type
global w_2 w_2
event e ( long i ) // generates C321
end type

C0322 Compiler Error

Message text

No label label within the scope of the GoTo statement.

Explanation

Error C0322 is generated when you deploy a .NET target that contains a GoTo statement that jumps into a branch of a compound statement. This is legal in PowerScript because the concept of scope inside a function does not exist. In C#, the IF and ELSE clauses are in different scopes.

int li_num=123
boolean b=true

if b then
   start: li_num++
else
   goto start  // generates C0322
end if 

C0323 Compiler Warning

Message text

Downcast warning: assign/pass type type1 to type type2 might cause runtime errors.

C0324 Compiler Warning

Message text

Calling an indirect ancestor event (event) is not supported in .NET.

Explanation

Suppose that there are three windows, w_1, w_2, and w_3. w_1 inherits from Window, w_2 inherits from w_1, and w_3 inherits from w_2. Each of these classes handles the Clicked event. In the Clicked event of w_3, it is legal to code the following in PowerScript:

call w_1::clicked

However, in C#, calling the base method of an indirect base class from an override method is not allowed. The previous statement translates into the following C# code, which might produce different behavior:

base.clicked();

In this example, a possible workaround is to move code from the Clicked event of the indirect ancestor window to a window function, and then call the function, rather than the original Clicked event, from the descendant window.

C0325 Compiler Error

Message text

Function (function) has a different return type (type1) from its prototype's (type2).

Explanation

Error C0325 is generated when you deploy a .NET target that contains a function whose return type has been changed. This can occur if the return datatype is changed in the Source editor. This is the incorrect code in the Source editor:

forward prototypes
public function integer f1 ()
end prototypes


public function long f1 ();return 2 // generates C0325
end function

C0326 Compiler Error

Message text

Return statement cannot be used in 'finally' clause.

Explanation

PowerScript allows you to code a Return statement in the Finally clause of a try–catch statement, but C# does not support Return statements in Finally clauses. If your code includes such statements, C0326 is generated when you deploy a .NET target:

integer ll_num=123

TRY
   ...
CATCH (throwable exec1)    
   ...
FINALLY
   return ll_num // generates C0326
END TRY
return ll_num

C0327 Compiler Error

Message text

The best overloaded method match for method has some invalid arguments.

Explanation

If a custom class user object has two functions, f1 and f2, and f1 takes a long argument, code like the following in the body of f2 generates a "Bad argument list for function: f1" error when it is compiled. If the code is enclosed in a .NET conditional compilation block, the compile-time error is not generated and C0327 is generated when you deploy the .NET target:

string s='123'
f1(s) // generates C0327

C0328 Compiler Error

Message text

Private function cannot be inherited.

Explanation

If an object contains a private function, you cannot change the body of that function in an inherited object. Suppose a window w_1 has a private function f1 that takes an integer as an argument and returns an integer. If w_2 inherits from w_1, any code in the body of f1 in w_2 generates C0328 when you deploy the .NET target:

return 1 //generates C0328

C0329 Compiler Error

Message text

Function function has no prototype.

Explanation

Error C0329 is generated when you deploy a .NET target that contains a function that has no prototype. This can occur if the function is added without a prototype in the Source editor. This incorrect code in the Source editor compiles but generates C0329 when the .NET target is deployed:

global type of_test from function_object
end type

forward prototypes
global function integer of_test (integer arg1)
end prototypes

global function integer of_test (integer arg1);return 1
end function

function integer of_test2 (integer arg2);return 2
                                    // generates C0329
end function

C0330 Compiler Error

Message text

Cannot create an instance of the abstract class or interface name.

Explanation

Error C0330 is generated if you try to create an instance of an abstract class or interface, as in the following code example:

System.Enum e
e = create System.Enum

C0331 Compiler Error

Message text

Static member name cannot be accessed with a function or property call.

Explanation

Error C0331 is generated if you call a static member in a function or property. For example, each of the following calls generates error C0331:

s = emp.GetAssest().StaGetName()
s = dept.EmpField.StaName;