Skip to content

System Error Messages

System & Program Errors List

See Also: Finding Specific Errors

Overview

This section lists all system errors in numeric order.

The system errors are those in the error number range of 4097-8192 and are stored in the DfErr001.dat database table.

Error List

4097 - Bad attribute value

Cause

An incorrect value was supplied using the Set_Attribute command.

Resolution

Supply an appropriate and legal attribute value.

Example:

open Customer
move Customer.File_Number to hFile
move 0 to iField
Structure_Start hFile "DATAFLEX"
create_field hFile at iField
set_attribute DF_FIELD_TYPE of hFile iField to DF_BCD
set_attribute DF_FIELD_LENGTH of hFile iField to 8
set_attribute DF_FIELD_PRECISION of hFile iField to 999
set_attribute DF_FIELD_NAME of hFile iField to "Balance_Due"
Structure_End hFile DF_STRUCTEND_OPT_NONE

The example above supplies 999 to the DF_FIELD_PRECISION attribute, which indicates that the new field being created in the Customer table should have 999 digits behind the decimal point. Clearly, this is inappropriate and illegal. The sample code below correctly supplies 2 as the number of digits desired behind the decimal point.

open Customer
move Customer.File_Number to hFile
move 0 to iField
Structure_Start hFile "DATAFLEX"
create_field hFile at iField
set_attribute DF_FIELD_TYPE of hFile iField to DF_BCD
set_attribute DF_FIELD_LENGTH of hFile iField to 8
set_attribute DF_FIELD_PRECISION of hFile iField to 2
set_attribute DF_FIELD_NAME of hFile iField to "Balance_Due"
Structure_End hFile DF_STRUCTEND_OPT_NONE

4098 - Bad relationship

Cause

This error will occur at runtime whenever a relationship is found between 2 database fields that are not of exactly the same type and length. Overlap fields are the only exception to this rule; they may relate to either other overlap or ASCII fields of the same length.

Obsolete

Overlap columns were replaced by multi-segment relationships in DataFlex 11.0 and are obsolete.

Resolution

Ensure that related fields are of the same type and size. For example, do not relate a numeric 6.0 field to a numeric 4.0 field.

Note: Some developers using DataFlex 2.3b used record number relationships, where a field in one database file is related to the RECNUM field in another file. When upgrading more recent revisions of DataFlex, suddenly this message appears. This is usually because the "relating from" field was defined as Numeric 6.0, instead of Numeric 8.0, which is the type and length of the RECNUM field. However, record number relationships should be avoided whenever possible and even with legacy applications efforts should be made to remove them.

4099 - Bad parameter

4100 - Cannot find field

Cause

Attempt to access a field of a database table that does not exist, for example, by using the get_FieldNumber or Field_Map commands.

Resolution

Verify table field names. Check spelling of the field name. Verify the table name or number being used.

4101 - String too long

4102 - Too many table structures

4103 - Bad driver name

4104 - Already started

4105 - Bad table number

4106 - Lock time-out

Cause

A lock attempt was made and failed in the time allotted. This can be caused by:

  1. The code in your application may not correctly apply a lock. This is often caused by improper coding of Alias tables.
  2. Another application that is keeping a lock on the tables that you are trying to lock.

Resolution

  1. See the lock command for details on how to properly lock tables. See Working with Alias Tables and DDs for more information.
  2. See the DF_LOCK_TIMEOUT attribute for more information about lock timeouts.

4107 - Too many indexes

Cause

An attempt was made to exceed the database limitation of the number of indexes allowed.

Resolution

Stay within the index limitations of the database you are using. The embedded (DataFlex) database has a limit of 15 indexes (16 if you include the predefined index 0, which is always used by the Recnum field). Other databases have other limitations. Consult the documentation of the database you are using regarding the limits of that database.

4108 - Record too long

Cause

An attempt was made to exceed the database limitation of record length.

Resolution

Stay within the record length of the database you are using. The embedded (DataFlex) database has a record length limit of 16 kilobytes (KB). Other databases have other limitations. Consult the documentation of the database you are using regarding the limits of that database.

4109 - Data dictionary record not saved

4110 - Structure not started

Cause

An attempt was made to change the structure of a database table without first executing a valid structure_start statement.

Resolution

Execute a valid structure_start statement before attempting to change a database table structure.

Example:

integer iMaxRecs
handle hFile
Open Customer
move Customer.File_Number to hFile
move 1000000 to iMaxRecs
set_Attribute DF_FILE_MAX_RECORDS of hFile to iMaxRecs
Structure_End hFile DF_STRUCTEND_OPT_NONE

The incorrect code above attempts to change the maximum number of records of the Customer table without first executing a structure_start command, like the corrected code below.

integer iMaxRecs
handle hFile
Open Customer
move Customer.File_Number to hFile
move 1000000 to iMaxRecs
Structure_Start hFile "DATAFLEX"
set_Attribute DF_FILE_MAX_RECORDS of hFile to iMaxRecs
Structure_End hFile DF_STRUCTEND_OPT_NONE

4111 - File too large for edit

4112 - Temporary file number in use

4113 - Attribute value warning

4114 - Cannot create .VLD file

4115 - Cannot create .DAT file

4116 - Read error

4117 - Write error

4118 - Cannot delete file

4119 - File not found

Cause

A file cannot be found.

Resolution

Check disk folder for correct file name.

4120 - Cannot rename file

4121 - Operation aborted

4122 - Bad field type in index

Cause

An field of an incorrect type is being added to an index or is in an existing index.

Resolution

Most databases have limitations of the types of fields that can be added to indexes. The embedded (DataFlex) database can only use Numeric, ASCII, Date and Overlap fields in indexes. Other databases have other limitations. Consult the documentation of the database you are using regarding the limits of that database.

