Friday, March 18, 2011

CA-CLIPPER INTERNAL ERRORS

The large number of potential CA-Clipper internal errors does not indicate weakness in the product. Instead it is a strength -- it shows that error checking has been written into the run-time libraries at every opportunity. In fact, these error messages don't usually indicate an internal fault in CA-Clipper, but are an indication that some problem in your source code or operating environment has been intercepted. This list includes version 5.2 and 5.3 errors, but is not exhaustive. The CA-Clipper newsgroup is the source of some of this information. Research continues!

0 Error System Integrity Error
1 Evaluation Stack Underflow
2 Memory Error
3 Memory Error
4 Memory Error
5 Memory Error
6 Buffer Error
7 Buffer Error
8 Buffer Error
9 Buffer Error
10 Too Many Nested BEGIN SEQUENCE/END Blocks
11 BEGIN SEQUENCE/END Integrity Error
12 Evaluation stack underflow after BEGIN SEQUENCE/END
14 SORT Error
15 SORT Error
16 Database Not Open
17 NTX File Corrupted
18 NTX File Corrupted
19 NTX File Corrupted
20 NDX File Key Type Error
21 NDX File Key Type Error
22 NTX File Key Type Error
24 Write Error
37 Too many symbols in symbol table
92 SORT/INDEX ON Error
331 String/Array buffer/memory overflow
332 String/Array memory overflow
335 String/Array invalid pointer
336 String/Array memory overflow
340 Too many Extend locks
415 Cannot open overlay file
416 Read error on dynamic page file (overlay)
520 Attempt to get value for an invalid field type.
521 Replacement of field with invalid data type.
612 EVAL() given something other than codeblock.
650 Out of stack space
666 C Function Attempt to Free Invalid Pointer
667 Eval stack crashed
668 Runtime error handler error (eval stack fault)
669 Cannot expand MEMVAR table (eval stack fault)
670 Memory initialization error
701 Unable to locate keyboard driver upon startup.
702 Keyboard driver I/O error upon startup
703 Unable to locate display driver upon startup
704 Screen display driver I/O error upon startup
705 Unable to determine disk drivetype upon startup
706 Disk drivetype I/O error upon startup
715 Printer not ready.
773 Dynamic overlay system not linked in.
998 Missing function
999 Attempt to execute invalid code
1010 Read/write in index page failed
1011 Read/write access in index page failed
1020 Record not found
1101 Maximum workareas exceeded
1102 Requested RDD not linked
1112 Read value larger than 64kb
1201 No master index in use
1202 Fatal runtime error
1210 Data and Index files out of sync
1240 Index key evaluation error
1242 Data type mismatch on key replacement
1255 Damaged index header
2155 Read error on index heading page
4001 Number of METHODs exceeded
4406 Temp file read error
4412 Indexing miscalculation
4414 Indexing miscalculation
4424 Temp file creation error
5003 Bad block index
5211 SWAPFILE creation error
5302 Conventional memory exhausted
5304 Conventional Memory Exhausted
5305 VM Swap Space Exhausted
5306 Conventional Memory Exhausted
5311 VMM Unable to Create Swap File
5312 VM Swap File Overallocated
5313 VMM Write Error on Swap File
5320 VMM IAMBS Manager Error
5321 VMM system unable to free EMS page
5333 Misuse of VM System
6003 Integer divide by 0
8002 Indexing error
8009 Unknown error
9001 Database RDD failed to load
9002 RDD invalid or not linked
9005 Unable to load database table
9006 DBFNTX RDD index buffer access error
9999 Invalid .EXE caused by RDD unavailable at startup
---- VM Integrity failure




0 Error System Integrity Error

The error system has encountered an unknown error. The probable cause is memory corruption.



1 Evaluation Stack Underflow

A stack error has occurred after a RETURN.
Action: Look for missing or additional RETURN statement.



2 Memory Error

A memory error has occurred before a RUN. The system has attempted to free the Run space to DOS, and DOS reported an error. The likely cause is corruption in the DOS memory allocation system.



3 Memory Error

A memory error has occurred after a RUN that prevents rebuilding of the buffer system. This occurs when the system tries to rebuild the Run space and there is less than 16K available from DOS.



4 Memory Error

A memory error has occurred corrupting an internal buffer system. This happens when an attempt is made to free an internal buffer, and it is already free.



5 Memory Error

A memory error has occurred corrupting the buffer and EMM system. This occurs when attempting to map an EMM memory block into conventional address space, and the EMM driver reports an error.



6 Buffer Error

This occurs when attempting to attach a buffer to a database and the database already has a buffer. The probable cause is memory corruption.



7 Buffer Error

This occurs when attempting to detach a database buffer from a database and there is no buffer to detach. The most probable cause is memory corruption.



8 Buffer Error

The system ran out of database and/or index buffer handles.


9 Buffer Error
The system ran out of memory when attempting to allocate a database and/or index buffer.

10 Too Many Nested BEGIN SEQUENCE/END Blocks

Too many nested BEGIN SEQUENCE/END blocks have been defined. The maximum is 16.
Note: The usual reason this occurs is a LOOP statement within a BEGIN SEQUENCE/END structure like the following:

