Lists the Engine error messages from X000 through X049.
Restriction:This topic applies to Windows environments only.
X001: Cannot perform operation (errornum) on file filename. An attempt to close/open/read/write/seek on the file specified failed. File mode may conflict. Device may be full or damaged,
or file may not exist. Also, make sure that your temporary path is set to an existing path.
X002: Empty query string. An attempt was made to execute a command that was discovered to be an empty string. You may have accidentally pressed an execute
option before issuing a command. You may have used an empty (NULL) string as the input for a PREPARE command, or for an xcommand()
or xprepare() function.
X003: INI Error errmsg The error message returned can be any of the messages listed under Possible Error Messages below. Each possible error message is followed by a typical XDBNET.INI file error that could have caused the error message.
The following notation definitions apply for each possible error message:
X004: Number value overflow. An attempt was made to place a value that is too large or too small into a numeric field (float, int, smallint, etc.). See
XDB Server Specifications in the SQL Reference for maximum and minimum values permitted in numeric data types. Check picture specifications.
X005: Date value error. An attempt was made to place an illegal date in a date field or attempt to perform date arithmetic on an invalid date. XDB
Server performs leap year checking, and verifies that month and day are correct. Check picture specifications.
X006: String constant too long. String constants selected in a query may be up to 4056 characters long. Varchar and long varchar columns can be longer, so
you could store a longer value in a table and retrieve it.
X007: Incomplete string. Check for missing quotes. A quote without a matching quote was found in a command sent to the SQL Engine. You may use either single or double quotes
around character strings. If a single quote is to appear within a string, surround the string with double quotes. For example:
X009: Illegal field name name. A reference was made to a field that does not exist in the table specified by a command. If using a precompiler to catch an
error at precompile time, then add VALIDATE directive in XDBCOB.DIR file. Make sure that all fields are defined in the declaration.
X010: No more RAM memory available. Insufficient memory (RAM) was available to execute a command sent to the SQL Engine. Try running the application from outside
the main menu or application menu to see if that gives you enough memory to continue.
X011: Type mismatch within expression. A data type conflict occurred within an expression. For example, you may have attempted to perform date arithmetic with a
character string.
X012: Type mismatch while doing comparison. An attempt was made to compare two incompatible data types. Numeric types may be compared to other numeric types (including,
for example, money and numeric results of date arithmetic or string functions); dates can only be compared to dates, character
strings to character strings, times to times.
X014: Set location can only be used for local locations. The system was unable to locate a table or view in the relational directory (.DDT file), or the table/view is not found in
the referenced query control block. In order to add a table or view to the relational directory you must create it using the
CREATE command. You can copy tables from one location to another using the COPY command. To include a table or view in a query
control block, you must include it in the FROM clause of a query.
X016: Undefined query identifier or location not open. An attempt was made to access a query control block that does not exist, or to run a command against an unopened location.
This error condition may occur if you prematurely close a query or (if using an application programming interface) if you
forget to open the location. Also a subroutine may have logged out, automatically closing the location.
X017: Illegal record position. An attempt was made to access a record at a location outside the result of the query. Typically this occurs when using the
application programming interface function xdirect() to move the cursor to a record that does not exist in the current table.
To find the position of a record, use the xgetpos() function. It is possible that the record has been modified since the position
was saved and re-execution of the query did not include the record in the new result set.
X018: Duplicate value in unique index name. An attempt was made to insert a duplicate value in a field on which a unique index or primary key exists. Possible fixes:
Check for a rollback file (.RB extension) and delete it; Delete all indices and rebuild them; Check if the data is wrapped;
Delete all files from temporary storage before transferring new data to the storage area.
X019: Query too long. The system was unable to allocate enough space to process the query. XDB Server uses dynamic allocation for this task, so
the length of query permitted depends on the amount of memory available. Reduce the length of the query, or remove unnecessary
programs from memory and try again. See X010 and X050.
X020: Syntax error. Last symbol read was string. The SQL Engine was unable to parse a command it was sent. When this error occurs, the system tries to display the last token
it read. Check the command syntax in the SQL Reference. Make sure that all products are using the same character set (ASCII, EBCDIC, etc.). If using the COBOL, look in the errmc
element of the SQLCA structure for the error tokens. SQLCA errd[4] contains the column position of the token. In CAPI, call
the function xgeterr() to get the error tokens.
X022: Too many queries open at same time. There is no room to open additional query control blocks. A user may open up to 50 queries at one time. The actual number
of queries open at one time depends on the complexity of the queries. Try rewriting your program so that it is not necessary
to hold so many queries open at the same time. In server versions, use the XDB Server Configuration utility to increase the
number of available query control blanks.
X024: Index Name has been damaged. The index specified cannot be used by the system. You must drop the index and rebuild it before continuing. NOTE: If you compact
a table with deleted records or use the AND INDEX clause, all indices are automatically rebuilt for you.
X025: Incomplete comment. Comments sent to the SQL Engine should begin with the characters /* and end with the characters */. The system found one comment
marker, but not the other.
X026: Exceeds max number of tables/views permitted in query. You may access up to 15 tables or views per FROM clause; the limit depends on the complexity of the query, as well as the
number of expressions and multi-table views involved. In addition, the number of queries already open may impact on the number
of tables allowed in a query.
X028: Cannot find table/view/synonym name. The table, view, or synonym specified does not have a readable entry in the database directory. You may have entered an incorrect
table name, or be in the incorrect database. The database directory (.DD? file) may have been damaged or overwritten. You
cannot simply copy a .TAB file to a database directory and then access it through XDB Server. You must use the CREATE or COPY
commands to create a table or move a table between databases.
X029: Invalid hex constant. The XDB Server cannot execute the current statement because it contains an invalid hex constant. For example, a closing quote
may be missing, or the hex value may contain an invalid character.
X030: Invalid field number. A low level CAPI function call (e.g. Xdbxgetrec or Xdbxputrec) to access a field failed; the specified field number does not
exist in the query.
X031: Cannot truncate log file. Unable to truncate the backward log file; cannot COMMIT or ROLLBACK. Check access privileges on the drive containing the database.
Run operating system program CHKDSK on the database drive. Use Options to turn the Backward Log OFF.
X038: Cannot acquire read/write access on specified path. Unable to read or write any files on a path the system has tried to access as result of a command you issued. If using a network
file server, check the current user's privileges. If using a multiuser system, make sure another user is not accessing the
file.
X039: Abort code. The system aborted the current operation upon receipt of an abort code. When you press Esc in most environments, programs
send an abort code to the SQL Engine, instructing it to terminate the transaction it is currently processing for you. A partial
result may be displayed in some modules. Incomplete transactions involving updates, inserts or deletes are rolled back if
the backward log is turned on. You can specify the abort characters through Options.
X041: Left side of expression incompatible with right side. The system is unable to compare the left hand side of an expression to the right hand side of the expression. This is generally
due to incompatible data types (e.g. comparing a time field to a date field).
X044: Invalid data type indicator. The SQL Engine received an invalid data type indicator from the calling program. This problem is generally due to a programming
error in user programs that use one of the language interfaces. Refer to interface documentation for valid data type indicators.
X047: Index name too long. An index name is currently limited to 18 characters in length, except when using mainframe syntax.
X048: Index name already exists. An attempt was made to create an index with the same name as an existing index in the current database. You can view index
names in the current database using the query:
X049: Duplicate name name in create index list. A field name can appear only once in a CREATE INDEX statement. When creating foreign keys, a field name can appear only once
in the indexed field list of a referenced table, and only once in the indexed field list of the referencing table.
X050: No more RAM available to REDIRECTOR. The network redirector (network communications) was unable to allocate the necessary memory required (either for packet transmission
or reception).