Error Maintenance

Visual DataFlex comes with an Error Maintenance utility, which can be launched from the Visual DataFlex Studio by choosing Error Maintenance from the Workspace pulldown menu.

The Error Maintenance utility displays error messages that are kept in several tables. The tables are named flexerrs.dat (stores Operating System and User errors), dferr001.dat (stores System errors), dferr002.dat (stores Utility errors), dferr003.dat (stores generic DBMS driver errors). Depending on which database Connectivity Kits for Visual DataFlex you have installed, there may be additional error message tables (dferr004.dat, dferr005.dat, etc.) on your system. These tables are stored in the Usr subfolder beneath the folder where you installed Visual DataFlex.

In the Error Maintenance Utility, all available error messages can be viewed and those in the 1-4096 range (in flexerrs.dat table) can be edited. We do not suggest editing existing error messages numbers or messages, but this utility can be used to add your own error messages to the existing ones.

In order to edit the available data files for a specific workspace, copy the tables listed above to the Data subfolder of your workspace, then use the Error Maintenance utility to edit the errors.

See Also

Error

Error_Report_Mode

Error Maintenance Utility Help File

ErrorSystem


Generic Errors

There are 4 errors called generic errors:

  • 4400 - DfErr_Compile

  • 4401 - DfErr_Operator

  • 4402 - DfErr_Program

  • 4403 - DfErr_Setup

These errors have entries in the error database table with error text that is intentionally left blank (these are errors 4400-4403). You should use these errors when you need to report an error where you wish to provide all of the error message text within your code. These were created so that you will no longer need to generate errors with ad-hoc error numbers. You will use this most frequently to report operator and program errors.

For example, let's say you wish to report an error in your program that reports, "You cannot enter negative inventory quantities". In older version of Visual DataFlex, there were two ways to generate this error

Error DfErr_Operator_Error "You cannot enter negative inventory quantities"

Error 300 "You cannot enter negative inventory quantities"

The first method would generate the error "Operator error. You cannot enter negative inventory quantities". However, you wanted to control the entire error text and you do not want to see "Operator error". This is text provided by flexerrs.dat, the error database table.

The second method would generate the error "You cannot enter negative inventory quantities". This is what you want but to do this you've been forced to use an ad-hoc error number (300).

Now you should use the DfErr_Operator. It is a real error, but the text provided from the error database table is blank. Here are some examples of how you might use these errors:

Error DfErr_Operator "You cannot enter negative inventory quantities"

Error DfErr_Program "Bad data passed in MySpecialProcedure. Contact your programmer."


Runtime Errors

Operating, User, System, Utility and Initialization errors fall under the category of runtime errors.

These errors are displayed like this in Visual DataFlex:

1. The first line inside the error dialog displays the error message text.

2. The File and Field refer to the database table and field the error applies to (if the error applies to a database).

3. The Error Number refers to the error number as listed in the error database table and this help book.

4. The Line Number (e.g. 9529) is the line in the compiled program where the error was triggered.

In order to review the line of code referred to by the Line Number, the programmer can:

  1. Look for this line of code in the compiled source code (FileName.PRN) file for this application

  2. Load the application the Visual DataFlex Debugger and view the source code line there

Runtime errors are those that occur when you are actually running a program (as opposed to compiling it). Runtime errors can be the result of a fault in a file definition, the specifications made in the installation of Visual DataFlex, configuration of your operating system, or operator actions, but many runtime errors result from a condition that has to be corrected in the program.

When this is the case, corrective action usually includes the same steps required to correct compiler errors: edit the program, make corrections, and recompile the program. Other steps may be required in addition to, or instead of, these steps.

Fatal Errors

In some of the error message sections, you will see "This error is fatal." This means that this type of error will cause the application that triggered the error to abort.


Media and Hardware Errors

If there is a problem with your equipment, disk media or operating system, it will usually show up in the filing system. If a program that was working properly suddenly stops working, it is usually (but not absolutely always) some sort of hardware or media problem.

A problem that does not happen consistently under exactly the same conditions is almost always a hardware problem. If you have this type of problem, you should run all of your system diagnostics several times. You should also test other software that uses similar resources. After any hardware malfunction, the reindexing utility in Database Builder should be used.

Media and hardware errors refer to problems that result in physical corruption of the data on your disk, not operator or program error. There are two primary causes for these errors: disk media defects and power failure. There is a good statistical probability that eventually you will have a media failure. It is equally true that you will have power failures.

Visual DataFlex keeps all of your data current on disk in case of power failure, but different equipment and operating systems have different capacities for coping with this problem. Some poorly designed equipment can destroy an entire disk if the power goes out at the wrong time, while others handle it with almost no effect.

Probably the worst case is when a system makes small, almost undetectable errors on the disk after a power failure. Some power "flickers" or "spikes" can cause data errors that are unnoticed at the time they occur. After a power failure, flicker or spike, or a media error, you should use the reindexing utility in Database Builder to ascertain the extent of data corruption and re-establish data integrity.

It is most important to maintain recent backups to guard against these data killers. On any system storing and/or accessing database tables, you should purchase an uninterruptible power supply (UPS) to prevent power failure and surging problems.


Data Recovery Techniques

Why Would You Need to Recover Data?

Due to power problems, media failure and sometimes program code errors, it may become necessary to restore the integrity of your data. This recovery may be necessary on several levels. If you have a corrupted disk directory, you will need to recover all of the files on a disk (primary data recovery). If only one file is corrupted, there are specific methods for recovering one file (secondary data recovery).

Before you start any kind of data recovery, you should consider whether it is worthwhile. Assuming you have made proper backups, it may be simpler to restore your back ups and bring those files up to date by manually re-entering data!

Read Caching and Opportunistic Locking

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

Repairing the Embedded (DataFlex) Database

If you experience data corruption in embedded database tables, there are a number of steps you can take to repair the database before moving on to the data recovery steps outlined in the Primary Data Recovery and Secondary Data Recovery below. The steps that you may be able to take or will help your situation will vary with the type of data corruption you are experiencing.

  • If indexes are damaged, you can reindex the database from Database Builder's Maintenance menu. If the damage in the data file extends beyond indexes, the database will have to be repaired before reindexing.

  • If header integrity checking is enabled in the table, then damaged headers can be repaired from Database Builder's Maintenance menu.

  • You can launch the DataFlex Repair wizard from Database Builder's Maintenance menu. This wizard can fix the following database damage:

  • A mismatch the total number of record slots in the header and the actual total in the table.

  • A damaged free records list

  • If the damaged table is using compression, you may be able to salvage the data by uncompressing or recompressing the table.

  • If your database is only partially damaged, you may be able to recover some, most, or all of the data in it and rebuild the database.

Rebuilding an Embedded (DataFlex) Database Table

Rebuilding an embedded database table requires the following steps:

  1. Export data from the damaged table (if possible), into another table (or an ASCII file or any other storage method you wish to use)

  2. Delete the damaged table

  3. Recreated the table from it's definition

  4. Import the data back into the new table

Here is one method you may use to rebuild an embedded database table:

  1. Make sure you have an up-to-date definition (.DEF) file for the table.

  2. Create another table with the identical table definition. You can do so by using the Load DEF option in Database Builder.

  3. Use the Copy Records option on Database Builder's Maintenance menu to copy records from the damaged table to the new table.

  4. Delete the damaged table.

  5. Re-create the original table (with the original table name). You can do so by using the Load DEF option in Database Builder.

  6. Use the Copy Records option on Database Builder's Maintenance menu to copy records from the damaged table to the new table.

Primary Data Recovery: Corrupted Directory

If the directory on your disk is corrupted (see Media and Hardware Errors), you will need to restore the integrity of the disk before you start on the individual database tables.

You should first make another backup of your entire disk drive and then reformat the disk according to the operating system instructions. Do not make an "image" backup of the type supported by some backup systems. In such systems, be sure to use the "file-by-file" mode. Next, verify the disk drive to make sure there are no media errors.

Finally, restore the files from your backup. You should examine all data files for correctness and proceed with secondary file recovery on all files.

Secondary Data Recovery: Corrupted File

If the integrity of any embedded (DataFlex) database table is suspect, you should use the reindexing utility in Database Builder on each file. The reindexing utility will restore the internal list of deleted records in the .DAT file and recreate the indexes. If there are any bad or duplicate records in the table, they will be removed.

After this procedure, it’s a good idea to use Database Explorer to look at the data in the tables. If reindexing cannot recover the badly damaged data, it is usually better to restore the tables from backup than to try further recovery. Let us emphasize the importance of good back-ups!

Common errors associated with media and hardware failures are:

  • SYSTEM STOPS OR "LOCKS UP" at random times

Most probably a power flicker or spike! (Also check available memory)

  • BDOS Error: Bad Sector; I/O Error; Read/Write Error

These errors are returned directly from the operating system, not from Visual DataFlex. The exact wording may vary from system to system. This type of error is caused by an unrecoverable hardware or media error. The first thing to do is to reformat and restore your data from backup.

If this happens frequently, your hardware should be examined. If you use DVDs, CD-ROMs, floppy disks, or other removable media, you should consider another brand.

Disk Limitations

Each database table and program file takes up disk space. You may run into this at any time whether creating, editing, or compiling any type of file. The error code for a full disk depends on what type of file you are processing. (The error when you are running a Visual DataFlex application is different from the same error when you are using the Studio or compiler).

In any case, you will either have to reorganize the files on your disks or get more storage space. Additionally, be aware that the last edit or addition you attempted was probably not saved properly.

Note that there are two ways to fill up your disk: (1) the storage can be used up; or (2) the directory (number of files) can be filled up. Both of these conditions are treated in the same way; you must remove files from your disk.


Read Caching & Opportunistic Locking

Many types of data corruption can result from improperly configured networks. Typical data corruption caused by such configuration problems is index corruption, but such corruption can be worse than this and affect the entire database, not just indexes.

These problems typically affect file system databases, such as the embedded (DataFlex) database. The best recommendation for avoiding these problems is to use a client/server database, such as Pervasive.SQL or Microsoft SQL instead of the embedded database on networks, particularly Microsoft Windows networks. Data Access Worldwide has Connectivity Kits for many databases including Pervasive.SQL, Microsoft SQL, IBM's DB2 Universal Database, and any ODBC-compliant database.

Microsoft Windows Networks

Improperly configured Windows networks can lead to data corruption in any file system database, including the embedded (DataFlex) database. Two Windows networking behaviors, opportunistic locking (on Windows servers) and read caching (on Windows clients) are the source of the corruption potential.

Data Access Worldwide has a white paper titled "Opportunistic Locking and Read Caching on Microsoft Windows Networks" that tells you how to properly configure Windows Networks for use with the embedded (DataFlex) database. This white paper is available from the white papers section of the Data Access Worldwide web site.

Check the Microsoft Windows documentation for more information regarding read caching on Windows networks.

Novell Netware Networks

Improperly configured Novell Netware networks can lead to data corruption in any file system database, including the embedded (DataFlex) database. Several Netware networking caching behaviors are the source of the corruption potential.

To disable read caching on Netware networks, you can take the steps outlined below:

  • Ensure that the Server is not caching data - turn off Server Cache (True Commit).
    You can do this on the "Advanced Properties" tab of the Netware Client 32 properties.

  • Each Windows workstation must have read caching turned off:
    To ensure this, add a [NWREDIR] tag in the system.ini file of the workstation as follows:

[NWREDIR]
ReadCaching=0

  • Turn off write-behind caching:

  • On Windows 98 and ME workstations:

Control Panel > System > Performance > File System > Troubleshooting:
=> Check the "Disable write-behind caching for all drives" checkbox

  • On Windows NT/2000 and XP workstations add the following Registry settings:

    • UseWriteBehind - Enables write-behind optimization for write-only files.

        1. Edit HKLM\SYSTEM\CurrentControlSet\Services\Rdr\Parameters.

        2. Add a dWord value named UseWriteBehind with value 0.

      • UtilizeNTCaching - Indicates whether the redirector uses the cache manager to cache the contents of files. Disable this parameter only to guarantee that all data is flushed to the server immediately after it is written by the application.

        1. Edit HKLM\SYSTEM\CurrentControlSet\Services\Lanmanworkstation\Parameters.

        2. Add a dWord value named UtilizeNTCaching with value 0.

Check the Novell Netware documentation for more information regarding read caching on Netware networks.


Overview of Operating System Errors

The Visual DataFlex Operating System Error Messages section lists all operating system errors in numeric order.

The operating system errors are those in the error number range of 1-10 and are stored in the flexerrs.dat database table.


Operating System Error Messages

Operating System Errors List

1- Disk full

2 - Disk directory full

3 - Cannot close current extent

4 - Seek to unwritten extent

5 - Directory overflow (disk full)

6 - Seek past end of disk (disk full)

7 - Too many LOCK/REREADs in force

8 - Read error on .VLD file

9 - Write error on .VLD file

10 - Out of memory

1 - Disk full

Cause

  1. Disk space used up.

  2. Printer failure.

Resolution

  1. Make more disk space available.

  2. Check to ensure printer is online and working. Try printing a test page if in doubt.

2 - Disk directory full

Cause

Folder (number of files) full.

Resolution

Move some files in the affected folder to another folder. You will have to make the appropriate change to the pathing environment the application to reflect this change.

Example:

Let us assume that the Order Entry sample workspace that ships with Visual DataFlex has this problem when trying to write to one of its database tables. In that case, we would make a second data folder (Data2) and move some of the files in the first data folder (Data) into the new Data2 folder.

In that case, we would have to append the new data folder to the DataPath in the Registry key for the Order workspace:

DataPath = "C:\Program Files\Visual DataFlex 9.1\Examples\Windows\Order\Data;

C:\Program Files\Visual DataFlex 9.1\Examples\Windows\Order\Data2"

3 - Cannot close current extent

Cause

  1. Generally indicates problems with the operating system’s directory structure of the disk drive. Power failure is a common cause of directory corruption. If you have had other media errors, they can show up later as directory problems.

  2. Can also occur if the transaction type of the database table is set to server atomic, but there is some problem with the Transaction Tracking System (TTS) on the Novell Netware server.

Resolution

  1. 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.

  2. Rebooting the Novell server sometimes resolves the problems. If not, consult your Novell Netware administrator and/or Netware documentation to fix the TTS problems.

4 - Seek to unwritten extent

Cause

  1. Generally indicates problems with the operating system’s directory structure of the disk drive. Power failure is a common cause of directory corruption. If you have had other media errors, they can show up later as directory problems.

  2. Can also occur if the transaction type of the database table is set to server atomic, but there is some problem with the Transaction Tracking System (TTS) on the Novell Netware server.

  3. Can also be generated by network problems.

Resolution

  1. 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.

  2. Rebooting the Novell server sometimes resolves the problems. If not, consult your Novell Netware administrator and/or Netware documentation to fix the TTS problems.

5 - Directory overflow (disk full)

Cause

Directory (number of files) full.

Resolution

Move some files in the affected folder to another folder. You will have to make the appropriate change to the pathing environment the application to reflect this change.

Example:

Let us assume that the Order Entry sample workspace that ships with Visual DataFlex has this problem when trying to write to one of its database tables. In that case, we would make a second data folder (Data2) and move some of the files in the first data folder (Data) into the new Data2 folder.

In that case, we would have to append the new data folder to the DataPath in the Registry key for the Order workspace:

DataPath = "C:\Program Files\Visual DataFlex 9.1\Examples\Windows\Order\Data;C:\Program Files\Visual DataFlex 9.1\Examples\Windows\Order\Data2"

6 - Seek past end of disk (disk full)

Cause

Disk space used up.

Resolution

Make more disk space available or relocate table to another disk with more available space.

7 - Too many LOCK/REREADs in force

Cause

  1. Incorrect coding, where the application does not execute as many Unlock statements as Lock and Reread statements.

  2. Not enough file handles available to handle all the file locking in the application. This is usually the case if the error occurs after moving an application from one operating system to another or from one computer to another.

Resolution

  1. Correct the application source code so that the programming logic executes 1 Unlock statements for each Lock and Reread statement that is executed. You can use the DF_TRAN_COUNT attribute to debug problem code.

  2. Increase the available file handles; Windows operating systems should do this automatically. You can also reduce this problem by using the DF_FILE_MODE attribute to set database tables that are not written to read only. You can also reduce this problem by using the close command to close database tables that you no longer need to keep open.

8 - Read error on .VLD file

Cause

This error is triggered when a read is attempted on a .VLD (compressed database table) file and the operating system returns an error. A typical cause of this error is damaged .VLD files. Rights are not typically a cause of this since the rights violation would be triggered when the file is opened.

Resolution

Restore database file from backup.

9 - Write error on .VLD file

Cause

This error is triggered when a .VLD (compressed database table) file is written to. The operating system reports the error to DataFlex. This error may be caused by:

1. Full disk.

2. Lack of write rights.

3. .VLD file damage.

Resolution

1. Make more disk space available.

2. Allow user and/or application to have write rights to this database table.

3. Restore database file from backup or use data recovery techniques.

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

10 - Out of memory

Cause

Not enough physical memory (RAM) available for program loading and/or execution. This error is fatal.

Resolution

Make more physical memory available. Also, check to make sure that enough disk space is available to create a swap file (virtual memory).


Overview of User Errors

The Visual DataFlex User Error Messages section lists all user errors in numeric order.

The user errors are those in the error number range of 11-4096 and are stored in the flexerrs.dat database table.


User Error Types

Operator Errors

The most common error is a simple mistake by a person who is running a program. Visual DataFlex handles many operator errors directly and gives you the capacity for providing additional checks where required.

Most of these errors, unlike the other runtime errors, do not call for any corrections in program code or system setup. The most correction that is likely to be needed is operator instruction in those cases where the error message itself is not sufficient for the purpose.

Program Code Limitations

Designing a program necessarily involves specifying limits on the application’s capacities. Examples of these limits are:

  • Maximum number of records in a file

  • Field lengths

  • Window lengths

  • I/O Channel numbers

Frequently, program code limitation errors are triggered by errors on the part of the operator, such as entering a number that is too large by mistake. In such cases, the resultant overflow error serves as an automatic form of range verification.

If the capacities are not specified thoughtfully, they may hamper the purposes the program was designed to serve. If field sizes must be changed (or new fields added, making the record larger) after there is data in the table, the table definition may still be changed, using Database Builder.

Programming Errors

In any program, it is possible to use commands which are syntactically correct but which make no sense or cause errors when the program is run. These are generally cases where the operation of a command is not fully understood or is applied improperly.

It may be necessary to debug programming code to determine the state of the program while it is running. Still, the most important step is to read the documentation carefully and review the sample programs provided. Due to Visual DataFlex’s great flexibility, programming errors can appear to be other types of errors.

Data Consistency

Data consistency errors are those caused by improper operation of the application and its failure to do the checks necessary to guarantee data consistency. An example of this would be the deletion of a customer record while there are still transactions for that customer record in another database table related to the customer table.

In transactional environments, it is necessary to prevent the user from deleting such records. A related error is allowing the user to change a key field of an active record. Note that in some applications it is normal and acceptable to have "null" relationships, so the application must check for this condition.

The Visual DataFlex Database Explorer can be a valuable tool for inspecting database tables and diagnosing data problems. Once a problem is uncovered, a check should be put into the application to prevent it from happening again. Data consistency is usually at issue when reports have incorrect totals or data entry screens show the "wrong" records related.


User Error Messages

User Errors List

See Also: Finding Specific Errors

11 - Number too large for field allocation

12 - Window number out of range

13 - An entry is required on this window

14 - Please enter a number

15 - Invalid entry for this window

16 - Please enter a valid date

17 - Numeric entry is out of range

18 - Can't open system communications file

20 - Read error on index file

21 - Write error on index file

22 - Index file damaged

23 - Index file full, exceeds defined size

24 - Can't CHAIN while LOCKs in effect

25 - Record not found

26 - Can't close index file

27 - File location out of range

28 - Duplicate records not allowed in file

29 - Text field too long

30 - Can't read configuration file

31 - Program file not found

32 - Can't open output file

33 - Can't open input file

34 - Not a valid Visual DataFlex program

36 - Too many resident images for memory

37 - Error reading virtual memory file

38 - Error reading .exe file

39 - Error in system flush file

40 - Invalid accelerator key destination

41 - Find prior to beginning of table

42 - Find past end of table

43 - Can't open index file

44 - Channel number out of bounds

45 - Illegal operation on device

51 - Bad format in expression (operand)

52 - Bad format of expression (operator)

53 - Function not supported in this O/S

54 - Invalid symbol in expression

55 - Invalid data type in expression

56 - Attempt to run uncompiled expression

57 - Required message argument missing

58 - More than 25 (parentheses) in expression

59 - Floating point exception error