DO WHILE 
...
BEGIN SEQUENCE
...
LOOP
END ...
ENDDO




11 BEGIN SEQUENCE/END Integrity Error

An underflow of BEGIN SEQUENCE stack has occurred. This only happens if there is a pending END without a BEGIN SEQUENCE.



12 Evaluation stack underflow after BEGIN SEQUENCE/END

Occurs after a BREAK.



14 SORT Error

The system ran out of memory during a SORT operation while attempting to allocate a database buffer.



15 SORT Error

Memory corruption has occurred during a SORT operation.



16 Database Not Open

This occurs at the end of a large block database operation (such as APPEND, JOIN, UPDATE, or TOTAL) and one of the database files used in the operation is no longer open.
Action: Check user-defined function used within the erroneous statement for any statements that close database files.



17 NTX File Corrupted

This occurs when an index buffer is found to be corrupted when attempting to update an index page.



18 NTX File Corrupted

This occurs when an index buffer is found to be corrupted when attempting to update an index page, and the index is UNIQUE.



19 NTX File Corrupted

This occurs when an index buffer is found to be corrupted when attempting to update an index page, and the index is non-UNIQUE. The index file can be "corrupted" by creating it while the table is opened in shared mode. Indexes should be created with the file opened exclusively.



20 NDX File Key Type Error

An evaluation of a key in an .NDX file does not result in a character or number. This can only occur if the key is a logical value.



21 NDX File Key Type Error

A SEEK expression evaluates to a different data type than the index expression.



22 NTX File Key Type Error

A SEEK expression in an .NTX file evaluates to a logical, or the system runs out of memory when evaluating the key expression.



24 Write Error

This error occurs when a CA-Clipper application is unable to write to a database file or to an index file.
Action: Check that sufficient disk space and directory entries are available. Make sure that the file is not marked read-only. In a network environment, make sure the application has the necessary rights to write to the file and all network connections are correct.
See Also: "Network Programming" chapter in the Programming and Utilities Guide.




37 Too many symbols in symbol table

This error occurs with an application linked with Exospace. The application will terminate immediately upon start up. This is caused by CODE GENERATORS that generate an excessive amount of symbols.
Action: Some suggestions to resolve the problem are:
1) Decrease that amount and/or reuse symbols, declare as local.
2) List .PRGs in .CLP files to compile fewer and larger .OBJ files.
3) Some visitors have reported that the problem went away after switching to Blinker or rebuilding the entire application and libraries
See Also: "Compiling" chapter in the Programming and Utilities Guide and the "CA-Clipper Technical Specifications" appendix.



92 SORT/INDEX ON Error

The system is unable to create a temporary file during a SORT or INDEX operation. This can occur for one of the following reasons:
1) No disk space;
2) Disk is write-protected;
3) No more directory entries; or
4) The file already exists and is read-only.
5) There are not enough file handles available.
6) If running under Windows 95, try using an updated network driver or client. Try switching between the Microsoft "Client for NetWare Networks" and the Novell client in the Network applet in the Control Panel. Check both the Microsoft and Novell websites for the latest updates and 32-bit clients.



331 String/Array buffer/memory overflow

In the worst case, this error will occur when slightly over a megabyte of strings and/or arrays are in use; the best case is in excess of 16 megabytes. Probably the most common cause of this error is the declaration of extremely large arrays (e.g., local aArray[500][300]). Every array element requires memory to store (even if its value is NIL). The number of array elements in an array is determined by multiplying the number of elements in every dimension and adding the sum of all dimensions except for the last. For example, a 500 by 300 array has (500 x 300) + 500, or 150,500 elements. As every array element in CA-Clipper requires 14 bytes, this amounts to 150,500 x 14 or 2,107,000 bytes -- well in excess of one megabyte and, therefore, potentially dangerous.
Action: Reduce the size and/or number of strings and arrays that are active at any one time. Declare as many string variables and arrays LOCAL as possible.
Note: There is no benefit gained by reusing arrays. CA-Clipper is much more efficient when strings and arrays are thrown away and rebuilt often rather than kept around unnecessarily for long periods.



332 String/Array memory overflow

The maximum capacity of the Segment Virtual Object Store (SVOS) system has been exceeded. Because of the dynamic nature of SVOS, it is impossible to state exactly when this error will occur (see the Release Notes database in Norton Guides, "5.x Notes" under "Runtime Memory Management"). In the worst case, this error will occur when slightly over a megabyte of strings and/or arrays are in use; the best case is in excess of 16 megabytes. Probably the most common cause of this error is the declaration of extremely large arrays (e.g., local aArray[500][300]). Every array element requires memory to store (even if its value is NIL). The number of array elements in an array is determined by multiplying the number of elements in every dimension and adding the sum of all dimensions except for the last. For example, a 500 by 300 array has (500 x 300) + 500, or 150,500, elements. As every array element in CA-Clipper requires 14 bytes, this amounts to 150,500 x 14, or 2,107,000 bytes -- well in excess of one megabyte and, therefore, potentially dangerous.
Action: Reduce the size and/or number of strings and arrays that are active at any one time. Declare as many string variables and arrays LOCAL as possible.
Note: There is no benefit gained by reusing arrays. CA-Clipper is much more efficient when strings and arrays are thrown away and rebuilt often rather than kept around unnecessarily for long durations.