4123 - Dynamic area of table header damaged

Cause

Database table or disk directory is damaged.

Resolution

Generally the disk should be reformatted and data recovery techniques used. Usually, database tables triggering this error are irrecoverably damaged. Restoring data from a good backup is the best recovery method.

Verify proper configuration of Read Caching and Opportunistic Locking on your network.

4124 - Static area of table header damaged

Cause

Database table or disk directory is damaged.

Resolution

Generally the disk should be reformatted and data recovery techniques used. Usually, database tables triggering this error are irrecoverably damaged. Restoring data from a good backup is the best recovery method.

Verify proper configuration of Read Caching and Opportunistic Locking on your network.

4125 - Argument size too large

Cause

An attempt was made to set the argument size to a value exceeding the maximum argument size.

Resolution

Do not set the argument size to a value exceeding the maximum argument size. See the DataFlex Specifications list for more information.

4126 - Argument size too small

Cause

  1. An attempt was made to set the argument size to less than 256.
  2. An attempt was made to set the argument size to a value exceeding the maximum argument size.

Resolution

  1. Never set the argument size to a value less than 256.
  2. Do not set the argument size to a value exceeding the maximum argument size. See the DataFlex Specifications list for more information.

4127 - Error writing to device

4128 - Maximum records less than total records

Cause

An attempt was made to set the maximum records attribute of a database table is less than the current number of records in the table.

Resolution

Do not attempt to set the maximum records attribute to less than the current number of records in the table.

4129 - Invalid number for maximum records

Cause

An attempt was made to enter an invalid value for the maximum records attribute of a database table.

Resolution

The maximum number of records a database table can hold varies between databases. For the embedded (DataFlex) database this value must be a positive integer between 1 and 16.7 million (16,700,000). Other databases have other limitations. Consult the documentation of the database you are using regarding the limits of that database.

4130 - Error number out of range

4131 - Program created with incompatible version

4133 - Data entry subsystem not compatible

4134 - Embedded database table not compatible

Cause

  1. Database tables (.dat files) created under revisions of DataFlex prior to 2.3 (2.2 and earlier) cannot be used under DataFlex without conversion by the DFConver utility.
  2. A corrupted database table.

Resolution

  1. Run DFConver on all your database tables (.dat files) before attempting to use them with DataFlex. The DFConver utility was supplied with DataFlex 2.3, but can be obtained separately from the Data Access Corporation Web Site or by contacting Data Access Corporation.
  2. Restore affected table from backup.

4135 - Number too large to convert to integer

Cause

An attempt was made to convert a number that is larger than the largest value allowed for an integer to an integer variable.

Resolution

Reduce the value being moved to the integer to be within the range allowed for integers (-2,147,483,647 to +2,147,483,647), or keep the value in a number variable.

4136 - Real too large to convert to integer

Cause

An attempt was made to convert a real that is larger than the largest value allowed for an integer to an integer variable.

Resolution

Reduce the value being moved to the integer to be within the range allowed for integers (-2,147,483,647 to +2,147,483,647), or keep the value in a real variable.

4138 - Maximum number of objects reached

Cause

The maximum number of objects allowed in DataFlex has been reached.

Resolution

Reduce the number of objects in your program.

Cause

Child tables related to the table in which a record is being deleted are closed.

Resolution

In order to delete a record in a table, all child tables related to the table in which the record is being deleted must be open.

Cause

You cannot delete a record with child records if Cascade_Delete_State is set to False.

Resolution

If you see this error, Cascade_Delete_State is most likely set to False to protect from deleting parent records with related child records. Doing so would leave orphaned records in related child tables.

4141 - Data set files must support transactions

Cause

The transaction type of one or more tables used by a DataFlex application is set to None.

Resolution

The transaction type of tables in DataFlex applications using DataDictionaries must be set to either Client Atomic; it cannot be set to None. Server Atomic only applied to Novell Netware's Transaction Tracking System (TTS), but Novell Netware is no longer supported in DataFlex.

4142 - Cannot recover from transaction error

4143 - Illegal operation during transaction

Cause

An operation that is not allowed during a transaction was attempted during a transaction.

Resolution

Certain operations are not allowed during a database transaction. This list includes any commands that execute another program, such as runprogram, or commands that exit a program, such as abort and exit_application.

A transaction is a lock...unlock, reread...unlock or begin_transaction...end_transaction block of code.

4144 - Operation not allowed

4145 - Fatal internal error

4146 - RECNUM not allowed as sequential device

4147 - Can't create .HDR file

Cause

  1. This could be a permissions problem.
  2. Database table or disk directory is damaged.

Resolution

  1. Make sure that the current user has rights to the location where the .HDR file is to be created.
  2. Generally the disk should be reformatted and data recovery techniques used.

Verify proper configuration of Read Caching and Opportunistic Locking on your network.

4148 - Can't write to .HDR file

Cause

This could be a permissions problem.

Resolution

Make sure that the current user has rights to the location where the .HDR file is to be created.

4149 - .HDR file is damaged or invalid

Cause

Database table or disk directory is damaged.

Resolution

Generally the disk should be reformatted and data recovery techniques used. Usually, database tables triggering this error are irrecoverably damaged. Restoring data from a good backup is the best recovery method.

Verify proper configuration of Read Caching and Opportunistic Locking on your network.

4150 - Attempt to reference invalid item number

4151 - Attempt to access an invalid page number

4152 - Maximum virtual memory locks exceeded

4153 - Attempt to unlock invalid virtual memory

4154 - Data_set constraint not for main file

Cause