60 - Bad or missing .DEF file

61 - Illegal redefinition of existing table

62 - .TAG file error

63 - Attempt to delete a protected record

64 - Attempt to Find a protected record

65 - Attempt to create in a protected table

66 - Attempt to edit a protected record

67 - Array too large

68 - Can't create item

69 - Unresolved object reference

70 - Not a current embedded database table

71 - No record in memory to delete

72 - Table not open

73 - Utility can't find .exe file

74 – Entry does not exist in filelist.cfg

75 - Can't open table

76 - Internal Huffman error

77 - Field number out of range

78 - Can't update Record 0 of table

79 - Field not indexed - can't find by this

80 - Can't close table

81 - Record number out of range

82 - Edited record not saved

83 - Data type error - String used as Number

84 - Field outside record

85 - Can't open .VLD file

86 - Related fields not the same length

87 - No Superfind path to this record

88 - Invalid table name

89 - Infinite recursion

90 - Please enter a valid record ID

91 - Attempt to put into Integer constant

92 - Program file not found

93 - Argument for return value missing

94 - Program line number out of range

96 - Can't open program file

98 - Invalid message

99 - Wrong revision of Visual DataFlex

100 - Operator error

101 - Can't change key field

11 - Number too large for field allocation

Cause

1. This is usually caused by the operator entering too large a number in a data entry object (DEO).

2. Numeric database field is not big enough to hold the required value.

Resolution

1. The operator needs to enter a value within the bounds of the numeric database field.

2. You may have to change the file definition to allow the field to hold a larger number.

12 - Window number out of range

Cause

This should only occur in legacy code using images, such as a BasicReport.

1. This is usually caused by improper use of window indexing. For example, if an image named Body only has 10 image windows, moving a value to Body.11 will trigger this error.

2. Also caused by more than 241 indicators used in a program.

Resolution

1. Recount your windows or debug into the windowing loop to determine the index value (image window being addressed) when this error occurs.

2. Reduce the number of indicators in use. In most cases, an indicator can easily be replaced with a boolean variable.

13 - An entry is required on this window

Cause

Operator attempted forward navigation (tab) past a DEO where an entry is required or to save a record without entering data in a required DEO.

Resolution

Enter valid data into the DEO in question.

14 - Please enter a number

Cause

Entry of letters ("O", lower case "L", etc.) in a numeric-typed DEO.

Resolution

Only enter numbers into a window of numeric type.

15 - Invalid entry for this window

Cause

Entry does not conform to simple validation in DataDictionary (field value_check property).

Some means for determining what values are acceptable should be provided for the operator (prompt object, comboform, custom status message).

Resolution

Enter valid data into the DEO in question.

16 - Please enter a valid date

Cause

Entry of an improper date format or value.

Resolution

Make sure you enter a valid date. The date you enter must be valid in the format used by your Windows Regional settings and/or application settings.

Example:

Entering 122401 into a date window with US Regional Settings (mm/dd/yyyy) would be converted into the valid (US) date 12/24/2001 – month 12, day 24, year 2001.

However, entering 12/24/01 into a date windows when your Windows Regional settings are set to European standard settings (dd/mm/yyyy) would be converted into the invalid (European) date 12/24/2001 - day 12, month 24, year 2001, and trigger this error.

17 - Numeric entry is out of range

Cause

Entry does not conform to range specified in DataDictionary (field value_range property).

Some means for determining what range is acceptable should be provided for the operator (prompt object, comboform, custom status message).

Resolution

Enter valid data into the DEO in question.

18 - Can’t open system communications file

Cause

Visual DataFlex cannot establish multi-user operating system communications. Check your installation notes for information relating to your particular operating system.

This error is fatal.

20 - Read error on index file

Cause

1. Corrupted index file.

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.

This error is fatal.

Resolution

1. Reindexing is usually sufficient to resolve this problem.

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.

21 - Write error on index file

Cause

1. Corrupted index file.

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.

3. Can also be caused by a disk full condition.

This error is fatal.

Resolution

1. Reindexing is usually sufficient to resolve this problem.

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.

3. Make more disk space available.

22 - Index file damaged

Cause

1. Corrupted index file.

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.

This error is fatal.

Resolution

1. Reindexing is usually sufficient to resolve this problem.

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.

23 - Index file full, exceeds defined size

Cause

In Database Builder, you can specify the maximum number of records that can be in a database table. If this number is greatly exceeded, this error will be triggered.

Resolution

To fix this, open the table in Database Builder and increase the maximum number of records. You will then have to rebuild all indexes for the table.

24 - Can’t CHAIN while LOCKs in effect

Cause

The chain command was executed after a lock or reread command without an unlock command’s having first been executed.

25 - Record not found

Cause

Find errors — find or reread command was unsuccessful. To determine what the problem is, check the value of the record buffer or DataDictionary value (field_current_value) in the debugger directly before the find.

Be conscious of the record number, which, if included in the index (RECNUM field), must be part of the key for a "find EQ".

26 - Can’t close index file

Cause

1. Corrupted index file.

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.

This error is fatal.

Resolution

1. Reindexing is usually sufficient to resolve this problem.

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.

27 - File location out of range

Cause

This error is sent when a sequential positioning statement is issued that places the file pointer outside of the in-memory buffer range. This error is used with image and DBMS devices.

28 - Duplicate records not allowed in file

Cause

An attempt was made to save a record whose values in (uniquely) indexed fields match the values of a record already in the table. Where an index containing multiple matching entries is in fact desired, this is a programming error.

A save was attempted on a record having an index key value that matches one already in the index. If unexplainable, try reindexing the file. Where the application in fact requires unique values, this is an operator error.

29 - Text field too long

Cause

This error is sent when a write is performed to a sequential file of DBMS or image type and the write causes the sequential buffer to fill.

30 - Can’t read configuration file

Cause

The compiled program file is not a compiled Visual DataFlex program or the file is damaged.

Resolution

Re-precompile all header files by selecting Precompile All Packages from the Tools menu of the Studio.

Recompile your application.

31 - Program file not found

Cause

1. Attempt to execute a program that does not exist.

2. Error in a runprogram or chain command.

3. Attempt to execute a program file that is not a valid Visual DataFlex program.

4. Program file could be corrupt.

5. Attempt to execute a program file that was compiled in an earlier version of Visual DataFlex.

This error is fatal.

Resolution

1. Check the path to and name of the program.

2. Check the path to and name of the program in the chain or runprogram statement.

3. Execute the program using the proper method.

4. Recompile the program.

5. Recompile the program in the current version or install the VDF runtime for the version in which the program to be executed was compiled.

32 - Can’t open output file

Cause

1. The disk is full or the file name is invalid.

2. An invalid file name or path.

3. An invalid syntax used with the direct_output or append_output commands.

4. Output is attempted to a device that has not been opened (e.g. using Write, WriteLn, WriteHtml).

Resolution

1. Ensure that enough space is free on the target disk drive for the file.

2. Verify that you are using a valid file name. Valid file names and paths are any that are valid in the Windows operating system.

If you are using Novell Netware, make sure that Netware has long filename support enabled, or the file name you are trying to write to may be truncated.

3. See the documentation for direct_output or append_output and verify the syntax.

4. Make sure you open an output device before attempting to write to it.

This can sometimes be tricky in a Web application. See the example below:

Example

In the sample code below, in a cWebReport object, the 2 "send WriteHtml .." lines will generate errors. This is because the DoRunReport message in the cWebReport class opens and closes output devices and channels for output to the web browser using WriteHtmlxxx messages. Before and after DoRunReport is executed at the class level (via "forward send") the output channels used by the report are closed.

Function DoRunReport Returns integer

integer iStat

Send WriteHtml "Start" // will generate an error

Forward Get DoRunReport to iStat // this opens channel, runs, and closes channel

Send WriteHtml "End" // will generate an error

End_Function

33 - Can’t open input file

Cause

The device named in a direct_input command is not defined in your system, or the file named is not present on the drive, folder, or search path.

34 - Not a valid Visual DataFlex program

Cause

This error occurs when the Visual DataFlex runtime (dfrun.exe) is directed to execute a non-Visual DataFlex program file. This can occur because of a faulty runprogram or chain command, but is most likely to be the result of folder file naming or renaming errors entirely outside of Visual DataFlex.

Resolution

Check your folder for files with extension .exe which are not compiled Visual DataFlex program files.

36 - Too many resident images for memory

Cause

This should only occur in legacy code using images, such as a BasicReport.

Image windows in your program consume memory. Images with the resident option consume an amount of memory equal to their actual size in bytes (up to about 2,000 each). If you get this error, you must reduce either the number of windows in your program (consider separating it into multiple programs), the number of images using the resident option, and/or the size of such images. This error is most likely to be reported at compile time.

37 - Error reading virtual memory file

Cause

This error occurs when a read error is issued while Visual DataFlex is attempting to retrieve information that has been swapped to disk. This error should not happen and is an indication of a larger system problem.

38 - Error reading .exe file

Cause

This error could occur if there is an error while reading the .exe file from disk.

Resolution

Recompile the program or copy the compiled program file from a location (e.g. development PC) where no such error occurs.

39 - Error in system flush file

Cause

This error is sent when there is an error initializing or writing to a virtual swap file.

1. Disk is full.

2. The value of the TMP and/or TEMP environment variables specify an invalid path.

3. This error is sometimes caused by using up of system resources, such as file handles.

Resolution

1. Make more disk space available.

2. Verify and correct the values of the TMP and TEMP environment variables.

3. Increase available file handles (Windows should handle this automatically).

40 - Invalid accelerator key destination

Cause

This error occurs when an accelerator key is pressed where the object to receive the message is invalid (not created yet, name misspelled, etc.). This is most likely caused by an incorrect On_Key statement in the program source.

41 - Find prior to beginning of table

Cause

This error occurs if an attempt was made to find a previous record (find LT) when there is no previous record available, such as trying to execute a "find LT" when there is no record in the DataDictionary or record buffer, or when the first record is in the DataDictionary or record buffer.

Example:

If the cursor is in a Customer Number form and no Customer record is loaded, trying to execute a "find previous" or "find LT" will trigger this error since there is no record prior to zero.

42 - Find past end of table

Cause

This error occurs if an attempt was made to find a next record (find GT) when there is no previous record available, such as trying to execute a "find GT" when the last record is in the DataDictionary or record buffer.

Example:

If the cursor is in a Customer Number form and the last Customer record is loaded (by the Customer Number index), trying to execute a "find next" or "find GT" will trigger this error since there is no record following the last record.

43 - Can’t open index file

Cause

In the embedded (DataFlex) database, the index information is kept in a separate file from the actual database. The index files have the same root name is the table itself, with a .K?? extension, where "??" is the index number. These files must reside on the same drive as the table (see error 75).

This error is fatal.

44 - Channel number out of bounds

Cause

Channel numbers specified in sequential read, write, open, and close commands must lie in the range 0 -9. This error is reported when the channel number lies outside this range. If you are using a variable to store the channel number, use the Debugger to see it's value when this error is triggered.

45 - Illegal operation on device

Cause

This error is caused when a invalid operation is performed on a sequential device. For example, a dir device may not be opened for output or appending.

51 - Bad format in expression (operand)

Cause

The expression evaluator runs across an improper argument when it is expecting an argument. Most expression errors are not reported until runtime.

If unexplainable, you may have a data consistency error.

Example:

(1+*2).

52 - Bad format of expression (operator)

Cause

The expression evaluator runs across an improper operator (+, -, *, or /) when it is expecting a function.

53 - Function not supported in this O/S

Cause

The program contains a command (such as runprogram wait) which is not supported in the operating system you are running on.

54 - Invalid symbol in expression

Cause

If a keyboard entry to a number variable or database field contains non-numeric characters, this error will be triggered. This error is also triggered when data substituted into a comparison includes a number and a non-number (e.g., if ("ham" >= 7)...). The error is caused not by the type of the variable(s) or field(s), but by the type of the data itself (i.e., if ("ham" >= "7")... would not cause the error).

Example:

Move (Integer()) To i

This sample is missing the parameter for the integer function. The correct version might look like this:

Number nAmount

Move (Integer(nAmount)) To i

Example:

String sName

Number nSin

Move "joe" To sName

Move (Sin(sName)) To nSin

A string is not a valid parameter for the sin() function.

55 - Invalid data type in expression

Cause

Certain data types (strings, and windows without parentheses around them, indicators, labels), are not allowed in expressions. This error reports the presence of such terms in expressions. Most errors of this type will be reported first at compile time.

56 - Attempt to run uncompiled expression

Cause

The compiler compiles expressions for type. If an expression generates an error at compile time (see errors 50, 54, 55, 57, 58, 59), it will not be compiled. If the compiled program is run without correction of the problem and recompilation, the uncompiled expression will generate this error at runtime.

57 - Required message argument missing

Cause

1. Not all required arguments were sent to a message.

2. The compiler maintains a "stack" which it uses to type all expressions. Too many terms and/or too many terms of different types in an expression can trigger this error.

Resolution

1. Send all required arguments to the message in question.

Example:

Function DoCalcDifference integer i1 integer i2 returns Integer

Function_Return (i1-i2)

End_Function // DoCalcDifference

Procedure OnClick

integer i1 i2 i3

move 20 to i1

move 10 to i2

get DoCalcDifference i1 to i3

send Info_Box i3 "Difference:"

End_Procedure // OnClick

In the above code, only i1 is sent to function DoCalcDifference, but that function requires 2 arguments to be sent to it. In the corrected code below, both i1 and i2, 2 arguments, are sent to DoCalcDifference.

Function DoCalcDifference integer i1 integer i2 returns Integer

Function_Return (i1-i2)

End_Function // DoCalcDifference

Procedure OnClick

integer i1 i2 i3

move 20 to i1

move 10 to i2

get DoCalcDifference i1 i2 to i3

send Info_Box i3 "Difference:"

End_Procedure // OnClick

You can write functions that require a variable number of arguments, using the Num_Arguments predefined variable.

2. To overcome this error, "build up" your final expression through two or more actual lines of code (commands). Most errors of this type will be reported first at compile time.

58 - More than 25 (parentheses) in expression

Cause

This error is generated when more than 25 pairs of parentheses are used in one expression.

Resolution

To overcome this error, "build up" your final expression through two or more actual lines of code (statements). Most errors of this type will be reported first at compile time.

59 - Floating point exception error

Cause

This error occurs when an expression evaluates to a value outside the range of Visual DataFlex Real numbers (1 times 10 to the 306 power).

60 - Bad or missing .DEF file

Cause

A make_file command was executed which used a rootname in its argument for which either no .DEF file was found, or if a .DEF file was found, it was not in the required format for such files.

61 - Illegal redefinition of existing table

Cause

A make_file command was executed which had in its argument the number of an existing database file and: (a) the file rootname in the command argument didn’t match the one in the definition of the database file whose number was used; or (b) the database file whose number was given has data in it and the lengths, types, or total length of the fields in the definition of that database file do not match those in the .DEF file whose rootname was used in the command.

62 - .TAG file error

Cause

A make_file command was executed which used a rootname in its argument for which either no .TAG file was found, or if a .TAG file was found, it was not in the required format for such files.

63 - Attempt to delete a protected record

Cause

1. An attempt was made to delete a record in a table set to read only by the DF_File_Mode attribute.

2. An attempt was made to delete a record in a table flagged as read only by the operating system.

Caution: On some operating systems, copying files from a CD-ROM device to a hard disk may set files to read only automatically.

3. An attempt was made to delete a record in a table where the user running the VDF program only has read permissions.

64 - Attempt to Find a protected record

Cause

A find was attempted in a table with its DF_File_Mode attribute set to DF_FILEMODE_NO_FINDS.

65 - Attempt to create in a protected table

Cause

1. An attempt was made to save a new record in a table set to read only by the DF_File_Mode attribute.

2. An attempt was made to save a new record in a table flagged as read only by the operating system.

Caution: On some operating systems, copying files from a CD-ROM device to a hard disk may set files to read only automatically.

3. An attempt was made to save a new record in a table where the user running the VDF program only has read permissions.

4. An attempt was made to save a new record in a table currently open in exclusive mode by another VDF program (e.g. Database Builder).

66 - Attempt to edit a protected record

Cause

1. An attempt was made to save an existing record in a table set to read only by the DF_File_Mode attribute.

2. An attempt was made to save an existing record in a table flagged as read only by the operating system.

Caution: On some operating systems, copying files from a CD-ROM device to a hard disk may set files to read only automatically.

3. An attempt was made to save an existing record in a table where the user running the VDF program only has read permissions.

4. An attempt was made to save an existing record in a table currently open in exclusive mode by another VDF program (e.g. Database Builder).

67 - Array too large

Cause

This error is used when an accelerator key has been pressed and the destination object is not defined. This may happen because of invalid object references in access methods.

68 - Can’t create item

Cause

1. This error is used when an entry_item, item, or item_list statement is used in an object or class that does not support the creation of entry_items, items, or item_lists.

2. If there is a memory error during the creation of an entry_item, item, or item_list statement, then the error will be issued.

69 - Unresolved object reference

Cause

This error is used when a message is sent of an object that does not exist, or an object that uses an access method that does not apply to it.

70 - Not a current embedded database table

Cause

1. Database tables (.dat files) created under revisions of DataFlex prior to 2.3 (2.2 and earlier) cannot be used under Visual 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 Visual 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.

71 - No record in memory to delete

Cause

A delete was attempted on a record that does not exist, or with no record in memory.

If a delete command is issued against an INACTIVE record buffer, the DBMS won’t know what record to delete and will report error 71. Delete must be used with a "found" record.

72 - Table not open

Cause

1. If a database table is referenced before it has been opened, you will get error 72.

Example:

String sState

Move Customer.State to sState

open Customer

The Customer table must be opened before referencing it:

String sState

open Customer

Move Customer.State to sState

2. A program attempts to open a table before a workspace has been opened.

3. The table in question was closed in the application prior to the line of code referencing the table in question.

4. This error can be caused by a missing "set Main_DD" statement in a dbList object (typically) or other component.

5. This can also be caused by a table not being on the disk, in which case you should get an error 75 first.

6. A declare_datafile command can allow a program that references a table to be compiled without opening the table. This is sometimes done when the table is expected to be opened in another part of the program.

This error is fatal.

Resolution

1. Open the database table before referencing it in the code.

2. This typically happens if the table is opened prior to the cApplication object being created. If this happens, the DataPath and FilelistPath specified in the workspace (.WS) file has not been read yet and instead the program is looking to open the first filelist.cfg it finds along the default DFPath for Visual DataFlex in the Windows Registry (under HKey_Local_Machine\Software\Data Acccess Worldwide\Visual DataFlex\X.x\Defaults, where X.x is the Visual DataFlex revision).

To correct this condition, ensure that you do not attempt to open a table until the correct workspace has been opened.

If no cApplication object exists in your program and you want your program to use a workspace, add one and make sure that it is declared before open any database tables.

3. Reopen the database table or debug/eliminate the line of code that closes it.

4. Place a "set Main_DD to <DataDictionary Object Name>" statement into component or set the Main DDO using the Database Selector – DDO Tree button in the Studio.

5. Make sure the table is on the disk and accessible.

6. Replace the declare_datafile command with an open command, or make sure another part of the program opens the file prior to its first reference in the program.

73 - Utility can’t find .exe file

74 – Entry does not exist in filelist.cfg

Cause

1. There is no filelist entry for the database table referenced by the open command.

2. Filelist.cfg is not found.

3. A program attempts to open a table before a workspace has been opened.

This error is fatal.

Resolution

1. This error is often the result of a .FD file used when the application was compiled being out of synch with the actual number used for the table in question in the current filelist. In that case, recreating the .FD files in question from Database Builder and then recompiling the application will solve the problem. Alternatively, the current filelist entry may be moved to the filelist slot referenced in the .FD file used at compile time.

2. Check the Filelist= statement in the workspace (.WS) file for the application to make sure it points to the correct filelist.

3. This typically happens if the table is opened prior to the cApplication object being created. If this happens, the DataPath and FilelistPath specified in the workspace (.WS) file has not been read yet and instead the program is looking to open the first filelist.cfg it finds along the default DFPath for Visual DataFlex in the Windows Registry (under HKey_Local_Machine\Software\Data Acccess Worldwide\Visual DataFlex\X.x\Defaults, where X.x is the Visual DataFlex revision).

To correct this condition, ensure that you do not attempt to open a table until the correct workspace has been opened.

If no cApplication object exists in your program and you want your program to use a workspace, add one and make sure that it is declared before open any database tables.

75 - Can’t open table

Cause

1. There is no filelist entry for the database table referenced by the open command.

2. The TableName has .DAT appended to it in the open statement.

3. The rootname entry in filelist.cfg has an incorrect extension.