335 String/Array invalid pointer

This results from an error accessing the memory address for a string value during an element assignment while declaring a large multidimensional array.
Action: Try declaring an empty array and then build the array using aadd(). Check string assignments for a NULL character.



336 String/Array memory overflow

This results from trying to a declare a large multidimensional array.
Action: Try declaring an empty array, and then build the array using aadd().



340 Too many Extend locks

This error has occurred in a CA-Clipper 5.2e application that uses the Faxual II fax library. The error might indicate that there is insufficient virtual memory for the needs of the program, or that there is not enough room to store the memory pointers.
Action: Increase the amount of virtual memory. Alternatively, increase available conventional memory or reduce the amount of virtual memory, because more VM means more conventional memory is needed to manage the VM pointers.



415 Cannot open overlay file

This error occurs when a CA-Clipper application cannot find or cannot open an overlay file. Overlay files include executable (.EXE) files (in the case of dynamic overlays), pre-linked library (.PLL) files, and static overlay (.OVL) files.
Action: Probably the most common cause of this error is insufficient file handles available to the CA-Clipper application. The first step in trying to solve this problem is to increase the number of file handles available to the application. Refer to "File and Buffers" section in the Runtime Environment chapter of the Programming and Utilities book.
If insufficient file handles is not the problem, it is possible that the CA-Clipper application cannot find the file it is trying to open. Refer to "Specifying the Location of Executable Files" section in the Runtime Environment chapter of the Programming and Utilities book. It is possible that another file of the same name as the executable is in the DOS path and is being searched for the overlay. Try renaming the executable.
The problem might involve specifying an object filename longer than 8 characters. The extra characters are ignored during file access, so the link works, but the EXE has the extra characters in its reference to itself for VMM and dynamic code swapping. When you run the application, it fails to load another part of itself because the internal file name is invalid.



416 Read error on dynamic page file (overlay)

This error indicates that the runtime manager could not READ from overlay.
Action: Some suggestions to resolve the problem are:
1) Make sure you are not deleting or using fclose() on any file handles that you did not specifically create.
2) If you are on a network, make sure that the server did not lock up. Also make sure that the workstation has not been disconnected. Check the validity of the network cards, cabling, drivers, etc.
3) Increase the number of file handles available to the application.
4) Check that the application's EXE drive and directory are still valid.
5) Make sure the .EXE is marked READONLY (the overlay manager always opens page files SHARED and READONLY).
6) Make sure there are no duplicates of the .EXE file available through any MAP, PATH, or SEARCH drive, in case the overlay manager is somehow getting hold of another file with the same name. Erase duplicate .EXE files.
7) Do not rename the .EXE. Recreate it with an alternative OUTPUT link command.



520 Attempt to get value for an invalid field type.

This error may indicate a corrupted or non CA-Clipper compatible database file.
Action: Repair the database header and field structure.



521 Replacement of field with invalid data type.

Self-explanatory.




612 EVAL() given something other than codeblock.

A data type other than a codeblock was supplied as the first argument to eval().
A common cause is linking in an old ERRORSYS.OBJ file from a Summer '87 application -- even if it was recompiled with 5.x. Check the source code for the correct calling conventions.
In a custom ERRORSYS procedure, not setting ERRORBLOCK() or committing an error prior to setting ERRORBLOCK() will force this error.



650 Out of stack space

This error is often the result of another error -- CA-Clipper encounters an error while it is trying to handle the first error.
Action: Some suggestions to resolve the problem are:
1) Use STACK or PROCEDURE DEPTH command to instruct the linker to increase the stack space at link time.
2) Check for recursion. Some modifications to the CA-Clipper ERRORSYS.PRG may cause a recursive call, which will exhaust the call stack.
3) Try using the default CA-Clipper ERRORSYS.PRG if the ERRORSYS.PRG was modified, in order to test for runaway recursion caused by an error occurring while attempting to handle an Error object.
4) Check for UDFs/.PRGs that have the same name as an internal CA-Clipper function.
5) Check for use of an incorrect or invalid version of the ERRORSYS.PRG. i.e., the Summer '87 CA-Clipper ERRORSYS.PRG does not use an Error object.



666 C Function Attempt to Free Invalid Pointer

Indicates that a C function attempted to free an invalid pointer.



667 Eval stack crashed

The evaluation stack (containing LOCAL variables, etc.) and/or MEMVAR table has grown too much and crashed into a locked VM segment in near memory. The system has run out of memory because the VM system only locks segments near the evaluation stack when the memory is very old.
Action: Some suggestions to resolve this problem are:
1) Decrease the STACK or PROCEDURE DEPTH setting for the linker.
2) Decrease the number of LOCAL, STATIC or PRIVATE variables in use at one time. i.e., use arrays instead of individual variables.
3) Decrease the number of ITEMS allocated if using ITEM.API of CA-Clipper.
4. Free more conventional memory for use by the VM System.
Note: There could also be an error in the runtime error handler.
See Also: Error 650.