No parent-file constraint.

4155 - Edit requires reread or find during lock

Cause

Incorrect multi-user programming code.

Resolution

A reread (of data from disk) of the affected table is required before data in an active record buffer is to be changed. This ensures that no other user or process has changed the data since it was last retrieved from disk.

If the value of the API attribute DF_REREAD_REQUIRED is true and a reread is not performed, DataFlex error 4155 will be triggered. This attribute can be used to debug code that does not properly reread data.

This particular runtime error points out errors in multi-user coding logic. The rules for correcting these coding errors are simple and straightforward:

  • Whenever a new record is created (i.e., a value is moved to a table.field) a lock command must first be issued. A lock command locks all open tables that are not in read_only mode.
  • Whenever an existing record is edited, a reread command of the corresponding table must first be issued. A reread command rereads all tables specified as arguments for the command and then issues a lock command.
  • Whenever an existing record is deleted, the affected table must be in a locked state.
  • For each lock command issued, one unlock command must be issued.
  • For each reread command issued, one unlock command must be issued.

Proper Multi User Coding Examples:

Example: Creating a new record:

clear NEWTABLE
lock
move VAR to NEWTABLE.FIELD
saverecord NEWTABLE
unlock

Note: In many instances a reread command instead of a lock command will work with a new record. In this case, you MUST use the reread command without any files listed as parameters. If you try to reread a specific file (e.g., reread CUSTOMER) which does not have an active record, you will get an error 25 - record not found. There is a slight penalty (time) for using the reread command without any parameters, which is that all open files with an active record that are not flagged read-only will be reread.

Example: Editing an existing record:

reread TABLE
move VAR to TABLE.FIELD
saverecord TABLE
unlock

Example: Copying data from an existing record in TABLE to a new record in NEWTABLE:

reread TABLE
move TABLE.FIELD to NEWTABLE.FIELD
saverecord NEWTABLE
unlock

Note: There are important differences between the saverecord and save commands. The difference is that the save command attaches related ancestral file (parent, grandparent, etc.) information, so that information from the related parent record will overwrite information moved manually into the child record buffer when saving. Saverecord does not do anything at all with related files; it only affects the file(s) listed as parameter(s).

4156 - Referenced an invalid system integer

4157 - No shell program defined in environment

4159 - Error executing child process

4160 - Can't run print spooler

4161 - Invalid file system

4162 - Bad SYSCONF parameter

4163 - Spooler command line string too long

4164 - Referenced an Invalid System Indicator

4165 - Error outputting to spooler device

4166 - Error reading from child process's pipe

4167 - Unable to open pipe

4168 - Invalid object used with RUNPROGRAM PIPE

4170 - Compression table is corrupt

4171 - Invalid directive in collate.cfg on line

Cause

This error is usually caused by an outdated version of collate.cfg, from an older version of DataFlex or DataFlex.

Resolution

Check for older and duplicate copies of collate.cfg in the workspace subfolders and the folder or folders where the DataFlex runtime components are installed.

4172 - Redundant value in collate.cfg on line

4173 - Can't open collate.cfg

4174 - Incomplete sequence in collate.cfg

4175 - No printer type specified

4176 - Invalid table size

This error can be triggered during reindexing of an embedded database table if the table returns a last record with a record number higher than MAX_RECORD_COUNT (16,711,679) records. This could be caused by a corrupted table header.

4177 - File access violation, file may be in use

4179 - Unable to update FILELIST.CFG

4180 - Can't read record zero

Cause

  1. Database table or disk directory is damaged.
  2. This error may indicate problems with the operating system's directory structure of the disk drive. Power failure is a common cause of disk directory corruption. If you have had other media errors, they can show up later as directory problems. If this happens repeatedly, there may be a subtle problem with the operating system or equipment.

Resolution

  1. & 2. Generally, the disk should be reformatted and data recovery techniques used. Usually, database tables triggering this error are irrecoverably damaged. Restoring data from a good backup is the best recovery method.

Verify proper configuration of Read Caching and Opportunistic Locking on your network.

4181 - Can't delete index file (.K*)

4182 - Can't create index file (.K*)

4183 - Can't delete table

4184 - Can't delete variable db table (.VLD)

4185 - Can't delete record

4200 - Can't close variable db table (.VLD)

4216 - Physical file name not specified

4217 - Invalid record length

4218 - File must be opened exclusively

4220 - Can't write .TAG file

Cause

This could be a permissions problem.

Resolution

Make sure that the current user has rights to the location where the .TAG file is to be created.

4221 - Must copy record to identical structure

Cause

The table records are being copied from and the table that records are being copied to do not have the same table structure.

Resolution

Verify that the structure of both tables is identical.

4222 - Destination file must be empty

4223 - Can't delete header file (.HDR)

Cause

  1. This could be a permissions problem.
  2. The .HDR file may not exist.

Resolution

  1. Make sure that the current user has rights to the location where the .HDR file is to be deleted.
  2. Ensure that the .HDR file exists and can be found along DFPATH.

4224 - No locks available

4229 - DBMS Driver not supported System

4235 - Transaction aborted

4236 - Can't ABORT while in a transaction

Cause

An abort command was attempted during a transaction.

Resolution

Certain operations are not allowed during a database transaction. This list includes any commands that execute another program, such as runprogram, or commands that exit a program, such as abort and exit_application.

A transaction is a lock...unlock, reread...unlock or begin_transaction...end_transaction block of code.

4237 - Can't CHAIN while in a transaction

Cause

An chain command was attempted during a transaction.

Resolution

Certain operations are not allowed during a database transaction. This list includes any commands that execute another program, such as runprogram, or commands that exit a program, such as abort and exit_application.