4. The database table is corrupted.

This error is fatal.

Resolution

1. Make sure that the root name in File Definition corresponds with the actual name and drive of the table as shown in your workspace's data path.

2. Make sure the open statement does not have .DAT appended to the TableName. Consult the Open command for more information.

3. If the table is an embedded (DataFlex) database table, the extension for rootname in the filelist entry should be none (e.g. "Customer").

If the table is of another database, the filelist entry should have a .INT extension (e.g. "Customer.INT"). There may be other valid filelist entries depending the type of database you are using. Consult your Connectivity Kit documentation for more information.

4. Generally, the disk should be reformatted and data recovery techniques used. Restoring data from a good backup is the best recovery method.

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

76 - Internal Huffman error

Cause

This error indicates corruption in an embedded (DataFlex) database compressed data (.VLD) file.

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.

77 - Field number out of range

Cause

1. This is generated by addressing a field number that is not in the current range of fields in the table. For example, if the table definition of the Customer table has 10 fields, you cannot access filed 12.

2. This can also be caused by using an old program with a modified table definition.

Resolution

1. Address a field that is within the correct range.

Example:

integer iType

get_attribute DF_FIELD_TYPE of Customer.File_Number 20 to iType

The sample above is attempting to retrieve the field type of field 20 of the Customer table. If the Customer table only has 15 fields, this code will generate error 77.

integer iType

get_attribute DF_FIELD_TYPE of Customer.File_Number 15 to iType

2. Recreate the table definition (.FD) file using File > Output DEF/FD in Database Builder, then recompile the program.

78 - Can’t update Record 0 of table

Cause

Database table or disk directory is damaged.

This error is fatal.

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.

79 - Field not indexed - can’t find by this

Cause

A find has been attempted on a non-indexed field.

1. User is attempting a find on a non-indexed field.

2. Incorrect coding that incorrectly tries to find on a non-indexed field.

Resolution

1. or 2. Either add an index to the table for the field in question or instruct the user that this field cannot be used to find records.

80 - Can’t close table

Cause

Database table or disk directory is damaged.

This error is fatal.

Resolution

Generally the disk should be reformatted and data recovery techniques used. Restoring data from a good backup is the best recovery method.

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

81 - Record number out of range

Cause

If a record number out of range error occurs when saving a record, it indicates a corrupted database table.

Resolution

Generally the disk should be reformatted and data recovery techniques used.

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

82 - Edited record not saved

Cause

If an indexed field in an active record buffer is edited and then either a find is attempted or the file is closed before the edited record saved, this error will be reported, and the buffer will not be cleared.

83 - Data type error - String used as Number

Cause

Type check error. This often arises from use of an old program with a database file whose file definition has been modified.

Resolution

Recompile the program with an up-to-data table definition (.FD) file.

84 - Field outside record

Cause

1. This is generated by addressing a field number that is not in the current range of fields in the table. For example, if the table definition of the Customer table has 10 fields, you cannot access filed 12.

2. This can also be caused by using an old program with a modified table definition.

Resolution

1. Recreate the table definition (.FD) file using File > Output DEF/FD in Database Builder, then recompile the program.

2. Recompile the program with an up-to-data table definition (.FD) file.

85 - Can’t open .VLD file

Cause

1. An open command is issued on a compressed file and the .VLD file is not found.

2. Could indicate corruption in an embedded (DataFlex) database compressed data (.VLD) file.

Resolution

1. Make sure the .VLD file for the current table is located in the same folder in the DataPath as the .DAT file.

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.

86 - Related fields not the same length

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.

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 to Visual 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.

87 - No Superfind path to this record

Cause

Can’t superfind from this DEO; main table in the current view does not relate to this DEO's table and field.

88 - Invalid table name

Cause

A badly formatted or too-long file name has been entered.

89 - Infinite recursion

Cause

1. The program may be calling a function recursively (infinite loop).

2. The program has nested procedures and functions too deep for the runtime to handle.

90 - Please enter a valid record ID

Cause

No record is found in a DEO attached to a database field with Find Required checked in its DataDictionary (using DD_FindReq Field_Option).

91 - Attempt to put into Integer constant

Cause

An attempt was made to change the value of an integer constant.

Resolution

You cannot alter the value of a constant.

92 - Program file not found

Cause

1. Attempt to execute a program that does not exist.

2. Error in a runprogram or chain command.

3. Attempt to execute a program file that is not a valid Visual DataFlex program.

4. Program file could be corrupt.

5. Attempt to execute a program file that was compiled in an earlier version of Visual DataFlex.

This error is fatal.

Resolution

1. Check the path to and name of the program.

2. Check the path to and name of the program in the chain or runprogram statement.

3. Execute the program using the proper method.

4. Recompile the program.

5. Recompile the program in the current version or install the VDF runtime for the version in which the program to be executed was compiled.

93 - Argument for return value missing

Cause

Missing argument for the return value of a function or procedure.

Resolution

Supply a variable to return a function or procedure call return value to.

Example:

Function Foo

Integer iVoid

Function_Return iVoid

End_Function // Foo

Procedure Bla

get Foo

End_Procedure // Bla

The call to Foo above does not allow for a return value from Foo like the correct code below.

Function Foo

Integer iVoid

Function_Return iVoid

End_Function // Foo

Procedure Bla

integer iRetVal

get Foo to iRetVal

End_Procedure // Bla

94 - Program line number out of range

Cause

A precompiled header file may be corrupt.

Resolution

Re-precompile all header files by selecting Precompile All Packages from the Tools menu of the Studio.

Recompile your application.

96 - Can’t open program file

Cause

1. Attempt to execute a program that does not exist.

2. Error in a runprogram or chain command.

3. Attempt to execute a program file that is not a valid Visual DataFlex program.

4. Program file could be corrupt.

5. Attempt to execute a program file that was compiled in an earlier version of Visual DataFlex.

This error is fatal.

Resolution

1. Check the path to and name of the program.

2. Check the path to and name of the program in the chain or runprogram statement.

3. Execute the program using the proper method.

4. Recompile the program.

5. Recompile the program in the current version or install the VDF runtime for the version in which the program to be executed was compiled.

98 - Invalid message

Cause

This error is used when a message is sent to an object and that object (and all of its ancestors) do not understand it (it is not defined in those objects and their superclasses).

Resolution

This is usually caused by sending a message to the wrong object. Ensure that the correct object receives the message. You can usually test this by placing a debugging breakpoint into the message that is being called.

99 - Wrong revision of Visual DataFlex

Cause

This message is issued by the Visual DataFlex runtime (Client Engine) when it detects that the compiled program (.exe file) being executed is a different revision than the runtime.

Resolution

Run 1. Correct

100 - Operator error

Cause

1. An operator entered an incorrect value.

2. An operator performed an incorrect function.

Resolution

1. Correct the value being entered.

2. Do not perform the incorrect function.

101 - Can't change key field

Cause

An attempt was made change the value of a database field with Key Field checked in its DataDictionary (using the Key_Field_State Property).

Resolution

Do not attempt to change the value of a key field.


Overview of System Errors

Overview of System & Program Errors

The Visual DataFlex System & Program Error Messages 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.


System Error Messages

System & Program Errors List

See Also: Finding Specific Errors

4097 - Bad attribute value

4098 - Bad relationship

4099 - Bad parameter

4100 - Cannot find field

4101 - String too long

4102 - Too many table structures

4103 - Bad driver name

4104 - Already started

4105 - Bad table number

4106 - Lock time-out

4107 - Too many indexes

4108 - Record too long

4109 - Data dictionary record not saved

4110 - Structure not started

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

4120 - Cannot rename file

4121 - Operation aborted

4122 - Bad field type in index

4123 - Dynamic area of table header damaged

4124 - Static area of table header damaged

4125 - Argument size too large

4126 - Argument size too small

4127 - Error writing to device

4128 - Maximum records less than total records

4129 - Invalid number for maximum records

4130 - Error number out of range

4131 - Program created with incompatible version

4133 - Data entry subsystem not compatible

4134 - Embedded database table not compatible

4135 - Number too large to convert to integer

4136 - Real too large to convert to integer

4138 - Maximum number of objects reached

4139 - Cannot delete - related tables not open

4140 - Cannot delete - related records exist

4141 Data set files must support transactions

4142 - Cannot recover from transaction error

4143 - Illegal operation during transaction

4144 - Operation not allowed

4145 - Fatal internal error

4146 - RECNUM not allowed as sequential device

4147 - Can't create .HDR file

4148 - Can't write to .HDR file

4149 - .HDR file is damaged or invalid

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

4155 - Edit requires reread or find during lock

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 <line_number>

4172 - Redundant value in collate.cfg on line <line_number>

4173 - Can't open collate.cfg

4174 - Incomplete sequence in collate.cfg

4175 - No printer type specified

4176 - Invalid table size

4177 - File access violation,file may be in use

4179 - Unable to update FILELIST.CFG

4180 - Can't read record zero

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

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

4183 - Can't delete table (.DAT)

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

4221 - Must copy record to identical structure

4222 - Destination file must be empty

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

4224 - No locks available

4229 - DBMS Driver not supported System

4235 - Transaction aborted

4236 - Can't ABORT while in a transaction

4237 - Can't CHAIN while in a transaction

4238 - Can't RUNPROGRAM while in a transaction

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

4262 - Unable to access index file

4263 - Header not damaged

4264 - Header integrity checking disabled

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

4288 - File not on Netware TTS enabled server System

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 <FileName.ext>

4355 - External function not found

4356 - Unable to load DLL

4357 - GUI Subsystem not compatible

4358 - Rawfile command error

4361 - Cannot Find Evaluation DLL

4362 - Evaluation DLL Has Expired

4365 - Large Integer Overflow

4367 Function Not Found in Expression

4379 Wrong Number of Arguments

4381 Illegal Datatype Conversion

4382 Data Out of Range

4383 External Class Not Registered

4384 - Illegal External Class

4385 - Error Not In Use

4386 - Bad registerInterface method declaration

4387 - Too many arguments in registerInterface

4388 - Illegal object name definition

4389 - Illegal property name definition

4390 - Illegal method name definition

4391 - Illegal code placement

4393 - Invalid message syntax

4394 - Invalid object reference

4395 - Obsolete command is unsupported

4396 - Invalid argument

4397 - Illegal external function definition

4398 - Unable to instantiate COM object

4399 - COM object method invocation error

4400 - DfErr_Compile

4401 - DfErr_Operator

4402 - DfErr_Program

4402 - DDO re-entrant operation attempted

4403 - DfErr_Setup

4404 - Winprint error

4405 - Crystal report error

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

4416 - Web Object not found in WebApp

4417 - File Field name not found in Web Object

4418 - DDO Not found in Web Object

4419 - Changed State required by Web Object

4420 - Bad Data passed to Web Object

4421 - Xml/Http Transfer error

4422 - Soap/Http Transfer error

4423 - Soap Fault error

4424 - Text too large for database field

4500 - Missing Debug Information

4501 - Incompatible Debug Information

4502 - Server Web Service Exception

4503 - Invalid RowId Size

4504 - Driver Number Out of Range

4505 - Attempt to Reference Invalid Grid Column

4506 - Column does not Support Combo Messages

4508 - Invalid Use of Non-Main Table

4509 - Referenced Array Index Out of Bounds

4510 - Invalid RowId - Cannot Deserialize

4511 - Specified Dimension not Valid in Array

4512 - Illegal Attempt to Resize Static Array

4513 - Recursive struct definition

4514 - Obsolete or Ambiguous Syntax

4515 - Can't Compare the Element Type

4516 - Bad User Function Return Value

4517 - Operation Overflow

4518 - System Table Has More Than One Record

4519 - Invalid System Table Record Creation

4520 - Missing end metadata tag set

4521 - Invalid resource data

4522 - Changes detected in precompiled package

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.

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 to Visual 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

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 Visual 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 Visual 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 Visual 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 Visual 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 Visual DataFlex has been reached.

Resolution

Reduce the number of objects in your program.

4139 - Cannot delete - related tables not open

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.

4140 - Cannot delete - related records exist

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 Visual DataFlex application is set to None.

Resolution

The transaction type of tables in Visual DataFlex applications using DataDictionaries must be set to either Client Atomic or Server Atomic, it cannot be set to None.

Note: Only set the transaction type to Server Atomic if you are using Novell Netwares Transaction Tracking System (TTS) and the table in question is located on a TTS-enabled Netware volume.

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 - Cant 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 - Cant 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, Visual 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 - Cant 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 processs 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 <line_number>

Cause

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

Resolution

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

4172 - Redundant value in collate.cfg on line <line_number>

4173 - Cant open collate.cfg

4174 - Incomplete sequence in collate.cfg

4175 - No printer type specified

4176 - Invalid table size

4177 - File access violation,file may be in use

4179 - Unable to update FILELIST.CFG

4180 - Cant read record zero

Cause

1. Database table or disk directory is damaged.

2. This error may indicate problems with the operating systems 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 - Cant delete index file (.K*)

4182 - Cant create index file (.K*)

4183 - Cant delete table

4184 - Cant delete variable db table (.VLD)

4185 - Cant delete record

4200 - Cant close variable db table (.VLD)

4216 - Physical file name not specified

4217 - Invalid record length

4218 - File must be opened exclusively

4220 - Cant 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 - Cant 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 - Cant 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 - Cant 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 - Cant 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 - Cant lock record

4243 - Cant unlock record

4244 - Cant copy database

4251 - Cant lock file

4252 - Error in Transaction log

4253 - API not initialized

4254 - Cant Create File

4255 - Cant Load DLL

4256 - Restructure ok, check file for error

4257 - Cant 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 - Cant open intermediate file

4272 - Cant 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

4288 - File not on Netware TTS enabled server System

Cause

Attempt to set a table's transaction type to server atomic that is not on a TTS capable NetWare volume.

A program opens a table flagged for TTS that is not on a TTS capable volume.

File is set to SERVER_ATOMIC and the NetWare redirector drivers are not installed.

Resolution

Move the table to a Novell TTS enabled volume.

Set the table's transaction type to server atomic.

Make sure the Netware redirector drivers are installed.

Make sure the table and all related files (.DAT, .HDR, .K??, .VLD) are flagged for TTS.

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 <FileName.ext>

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.

Windows XP: If HKLM\System\CurrentControlSet\Control\SessionManager\SafeDllSearchMode is 1, the current folder is the last folder searched. The default value is 0.

3. The Windows system directory.

Windows NT/2000/XP: The name of this directory is System32.

4. 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.

5. The Windows folder.

6. 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.

Windows XP: If HKLM\System\CurrentControlSet\Control\SessionManager\SafeDllSearchMode is 1, the current folder is the last folder searched. The default value is 0.

3. The Windows system directory.

Windows NT/2000/XP: The name of this directory is System32.

4. 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.

5. The Windows folder.

6. 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 that does not exist.

Resolution

Ensure that the file 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 Visual DataFlex is registered as an evaluation license, but the evaluation DLL cannot be found.

Resolution

Register a full Visual 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 Visual DataFlex installed location. You may want to reinstall Visual DataFlex to correct this.

4362 - Evaluation DLL Has Expired

Cause

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

Resolution

Register a full Visual 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

4381 Illegal Datatype Conversion

Cause

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.

Resolution

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

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

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 Visual 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 Visual 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.

Resolution

1. Properties defined in a class must be defined inside a Construct_Object.

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 The Data-Dictionary Operation Integers 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.

4405 - Crystal report error

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

A 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.

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 error should not normally occur. It is a dataset legacy feature that should not be in use, and support of this feature has been removed in Visual DataFlex 11.0 due to Non Numeric Multiple Column Row Identifier (NNMCRI or RowId) changes. However, it is possible that this error can occur if a dataset is improperly used.

For example, if a dbGrid or dbList has a missing or incorrect "set Server" or "set Main_File" statement, this error can occur.

Resolution

Add or correct the appropriate "set Server" or "set Main_File" statement.

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.

Visual 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[3] 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 Visual 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 Visual 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 Ignore_Error 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 Visual 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.


Overview of Utility Errors

The Visual DataFlex Utility Error Messages section lists all utility errors in numeric order.

The utility errors are those in the error number range of 8193-12288 and are stored in the dferr002.dat database table.


Visual DataFlex Utilities

The utility programs Product Registration, Compiler, Database Builder, Database Explorer and Error Maintenance (FlexErrs.exe), are intended for operation in single user mode only.

Make sure that no other user could be using databases or Visual DataFlex program files that are being operated on by these programs when using these utility programs.


Utility Error Messages

Utility Errors List

See Also: Finding Specific Errors

8193 - Bad data dictionary handle

8194 - Bad table handle

8195 - Bad field handle

8196 - Bad table number

8197 - Data dictionary is full

8198 - Related table not open

8199 - Fileslot already in use

8200 - All data dictionary entries used

8201 - Data dictionary not initialized

8203 - Invalid record length

8204 - Duplicate field name

8205 - Blank field name

8206 - First character not alphanumeric

8207 - Invalid field length

8208 - Invalid whole digits

8209 - Invalid decimals

8210 - Numeric field zero length

8211 - Too many fields

8212 - Relationship does not exist

8213 - Field already related

8214 - No relatable fields

8215 - Invalid index number

8216 - Bad file number

8217 - Bad field number

8218 - Invalid field type

8219 - Field name adjusted

8220 - Invalid date length

8221 - Invalid overlap

8222 - Record length changed

8223 - Can't write .TAG file

8224 - Can't delete index file

8225 - Can't create index file

8226 - No main index edit possible

8227 - Invalid .DEF filename

8228 - Can't write .FD file

8229 - Can't write index name file

8230 - Can't delete table

8231 - Syntax

8232 - Option already specified

8233 - Bad command line parameter

8234 - Index field count exceeded

8235 - Sort stack overflow

8236 - Sort buffer in use

8237 - Duplicate records in sort file

8238 - Block zero is full

8239 - DFRUN not found

8240 - Missing END in command file

8241 - Index already selected

8242 - Bad option combination

8243 - No files specified

8244 - Bad data in table

8245 - Error writing .BAD file

8246 - Sort read error

8247 - Sort write error

8248 - .LOG file error

8249 - Can't open .DEF file

8250 - Not a valid .DEF

8251 - ALL already specified

8252 - Table number must be first

8253 - Sort options conflict

8254 - Can't close .VLD file

8255 - Conflicting indexes

8256 - Index specified twice

8257 - No indexes specified

8258 - No fields specified

8259 - Invalid status option

8260 - Duplicate record option twice

8261 - Invalid duplicate record option

8262 - Bad record option twice

8263 - Specify file first

8264 - Bad index number

8265 - Invalid bad data option

8266 - No index specified

8267 - File already specified

8268 - Invalid index mode

8269 - Invalid use of option

8270 - Can't delete .VLD file

8271 - Too many item groups

8272 - Can't open sequential image text

8273 - Not custom compressed

8274 - File in use

8275 - Error writing .BAD file

8276 - No index to delete

8277 - No index to create

8278 - No files specified

8279 - Bad or duplicate data detected

8280 - Index key length too long

8281 - Big fields not allowed in index

8282 - Can't delete .HDR file

8283 - Unable to read file

8285 - Intermediate File not opened

8286 - Error reading sequential file

8287 - Error writing sequential file

8288 - Missing value

8193 - Bad data dictionary handle

8194 - Bad table handle

8195 - Bad field handle

8196 - Bad table number

8197 - Data dictionary is full

8198 - Related table not open

8199 - Fileslot already in use

8200 - All data dictionary entries used

8201 - Data dictionary not initialized

8203 - Invalid record length

8204 - Duplicate field name

8205 - Blank field name

8206 - First character not alphanumeric

8207 - Invalid field length

8208 - Invalid whole digits

8209 - Invalid decimals

8210 - Numeric field zero length

8211 - Too many fields

8212 - Relationship does not exist

8213 - Field already related

8214 - No relatable fields

8215 - Invalid index number

8216 - Bad file number

8217 - Bad field number

8218 - Invalid field type

8219 - Field name adjusted

8220 - Invalid date length

8221 - Invalid overlap

8222 - Record length changed

8223 - Can’t write .TAG file

8224 - Can’t delete index file

8225 - Can’t create index file

8226 - No main index edit possible

8227 - Invalid .DEF filename

8228 - Can’t write .FD file

8229 - Can’t write index name file

8230 - Can’t delete table

8231 - Syntax

8232 - Option already specified

8233 - Bad command line parameter

8234 - Index field count exceeded

8235 - Sort stack overflow

8236 - Sort buffer in use

8237 - Duplicate records in sort file

8238 - Block zero is full

8239 - DFRUN not found

8240 - Missing END in command file

8241 - Index already selected

8242 - Bad option combination

8243 - No files specified

8244 - Bad data in table

8245 - Error writing .BAD file