668 Runtime error handler error (eval stack fault)

There could be an error in the runtime error handler. It is calling itself until the stack overflows.
The evaluation stack expanded into a locked VMM segment. The CA-Clipper VM System will use the DGROUP Free Space when conventional DOS memory is very low.
Action: Free up conventional DOS memory by reducing the application's load size and/or increasing free DOS memory as reported by DOS's MEM.EXE command.
See Also: Error 650.



669 Cannot expand MEMVAR table (eval stack fault)

The MEMVAR table expanded into a locked VM Segment. The CA-Clipper VM System will use the DGROUP free space when conventional DOS memory is low.
Action: Free up conventional DOS memory by reducing the application's load size and/or increasing free DOS memory as reported by DOS's MEM.EXE command.
Note: There could also be an error in the runtime error handler.
See Also: Error 650.



670 Memory initialization error

An error has occurred during the initialization or re-initialization of the memory system. This error usually indicates an extremely low memory condition at startup, or that an application that was RUN from within CA-Clipper allocated DOS memory without freeing it.
Action: If the error occurred at startup, more conventional memory should be made available for the application. If it occurred immediately following the RUN command, the application that was run should be eliminated to see if this solves the problem.
This problem may also occur with an improperly linked or corrupted application.



701 Unable to locate keyboard driver upon startup.

Check to see if the latest PLL link script file was used to build the PLL, that the latest libraries are used, and no third-party libraries are linked. Determine that the .EXE is not corrupted.



702 Keyboard driver I/O error upon startup

The keyboard detected was not compatible for I/O access.
Action: Make sure the latest CA-Clipper libraries are used, and that no third-party libraries are linked. Determine that the .EXE is not corrupted. Determine if the keyboard may be accessed from the DOS prompt.



703 Unable to locate display driver upon startup

Action: Make sure the latest CA-Clipper libraries are used, and that no third-party libraries are linked. Determine that the .EXE is not corrupted.



704 Screen display driver I/O error upon startup

The CRT detected was not compatible for I/O access.
Action: Make sure the latest CA-Clipper libraries are used, and that no third-party libraries are linked. Determine that the .EXE is not corrupted. Determine if the screen may be accessed from the DOS prompt.



705 Unable to determine disk drivetype upon startup

Action: Make sure the latest CA-Clipper libraries are used, and that no third-party libraries are linked. Determine that the .EXE is not corrupted.



706 Disk drivetype I/O error upon startup

The disk detected was not compatible for I/O access.
Action: Make sure the latest libraries are used, and that no third-party libraries are linked. Determine that the .EXE is not corrupted. Determine if the disk may be accessed from the DOS prompt.



715 Printer not ready.

Action: Make sure the latest libraries are used, and that no third-party libraries are linked. Determine that the link instructions are valid and the .EXE is not corrupted. Determine the printer may be accessed from the DOS prompt.



773 Dynamic overlay system not linked in.

This may indicate an invalid link line or a corrupted executable file. Action: Make sure the latest libraries are used. Determine that the link instructions are valid and the .EXE is not corrupted. Confirm that the memory configuration did not affect linking. Perhaps a third-party library (maybe written in C) contains functions that conflict with the ones in the memory manager.



998 Missing function

CA-Clipper has attempted to execute a function or UDF that is not recognized as valid CA-Clipper code. This error can occur if an attempt is made to execute code compiled with a new version of CA-Clipper under an older version, or because of a corrupted or invalid executable.
Action: Make sure that all code is compiled under the same version of CA-Clipper, and is being linked with the correct version of the libraries. If a third-party linker is used, see if the error occurs when using the real mode linker for CA-Clipper. If a corrupted executable is suspected, recompile all .OBJ files and relink. Declare UDFs or built-in functions that are hidden from the compiler (in macro or INDEXing commands) with REQUEST if they are not called elsewhere in the code. Link in missing .OBJs. Make sure all linker warnings and errors are resolved.



999 Attempt to execute invalid code

CA-Clipper has attempted to execute something that it doesn't recognize as valid CA-Clipper code. This error can occur if an attempt is made to execute code compiled with a new version of CA-Clipper under an older version, or because of a corrupted or invalid executable.
Make sure that all code is compiled under the same version of CA-Clipper, and is being linked with the correct version of the libraries. If a third-party linker is used, see if the error occurs when using RTlink for CA-Clipper or CA-Clipper/Exospace or Blinker.
If a corrupted executable is suspected, recompile all .OBJ files and relink.




1010 Read/write in index page failed

Action: Check for memory conflicts that could cause a corruption of the index buffer. Try disabling the EMS with the //E:0 in SET CLIPPER. If using third-party RDDs, try increasing the stack space. If using structural indexes (.CDX, .MDX), delete the index file and recreate.



1011 Read/write access in index page failed

CA-Clipper has attempted to read or write to an index page. This error can occur if a the stack has become corrupted or there is insufficient stack space. This may be due to a corrupted or invalid .EXE.
Action: Try increasing the STACK or PROCEDURE DEPTH. Check for memory conflicts that could cause a corruption of the index buffer. Try disabling the EMS with the //E:0 in SET CLIPPER. If using third-party RDDs, try increasing the stack space. If using structural indexes (.CDX, .MDX), delete the index file and recreate. Resolve all linker warnings and errors. Recompile all .OBJs and relink. Check all third party RDD version compatibility.