A transaction is a lock...unlock, reread...unlock or begin_transaction...end_transaction block of code.

4238 - Can't RUNPROGRAM while in a transaction

Cause

A runprogram command was attempted during a transaction.

Resolution

Certain operations are not allowed during a database transaction. This list includes any commands that execute another program, such as runprogram, or commands that exit a program, such as abort and exit_application.

A transaction is a lock...unlock, reread...unlock or begin_transaction...end_transaction block of code.

4242 - Can't lock record

4243 - Can't unlock record

4244 - Can't copy database

4251 - Can't lock file

4252 - Error in Transaction log

4253 - API not initialized

4254 - Can't Create File

4255 - Can't Load DLL

4256 - Restructure ok, check file for error

4257 - Can't open filelist

4258 - Index Block Zero full

4259 - Error sorting: bad data

4260 - Error sorting: bad index number

4261 - Maximum record length exceeded

Cause

An attempt was made to change the structure of a database table to exceed the database limitation of record length.

Resolution

Stay within the record length of the database you are using. The embedded (DataFlex) database has a record length limit of 16 kilobytes (KB). Other databases have other limitations. Consult the documentation of the database you are using regarding the limits of that database.

4262 - Unable to access index file

4263 - Header not damaged

4264 - Header integrity checking disabled

Cause

This table does not have header integrity checking enabled.

Resolution

To enable header integrity checking, open the table in Database Builder and go to the Parameters tab page.

4265 - Unable to open file

4266 - Unable to read header of datafile

4267 - Invalid index number

4268 - Duplicate field name

4269 - Not a valid file definition

4270 - Error reading file

4271 - Can't open intermediate file

4272 - Can't close intermediate file

4273 - Intermediate file not opened

4274 - Error reading sequential file

4275 - Error writing to sequential file

4276 - Missing value

4277 - Invalid intermediate file keyword

4278 - Invalid intermediate file value

4279 - Invalid intermediate file sequence

4280 - Invalid intermediate file field

4281 - Invalid intermediate file index

4282 - Cannot logout with open tables

4283 - Unable to write .FD file

4284 - Max index key length exceeded

4285 - Attempt to access unsupported attribute

4286 - Illegal attribute value

4287 - No index specified

4289 - DBMS operations not allowed in callback

4290 - Error accessing system table for file

4291 - Error updating system table for file

4292 - Cannot copy structure on table with data

4354 - Dates are unconverted

Cause

There are dates with a 2-digit year in the specified table.

Caution: If viewing the data with Database Explorer, depending on the options you have set in Database Explorer, you may not see the dates in the database exactly as they are stored.

Resolution

Convert all dates in the specified table to 4-digit years.

4355 - External function not found

Cause

The function specified in the External_Function call is not found in the specified DLL.

Resolution

Check the DLL's documentation for the function name. Sometimes the function names are followed by an additional letter.

Example:

External_Function ShellExecute "ShellExecute" Shel32.Dll ;
Handle hwnd ;
String sOperation ;
String sFile ;
String sParameters ;
String sDirectory ;
Integer nShowCmd ;
Returns VOID_TYPE

In the incorrect code above, the function name of ShellExecuteA is misspelled as ShellExecute and Shell32.Dll is misspelled as Shel32.dll. The code below is correct.

External_Function ShellExecute "ShellExecuteA" Shell32.Dll ;
Handle hwnd ;
String sOperation ;
String sFile ;
String sParameters ;
String sDirectory ;
Integer nShowCmd ;
Returns VOID_TYPE

Ensure that the DLL's name is spelled correctly and that the DLL is found.

Windows applications search for DLLs in the following order:

  1. The folder from which the application loaded.
  2. The current folder.
  3. Windows XP: If HKLM\System\CurrentControlSet\Control\SessionManager\SafeDllSearchMode is 1, the current folder is the last folder searched. The default value is 0.
  4. The Windows system directory.
  5. Windows NT/2000/XP: The name of this directory is System32.
  6. Windows NT/2000/XP: The 16-bit Windows system folder. There is no function that obtains the path of this folder, but it is searched. The name of this folder is System.
  7. The Windows folder.
  8. The folders that are listed in the PATH environment variable.

4356 - Unable to load DLL

Cause

A DLL cannot be found by Windows.

Resolution

Ensure that the DLL's name is spelled correctly and that the DLL can be found.

Windows applications search for DLLs in the following order:

  1. The folder from which the application loaded.
  2. The current folder.
  3. Windows XP: If HKLM\System\CurrentControlSet\Control\SessionManager\SafeDllSearchMode is 1, the current folder is the last folder searched. The default value is 0.
  4. The Windows system directory.
  5. Windows NT/2000/XP: The name of this directory is System32.
  6. Windows NT/2000/XP: The 16-bit Windows system folder. There is no function that obtains the path of this folder, but it is searched. The name of this folder is System.
  7. The Windows folder.
  8. The folders that are listed in the PATH environment variable.

4357 - GUI Subsystem not compatible

4358 - Rawfile command error

Cause

This is a sequential I/O (input/output) error where a raw file access command, such as direct_input, is trying to access a file or folder that does not exist.

Resolution

Ensure that the file or folder being accessed exists before trying to access it. You can do so using the File_Exist command.

Example:

This sample procedure checks whether a file exists before trying to read it. This is a simplified I/O sample that shows how to prevent error 4358 from happening. Read more about Sequential File Input and Output here.

Procedure ReadFromFile
    Boolean bExists
    String sFileToAccess
    move "C:\MyFile.txt" to sFileToAccess
    File_Exist sFileToAccess bExists
    if (bExists = True) begin
        direct_input sFileToAccess
        // add code to read from the file here...
        close_input
    end