8246 - Sort read error

8247 - Sort write error

8248 - .LOG file error

8249 - Can’t open .DEF file

8250 - Not a valid .DEF

8251 - ALL already specified

8252 - Table number must be first

8253 - Sort options conflict

8254 - Can’t close .VLD file

8255 - Conflicting indexes

8256 - Index specified twice

8257 - No indexes specified

8258 - No fields specified

8259 - Invalid status option

8260 - Duplicate record option twice

8261 - Invalid duplicate record option

8262 - Bad record option twice

8263 - Specify file first

8264 - Bad index number

8265 - Invalid bad data option

8266 - No index specified

8267 - File already specified

8268 - Invalid index mode

8269 - Invalid use of option

8270 - Can’t delete .VLD file

8271 - Too many item groups

8272 - Can’t open sequential image text

8273 - Not custom compressed

8274 - File in use

8275 - Error writing .BAD file

8276 - No index to delete

8277 - No index to create

8278 - No files specified

8279 - Bad or duplicate data detected

8280 - Index key length too long

8281 - Big fields not allowed in index

8282 - Can’t delete .HDR file

8283 - Unable to read file

8285 - Intermediate File not opened

8286 - Error reading sequential file

8287 - Error writing sequential file

8288 - Missing value


Overview of Initialization Errors

The Visual DataFlex Initialization Error Messages section lists all initialization errors in numeric order.

The initialization errors are those in the error number range of 28673-32768 and are not stored in a database table, but are instead imbedded in the runtime.

Some initialization errors do not have error number associated with them because they happen too early in the runtime's initialization phase to assign error numbers.


Initialization Error Messages

Initialization Errors List

See Also: Finding Specific Errors

The following messages are imbedded in the runtime, and cannot be altered or extended by developers. They concern those situations in which the runtime is prevented from accessing the error database files.

Cannot Find Lock File

User count exceeded for this license

28676 - DataFlex is not installed in termlist.cfg, please run DFSETUP

28678 - File termlist.cfg not found

28679 - File termlist.cfg is unreadable or corrupt

28680 - Internal DataFlex Window System Error!!

28681 - Maximum number of DataFlex users exceeded

28682 - Internal user count file error

28671 - Unable to initialize user counting system

28672 - Cannot Open User Count .DFR File

28673 - Cannot Read User Count .DFR File

28674 - Cannot Decrypt User Count .DFR File

28675 - Bad Version of User Count .DFR File

Cannot Find Lock File

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

The user count file cannot be found.

1. If the license has not been registered yet, this file would not exist yet.

2. If the license is registered, it may have been moved to a location where the Visual DataFlex runtime cannot find it.

3. There may be several .dfr files found for the same serial number by the Visual DataFlex runtime when it tries to load, because the same serial number may have been registered for multiple versions of Visual DataFlex.

4. If a Visual DataFlex client license is installed on a network, the machine on which this error occurs may not have rights to the networked location of there .dfr file.

5. The user count file is located on a Novell Netware volume, and local file caching is enabled.

Resolution

1. Register the Visual DataFlex license.

2. Search for all occurrences of .dfr files on the PC where this error occurs. Make sure the .dfr file you need is in a location where the correct Visual DataFlex runtime (for the correct revision) can find it. You can check each .dfr file's time/date property to see if it was created when you registered the license.

3. Search for all occurrences of .dfr files on the PC where this error occurs. Make sure the .dfr file you need is in a location where the correct Visual DataFlex runtime (for the correct revision) can find it. You can check each .dfr file's time/date property to see if it was created when you registered the license.

If there are multiple copies of the .dfr file you need on your machine, try placing them in a place where the same application and/or Visual DataFlex runtime will only see the needed version.

If you are running only one version of Visual DataFlex, you may be able to remove old copies of this file. We recommend that you rename the file, rather than deleting it, to ensure that you do not disable other applications.

4. Make sure each user has rights to the location of the .dfr file for the Visual DataFlex runtime that user needs to be able to run. Each Visual DataFlex user needs write access to the .dfr file.

5. Disable local file caching on the Netware client via "file cache" = No.

User count exceeded for this license

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

1. The number of licensed Visual DataFlex users is exceeded.

2. The user count file is flagged as read-only.

3. Corrupted user count file or a mismatched (from another version of Visual DataFlex or DataFlex) user count file.

Resolution

1. Purchase a Visual DataFlex license with the number of users needed, then run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license.

2. Ensure that the user count file is not flagged read-only. Each Visual DataFlex user needs write access to the .dfr file.

3. Check if somewhere along the DFPath, there is another version of termlist.cfg that is registered using another version of Visual DataFlex or DataFlex. Typically, this happens when upgrading from character-mode DataFlex and a termlist.cfg file that contains registration information for an older version of DataFlex is found in the Data folder.

28676 - DataFlex is not installed in termlist.cfg, please run DFSETUP

Cause

An invalid registration code is installed or a termlist.cfg file from a prior version of Visual DataFlex or DataFlex is found along DFPath.

Resolution

1. Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

2. Check if somewhere along the DFPath, there is another version of termlist.cfg that is registered using another version of Visual DataFlex or DataFlex. Typically, this happens when upgrading from character-mode DataFlex and a termlist.cfg file that contains registration information for an older version of DataFlex is found in the Data folder.

28678 - File termlist.cfg not found

Cause

No termlist.cfg file is found.

Resolution

Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license.

28679 - File termlist.cfg is unreadable or corrupt

Cause

File termlist.cfg file is corrupt.

Resolution

Delete termlist.cfg, then run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license.

28680 - Internal DataFlex Window System Error!!

28681 - Maximum number of DataFlex users exceeded

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

1. The number of licensed Visual DataFlex users is exceeded.

2. The user count file is flagged as read-only. The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Resolution

1. Purchase a Visual DataFlex license with the number of users needed, then run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license.

2. Ensure that the user count file is not flagged read-only. Each Visual DataFlex user needs write access to the .dfr file.

28682 - Internal user count file error

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

Corrupted user count file or a mismatched (from another version of Visual DataFlex or DataFlex) user count file.

Resolution

1. Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

2. Check if somewhere along the DFPath, there is another version of termlist.cfg that is registered using another version of Visual DataFlex or DataFlex. Typically, this happens when upgrading from character-mode DataFlex and a termlist.cfg file that contains registration information for an older version of DataFlex is found in the Data folder.

28671 - Unable to initialize user counting system

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

Corrupted user count file or a mismatched (from another version of Visual DataFlex or DataFlex) user count file.

Resolution

1. Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

2. Check if somewhere along the DFPath, there is another version of termlist.cfg that is registered using another version of Visual DataFlex or DataFlex. Typically, this happens when upgrading from character-mode DataFlex and a termlist.cfg file that contains registration information for an older version of DataFlex is found in the Data folder.

28672 - Cannot Open User Count .DFR File

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

User-count file not found.

Resolution

Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

28673 - Cannot Read User Count .DFR File

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

The system was unable to read the user-count file.

Resolution

1. Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

2. Check for user rights in the folder where the Visual DataFlex user count file is located, typically the \Visual DataFlex\bin folder.

28674 - Cannot Decrypt User Count .DFR File

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

Corrupted user count file or a mismatched (from another version of Visual DataFlex or DataFlex) user count file.

Resolution

1. Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

2. Check if somewhere along the DFPath, there is another version of termlist.cfg that is registered using another version of Visual DataFlex or DataFlex. Typically, this happens when upgrading from character-mode DataFlex and a termlist.cfg file that contains registration information for an older version of DataFlex is found in the Data folder.

28675 - Bad Version of User Count .DFR File

The user count file is a file named {serial number}.dfr, for example 123456.dfr. This file is typically located in the \visual dataflex\bin folder. This file is created by the Registration program when a registration code is registered.

Cause

1. The user-count file may be from another operating system, such as Linux/ Unix.

2. Corrupted user count file or a mismatched (from another version of Visual DataFlex or DataFlex) user count file.

Resolution

1. Run Register.exe, the Visual DataFlex registration program, to register your Visual DataFlex license. Even with a valid registration code in termlist.cfg, the user count file may not be valid or found along the path. Re-registering the license will create a new user count file.

2. Check if somewhere along the DFPath, there is another version of termlist.cfg that is registered using another version of Visual DataFlex or DataFlex. Typically, this happens when upgrading from character-mode DataFlex and a termlist.cfg file that contains registration information for an older version of DataFlex is found in the Data folder.


Overview of Web Application Errors

The Visual DataFlex Web Application Server Error Messages section lists all Visual DataFlex Web Application Server errors in numeric order.

The errors listed here are separated into 3 categories:

  • Informative Messages: 100 series

  • Warning Messages: 200 series

  • Error Messages: 300 series

Other error messages that can occur in your Visual DataFlex Web Application Server web application can be any of the other error messages, both Development Time and Runtime errors, that are discussed in this complete error codes book.

There are other error messages you can come across when running a Visual DataFlex Web Application Server web application that are not generated by Visual DataFlex. Error messages can be generated by web browsers, web servers (e.g. Internet Information Server, World Wide Web Publishing Service), ASP scripting code (e.g. VBScript) and more.

This section covers the error messages that are actually generated by Visual DataFlex Web Application Server.


Web Application Informative Messages

1 - {Specific Error Text}

100 - Web application {ApplicationName} started.

102 - Web application {ApplicationName} stopped.

105 - Service Started.

106 - Service stopped.

1 - {Specific Error Text}

This is a "catch all" error event.

{Specific Error Text} is passed to this error when it is triggered.

100 - Web application {ApplicationName} started.

Web application ApplicationName started.

Occurs when the Web Application gets initiated. This occurs the first time the first user requests any file in the Web Application. i.e. it occurs only once for each Web Application after the service has been started.

102 - Web application {ApplicationName} stopped.

Web application ApplicationName stopped.

Occurs once for each Web Application when the service is shut down. This occurs after EVMSG_S_APPDEACTIVATED, when all resources are released.

105 - Service started.

Service started.

Occurs once when the service is started, after all service initialization routines.

106 - Service stopped.

Service stopped.

Occurs once when the service is stopped, after all service un-initialization routines.


Web Application Warning Messages

200 - Start Web Application denied, the server is currently shutting down.

201 - A child process does not respond, unconditionally terminating the process ProcessName.

202 - ApplicationName Session: SessionId From: IPAddressOfRequest
A timeout occurred during transaction call. Session aborted and all pending i/o cancelled.

203 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
A timeout occurred during message transfer. Session aborted and all pending i/o cancelled.

206 - Bad service request.

208 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest Session denied, %4.

214 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
A communication error occurred. %4Session aborted and all pending i/o cancelled.

215 - Application:ApplicationName Session: SessionId From: IPAddressOfRequest
A fatal session error occurred in the child process. %4 Session aborted and all pending i/o cancelled.

216 - Connection with remote node NodeName failed: %2. Please Verify the IP address, port number, and the network connection.

217 - Incoming connection from NodeName rejected. NodeName is not in the list of valid master nodes allowed to connect to this machine. See the load balancing tab in the options dialog in the Visual DataFlex Web Application Server Administrator.

200 - Start Web Application denied, the server is currently shutting down.

Occurs if a new Web Application is trying to start when the service is shutting down. All new Web Applications are denied when the service is shutting down.

201 - A child process does not respond, unconditionally terminating the process ProcessName.

Occurs when the Visual DataFlex process is hung. Usually indicates that the Visual DataFlex program doesn't respond. The service will force a process terminate and any unsaved data will be lost.

If possible, setup "Allow service to interact with desktop", or some other means of debugging the Visual DataFlex process. Could indicate errors such as infinite loops in the Visual DataFlex program and so on.

202 - ApplicationName Session: SessionId From: IPAddressOfRequest
A timeout occurred during transaction call. Session aborted and all pending i/o cancelled.

Occurs when a transaction timeout occurred (default 2 minutes). Usually indicates that the Visual DataFlex program doesn't respond. Can also occur if processing in Visual DataFlex takes longer than 2 minutes without communication with the Web Application Server service, e.g. very heavy processing within a method without any messages sent back to the service.

If possible, setup "Allow service to interact with desktop", or some other means of debugging the Visual DataFlex process. Could indicate errors such as infinite loops in the Visual DataFlex program and so on.

The transaction timeout can be changed in the Administrator.

203 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
A timeout occurred during message transfer. Session aborted and all pending i/o cancelled.

Occurs when a message being sent does not receive the destination within, default 20, seconds. Usually indicates that the Visual DataFlex program doesn't respond, i.e. the Visual DataFlex process is hung. Note that this does not mean that the message must be processed within 20 seconds, it just needs to reach the destination queue within 20 seconds.

The message timeout can be changed in the Administrator.

If possible, setup "Allow service to interact with desktop", or some other means of debugging the Visual DataFlex process. Could indicate errors such as infinite loops in the Visual DataFlex program and so on.

This could also occur on very high server load.

206 - Bad service request.

Occurs when the service receives an unknown request. This error is internal and should not normally occur.

208 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest Session denied, %4.

Occurs when a new session attempts to get established when the service is currently shutting down. Somewhat misleadingly, this error is also reserved for future use where the session is refused because of some other reason, such as a bad login etc.

214 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
A communication error occurred. %4Session aborted and all pending i/o cancelled.

215 - Application:ApplicationName Session: SessionId From: IPAddressOfRequest
A fatal session error occurred in the child process. %4 Session aborted and all pending i/o cancelled.

216 - Connection with remote node NodeName failed: %2. Please Verify the IP address, port number, and the network connection.

217 - Incoming connection from NodeName rejected. NodeName is not in the list of valid master nodes allowed to connect to this machine. See the load balancing tab in the options dialog in the Visual DataFlex Web Application Server Administrator.


Web Application Error Messages

Web Application Errors List

See Also: Finding Specific Errors

300 - Invalid web application ApplicationName. Please verify that the spelling is correct and that the specific web application has been correctly configured.

301 - Invalid web application ApplicationName. Please verify that the spelling is correct and that the specific web application has been correctly configured.

302 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Failed to establish communication source with child process %4: %5

303 - Unable to handle endpoint request. Server may be too busy, or there may be too many concurrent sessions. %1

309 - Error starting service: Reason.

311 - Visual DataFlex Web Application Server panic, cause: %1, location: %2.

312 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Session failed to initialize: %4

315 - Failed to establish endpoint communication source. %1

316 - Second chance failure to establish endpoint communication source. %1Shutting down service abnormally.

317 - Failed to initialize application event log: Unable to create LogFileNameIncludingPath

318 - Failed to write to application event log ApplicationName. Log message: %2.

319 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
No remote node currently available. All remote nodes appear offline or busy.

320 - Unable to initialize load balancing master node tcp/ip socket connection. %1

321 - Failed to set keep-alive socket option for connection with slave node. %1

322 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Attempt to invoke unsupported endpoint subsystem operation, %4.

300 - Invalid web application ApplicationName. Please verify that the spelling is correct and that the specific web application has been correctly configured.

The requested Web Application does not exist.

The most probable cause is that the Web Application name as in global.asa doesn't match the Web Application name as entered in the Visual DataFlex Web Application Server Administrator.

Make sure that the name of the Web Application in global.asa matches the name used in the Visual DataFlex Web Application Server Administrator. Either correct the name in global.asa, or in the Administrator by deleting the Web Application and creating it again.

301 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Failed to establish communication source with child process %4: %5

Internal communication source could not be established. Occurs if the system resources are low. This could also occur on very high server load.

302 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Failed to start child process %4: %5

The child process did not start properly. Occurs if internal communication was not established. This could also occur if the Visual DataFlex program is not a Web Application.

303 - Unable to handle endpoint request. Server may be too busy, or there may be too many concurrent sessions. %1

309 - Error starting service: Reason.

For example:

Error starting service: Your evaluation period of Visual DataFlex Web Application Server has expired. Please run the product registration program and register your Visual DataFlex Web Application Server license..

311 - Visual DataFlex Web Application Server panic, cause: %1, location: %2.

Internal error, should not normally occur.

312 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Session failed to initialize: %4

Session failed to initialize due to the following reason.

315 - Failed to establish endpoint communication source. %1

316 - Second chance failure to establish endpoint communication source. %1Shutting down service abnormally.

317 - Failed to initialize application event log: Unable to create LogFileNameIncludingPath

Occurs when the application log file could not be opened/created. The log file might be corrupt, an invalid log file path specified, or insufficient access rights to the underlying file system.

This error can also be caused by multiple versions of Visual DataFlex Web Application Server attempting to share the same log file.

If the log file is corrupt, you can just remove the file, and the next time the Visual DataFlex Web Application Server is started, a new log file will automatically be created.

318 - Failed to write to application event log ApplicationName. Log message: %2.

319 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
No remote node currently available. All remote nodes appear offline or busy.

320 - Unable to initialize load balancing master node tcp/ip socket connection. %1

321 - Failed to set keep-alive socket option for connection with slave node. %1

322 - Application: ApplicationName Session: SessionId From: IPAddressOfRequest
Attempt to invoke unsupported endpoint subsystem operation, %4.


Miscellaneous Error Messages

See Also: Finding Specific Errors

900 - Filename already exists

999 - Extended Field not defined in DD

999 - Invalid use of overlap with DD

999 – Value must be one of <xx|yy|zz>

900 - Filename already exists

Cause

The table is listed in filelist.cfg multiple times.

Resolution

Remove all duplicate table entries for this table until only one remains in filelist.cfg.

999 - Extended Field not defined in DD

Cause

1. Improper use of a text or binary DataFlex database field in the program code.

Attempt to access a text or binary field with the messages Get/Set Current_Field_Value, Get/Set File_Field_Current_Value or Get Field_Changed_Value. Since these field types are not supported, in all cases, this is an error.

2. Attempting to access a text field via a DataDictionary without defining it as an extended field.

Resolution

1. Review the code and make the required corrections.

Also review the information regarding Field Options.

2. Define the extended field in the DataDictionary using DefineExtendedField or DefineAllExtendedFields.

999 - Invalid use of overlap with DD

Improper use of an overlap DataFlex database field in the program code.

Overlap fields are for available for building relationships and nothing else. Do not directly access overlap fields with DDO messages. It is expected to use the underlying (primary) fields that make up the overlap. In particular:

* Do not access overlaps with the Field_Current_Value, File_Field_Current_Value or Field_Changed_Value messages.

* Never mark any overlap fields as a key field. It does not work. Instead, mark each underlying field as a key field. A key field can consist of multiple fields.

* Do not use overlap fields with field options, validation tables, entry, exit or validation messages. Use the underlying fields instead.

Resolution

In most cases, the problem can be fixed by loading the Data Dictionary Builder, removing the DD field settings from the overlap field and adding the field setting to the underlying fields.

Also review the information regarding Field Options.

999 – Value must be one of <xx|yy|zz>

Additional information presented in the error dialog:

File: <FileNumber> - <FileName>

Field: <FieldNumber> - <FieldName>

where

<FileNumber> - a token to be replaced with the file number of the database table triggering the error

<FileName> - a token to be replaced with the table name of the database table triggering the error

<FieldNumber> - a token to be replaced with the file number of the database table triggering the error

<FieldName> - a token to be replaced with the file number of the database table triggering the error

<xx|yy|zz> - xx, yy and zz are tokens representing a list of valid entries for this window

Cause

This error is triggered by failure to enter or select a valid choice of data for the data window for the specific database table field. The list of choices is specified by a Simple Validation list in the DataDictionary for the database table.

Resolution

Enter data that is on the valid list of choices listed.


Overview of Obsolete Errors

The error numbers and messages listed in this book are obsolete to Visual DataFlex for one reason or another. Typically, the reason for this is that the error in question was added for a specific revision of DataFlex other than Visual DataFlex and/or a specific platform on which character-mode DataFlex (not Visual DataFlex) runs other than Microsoft Windows (e.g., UNIX, Linux, DOS).

You should never run into the error numbers and/or messages listed in this section, but because legacy code that triggers these errors can be present in some Visual DataFlex applications, and for sake of completeness, these errors are listed here.


Obsolete Error Messages

Obsolete Errors List

See Also: Finding Specific Errors

19 - Multi-user time out (busy too long)

35 - Program must be converted

46 - Graphics mode not initialized

47 - Bad or missing graphics driver

48 - Graphic commands not allowed

49 - Demo version limitation exceeded Buy a full license!

50 - Internal expression error

95 - Argument type not legal in ENTRY Command

97 - Too many GOSUBs without RETURN

100 - Name_Object Must Precede Class Or Procedure

101 - Unable to initialize TTS server for file

102 - Unable to set TTS mode for file

103 - 2yr dates, run CONV2000 to fix datafile

112 - Undefined Symbol <symbol_name> In Entry Or Form Command

126 - Too Many Mask Fill Characters Defined

171 - Window Cannot Be Typed