1020 Record not found

This error indicates one of the following conditions:
1) Invalid record number data type specified in DBGOTO();
2) Invalid field data type encountered when loading a field from disk to memory; or
3) Invalid field data type encountered when storing a field from memory to disk.
Action: Delete indices and recreate. Check for memory conflicts that could cause a corruption of the index buffer. Try disabling the EMS with the //E:0 in SET CLIPPER. If using third-party RDDs, try increasing the stack space. If using structural indexes (.CDX, .MDX), delete the index file and recreate.
Note: This error is applicable to the DBFNTX replaceable database driver (RDD), and may not be applicable to other RDDs.



1101 Maximum workareas exceeded

CA-Clipper supports 250 work areas. This error can be produced if this limit is exceeded. This usually indicates that an internal process tried to access a field which does not exist, or that an internal field structure is not valid for the work area. This means the runtime system is out of work areas for work area index strings.
Action: A good place to start looking is in the third-party RDD or any "in house" C/ASM code. Make sure the database driver was REQUESTed and linked. Check the .LIBrary link order.



1102 Requested RDD not linked

A database driver was specified, but that driver is not linked into the application.



1112 Read value larger than 64kb

A read of a variable with length larger than 64kb was attempted. The limit for character variables and memo fields is 64kb.
Action: This read error could indicate an index access failure indicating a bad FIELD type, i.e., INDEXing on a MEMO or large character field. Look into third-party RDD or any "in house" C/ASM code. Make sure the REQUESTed database driver was linked and check the .LIBrary link order.



1201 No master index in use

An operation, such as a SEEK, was performed in the work area but there was no master or controlling index order.
Action: Make sure that the index ORDER is not ZERO, or nullified, or that the current TAG (set with SET ORDER TO) was not deleted within a multi-tag index.



1202 Fatal runtime error

This error has occurred in a CA-Clipper 5.2e application linked with Blinker 3.30, CA-Tools, and SuperClass. It appeared suddenly, probably due to a configuration change. Its numbering in the 1200 series indicates that it is index related. Index corruption may have occurred.
Investigations are ongoing.
Action: Delete the index file(s) and re-create. Examine memory configuration for anomalies.



1210 Data and Index files out of sync

Database (DBF) files and index (NTX) files are out of sync. This usually happens when the database is updated without the index being open.
There have been reports of this error being caused by opening multiple index (*.ntx and *.ndx) files in varying order. It is a good idea to open all index files in the same order every time the database is opened.
Or there is a stack corruption or access problem related to the RDD loaded.
The error may occur after a record is updated and it is being unlocked.
Action: Some suggestions to resolve the problem are:
1) If the cause of this problem is that the database is being updated through a utility external to the application, simply recreate the index file and restart the application.
2) If the database was not updated outside of the application, check the code for the application to ensure that all indexes are open when updates are being done. Correct the code, recreate the index files, and restart the application.
3) Check that ALL index key expressions are a constant length. Usage of LTRIM(), RTRIM(), TRIM(), ALLTRIM(), STR(), and DTOC() can all produce expressions that are not a constant length. The TRIM() functions should all be padded out to a constant width using PADR().
4) Use all three arguments to STR().
5) Use DTOS() instead of DTOC() in index key expressions. DTOC() is dependent upon the SET DATE FORMAT.
Note: This error is applicable to the third party replaceable database drivers (RDDs), and may not be applicable to CA-Clipper RDDs. This may mean the stack was corrupted, preventing the application from accessing the RDD's index expression. Increase the STACK or PROCEDURE DEPTH. Look for missing or incorrectly ordered .LIBraries, or loading a mismatched RDD.
If using the DBFCDX driver that came with Clipper before 5.3 (i.e., the Successware/Luxent driver), get the latest version. The Successware driver requires a higher stack size. The official recommendation is 80, but a setting over 110 may eliminate the errors. Put BLINKER PROCEDURE DEPTH 110 in your link script if using Blinker.



1240 Index key evaluation error

An error occurred during index key calculation. This can also be caused by a corrupted header in the .DBF file can cause this. INDEX ON with an EVAL clause not returning a logical true (.T.) will also cause this error.
Action: Check the index key to ensure it is not on a logical field. Rebuild the .DBF file in the DBU utility, or with DBCREATE(), not COPY STRUCTURE, then append records.



1242 Data type mismatch on key replacement

An attempt was made to replace a key field in the database with an invalid data type. Indexing on a logical field may also cause this error.
Action: Test the index keys and the replacement values in the debugger.



1255 Damaged index header

This is caused by an index key expression greater than 255 characters.
Action: Recreate the index file, not exceeding the key expression limit.
See Also: "CA-Clipper Technical Specifications" appendix, check third party documentation.



2155 Read error on index heading page