End_Procedure  // ReadFromFile

4361 - Cannot Find Evaluation DLL

Cause

This copy of DataFlex is registered as an evaluation license, but the evaluation DLL cannot be found.

Resolution

Register a full DataFlex license, so that the evaluation DLL is not needed.

This can also be a symptom of something more serious. It indicates that files are missing from the DataFlex installed location. You may want to reinstall DataFlex to correct this.

4362 - Evaluation DLL Has Expired

Cause

This copy of DataFlex is registered as an evaluation license, and the evaluation time frame has expired.

Resolution

Register a full DataFlex license. You can obtain this license through your sales channel.

4365 - Large Integer Overflow

Cause

Can occur when overflow is detected in use of BigInt and UBigInt arithmetic/conversion.

Resolution

Review your code to ensure the data type you are using is correct for the values you are working with.

4367 - Function Not Found in Expression

Cause

A function that has not been declared was used in an expression.

  1. This error is often a result of a mistyped function name in the code.
  2. It can also be caused by referencing a function that is declared later in the code.

Resolution

  1. Check the function name and correct the spelling of the reference.
  2. Either move the function declaration to a place in the code prior to the line calling it or use the Register_Function command to tell the compiler that the function will be defined at a later point in the code.

4379 - Wrong Number of Arguments

Cause

  1. An incorrect number of arguments is passed to a message.
  2. A calling convention clash when calling an external_function.

Resolution

  1. See the documentation for the message you are using for more information on the required number of arguments.
  2. The standard Win32 API calling convention is called stdcall. This calling convention must be used in a DLL to allow it to be called from DataFlex.

4380 - XML Interface Error

Cause

Procedures that fail when creating nodes generate an error. Any of the Send AddXxxxxx messages (Send AddElement, Send AddChildComment, etc.) will generate this error if the object cannot be created and added.

Resolution

See the documentation for the message you are using or the cXMLDOMDocument class for more information.

4381 - Illegal Datatype Conversion

Cause

  1. This error occurs if data is moved from one type to another that is inappropriate for the destination data type.

Example:

UInteger uiQty
DateTime dtNow
move -3 to uiQty
move uiQty to dtNow

This example will result in error 4382 followed by error 4381 because a variable of type DateTime cannot contain a negative value.

  1. If you use static arrays with StrSplitToArray, but if your source string {StringVar} contains more elements than the target array, it will trigger error 4381: "Illegal Datatype Conversion. Incompatible size of 0. dimension - Cannot convert array of 'STRING[]' to array of 'STRING[3]'.

Resolution

  1. Be sure to use variables of appropriate data types for the values they need to contain.
  2. We recommend using dynamic arrays instead.

4382 - Data Out of Range

Cause

This error occurs if data that exceeds the limitations of a particular type is moved to a variable of that type.

Example:

UInteger uiQty
Move -3 to uiQty

This example will result in error 4382 because a variable of type uinteger cannot contain a negative value.

Resolution

Be sure to use variables of appropriate data types for the values they need to contain.

4383 - External Class Not Registered

Cause

  1. A required DLL is missing.
  2. A manifest file for the application that specifies the correct DLL version is missing. For example, when using a cLinklabel control without a manifest file that specifies that version 6 of the DLL should be used if it is available.

Resolution

  1. Make sure the required DLL is installed and registered (if necessary) in the operating system.
  2. Make sure the program has the required manifest file with the required specification. All classes that require such a manifest file or statement state so in their documentation.

4384 - Illegal External Class

4385 - Error Not In Use

4386 - Bad registerInterface method declaration

Cause

The code for a call to RegisterInterface is incorrect.

Resolution

Double check the code of your RegisterInterface call.

The simplest way to ensure that the RegisterInterface call is correct is to use the Publish Method option in the DataFlex Studio to have the Studio write this code for you.

4387 - Too many arguments in registerInterface

Cause

Too many arguments were passed to a RegisterInterface method.

Resolution

Double check the code of your RegisterInterface call.

The simplest way to ensure that the RegisterInterface call is correct is to use the Publish Method option in the DataFlex Studio to have the Studio write this code for you.

4388 - Illegal object name definition

4389 - Illegal property name definition

Cause

A property is illegally defined.

  1. The property name may conflict with an internal identifier or reserved word.
  2. The property may be defined inside of a class inside of a method, which is not legal.

Resolution

  1. Resolve the naming conflict by renaming the property.
  2. Move the property definition outside any methods.

4390 - Illegal method name definition

Cause

Attempt to redefine a method that is already defined.

Attempt to register a global method using Register_Procedure or Register_Function.

Resolution

Do not register global methods.

4391 - Illegal code placement

Cause

  1. A property is defined in a class, but outside of a constructor method.
  2. Error detail text is 'Multi Dimensional array variables must be defined one per line'.

Resolution

  1. Properties defined in a class must be defined inside a Construct_Object.
  2. You must define multi-dimensional array variables one per line.

Incorrect:

Integer[][] ints1 ints2

Correct:

Integer[][] ints1
Integer[][] ints2

4393 - Invalid message syntax

Cause

This error can be caused by many different types of coding errors.

Resolution

Search for the message specifics in the Compiler Error Messages.

Example

If the full error text reads:

"Invalid message syntax TOO MANY PARAMS AFTER 'TO' [Error: 4393] on Line:LineNumber(PRNFileLineNumber) of File:SourceFileName.

then the error specifics are:

TOO MANY PARAMS AFTER 'TO'

If you search for this error text on the Compiler Error Messages page, or the Search tab of this help file, you will find the detailed explanation of the specific error.