4132 - UIMS subsystem not compatible

4137 - Can’t find file to pack

4158 - Can’t fork child process

4169 - Operation not supported by OS

4178 - User already logged in

4186 - Too many files open on server

4187 - Can't open administration file

4188 - Can't close administration file

4189 - Can't find user account

4190 - No more groups defined

4191 - Can't add user to server

4192 - User already exists

4193 - No more users defined

4194 - Can't find group

4195 - Group already exists

4196 - Can't add group to server

4197 - Can't add user to group

4198 - User already in group

4199 - Too many groups for this user

4201 - User not in group

4202 - Deadlock detected

4203 - File is corrupt

4204 - Extended server edition error

4205 - Unable to access server file

4206 - Can't identify specified server

4207 - Bad user handle

4208 - Bad group handle

4209 - Invalid administration handle

4210 - Can't update user definition

4211 - Not enough server memory

4212 - Can't delete user definition

4213 - Login failed

4214 - Can't update group definition

4215 - Can't delete group definition

4219 - Permission denied

4225 - Can't delete .TAG file

4226 - Not in a transaction state

4227 - Already in a transaction state

4228 - The server is down

4230 - Protocol not supported

4231 - Default login unsuccessful

4232 - No transaction processing allowed

4239 - Can’t SYSTEM while in a transaction

4240 - Server cannot open a local table

4241 - Maximum number of server logins exceeded

4245 - Server communications error

4246 - Can't delete administrative user ID

4247 - Can't delete administrative group ID

4248 - Invalid DSE server serial number

4249 - Not a DataFlex Server Edition License

4250 - Must be administrative user (ADMIN)

4359 - Wrong Version of COM Object

4360 - Cannot Handshake With WebApp

4363 - Bad Format of Evaluation DLL

4364 - Web Deployment Server Expired

4412 - Serial Communications (SerialComm) error

28670 - Registration not valid for this processor

28673 - No TERM setting

28674 - Unknown terminal type

28675 - Unable to open console device

28677 - Console size must be at least 24 by 80 to run this utility

28683 - This terminal/OS does not support SCO ODT 2.0 scancodes

28684 - This terminal has insufficent capabilities to run DataFlex

28685 - Terminfo entry is larger than 4,096 bytes and can not be loaded

28686 - Terminfo entry is not readable

28687 - Terminfo entry is unaccessable

28688 - Terminfo entry is corrupted

28689 - Full path to terminfo file is too long

19 - Multi-user time out (busy too long)

This error has been replaced by error 4106 - Lock time-out in Visual DataFlex.

Cause

Multi-user time out. The system is in a locked state for too long. Check that none of your programs does a lock or reread without an unlock. On a very busy system, it is possible to get this error occasionally through no fault of the program.

35 - Program must be converted

Cause

If you have copied an application from another environment (MS-DOS to XENIX, UNIX to any other UNIX), compiled program files may not be compatible with the new environment. In such a case, you will get this error. The program source code is compatible, and may be made executable in the new environment simply by recompiling it in that environment.

46 - Graphics mode not initialized

This error only applies to DataFlex revisions 2.3 and 3.01, which supported graphics commands in character-mode.

Cause

Most of the commands in the Graphics group require the graphic command to have been executed with its on option prior to the command. This error is triggered when such a command is used without graphic on having first been executed.

47 - Bad or missing graphics driver

This error only applies to DataFlex revisions 2.3 and 3.01, which supported graphics commands in character-mode.

Cause

If the graphic command with on is executed, it must either specify a graphics device driver (*.DSP) or there must be a driver name in the value of System Variable DFGRAPH_DRVR, or a default driver name must be installed through the Configuration Utility. Where all these conditions fail, this error will be triggered. Correct any of the three ways of providing the needed driver name. This error will also be triggered in the event the named driver is not present on the disk drive. Check to make sure it is present, and correctly named.

48 - Graphic commands not allowed

This error only applies to DataFlex revisions 2.3 and 3.01, which supported graphics commands in character-mode.

Cause

DataFlex supports graphics commands only in certain operating system environments. This error occurs when an attempt is made to execute such commands in an operating system environment in which it is not supported.

49 - Demo version limitation exceeded Buy a full license!

This error only applies to character-mode versions of DataFlex.

50 - Internal expression error

This error can only occur at compile time and not at runtime in Visual DataFlex.

Cause

A mathematical expression could not be typed. This problem is most likely to be generated by an improper compilation, and can often be fixed by recompiling the source code. This error is most likely to occur at compile time.

95 - Argument type not legal in ENTRY Command

This error only applies to character-mode revisions of DataFlex. The entry command is not supported in Visual DataFlex.

Cause

Legal types of argument for the entry command are windows, database fields, expressions and options. Where an entry command has a constant, variable, label, or df_filename as an argument, this error will be triggered. Errors of this kind are most likely to be reported first at compile time.

97 - Too many GOSUBs without RETURN

This error only applies to character-mode revisions of DataFlex. The gosub command should not be used in Visual DataFlex.

Cause

For every gosub or use of a keyproc, there must be a return. If not, after 18 gosubs, you will get error 97. In addition, if your keyproc is called from within a subroutine, you must return to within that subroutine.

100 - Name_Object Must Precede Class Or Procedure

The use of Name_Object is obsolete.

101 - Unable to initialize TTS server for file

This error only applies to the DataFlex 2.3b Enhanced Runtime.

102 - Unable to set TTS mode for file

This error only applies to the DataFlex 2.3b Enhanced Runtime.

103 - 2yr dates, run CONV2000 to fix datafile

This error only applies to the DataFlex 2.3b Enhanced Runtime.

The equivalent error message for Visual DataFlex is error 4354 – Dates are unconverted.

112 - Undefined Symbol <symbol_name> In Entry Or Form Command

Formatting options are obsolete. They should be replaced with DataDictionary-based equivalents.

Entry is obsolete. It should be replaced with a Data Entry Object (DEO).

Accept is obsolete. It should be replaced with a Windows Control (e.g. Form).

This is a command compilation error.

Cause

An entry, accept, display, print, or format command was used with an undeclared argument. The triggering characters are usually within the braces {} for a format option. This error is also triggered when a format option is directed to a window which has already been addressed by a format option.

126 - Too Many Mask Fill Characters Defined

The Fill= Print Format Option is obsolete.

Cause

The window output format option fill= may be used for up to eight different characters within a single program to provide fill characters for output through those windows. This error occurs if more than eight different fill characters are provided in the entire program. This is a macro-compilation error.

171 - Window Cannot Be Typed

Formatting options are obsolete. They should be replaced with DataDictionary-based equivalents.

This is a macro-compilation error.

Cause

These errors are the result of conflicting format options on a single window. For example, a {check="yn"} option and a {range=0,9} option exclude all possible input. Likewise, any range= or check= option is prohibited on any window which is used to accumulate a total or subtotal for use by the subtotal command or with the % subtotal accumulator symbol.

4132 - UIMS subsystem not compatible

This error only applies to character-mode versions of DataFlex.

4137 - Can’t find file to pack

This error applies to the DFPack utility of character-mode DataFlex.

4158 - Can’t fork child process

This error only applies to character-mode versions of DataFlex.

4169 - Operation not supported by OS

This error only applies to character-mode versions of DataFlex.

4178 - User already logged in

This error only applies to the DataFlex Server Edition (DSE).

4186 - Too many files open on server

This error only applies to the DataFlex Server Edition (DSE).

4187 - Can’t open administration file

This error only applies to the DataFlex Server Edition (DSE).

4188 - Can’t close administration file

This error only applies to the DataFlex Server Edition (DSE).

4189 - Can’t find user account

This error only applies to the DataFlex Server Edition (DSE).

4190 - No more groups defined

This error only applies to the DataFlex Server Edition (DSE).

4191 - Can’t add user to server

This error only applies to the DataFlex Server Edition (DSE).

4192 - User already exists

This error only applies to the DataFlex Server Edition (DSE).

4193 - No more users defined

This error only applies to the DataFlex Server Edition (DSE).

4194 - Can’t find group

This error only applies to the DataFlex Server Edition (DSE).

4195 - Group already exists

This error only applies to the DataFlex Server Edition (DSE).

4196 - Can’t add group to server

This error only applies to the DataFlex Server Edition (DSE).

4197 - Can’t add user to group

This error only applies to the DataFlex Server Edition (DSE).

4198 - User already in group

This error only applies to the DataFlex Server Edition (DSE).

4199 - Too many groups for this user

This error only applies to the DataFlex Server Edition (DSE).

4201 - User not in group

This error only applies to the DataFlex Server Edition (DSE).

4202 - Deadlock detected

This error only applies to the DataFlex Server Edition (DSE).

4203 - File is corrupt

This error only applies to the DataFlex Server Edition (DSE).

4204 - Extended server edition error

This error only applies to the DataFlex Server Edition (DSE).

4205 - Unable to access server file

This error only applies to the DataFlex Server Edition (DSE).

4206 - Can’t identify specified server

This error only applies to the DataFlex Server Edition (DSE).

4207 - Bad user handle

This error only applies to the DataFlex Server Edition (DSE).

4208 - Bad group handle

This error only applies to the DataFlex Server Edition (DSE).

4209 - Invalid administration handle

This error only applies to the DataFlex Server Edition (DSE).

4210 - Can’t update user definition

This error only applies to the DataFlex Server Edition (DSE).

4211 - Not enough server memory

This error only applies to the DataFlex Server Edition (DSE).

4212 - Can’t delete user definition

This error only applies to the DataFlex Server Edition (DSE).

4213 - Login failed

This error only applies to the DataFlex Server Edition (DSE).

4214 - Can’t update group definition

This error only applies to the DataFlex Server Edition (DSE).

4215 - Can’t delete group definition

This error only applies to the DataFlex Server Edition (DSE).

4219 - Permission denied

This error only applies to the DataFlex Server Edition (DSE).

4225 - Can’t delete .TAG file

This error only applies to the DataFlex Server Edition (DSE).

4226 - Not in a transaction state

This error only applies to the DataFlex Server Edition (DSE).

4227 - Already in a transaction state

This error only applies to the DataFlex Server Edition (DSE).

4228 - The server is down

This error only applies to the DataFlex Server Edition (DSE).

4230 - Protocol not supported

This error only applies to the DataFlex Server Edition (DSE).

4231 - Default login unsuccessful

This error only applies to the DataFlex Server Edition (DSE).

4232 - No transaction processing allowed

This error only applies to the DataFlex Server Edition (DSE).

4239 - Can’t SYSTEM while in a transaction

The system command is obsolete.

Cause

An system 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.

4240 - Server cannot open a local table

This error only applies to the DataFlex Server Edition (DSE).

4241 - Maximum number of server logins exceeded

This error only applies to the DataFlex Server Edition (DSE).

4245 - Server communications error

This error only applies to the DataFlex Server Edition (DSE).

4246 - Can’t delete administrative user ID

This error only applies to the DataFlex Server Edition (DSE).

4247 - Can’t delete administrative group ID

This error only applies to the DataFlex Server Edition (DSE).

4248 - Invalid DSE server serial number

This error only applies to the DataFlex Server Edition (DSE).

4249 - Not a DataFlex Server Edition License

This error only applies to the DataFlex Server Edition (DSE).

4250 - Must be administrative user (ADMIN)

This error only applies to the DataFlex Server Edition (DSE).

4359 - Wrong Version of COM Object

This error only applies to Web Application Server 3.x and prior revisions.

4360 - Cannot Handshake With WebApp

This error only applies to Web Application Server 3.x and prior revisions.

4363 - Bad Format of Evaluation DLL

This error only applies to Web Application Server 3.x and prior revisions.

4364 - Web Deployment Server Expired

This error only applies to Web Application Server 3.x and prior revisions.

4412 - Serial Communications (SerialComm) error

Numerous DDE packages, including SerComm.pkg were removed from Visual DataFlex as of revision 9.1 since they are no longer supported.

28670 - Registration not valid for this processor

This error code is obsolete. It applies only to character-mode version of DataFlex.

28673 - No TERM setting

This error code is obsolete. It applies only to character-mode version of DataFlex.

28674 - Unknown terminal type

This error code is obsolete. It applies only to character-mode version of DataFlex.

28675 - Unable to open console device

This error code is obsolete. It applies only to character-mode version of DataFlex.

28677 - Console size must be at least 24 by 80 to run this utility

This error code is obsolete. It applies only to character-mode version of DataFlex.

28683 - This terminal/OS does not support SCO ODT 2.0 scancodes

This error code is obsolete. It applies only to character-mode version of DataFlex.

28684 - This terminal has insufficent capabilities to run DataFlex

This error code is obsolete. It applies only to character-mode version of DataFlex.

28685 - Terminfo entry is larger than 4,096 bytes and can not be loaded

This error code is obsolete. It applies only to character-mode version of DataFlex.

28686 - Terminfo entry is not readable

This error code is obsolete. It applies only to character-mode version of DataFlex.

28687 - Terminfo entry is unaccessable

This error code is obsolete. It applies only to character-mode version of DataFlex.

28688 - Terminfo entry is corrupted

This error code is obsolete. It applies only to character-mode version of DataFlex.

28689 - Full path to terminfo file is too long

This error code is obsolete. It applies only to character-mode version of DataFlex.


Overview of Compiler Errors

Compiler Errors

The Visual DataFlex Compiler Error Messages section lists all compiler errors in numeric order.

Some compiler error numbers can have multiple different but similar causes and there can be several different error messages listed for any one error number. In that case, the different possible error messages for an error number are listed in alphabetical order.

Example:

100 - Maximum Number Of Message/Property Definitions Exceeded

100 - Name_Object Must Precede Class Or Procedure

Error messages without a corresponding number are listed first, in alphabetic order.

The page for each error number and message lists all known possible causes and resolutions for the error, as well as examples where relevant.

If there is more than one possible cause for an error, the causes and resolutions are listed as a numbered list, with a matching cause and resolution having the same number.

Example:

Cause

1. Cause 1

2. Cause 2

Resolution

1. This is resolution for cause 1

2. This is resolution for cause 2

When compilation takes place, the compiler may encounter a command line which is logically impossible, or of which it in some other way can't make any sense. This is called a compile-time error. Most errors in the use of commands, as well as some typographical errors, are caught at compile time.

Other errors may be caused by the action of the operator, the data which is acted upon by the program, or faulty logic by the programmer. These errors are usually flagged when the compiled program is actually run (runtime). For this reason, compile time errors and runtime errors are separated into groups. Be sure to consult the appropriate list when trying to diagnose an error.

You can provide your own custom error messages in your compiler by use of the #ERROR compiler directive in your command macros. You can also provide non-error output of messages from the compiler with the #REM compiler directive in your programs or commands.


Compiler Error Types

Program Syntax Errors

If you misspell or misuse a Visual DataFlex reserved word in a command line, you will get a syntax error when you compile the program. These errors are the simplest to find and the easiest to correct. Simply double-click on the error listing in the error window of the Visual DataFlex Studio, make corrections on the indicated line(s), and recompile. You may need to refer to the online help to determine the required syntax for the command you are trying to use.

Pay particular attention to the arguments of the method or command and what type of argument is reasonable and legal to put in a particular position (e.g., trying to move a new value into a constant is both illegal and unreasonable). Most syntax errors are caused by simple misspellings or typographical errors. Very few syntax or usage errors will occur at runtime.

Another type of compile time error is the use of duplicate symbols. If you use the same name for two variables or methods, you may get an error. Each symbol must be unique! (Visual DataFlex will not detect duplicate use of a variable if both uses are syntactically consistent with each other, so this is not a total failsafe).

You must also avoid the use of Visual DataFlex reserved words. It is legal to use symbol substitution for command names. This will not generate an error, but great care must be exercised and this practice is not recommended. If you use a command name as a symbol, you will get an error when you then try to use that command. In summary, when naming your files, methods, variables and classes, make sure to use unique names that are not reserved words.

Note: The compiler needs disk space on the drive where the program is being compiled to store temporary files created during the compile process. Typically, the space needed is approximately the size of the program source file. If there is not enough space for the compiler to write its temporary files, Errors 1 or 2 will occur during compilation.

Fmac and Flex.cfl

Fmac is the source code file containing the Visual DataFlex included (built-in) commands. Flex.cfl is the packed code version of Fmac, which is compiled into each application. You should not edit Fmac to extend the set of available commands in Visual DataFlex, since you will not be able to repack Fmac into a changed Flex.cfl.

If you wish to add your own functionality to Visual DataFlex, you should create your own classes and packages and include these in your application using the Use command.


Compiler Errors Terminology

This is a description of terms used in the explanation of Compiler error messages.

MakePath – The MakePath is the path (list of folders) the compiler uses to find files needed to compile an application. You can view the current MakePath the comiler is using at any time by clicking on the Paths tab of the compiler and viewing the contents of the Make Path form.

If you are compiling from inside the Studio, click the Halt button of the compiler to halt compilation so you can view the Paths tab.

The MakePath is assembled from several different paths, including the AppSrcPath, DDSrcPath, DataPath and HelpPath paths of the current workspace, as well as the SystemDFPath Registry value.

You can view the value of the SystemDFPath Registry value the by viewing HKey_Local_Machine\Software\Data Access Worldwide\Visual DataFlex\9.1\Workspaces in the Windows Registry Editor.

<symbol_name> - This token is used in error listings to represent an actual symbol in the error message you encounter.

<line_number> - This token is used in error listings to represent an actual line number in the error message you encounter.

<FileName.ext> - This token is used in error listings to represent an actual file name with extension.

<SourceFileName.ext> - This token is used in error listings to represent an actual source code file name with extension.

<FileName> - This token is used in error listings to represent an actual database table name.

<character> - This token is used in error listings to represent an actual alphanumeric character.

<function_name> - This token is used in error listings to represent an actual function name.

<procedure_name> - This token is used in error listings to represent an actual procedure name.


Compiler Error Messages

Compiler Errors List

See Also: Finding Specific Errors

File <FileName.ext> Not Found

MEMORY: 'amount_memory_available'

10 - Out of Memory

16 - Please enter a valid date

36 - Too many resident images for memory

50 - Internal Expression Error

54 - Invalid Symbol in Expression

55 Invalid Data Type in Expression

57 Out Of Expression Stack

58 - Over 25 Parentheses () in Expression

59 - Floating Point Exception Error

95 - Argument Type Not Legal In Entry Command

100 - Maximum Number Of Message/Property Definitions Exceeded

100 - Procedures And Functions May .Not. Be Nested

101 - Global Functions Cannot Be Registered

101 - Global Procedures Cannot Be Registered

101 - Missing Keyword Returns On Function Declaration

101 - Number Expected

102 - Line Number Out Of Sequence

102 - Sub_Page !1 Already Defined As A Physical Image

104 - Duplicate Variable Defined

104 - Fatal Error

105 - Invalid Parameter !4

105 - Invalid Parameter !6

105 - Parameter Duplication !4 !6

105 - <symbol_name> Is Not A Valid Type/Class

106 - Error In Closing .exe File on Line: <line_number>

106 - Error In Creating .exe File On Line: <line_number>

108 - Open Parenthesis Expected

109 - Unequal Parentheses

111 - Undefined Symbol <symbol_name> In Argument

111 - Undefined Symbol U_!1 In Argument

111 - Undefined Symbol U_!2 In Argument

117 - Unresolved Begin, For, Repeat or While

120 - Missing End_Procedure or End_Function command

121 - Missing <character>

122 - Line Too Long

127 - Invalid Character Found In Page Name

129 - Too Many User-Defined Indicators Found

130 - Reserved Word Used

130 - Variable Must Be Declared

150 - Macro Buffer Size Exceeded

151 - Include File Not Found

152 - Unequal Parentheses In Expression

155 - Indicator Not Resolved: <symbol_name>

155 - Too Many Indicators

156 - No Active Conditionals

157 - Forward Reference: <symbol_name> Not Resolved

159 - Too Many Stack Levels

160 - Pop Past Beginning

162 - Too Many Arguments To Runprogram

162 - Type Check Error In Argument: Argument Required

162 - Type Check Error In Argument: Constant Not Allowed

162 - Type Check Error In Argument: Date Not Allowed

162 - Type Check Error In Argument: Expression Not Allowed

162 - Type Check Error In Argument: File Element Not Allowed

162 -Type Check Error In Argument: Gp Indicator "[]" Not Allowed

162 - Type Check Error In Argument: Group Not Allowed

162 - Type Check Error In Argument: Indicator Not Allowed

162 - Type Check Error In Argument: Integer Not Allowed

162 - Type Check Error In Argument: Invalid Literal

162 - Type Check Error In Argument: Label Not Allowed

162 - Type Check Error In Argument: Must Be An Indicator

162 - Type Check Error In Argument: Must Be Defined