A read error occurred when reading the heading page of the index file, or the header did not contain the .NTX signature, or the macro compiler returned a syntax error when attempting to compile the key expression.
Also, the file may be open in another area. If one work area creates an index, then another work area tries to open that newly created index, you can get this error.
Action: Recreate the index file and check the key expression. Make sure the database header is updated before index recreation.



4001 Number of METHODs exceeded

An error occurred when accessing more than 32 methods for an instantiation of a class object at runtime.
Action: CA-Clipper allows no more than 32 methods for any class object at runtime. Check for third party Class .LIBraries and creation of new methods for additional classes. A typographical error or using the SEND operator may mistakenly cause identification of an erroneous method.



4406 Temp file read error

An error occurred when reading from a temporary file. This error is most likely to occur when the disk where the temporary files are written is full.
Action: Free up the necessary space on the drive for the temporary file, or redirect the temporary file to a different drive via the TEMPPATH option of the CLIPPER environment variable. Check file ownership and rights if on a network.



4412 Indexing miscalculation

This error occurs during indexing if there has been a miscalculation of how indexing should occur.
Action: Some suggestions to resolve the problem are:
1) Try increasing available conventional memory for indexing operation.
2) Try indexing using a small test program.
3) Test recreating the index with one more or one less database record.
4) Test recreating the index with one more or one less byte in the key expression.
5) Test adding CHR(0) to the key.
6) Test with the E:0 parameter in the SET CLIPPER environment variable.
This error may be a "magic number" type of error. It's possible that this error will disappear if more or less records are present in the database. Thus, suggestions 3, 4, and 5 attempt to alter the length of the file.
Note: LEN(CHR(0)) is one byte, LEN("") is 0 bytes. Test with combinations of the above suggestions.
See Also: "The Runtime Environment" chapter of the Programming and Utilities Guide.



4414 Indexing miscalculation

This error occurs during indexing or sorting if there has been a miscalculation of how indexing should occur. It will occur if the free conventional memory is insufficient to contain the .DBF record information. It usually occurs when indexing or sorting long field length .DBF files because there is not enough memory to contain the information for the record.
Action: Some suggestions to resolve the problem are:
1) Increase available conventional memory for indexing or sorting operation.
2) Try a protected mode version of application.
This error may be a "magic number" type of error. It's possible that this error will disappear if more or less records are present in the database.
See Also: Error 4412.



4424 Temp file creation error

An error occurred when creating temporary file for indexing or sorting. This error can occur for several reasons: insufficient file handles, an invalid TEMPPATH or insufficient network rights for the directory where temporary files are created. Note that temporary files are created in the current directory if no TEMPPATH is specified.
Action: Correct the environment. If insufficient network rights is the problem, either give the user the necessary rights, or redirect the temporary file to a more appropriate directory.
See Also: "The Runtime Environment" chapter of the Programming and Utilities Guide.



5003 Bad block index

This error has occurred in a CA-Clipper 5.3b application which was compiled with Exospace. Random crashes occur under Dos 6.22 on machines with 8MB of RAM and HIGHMEM.SYS loaded.
This error might be due to corruption of the VM (Virtual Memory) system by bad memory chips or conflicting software drivers. The error message could be interpreted as "the table (index) that manages blocks of virtual memory has gone bad".
Investigations are ongoing.
Action: Try using:
SET CLIPPER=//BADCACHE



5211 SWAPFILE creation error

The virtual memory (VM) subsystem is unable to create a swap file on disk.
See Also: Error 5311, "The Runtime Environment" chapter of the Programming and Utilities Guide.



5302 Conventional memory exhausted

This is an "out of memory" message that indicates that the CA-Clipper application no longer has sufficient conventional memory (below 640K) available to continue.
Specifically, this error occurs when the virtual memory system attempts and fails to bring a VM segment into conventional memory that had been swapped out to disk or expanded memory.
Action: Make more conventional memory available to the VM system. This can be done in several ways:
1) Increase the amount of conventional memory available before running the application -- remove TSRs, make use of 386 memory manager, etc.
2) Use a third-party linker that can dynamically overlay C and assembly-language code. C and ASM are not automatically overlaid by RTlink and therefore sit in conventional memory throughout the execution of the application.
3) Ensure that any C or ASM code in use is making use of the virtual memory system if it is doing dynamic memory allocation. Any memory allocated using the Fixed Memory Allocator functions _xalloc() and _xgrab() reduces the amount of conventional memory available if it is not immediately freed.
See Also: "VM API" chapter of the Technical Reference Guide.



5304 Conventional Memory Exhausted

This is an "out of memory" message that indicates that the CA-Clipper application no longer has sufficient conventional memory available to continue.
Specifically, this error occurs when a function attempts to allocate conventional memory and fails. This error can be received as a result of the failure of _xgrab() in Extend System functions.
Action: See action for 5302.



5305 VM Swap Space Exhausted

There is insufficient room in the VM swap area in real memory to load virtualized data. This only occurs in the undocumented internal function _vmTwo(). The CA-Clipper runtime issues calls to the _vmTwo() function when it must obtain two de-referenced virtual memory handles concurrently. Typically, _vmTwo() is useful for string operations such as copy or comparison.
See Also: Error 5302, "VM API" chapter of the Technical Reference Guide.