4394 - Invalid object reference

4395 - Obsolete command is unsupported

4396 - Invalid argument

4397 - Illegal external function definition

4398 - Unable to instantiate COM object

Cause

The ActiveX control is not registered on the PC.

Resolution

Use regsvr32 to register the control.

4399 - COM object method invocation error

4400 - DfErr_Compile

This error is a Generic Error. Please see Generic Errors for more information.

4401 - DfErr_Operator

This error is a Generic Error. Please see Generic Errors for more information.

4402 - DfErr_Program

This error is a Generic Error. Please see Generic Errors for more information.

4402 - DDO re-entrant operation attempted

This error will only be reported if using the Data Dictionary Inspector with the "Report DD Reentrancy Errors" checkbox checked.

Cause

Many DDO methods are not reentrant. The messages that are not reentrant are Clear, Clear_All, Request_Save, Request_Delete, Request_Assign, Request_Find, Request_Superfind and Find_by_Recnum. For example, you cannot send the Request_find message in the middle of a Request_Save process (even if the message is being sent to another DDO).

Resolution

When these types messages are sent in a reentrant state, the normal behavior of the DDO is to ignore them. This creates a problem for testing. If you are sending these messages, you are probably doing so in error. Rather than performing whatever action you are expecting, the message is being silently ignored.

When the Data Dictionary Inspector is used, these reentrant messages are reported back to you as errors. This will make it easy for you to find and correct these problems.

See Reentrancy of DDO Methods for more information regarding reentrant operations.

4403 - DfErr_Setup

This error is a Generic Error. Please see Generic Errors for more information.

4404 - Winprint error

This is a generic error message that forwards errors from the WinPrint viewer or WinPrint engine. Please read the text or the error message for the specific cause and/or resolution.

4406 - Timer (dfTimer) error

4407 - Flexcom error

4408 - Help system error

4409 - Ini file error

4410 - Windows error

4411 - Windows registry error

4413 - Windows Menu error

4414 - Mapi error

4415 - Application/Workspace error

Cause

The Workspace file identifying the Workspace cannot be found.

Resolution

Check the code of the cApplication object in your program to see which workspace file it is trying to open. If no code exists in the object specifying a workspace to open, it is trying to open the file "config.ws".

By default, the workspace (.ws) file is located in the same folder as the compiled program (.exe) file.

4416 - Web Object not found in WebApp

WBO name not found. A call from an ASP page refers to a WBO name that cannot be found.

4417 - File Field name not found in Web Object

A call from an ASP page refers to a "file.field" name that cannot be found.

4418 - DDO Not found in Web Object

No filename specified or could not find the DD for passed filename.

4419 - Changed State required by Web Object

Changed_State not supported or available from browser/script. The WBO needs to do changed-state checking for each data being posted. Either the ASP page is not properly set up to provide this information or the browser did not support the scripting required to make this work.

4420 - Bad Data passed to Web Object

Internal error with the CALL mechanism resulting in bad data. This should never happen.

4421 - Xml/Http Transfer error

An error occurred during a cXmlHttpTransfer. More error detail is provided by checking the cXmlHttpTransfer property peXmlTransferStatus.

Code values are:

  • xtsOk - No error
  • xtsHttpRequestFailed - HTTP request failed -- no response
  • xtsBadRequest - Bad or missing data sent
  • xtsInvalidContentType - Return content type is not as expected
  • xtsNoData - No data was received
  • xtsNotXml - Received data is not XML

4422 - Soap/Http Transfer error

An error occurred with the soap client request. peTransferStatus has more details. All errors are reported here except SOAP-fault errors.

4423 - Soap Fault error

An error occurred with the SOAP client request resulting in a SOAP fault. See peTransferStatus for more details.

4424 - Text too large for database field

Cause

This gets triggered if you try to save an RTF (rich text format) stream that is too large in a cDbRichEdit control. It occurs during the save when you attempt to move the data from the control to the database field.

Resolution

Decrease the size of the text in the control or increase the size of the database field. If you cannot do either, consider storing the text in an RTF document that is stored outside the database.

4425 - DataFlex Reports error

Cause

All errors in the cDRReports class use error 4425. The error details will be displayed in the error text.

Resolution

Refer to the DataFlex Reports documentation for more information.

4426 - Access Denied

Cause

This is the generic Access Denied user error for the web application framework. If there are more details, they should be displayed in the error text.

Resolution

This is typically caused by a user attempting to access parts of a web application the user does not have correct permissions for. See cWebSessionManager to read more about rights in web applications.

4500 - Missing Debug Information

The precompile debug (.PBG) file is missing. IOW, if you use a precompiled package, but the .DBG file is missing.

4501 - Incompatible Debug Information

The precompile debug (.PBG) file is found, but is not a current .PBG file. IOW, the .PBG file was created with an older compiler, or if the .PBG file is not a valid debug file.

4502 - Server Web Service Exception

This is a private error used to generate soap-faults on the server. This error will never be reported.

4503 - Invalid RowId Size

4504 - Driver Number Out of Range

4505 - Attempt to Reference Invalid Grid Column

Cause

Attempt to reference an invalid grid column. Either the columns have not yet been created or it is out of range.

Resolution

Reference grid columns after they have been created or keep within the range of columns of the grid.

4506 - Column does not Support Combo Messages

Cause

Attempt to access a column_combo message for a column that does not support combos.

Resolution

The columns must first be defined using the Column_Combo_State message.

Example

Set Column_Combo_State iColumn to True

4508 - Invalid Use of Non-Main Table

Cause