162 - Type Check Error In Argument: Number Not Allowed

162 - Type Check Error In Argument: Option "{}" Not Allowed

162 - Type Check Error In Argument: String Not Allowed

162 - Type Check Error In Argument: Too Many Arguments

162 - Type Check Error In Argument: Variable Not Allowed

162 - Type Check Error In Argument: Window Not Allowed

164 - Command Not Found: <symbol_name>

170 - Cannot Replace To Itself

170 - Window Was Already Typed

172 - Too Many Nested Blocks

175 - Source Incompatible with Compiler on Line <line_number>

199 - Symbol(s) Already Defined

300 - Msg <procedure_name> already defined as a Global method

300 - Get <function_name> already defined as a Global method

300 - Class/End_Class should .Not. Be Inside a Method

300 - Classes Can .Not. Be Nested Within Classes

300 - Classes Can .Not. Be Nested Within Methods

300 - Construct_Object .Not. Allowed In Objects

300 - End_Class Without Class

300 - End_Funct/End_Proc Command .Not. Within A Method

300 - End_Object Expected Before End_Class

300 - End_Object Without Object

300 - End_Object Without Object In Method

300 - Expecting Identifier After Type In Method Declaration

300 - Global Functions/Procedures Cannot Be Overloaded

300 - Global Method !1 !2 Already Defined

300 - Invalid Object Reference

300 - Invalid Position For '!1'

300 - Keyword Overloaded Cannot Be Between A Type And An Identifier

300 - Local Variables Can Only Be Defined Within Methods

300 - Messages In Class Should Be In Method

300 - Method Return .Not. Within A Method

300 - Methods .Not. Allowed In Class Child-Objects

300 - Missing Identifier Before Returns Keyword

300 - Missing Return Type After Keyword Returns In Method Declaration

300 - Missing Type In Method Declaration

300 - Objects In Classes Should Be Within A Method

300 - Procedures And Functions May .Not. Be Nested

300 - Returns Must Be Followed By A Return Type

300 - This Method Was Previously Defined As .Not. Overloaded

300 - This Method Was Previously Defined As Overloaded

300 - Type Follows Type In Declaration

300 - Unexpected Symbol Encountered After Return Type In Method Declaration

300 - "Unknown type for local variable"

300 - "Unknown Type!"

301 - Global Variable Defined In Method

301 - Obsolete Syntax: Get/Set Form_Xxx To X Y

301 - Old Style Usage: No Item Keyword. Is Replacement For .Current. Or 0

301 - Old Style Usage: Possible Global Variable In Method

301 - Old Style Usage: S/B Gosub_Return

302 - Class Property Must Be Defined Within A Constructor Procedure

302 - Invalid Use Of 'Of'

302 - Messages In Class Should Be In Method

302 - Missing 'To' Keyword

302 - No Value Following 'To'

302 - Object Property Should .Not. Be In A Method

302 - Object/End_Object Within Class Should Be In A Method

302 - Property Can Only Be Defined Within A Class Or Object

302 - Property Cannot Be Defined In An Object Within A Class

302 - Too Many Params After 'To'

302 - Too Many 'To'

302 - Unusual Usage: Variable Or Expression Used As Message

777 - Object Is Missing Begin_Row...End_Row Commands

778 - If <FileName> Is A FileName It Is Unopened

779 - Missing Keyword "Of"

779 - Missing Keyword "To"

998 - Unknown Field: !2

998 - Unknown Field: !6

1000 - Duplicate Item Name

1000 - Invalid Argument: "Begin_Pull_Down" Requires Menu_System Package

1000 - Name Already Defined

1001 - "Attempt To Redefine Symbol For Different Value"

1001 - End_Enumeration_List Without Enumeration_List Command

1001 - Enumeration Lists Cannot Be Nested

1001 - Enumeration Value Must Be A Constant

4293 - Bad image name

4294 - Can't close .exe

4295 - Can't include resource

4296 - Can't read .FLP

4297 - Can't replace to self

4298 - Command not found

4299 - Constant expected

4300 - Duplicate page name

4301 - Duplicate resource name

4302 - ELSE without IF

4303 - Empty label

4304 - ENDHEADER not found

4305 - FLEXCFL not found

4306 - Forward reference not resolved

4307 - Hash index bad

4308 - Illegal macro expansion

4309 - Illegal redefinition

4310 - Illegal return type

4311 - Image not found

4312 - Invalid flexkey name

4313 Include file not found <FileName.ext> on Line: <line_number> of File: <SourceFileName.ext>

4314 - Indicator unresolved

4315 - Invalid data type

4316 - Invalid resource option

4317 - Invalid type

4318 - Line number wrong

4319 - Macro buffer exceeded

4320 - Missing argument

4321 - Missing END_CLASS

4322 - Missing END_MESSAGE

4323 - Missing END_OBJECT

4324 - No active conditionals

4325 - Number expected

4326 - Pop past beginning of stack

4327 - Region size exceeded

4328 - Undefined symbol in argument <symbol_name>

4329 - Replace array corrupted

4330 - Reserved word used

4331 - Source not compatible

4332 - Symbol already defined

4333 - Too many commands

4334 - Too many Ifs

4335 - Too many indicators

4336 - Too many integers

4337 - Too many lines

4338 - Too many mask fill chars

4339 - Too many messages

4340 - Too many nested blocks

4341 - Too many pages

4342 - Too many stack levels

4343 - String too long

4344 - Too many windows

4345 - Type check error

4346 - Unequal parentheses

4347 - Unknown command

4348 - Unresolved control block

4349 - Window already formatted

4350 - Window already typed

4351 - Writing output

4352 - Undefined symbol in GROUP

4353 - Undefined symbol in ENTRY

4366 - Cannot Create Overloaded Name

4390 - Illegal method name definition

4391 - Illegal code placement

4392 - Invalid method syntax

4393 - Invalid message syntax

4394 - Invalid object reference

4394 - Invalid object reference OBJECT .NOT. YET DEFINED

4395 - Obsolete command is unsupported

4396 - Invalid argument

4397 - Illegal external function definition

4501 - Incompatible Debug Information

4507 - Missing Array Indexer in Reference

4514 - Obsolete or Ambiguous Syntax

File <FileName.ext> Not Found

Cause

A file cannot be found.

Resolution

Check disk folder for correct file name. This is a compiler initialization error.

MEMORY: 'amount_memory_available'

Cause

Warning: updated every time a new symbol is encountered if remaining memory is less than one kilobyte. Displays amount of memory remaining available.

Resolution

If "Out of Memory" error is declared, see Compiler Option M for possible fix. This is a macro compilation error.

10 - Out of Memory

Cause

Not enough physical random access memory (RAM) available.

Resolution

Free up more memory (RAM). This is a compiler initialization error.

16 - Please enter a valid date

Cause

A date was coded into Visual DataFlex source code that is invalid in U.S. date format.

Resolution

All dates coded into Visual DataFlex source code must be in valid in U.S. date format.

Example

Incorrect Code:

Date dToday

If (dToday <= 31/08/2003) begin

// more code

end

Correct Code:

Date dToday

If (dToday <= 08/31/2003) begin

// more code

end

36 - Too many resident images for memory

Cause

This should only occur in legacy code using images, such as a BasicReport.

Image windows in your program consume memory. Images with the resident option consume an amount of memory equal to their actual size in bytes (up to about 2,000 each).

Resolution

Reduce the number of resident images in your application (consider separating it into multiple programs), the number of images using the resident option, and/or the size of such images.

50 - Internal Expression Error

Cause

A mathematical expression could not be typed. This problem is most likely generated by an improper compilation, and can often be fixed by recompiling the source code. This is a command compilation error.

Resolution

Recompile your application.

54 - Invalid Symbol in Expression

Cause

1. An expression names a variable which has not been declared.

2. An incorrect or nonsensical (impossible to evaluate) expression.

3. Calling messages in a COM (ActiveX) control before the Windows message queue has started (before Start_UI).

This is a command compilation error.

Resolution

1. Declare all variables before use.

2. Fix the incorrect expression.

Example

Incorrect Code:

integer i1 i2 i3

move (i1 +* i2) to i3

send Info_Box i3 "Done"

Correct Code:

integer i1 i2 i3

move (i1 + i2) to i3

send Info_Box i3 "Done"

The example in the incorrect code above is most likely the result of a typo, and the programmer intended to either add or multiply the integer variables i1 and i2.

3. COM events may not work properly until you have started the Windows message queue. This is because Windows internally uses the message queue to synchronize inter-thread communication in COM. Do not send message to COM controls until the Windows message queue has started (after Start_UI has executed).

55 Invalid Data Type in Expression

This is a command compilation error.

Cause

Certain data types (window names without parentheses around them, labels), are not allowed in expressions. This error reports the presence of such terms in expressions.

Resolution

Remove the invalid data types from your expression. In many cases, you can get the value of the illegal data type you are trying to use to a variable and then use the variable in an expression.

Update your code to proper object oriented code using methods and objects, which will remove the need for the use of labels.

57 Out Of Expression Stack

Cause

The compiler maintains a "stack" which it uses to type all expressions. Too many terms and/or too many terms of different types in an expression can trigger this error. This is a command compilation error.

Resolution

To overcome this error, "build up" your final expression through two or more actual lines of code (commands).

58 - Over 25 Parentheses () in Expression

Cause

More than 25 pairs of parentheses are used in one expression. This is a command compilation error.

Resolution

Split up your final expression into 2 or more actual lines of code. Most likely, a line of code containing 25 or more pairs of parentheses is difficult to read and debug, so splitting up such complex code will improve readability and maintainability of the code as well as resolve this error.

59 - Floating Point Exception Error

Cause

An expression evaluates to a value outside the range of real numbers. This is a command compilation error.

Resolution

Do not evaluate expressions that exceed the range of real numbers (1 times 10 to the 306 power).

95 - Argument Type Not Legal In Entry Command

Cause

An illegal type of argument for the entry command was used, such as a constant, variable, label, or table name. This is a macro compilation error.

Resolution

Only use legal types of arguments for entry (database fields, expressions, options and image windows).

100 - Maximum Number Of Message/Property Definitions Exceeded

Cause

The number of message and property definitions in a single program has been exceeded.

Resolution

Reduce your line program so that the number of message and property definitions remains within the limit. Split up your program into separate smaller programs.

100 - Procedures And Functions May .Not. Be Nested

Cause

An End_Procedure or End_Function statement is located inside a method. This is a command compilation error.

Resolution

Methods (procedures and functions) cannot be defined inside other methods. Move the method declaration outside of any other methods.

101 - Global Functions Cannot Be Registered

Cause

Attempt to register a global function.

Resolution

It is unnecessary and illegal to register global functions. This error can also point out that you have created a function with the same name as an existing global function.

101 - Global Procedures Cannot Be Registered

Cause

Attempt to register a global procedure.

Resolution

It is unnecessary and illegal to register global procedures. This error can also point out that you have created a procedure with the same name as an existing global procedure.

101 - Missing Keyword Returns On Function Declaration

Cause

Missing Returns keyword on function declaration.

Resolution

Add the missing Returns keyword to the function declaration.

Example

Function Foo

Integer iVoid

Function_Return iVoid

End_Function // Foo

The above function declaration is missing the Returns keyword, as well as a return type:

Function Foo Returns Integer

Integer iVoid

Function_Return iVoid

End_Function // Foo

101 - Number Expected

This is a command compilation error.

Cause

A numeric expected but not found. ICODE error in the command sequence.

Resolution

Change the non-numeric identifier used to a numeric one.

102 - Line Number Out Of Sequence

This is a command compilation error.

Cause

This error can be caused by compiling a corrupted or outdated (from a previous version) precompiled package or header.

Resolution

Re-precompile all header files by selecting Precompile All Packages from the Tools menu of the Studio.

Recompile your application.

If the error subsists, check the subfolders of your workspace for precompiled copies of windows.pkg (windows.fld & windows.pkd) and dfallent.pkg (dfallent.fld & dfallent.pkd). If you find any, rename them, then recompile your application.

102 - Sub_Page !1 Already Defined As A Physical Image

104 - Duplicate Variable Defined

Cause

Same variable defined twice as different types. Coding error. This is a command compilation error.

Resolution

Rename one of the variables.

104 - Fatal Error

This is a command compilation error.

Cause

Maximum number of image windows was exceeded. This should only occur in legacy code using images, such as a BasicReport.

Resolution

Reduce the number of image windows in your application.

105 - Invalid Parameter !4

105 - Invalid Parameter !6

105 - Parameter Duplication !4 !6

105 - <symbol_name> Is Not A Valid Type/Class

This is a command compilation error.

Cause

Internal compiler conflict caused by a coding error. The offending term is displayed in the message in place of symbol_name.

Resolution

Check the spelling of symbol_name. Verify that symbol_name is a valid type/class.

106 - Error In Closing .exe File on Line: <line_number>

Cause

1. Operating system error (disk or folder full).

2. Lack of write rights in the location where the compiled file is to be created.

3. Missing ProgramPath value in the workspace (.WS) file.

This is a command compilation error.

Resolution

1. Ensure that plenty of disk space is available for the compiled program file.

2. Grant write rights in the location where the compiled file is to be created or change the location where the compiled file is to be created to one where write rights exist. This can be achieved by changing the location specified in the ProgramPath value in the workspace (.WS) file.

3. Add a ProgramPath value to the workspace (.WS) file.

106 - Error In Creating .exe File On Line: <line_number>

This is an compiler initialization error.

Cause

1. Lack of write rights in the location where the compiled file is to be created.

2. Missing ProgramPath value in the workspace (.WS) file.

Resolution

1. Grant write rights in the location where the compiled file is to be created or change the location where the compiled file is to be created to one where write rights exist. This can be achieved by changing the location specified in the ProgramPath value in the workspace (.WS) file.

2. Add a ProgramPath value to the workspace (.WS) file.

108 - Open Parenthesis Expected

This is a command compilation error.

Cause

Start of an expression not found.

Resolution

Add parentheses around the expression.

109 - Unequal Parentheses

This is a command compilation error.

Cause

End of an expression not found.

Resolution

Add a closing parenthesis to the expression. Use the Match Parenthesis option in the Studio to verify that the parentheses are matched.

111 - Undefined Symbol <symbol_name> In Argument

This is a command compilation error.

Cause

Internal compiler conflict.

1. An unresolved symbol was encountered.

2. This error is often caused by a typo or incorrect use of a symbol.

Resolution

1. Define the symbol before use or correct the symbol used.

2. Check the symbol for spelling errors.

Example

Incorrect Code:

if Found send Info_Box "Found is True"

Correct Code:

if (Found) send Info_Box "Found is True"

This example is similar to the example above, where in the correct code, the Found indicator is enclosed in parentheses and thus evaluated as an expression.

111 - Undefined Symbol U_!1 In Argument

111 - Undefined Symbol U_!2 In Argument

117 - Unresolved Begin, For, Repeat or While

Cause

If you used a begin, for ... from ... to, repeat, or while command without a terminating end, loop, or until command, this error will be triggered. Review closure of control blocks in your source code. This is a command compilation error.

Resolution

Control blocks must exist in matching pairs. Verify that each control block's beginning has a matching ending statement. This can get complex due to control blocks being nested inside other control blocks. A simple method of making this easier to track down is to always indent control blocks, including nested object control blocks, so that matching beginning and ending statements line up in the same columns in the source code.

120 - Missing End_Procedure or End_Function command

Cause

A procedure or function command was compiled without a following end_procedure or end_function command. This is a command compilation error.

Resolution

Be sure that each Procedure statement is followed by a matching End_Procedure statement and each Function statement is followed by a matching End_Function statement.

121 - Missing <character>

Cause

An opening character (left brace, left bracket, etc.) was used, but the closing (right) version of the character was not found on the command line. This is a command compilation error.

Resolution

Ensure that all brackets and parentheses in a code command line are matching pairs. Use the Match Parenthesis option in the Studio to verify that the parentheses are matched.

122 - Line Too Long

Cause

A single continuous code statement has exceeded the allowed maximum number of characters.

This is a macro-compilation error.

Resolution

Reduce your line length to remain within the limit. Split up one line into multiple lines if necessary.

127 - Invalid Character Found In Page Name

Cause

This is a form compilation error.

1. After the slash, the first character of a page name must be a letter, followed by any character(s) except /:;,()[]{} (numbers, periods and underscores may be used, among others).

2. This is sometimes caused by accidentally omitting the second slash required to comment out a line of code.

Resolution

1. Change the name of your image to be a legal name.

2. Add a second slash to comment out a line of code.

129 - Too Many User-Defined Indicators Found

Cause

Visual DataFlex provides for 89 user-defined indicators, plus 38 more predefined. More than this number will trigger this error. This is a macro-compilation error.

Resolution

Reduce the number of indicators your program uses. Indicators are largely obsolete in Visual DataFlex. In most cases, indicators can be replaced with boolean variables or properties.

130 - Reserved Word Used

Cause

A command, option, system variable, system indicator or the like is found in a position where such a word is not allowed.

Resolution

Fix by changing to another word. This is a macro-compilation error.

130 - Variable Must Be Declared

Cause

An argument has been encountered which must be a variable, but which has not been declared with a number, string, integer, date, real, or indicator command. This is a macro-compilation error.

Resolution

Declare the variable for the appropriate type.

150 - Macro Buffer Size Exceeded

Cause

Macros as defined are too large to fit in available buffer space. Usually the result of a syntax error. This is a macro-compilation error.

Resolution

Check syntax. Otherwise, Compiler Option M may permit compilation with larger macro-expansion buffer.

151 - Include File Not Found

Cause

The file specified for inclusion into the program by a Use or #INCLUDE statement on the line of code listed as <line number> cannot be found along the MakePath. This is a macro-compilation error.

Resolution

This error sometimes occurs if a filename is misspelled.

152 - Unequal Parentheses In Expression

Cause

Open and close parentheses not matched. This is a macro-compilation error.

Resolution

Add a closing parenthesis to the expression. Use the Match Parenthesis option in the Studio to verify that the parentheses are matched.

155 - Indicator Not Resolved: <symbol_name>

Cause

Indicator used has not been defined. This is a macro-compilation error.

Resolution

Verify that you have declared the indicator prior to using it. Check the spelling of the indicator.

155 - Too Many Indicators

Cause

Maximum of 3 indicators per line exceeded. This is a macro-compilation error.

Resolution

Reduce the number of indicators used on a single line to below the maximum. Split up the line into multiple lines if needed.

156 - No Active Conditionals

This is a macro-compilation error.

Cause

A #ELSE appears in a macro without a #IF... being open.

Resolution

Add a matching #IF for the #ELSE.

157 - Forward Reference: <symbol_name> Not Resolved

This is a macro-compilation error.

Cause

1. Label (goto or gosub) not found. Often caused by spelling inconsistencies.

2. You used the name of a message not defined anywhere in the object or its class heritage in which the message was invoked.

Resolution

1. Check spelling. If the error is not apparent in the source file, check whether one of the commands may be using an internal goto or gosub.

2. Check spelling of method calls and method names. Ensure the object is inside your current object neighborhood or declared outside of an object neighborhood prior to the current line of code. If the method is declared after this line of code, add a Register_Procedure or Register_Function statement to resolve this compiler error (make sure the method really exists before doing this, or you will get runtime errors later).

159 - Too Many Stack Levels

This is a macro-compilation error.

Cause

This error is triggered when the maximum number of control blocks has been exceeded. Control blocks are created by begin, repeat, and while commands, format commands using the range= option, and structured control commands, among other things.

Resolution

The maximum number of control blocks which may be open is 30. Reduce the number of stack levels to be below the limit. This can sometimes be achieved by splitting complex code up into individual methods.

160 - Pop Past Beginning

Cause

A control block terminator appears without a preceding block initializer. Examples are end (requires begin or while), until or loop (require repeat), etc. This is a macro-compilation error.

Resolution

Control blocks must exist in matching pairs. Verify that each control block's beginning has a matching ending statement. This can get complex due to control blocks being nested inside other control blocks. A simple method of making this easier to track down is to always indent control blocks, including nested object control blocks, so that matching beginning and ending statements line up in the same columns in the source code.

162 - Too Many Arguments To Runprogram

Cause

Too many arguments were passed to a runprogram command.

Resolution

See the documentation for the runprogram command and correct your syntax. If you need to pass multiple arguments to a program being launched via runprogram, enclose all of the arguments in quotes to turn them into a single argument being passed to runprogram.

Example

The following is an example of calling a hypothetical program called AddToShoppingCart.exe, which could be used to add items to a shopping cart. accepts the following arguments: 1. The Customer's Id, 2. The Item's Stock Number, 3. The price the item is being purchased for.

runprogram background "AddToShoppingCart.exe" "SmithJohn1234" "NavySweaterNS34XL" "19.95"