5306 Conventional Memory Exhausted

This is an "out of memory" message that indicates that the CA-Clipper application no longer has sufficient conventional memory available to continue.
Specifically, this error occurs when the virtual memory system attempts and fails to bring a VM segment into conventional memory that has been swapped out to disk or expanded memory.
Action: See action for 5302.



5311 VMM Unable to Create Swap File

The virtual memory (VM) subsystem is unable to create a swap file on disk. This occurs for several reasons, including:
1) The target disk is full;
2) The target directory is full;
3) Insufficient file handles are available;
4) An invalid path is specified in the SWAPPATH parameter of the CLIPPER environment variable, or on the command line used to start the application; or
5) The user has insufficient rights on a network drive to create the file. Without a SWAPPATH variable, the current directory will be used. This may be a network directory if the application is started from a network.
See Also: "The Runtime Environment" chapter of the Programming and Utilities Guide.



5312 VM Swap File Overallocated

This is an "out of memory" message that indicates that the CA-Clipper application no longer has sufficient virtual memory available to continue.
Specifically, this error occurs when the virtual memory system needs to swap a virtual memory segment out of conventional memory, and it has used all expanded memory and disk space that has been made available to it.
Action: Make more virtual memory available to the application. This can be done by making more expanded memory available by increasing the E setting of the CLIPPER environment variable, or by making more disk space available by increasing the SWAPK setting of the CLIPPER environment variable.
This problem can also be resolved by reducing the size and/or number of strings and arrays that are active at any one time. Probably, the most common cause of this error is the declaration of extremely large arrays (e.g., local aArray[4096][4096]). Note that every array element requires memory to store (even if its value is NIL) and that the number of array elements in an array is determined by multiplying the number of elements in every dimension and adding the sum of all dimensions except for the last. For example, a 4096 by 4096 array has (4096x4096)+4096 or 16,781,312 elements.
Because every array element in CA-Clipper requires 14 bytes, this amounts to 16,781,312x14, or 234,938,368 bytes -- well in excess of the theoretical capacity of the virtual memory system.
Note: There is no benefit gained by reusing arrays. CA-Clipper is much more efficient when strings and arrays are thrown away and rebuilt often rather than kept around unnecessarily for long durations.



5313 VMM Write Error on Swap File

Write errors typically occur for one of the following reasons:
1) Disk full;
2) Bad sector encountered; or
3) The swap file was deleted by another process within a multitasking environment on a workstation in which the SHARE utility has not been loaded.
See Also: Error 5311, "The Runtime Environment" chapter of the Programming and Utilities Guide.



5320 VMM IAMBS Manager Error

IAMBS manager is unable to provide more memory, or it encountered an error. Usually associated with indexing or sorting problems.
Possibly the VMM has tried to map an EMS page when no EMS is available or the EMS manager has returned an error code.
The documentation for the SIx Driver RDD states that an internal error 5320 will be generated by CA-Clipper when you set the Mach SIx temporary file path to invalid drive or directory. This might apply to other RDDs as well.
Action: Make more conventional memory available to the VM system and test with a clean environment after a cold boot.
See Also: Error 5302, "The Runtime Environment" chapter of the Programming and Utilities Guide.



5321 VMM system unable to free EMS page

An error occurred during deallocating EMS page frames.
Action: Some suggestions to resolve the problem are:
1) Use the SET CLIPPER=//BADCACHE and/or unload TSRs and device drivers from the upper memory area.
2) Try a clean boot with a basic CONFIG.SYS and AUTOEXEC.BAT. To find the conflict, add TSRs/device drivers back in until the problem recurs.
See Also: Error 5302, "The Runtime Environment" chapter of the Programming and Utilities Guide.



5333 Misuse of VM System

This error occurs when there is a misuse of the virtual memory system by either an internal or external (third-party) subsystem.
The following suggestions may eliminate the problem:
1) Check to see if the user is assigning an incorrect data type to a IAMBS or GET instance variable. This is a known cause for this error.
2) If the user is using any third-party libraries, see if the error still occurs without the library.
3) If the user is using a third-party linker, see if the problem occurs with .RTlink.




6003 Integer divide by 0