This is a DataDictionary Object (DDO) / Data Entry Object (DEO) programming error that has one of two causes.

  1. Your DEO has a mismatch between its Server and its data file/field binding. In a DEO data file/field binding (e.g., Entry_Item Orderhea.Order_Number) should be a field from your Server table or one of its parent (or ancestor) servers. It may also have no binding at all. In particular, you do not want to refer to a child table with a parent server. When that happens and you attempt a find on this DEO, you may get this error.

For example:

// this is valid, binding table and DDO are the same

Object oOrderheaOrderNr is a dbForm
    Set Server to oOrderHea_DD
    Entry_Item OrderHea.Order_Number
End_Object

// this is valid, binding table is a parent of the DDO

Object oCustomerCustNr is a dbForm
    Set Server to oOrderHea_DD
    Entry_Item Customer.Customer_Number
End_Object

// this is valid, no binding or an expression

Object oOrderheaOrderNr is a dbForm
    Set Server to oOrderHea_DD
    Entry_Item (Whatever-you-want)
End_Object

// this is not valid, binding table is a child of the DDO

Object oOrderheaOrderNr is a dbForm
    Set Server to oCustomer_DD
    Entry_Item OrderHea.Order_Number
End_Object

This last example is most likely a programming error. There are few cases where this will have desired results and a find on this DEO may generate this error.

This can also occur if a DDO’s Main_File is set improperly, if a DEO’s Set Server is set improperly (or is missing) or the DEO’s Entry_Item is referring to the wrong table.

Resolution

  1. Add or correct the appropriate Entry_Item, "set Server" or "set Main_File" statement.

  1. It is a DataSet legacy feature that should not be in use (probably using the private and obsolete Add_Parent interface in a DataSet). Support of this feature has been removed in DataFlex 11.0 due to RowId changes. This is unlikely.

4509 - Referenced Array Index Out of Bounds

Cause

The specified index reference is out of bounds.

Resolution

Reference an index within the bounds of the array.

4510 - Invalid RowId - Cannot Deserialize

Cause

An attempt was made to deserialize a RowId from a string that is not a valid serialized RowId.

4511 - Specified Dimension not Valid in Array

Cause

The specified dimension is not a valid dimension in the array. For example, querying for the size of the 2nd dimension in a one-dimensional array using SizeOfArray() would result in this error.

Resolution

Reference only dimensions the array has. For example, reference only one dimension of a one-dimensional array.

4512 - Illegal Attempt to Resize Static Array

Cause

Attempting to dynamically resize a static array is illegal.

4513 - Recursive struct definition

Cause

Attempt to create an illegal recursive struct declaration.

Example

Struct tMyStruct
      tMyStruct MyStruct
End_Struct

or

Struct tMyStruct
      integer iVar
      tMyStruct MyStruct
End_Struct

Note that structs can be defined recursively with arrays:

Struct tMyStruct
      integer iVar
      tMyStruct[] MyStruct
End_Struct

4514 - Obsolete or Ambiguous Syntax

Cause

Left of '[' is not array, use '(' if indicator