The incorrect code above sends the individual arguments required for AddToShoppingCart.exe as separate arguments to runprogram. The correct code below, appends the arguments required for AddToShoppingCart.exe into a single argument being passed to runprogram.

string sCustId sItemStockNum nPrice

move "SmithJohn1234" to sCustId

move "NavySweaterNS34XL" to sItemStockNum

move 19.95 to nPrice

runprogram background "AddToShoppingCart.exe" (sCustId+" "+sItemStockNum+" "+(string(nPrice)))

162 - Type Check Error In Argument: Argument Required

This is a macro-compilation error.

Cause

The command was issued with fewer than the minimum required number of arguments.

Resolution

Check the help for the command and verify the correct number of arguments to use.

162 - Type Check Error In Argument: Constant Not Allowed

This is a macro-compilation error.

Cause

A constant was used in a command which does not deal with constants.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Date Not Allowed

This is a macro-compilation error.

Cause

A date, or date variable, was used in a command which does not deal with dates (uses strings, etc.).

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Expression Not Allowed

This is a macro-compilation error.

Cause

An expression was used in a command which does not deal with expressions.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: File Element Not Allowed

This is a macro-compilation error.

Cause

A file element was used in a command which does not deal with file elements.

Resolution

Check the help for the command and verify the correct argument types to use.

162 -Type Check Error In Argument: Gp Indicator "[]" Not Allowed

This is a macro-compilation error.

Cause

A Gp indicator ([ or ]) was used in a command which does not deal with Gp indicators.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Group Not Allowed

This is a macro-compilation error.

Cause

A group was used in a command which does not deal with groups.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Indicator Not Allowed

This is a macro-compilation error.

Cause

An indicator was used in a command which does not deal with indicators.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Integer Not Allowed

This is a macro-compilation error.

Cause

An integer, or integer variable was used in a command which does not deal with integers (uses strings, etc.).

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Invalid Literal

This is a macro-compilation error.

Cause

162 - Type Check Error In Argument: Label Not Allowed

This is a macro-compilation error.

Cause

A label was used in a command which does not deal with labels.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Must Be An Indicator

This is a macro-compilation error.

Cause

A command was used that requires use of an indicator.

Resolution

Check the help for the command and verify the correct use.

162 - Type Check Error In Argument: Must Be Defined

This is a macro-compilation error.

Cause

An identified was used that has not yet been defined.

Resolution

Define the identifier. Check the spelling of the identifier.

162 - Type Check Error In Argument: Number Not Allowed

This is a macro-compilation error.

Cause

A number, or number variable, was used in a command which does not deal with numbers (uses strings, etc.).

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Option "{}" Not Allowed

This is a macro-compilation error.

Cause

A { or } option was used in a command which does not deal with { or } options.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Should Not Be Defined

This is a macro-compilation error.

Cause

162 - Type Check Error In Argument: String Not Allowed

This is a macro-compilation error.

Cause

A string, or string variable, was used in a command which does not deal with strings (uses numerics, etc.).

Resolution

Check the help for the command and verify the correct data types to use.

162 - Type Check Error In Argument: Too Many Arguments

This is a macro-compilation error.

Cause

Multiple arguments were used with a command which allows only one argument, or multiple arguments were used with a command which can handle only a certain number (see the help for the command in question).

Resolution

Check the help for the command and verify the correct number of arguments to use.

162 - Type Check Error In Argument: Variable Not Allowed

This is a macro-compilation error.

Cause

A variable name was used in a command which cannot handle variables.

Resolution

Check the help for the command and verify the correct argument types to use.

162 - Type Check Error In Argument: Window Not Allowed

This is a macro-compilation error.

Cause

A window was used in a command which cannot handle windows.

Resolution

Check the help for the command and verify the correct argument types to use.

164 - Command Not Found: <symbol_name>

Cause

1. A command in the source file (symbol_name) is not present in the Visual DataFlex included command set, the program, and its packages.

2. Misspellings frequently trigger this error.

3. The file Flex.cfl is not accessible to the compiler.

Resolution

1. Check to make sure you are including the source code file that contains the command named as <symbol_name> using a Use or #INCLUDE statement. The online help topic for the command will tell you which file to include.

2. Check the spelling of the command.

3. Make sure Flex.cfl is in the Lib subfolder where Visual DataFlex is installed and nowhere else. Make sure that an outdated version (from a prior version of Visual DataFlex or DataFlex) of Flex.cfl is not found elsewhere (e.g. one of the subfolders of your workspace).

170 - Cannot Replace To Itself

This is a macro-compilation error.

Cause

Logic of replacement is invalid. Often caused by misuse of reserved word(s) or syntax error(s).

170 - Window Was Already Typed

This is a macro-compilation error.

Cause

172 - Too Many Nested Blocks

Cause

This error is triggered when the maximum number of control blocks has been exceeded. Control blocks are created by begin, repeat, and while commands, format commands using the range= option, and structured control commands, etc.

Resolution

The maximum number of control blocks which may be open is 30. Reduce the number of control blocks to be below the limit. This can sometimes be achieved by splitting complex code up into individual methods.

175 - Source Incompatible with Compiler on Line <line_number>

This is a macro-compilation error.

Cause

1. A #CHKSUB directive in the source code specified a revision level for a subsystem that did not match the compiler's revision level for the subsystem.

2. This can be caused by an old flex.cfl file (from a prior revision of Visual DataFlex or DataFlex) being found along the DFPATH.

Resolution

1. Check the source code in which line number occurs for compliance with the appropriate revision level, and/or check the arguments of the #CHKSUB.

2. Check to ensure that you do not have old copies of flex.cfl along the DFPATH. You may have an old copy in your workspace. There should only be one flex.cfl file for any revision of Visual DataFlex, in the \visual dataflex\lib folder.

199 - Symbol(s) Already Defined

This is a macro-compilation error.

Cause

A string, number, integer, date, real, or indicator command is executed for an argument (global variable name) which has already been defined.

Resolution

Give all global variables in a program unique names regardless of their types. Use Hungarian notation for naming identifiers as discussed in the Naming Conventions section of the help.

300 - Msg <procedure_name> already defined as a Global method

Cause

A procedure is already defined as a global procedure.

Resolution

Rename the new procedure.

300 - Get <function_name> already defined as a Global method

Cause

A function is already defined as a global function.

Resolution

Rename the new function.

300 - Class/End_Class should .Not. Be Inside a Method

Cause

A Class or End_Class statement is located inside a method.

Resolution

Classes cannot be defined inside methods. Move the class declaration outside of any procedures or functions.

300 - Classes Can .Not. Be Nested Within Classes

Cause

A Class or End_Class statement is located inside a class.

Resolution

Classes cannot be defined inside other classes. Move the class declaration outside of any other classes.

300 - Classes Can .Not. Be Nested Within Methods

Cause

A Class or End_Class statement is located inside a method.

Resolution

Classes cannot be defined inside methods. Move the class declaration outside of any procedures or functions.

300 - Construct_Object .Not. Allowed In Objects

Cause

A Construct_Object statement is located inside an object.

Resolution

Construct_Object is part of the Visual DataFlex class constructor and limited to use in classes. Move the construct_object statement to a class or subclass an existing class to move the construct_object code there.

300 - End_Class Without Class

Cause

A End_Class statement is missing it's matching Class statement.

This can also be caused by a Class statement being placed in an illegal area, such as inside another class or a method.

Resolution

Class and End_Class statements must exist in matching pairs. Verify that each class declaration has a matching Class and End_Class statement.

300 - End_Funct/End_Proc Command .Not. Within A Method

Cause

An End_Procedure or End_Function statement is located inside a method.

Resolution

Methods (procedures and functions) cannot be defined inside other methods. Move the method declaration outside of any other methods.

300 - End_Object Expected Before End_Class

Cause

An Object statement that is nested inside a class is missing it's matching End_Object statement.

Resolution

Objects can be declared inside class declarations (inside methods). Object and End_Object statements must exist in matching pairs. This error can occur if an Object statement inside a class is missing it's matching End_Object statement or if that End_Object statement has been misplaced to outside of the class declaration. Verify that each object declaration has a matching Object and End_Object statement and that they are both inside the same class declaration. This can get complex due to objects being nested inside other objects, as well as inside classes and methods. A simple method of making this easier to track down is to always indent code blocks, including nested object declarations, methods and classes, so that matching object and end_object statements, matching class and end_class statements, matching function and end_function statements, and matching procedure and end_procedure statements line up in the same columns in the source code.

300 - End_Object Without Object

Cause

An End_Object statement is missing it's matching Object statement.

Resolution

Object and End_Object statements must exist in matching pairs. Verify that each object declaration has a matching Object and End_Object statement. This can get complex due to objects being nested inside other objects. A simple method of making this easier to track down is to always indent code blocks, including nested object declarations, so that matching object and end_object statements line up in the same columns in the source code.

300 - End_Object Without Object In Method

Cause

1. An object is missing its End_Object statement.

2. This error can also be caused by a missing ending statement of a procedure or function preceding the line that triggers the error.

Resolution

1. Add an End_Object statement to declare the end of the objects code.

2. Add an ending statement to the procedure or function that is missing one.

Example

Incorrect Code:

Object oButton1 is a Button

Procedure OnClick

End_Object // oButton1

Correct Code:

Object oButton1 is a Button

Procedure OnClick

End_Procedure // OnClick

End_Object // oButton1

300 - Expecting Identifier After Type In Method Declaration

300 - Global Functions/Procedures Cannot Be Overloaded

300 - Global Method !1 !2 Already Defined

Cause

A global procedure is already defined somewhere prior in the code.

Resolution

Rename the new global procedure to create a unique name.

300 - Invalid Object Reference

300 - Invalid Position For '!1'

300 - Keyword Overloaded Cannot Be Between A Type And An Identifier

300 - Local Variables Can Only Be Defined Within Methods

300 - Messages In Class Should Be In Method

300 - Method Return .Not. Within A Method

300 - Methods .Not. Allowed In Class Child-Objects

300 - Missing Identifier Before Returns Keyword

300 - Missing Return Type After Keyword Returns In Method Declaration

Missing return type after keyword Returns on function declaration.

Example

Function Foo Returns

Integer iVoid

Function_Return iVoid

End_Function // Foo

The above function declaration is missing the return type following the Returns keyword:

Function Foo Returns Integer

Integer iVoid

Function_Return iVoid

End_Function // Foo

300 - Missing Type In Method Declaration

300 - Objects In Classes Should Be Within A Method

300 - Procedures And Functions May .Not. Be Nested.

300 - Returns Must Be Followed By A Return Type

300 - This Method Was Previously Defined As .Not. Overloaded

300 - This Method Was Previously Defined As Overloaded

300 - Type Follows Type In Declaration

300 - Unexpected Symbol Encountered After Return Type In Method Declaration

300 - "Unknown type for local variable"

300 - "Unknown Type!"

301 - Global Variable Defined In Method

301 - Obsolete Syntax: Get/Set Form_Xxx To X Y

301 - Old Style Usage: No Item Keyword. Is Replacement For .Current. Or 0

301 - Old Style Usage: Possible Global Variable In Method

301 - Old Style Usage: S/B Gosub_Return

Cause

The Return command is now used to terminate procedures and functions, not to return execution from a subroutine call.

Resolution

The Gosub_Return command must be used to return execution from a subroutine call.

Ideally, obsolete procedural code using gosub and gosub_return statements should be replaced with object oriented code using methods.

302 - Class Property Must Be Defined Within A Constructor Procedure

Cause

1. A property is defined in a class, but outside of a constructor method.

Resolution

1. Properties defined in a class must be defined inside a Construct_Object.

302 - Invalid Use Of 'Of'

302 - Messages In Class Should Be In Method

302 - Missing 'To' Keyword

Cause

1. The 'to' keyword is missing before the return value argument in a function call.

2. The 'to' keyword is missing before the argument in a get or set statement for a property.

Resolution

1. The 'to' keyword must precede the return value argument in a function call.

2. The 'to' keyword must precede the argument in a get or set statement.

302 - No Value Following 'To'

Cause

1. There is an argument missing following the 'to' keyword in a function call.

2. There is an argument missing following the 'to' keyword in a get or set statement for a property.

Resolution

1. There must be an argument following the 'to' keyword in a function call.

2. There must be an argument following the 'to' keyword in a get or set statement.

302 - Object Property Should .Not. Be In A Method

Cause

A property is defined in a method.

Resolution

A property defined for an object must be defined outside any methods. To create a property for an object being created in a class, define the properties in the superclass of the object.

302 - Object/End_Object Within Class Should Be In A Method

Cause

An object defined inside a class is defined outside of any method.

Resolution

Objects defined inside a class must be defined in a method. To create a child object when an object of the current class is created, define the object in the Construct_Object method.

302 - Property Can Only Be Defined Within A Class Or Object

Cause

A property is defined outside of any object or class.

Resolution

Properties must defined inside a class or object. Move your property declaration into a class or object.

302 - Property Cannot Be Defined In An Object Within A Class

Cause

A property is defined in an object that is defined in a class.

Resolution

A property defined for a class must be defined outside any objects defined in that class. To create a property for an object being created in a class, define the properties in the superclass of the object.

302 - Too Many Params After 'To'

Cause

There is more than 1 argument following the 'to' keyword in a function call.

Resolution

The only argument following the 'to' keyword in a function call should be the argument that will accept the return value of the function being called.

A common mistake is to place the arguments being passed to the function after the return value argument at the end of the function call. Instead, the arguments being passed to a function should be listed before the 'to'keyword.

Example

Function Foo string s1 string s2 returns Boolean

Boolean bRetVal

:

Function_Return bRetVal

End_Function

Procedure DoSomething

Boolean bRetVal

string sArgument1 sArgument2

get Foo to bRetVal sArgument1 sArgument2

End_Procedure

In the incorrect code sample above, the arguments being passed to Foo are listed in the call to Foo after the return argument bRetVal. In the corrected version below, the arguments being passed to Foo are listed immediately following the name of the function being called (Foo) and before the 'to' keyword.

Function Foo string s1 string s2 returns Boolean

Boolean bRetVal

:

Function_Return bRetVal

End_Function

Procedure DoSomething

Boolean bRetVal

string sArgument1 sArgument2

get Foo sArgument1 sArgument2 to bRetVal

End_Procedure

302 - Too Many 'To'

Cause

The 'to' keyword is duplicated in a get or set statement for a property.

Resolution

Remove the duplicate 'to' keyword.

302 - Unusual Usage: Variable Or Expression Used As Message

777 - Object Is Missing Begin_Row...End_Row Commands

Cause

The syntax of the object's class requires a Begin_Row ... End_Row command block. This is a command compilation error.

778 - If <FileName> Is A FileName It Is Unopened

Cause

1. The syntax of the command calls for a database table filename, but the table named <FileName> was not found.

2. Reference is made to a database table that is required to be a DataDictionary objects (DDO) main_file, but has not been specified as such.

This is a command compilation error.

Resolution

1. Check the filename for misspelling.

Check the folders along the MakePath for the presence of the database table.

Recreate the .FD file (from Database Builder) for the database table specified by <FileName>.

2. Set the database table in question to be the DataDictionary objects (DDO) main_file.

779 - Missing Keyword "Of"

779 - Missing Keyword "To"

998 - Unknown Field: !2

998 - Unknown Field: !6

1000 - Duplicate Item Name

1000 - Invalid Argument: "Begin_Pull_Down" Requires Menu_System Package

1000 - Name Already Defined

1001 - "Attempt To Redefine Symbol For Different Value"

1001 - End_Enumeration_List Without Enumeration_List Command

1001 - Enumeration Lists Cannot Be Nested

Cause

An attempt was made to nest enumeration lists inside each other.

Resolution

You cannot nest enumeration lists. Make sure each enumeration list has a matching beginning and end, defined by Enum_List and End_Enum_List.

1001 - Enumeration Value Must Be A Constant

Cause

An attempt was made to add non-constant value to an enumeration list.

Resolution

You can only add constants to enumeration lists. You can use the define command to define symbols and assign constant, but not necessarily sequential values to enumeration lists.

4293 - Bad image name

Cause

1. Illegal characters in image name.

2. Spaces to the left of the image name.

This should only occur in legacy code using images, such as a BasicReport.

Resolution

1. Only use legal ASCII characters (letters and numbers) in image names. Do not use spaces in image names.

2. The Visual DataFlex Studio sometimes indents the source code of the report, resulting in this error message. As a solution to this, place the report in a separate source code file and #INCLUDE the file in the place where the report was in the Studio.

4294 - Can't close .exe

4295 - Can't include resource

4296 - Can't read .FLP

4297 - Can't replace to self

Cause

This error means that you are using an identifier or symbol that is already defined previously.

Resolution

Rename the identifier in question to use a unique name.

4298 - Command not found

Cause

1. A command in the source file (symbol_name) is not present in the Visual DataFlex included command set, the program, and its packages.

2. Misspellings frequently trigger this error.

3. The file Flex.cfl is not accessible to the compiler.

4. An incorrectly coded expression.

Resolution

1. Check to make sure you are including the source code file that contains the command named as <symbol_name> using a Use or #INCLUDE statement. The online help topic for the command will tell you which file to include.

2. Check the spelling of the command.

3. Make sure Flex.cfl is in the Lib subfolder where Visual DataFlex is installed and nowhere else. Make sure that an outdated version (from a prior version of Visual DataFlex or DataFlex) of Flex.cfl is not found elsewhere (e.g. one of the subfolders of your workspace).

4. Check the expression that is triggering this error.

a. A missing closing parenthesis for an expression.

Example

Incorrect Code:

Integer i1 i2 i3

If (i1 = i2) AND (i1 = i3) showln "condition is true"

Correct Code:

Integer i1 i2 i3

If ((i1 = i2) AND (i1 = i3)) showln "condition is true"

The incorrect code will trigger compiler error 4298, because the entire expression is not enclosed in parentheses.

b. A missing space between a command and the first argument for the command.

Example

Incorrect Code:

Move(Customer.Sales * 10) To Customer.Sales

Correct Code:

Move (Customer.Sales * 10) To Customer.Sales

4299 - Constant expected

4300 - Duplicate page name

4301 - Duplicate resource name

4302 - ELSE without IF

4303 - Empty label

4304 - ENDHEADER not found

4305 - FLEXCFL not found

4306 - Forward reference not resolved

Cause

You used the name of a message not defined anywhere in the object or its class heritage in which the message was invoked.

Resolution

Check spelling of method calls and method names. Ensure the object is inside your current object neighborhood or declared outside of an object neighborhood prior to the current line of code. If the method is declared after this line of code, add a Register_Procedure or Register_Function statement to resolve this compiler error (make sure the method really exists before doing this, or you will get runtime errors later).

4307 - Hash index bad

4308 - Illegal macro expansion

4309 - Illegal redefinition

4310 - Illegal return type

4311 - Image not found

Cause

1. The image being referenced was not included in the program's source code or not referenced prior to this point in the code.

2. Illegal characters in image name.

3. Spaces to the left of the image name.

This should only occur in legacy code using images, such as a BasicReport.

Resolution

1. Verify that the image being referenced is located in the source code prior to the place it is being referenced. Check the SourceFileName.PRN file to see if and where the image is included in the program.

2. Only use legal ASCII characters (letters and numbers) in image names. Do not use spaces in image names.

3. The Visual DataFlex Studio sometimes indents the source code of the report, resulting in this error message. As a solution to this, place the report in a separate source code file and #INCLUDE the file in the place where the report was in the Studio.

4312 - Invalid flexkey name

Cause

An On_Key statement is referencing an invalid accelerator key.

Resolution

FlexKeys are predefined Visual DataFlex accelerator keys. An On_Key statement must reference a valid FlexKey name or a valid keyboard key combination. You can see a list of Visual DataFlex accelerator keys here.

4313 Include file not found <FileName.ext> on Line: <line_number> of File: <SourceFileName.ext>

Cause

The file specified for inclusion into the program by a Use or #INCLUDE statement on the line of code listed as <line number> cannot be found along the MakePath.

Resolution

This error sometimes occurs if a filename is misspelled.

4314 - Indicator unresolved

Cause

An indicator is being evaluated that is not declared.

Resolution

Verify that you have declared the indicator prior to using it. Check the spelling of the indicator.

4315 - Invalid data type

Cause

Bad/undefined parameter type name used.

Resolution

The parameter data type listed is undefined.

Example

Procedure Test Integer arg1 MyDataType arg2

where MyDataType is not defined.

This is typically caused by a typo of a valid data type or attempting to reference a data type before it has been defined.

4316 - Invalid resource option

4317 - Invalid type "One or both comparision variable datatypes are not valid for logical evaluation. Use (var<>xx)" on Line: <line_number> of File: <SourceFileName.ext>