This error has occurred on "fast" machines with 200MHz MMX Intel processors, AMD and Cyrix processors, and/or 100Mbit network cards. Error 6001 may also occur. The error is due to timing loops running too quickly.
Action: Get the patch at "The Oasis" (http://www.the-oasis.net/). The file you need is http://www.the-oasis.net/files/patch/r6003fix.zip



8002 Indexing error

While indexing, ordcreate(0) internal error 8002 may appear. It seems to appear mostly with CA-Clipper 5.3 programs linked with ExoSpace and running under Windows 95, although it has also been reported under Windows 3.1, and with CA-Clipper 5.2e and 5.01, and linked with Blinker. Typically, the error occurs on "larger" files (e.g. >10MB or 80,000 records), although that is not always the case.
It has been reported that the 8002 error occurs unders the German version of CA-Clipper 5.3a during a section of code that opens and closes many tables repeatedly.
When the error occurs with a Blinker-linked program under Win95, the program terminates with an Windows exception error. With an ExoSpace-linked program the 8002 error appears.
The ExoSpace link option "EXOSPACE PACKAGE NOVM" disables the VMM system so that when Clipper uses up all available physical memory it will cause either error 8002 or "Conventional memory exhausted". It is not recommended for normal applications, although it may be appropriate for installation programs. Blinker has a similar link option available.
Internal error 8002 may also be caused by an error in custom C or ASM code which allocates memory and then does not release it properly.
The Windows memory system may interfere with CA-Clipper's Virtual Memory Manager, causing the error. It is not known whether the problem is limited to the DBFNTX RDD, or occurs in other (all) RDDs.
Action: Try one or more of the following:
1) Try increasing the available Virtual Memory to the CA-Clipper programs. Include in the SET CLIPPER environment variable the option:
//VMSIZE:16834
For example:
set CLIPPER=//F:99 //VMSIZE:16834
Try using different (smaller) values for //VMSIZE. The //F:99 value is just an example - you may have something different.
2) The program may need more stack space. You can adjust the amount of stack space with the following:
In RTLINK: add /STACK:sizeBytes
In BLINKER: add STACK sizeBytes
The default value of sizeBytes is around 5000. Try increasing it to 8192.
3) Use the OPTEDIT program with the EXTRAMIN switch. The Option Editor, OPTEDIT.EXE, is a utility that allows you to change the behavior of your CA-Clipper applications which have been linked using ExoSpace.
EXTRAMIN values of 4096 and 8000 have been reported as successful. To reserve 4MB of memory:
OPTEDIT appname -EXTRAMIN 4096
The OPTEDIT program can be found on The Oasis at: http://www.the-oasis.net/files/patch/ca_clipper_mirror/opt_53.zip
4) An ExoSpace application can run out of virtual memory if Windows runs out of virtual memory. Try increasing the maximum size of the Windows swap file.



8009 Unknown error

This error has been reported in an application that uses the FiveWin library, while attempting to open a file. No other details are known at this time.
Investigations are ongoing.
See Also: Some of the techniques in solving Error 8002 may help.



9001 Database RDD failed to load

The runtime system has failed to detect an RDD loaded in an application that requires one.
Action: Refer to Actions and Notes under Error 999 and Error 1011. Check third party .LIBraries for compatibility and version. Check link script and order. Look for missing RDD .LIBrary or .OBJ files. The .EXE may be invalid.
See Also: "Linking" and "Debugger" chapters of the Programming and Utilities Guide.



9002 RDD invalid or not linked

The runtime system has failed to detect a matching RDD loaded for the database and indices used in the application.
Action: Make sure the database header is correct. Recreate the indices. Refer to Actions and Notes under Error 999 and Error 1011. Check third party .LIBraries for compatibility and version. Check link script and order. Look for missing RDD .LIBrary or .OBJ files. The .EXE may be invalid.
See Also: "Linking" and "Debugger" chapters of the Programming and Utilities Guide.



9005 Unable to load database table

The runtime system has failed to load the database table for use with an RDD, or the RDD failed to load or is unavailable.
Action: Use a utility to test the database header integrity. Refer to Actions and Notes under Error 999 and Error 1011. Check third party .LIBraries for compatibility and version. Check link script and order. Look for missing RDD .LIBrary or .OBJ files. The .EXE may be invalid.
See Also: "Linking" and "Debugger" chapters of the Programming and Utilities Guide.



9006 DBFNTX RDD index buffer access error

The runtime system has failed to detect an RDD loaded in an application that requires one.
Action: Check third party .LIBraries for compatibility and version. Check link script and order. Look for missing RDD .LIBrary or .OBJ files. The .EXE may be invalid.
See Also: Error 999, Error 1011, "Linking" and "Debugger" chapters of the Programming and Utilities Guide.



9999 Invalid .EXE caused by RDD unavailable at startup

The runtime system has failed to detect an RDD loaded in an application that requires one.
Action: Check third party .LIBraries for compatibility and version. Check link script and order. Look for missing RDD .LIBrary or .OBJ files. The .EXE may be invalid.
See Also: Error 999, Error 1011, "Linking" and "Debugger" chapters of the Programming and Utilities Guide.



---- VM Integrity failure

This error indicates a misuse of the VM System has occurred by either an internal or external (third-party) subsystem.
Action: Test the following suggestions to help eliminate the problem:
1) Check for memory conflicts that could result in virtual memory corruption.
2) Check for incorrect data type passed to the IAMBS (VMM) or a GET instance variable.
3) Check third party .LIBraries for compatibility and version.
4) Test using a simple .LNK script to create the .EXE.
5) Resolve 100% of all warnings and errors occurring at link time. Link with VERBOSE while redirecting to an error output file.
6) Attempt to extract a test without using built-in, add-on, or third party .LIBrary functions, and see if the error still occurs.
7) Create a protected mode version of the application linking with MAP S, N, A. Identify the runtime address reported by comparing it with the named module for the most closely matched address listed in the .MAP file.
See Also: Error 999, Error 5302, "Linking" and "Debugger" chapters of the Programming and Utilities Guide, "VM API" in the Technical Reference Guide

0 comments:

Post a Comment