This can happen with an array indexer or indicator. This error occurs if left of [ is a variable reference, but determined not to evaluate to type array. It can also occur if what's between [] is an indicator and it's simply a case of two arguments, in which case you can resolve this by enclosing the indicator with () instead. For example, instead of [Found] use (Found).

"Left of '.' is not of type struct or table"

Cause

This error occurs if left of. is a variable reference but determined not to evaluate to type struct.

4515 - Can't Compare this Element Type

Cause

Raised when code calls an array function and supplies an array of a complex data type (struct, RowId, etc.) and the virtual machine cannot compare the arguments.

DataFlex implements different sorting algorithms for different data types in the virtual machine, in order to provide developers with the most efficient sorting method based on the data type. Algorithms provided in the virtual machine will also run faster. Some data types cannot be sorted using the internal algorithms: struct, RowId, variant.

For example:

Struct tFriend
    String First
    String Last
End_Struct
Procedure OnClick
    // declare array of 10 tFriend structs
    tFriend[4] MyFriends
    integer iMinFriend
    // fill MyFriends array
    move "Janet" to MyFriends[0].First
    move "Smith" to MyFriends[0].Last
    move "Pedro" to MyFriends[1].First
    move "Rodriguez" to MyFriends[1].Last
    move "Judy" to MyFriends[2].First
    move "Smith" to MyFriends[2].Last
    move "Fred" to MyFriends[3].First
    move "Jones" to MyFriends[3].Last
    move (MinArray(MyFriends)) to iMinFriend
End_Procedure // OnClick

The above code will trigger error 4515, because struct is one of the data types that cannot be sorted by the virtual machine using an internal algorithm. To use the MinArray array function with a structured data type, create a custom sort function as described in the help for the array functions that cause this error.

4516 - Bad User Function Return Value

Cause

Raised when developer supplied function returns anything other than (EQ), (GT) or (LT) to array functions SortArray or BinarySearchArray.

For example:

Struct tFriend
    String First
    String Last
End_Struct
// Custom comparison function:
//   Will return (EQ) if the tFriend struct passed as the first argument
//   has the same Last member value as the tFriend struct passed in the second argument
Function MyComparison tFriend MyFriend tFriend SearchFriend Returns Integer
    integer iRetVal
    if (MyFriend.Last = SearchFriend.Last) ;
        move (GE) to iRetVal
    else ;
        move (LE) to iRetVal
    Function_Return iRetVal
End_Function  // MyComparison
// fires when the button is clicked
Procedure OnClick
    // declare array of 10 tFriend structs
    tFriend[10] MyFriends
    // declare tFriend struct that will hold search value(s)
    tFriend SearchFriend
    integer iSearchIndex i iArraySize
    // move value to compare array values to the Comparison struct
    move "Jones" to SearchFriend.Last
    // fill MyFriends array
    move "Janet" to MyFriends[0].First
    move "Smith" to MyFriends[0].Last
    move "Pedro" to MyFriends[1].First
    move "Rodriguez" to MyFriends[1].Last
    move "Judy" to MyFriends[2].First
    move "Smith" to MyFriends[2].Last
    move "Fred" to MyFriends[3].First
    move "Jones" to MyFriends[3].Last
    move "Martin" to MyFriends[4].First
    move "Anderson" to MyFriends[4].Last
    move "Michael" to MyFriends[5].First
    move "Schmidt" to MyFriends[5].Last
    move "Jacques" to MyFriends[6].First
    move "Verne" to MyFriends[6].Last
    move "Enrico" to MyFriends[7].First
    move "Ricci" to MyFriends[7].Last
    move "Karl" to MyFriends[8].First
    move "Sorensen" to MyFriends[8].Last
    move "Juan" to MyFriends[9].First
    move "Garcia" to MyFriends[9].Last
    // call MyComparison function to search array elements for value(s) in SearchFriend
    move (BinarySearchArray(SearchFriend, MyFriends, Self, get_MyComparison)) to iSearchIndex
    showln "The search value was found in element number " (string(iSearchIndex))
    move (SizeOfArray(MyFriends)) to iArraySize
    for i from 0 to (iArraySize-1)
        showln ":" MyFriends[i].First ":" MyFriends[i].Last ":"
    loop
End_Procedure // OnClick

The above code will trigger error 4516, because function MyComparison returns (GE) and (LE), instead of (EQ), (GT) or (LT).

4517 - Operation Overflow

Cause

This occurs when a operation on a decimal data type results in an overflow. Prior to DataFlex 11.1, an overflow would result in a truncated value. Other data types (besides decimal), notably the number data type, does not raise an error when an overflow occurs.

DataFlex has never raised errors on overflows. If you are dealing with very large numbers where an overflow is possible, you should use the decimal data type. This gives you the largest range possible (decreasing the chance of an overflow) and it reports when an overflow actually occurs.

4518 - System Table has more than One Record

Cause

This error occurs when a system table is opened and it has more than one record. Prior to DataFlex 11.1, it was possible to open a system file that contained multiple records. A multi-record system table is a bug, which is now reported. This is non fatal error and the file will still be opened.

Resolution

Existing applications from revisions of DataFlex older than 11.1 may contain system tables with multiple records. The extra records may be the residual effect of an old error. While this may problem may be fixed in your application and the extra records are not creating any problems with your existing application, you will get an error which was not encountered in previous releases. You are encouraged to fix these tables by removing the extra records. If you cannot immediately correct these errors you can suppress the reporting of these errors by telling the error handler to ignore these errors. This is accomplished by adding the following line to the top of your windows or web application (after the inclusion of the error handler package).

Use ErrorNum.inc
Send IgnoreError of Error_Object_Id DFERR_SYSTABLE_TOO_MANY_RECORDS

This will allow you to continue to use your system table as before. It will not allow you to add more records to this table -- this is a more serious bug which should not be suppressed.

4519 - Invalid System Table Record Creation

Cause

This error occurs if you attempt to save a new record that would result in more than one record in a system table. Prior to DataFlex 11.1, it was possible to save multiple records to a system table. This was a bug, which is no longer allowed.

Resolution

You should not try to suppress or work around this error. If your application is attempting to save new records to a system table, you have a serious error which needs to be fixed. Either your table should not really be marked as a system table, or you should not be saving new records to it.

4520 - Missing end metadata tag set

Cause

End of file was found before the end of the meta- data tag set, missing '}'.

Resolution

Correct the meta-data tag to include the missing '}'.

See Studio Meta-Data for more information on meta-data.

4521 - Invalid resource data

Cause

The embedded ActiveX resource data between Embed_ActiveX_Resource/End_Embed_ActiveX_Resource is invalid or incorrect.

Resolution

Delete the Embed_ActiveX_Resource/End_Embed_ActiveX_Resource block of code and allow the Studio to recreate it. You can do so by right-clicking on the ActiveX control in question and selecting "ActiveX Properties" from the context menu. When you set the ActiveX properties, the Studio will save the resource data in an Embed_ActiveX_Resource/End_Embed_ActiveX_Resource block of code.

4522 - Changes detected in precompiled package

Cause

Changes were detected in precompiled package while attempting to include it.

Resolution

The precompiled package must be recompiled for the changes to take effect.

4523 - The specified DateTime contains an invalid value

Cause

This error is triggered whenever DateTime arithmetic is attempted with invalid values. The result is always a Null value.

Resolution

Ensure that valid values are supplied for DateTime arithmetic. See the DateTime command for details.

4524 - The specified TimeSpan contains an invalid value

Cause

This error is triggered whenever TimeSpan arithmetic is attempted with invalid values. The result is always a Null value.

Resolution

Ensure that valid values are supplied for TimeSpan arithmetic. See the TimeSpan command for details.

4525 - The specified Time contains an invalid value

Cause

This error is triggered whenever Time arithmetic is attempted with invalid values. The result is always a Null value.

Resolution

Ensure that valid values are supplied for Time arithmetic. See the Time command for details.

4526 - Change in Parent record not allowed

Cause

If an error occurs this is most likely a programming error. You've told the DD it will not change, but it has. This can be particularly useful with alias files because you most often use alias files as parents and you most often do not want them to be changed. Setting this true in the DD provides a quick and easy way to make sure that this is really the case. If this happens, it is expected that the developer will want to fix their code.

Resolution

See pbForeignReadOnly.