Cause

Using the eq, ge, gt, le, lt or ne operators in comparison mode is obsolete.

Resolution

For Boolean comparisons you should use the appropriate relational operator inside a Boolean expression and enclose it in parentheses.

Example

This is obsolete:

If iCount GE 10

This is correct:

If (iCount >= 10)

4318 - Line number wrong

Cause

This error can be caused by compiling a corrupted or outdated (from a previous version) precompiled package or header.

Resolution

Re-precompile all header files by selecting Precompile All Packages from the Tools menu of the Studio.

Recompile your application.

If the error subsists, check the subfolders of your workspace for precompiled copies of windows.pkg (windows.fld & windows.pkd) and dfallent.pkg (dfallent.fld & dfallent.pkd). If you find any, rename them, then recompile your application.

4319 - Macro buffer exceeded

4320 - Missing argument

4321 - Missing END_CLASS

Cause

A class is missing its End_Class statement somewhere in the compiled code preceding the line that triggers the error.

Resolution

Add an End_Class statement to declare the end of the classs code.

The tricky part of this error is that it most likely will not be reported until the last line of the code, since that is when all Class and End_Class statements have been resolved. The usually simplest way of finding the actual place in the code where the End_Class statement is missing is to return to the last place(s) that were edited.

Example

Incorrect Code:

Object oArray1 is a Button

Procedure Construct_Object

forward send Construct_Object

End_Procedure // Construct_Object

Correct Code:

Object oArray1 is a Button

Procedure Construct_Object

forward send Construct_Object

End_Procedure // Construct_Object

End_Class // oArray1

4322 - Missing END_MESSAGE

4323 - Missing END_OBJECT

Cause

1. An object is missing its End_Object statement somewhere in the compiled code preceding the line that triggers the error.

2. This error can also be triggered by a missing End_Class statement.

Resolution

1. Add an End_Object statement to declare the end of the objects code.

The tricky part of this error is that it most likely will not be reported until the last line of the code, since that is when all Object and End_Object statements have been resolved. The usually simplest way of finding the actual place in the code where the End_Object statement is missing is to return to the last place(s) that were edited.

Example

Incorrect Code:

Object oButton1 is a Button

Correct Code:

Object oButton1 is a Button

End_Object // oButton1

2. Add an End_Class statement to declare the end of the classs code.

Example

Incorrect Code:

Object oArray1 is a Button

Procedure Construct_Object

forward send Construct_Object

End_Procedure // Construct_Object

Correct Code:

Object oArray1 is a Button

Procedure Construct_Object

forward send Construct_Object

End_Procedure // Construct_Object

End_Class // oArray1

4324 - No active conditionals

4325 - Number expected

4326 - Pop past beginning of stack

4327 - Region size exceeded Data Area on Line: <line_number> of File: <SourceFileName.ext>

Cause

This occurs if the size of the data area is exceeded. The data area in a Visual DataFlex program is limited to 8 MB. Typically, this means that the program contains lots of huge string literals or other constant data. String literals are anything enclosed in quotes.

Resolution

Check if the program may have an unusually large sets of string literals and/or excessively long string literals, which, when combined, exceed 8 MB.

4328 - Undefined symbol in argument <symbol_name>

Cause

This error is usually caused by the declaration of an object as an instance of a class that has not been included in the source code before the object declaration.

Resolution

Include the Use statement for the class specified by <symbol_name>

Example

Incorrect Code:

Object Cust_DD is a Customer_DataDictionary

End_Object // Cust_DD

Correct Code:

// include the source code file that defines class Customer_DataDictionary

Use Customer.DD

Object Cust_DD is a Customer_DataDictionary

End_Object // Cust_DD

In order not to trigger error 4328, the source code file that defines that class used must be included in the application that will be compiled.

4329 - Replace array corrupted

4330 - Reserved word used

4331 - Source not compatible

4332 - Symbol already defined

Cause

1. A function or procedure with the same name is already defined as a global function or procedure.

2. A function or procedure with the same name is already defined as an external_function or external_procedure.

3. A reserved word is used as an identifier (e.g. variable name, property name, object name).

4. An internal function name is used as an identifier (e.g. function or procedure name).

Resolution

1. & 2. Rename one of the functions to resolve the duplication.

3. Rename the identifier so it no longer conflicts with the reserved word.

4. Rename the identifier so it no longer conflicts with the internal function.

Use Hungarian notation for naming identifiers as discussed in the Naming Conventions section of the help.

4333 - Too many commands

4334 - Too many Ifs

4335 - Too many indicators

4336 - Too many integers

4337 - Too many lines

Cause

A single continuous code statement has exceeded the allowed maximum number of characters.

Resolution

A single continuous compilable statement can consist of numerous lines of code of up to 255 characters each, continued from one line to the next using the semicolon (;) character.

Example

showln ("This is a test of a continuous compilable statement made up " ;

+"of several lines of code. " ;

+"This is the third and last line of this example.")

4338 - Too many mask fill chars

4339 - Too many messages

4340 - Too many nested blocks

Cause

This error is triggered when the maximum number of nested control blocks has been exceeded. Control blocks are created by begin, repeat, and while commands, format commands using the range= option, and structured control commands, etc.

Resolution

The maximum number of control blocks which may be open is 30. Reduce the number of nested control blocks to be below the limit. This can sometimes be achieved by splitting complex code up into individual methods.

4341 - Too many pages

4342 - Too many stack levels

Cause

This error is triggered when the maximum number of stack levels has been exceeded. Stack levels are created by control blocks, among other things. Control blocks are created by begin, repeat, and while commands, format commands using the range= option, and structured control commands, etc.

Resolution

The maximum number of stack levels which may be open is 30. Reduce the number of stack levels to be below the limit. This can sometimes be achieved by splitting complex code up into individual methods.

4343 - String too long

4344 - Too many windows

4345 - Type check error

Cause

1. Trying to assign the wrong data type to a variable.

2. Attempting to assign a value into a constant.

3. Calling a function without specifying a variable to accept the function's return argument:

4. Attempting to declare a global variable declaration that specifies the length of a string in a method.

5. U_ClassName.

Resolution

1. Only move data to a variable that is the same type as the variable.

In some cases, Visual DataFlex will automatically convert the data to the new type without generating an error. Use this technique sparingly. In those cases, be very sure that the resulting value can only become what you expect it to be. Do thorough testing of this type of conversion.

2. You cannot assign a value to a constant. Use a variable instead of a constant.

Example:

move sName to "Fred"

3. Specifying a variable to accept the function's return argument.

Example:

Function Foo returns Integer

Function_Return iVoid

End_Function

Procedure Goo

get Foo

End_Procedure

The above code does not specify a variable to hold Foo's return argument. This is the corrected code:

Function Foo returns Integer

Function_Return iVoid

End_Function

Procedure Goo

integer iRetVal

get Foo to iRetVal

End_Procedure

4. Only global variable declarations can specify the size (length) of a string variable. Local variables are always the size specified by the global argument size. Any variable declared inside a method is automatically a local variable. Either:

a. Remove the size specification and leave the variable in the method, changing the global variable a local variable.

b. Move the global variable declaration outside any method.

c. Replace the global variable with a property, as proper object oriented programming technique suggests.

5. The class ClassName has not been defined in the code compiled so far.

4346 - Unequal parentheses

Cause

The number of opening and closing parentheses in an expression is not equal.

Resolution

Correct the expression to ensure the number of opening and closing parentheses is identical.

Example

Incorrect Code:

Integer i1 i2 i3

If ((i1 = i2) AND (i1 = i3) showln "condition is true"

The code above is missing a closing parenthesis at end of the expression:

Integer i1 i2 i3

If ((i1 = i2) AND (i1 = i3)) showln "condition is true"

4347 - Unknown command

Cause

1. A command in the source file (symbol_name) is not present in the Visual DataFlex included command set, the program, and its packages.

2. Misspellings frequently trigger this error.

3. The file Flex.cfl is not accessible to the compiler.

Resolution

1. Check to make sure you are including the source code file that contains the command named as <symbol_name> using a Use or #INCLUDE statement. The online help topic for the command will tell you which file to include.

2. Check the spelling of the command.

3. Make sure Flex.cfl is in the Lib subfolder where Visual DataFlex is installed and nowhere else. Make sure that an outdated version (from a prior version of Visual DataFlex or DataFlex) of Flex.cfl is not found elsewhere (e.g. one of the subfolders of your workspace).

4348 - Unresolved control block

Cause

If you used a begin, for ... from ... to, repeat, or while command without a terminating end, loop, or until command, this error will be triggered. Review closure of control blocks in your source code. This is a command compilation error.

Resolution

Control blocks must exist in matching pairs. Verify that each control block's beginning has a matching ending statement. This can get complex due to control blocks being nested inside other control blocks. A simple method of making this easier to track down is to always indent control blocks, including nested object control blocks, so that matching beginning and ending statements line up in the same columns in the source code.

4349 - Window already formatted

4350 - Window already typed

4351 - Writing output

4352 - Undefined symbol in GROUP

Can occur if an undefined symbol, such as an undefined indicator evaluation, is used as argument for an entry_item.

4353 - Undefined symbol in ENTRY

4366 - Cannot Create Overloaded Name

Cause

Bad/undefined parameter type name used with overloaded method.

Resolution

The parameter data type listed is undefined.

Example

Procedure Test Overloaded Integer arg1 MyDataType arg2

where MyDataType is not defined.

This is typically caused by a typo of a valid data type or attempting to reference a data type before it has been defined.

4390 - Illegal method name definition

Cause

1a. This method was previously defined as non-overloaded.
- or -
1b. This method was previously defined as overloaded.

Resolution

1. You cannot define a method with the same name as overloaded and non-overloaded. See Method Overloading about more information on this topic.

4391 - Illegal code placement

Cause

This error means that some code was placed in a location where it is illegal, as defined in the Visual DataFlex language.

Examples of this include:

  • Nesting a class inside a method.

  • Nesting a method inside a method.

  • Placing a property declaration inside a method.

Resolution

Correct the illegal code placement. See the Visual DataFlex Language Guide for language rules and syntax.

4392 - Invalid method syntax

1. Missing keyword Returns on function declaration.

Example

Function Foo

Integer iVoid

Function_Return iVoid

End_Function // Foo

The above function declaration is missing the Returns keyword, as well as a return type:

Function Foo Returns Integer

Integer iVoid

Function_Return iVoid

End_Function // Foo

2. Missing return type after keyword Returns on function declaration.

Example

Function Foo Returns

Integer iVoid

Function_Return iVoid

End_Function // Foo

The above function declaration is missing the return type following the Returns keyword:

Function Foo Returns Integer

Integer iVoid

Function_Return iVoid

End_Function // Foo

4393 - Invalid message syntax

This error message can be caused by various types of invalid message syntax. Please read the text or the error message for the specific cause and/or resolution.

4394 - Invalid object reference

This error message can be caused by various types of invalid message syntax. Please read the text or the error message for the specific cause and/or resolution.

4394 - Invalid object reference OBJECT .NOT. YET DEFINED

Cause

Attempt to reference an object that has not yet been defined in the code. This can be cause by:

1. Referencing an object that will be declared later in the code.

2. Referencing an object that does not exist in the code.

Resolution

1. Either declare the object before the code that declares this error or use Register_Object to declare the object to be declared later in the compilation.

2. You may have mistyped the objet name or mistakenly addressed the wrong object.

4395 - Obsolete command is unsupported

Cause

Attempt to use an obsolete command that is no longer supported in Visual DataFlex.

Resolution

Look up the command in question in the Language Reference's Obsolete section and replace it with the recommended non-obsolete method.

4396 - Invalid argument

This error message can be caused by various types of invalid arguments. Please read the text or the error message for the specific cause and/or resolution.

4397 - Illegal external function definition

4501 - Incompatible Debug Information

Cause

The .DBG was compiled in a different revision of Visual DataFlex.

Resolution

Recompile the program so that the .EXE and .DBG files are from the same revision of Visual DataFlex.

4507 - Missing Array Indexer in Reference

Cause

Too few array indexers specified while attempting to reference an individual element. For example, only the first dimension was specified while attempting to access an individual element of a two-dimensional array.

Resolution

Address the array with the correct number of indexers (e.g. 2 for a two-dimensional array).

4514 - Obsolete or ambiguous syntax: "Can be array indexer or indicator. Left of '[' is not array, use '(' if indicator"

Cause

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.

Resolution

Example

Procedure Foo integer iCustNumber Boolean bIsFound

:

End_Procedure // Foo

Procedure CallFoo

open Customer

find gt Customer by 1

if (Found) begin

indicate GotIt as (Customer.Status = "Active")

send Foo Customer.Number [GotIt]

end

End_Procedure // CallFoo

The above function call to Foo sends [GotIt], which will result in this error. The correct way to reference an indicator's value is to place it in parentheses, as shown below:

Procedure Foo integer iCustNumber Boolean bIsFound

:

End_Procedure // Foo

Procedure CallFoo

open Customer

find gt Customer by 1

if (Found) begin

indicate GotIt as (Customer.Status = "Active")

send Foo Customer.Number (GotIt)

end

End_Procedure // CallFoo

However, indicators are an outdated way of coding. The best resolution to this particular sample is to replace the indicator with a Boolean variable, as demonstrated here:

Procedure Foo integer iCustNumber Boolean bIsFound

:

End_Procedure // Foo

Procedure CallFoo

Boolean bGotIt

open Customer

find gt Customer by 1

if (Found) begin

if (Customer.Status = "Active") ;

move True to bGotIt

else ;

move False to bGotIt

send Foo Customer.Number bGotIt

end

End_Procedure // CallFoo

4514 - Obsolete or ambiguous syntax: "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.


Overview of Studio Errors

You may encounter some error messages while using the Visual DataFlex Studio. This section lists all Studio errors in alphabetic order.

The page for each error number and message lists all known possible causes and resolutions for the error, as well as examples where relevant.

If there is more than one possible cause for an error, the causes and resolutions are listed as a numbered list, with a matching cause and resolution having the same number.

Example:

Cause

1. Cause 1

2. Cause 2

Resolution

1. This is resolution for cause 1

2. This is resolution for cause 2


Studio Errors Terminology

This is a description of terms used in the explanation of error messages.

ABData – The ABData database table is a database table that stores one entry for each program and component in a workspace. The physical files for this table (ABData.*) are stored in the AppSrc subfolder of each workspace.

The entries in the ABData database table can be viewed by selecting Maintain Studio Databases from the Workspace pulldown menu in the Studio. ABData entries can be viewed on the Components tab page. Use F7 & F8 to find entries.

The ABData database table can be reindexed from the Studio by selecting Reindex Studio Databases from the Workspace pulldown menu.

DDData – The DDData database table is a database table that stores one entry for each DataDictionary class in a workspace. The physical files for this table (DDData.*) are stored in the DDSrc subfolder of each workspace.

The entries in the DDData database table can be viewed by selecting Maintain Studio Databases from the Workspace pulldown menu in the Studio. DDData entries can be viewed on the Data-Dictionaries tab page.

The DDData database table can be reindexed from the Studio by selecting Reindex Studio Databases from the Workspace pulldown menu.

AppSrc – The AppSrc path is the path (list of folders) the utilities, such as the Studio, use to find needed files, such as components created and maintained in the Studio.

You can view the AppSrc path for any workspace by choosing Workspace Manager from the Workspace menu in the Studio.


Studio Error Messages

Studio Errors List

See Also: Finding Specific Errors

No Access To File

4105 – Bad File Number

No Access To File
The requested file does not reside in the first folder in the Workspace.
You may not edit/view this component.

Cause

This error may occur when trying to open a component in the Studio. In order for the Studio to be able to open a component, the source file for that component (i.e., the FileName.vw file for a dbView) must reside in the first folder listed in the AppSrc path for that workspace.

Resolution

Check the AppSrc path for this workspace. It may point to an incorrect folder. If there is more than one folder listed in the AppSrc path, make sure the components used by the Studio are in the first path listed.

4105 – Bad File Number

Cause

This error occurs in the Studio if there is a missing entry in the DDData table for a DataDictionary class for a table used in the component currently open.

Resolution

To find out which database table is causing this error, follow these steps:

1. While the component that causes this error is open in the Studio, open the Database Selector

2. Click on the DDO Tree button

3. Click on the plus (+) sign next to the listed DDOs to expand the listing beneath each of them

4. Click on the plus (+) sign next to Attributes for each DDO

5. Click on the plus (+) sign next to Required Server DDOs for each DDO

6. Click on the plus (+) sign next to Required Client DDOs for each DDO

If you see any entries in the Required Server DDOs section listing only a 0 instead of an actual number and table name, then a parent DataDictionary for the DDO listed is causing the problem. In this case, open each parent file of the file listed in Database Builder until you find the one causing the problem.

If you see any entries in the Required Client DDOs section listing only a 0 instead of an actual number and table name, then a child DataDictionary for the DDO listed is causing the problem. In this case, open each child file of the file listed in Database Builder until you find the one causing the problem.

The most common reason for not having an entry in DDData for a particular DataDictionary class is that this class has not been created yet. To create a DataDictionary class for a particular database table in a workspace, open the table in Database Builder. If no DataDictionary exists for a table, Database Builder will prompt you to create one.

On a rare occasion, the DDData table or one of its indexes could be corrupted. Try reindexing the DDData table. The DDData database table can be reindexed from the Studio by selecting Reindex Studio Databases from the Workspace pulldown menu.

If you have imported a single database table and DataDictionary class from another workspace, by copying the table files and .DD file from another workspace to the current one, you will have to manually create an entry in DDData for this DataDictionary class.

The existing entries in the DDData database table can be viewed by selecting Maintain Studio Databases from the Workspace pulldown menu in the Studio. DDData entries can be viewed on the Data-Dictionaries tab page.


Overview of Debugger Errors

You may encounter some error messages while using the Visual DataFlex Debugger. This section lists all Debugger errors in alphabetic order.

The page for each error number and message lists all known possible causes and resolutions for the error, as well as examples where relevant.

If there is more than one possible cause for an error, the causes and resolutions are listed as a numbered list, with a matching cause and resolution having the same number.

Example:

Cause

1. Cause 1

2. Cause 2

Resolution

1. This is resolution for cause 1

2. This is resolution for cause 2


Debugger Errors Terminology

This is a description of terms used in the explanation of error messages.

<FileName.ext> - This token is used in error listings in the help file to represent an actual file name with extension.


Debugger Error Messages

Debugger Errors List

See Also: Finding Specific Errors

Error opening debug information file (.DBG) associated with <FileName.ext>. Please recompile with debug symbols option on

Cause

1. This error occurs if the debugger tries to load a Visual DataFlex application and the debug information file (.DBG) is missing.

2. This error can also be caused by a lack of precompiled files or headers with debug symbols.

This error is fatal.

Resolution

  1. Re-precompile all header files by selecting Precompile All Packages from the Tools menu of the Studio.

  2. Recompile your application.
    This will automatically recreate the .DBG file (the name of the file will be identical to the compiled program, except for the .DBG extension).


Overview

Error Codes - Overview

The Error Codes online help book is a comprehensive reference of errors that can be encountered when developing or running application.

Finding Specific Errors

Individual error messages are not listed in the index of the Visual DataFlex help. The best way to quickly find a specific error, is to type the error number (e.g. 4110) into the search form on the Search tab page of the Visual DataFlex help.

Error Sections

This Error Codes book is divided into 2 main sections, Runtime Error Messages and Development-Time Error Messages. Each of these is again divided into more specific topics.

The Runtime Error Messages section covers all error messages encountered when running Visual DataFlex applications and tools, including any error messages that could occur during development time and at runtime. This includes Operating System Errors, User Errors, System Errors, Utility Errors and Initialization Errors.

The Development-Time Error Messages section covers errors encountered only during development time, such as Compiler Errors, errors encountered in the Visual DataFlex Studio (Integrated Development Environment) or errors encountered in the Visual DataFlex Debugger.

Note:

Not all errors are necessarily listed in exact numerical order. Some errors in the range of User Errors and System Errors are listed as Compiler Errors, since they do not usually occur at runtime. Others are listed as Obsolete Errors, since they should not occur in Visual DataFlex.

The error ranges following the Runtime Error Message sections are the error numbers associated with the error messages. For example, user error 16 is error message "Please enter a valid date."

Error Message Listing

The Error Messages books list each error number and its message. In addition, it lists all known possible causes and resolutions for the error, as well as examples where they are relevant.

If there is more than one possible cause for an error, the causes and resolutions are listed as a numbered list, with a matching cause and resolution having the same number.

Example

Cause

1. Cause 1

2. Cause 2

Resolution

1. This is resolution for cause 1

2. This is resolution for cause 2