IBM Informix Messages and Corrections.     Publication Date: November, 2015
Version 2015.11                            Message Range: 99999 - 99999
#  END OF VERSION INFORMATION


0	Success.

The operation succeeded. The database server returns this SQLCODE value
to an application when an SQL statement executes successfully.


100	No matching records found.

The database server did not find any more data. This message is an ANSI-
standard SQLCODE value. If you attempted to select or fetch data, you
encountered the end of the data, or no data matched the criteria in the
WHERE clause. Check for an empty table. Use this SQLCODE value to determine
when a statement reaches the end of the data. For more information, see the
discussion of SQLCODE in the IBM Informix ESQL/C Programmer's Manual. The
database server can return this SQLCODE value to a running program.

For the High-Performance Loader (HPL), this message can indicate that the
map might be from a project other than the default project. Use the -p option
in the onpload command line to provide a project name for mappings.


1203	Cannot find message file.

DataExtract cannot locate a needed message file. Check that you
specified the appropriate pathname when you set the INFORMIXDIR and
DBLANG environment variables. Contact your system administrator if you
need help setting these environment variables.


1204	Your system encountered an unknown type of terminal.

Check that you set the TERM environment variable correctly. Check the
database name for correct spelling. Contact your system administrator
if you need help setting the environment variable.


2005	Database database-name not found or not correct format.

Check the database name for correct spelling.


2008	The table table-name does not exist in the database.

The database that is specified in the DATABASE section does not contain
the table name that is included in the TABLE section of the form
specification file. Check the table name for correct spelling.


2009	You did not select any database tables.

You must include one or more table names in the TABLES section of the
form-specification file.


2020	The following tables are involved in an error: table-name.

Check the accompanying message for an indication of system action. The
specified error involves the indicated tables.


4074	Cannot find a C language compiler in any directory in your path.

For this 4GL compiler message, you need a C compiler to finish
compiling your program. Change your execution path so that a C compiler
can be executed under the name cc.


4102	See error number -number.

For this 4GL compiler message, look up the message for -number.


4150	Program error at module, line number line.

The indicated line contains incorrect code that generated this 4GL
runtime message. Sometimes the actual error or omission exists in the
preceding lines of code. Look for additional messages that explain the
error.


4152	FORMS statement error number -number.

For this 4GL runtime error, check the message for -number.


4153	SQL statement error number -number.

For this 4GL runtime error, check the message for -number.


4154	Program stopped at module, line number line.

This 4GL runtime message tells where a program stopped due to an
error. Look for additional messages that explain the error.


4155	4GL run-time error number -number.

For this 4GL runtime error, check the message for -number.


4156	ISAM error number -number.

For this 4GL runtime error, check the message for -number.


4157	SYSTEM error number -number.

For this 4GL runtime error, check the message for -number.


8009	See error number errno.

Check the accompanying message for an indication of system action. Use
the finderr utility to locate the indicated error message.


12750	db <database_name>, tabid <table_identifier>: Must alter raw
table to standard.

Raw (nonlogging) tables exist in the database server that you are trying
to revert to a previous version. Earlier versions of the database server
do not support raw tables.

To change the logging TYPE option of each table from RAW to STANDARD, use
the ALTER TABLE statement. After altering the tables to STANDARD, you
can revert the database server.


16755	oninit: VPCLASS VPCLASS_name duplicate class name.

The VPCLASS parameter in the onconfig file has a duplicate name. The
VPCLASS name must be unique. Correct the onconfig file and restart
oninit.


16872	Logical Recovery Complete - no log replay was necessary.

During restore, the database server determined that none of the dbspaces
involved had any logging activity since they were backed up.  
You do not need to look through log backups on tape because nothing
would be found.

You do not need to take any action.


16888	Logslice successfully altered by adding logs.

Logical logs were added to all new dbspaces in the altered dbslice.

Perform a level-0 backup or fake backup to enable the new 
logical logs.


16889	Dbslice successfully altered by adding dbspaces.

Dbspaces were added to all named coservers.

You do not need to take any action.


19568	oninit: Too many VPCLASS parameters specified.

Too many VPCLASS parameter lines exist in the onconfig file. Reduce
the number of VPCLASS lines and restart oninit.


19569	oninit: VPCLASS VPCLASS_name bad affinity specification.

The affinity specification for the VPCLASS line is incorrect. Affinity
is specified as a range where x is less than or equal to z, and both x
and z are greater than zero.

x: use processor x

x - z: use processors in the range x to z inclusive


19570	oninit: Cannot mix VPCLASS cpu and NUMCPUVPS, SINGLE_CPU_VP,
AFF_SPROC, AFF_NPROCS, or NOAGE parameters.

CPU VPs can be configured using either VPCLASS CPU or the old
parameters NUMCPUVPS and so on. However, CPU VPs cannot be configured
by mixing both formats.


19571	oninit: Cannot mix VPCLASS aio and NUMAIOVPS parameters.

AIO VPs can be configured with VPCLASS AIO or the old parameter
NUMAIOVPS. However, AIO VPs cannot be configured with both formats.


19572	oninit: VPCLASS VPCLASS_name number of VPs is out of the range 0
to 10000.

The initial number of VPs specified by a VPCLASS parameter line must be
in the range 0 to 10,000. Correct the onconfig file and restart
oninit.


19573	oninit: VPCLASS VPCLASS_name maximum number of VPs is out of the
range 1-10000.

The maximum number of VPs specified by a VPCLASS parameter line must be
in the range 0 to 10,000. Correct the onconfig file and restart
oninit.


19574	oninit: VPCLASS VPCLASS_name number of VPs is greater than the
maximum specified.

The initial number of VPs specified by a VPCLASS parameter is greater
than the maximum specified by the same VPCLASS parameter. Correct the
onconfig file and restart oninit.


19575	oninit: VPCLASS VPCLASS_name bad scheduler specification.

One of the options for a VPCLASS parameter is illegal. Check your
Administrator's Guide for legal values. Correct the onconfig file and
restart oninit.


19750	Invalid serial number. Consult your installation guide.

This RSAM error message indicates an incorrect serial number.


19812	Illegal use of replication shadow columns.

The specified operation cannot be performed on the replication shadow
columns while replication is enabled.


19813	Cannot add CRCOLS when the table already has replication shadow columns.

The specified table was created with the WITH CRCOLS clause and
therefore already has the replication shadow columns defined. You
cannot alter this table to add CRCOLS to it.


19814	Cannot drop CRCOLS when table does not have replication shadow columns.

The specified table was not created with the WITH CRCOLS clause, or it
has not been altered to include the CRCOLS. You cannot alter this table
and drop the CRCOLS because these columns do not exist on this table.


19815	Cannot create a temp table with CRCOLS.

You cannot create a temporary table to include the replication shadow
columns. If you did not intend to name a temporary table, check the
spelling of the table name.


19816	Cannot perform this operation on a table defined for replication.

The specified operation cannot be performed on a table if Enterprise
Replication is defined on the table. If you want to perform the specified
operation, you must delete all replicates defined on this table.

If the table is being captured using the Change Data Capture interface,
then you must use CDC API functions to stop data capture and disable 
full row logging on the table.

19989	Enterprise Replication is not in active state

The specified operation cannot be performed on a table defined for
replication if Enterprise replication is not in active state.
If you want to perform the specified operation, you must start Enterprise
Replication.

19991	Table is not in Enterprise Replication alter mode

The specified operation cannot be performed on a table defined for
replication if the table is not in Enterprise Replication alter mode.
If you want to perform the specified operation, you must put the table
in Enterprise Replication alter mode.

19992	Cannot perform insert/delete/update operations on a replicated table while the table is in alter mode

The specified operation cannot be performed on a table defined for
replication if the table is in Enterprise Replication alter mode.
If you want to perform the specified operation, you must unset the
Enterprise Replication alter mode.

19993	Cannot modify a replicated column

The specified operation cannot be performed on a table defined for
replication. If you want to perform the specified operation,
you must remove the column from the replicate definition, alter the column
then add the column again to the replicate definition through
Enterprise Replication remastering process.

19994	Cannot drop a replicated column while the column is part of replicate definition

The specified operation cannot be performed on a table defined for
replication. If you want to perform the specified operation,
you must remove the column from the replicate definition through
Enterprise Replication remastering process.

19995	Enterprise Replication error encountered while setting alter mode. See the message log file to get the Enterprise Replication error code.

Enterprise Replication error encountered while performing the
specified operation. See the message log file to get the
Enterprise replication error code. If you want to perform the
specified operation, correct the Enterprise Replication problem
and reattempt the operation.

19996	Enterprise Replication error encountered while unsetting alter mode. See message log file to get the Enterprise Replication error code

Enterprise Replication error encountered while performing the
specified operation. See the message log file to get the
Enterprise replication error code. Correct the problem and clear
the alter mode manually through cdr command line utility.


19820	Informix OUTER JOIN and ANSI JOIN in the same query block.

You cannot have Informix OUTER JOIN and ANSI JOIN in the same query
block. Informix OUTER JOIN and ANSI JOIN are two different mechanisms
and should not be combined in a single query. You can use only one of
these.


19821	Cannot rename a table using a synonym.

You cannot use a synonym to perform a rename operation. Specify
the <table-name> instead.

To rename the synonym, drop the existing synonym and create a new one.


19822	Cannot alter or truncate a table or drop a table or view using a synonym.

You cannot use a synonym to perform an alter or truncate or drop on a table or a view.
Specify the <table-name> or <view-name> instead.

To drop the table or view or alter or truncate the table using the synonym, 
unset the environment variable USETABLENAME.

To drop the synonym and not the table or view, specify 
DROP SYNONYM <synonym-name> instead.


19823	Cannot use EXECUTE PROCEDURE INTO with the INSTEAD OF trigger.

You cannot use EXECUTE PROCEDURE INTO with the INSTEAD OF trigger.


19824	Cannot use BEFORE or AFTER action with the INSTEAD OF trigger.

You cannot use the BEFORE or AFTER actions with the INSTEAD OF trigger.  You
must use the FOR EACH ROW action with the INSTEAD OF trigger.


19825	Cannot use WHEN clause if INSTEAD OF trigger is defined.

You cannot use the WHEN clause to restrict the triggered action in 
INSTEAD OF trigger definitions.  The action of the triggering statement 
is always replaced by the specified triggered action on the base table 
(or tables) of the view on which the INSTEAD OF trigger is defined.

19826	Cannot create INSTEAD OF trigger for a select event.

You can create an INSTEAD OF trigger for an insert, update, or delete
event, but not for a select event.


19827	Cannot create an INSTEAD OF trigger on a table.

You can only create an INSTEAD OF trigger on a view, not on a base
table or synonym.


21957	Invalid block size.

You have specified inadequate block size for the tape device in your
onload or onunload command. Make the block size larger than the size
(in kilobytes) that the accompanying error message indicates. The
onload and onunload utilities require a block-size parameter with a
minimum value of 4 for 2-kilobyte-page computers or 8 for
4-kilobyte-page computers.


25500	The sqlexecd daemon is not licensed for remote use.

You entered an incorrect serial number or serial-number key while you
were running the IBM Informix client/server product installation script.
Obtain the proper serial number and key and reinstall your IBM Informix
client/server product.


25501	You must log in as root to start the sqlexecd daemon.

Log in as root and start the sqlexecd daemon process.


25502	The sqlexecd daemon cannot execute the fork system call.

Contact your system administrator to solve system problems.


25503	Informix network features not supported on this product.

The sqlexecd daemon does not support your network connections. Check
that you specified the correct database or database server in the
DBPATH environment variable. Consult your system administrator about
IBM Informix NET licensing issues.


25504	The sqlexecd daemon cannot open a socket.

Check that you correctly installed the TCP/IP network. Check for
malfunctions in the TCP/IP network.


25505	The sqlexecd daemon cannot bind a name to the socket.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25506	The sqlexecd daemon cannot accept a connection on the socket.

Check that you correctly installed the TCP/IP network. Check for
malfunctions in the TCP/IP network.


-25507	You specified an unknown service name or protocol.

Determine which of the following conditions produced this error and take the 
appropriate corrective actions:

The value of the NETTYPE configuration parameter in the ONCONFIG file is not 
the same as the NETTYPE setting in the sqlhosts file. If the NETTYPE values 
are different, correct the incorrect value. If you update the ONCONFIG file, 
you must restart the database server.

The correct service name is not in the /etc/services file. If you are using the TCP/IP protocol, check the /etc/services file. If you are using NFS, use the 
ypmake utility to check the /etc/services file. Sometimes the daemon does not 
recognize service names that are added after a default start-up. Add the 
correct service name if it is not present or restart your computer.

The protocol entry in the ONCONFIG file or sqlhosts file is not supported by 
the operating system on your computer. For information about supported 
protocols, see the connectivity information section in the Administrator's 
Guide or the Client SDK release notes in the INFORMIXDIR/release directory. 
Correct the protocol entry in the ONCONFIG file or the sqlhosts file. If you 
update the ONCONFIG file, you must restart the database server.


25510	execv could not start the database engine <server-name>, system
errno <error number>.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25511	The sqlexecd daemon could not receive data from client.

Check that you correctly installed the TCP/IP network. Check for
malfunctions in the TCP/IP network.


25512	Cannot access the database server program.

Check that you can access the requested database server program.


25514	The sqlexecd daemon cannot open the log file.

Check that you can write to the requested log file.


25515	You passed too many arguments to the sqlexecd daemon.

Refer to your IBM Informix product manuals. Check the version information
that is associated with your IBM Informix client/server products to verify
compatibility between those products.


25518	You specified an unknown network type in DBNETTYPE.  Assuming STARLAN.

If your network supports STARLAN connections, set the DBNETTYPE
environment variable to starlan. If your network supports TCP/IP
connections, set the DBNETTYPE environment variable to tcp/ip. IBM Informix
Version 6.0 and later database servers do not use this message.


25519	The sqlexecd daemon cannot open the network device.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25520	The sqlexecd daemon cannot allocate the call structure.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25521	The sqlexecd daemon cannot allocate the return structure.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25522	The sqlexecd daemon cannot allocate the call structure.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25523	The sqlexecd daemon cannot bind the network structures.

The sqlexecd daemon process attempted to use the same service number
that is allocated to another running process. Check that the system
administrator does not need to use the running sqlexecd process, and
then stop the sqlexecd process, and start a new one. Or add a new entry 
to the /etc/services file, and start a daemon for the service using the
new service number. For more information, refer to your system manual.


25526	The sqlexecd daemon cannot listen on the network device.

Enter your request again. If the problem persists, run your network
diagnostics to determine the source of the problem.


25528	The sqlexecd daemon cannot accept a connection.

Check that you correctly installed your network hardware and software.
Check for malfunctions in the network.


25529	The sqlexecd daemon cannot get a host structure.

Check that you requested a valid host name. Verify that the /etc/hosts
file contains the requested host-name entry.


25530	The sqlexecd daemon cannot bind to the required port address.

Check that no other daemons are running on the port address.


25531	The sqlexecd daemon cannot bind to the required address.

Check that no other daemons are running on the port address.


25533	The sqlexecd daemon cannot close the network.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25534	The sqlexecd daemon cannot allocate a structure.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25535	Address translation failed in sqlexecd daemon.

Enter your request again. If the problem persists, refer to your system
manual for more information.


25537	The sqlexecd daemon cannot connect to network.

Check that you correctly installed your TCP/IP or StarGROUP network.
Check for malfunctions in the network.


25543	You specified an unknown service name or protocol.

Examine the /etc/services file to verify that the requested service
name exists. Also check that the /etc/services file specifies the
correct protocol and/or port number.


25544	The sqlexecd daemon cannot find a host structure.

Check that you requested a valid database server name. Examine the /etc/hosts
file to verify that you correctly defined the requested database server name,
client address, and host names.


25545	The sqlexecd daemon cannot advertise the specified service name.

You are starting the sqlexecd daemon on a system that is running
portable IBM Informix OnLine for NetWare with IPX/SPX as the network
protocol, but the daemon is unable to advertise the service name for
the database server on the NetWare network. It is possible that
another sqlexecd daemon is already using the same service name, a
recently stopped sqlexecd daemon with the same service name was unable
to de-advertise its service, or the database server is down.

The service name of each database server must be unique across the
entire NetWare network. The default service name is sqlexec. If
another sqlexecd daemon or database server on the network already uses
the name, use a different service name to start the sqlexecd daemon.
You can explicitly specify a service name as a parameter in the
sqlexecd command line.

If you are restarting a recently terminated sqlexecd daemon, the
previous sqlexecd probably has not finished de-advertising or was
unable to de-advertise the service name. When you terminate an sqlexecd
daemon, use the TERM signal (15) only (that is, kill -15 pid or kill
pid). If you do not terminate a service properly, depending on your
database server configuration, it might take about three minutes for a
terminated service to be de-advertised automatically.


29061	EDA warning (EDA_warning).

The SQL statement has executed successfully, but the EDA client or
server issued a warning. The EDA_warning field contains the warning
information.

The format of the EDA_warning field is the same as for the EDA_Error
field that is described for error message -29060.


32700	Cannot find license file.

The program cannot open the license file. It first tries to open the
file that the user specified in LM_LICENSE_FILE. If you have not set
this environment variable, the program tries to open the license file
in the default location $INFORMIXDIR/etc/ifmxld.dat. If you intend to
use LM_LICENSE_FILE, check that you have set your license-file pathname
correctly in that file.


32701	Invalid license file syntax.

This error occurs if the feature name, daemon name, or server name
exceeds the maximum length allowed, or if the feature line is
incomplete. If you have edited the license file after installation,
check that you did not make a mistake. The maximum length for the
server name is 32 characters. The feature name, daemon name, and
feature lines are generated automatically during installation.


32702	Cannot connect to a license daemon server.

If you edited the license file after installation, check that you did
not make a mistake. This error occurs if the daemon name specified in
the license-file feature line does not match the vendor-daemon name or
if the attempt to connect the vendor daemon on all server nodes was
unsuccessful. Check that the daemons on all license servers are still
running and that the network is working properly.


32703	Licensed number of users already reached. Check the daemon log.

Check the network-licensing activities by using lmstat or by checking
the license-daemon log file to decide whether you need to purchase more
user capacity from IBM.


32704	No such feature exists.

The feature could not be found in the license file. Be sure that the
license file contains the feature line for the product that you are
trying to use and that the product is properly licensed.


32705	No TCP/IP license service exists.

Check the license file in use to ensure that the TCP/IP port number on
the server line or lines is valid. If the TCP/IP port number is not
valid, modify the license file to use a valid one.


32706	No socket connection to license manager server.

This error indicates that an internal error occurred during sending or
receiving of the message. Note all observed behavior and any other
error message. Check with the system administrator to ensure that the
system is functioning properly.


32707	Encryption code in license file is inconsistent.

This error indicates that the code in a license-file line does not
match the other data in the license file. This error usually occurs
when all the software components are not built with the same encryption
code. Check create_license.c, ls_vendor.c, and your application code
carefully to make sure that they have the same vendor code. Do not
modify the encryption code in the license file after it has been
generated during installation.


32708	Invalid host.

This error occurs when the host ID specified in the license file does
not match the node on which the software is running.


32709	Feature has expired.

The present date exceeds the expiration date of the feature in the
license file. Decide if you want to change from an evaluation version
to a regular version of this IBM Informix product and contact IBM for
the procedure that you need.


32710	Invalid date format in license file.

Check that the date field in the license file is in the format
dd-mmm-yyyy where dd is two digits for the day, mmm is three letters
for the month, and yyyy is four digits for the year. The installation
procedure generates these dates. If you did not modify the license file
on those fields, report this problem, along with the output of the
license file, to IBM Technical Support.


32711	Invalid returned data from license daemon server.

Be sure that no other services use the port numbers on the server
lines. Check with your system administrator to ensure that the network
is functioning properly. Check the license-daemon-server log for all
error messages.


32712	No server lines in license file.

No server line exists in the license file. All nonzero license-count
features need at least one server line.


32713	Cannot find SERVER hostname in network database.

Check all relevant system files, such as /etc/hosts, to ensure that the
server host name is known across the network.


32714	Cannot read data from license daemon server.

Be sure that the daemons in all license servers are running. Check the
daemon log for any error message.


32715	Cannot write data to license daemon server.

Check with your system administrator to ensure that the network is
functioning properly. Also check the daemon log for other error
messages.


32716	License daemon server does not support this feature.

The feature has expired or has not yet started, or the version of the
product you are attempting to use is not the licensed version. Check
that the license files in both the license-daemon servers and the
computer that is running this IBM Informix licensed product are set up
properly.


32717	License daemon server busy (no majority).

The license-daemon server is busy establishing a quorum of server nodes
so that licensing can start. Retry this operation later.


32718	License file does not support this version.

Be sure that the version of the product that you are attempting to use
is licensed. Check the license file to ensure that the version of the
desired product on the feature line is the same as or later than the
version that you want to use.


32719	Feature checkin failure detected at license daemon server.

The check-in request did not receive a proper reply from the vendor
daemon. (The license might still be considered in use.) Check the
daemon log output to see if there are any more error messages. If the
error recurs, note all circumstances and contact 
IBM Technical Support.


32720	License daemon server temporarily busy (new server connecting).

The vendor daemon is busy establishing a quorum condition. New requests
from clients are deferred during this period. Retry this operation
later.


32721	License daemon server does not support this version of this feature.

The version that you are attempting to use is more recent than the
version for which you are licensed. Check the feature line in the
license file to ensure that the version of the desired product is the
same as or later than the version that you are trying to use.


32722	Request for more licenses than this feature supports.

A checkout request was made for more licenses than are supported in the
license file. Be sure that you did not make a change to the license
checkout request to check out more licenses than it is capable of
handling. Check out only one license for each request.


32723	Cannot read license file.

Be sure that the license file has the correct read permission.


32724	Bad encryption handshake with daemon.

The client performs an encryption handshake operation with the daemon
before any licensing operations can occur. This handshake operation
failed. Check with the system administrator to ensure that the system
and the network are working properly. If the error recurs, note
all circumstances and contact IBM Technical Support.


32725	Feature database corrupted in daemon.

The runtime-feature data structures of the daemon are corrupt. This
internal daemon error indicates that a serious problem exists. If the
error recurs, note all circumstances and contact IBM Technical Support.


32726	Cannot allocate dynamic memory.

The malloc() call failed to return sufficient memory. This error can
occur while the system is reading the features from the license file
(especially if the user has set an extremely long LM_LICENSE_FILE path).
Check with your system administrator to ensure that the system is working
properly.


32727	Feature was never checked out.

This message provides information to the user. It is not an error.


32728	Clock setting check not available in daemon.

This message provides information to the user. It is not an error.


32766	Unknown error message number.

The program that you have started cannot locate the Informix error
message file. The INFORMIXDIR environment variable is probably not set
properly. INFORMIXDIR points to the directory that contains the msg
directory where message files are stored.


32788	Dbspaces added to a mirrored Dbslice must be mirrored.

The database administrator attempted to add dbspaces to an existing
mirrored dbslice by using the ALTER DBSLICE ADD DBSPACE command
without the MIRROR clause for each chunk.

Reissue the ALTER DBSLICE ADD DBSPACE command with the MIRROR clause
for each chunk.


32789	Dbspaces added to a non-mirrored Dbslice must not be mirrored.

The database administrator attempted to add dbspaces to an existing
unmirrored dbslice by using the ALTER DBSLICE ADD DBSPACE command
with at least one MIRROR clause for a chunk.

Reissue the ALTER DBSLICE ADD DBSPACE command without the MIRROR clause
for each chunk.


32792	Coservers successfully blocked.

The EBR BLOCK command completed successfully.


32793	Coservers successfully unblocked.

The EBR UNBLOCK command completed successfully.


33987	External Space successfully created.

The onspaces command that you used to create the external space was
successful.


33988	External space creation failed.

The database server could not add the external space. Check the error
returned with this failure.


33989	External Space successfully dropped.

The onspaces command that you used to drop the external space was
successful.


33990	External space drop fails.

An attempt to drop the external space failed. Check the error
associated with this failure.


33991	External Space reference count not zero. Drop fails.

The reference count for this external space was not 0. Check the
reference count for the external space before you attempt to drop the
space.


33992	onmode: Unknown option argument.

Unknown argument passed to onmode. Retry with the correct argument
list.


35201	SQLCODE used in SQL statement or declared as IN parameter.

Remove SQLCODE from the SQL statement and/or remove IN from the
parameter list. SQLCODE is an out parameter only.


35202	SQLCODE parameter must be declared with type SQLCODE_TYPE.

Only declare SQLCODE as an SQLCODE_TYPE parameter.


35579	General Table Manager: Invalid argument.

An invalid argument was passed while you were attempting to create a
table. If this internal error recurs, note all circumstances
and contact IBM Technical Support.


35580	General Table Manager: No table allocated.

The table has not been created or was deleted. If this internal error
recurs, note all circumstances and contact IBM Technical Support.


35581	General Table Manager: No memory.

Allocation of memory for a table or a table entry failed. Try to
decrease the amount of memory that is used so some memory is freed for
the table or table entry.


35582	General Table Manager: Mutex cannot be created.

Table or entry mutexes cannot be created. Try to decrease the amount of
memory that is used so some memory is freed for the creation of the
mutex.


35583	General Table Manager: Duplicate keys not allowed.

Table entries with the same key are not allowed. If this internal error
recurs, note all circumstances and contact IBM Technical Support.


35584	General Table Manager: Table is full.

Table is full and cannot be extended. If this internal error recurs,
note all circumstances and contact IBM Technical Support.


35585	General Table Manager: Entry is locked.

Entry of a table is already locked (not yet used). If this internal
error recurs, note all circumstances and contact IBM Technical Support.


35586	General Table Manager: Table is locked.

Table is already locked (not yet used). If this internal error recurs,
note all circumstances and contact IBM Technical Support.


35587	General Table Manager: No entry.

The required entry does not exist. If this internal error recurs,
note all circumstances and contact IBM Technical Support.


35588	General Table Manager: Invalid entry specification.

The specification of an entry is invalid (for example, a NULL pointer).
If this internal error recurs, note all circumstances and
contact IBM Technical Support.


35589	Running oninit without setuid causes use of descriptor limit.

When you run the database server in developer mode (not suid to root), this
message is a reminder that the number of file descriptors available to the
database server is now limited by the shell from which the database server
is initialized. File descriptors are needed for accessing chunks and
making network connections. If the database server runs out of file
descriptors, you need to choose one of the following solutions: limit the
number of connections, limit the number of chunks used, or run as root.


35590	You do not have the correct permission to run the database server
without the -U option.

The user was not root or informix and was not in the group informix.
The only way to run the database server without permissions is with the -U
option.


35591	You must be the owner of this server to start it.

You are attempting to boot the database server but are not the owner.
Try again after you log in as the correct user.


35592	You are not the owner of this server.

You attempted to run onstat or onmode against a database server that you do
not own.


38002	Unknown event mnemonic or code event-mnemonic.

An unknown event mnemonic or code was encountered in the audit trail.
Check the event mnemonic or code, correct the command line or the load
file, and try again.


38005	Invalid path name, pathname (errcode = number).

You have specified an invalid pathname. Check your entry and try
again.


38006	Invalid file name, filename (errcode = number).

You have specified an invalid filename. Check your entry and try
again.


38007	No read permission on file filename.

You do not have read permission for the specified file. Check the
permissions and try again.


38008	Cannot create file filename (errcode = number).

The specified file cannot be created. Check the path and directory
permissions and try again.


38010	Internal error: Illegal use of set_msg (bounds exceeded).

The set_msg function has exceeded the allocated storage in the error
buffer. If the error recurs, note all circumstances and contact
IBM Technical Support.


38047	Invalid serial number. Consult the installation instructions.

You have entered a serial number that is not valid. Check the
installation instructions for your product and try again.


38053	Bad option usage: -u required for add.

Your add command for onaudit is incomplete; you did not specify a user
name. Check the usage information and try again.


38054	Bad option usage: -u required for modify.

Your modify command for onaudit is incomplete; you did not specify a
user name. Check the usage information and try again.


38055	Unknown option '-x'.

Your command line for onaudit has incorrect or incomplete syntax. You
have specified an unknown option. Check the usage information and try
again.


38060	Badly formatted mask/role/event definition at line line-number.

The database server failed to parse the mask/role/event definition in a
load file. Edit the load file and try again.


38061	Actions must be the first argument to onaudit.

Your command line for onaudit has incorrect or incomplete syntax.
Actions must be the first argument. Check the usage information and try
again.


38062	Option without required argument found.

Your command line for onaudit has incorrect or incomplete syntax. You
have not included a required argument with an option. Check the usage
information and try again.


38064	No more than two events sets may be defined.

Your command line for onaudit has incorrect or incomplete syntax. You
have specified more than two event sets. Check the usage information
and try again.


38065	Unable to connect to shared memory.

Confirm that the database server is up and try again.


38083	Masks cannot be modified during a bulk operation (line line-number).

The mask that was defined in a load file already exists. Either edit
the load file or delete the existing definition.


38084	OS mode auditing not supported for this platform.

The -O option is not implemented for this platform. Delete it from the
command and try again.


38085	Cannot locate ONCONFIG file.

The database server could not locate the $INFORMIXDIR/etc/$ONCONFIG
file, and/or ADTPATH and/or DBSERVERNAME is not defined.


38086	Badly formatted audit record found.

The audit trail traversal contains a parsing error. Check the path and
directory permissions and try again.


38088	Failed to action user user-name -- error number occurred.

This general onaudit failure message could indicate that a command is
incorrect or incomplete, the database is inaccessible, or the user is
not informix. Check the permissions, ID, and command-line syntax, and
try again.


38089	Failed to action -- error number occurred.

This general onaudit failure message could indicate that a command is
incorrect or incomplete, the database is inaccessible, or the user is
not informix. Check the permissions, ID, and command-line syntax, and
try again.


38090	Skipped existing audit trail filename.

The database server could not overwrite an existing audit-trail file.
This message might appear when the database server comes up and
ADTPATH holds old audit data. Remove all old audit trails.


38091	Audit trail creation failed for filename.

The database server could not open the next audit file because the call
to aio_fopen() failed. Check that ADTPATH points to a valid directory
to which the user or group informix can write.


38092	Could not open next audit file.

The database server could not open the next audit file because the call
to aio_fopen() failed. Check that the ADTPATH points to a valid
directory to which the user or group informix can write.


38093	Informix level audit write failure (errcode = number).

The database server could not write the current audit record to the
audit-trail file. Check that ADTPATH points to a valid directory to
which the user or group informix can write and that space is available.
Also, check the directory and audit-trail file permissions.


38094	string is invalid setting for ADTERR.

The ONCONFIG file contains a bad parameter. Fix the ONCONFIG file so
that the parameter is 0/1.


38095	string is invalid setting for ADTMODE.

The ONCONFIG file contains a bad parameter. Fix the ONCONFIG file so
that the parameter is 0/1.


43007	Data required to insert a row into table_name.

An insert into this table cannot occur without the specified data.
Verify that the required data exists before you attempt another insert
in this table.


43008	Failed to build WHERE clause for query.

Attempt to build a WHERE clause for the specified query failed. Verify
that the data needed to create the WHERE clause exists.


43010	Missing data for table_name.

Required data is missing. Verify that the data exists.


43011	Updates to table_name primary key are not allowed.

Updating the primary key for a table is not allowed. Delete the row and
then insert a new row with the new primary key.


43012	Unable to open connection to server.

The database server is in an incorrect state. Bring the database server
to the correct state. For a backup, the database server should be in
online or quiescent mode. For a warm restore, the database server
should be in online, quiescent, backup, or recovery mode. For a cold
restore, the database server should be off-line. Use the onmode or
oninit commands.


43014	Unable to read ONCONFIG file parameters.

The ONCONFIG file is inaccessible. It might be missing or have
incorrect permission values. Verify that an ONCONFIG file exists and
that its permissions are correct. For details, see your Administrator's
Guide.


43015	Unable to set INFORMIXSHMBASE.

Unable to attach to shared memory. Contact your database system
administrator.


43018	Must be user root or informix.

Only users root and informix and are allowed to execute ON-Bar. Log in
as root or informix before you attempt the backup, restore, or database
logging mode change.


43036	User is not a member of the informix-admin group.

Only users listed in the informix-admin group can execute ON-Bar. Ask
your system administrator to add your user name to the informix-admin
group.


43039	Version version_number of the XBSA shared library is not compatible
with version version_number of ON-Bar.

Either IBM has not certified the XBSA shared library that the
Storage Management Vendor provides, or an error occurred during
installation of ON-Bar. Verify that ON-Bar was installed properly.
Verify that the XBSA library is certified.


43040	DB/BLOBspace dbspace_name/blobspace_name does not exist.

Verify that the storage space exists in this database server.


43043	Must restore logical logs from date_time or later.

The user wants to stop the restore at a logical log that is too early.
A storage-space backup occurred after the log that the user
specified. Retry the restore up to the specified logical log or later.


43047	Cannot warm restore-critical media: dbspace_name.

The user wants to stop the restore at a logical log that is too early.
A storage-space backup occurred after the log that the user
specified. Retry the restore up to the specified logical log or later.


71561	This command can be executed only by members of the informix-admin
group.

The account under which you are logged on might not be a member of the
informix-admin group. Contact your Windows system administrator.


71562	Use the -iy option to initialize the database server.

The command-line option that was specified in the Control
Panel->Services->Startup dialog box was -i. When the database
server runs as a service, it does not prompt you for confirmation.

If you are sure that you want to initialize the root dbspace
completely, start the database server with the -iy option instead.


71563	The database server cannot access %INFORMIXDIR%\dbssodir or
%INFORMIXDIR%\aaodir.

First, check access rights to path segments that lead to dbssodir and
aaodir. If %INFORMIXDIR% is on a network drive, make sure the oninit
process privileges are not altered. In addition, make sure that the AAO
and DBSSO group names in the following registry key are valid:

HKEY_LOCAL_MACHINE\SOFTWARE\Informix\OnLine\CurrentVersion\Security


71564	Warning: SYSTEM command not supported in SPL routines.

Prior to Version 7.21, IBM Informix OnLine Dynamic Server for Windows NT
did not support system commands in SPL routines (stored procedures).
This feature was added in Version 7.21.

Run the system command outside of the SPL routine.


71565	The root dbspace is not large enough for the specified configuration.
The actual size is xxx pages, and the required size is yyy pages.

Try to free some space on the drive that contains the root dbspace and
re-initialize the database server.


71566	The value specified for TAPEDEV or LTAPEDEV in the ONCONFIG file
is invalid.

Specify a valid value for TAPEDEV and/or LTAPEDEV. For specific information
about setting configuration parameters, see your administrator's guide. 


71567	The database server failed to start in Recovery Mode. Check Event
Log for errors.

Check the Event Log for errors from the database server and correct them.


71568	oninit: DBSERVERNAME `servername' not found under SQLHOSTS key in
the Registry.

Add key into the registry. For more information, refer to your
administrator's guide.


71569	The database server failed to start in Recovery Mode.  Service
already running.

Check the registry settings for INFORMIXSERVER under the SQLHOSTS key.


71570	System() command "<command-name>" in SPL routine cannot be
executed because user "<username>" did not connect with a password.

Log on again with a password and execute the SPL routine.


71571	Insufficient buffer size for error message.

The buffer size allocated for the error message is not sufficient. If
the error recurs, note all circumstances and contact IBM Technical Support.


71572	System() command in SPL routine failed.

Check the message log for more information.


79511	Warning: DB_LOCALE environment variable does not match
locale of the database.

The dbaccess utility issues this message when you connect to a database
that does not match the value of your $DB_LOCALE environment variable.
For more information, see the section on performing code-set
conversions in the IBM Informix GLS User's Guide.


80622	Illegal DBSERVERNAME or DBSERVERALIAS:  <dbname> must
begin with a letter.

The onconfig file has a value for DBSERVERNAME or DBSERVERALIASES that does
not begin with a letter.

Edit the onconfig file. Make sure the DBSERVERNAME value and
all DBSERVERALIASES values begin with a letter.


-1	Not owner.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Check the ownership and permissions of
files and directories that are used in the current operation. Look for
other operating-system error messages that might give more
information.


-2	No such file or directory.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information.


-3	No such process.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-4	Interrupted system call.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. You might have pressed the interrupt
key at a crucial moment, or the software might have generated an
interrupt signal such as the UNIX command kill. Look for other
operating-system error messages that might give more information. If
the error recurs, note all circumstances and contact IBM Technical Support.


-5	I/O error.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-6	No such device or address.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. You might have made an error when you
configured the database software or in the REPORT TO clause of a
report. Look for other operating-system error messages that might give
more information.


-7	Arg list too long.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
see the information about trapping errors in your Administrator's
Guide or Reference to acquire additional diagnostics. Contact IBM Technical 
Support with the diagnostic information.


-8	Exec format error.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-9	Bad file number.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-10	No children.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-11	No more processes.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.

-12	Not enough core.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Core probably refers to data space in
memory that an operating-system function needed. Look for other
operating-system error messages that might give more information.


-13	Permission denied.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. This error code usually follows an
attempt to execute a file that is not a program or shell script; it
might reflect an error in a REPORT TO specification in a report. Look
for other operating-system error messages that might give more
information.


-14	Bad address.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-15	Block device required.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. An error might exist in the
configuration of the database software. That error might include an
incorrect address in the chunk-device or tape-device parameters that
were given to the database server. Look for other operating-system
error messages that might give more information.


-16	Mount device busy.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-17	File exists.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. This error may reflect an attempt in a
REPORT TO specification to replace an existing file. Look for other
operating-system error messages that might give more information.


-18	Cross-device link.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-19	No such device.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.


-20	Not a directory.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. Some database servers store
databases as directories that are named database.dbs. If you place a
file (not a directory) with the .dbs suffix in your DBPATH, this error
might result.


-21	Is a directory.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. A file-type operation has been
directed to a directory. Some database servers store tables, indexes,
and lock files as files with particular suffixes in the database
directory. If a directory replaced such a file, this error might
result. Look for other operating-system error messages that might give
more information.


-22	Invalid argument.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
refer to information about trapping errors in your Administrator's
Guide or Reference to acquire additional diagnostics. Contact IBM
Technical Support with the diagnostic information.


-23	File table overflow.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information. If the error recurs,
note all circumstances and contact IBM Technical Support.

-24	Too many open files.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. This error probably reflects a limit
that was configured in your operating system. Look for other
operating-system error messages that might give more information.


-25	Not a typewriter.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. An error might exist in the
configuration of the database software. That error might include an
incorrect address in the log-device parameter given to the database
server. Look for other operating-system error messages that might give
more information. If the error recurs, note all circumstances
and contact IBM Technical Support.


-26	Text file busy.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the current operation requires the
use of a text file (such as the input file to LOAD or to a PRINT FILE
statement in a report), retry the operation later. Look for other
operating-system error messages that might give more information.


-27	File too large.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Check the documentation for your
operating system to find out what too large might mean in the context
of the current operation.


-28	No space left on device.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Either a database table or an ASCII
output file has probably filled the available disk space. Look for
other operating-system error messages that might give more
information.


-29	Illegal seek.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information, such as the device on which
the error occurred. If the error recurs, note all circumstances
and contact IBM Technical Support.


-30	Read-only file system.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. An entire file system (a disk or disk
partition) has been made read-only. Contact your system administrator
to find out why.


-31	Too many links.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information, especially which file or
files are involved. If the error recurs, note all circumstances
and contact IBM Technical Support.


-32	Broken pipe.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. A pipe is a data path between two
processes; a pipe is broken if one of the processes has unexpectedly
quit while the other is waiting for data. Look for other
operating-system error messages that might give more information,
especially which processes were involved. If the error recurs,
note all circumstances and contact IBM Technical Support.


-33	Argument too large.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-34	Result too large.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-35	Operation would block.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-36	Operation now in progress.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-37	Operation already in progress.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-38	Socket operation on non-socket.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information, particularly the operation
in question and the processes that are involved. If the error recurs,
note all circumstances and contact IBM Technical Support.


-39	Destination address required.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-40	Message too long.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-41	Protocol wrong type for socket.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-42	Option not supported by protocol.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-43	Protocol not supported.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-44	Socket type not supported.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-45	Operation not supported on socket.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstance, and contact IBM Technical Support.


-46	Protocol family not supported.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-47	Address family not supported by protocol family.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-48	Address already in use.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-49	Can't assign requested address.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-50	Network is down.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
find out when the network will be backed up. If not, note all
circumstances and contact IBM Technical Support.


-51	Network is unreachable.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
find out what the network problem is. If not, note all
circumstances and contact IBM Technical Support.


-52	Network dropped connection on reset.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-53	Software caused connection abort.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-54	Connection reset by peer.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-55	No buffer space available.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information, especially which file or 
files are involved. If the error recurs, note all circumstances
and contact IBM Technical Support.

-56	Socket is already connected.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-57	Socket is not connected.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-58	Can't send after socket shutdown.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-59	Too many references: can't splice.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-60	Connection timed out.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-61	Connection refused.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-62	Too many levels of symbolic links.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. The database server does not normally
use symbolic links. Look for other operating-system error messages that
might give more information, particularly which file or files were
being accessed.


-63	File name too long.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. An error might exist in the coding of
a REPORT TO statement of a report. If not, note all
circumstances and contact IBM Technical Support.


-64	Host is down.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-65	Host is unreachable.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If you are attempting to use
IBM Informix STAR or IBM Informix NET, contact your system administrator to
report a network problem. If not, note all circumstances and
contact IBM Technical Support.


-66	Directory not empty.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information, particularly what directory
was being removed. If the error recurs, note all circumstances
and contact IBM Technical Support.


-67	Too many processes.

Your application was unable to start a database server process or was
unable to create a process that was needed for some subordinate
function such as a REPORT TO pipe or a network-access program. This
error probably reflects a limit configured in your operating system.
Look for other operating-system error messages that might give more
information.


-68	Too many users.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. This error probably reflects a limit
configured in your operating system. Look for other operating-system
error messages that might give more information.


-69	Disc quota exceeded.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. A disk-quota limit is probably
configured in your operating system. Look for other operating-system
error messages that might give more information, particularly the disk
involved. Contact your system administrator to inquire about more
liberal quotas.


-70	Stale NFS file handle.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. An error exists in a file server on a
networked file system. Although IBM Informix database servers do not
support database access to NFS-mounted file systems, this error can
occur when the database server executable files or other files that are
related to the database server are located on an NFS-mounted disk. (In
other words, the INFORMIXDIR environment variable names an NFS-mounted
disk.) The error is usually transient, reflecting a crash and
subsequent restart of the file server. Remount the file system to your
workstation and rerun your application.


-71	Too many levels of remote in path.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-72	Not a stream device.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. Look for other operating-system error
messages that might give more information, particularly which device is
involved. If the error recurs, note all circumstances and
contact IBM Technical Support.


-73	Timer expired.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-74	Out of stream resources.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-75	No message of desired type.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-76	Not a data message.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Supportat.


-77	Identifier removed.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-78	Deadlock situation detected/avoided.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. If the error recurs, note all
circumstances and contact IBM Technical Support.

Under AIX, this code means connection timed out.


-79	No record locks available.

An operating-system error code with the meaning shown was unexpectedly
returned to the database server. This implementation of the IBM Informix
database server probably uses kernel locking, the use of the
operating-system facilities to lock rows of tables. The capacity of the
operating-system lock table has been exceeded. Contact your system
administrator and inquire about configuring the operating system to
support more locks. Also examine your database application to see if it
can use fewer locks by updating fewer rows in each transaction or by
locking whole tables instead of rows.


-100	ISAM error: duplicate value for a record with unique key.

A row that was to be inserted or updated has a key value that already
exists in its index. For C-ISAM programs, a duplicate value was
presented in the last call to iswrite, isrewrite, isrewcurr, or
isaddindex. Review the program logic and the input data. For SQL
products, a duplicate key value was used in the last INSERT or UPDATE.


-101	ISAM error: file is not open.

The program attempted to use an unopened file, table, partition,
tablespace, or other storage object, or one of these whose access
mode did not support the requested operation (for example, an
attempt to write to a file that was opened in read-only mode).

If the error recurs, refer to the information on trapping errors in
your Administrator's Guide or Reference for additional diagnostics.
Contact IBM Technical Support with the diagnostic information.


-102	ISAM error: illegal argument to ISAM function.

A parameter that was presented to one of the C-ISAM functions is
outside the range of acceptable values. For C-ISAM programs, review the
parameters that were used in this function call, and compare them to
the documentation for the function. If the error recurs, refer
to the information on trapping errors in your Administrator's
Guide or Reference to acquire additional diagnostics. Contact IBM 
Technical Support with the diagnostic information.


-103	ISAM error: illegal key descriptor (too many parts or too long).

The ISAM processor has been given an invalid key descriptor. For C-ISAM
programs, review the key descriptor. Each key descriptor has a maximum
of 8 parts and 120 characters. If the error recurs, refer to the
information on trapping errors in your Administrator's Guide or Reference to
Appendix entitled "Trapping Errors" in your Administrator's Guide or Reference 
to acquire additional diagnostics. Contact IBM Technical Support
with the diagnostic information.


-104	ISAM error: too many files open.

The ISAM processor has reached its limit of open files. For C-ISAM
programs, review the program logic and change it so that fewer files
are open concurrently. Use isclose to close unneeded files. For SQL
products, this query is too complex; it uses too many tables
concurrently. For example, a trigger procedure running with PDQ
enabled can open many tables during constraints processing.
Perform the query in steps, and use temporary tables.


-105	ISAM error: bad ISAM file format.

The contents of an ISAM file (table or index) have been corrupted. For
C-ISAM, if you used transaction logging, you can use the isrecover
program to recover the file. Otherwise, re-create the file or restore
it from backup. For SQL products, use the bcheck or secheck utility to
get more information on the problem and possibly correct it (use
the oncheck utility (or tbcheck with IBM Informix OnLine versions 6.0 and
earlier). If the utility cannot recover the table or index, you will
have to re-create or restore it.


-106	ISAM error: non-exclusive access.

The ISAM processor has been asked to add or drop an index but it does
not have exclusive access. For C-ISAM programs, the file must be opened
with exclusive access before you perform this operation. Review the
program logic, and make sure that it opens this file by passing the
ISEXCLLOCK flag to isopen. For SQL products, the database server
returns this error when an exclusive lock is required on a table. For
example, this error appears when a second user tries to alter a table
that the first user has locked.
Or the ISAM processor could not obtain access to the requested table or 
index because it has been opened exclusively by another user.
This condition is normally transient, retry operation after some delay.  


-107	ISAM error: record is locked.

Another user request has locked the record that you requested or the
file (table) that contains it. This condition is normally transient. A
program can recover by rolling back the current transaction, waiting a
short time, and re-executing the operation. For interactive SQL, redo
the operation. For C-ISAM programs, review the program logic and make
sure that it can handle this case, which is a normal event in
multiprogramming systems. You can obtain exclusive access to a table by
passing the ISEXCLLOCK flag to isopen. For SQL programs, review the
program logic and make sure that it can handle this case, which is a
normal event in multiprogramming systems. The simplest way to handle
this error is to use the statement SET LOCK MODE TO WAIT. For bulk
updates, see the LOCK TABLE statement and the EXCLUSIVE clause of the
DATABASE statement.


-108	ISAM error: key already exists.

The ISAM processor has been asked to create an index that already
exists. For C-ISAM programs, review the program logic. The program must
delete this existing index before it defines another. If the error
recurs, note all circumstances and contact IBM Technical
Support.


-109	ISAM error: the key is the file's primary key.

The ISAM processor has been asked to delete the primary key index. For
C-ISAM programs, the isdelindex call cannot delete the primary key. If
the error recurs, note all circumstances and contact IBM Technical Support.


-110	ISAM error: end or beginning of the file.

Reading rows sequentially, forward or backward, the ISAM processor has
reached one end of the file (table). For C-ISAM programs, this message
is the normal signal for end of file. Use a different retrieval mode of
isread to reposition the file. For SQL products, see the SQL error
message or return code.


-111	ISAM error: no record found.

The ISAM processor cannot locate the requested record. For C-ISAM
programs, no record was found with the requested index value or record
number, depending on the retrieval mode in use. Make sure that the
correct index is in use. For SQL products, see the SQL error message or
return code. Probably no row was found for this query.


-112	ISAM error: there is no current record.

The ISAM processor has been asked to return the current record, but
none has been established. For C-ISAM programs, review the program
logic. Before the program uses the ISCURR retrieval mode, it must use
another retrieval mode, such as ISFIRST, to establish a current record.
If the error recurs, note all circumstances and contact
IBM Technical Support.


-113	ISAM error: the file is locked.

Another user request has opened the file (table) that was requested in
exclusive mode. In systems that use files for locking, a tablename.lok file
exists. Possibly such a file was left behind when another program terminated
abnormally. If you are sure that is the case, you can release the lock by
emptying that file. Lock files are not used in many systems, and they are
never used with IBM Informix Dynamic Server or IBM Informix OnLine Dynamic Server.

This error occurs with IBM Informix Dynamic Server or IBM Informix OnLine Dynamic
Server when a user attempts to access a table that has been locked.

For C-ISAM programs, rerun the program after the file is unlocked. For
SQL products, tables are locked explicitly using the LOCK TABLE statement
and implicitly during the execution of the CREATE INDEX or ALTER TABLE
statement. Rerun the program or query when the table is unlocked.

If you get this error (-113) when using a transaction isolation mode of
REPEATABLE READ or SERIALIZABLE, and if your query did not use an index
(and therefore had to use a sequential scan of the entire table), the cause
of the error might be that another user had either an exclusive lock or a
promotable lock on at least one row in the table. If you are in REPEATABLE
READ or SERIALIZABLE mode and your query requires a scan (search) of every
single record in the table to find all the records that meet the conditions
in the WHERE clause, then the engine will need to lock every record in the
table to maintain the repeatability of the read. In practice, rather than
locking every single record, the engine will try to lock the entire table.
But if there are any exclusive locks, or even promotable locks, on any row
in the table, then the engine will not be able to get a shared lock on the
entire table, and the query will fail.


-114	ISAM error: the file name is too long.

The ISAM processor has been asked to open or create a file with a
filename longer than 10 characters. For C-ISAM programs, this length
exceeds the maximum for the product. Choose a shorter filename. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-115	ISAM error: cannot create lock file.

The ISAM processor has been asked to access a file or row using
locking. Because this operating system uses files for locking, ISAM
must create a tablename.lok file. When it tried to do so, it received
an error code from the operating system. The disk might be full, or
your account might not have write permission in the relevant directory.
Look for operating-system error messages that might give more
information.


-116	ISAM error: cannot allocate memory.

The ISAM processor needed to allocate memory for data storage but was
unable to do so. A problem may exist in the operating system; look for
operating-system error messages that might give more information. One
cause of this error might be selecting a row that contains large BYTE
or TEXT columns into a temporary table or as part of an INSERT or
UPDATE. In some releases, an entire row that includes BLOB values is
buffered in memory. For C-ISAM programs, review the program to look for
ways that it can use less memory. For SQL products, simplify the
program, form, or report if possible.


-117	ISAM error: bad custom collating sequence.

No current IBM Informix product displays this message. If the error recurs,
note all circumstances and contact IBM Technical Support.


-118	ISAM error: cannot read log record.

The ISAM processor is trying to roll back a transaction or recover a
file but has encountered an error while reading the transaction log.
Look for operating-system error messages that might give more
information. Use the dblog or selog utility to get more information
about the problem. If the file (table) cannot be recovered, you will
have to re-create it or restore it from backup.


-119	ISAM error: bad log record.

The ISAM processor is trying to roll back a transaction or recover a
file but has encountered bad data in a transaction log record. The
dblog or selog utility can be used to get more information about the
problem. If the file (table) cannot be recovered, you will have to
re-create it or restore it from backup.


-120	ISAM error: cannot open log file.

The ISAM processor is trying to open the transaction log file but has
received an error from the operating system. Look for operating-system
error messages that might give more information. For C-ISAM programs,
review the parameter passed to islogopen. Make sure that it specifies
the correct filename of an existing, writable log file and that it
includes a path if the file is not in the current directory. For SQL
products, the START DATABASE statement establishes the transaction log
file. Make sure that the log file still exists in the same directory
location as when START DATABASE was issued and that your account has
write access to it.


-121	ISAM error: cannot write log record.

The ISAM processor is trying to add a record to the transaction log but
has received an error from the operating system. The disk might be
full. Look for operating-system error messages that might give more
information. The transaction-log file can grow quite large. To reduce
its size, you must do two things. First, make a backup copy of the data
file (for C-ISAM) or all database files (for SQL). Second, make the
transaction-log file an empty file. If you perform these steps
routinely, you can control the size of the log file.


-122	ISAM error: transaction not available.

The ISAM processor has been asked to mark the start or end of a
transaction, but transaction logging is not in effect. For C-ISAM
programs, this file was not opened with logging. Review the calls to
isopen, and make sure that the ISTRANS parameter is included. For SQL
products, this database does not support transaction logging. If you
are using the database server, have the database server administrator
enable logging for this database. Otherwise, use the START DATABASE
statement to begin transaction logging. In all cases, logging should
only start immediately after the database has been fully backed up.


-123	ISAM error: no shared memory.

This implementation of ISAM uses shared memory; however, the
shared-memory partition has not been established. Contact the system
administrator or the person who installed the product.


-124	ISAM error: no begin work yet.

The ISAM processor has been asked to mark the end of a transaction, but
no transaction has been started. For C-ISAM programs, review the
program logic to make sure that it calls isbegin before it calls
iscommit or isrollback. For SQL products, make sure that you execute
BEGIN WORK before COMMIT WORK or ROLLBACK WORK.


-125	ISAM error: can't use nfs.

The ISAM processor has been asked to open a file that is located on a
disk attached to another computer and that is accessed using the
Network File System (NFS). This action is not supported. Database files
must be on disks that are physically attached to the computer on which
the ISAM processor is running. To use a database on a different
computer, you must install the IBM Informix STAR or IBM Informix NET networking
software. Then an application on this computer can communicate with a
database server that is running on the computer to which the disks are
attached.


-126	ISAM error: bad row id.

The ISAM processor was asked to retrieve a row by its physical location
but could not find a row at that location.

The error occurred due to one or more of the following reasons:

For queries using the dirty read isolation level, the data being queried was in
a temporarily inconsistent state that prevented it from being read. This is
normal behavior for the dirty read isolation level, which allows queries to
access data that is being updated concurrently by other transactions. Resubmit
the query. To prevent this error from occurring, use a higher isolation level.

For C-ISAM programs, if you are using access by record number, review the
number stored in isrecnum; it is invalid. Otherwise, the current index
might be damaged; run the bcheck or secheck utility.

For SQL products, the index has been damaged. Run the oncheck utility to
check and repair the index if you are using IBM Informix Dynamic Server,
IBM Informix Universal Server, or IBM Informix OnLine Dynamic Server. Run
bcheck or secheck if you are using the IBM Informix SE database server. Run
tbcheck if you are using the IBM Informix OnLine database server.


-127	ISAM error: no primary key.

The ISAM processor was called for a function that requires a unique
primary-key index, but no such index exists for this file. For C-ISAM
programs, review the design of the data file; it was created with a
zero-part primary index (that is, for retrieval by record-number
sequence). If that is not the case, the index might be damaged; run the
bcheck or secheck utility. If the error recurs, note all
circumstances and contact IBM Technical Support.


-128	ISAM error: no logging.

The ISAM processor was called for a function that requires a
transaction log, but none exists for this file. For C-ISAM programs,
review the creation of the data file. Before the program uses functions
such as isbegin, it must set up a log using islogopen. For SQL
products, this database does not support transaction logging. If you
are using the database server, have the database server administrator
enable logging for this database. Otherwise, use the START DATABASE
statement to begin transaction logging. In all cases, start logging
only immediately after the database has been fully backed up.


-129	ISAM error: too many users.

This implementation of ISAM uses shared memory, and it has reached the
maximum number of concurrent users for which the shared memory was
configured. 

The word users can be misleading; the limit is on the number of
concurrent application programs using the database server. It is
possible for one user to start multiple applications at the same time.
For example, when a user starts the IBM Informix 4GL Programmer's
Environment, it opens a session with the database server. When that
user issues a command to compile a 4GL program, the 4GL compiler starts
and also opens a session with the database server. During a compile,
this user has two sessions running.


-130	ISAM error: no such dbspace.

This code indicates one of two problems. The most likely problem is
that this operation specifies a dbspace by name (for example, in the IN
clause of a CREATE TABLE statement or in the DBSPACETEMP environment
variable setting), but that name has not been defined. You can run the
onstat utility with the -d option to see the names of defined dbspaces.
Ask the database server administrator about creating a new dbspace.

If the operation does not explicitly name a dbspace, or if the name is
correct, the problem might be more serious. The error might reflect
corruption of reserved pages in the root dbspace. Use the tbcheck or
oncheck utility with the -cr option to check for this condition.


-131	ISAM error: no free disk space.

Not enough contiguous free disk space is available to complete the
current operation. For C-ISAM programs, if transaction logging is in
use, roll back the current transaction. Make some disk space available,
and run the program again. For SQL products, roll back the current
transaction, if possible. Contact the system administrator about
acquiring more disk space for databases.


-132	ISAM error: rowsize too big.

The limit on a single row is the disk page size that the database
server supports.

Define the table differently, so that each row is shorter. Consider
splitting the table into two or more tables or using more compact data
types.


-133	ISAM error: audit trail exists.

The ISAM processor has been asked to operate on a file in a way that is
incompatible with an audit trail, yet an audit trail exists for the
file. For C-ISAM programs, you cannot call iscluster while an audit
trail exists. First call isaudit with the AUDSTOP mode. For SQL
products, you cannot create a clustered index on a table while it has
an audit trail. First use the DROP AUDIT statement to drop the audit
trail.


-134	ISAM error: no more locks.

The ISAM processor needs to lock a row or an index page, but no locks
are available. The number of locks that an operation requires depends
primarily on the number of rows that a single transaction modifies. You
can reduce the number of locks that an operation needs by doing less in
each transaction or by locking entire tables instead of locking rows.
Depending on the implementation that you are using, the number of locks
that is available is configured in one of three places: the
operating-system kernel, the shared-memory segment, or the database
server. Consult your database server administrator about making more
locks available.


-135	ISAM error: tblspace does not exist.

This error might indicate corruption of control information in the root
dbspace, a serious problem that might require restoring the system from
archive. In the short term, roll back the current transaction, and
terminate the application. Then the database server administrator
should run the tbcheck, oncheck, or onutil utility.


-136	ISAM error: no more extents.

The database server needs to add an extent to a table but cannot
do so. Either not enough disk space is available in the dbspace, or the
table has been given the maximum number of extents that is allowed, or
the maximum number of pages has been reached. The database server
administrator can determine the cause as follows:

    1.  Determine the tblspace number for the table. It is the value in
	the partnum column of the systables table for this table.

    2.  Convert the tblspace number to hexadecimal and extract its
	most-significant 2 digits (the high-order byte). This chunk
	number indicates where the table resides.

    3.  Use the onstat utility -t option to find out disk usage for this
        table. Note particularly the values reported for npages (disk
        pages available), nused (disk pages used), and nextns (number of
        extents).

If nused is less than npages, and nextns is large, the table may have
too many extents. The upper limit of extents per table depends on the
page size of the dbspace it is in, as well as how much space is consumed
by other entries on its tblspace page. An estimate of the maximum
allowed number of extents is the page size in bytes, minus 150 bytes of
overhead, divided by eight. Thus a table in a 2K page size dbspace is
limited to roughly (2,048 - 150) / 8 = 237 extents, but the actual limit
may be lower if other entries on its tblspace page reduce the space
available for extent entries. Larger page sizes allow correspondingly
higher numbers of extents.

If there are too many extents, reallocate the table using fewer, larger
extents, or in a dbspace with a larger page size. To reallocate the
table, unload it to a flat file, then drop the table. Re-create the
table, specifying a first-extent size sufficient to hold all its current
data and a next-extent size between one-fourth and one-sixteenth its
current size. Then reload the data into the table.

If nextns is small or the difference between npages and nused is less
than the size of the next-extent size for the table, not enough disk
space is available in the dbspace where the table resides. Use the
chunk number from step 2 and the ON-Monitor or ON-Monitor Chunks display
to determine the dbspace, then add a new chunk to that dbspace.

If nused is close to 0xFFFFFF (16,777,215), the maximum number of pages
has been reached for the table. Reallocate the table in a dbspace with
a larger page size as described above.


-137	ISAM error: chunk table overflow.

The database system administrator sees this error message. The database
server is configured to handle a certain number of disk chunks. The
limit has been reached, so a chunk could not be added. Increase the
CHUNKS parameter of the ONCONFIG file, and initialize shared memory.


-138	ISAM error: dbspace table overflow.

The database server administrator sees this error message. The database
server is configured to handle a certain number of dbspaces. The limit
has been reached, so a dbspace could not be added. Increase the
DBSPACES parameter of the ONCONFIG file, and initialize shared memory.


-139	ISAM error: logfile table overflow.

The database server administrator sees this error. The database server is
configured to handle a certain number of logical logs. The limit has
been reached, so a log could not be added. Increase the LOGSMAX
parameter of the ONCONFIG file and initialize shared memory.


-140	ISAM error: operation illegal on a DR secondary.

UPDATABLE_SECONDARY disabled:

A DR secondary server is meant for read-only operations. Any kind of write
operation to a nontemporary dbspace is not allowed. For example, you cannot
create a table in a regular dbspace, and you cannot do an insert, update, or
delete operation on a table in a regular dbspace.

Review your application logic and rewrite it to remove any operations that
would write to a nontemporary dbspace.

UPDATABLE_SECONDARY enabled:

A DR secondary server is updatable. Some of the DML/DDL statements are not
supported on an updatable secondary server. For example, create database 
without log is not supported on an updatable secondary server. Also raw 
tables and external tables creatiion are also not supported on 
secondary server.

All secondary servers:

Certain operations on the secondary servers require temporary data to be stored
in temporary dbspaces, such as sorting and view processing. Ensure that temporary
dbspaces are available for such operations.


-141	ISAM error: tblspace table overflow.

The database server is configured to handle a certain number of
open tblspaces (which correspond approximately to tables). This limit
has been reached, so a table that is used in this statement could not
be opened. In the short term, roll back the current transaction and
then re-execute it when fewer concurrent operations are going on. To
prevent recurrence, the database server administrator should configure 
the system to handle more open tblspaces. The TBLSPACES parameter of the
ONCONFIG file sets the limit. The ovrtable count in the
ON-Monitor or ON-Monitor Profile display reflects the number of times
this error occurs.


-142	ISAM error: overflow of tblspace page.

An internal error (probably obsolete) occurred. If the error recurs,
note all circumstances and contact IBM Technical Support.


-143	ISAM error: deadlock detected.

The database server has detected an impending deadlock between
your request and other, concurrent user requests. Each user request is
waiting for a resource (a row or disk page) that is held by another
request in the chain; if your requested operation went forward, the
chain would be closed and all requests would be deadlocked. In the
short term, treat this error the same as -107 (record is locked). Roll
back the current transaction, and re-execute it after a delay. To
prevent recurrence, review the design of the applications that use the
same tables and execute concurrently. Various design strategies can
minimize the probability of deadlock.

When IBM Informix STAR is active, and your application is using tables in
both this system and another system, deadlock detection is no longer
deterministic but probabilistic, based on the duration of a delay
waiting for resources in another system. The database server administrator 
can set the length of the delay after which deadlock is assumed.


-144	ISAM error: key value locked.

The current operation inserts a row with a certain primary key value or
updates a row with a certain primary key value, but a transaction that
has not yet been committed has deleted that key value from the index.
This error occurs only when the lock mode is set to NOT WAIT. Treat it
the same as error -107 (record is locked). Roll back the current
transaction, and re-execute it after a delay. Then, if the other
transaction was committed, the lock no longer exists. If it was rolled
back, the key exists, and this operation receives a duplicate-key
error.


-145	ISAM error: system does not have disk mirroring.

The database server administrator sees this error. This database server
has not been initialized to support disk mirroring. Before you can add
a mirror chunk, you must reconfigure the database server to support
mirroring.


-146	ISAM error: the other copy of this disk is currently disabled or
non-existent.

The database server administrator sees this error. You must bring the other
chunk of this mirror pair to online status before you can take this
chunk off line.


-147	ISAM error: archive in progress.

The database server administrator sees this error. The action that you have
requested cannot be carried out while an archive is being made. For
example, you cannot add a log or a mirror during archiving. Cancel the
archive or wait until it is complete, and then reissue the command.


-148	ISAM error: dbspace is not empty.

The database server administrator sees this error. You cannot remove a dbspace
until all tables that are in it have been dropped. To find the names of
remaining tables, use the tbcheck or oncheck utility with the -pe
option; its report lists tables by chunk within dbspaces.


-149	ISAM error: IBM Informix OnLine daemon is no longer running.

Your application was in communication with the database server, but the
database server is no longer running. Your current transaction will be
rolled back when the database server goes through fast recovery as it
next starts up. Terminate the application, and contact the database
server administrator to find out what happened and when the database
server will be restarted.


-150	The limits of the IBM Informix Demo Version have been exceeded.

You are using a demonstration version of the database server. This
version has severe limits on the number of tables and the size of the
tables that it can manage. The current operation causes it to exceed
one of those limits. Contact your IBM representative about buying
the production version of the software.


-151	ISAM error: Illegal value in varchar length field.

This internal error occurs when the leading byte in a VARCHAR column on
disk indicates a VARCHAR length greater than the column was defined to
hold when the column was created.

If the error recurs, refer to the information on trapping errors in your
Administrator's Guide or Reference. To acquire additional diagnostics,
contact IBM Technical Support with the diagnostic information.


-152	ISAM error: Illegal message type received from remote process.

This internal error should not occur. Note all the details about the
network software in use and the version level of the database servers
in this and the other host system. If the error recurs, note all
circumstances and contact IBM Technical Support.


-153	ISAM error: not in ISMANULOCK mode.

The ISAM processor has been asked to lock or unlock the current file
(table), but the file was not opened in the appropriate mode. For
C-ISAM programs, review the uses of isopen, and make sure that the
ISMANULOCK flag is passed when the program opens a table for manual
locking. If the error recurs, note all circumstances and
contact IBM Technical Support.


-154	ISAM error: Lock Timeout Expired.

This network operation has been suspended, awaiting a response from
another database server, for the maximum duration allowed. The local
database server assumes that a distributed deadlock exists and that
this user request is awaiting a resource that was locked by a user in a
different system, which is awaiting a resource that this user owns.
Roll back the current transaction, and retry it after a delay. If this
error occurs frequently, ask the database server administrator to adjust
the length of the deadlock time-out interval.

This code is also returned when an explicit wait time limit expires;
that is, if you have SET LOCK MODE TO WAIT 3, and your request is
queued for more than 3 seconds for a lock, the operation ends with this
ISAM error code.


-155	ISAM error: Primary and Mirror chunks are bad.

The primary chunk (and the mirror chunk, if one exists) are unusable.
Roll back the current transaction and terminate the application.
Contact the database server administrator. New disk chunks must be 
defined, and then the system must be restored.


-156	ISAM error: Cannot attach to shared memory.

Unable to attach to shared memory. Look for operating-system messages
that might give more information. After you verify that no system
limit or local problem exists, note all circumstances and contact
IBM Technical Support.


-157	ISAM error: Interrupted ISAM call.

An interrupt that was detected from client process has terminated the
operation. Restart the operation.


-158	ISAM error: Operation disallowed on SMI pseudo table.

You have attempted an SQL operation that is not supported on System
Monitoring Interface (SMI) pseudo tables. Try another operation.


-159	ISAM error: Collation sequence invalid.

You are attempting to use a collation sequence that is either not
supported or does not match the sequence originally used to create the
ISAM file. Use islanginfo() to determine the language of the ISAM
file.


-160	ISAM error: only one TEXT or BYTE field may be open at any time.

This internal error should not occur. The database server has called
the isbopen function twice in a row. If the error recurs,
note all circumstances and contact IBM Technical Support.


-161	ISAM error: no TEXT or BYTE field is open.

This internal error should not occur. The database server has called a
TEXT or BYTE function without first calling isbopen. If the error
recurs, note all circumstances and contact IBM Technical
Support.


-162	ISAM error: Storage space does not exist.

The most likely cause of this error is that the current statement
attempts to define a BYTE or TEXT column using the clause IN blobspace,
but no storage space of that name has been defined. However, if the
storage space was correctly spelled and should exist, a reserved page in
the root dbspace might have been corrupted. In that case, the database
server administrator should run tbcheck -cr, oncheck -cr, or onutil to
check the situation. If the statement makes no reference to TEXT or
BYTE columns, possibly the root dbspace is full or corrupted; contact 
the database server administrator for further help.


-163	ISAM error: begin and end page stamps are different.

The database server is reporting evidence of corruption of the
database. Each disk page has time stamps at each end that should be
identical when the page is read from disk. This test of data integrity
has failed, indicating either that a disk page was not fully written to
disk or that one has been partially overwritten on disk or in memory.
In any case, you should roll back the current transaction and terminate
the application. Then notify the database server administrator, who should 
run the tbcheck, oncheck, or onutil utility to get more information about 
the failure.


-164	ISAM error: TEXT or BYTE stamp is incorrect.

This operation has returned an invalid BYTE or TEXT value. Possibly the
data pages have been corrupted. Roll back the current transaction. Have
the database server administrator use tbcheck -D, oncheck -D, or
onutil to get more information about the problem.

If the program is operating with Dirty Read or Committed Read
isolation, this code might indicate that another process or thread has
deleted the BYTE or TEXT value and its pages have been partly
reallocated to an unrelated value. A program using Dirty Read isolation
can read rows that have been deleted if the deletion has not yet been
committed. If the deletion is committed while the program is reading a
BYTE or TEXT value, and if the space allocated to the value is reused
for some other program, this error code might be returned.

When a program uses Committed Read isolation, it does not see a row
that has been marked for deletion; however, no lock is placed on a row
that is not read for update. BYTE or TEXT data is read in a second
step, after the row has been fetched. During this lengthy step, it is
possible for another program to delete the row and commit the deletion
and for the storage space to be reused. To determine if this has occurred,
the program should stop processing the BYTE or TEXT value and reread
the row. If the program can no longer read the other fields in the
row, the row has been deleted. If the program can still read the row,
the storage space is corrupted.


-165	ISAM error: TEXT or BYTE column does not exist.

This internal error should not occur. The database server has called
the isbcreate function for a table column that is not defined as BYTE
or TEXT. If the error recurs, note all circumstances and contact
IBM Technical Support.


-166	ISAM error: Storage space is full.

This operation attempts to insert or update the value of a BYTE or TEXT
column, but not enough space is available in the storage space in which
that column is stored. Roll back the current transaction, and terminate
the application. Then ask the database server administrator to add a
chunk of disk space to this storage space.

When BYTE and TEXT values are deleted or replaced, the pages that they
occupy in the storage space do not become available for reuse until the
logical log in which that transaction appears has been freed. A logical
log has been freed if the log is backed up to tape and all transactions
in the log are closed.


-167	ISAM error: Storage-space size is not multiple of PAGESIZE.

The database server administrator sees this error. When you define a
storage space, you must specify a page size that is an integral multiple of
the system page size. The system page size is set in the Parameters
screen when the database server is first initialized.


-168	ISAM error: archive is blocking storage space allocation.

Allocation of disk pages in a storage space is frozen while an online
archive is being made. Therefore, pages that contain TEXT or BYTE data
at the time that the archive began are not freed and overwritten by new
pages before they can be written to the archive tape. As soon as all
the used pages in the chunk are archived, allocation in that chunk can
resume. Normal row data can go on changing while the archive is being
made because changed dbspace pages can be written, or rewritten, on the
tape at any point.


-169	ISAM error: Pages for TEXT or BYTE data can't be allocated from
a chunk until chunk add is logged.

When a storage space containing TEXT or BYTE data has been extended by
adding a new chunk, no pages can be allocated until the log record
showing the addition of the chunk has been logged. If this rule were
not enforced, certain anomalies could occur during recovery. You do not
have to wait until the log is full; you can run the tbmode or onmode
utility with the -l option to force a switch to the next log.


-170	ISAM error: illegal use of a storage space for TEXT or BYTE data.

You attempted to add a log to a storage space for TEXT or BYTE data.
You can add logs only to dbspaces.


-171	ISAM error: ISAM file format change detected.

A program that uses a particular locking method or index-node size has
attempted to access an ISAM file that was created using a different
locking method or index-node size.

If you are migrating files from a platform that uses another index-node
size, you must run the bcheck or secheck utility with the -s option
against all of the ISAM files (.dat and .idx) to resize the index
nodes.

For IBM Informix SE, if you are migrating applications between platforms
that use different locking methods, you must set the environment
variable RESETLOCK to convert ISAM files as you access them. You can
access all files for a given database by running UPDATE STATISTICS in
that database, if time permits.

For C-ISAM applications, if you are migrating applications between
platforms that use different locking methods, you must set the
environment variable RESETLOCK to convert C-ISAM files as you access
them.


-172	ISAM error: Unexpected internal error.

You encountered an unanticipated internal event. Consult the online.log
to see if the diagnostics preserved any additional information
regarding this event. If the error recurs, refer to your Administrator's
Guide to acquire additional diagnostics. Contact IBM Technical Support
with the diagnostic information.


-173	ISAM error: An error has occurred during logical log back up.

This generic message indicates that the logical-log backup has failed.
The SQL API also contains useful error text that is associated with
this error.


-174	ISAM error: An error has occurred during archive back up.

This generic message indicates that the archive backup has failed. The
SQL API also contains useful error text that is associated with this
error.


-175	ISAM error: Cannot get lock while holding a buffer.

This message indicates an internal error when attempting to lock a
row while holding a buffer. The database server will attempt to
retry the operation.


-176	ISAM error: An error has occurred during physical restore.

This generic message indicates that the physical restore has failed.
The SQL API also contains useful error text that is associated with
this error.


-177	ISAM error: An error has occurred during logical restore.

This generic error indicates that the logical restore has failed. The
SQL API also contains useful error text that is associated with this
error.


-178	ISAM error: Database is locked; pending change to logging mode.

A request has been made to change the logging status of a database.
Until a level-0 archive is done for all the storage spaces that the
database uses, access to the database is blocked.


-179	ISAM error: No free disk space for sort.

While performing a sort, the database server did not find enough
contiguous free disk space to create necessary temporary files. You
might have insufficient disk space and need to make more disk space
available before you run the program again. You might have made an
error when you specified the names of temporary dbspaces in DBSPACETEMP
or directory names in PSORT_DBTEMP. Check the spelling of your
temporary space names as specified in DBSPACETEMP. If you specified
multiple temporary dbspaces, check that you used colons (:) or commas
(,) as delimiters.


-181	ISAM error: No Optical Subsystem connection.

The Optical subsystem is not present. This message usually means that
you requested an Optical operation on a database server that
is being used without the Optical subsystem or IBM Informix OnLine/Optical.


-182	ISAM error: Duplicate optical BLOBSpace name.

A storage space for TEXT or BYTE data has been defined with the same
name as an Optical family name.


-183	ISAM error: DDR log post processing is already active.

This message indicates an internal error when attempting to start 
DDR log post processing when it is already active.


-185	ISAM error: DDR log post processing is not active.

This message indicates that ER is down.


-186	ISAM error: Cannot open partition. Online create/drop index in progress.

The current operation is trying to open a partition on which a online 
create/drop index is in progress. Wait a short time, and try again. 

-187	ISAM error: User Defined Routine execution failed.

A user-defined routine (UDR) failed to execute properly. Typically, this
occurs when the UDR raises an error.

For more specific information, see the message log.


-188	ISAM error: Cannot add transaction logging on a DR primary with DR on.

Transaction logging cannot be added to a database on the primary
database server of a data replication (DR) pair while DR is in use.
DR has to be turned off for transaction logging to be added.

Adding transaction logging to a database after turning DR off requires
bringing up the DR pair again through a level-0 archive on the primary
database server and its physical restore on the secondary database
server. Restarting DR is necessary to avoid DR failures due to
inconsistencies between the primary and secondary database servers,
caused by the addition of transaction logging.


-190	ISAM error: Transaction table overflow.

No more slots are available in the transaction table. To see this
table, run onstat with the -x option.


-191	ISAM error: No such chunk.

The chunk that was specified to be dropped does not exist.


-192	ISAM error: Cannot drop first chunk.

The first chunk of a storage space is never a candidate to be
dropped. Select a different chunk.


-193	ISAM error: Chunk is busy.

Logical recovery cannot roll forward a chunk add because the chunk
already exists. This error results when the chunk is dropped from a
storage space, or the space is dropped, and the chunk is reused
for another storage space without a level-0 backup performed first.


-194	ISAM error: Chunk not empty.

A chunk is not empty and therefore cannot be dropped.


-195	ISAM error: No miscellaneous vp.

This message indicates that no VP exists for miscellaneous VP class.


-196	ISAM error: Operation not allowed in temporary dbspace.

An operation was executed on a temporary dbspace that required
functionality that temporary dbspaces do not provide (most likely
logging). Use a nontemporary dbspace for this operation.


-197	ISAM error: Cannot open a recently appended logged partition for writing.

A level-0 backup is needed before you can write to the target database. 
If this error recurs after a level-0 backup, note all circumstances and contact 
IBM Technical Support.


-198	Cannot alter table. Too many in-place alters of the table in progress.

Informix limits the number of outstanding in-place ALTER TABLE requests
to 255. A 256th in-place alter of a table was requested before the
completion of the first in-place alter. Completion means that all rows
of the table in the first in-place alter have been physically altered.

To recover from this error, you must take one of the following steps:

    *   Wait until the first in-place alter is complete, and issue
	another in-place ALTER TABLE statement.

    *   Change the format of the ALTER TABLE statement to request an
	alter that does not add columns to the end of the table. Such a
	statement will use the older algorithm instead of the in-place
	alter algorithm.

    *   Perform an update of each row in the table to force the
	outstanding alters to complete. Because rows are only modified
	to the latest schema as they are updated, the only way to force
	an in-place alter to complete physically is to update each row
	in the table. To accomplish this result, use a dummy update in
	which a column in the table is set to its own value. The dummy
	update forces the row to be updated to the latest schema in the
	process without actually changing column values. Rows are
	always altered to the latest schema, so a single pass through
	the table that updates all rows will complete all outstanding
	in-place alters.


-199	ISAM error: Dbspace is full.

The dbspace is full. If you are adding a logical log through onparams, there
is not enough space in the dbspace for a log of the size specified. This
error also occurs if you attempt to create a temporary table with log
(the default log setting for temporary tables) when the DBSPACETEMP variable
in ONCONFIG is set to TEMP or NOTCRITICAL. 

To add the logical log, either add one or more chunks to the dbspace or
specify a smaller log size.

To create temporary tables, either set DBSPACETEMP to ALL or create
temporary tables with no log.

-199	Smart Disk Error.

An error has occurred with the Smart Disk system. For more information,
see the accompanying message.


-200	Identifier is too long.

An SQL identifier exceeded the maximum number of characters. In IBM Informix
Dynamic Server 9.2x or later, the maximum length for identifiers in SQL
statements is 128 characters. In other Informix database servers, the
maximum length for identifiers in SQL statements is 18 characters.

Check that no identifier in the statement is longer than the maximum
length and that no punctuation error, such as a missing space or comma,
combines two identifiers into one.


-201	A syntax error has occurred.

This general error message indicates mistakes in the form of an SQL
statement. Look for missing or extra punctuation (such as missing or
extra commas, omission of parentheses around a subquery, and so on),
keywords misspelled (such as VALEUS for VALUES), keywords misused (such
as SET in an INSERT statement or INTO in a subquery), keywords out of
sequence (such as a condition of "value IS NOT" instead of "NOT value
IS"), or a reserved word used as an identifier.

Database servers that provide full NIST compliance do not reserve any
words; queries that work with these database servers might fail and
return error -201 when they are used with earlier versions of IBM Informix
database servers.

The cause of this error might be an attempt to use round-robin syntax with
CREATE INDEX or ALTER FRAGMENT INIT on an index. You cannot use round-robin
indexes.

The error may also occur if an SQL statement uses double quotation marks 
around input strings and the environment variable DELIMIDENT is set. 
If DELIMIDENT is set, strings that are surrounded by double quotation 
marks are regarded as SQL identifiers rather than string literals. For 
more information on the usage of DELIMIDENT, see the IBM Informix Guide to 
SQL: Reference.


-202	An illegal character has been found in the statement.

A character that cannot be interpreted as part of an SQL statement is
embedded in this statement. If a program constructed the statement, the
character might be a nonprinting control character. Make sure the
statement contains only printable ASCII characters, and reexecute it.


-203	An illegal integer has been found in the statement.

Where an integer value is expected, an unacceptable numeric constant
appears. Inspect the statement and look for numbers that should be
integers but that contain a decimal point or the letter e or that are
larger than 2,147,483,647 ((2 to the 31st power) - 1).


-204	An illegal floating point number has been found in the statement.

A numeric constant that is punctuated like a floating-point number
(with a decimal point and/or an exponent starting with e) is
unacceptable. Possibly the exponent is larger than can be processed.


-205	The statement failed because you cannot use ROWID for views with union, 
intersect, minus, aggregates, group by, multiple tables, or derived tables.

The keyword ROWID stands for a virtual column that exists only in
simple tables. This message refers to the ROWID of a table that is
actually a view that is based on a selection involving union/intersect/minus, 
aggregate functions, grouping, a join of two or more tables, or derived 
expressions. Such query products do not have ROWID columns. Therefore this 
view does not have a ROWID, even though it appears to be a table. In order to 
use ROWID in a query, you have to apply the query to the tables that underlie 
the view.


-206	The specified table <table-name> is not in the database.

The database server cannot find a table or view specified in the statement.
The table or view might have been renamed or dropped from the database.

You might also get this message if you omit the keyword "TYPE" when you are
trying to grant USAGE privileges on a user-defined type. For example, the
following GRANT statement is correct:

   GRANT USAGE ON TYPE person_row_type TO usr2;

The following GRANT statement, however, generates error -206:

   GRANT USAGE ON person_row_type TO usr2;

Check the names of tables and views in the statement or check for omission
of the keyword "TYPE" in a GRANT statement. If the names are spelled as you
intended and "TYPE" is not missing, check that you are using the database
you want. To find the names of all tables in the database, query the 
systables table. To find the names of all views, query the sysviews table.


-207	Cannot update cursor declared on more than one table.

The cursor that is used in this statement was declared FOR UPDATE but
with a SELECT statement that joins two or more tables. This action is
not supported; the database server does not know how to distribute
update values across multiple tables. If you declared the SELECT
statement with the cursor, modify either it or the FOR UPDATE clause.
If a program constructed the SELECT statement and associated it with
the cursor dynamically, the program should inform its user not to use a
multitable SELECT statement in this application. (This message occurs
only with Version 4.0 or earlier.)


-207	Cannot declare a SELECT INTO statement FOR UPDATE.

When you declare a cursor, you may not use both the INTO clause and the
FOR UPDATE clause. To use this cursor to update selected rows, omit the
INTO clause. Instead, use an INTO clause on the FETCH statement (or in
4GL, the FOREACH statement).


-208	Memory allocation failed during query processing.

The database server needed to allocate data-space memory in order to
process the query, but none was available. This error may reflect a
hardware limit, an operating-system configuration limit, or a temporary
shortage of space.

Try the query again after a delay. If it still fails, consult your
system administrator. If possible, revise your query to join fewer
tables, to order or group on fewer columns, or to operate in two or
more separate statements. On DOS systems, exit to the operating-system
command line, free some disk space or reduce the complexity of your
program, and resubmit the program.

In versions later than 5.01, only this error message informs you that
the database server is unable to allocate memory.


-209	Incompatible database format.

An obsolete version of the database software built this database.
Convert the database to work with the current software. Use the
dbupdate utility. You will have to run it before you use the data.
(This message is not current since Version 4.0.)


-210	Explicit path name too long.

This statement contains a file pathname that exceeds the maximum length
of 64 characters. Inspect the statement to make sure that the pathname
is that long. It is possible a punctuation error caused other
parts of the statement to be included in the pathname. If this is not
the case, either relocate the file or rename some directories along the 
path with shorter names.


-211	Cannot read system catalog <error-text>.

The database server refers to the tables of the system catalog while it
processes most statements. When it cannot read one of these important
tables, a serious error results. Check the accompanying ISAM error code
for more information. The effect of the error depends on the statement
that is being executed and the particular table, as follows:

    *   CREATE TABLE statement, systabauth not read; the table is
	created, but PUBLIC is not granted authorization as it normally
	is.

    *   DROP TABLE statement, systables not read; no action taken.

    *   DROP TABLE statement, sysviews not read; the table is dropped
	but any views that depended on the table were not automatically
	dropped.

    *   DROP VIEW statement, sysviews not read; no action taken.

    *   DROP INDEX statement, sysindexes or systables not read; no
	action taken.

    *   DROP SYNONYM statement, systables or syssynonyms not read; no
	action taken.

    *   DROP DATABASE statement, systables not read; no action taken.

    *   START DATABASE statement, systables not read; no action taken.

    *   DATABASE statement, systables or sysusers not read; the
	database was not selected (no current database; for subsequent
	operations, see error -349). If this error was accompanied by 
        ISAM error 103, try setting GL_USEGLU=1 in your environment 
        before starting the instance.

Other statements might be partially complete before the error is detected.
Roll back the current transaction and then investigate the cause of the
error. Use the oncheck utility (secheck with IBM Informix SE or oncheck with
IBM Informix OnLine) to check and repair indexes. If necessary, restore the
database from backup and logical-log tapes.


-212	Cannot add index.

This statement attempts to add an index, either explicitly with CREATE
INDEX or implicitly as part of processing a SELECT on multiple
unindexed tables. In any case, some error prevents the index from being
created. For more information, check the accompanying ISAM error code.
Insufficient disk space is a common cause of this problem.


-213	Statement interrupted by user.

The database server received an interrupt signal from the user,
probably because the user pressed the interrupt key (usually Delete or
Control-C). The statement ended early. A program should roll back the
current transaction and terminate gracefully. If the statement could
modify a table, an interactive user should execute the ROLLBACK WORK
statement to remove any partial modifications.


-214	Cannot remove file for table table-name.

The database server cannot completely remove the table. Check the
accompanying ISAM error code for more information. Problems with
operating-system file permissions, read-only files, or hardware might
cause this error.


-215	Cannot open file for table table-name.

The database server cannot open the operating-system file or files in
which the table is stored. Check the accompanying ISAM error code for
more information. Problems with operating-system file permissions,
insufficient memory, or hardware might cause this error.


-216	Cannot remove index.

The database server cannot completely drop an index. Check the
accompanying ISAM error code for more information. Problems with
operating-system file permissions, read-only files, or hardware
might cause this error.


-217	Column column-name not found in any table in the query
(or SLV is undefined).

The name appears in the select list or WHERE clause of this query but is
not defined in a table and does not appear as a statement local variable
(SLV) definition. Check that the column name or SLV name and the names of
the selected tables are spelled as you intended.

If all names are spelled correctly, you are not using the right tables,
the database has been changed, or you have not defined the SLV. If the
name not found is a reference to a column, that column might have been
renamed or dropped. If the name not found represents an SLV and you
defined the SLV in the statement, make sure that the SLV definition
appears before all other references to that SLV name.

This error message can also appear during the execution of an ALTER TABLE
statement when the engine tries to update views that depend on the table.


-218	Synonym synonym-name not found.

The synonym is not defined in this database. Check that the name is
spelled as you intended. Check that you are using the right database.
If so, the synonym was probably dropped. Possibly it was dropped
automatically when the table for which it stood was dropped. To display
all defined synonyms, query systables as follows:

SELECT tabname FROM systables WHERE tabtype = 's'


-219	Wildcard matching may not be used with non-character types.

The WHERE clause in this statement includes a test of a noncharacter
column using the LIKE or MATCHES keyword and the special characters
that stand for multiple characters (for example, asterisk and question
mark in MATCHES and percent and underscore with LIKE). Use these tests
only with columns that are defined as CHAR or VARCHAR in the database.
No automatic data conversion is provided. Check that the columns in the
WHERE clause are as you intended. If so, the definition of the table
has probably changed.


-220	There is no FROM clause in the query.

Every SELECT statement must include a FROM clause to name the table or
tables that it queries. Check that FROM was spelled and that no extra
semicolon ends the statement prematurely. To select only a constant, or
to select the only value of a function that is unrelated to any table
(such as USER or TODAY), you nevertheless have to name a table. You can
select a known row from a system catalog, as in this example.

SELECT 'today is', TODAY, 'and I am', USER FROM systables
        WHERE tabid = 100

The tabid value of the first user-defined table in a database is always
100, so this query always returns exactly one row if any tables are
defined. (Version 4.1 and later produce syntax error -201 when the
FROM clause is missing.)


-220	Cannot begin savepoint.

Version 4.1 and later can detect this internal error. If the error
recurs, note all circumstances and contact IBM Technical Support.


-221	Cannot build temporary file for new table table-name.

The database server cannot create a temporary disk file. The file
should be created in the directory specified by the DBTEMP environment
variable. If DBTEMP is not defined, the database server searches by
default in the root directory for a subdirectory named tmp in which to
create the temporary disk file. Check the accompanying ISAM error code,
and look for operating-system error messages that might give more
information. Possibly your account does not have write permission in
that directory, or the disk might be full. Since Version 5.01,
IBM Informix SE database server uses the DBTEMP environment variable, but
IBM Informix Dynamic Server and IBM Informix OnLine Dynamic Server do not.


-222	Cannot write to temporary file for new table table-name.

The database server created a temporary disk file but received an error
while it attempted to write into the file. Check the accompanying ISAM
error code, and look for operating-system messages that might give more
information. On UNIX systems, the file should have been created in the
directory specified by the DBTEMP environment variable (/tmp by
default); on DOS systems, the file should be in the current directory.
Possibly that disk is full, or a hardware error occurred. Since Version
5.01, the IBM Informix SE database server uses the DBTEMP environment
variable, but IBM Informix Dynamic Server and IBM Informix OnLine Dynamic
Server do not.


-223	Duplicate table name table-name in the FROM clause.

The table name appears twice in the list that follows the word FROM.
Review the statement to see if you intended to name some other table
the second time. If you intended to join a table to itself, use a table
alias for the second and subsequent instances of the table. The
following example shows one way to find customers with the same last
name:

SELECT main.lname, main.customer_num, sub.customer_num FROM customer
main, customer sub WHERE main.lname = sub.lname AND main.rowid !=
sub.rowid

When you use table aliases (the words main and sub in the example), the
table may be selected from two or more times.


-224	Cannot open transaction log file.

The database server cannot open the file in which transaction-log
entries are made. No transactions can start until this file is
repaired. (In an ANSI-compliant database, nothing can be done; in other
databases, only queries can be made.) Report this problem to the
database server administrator. For IBM Informix SE database servers, check
the accompanying ISAM error code, and look for operating-system error
messages that might give more information. A START DATABASE statement
specifies the path to the log file. If the file has been deleted, you
can re-create it as an empty file. If the path has changed, you can
issue a new START DATABASE statement to redefine it.


-225	Cannot create file for system catalog table-name.

The database server is trying to create one of the tables for the
system catalog, probably as part of a CREATE DATABASE statement. A
problem with the host operating system prevents it. Check the
accompanying ISAM error code for more information, and look for
operating-system error messages. A shortage of disk space or
operating-system file-access permission problems probably caused this
error.


-226	Cannot create index for system catalog table-name.

The database server is trying to create one of the tables for the
system catalog, probably as part of a CREATE DATABASE statement. It
created the table, but a problem with the host operating system
prevents it from making an index. Check the accompanying ISAM error
code for more information, and look for operating-system error
messages. Insufficient disk space probably caused this error.


-227	DDL operations on ROWID prohibited.

This statement attempts to change the column named ROWID. That column
is a part of every table except a fragmented table. You can select it
with a SELECT statement and compare it in a WHERE clause, but you
cannot alter it with a DDL statement.


-228	UPDATE or INSERT on ROWID prohibited.

This statement names the column ROWID in the list of columns for
insertion or update. The row ID is an intrinsic property that cannot be
modified. You can select it in a SELECT statement and compare it in a
WHERE clause, but you cannot modify its contents.


-229	Could not open or create a temporary file.

The database server cannot create a temporary disk file. The file
should be created in the directory that the DBTEMP environment variable
specifies (or /tmp by default on UNIX systems). Check the accompanying
ISAM error code and look for operating-system error messages that
might give more information. Possibly your account does not have write
permission in that directory, or the disk is full. Since Version 5.01,
the IBM Informix SE database server uses the DBTEMP environment variable,
but IBM Informix Dynamic Server and IBM Informix OnLine Dynamic Server do not.

On a UNIX system, try increasing the maximum number of open files
(NFILES parameter on some systems) to approximately 400.


-230	Could not read a temporary file.

The database server created a temporary file in the directory specified
by the DBTEMP environment variable (or /tmp by default on UNIX systems)
but encountered an error when it tried to read the file back. Check the
accompanying ISAM error code, and look for operating-system error
messages that might give more information. Possibly a hardware failure
occurred, or possibly another user erased the temporary file
accidentally. Since Version 5.01, the IBM Informix  SE database server uses
the DBTEMP environment variable, but IBM Informix Dynamic Server and
IBM Informix OnLine Dynamic Server do not.


-231	Cannot perform aggregate function with distinct on expression.

This statement selects DISTINCT (expression) within an aggregate
function. This action is not supported. Select the DISTINCT value and
other columns into a temporary table; then select ALL from that table
applying the aggregate function.


-232	A SERIAL column column-name may not be updated.

You cannot alter the contents of a column with the SERIAL or SERIAL8 or
BIGSERIAL data type in the UPDATE statement, even when the updating value 
is zero. (You can specify a value of zero for a serial column when you use 
the INSERT statement; the database server ignores the zero and inserts a 
generated number.) Revise the statement so that only nonserial columns are
updated.


-233	Cannot read record that is locked by another user.

Another user has locked a row that this statement selects. If you
executed the statement interactively, you can do one of two things. You
can wait a short time and reenter the statement. Or you can execute the
statement SET LOCK MODE TO WAIT, after which you will rarely see this
message again.

In a program, you should roll back the current transaction, wait for an
interval of random length, and rerun the transaction. If you run the
transaction with a LOCK MODE of WAIT, you can reduce the frequency of
this error. But it can still arise in some cases, such as when deadlock
is detected. An ISAM error code (-107, -113, -134, -143, -144, or
-154) usually accompanies this error, and a program might need to make
a different response to each of these errors.


-234	Cannot insert into virtual column column-name.

This INSERT statement is directed to a view, not to a real table, and
one of the columns that is defined in the view is actually the value of
an expression. Insertions and updates are not allowed on views that
have such columns. Apply the INSERT to the real table on which the
view is based.


-235	Character column size is too big.

This statement specifies a width for a column of CHAR data type that is
greater than 32,767, or a width for a VARCHAR column that exceeds 255.
If you need a column of this size, use the TEXT data type, which allows
unlimited lengths. Otherwise, inspect the statement for typographical
errors.


-236	Number of columns in INSERT does not match number of VALUES.

Each column that is named or implied in an INSERT statement must have a
separate value expression. If the statement does not list specific
columns, review the definition of the table for the number of columns
and their data types. Also check that the list of expressions in the
VALUES clause has no extra or missing comma that might result in an
incorrect number of values. Be especially careful of long character
strings and expressions with parentheses.


-237	Cannot begin work.

The database server cannot execute a BEGIN WORK statement. Check the
accompanying ISAM error code for more information. A problem probably
exits in accessing the transaction log.


-238	Cannot commit work.

The database server cannot execute a COMMIT WORK statement. Check the
accompanying ISAM error code for more information. A problem probably
exists in accessing the transaction log.


-239	Could not insert new row - duplicate value in a UNIQUE INDEX
column.

The row that is being inserted (or being updated to have a new primary key)
contains a duplicate value of some row that already exists, in a column or
columns that are constrained to have unique values. Another cause of this
error might be a locking conflict if the table lock mode is page. The new
or updated row is not inserted.

Roll back the current transaction and execute it again without any
duplicate rows or with the locking conflict resolved.

If you are using repeatable read isolation, then the error could be due
to a unique constraint being violated. Refer to error -268.


-240	Could not delete a row.

The database server cannot finish execution of a DELETE statement. Roll
back the current transaction; then check the accompanying ISAM error
code for more specific information.


-241	Cannot rollback work.

The database server cannot execute a ROLLBACK WORK statement. Check the
accompanying ISAM error code for more information. A problem probably
exists in accessing the transaction log.


-242	Could not open database table table-name.

The database server cannot begin reading a table. Check the
accompanying ISAM error code for more information. The problem might be
file permissions, a hardware error, or a corrupted system catalog.
Unless the ISAM error code or an operating-system message points to
another cause, run the bcheck or secheck utility to verify file
integrity.


-243	Could not position within a table table-name.

The database server cannot set the file position to a particular row
within the file that represents a table. Check the accompanying ISAM
error code for more information. A hardware error might have occurred,
or the table or index might have been corrupted (truncated). Unless the
ISAM error code or an operating-system message points to another cause, 
run the oncheck utility (secheck with IBM Informix SE or tbcheck with 
IBM Informix OnLine) to check and repair table and index. 


-244	Could not do a physical-order read to fetch next row.

The database server cannot read the disk page that contains a row of a
table. Check the accompanying ISAM error code for more information. A
hardware problem might exist, or the table or index might have been corrupted. 
If the query was using the dirty read isolation level, this error code may be
normal behavior caused by reading data that was in a temporarily inconsistent
state from a concurrent update on the same data.

Unless the ISAM error code or an operating-system message points to another 
cause, run the oncheck utility (secheck with IBM Informix SE or tbcheck with 
IBM Informix OnLine) to check and repair table and index. 


-245	Could not position within a file via an index.

The database server encountered an error when it attempted to look up a
row through an index. Check the accompanying ISAM error code for more
information. The table file or the index file might have been
corrupted. Unless the ISAM error code or an operating-system message
points to another cause, run the oncheck utility (secheck with IBM Informix 
SE or tbcheck with IBM Informix OnLine) to check and repair table and index.


-246	Could not do an indexed read to get the next row.

The database server encountered an error when it attempted to look up a
row through an index. Check the accompanying ISAM error code for more
information. The table file or the index file might have been
corrupted. Unless the ISAM error code or an operating-system message
points to another cause, run the oncheck utility (secheck with IBM Informix 
SE or tbcheck with IBM Informix OnLine) to check and repair table and index.


-247	Rollforward database failed.

The database server could not apply an audit trail to roll a database
forward. Check the accompanying ISAM error code for more information.


-248	Cannot commit savepoint.

Version 4.1 and later products can detect this internal error. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-249	Virtual column must have explicit name.

When you select INTO TEMP, you are creating a table. As with any table,
the columns of a temporary table must all have names. When you select a
single column, the column in the temporary table receives the same
name. When you select an expression, you must supply a name using a
column alias, as in the following example:

SELECT order_num, ship_date, ship_date + 14 expected
        FROM orders INTO TEMP ord_dates

The temporary table ord_dates has three columns, which are named
order_num, ship_date, and expected. The same principle applies to a
view: each column must have a name. When you select every column of a
view from a table, the view can have the same column names by default.
When you derive any column of a view from an expression, you must give
all the columns explicit names, as in the following example:

CREATE VIEW ord_dates(order_num, ship_date, expected)
        AS SELECT order_num, ship_date, ship_date + 14 FROM orders


-250	Cannot read record from file for update.

The database server cannot get a row of a table prior to update. Check
the accompanying ISAM error code for more information. Possibly another
user has locked the row or the table, or possibly a more serious
problem exists.


-251	ORDER BY or GROUP BY column number is too big.

The ORDER BY or GROUP BY clause uses column-sequence numbers, and at
least one of them is larger than the count of columns in the select
list. Check that you entered the clause correctly and that you did not
omit an item from the select list.


-252	Cannot get system information for table.

The database server cannot access system information associated with the
table. Check the accompanying ISAM error code for more information.
Unless the ISAM error code or an operating-system message points to
another cause, run the oncheck utility to verify file integrity.


-253	Identifier length exceeds the maximum allowed by this version
of the server.

An SQL identifier exceeded the maximum number of characters. In IBM Informix
Dynamic Server 9.2x or later, the maximum length for identifiers in SQL
statements is 128 characters. In other Informix database servers, the maximum
length for identifiers in SQL statements is 18 characters.

Check that no identifier in the statement is longer than the maximum
length and that no punctuation error, such as a missing space or comma,
combines two identifiers into one.


-254	Too many or too few host variables given.

The number of host variables that you named in the INTO clause of this
statement does not match the number of columns that you referenced in
the statement.

Locate the text of the statement (in a PREPARE or DECLARE statement) and
verify the number of placeholders. Then review the list in the INTO clause
to see which item or items are incorrect.


-255	Not in transaction.

The database server cannot execute this COMMIT WORK or ROLLBACK WORK
statement because no BEGIN WORK was executed to start a transaction.
Because no transaction was started, you cannot end one. Any database
modifications that were made are now permanent; they cannot be rolled
back but do not need to be committed. Review the sequence of SQL
statements to see where the transaction should have started.

This error can occur when you open a cursor for update and have not started
a transaction yet.


-256	Transaction not available.

You cannot begin a transaction in this database because it does not
have a transaction log. In order to support transactions, you must
start a transaction log. Refer to your Administrator's Guide for
information on how to start a transaction log.


-257	System limit on maximum number of statements exceeded, maximum is
count.

The database server can handle only a fixed number of prepared SQL
statements for each user. This limit includes statements that were
prepared with the PREPARE statement and cursors that were declared with
the DECLARE statement. This statement (PREPARE, DECLARE, or PREPARE
IMMEDIATE) exceeds that limit and is not executed. The FREE statement
releases prepared statements. Review the logic of your program, and
change it so that it frees prepared statements when it no longer needs
them.

Version 5.0 and later database servers do not have this restriction.
However, programs that must be compatible with earlier versions should
use FREE to stay under the limit.


-258	System error - invalid statement id received by the sqlexec
process.

The current statement (EXECUTE or OPEN) refers to a prepared SQL
statement or a cursor that does not exist. Possibly the statement id is
invalid, or possibly the statement was prepared and then released with
the FREE statement. Review the program logic to make sure that the
statement or cursor that is named in this statement is valid, has been
properly prepared or declared, and has not been freed prior to this
point.

If the program executes a prepared DATABASE statement successfully, the
database server automatically frees the prepared statement. As a
result, if you free a prepared DATABASE statement, you will receive
this error on the FREE statement. You can ignore it in this case.


-259	Cursor not open.

The current statement refers to a cursor that has not been opened.
Review the logic of the program to see how it failed to execute the
OPEN statement before it reached this point. Statements that end
transactions (COMMIT WORK and ROLLBACK WORK) also close cursors unless
the cursors are declared WITH HOLD.


-260	Cannot execute a SELECT statement that is PREPAREd - must use
cursor.

Although you can prepare a SELECT statement, the only way you can then
execute that SELECT statement is to associate its statement id with a
cursor (use a DECLARE statement) and then open the cursor.

An important exception is the SELECTINTO TEMP statement, which you can
execute. You cannot use it with a cursor.

You can execute other prepared statements with the EXECUTE statement.
If you know the contents of this SELECT statement at the time you are
writing the program, and if you are certain that it will return only a
single row of data, you can embed it in the program. If it must be
prepared dynamically while the program is running, revise your program
to execute it through a cursor.


-261	Cannot create file for table table-name.

In general, the database server cannot create the file that will
represent this table. Check the accompanying ISAM error code for more
information. The file would be created in the database.dbs directory
(unless you supplied an IN pathname clause) with IBM Informix SE. Its
filename would begin with the first few letters of table-name,
followed by a 3-digit number and the suffix .dat, or .idx.
With IBM Informix SE, a problem might exist with file permissions, or
possibly the disk is full.

IBM Informix Dynamic Server, IBM Informix Universal Server, and IBM Informix OnLine
Dynamic Server allow table fragmentation, which might involve extensive use
of dbspaces. You need to check the dbspace that was specified for the table.
If no dbspace was specified, then the dbspace in which the database was
created is used. For database creation, if no dbspace is specified, then the
rootdbs is used. The specified dbspace might not exist, or the disk might be
full.


-262	There is no current cursor.

This internal error should not occur. Note all the details of the
network software in use and the version number of the database servers
in this and the other host system. If the error recurs, note all
circumstances and contact IBM Technical Support.


-263	Could not lock row for UPDATE.

This statement, probably a FETCH statement that names a cursor
declared FOR UPDATE, failed because the row it should have fetched
could not be locked. Check the accompanying ISAM error code
(usually -107, -113,-134, -143, -144, or -154) for more information.
Probably another program is using the row (-107) or table (-113). You
can use SET LOCKMODE TO WAIT to eliminate these errors, but detection
of deadlock (-143 or -154) and lock table full (-134) can still occur.


-264	Could not write to a temporary file.

The database server created a temporary file in the directory that the
DBTEMP environment variable (or /tmp by default on UNIX systems)
specifies, but it encountered an error when it tried to write data into
the file. To determine the cause of this error, check the accompanying ISAM
error code and look for operating-system error messages that might give 
more invormation.  Possible causes include: hardware failure, a full
disk, or, if PDQ is enabled, insufficient shared memory.


-265	Load or insert cursors must be run within a transaction.

You attempted to open an insert cursor. This database has a transaction
log. In such a database, you must execute a BEGIN WORK statement
before you open a cursor that is declared with an INSERT statement or
with the FOR UPDATE clause. Revise the logic of your program so that it
starts a transaction before it opens the cursor.

You can ensure that the program also works in databases that do not
have a transaction log. Change the program so that immediately after it
executes the DATABASE statement, it saves the contents of the second
element of the SQLAWARN array of warning flags in the SQL
communications area. This element will contain a space if the database
does not use transactions, and the letter W if it uses them. At each
point where a transaction logically begins or ends, test the saved
value. If it contains W, execute the transaction statement to begin or
end a transaction.


-266	There is no current row for UPDATE/DELETE cursor.

The current statement uses the WHERE CURRENT OF cursor-name clause, but
that cursor has not yet been associated with a current row. Either no
FETCH statement has been executed since it was opened, or the most
recent fetch resulted in an error so that no row was returned. Revise
the logic of the program so that it always successfully fetches a row
before it executes this statement.


-267	The cursor has been previously released and is unavailable.

The FREE statement released the resources that are attached to the
cursor named in this statement, or possibly an automatic re-prepare 
was attempted while opening the cursor and it failed, leaving the cursor
unavailable. Before you can use the cursor, you must again prepare the SQL 
statement that is associated with it. If the cursor was declared FOR a 
statement, re-execute its DECLARE statement. If the cursor was declared FOR 
a statement identifier, execute the PREPARE statement again.


-268	Unique constraint <constraint-name> violated.

During execution of this statement, a duplicate value was introduced
into a column or columns that a unique constraint protects. The row
with the duplicate value was not allowed into the table (not inserted
or not updated). For IBM Informix Dynamic Server, any changes that this statement
made prior to the discovery of the duplicate value have been rolled back. (The
effects of preceding statements in the transaction, if there were any, remain
in effect. They must be explicitly rolled back or committed.)

This error occurs in a logging database. However, if you are using
repeatable read isolation, error -239 will display instead.


-269	Cannot add column column-name that does not accept nulls.

This statement requests a new column that has the NOT NULL constraint.
However, when a column is added to an existing table, null values have
to be installed in the existing rows. Define a new table that includes
this column, then INSERT the data from the old table into it to provide
some suitable nonnull values for this column.


-270	Could not position within a temporary file.

The database server created a temporary file in the directory specified
by the DBTEMP environment variable (or /tmp by default on UNIX systems)
but encountered an error when it tried to position (seek) within it.
Check the accompanying ISAM error code, and look for operating-system
error messages that might give more information. Possibly a hardware
failure occurred, or another user truncated the file. Since Version
5.01, the IBM Informix SE database server uses the DBTEMP environment
variable, but IBM Informix Dynamic Server and IBM Informix OnLine Dynamic Server
do not.


-271	Could not insert new row into the table.

This problem has many possible causes, including a locked table or a
full disk. Check the accompanying ISAM error code for more
information.


-272	No SELECT permission for table/column.

The person who created this table has not granted Select privilege to
your account name or to the public for the table or the column. The 
owner of the table or the DBA must grant this privilege before you can 
select data from the table or column.

This error message may also occur if you are using the LOAD command in
DB-Access because DB-Access uses the SELECT command to get information
about a table before loading or inserting rows.


-273	No UPDATE permission for table/column.

The person who created this table has not granted Update privilege to
your account name or to the public for the table or the column. The 
owner of the table or the DBA must grant this privilege before you can 
update a row in this table or update the column.


-274	No DELETE permission for table.

The person who created this table has not granted Delete privilege to
your account name or to the public. The owner of the table or the DBA
must grant this privilege before you can delete a row in this table.


-275	The Insert privilege is required for this operation.

The Insert access privilege on this table or column is not currently
held by your account name, nor by the PUBLIC group, nor by your current
role. The owner of the table or the DBA must grant the Insert privilege
before you can insert a row into this table.

This error is also returned when you attempt to insert a row into a view
that is not updatable. A view is not updatable unless all of the following
conditions are true:
  1.  All of the columns in the view are from a single table.
  2.  No columns in the projection list are aggregate values.
  3.  No UNIQUE or DISTINCT keyword is in the SELECT projection list.
  4.  No GROUP BY clause nor UNION, INTERSECT, or MINUS operator is in the view 
      definition.
  5.  The query selects no calculated values and no literal values.

If only the first condition is false, and you hold the Insert and
Select access privileges on all of the columns in the view, then
you can define on the view an INSTEAD OF trigger whose triggered
action inserts values into the base tables of the view, and use the
trigger to perform the update.


-276	Cursor not found.

The cursor that is named in this statement was not declared in the
current session. The current session runs from the execution of a
DATABASE statement to the next DATABASE or CLOSE DATABASE statement.
Review the logic of the program to see that it executes the DECLARE
statement for this cursor after the DATABASE statement.


-277	UPDATE table table-name is not the same as the cursor table.

This UPDATE WHERE CURRENT OF cursor statement refers to a different
table than the table referenced by the SELECT statement that was
declared with the cursor. Review the program logic to make sure that an
update through a cursor updates only the table that the cursor is
reading. This message also applies to cursor statements that use DELETE
WHERE CURRENT OF.


-278	Cannot rollback savepoint.

This is an internal error. If the error recurs, please note all 
circumstances and contact IBM Technical Support.


-279	Cannot grant or revoke database privileges for table or view.

This statement names one or more of the database-level privileges
(CONNECT, RESOURCE, and DBA), but it also uses the ON table-name
clause. A statement that does not mention a particular table (does not
contain the ON clause) must grant or revoke the database-level
privileges. The table-level privileges such as INSERT require an ON
clause. Do not mix the two kinds in the same statement.


-280	A quoted string exceeds 256 bytes.

A character literal in this statement exceeds the maximum length. Check
the punctuation and length of all quoted strings in the statement.
Possibly two missing quotes make a long string out of two short ones.
You must revise the statement to use a shorter character string.


-281	Could not add index to a temporary table.

Check the accompanying ISAM error code to find out the specific
problem, and look for operating-system error messages that might give
more information. Possibly the disk is full.


-282	Found a quote for which there is no matching quote.

Inspect the current statement, examining the punctuation of all quoted
strings. To include the quote character in a literal string, use single
apostrophes as string delimiters, as in the following example:

SELECT '"', fname,'"', "''", lname, "''" FROM customer


-283	Found a non-terminated comment ("{" with no matching "}").

Inspect the current statement, and examine the punctuation of comments
and quoted strings. You can use curly braces to insert comments into
SQL statements, but the braces must balance. Or you can use the
double-hyphen to append comments to the end of a line.


-284	A subquery has returned not exactly one row.

A subquery that is used in an expression in the place of a literal
value must return only a single row and a single column. In this
statement, a subquery has returned more than one row, and the database
server cannot choose which returned value to use in the expression. You
can ensure that a subquery will always return a single row. Use a WHERE
clause that tests for equality on a column that has a unique index. Or
select only an aggregate function. Review the subqueries, and check
that they can return only a single row.

This error can also occur when you use a singleton SELECT statement to
retrieve multiple rows. You must use the DECLARE/OPEN/FETCH series of
statements or the EXECUTE INTO statement to retrieve multiple rows.


-285	Invalid cursor received by sqlexec.

The cursor that this statement uses has not been properly declared or
prepared, or the FREE statement has released it, or an automatic re-prepare
has been attempted while opening the cursor but that operation failed,
leaving the cursor unavailable. Review the program logic to ensure that the
cursor has been declared. If it has, and if the DECLARE statement refers to
a statement identifier, check that the referenced statement has been prepared.


-286	Default value of the primary key column column-name is NULL.

A column that is part of a primary key cannot have null as its default
value.


-287	Cannot add serial column column-name to table.

You cannot add a column of SERIAL or SERIAL8 or BIGSERIAL data type to 
an existing table. Such columns may not contain null values, but when 
you add a column, the database server must put null values in all 
existing rows. You can add a serial column in three steps. First, add 
the column with an INTEGER data type. Then update the table with nonnull, 
unique values in each row of the new column. Finally, use ALTER TABLE 
MODIFY to change the data type of the column to SERIAL or SERIAL8 or BIGSERIAL.


-288	Table table-name not locked by current user.

This UNLOCK TABLE statement names a table that has not been locked. If
you locked the table earlier, it has already been unlocked. Tables are
unlocked automatically when a transaction ends or when the database is
closed. If another user locked the table, you cannot unlock it.


-289	Cannot lock table table-name in requested mode.

The table is already locked in exclusive mode. You will have to wait
for the table to be unlocked before you proceed.


-290	Cursor not declared with FOR UPDATE clause.

This statement attempts to update with a cursor that was not declared
for update. The database server does not allow this action, as both a
security measure that is designed to prevent program errors and a
performance feature. To use a cursor with the UPDATE or DELETE
statements, you must declare it for update. Review the program logic to
make sure that this statement uses the intended cursor.

In an ANSI-compliant database, any cursor can be used for updating; the
FOR UPDATE clause is not required (and generates a warning).


-291	Cannot change lock mode of table.

The current LOCK TABLE statement cannot be executed because you have
already locked the same table using a different mode (EXCLUSIVE or
SHARE). To change the lock mode, arrange to unlock the table before
you lock it again.


-292	An implied insert column column-name does not accept NULLs.

This INSERT statement does not supply values for all the columns in the
table. At least one of the columns that it omits is constrained to be
not null. Because the database server would have to insert a null value
for every unmentioned column, it cannot perform this insert. Review the
statement against the definition of the table. Possibly the definition
of the table has been changed.


-293	IS [NOT] NULL predicate may be used only with simple
columns.

The test for a null value can be applied only to a column name (not to
a subscripted character column or an expression, for example).

Review the use of these keywords in the WHERE clause and in any CASE
statements.

This message does not apply to 8.21 and later 8.x database servers,
which allow expressions as arguments of the IS [NOT] NULL operator.


-294	The column column-name must be in the GROUP BY list.

In a grouping SELECT, you must list every nonaggregate column in the
GROUP BY clause to ensure that a well-defined value exists for each
selected column in each grouped row. A column contains either a single
aggregate value or a value unique to that group. If a selected column
were neither an aggregate nor in the list, two or more values for that
column might possibly exist in some group, and the database server
could not choose which value to display. Revise the query to include
either the column name or its positional number in the clause.


-295	Referenced and referencing tables have to be in the same database.

Referential constraints cannot cross databases. In other words, both
the referenced and referencing columns (or parent and child keys) must
be in the same database.


-296	Referenced table table-name not available.

The table that is specified in a referential constraint does not
exist or is not accessible. Check the accompanying ISAM error code
for more information.


-297	Cannot find unique constraint or primary key on referenced
table <table_name>.

The database server cannot locate the referenced constraint in the
sysconstraints system catalog table, and the referenced constraint
was not created in the same ALTER TABLE statement as the referencing
constraint. The referenced constraint might not exist, or a foreign key
might refer to a table that has a unique constraint but not a
primary-key constraint.

Check that you have entered a valid column name with the appropriate
constraints that are associated with it. If the referenced table has a
unique constraint but no primary key, you must use the following form of
the REFERENCES clause:

   REFERENCES table_name (column_name)

Valid constraint columns indicate an internal error. If the error
recurs, note all circumstances and contact IBM Technical Support.


-298	Cannot grant permission to public with grant option.

The clause WITH GRANT OPTION allows the receiver of the grant to grant
the same privilege to others. In this case, the receiver of the grant
is PUBLIC. If this statement were executed, everyone would have the
privilege, and everyone could grant the privilege. This operation is
prohibited. Either name specific grantees, or omit the clause WITH
GRANT OPTION.


-299	Cannot grant permission to self.

This GRANT statement includes your user id as one of the grantees. If
you can grant the privilege, you already have the privilege. Rewrite
the statement to omit your user name from the TO clause.


-300	There are too many GROUP BY columns.

The number of columns that can be listed in the GROUP BY clause is an
implementation limit of the database server. All database servers
support at least eight columns. Review the current statement to ensure
that the punctuation of the GROUP BY clause is correct. If it is as you
intended, you will have to find a way to make this query in two or more
stages. Since you must list all nonaggregate selected columns in the
GROUP BY clause, and the length of the list is restricted, you must
select only the non-aggregate values that are required to distinguish
each group. Put the group results in a temporary table, and join this
table to the original table to select other non-aggregate values.


-301	The total size of the GROUP BY columns is too big.

The database server limits the total number of bytes in the combined
columns that the GROUP BY clause lists. All database servers support at
least 120 bytes. See the discussion of error -300 for more information.


-302	No GRANT option or illegal option on multi-table view.

This GRANT statement cannot be executed. The grantor does not have the right
to grant the specified privilege for this table, the table name is a
synonym, or the table is a view for which this option cannot be granted.
If the grantor does have the right to grant the privilege, the table in
question might be a synonym or a view that is not modifiable and cannot be
used for insert, update, or delete operations.  Starting with version 9.40,
you can define an INSTEAD OF trigger on the view to make it modifiable and
then try this option.

To grant any privilege for a table, you must be the owner of the table or you
must have been granted the same privilege with the GRANT option. To use the
AS GRANTOR clause, you must have DBA privilege.


-303	Expression mixes columns with aggregates.

This SELECT statement uses an aggregate function in its WHERE clause.
This action is not allowed. The WHERE clause must be applied row by row
as a table is scanned, but an aggregate function can only be calculated
after all rows have been chosen and grouped. Review the statement with
this fact in mind. If you intended to select only certain groups of
records, you can put that test in the HAVING clause; it is applied to
grouped rows.

The text of this message is somewhat deceptive. You can, in fact, mix
column names and aggregate functions in expressions. However, you can
do so only in the select list or the HAVING clause (not in the WHERE
clause), and the columns must appear in the GROUP BY clause.

Database servers after Version 5.01 do not use this error message.


-304	HAVING can only have expressions with aggregates or columns
in GROUP BY clause.

The HAVING clause is used to select completed rows after grouping has
been done. Therefore, the only selected values that it can test are
values that are available in completed groups of rows, namely the
single columns that are named in the GROUP BY clause and aggregate
values. Review the HAVING clause with this rule in mind. If you want to
select particular rows before grouping has taken place, use the WHERE
clause.


-305	Subscripted column column-name is not of type CHAR, VARCHAR, TEXT
nor BYTES.

You may select substrings only from columns of the types mentioned.
Review all uses of square brackets in this statement, and make sure
that each follows the name of a column that has one of these types. If
that is the case, verify that you are using the database you intended,
and double-check the definition of the table. Possibly one of the
columns in the table has been altered to use a different type.


-306	Subscript out of range.

This statement refers to a substring of a character variable. The
substring values (two numbers in square brackets) are incorrect. The
first is less than zero or greater than the length of the column, or
the second is less than the first. Review all uses of square brackets
in the statement to find the error. Possibly the size of a column has
been altered and makes a substring fail that used to work.


-307	Illegal subscript definition.

This statement refers to a substring of a character variable. The
substring values (two numbers in square brackets) are incorrect. The
first is less than zero or greater than the length of the column, or
the second is less than the first. Review all uses of square brackets
in the statement to find the error. Possibly the size of a column has
been altered and makes a substring fail that used to work.


-308	The statement failed because corresponding column data types must be 
compatible for each UNION, INTERSECT, or MINUS query.

All rows produced in a union, intersect or minus of SELECT statements must 
have the same format, so the corresponding columns for each UNION, INTERSECT or
MINUS statement must have the same data type or compatible data types. Two data
types are compatible if you can convert one of them into the other; for example,
INT and FLOAT are compatible data types because you can convert INT values to 
FLOAT values. In the current statement, a column in the second or subsequent 
SELECT statement does not agree with the corresponding column in a preceding 
SELECT statement.

Review and compare all the SELECT statements. Check each point at which one
statement selects a column that is not identical to a column in the
preceding SELECT statement. If the column data types do not match, then one
type must be convertible to the other type.


-309	ORDER BY column or expression must be in SELECT list.

An expression or column name is in the ORDER BY clause of this SELECT
statement, but the expression or column name is not in the select
list (the list of values that follows the word SELECT). This action is not
supported when a UNIQUE or DISTINCT operator is being used in a query.

When a UNIQUE or DISTINCT operator is being used in a query, all sort
keys must be present in the output rows to determine the true order.
Revise the statement to follow this rule.


-310	Table table-name already exists in database.

This statement tries to create a table with the name that is shown, but
one with that name already exists. Only one table with a given name can
exist in a single database. (In an ANSI-compliant database, the name of
the user that created a table name qualifies it, so one table of a
given name per user can exist.)

Check the spelling of the name; if it is as you intended, and you are
sure it should not exist, check that you are using the right database.
You can review the names of all tables in this database by querying
systables as follows:

SELECT tabname FROM systables WHERE tabid > 99

This statement will display only names of permanent tables, not
temporary tables. Temporary tables do not appear in systables. If the
name does not appear, end your database session and start a new one.
Temporary tables will be dropped.


-311	Cannot open system catalog table-name.

The database server cannot access one of the tables in the system
catalog. Check the accompanying ISAM error code for detailed
information, and look for operating-system error messages that might
give more information.


-312	Cannot update system catalog table-name.

The database server cannot record a change in the system-catalog
table. Check the accompanying ISAM error code for more detailed
information. Insufficient disk space is a common cause of this error.


-313	Not owner of table.

This statement tries to do something, such as dropping a table, that
only the owner of the table or a user who has Database Administrator
privileges can do. Check that the statement names the table you
intended. If it does, you will have to get its owner or a DBA to
execute this statement. To find out who to contact, you can query the
system catalog as follows:

SELECT tabname, owner FROM systables WHERE tabid > 99;
SELECT username FROM sysusers WHERE usertype = 'D'


-314	Table table-name currently in use.

This statement tries to do something, such as dropping a table, that
cannot be done while another user is using the table. Wait a short
time, and try again. To ensure that no table is in use, open the
database with DATABASE EXCLUSIVE.


-315	No create index permission.

This statement tries to create an index for a table. Either you do not
have INDEX privilege on this table, or the table itself is a view or
synonym. If the table that is named really is a table, contact the
owner of the table or a database administrator (see the discussion of
error -313) and ask to be granted this privilege.


-316	Index <index-name> already exists in database.

This statement tries to create an index with the name shown, but an
index of that name already exists. Only one index of a given name
can exist in a single database.

Check the spelling of the name. If it is as you intended, and you
are sure it should not exist, make sure you are using the right
database. To review the names of all indexes and their owners, join
systables and sysindexes as follows:

   SELECT T.tabname, I.idxname, I.owner FROM systables T, sysindexes I
          WHERE I.tabid = T.tabid AND T.tabid > 99


-317	The statement failed becuase you must have the same number of selected 
columns in each UNION, INTERSECT, or MINUS query.

All rows that are produced in a union, intersect or minus must have the same 
format, so each SELECT statement in the union, intersect or minus must select 
the same number of columns. In this union, intersect or minus, one of the 
second or subsequent SELECT statements does not list the same number of columns 
as the preceding one. Review the entire union, intersect or minus, and check 
that all select lists are alike in number and data type. If no appropriate 
column exists for one of the statements, specify a literal value of the 
appropriate type at that position. For example, where you need to match a 
numeric column, specify a literal zero.

-318	File with the same name as specified log file already exists.

The transaction log file you specify in the WITH LOG IN clause cannot
already exist. The database server must start a new log file; it cannot
append log data to an old log file. An existing log file contains
recovery information that might be crucial, so it does not simply empty
an existing file. To begin logging for a database that has not been
logged before, lock the database, copy all of the database directory to
a backup medium, and use the START DATABASE statement to name a new
file. To make a partial archive subsequently, lock the database, copy
the log file to a backup medium and store it with the full archive,
erase or rename the log file, and use the START DATABASE statement.


-319	Index does not exist.

This statement refers to an index that does not exist. Review the
spelling of the index name; if it is as you intended, and you are sure
it should exist, make sure you are using the right database.

In an ANSI-compliant database, an index that you do not own must be
qualified with its owner's name. See the discussion of error -316 for a
way to check the names and owners of all indexes.


-319	Index does not exist in ISAM file.

This statement refers to an index that does not exist. (The reference
to an ISAM file is not relevant; ignore it.) Review the spelling of the
index name; if it is as you intended, and you are sure it should exist,
make sure you are using the right database.

In an ANSI-compliant database, an index that you do not own must be
qualified with its owner's name. See the discussion of error -316 for a
way to check the names and owners of all indexes.


-320	Not owner of index.

This statement tries to do something, such as dropping an index, that
only the owner of the index or a user who has Database Administrator
privileges can do. Check that the statement names the index that you
intended. If it does, you will have to get its owner or a DBA to
execute this statement. See the discussion of error -316 for a way to
list the names and owners of indexes.


-321	Cannot group by aggregate column.

The GROUP BY clause in this statement refers to a selected value that
is an aggregate function. This action is not supported. (It does not
make sense to group rows using a value that cannot be computed until
the group has been formed.) You can group rows by the value of columns
or expressions on columns, but the expressions cannot include aggregate
functions. Review the GROUP BY clause, and compare it to the select
list. Possibly one of the column numbers in the GROUP BY clause is
incorrect.


-322	Cannot Alter view, Rename view or Create a trigger on a view. 

Starting with version 9.40, you can only create an INSTEAD OF trigger 
on a view.  You cannot create an INSTEAD OF trigger on a view created
using WITH CHECK OPTION. 

Consider creating the trigger on the base table of the view or create
a table with the same schema as the view and then define the trigger
on the table.

You can also receive this message if you issue the START VIOLATIONS
TABLE statement or the STOP VIOLATIONS TABLE statement for a view. You
must specify the name of a base table in both of these statements.

-323	Cannot grant permission on temporary table.

This GRANT statement names a temporary table. That action is not
supported. Privileges are recorded only for permanent tables. Because
temporary tables are not recorded in the system catalogs, no place
exists to record privileges on them. Only the person who creates a
temporary table can access it.


-324	Ambiguous column column-name.

The column name appears in more than one of the tables that are listed
in the FROM clause of this query. The database server needs to know
which columns to use. Revise the statement so that this name is
prefixed by the name of its table (table-name.column) wherever it
appears in the query. If the statement becomes unwieldy, give the table
a shorter alias name in the FROM clause (see the discussion of error
 -316 for an example).


-325	Filename must be specified with a full path name.

This error occurs if you attempt to create a table using the WITH LOG
IN clause but do not specify a complete path to the log file. This
error can also occur if you use IBM Informix SE to create database logging
but do not specify the full path of the log file. Make sure to specify
a full pathname, including the name of the log file, where the log file
will reside.


-326	Referential constraint has too many referenced columns.

The specified referential constraint has more than 16 columns (or 8 in
IBM Informix SE).


-327	Cannot unlock table table-name within a transaction.

The statement UNLOCK TABLE is not allowed within a transaction, that
is, following the execution of BEGIN WORK. You can still use LOCK TABLE
when you use transactions, but the table will be unlocked automatically
when the transaction ends. All locks are released at the end of a
transaction. In an ANSI-compliant database, BEGIN WORK is not used, a
transaction is always in effect, and the UNLOCK TABLE statement is
never used.


-328	Column column-name already exists in table.

This statement tries to add the column shown, but one with that name
already exists. Check the spelling of the name; if it is as you
intended, then the table is not arranged as you expected it to be. You
can review the names of all the columns in a table by querying
syscolumns. Supply a table-name in the following query:

SELECT colname, colno FROM syscolumns C, systables T
        WHERE C.tabid = T.tabid AND T.tabname = 'table-name'

You can use RENAME COLUMN to change column names.


-329	Database not found or no system permission.

The database you tried to open is not visible to the database server.
Check the spelling of the name. Possibly the database is located in a
different database server (or network system), and you have omitted to
specify the server name (or site name) with the database name. If you
are sure the database should exist just as you spelled it, your next
step depends on the database server you are using.

If you are using IBM Informix SE, the visible databases are directories
with names in the form dbname.dbs. You must be able to read from and
write to them. The database server looks first in the current working
directory and then in each directory named in the DBPATH environment
variable. The most common cause of this error is an incorrect setting
or no setting for the DBPATH environment variable.

If you are using IBM Informix Dynamic Server, IBM Informix Universal Server, or
IBM Informix OnLine Dynamic Server, the database does not exist as you spelled it.
In some environments, two or more instances of the database server can run at
once and each instance has its own collection of databases. For Version 6.0
and later, the value of the INFORMIXSERVER environment variable determines the
instance of the database server that you use. For Versions 5.1x and earlier, 
the ONCONFIG environment variable points to the configuration file that
determines the instance. See your database server administrator if you think
you might be using the wrong instance.

If you are connected to a secondary database server, the database you tried
to open might exist, but is not logged. Databases are required to be logged
to be able to access them on secondary database servers.


-330	Cannot create or rename the database.

Possibly you tried to create a database with the same name as one that
already exists or rename a database to a name that already exists; if 
so, choose a different name. Otherwise, check the accompanying ISAM
error code for more detailed information on the cause. Possibly a 
shortage of disk space or a problem with file permissions exists.


-331	Cannot drop database directory.

While the database server was executing the DROP DATABASE statement, it
removed all database-related files from the dbname.dbs directory and
tried to remove the directory itself, but an error occurred. Check the
accompanying ISAM error code for more detailed information on the
cause. The most likely cause is that you or another user created
nondatabase files in the same directory, and the directory cannot be
removed because it is not yet empty.


-332	Cannot access audit trail name information.

An error occurred while reading the audit-trail file. Re-execute the
latest statement; if the error recurs, the audit-trail file is corrupt.
In that case you will need to drop and restart the audit.


-333	The audit trail file already exists with a different name.

Before you start a new audit trail, you must drop an existing one. Use
the DROP AUDIT statement.


-334	Cannot create audit trail.

Some problem prevents the database server from initializing the
audit-trail file. Check that you specified a complete, correct pathname
for the file. Look for operating-system error messages that might give
more information. Common problems include a lack of disk space and
file-permission problems.


-335	There is no audit trail for the specified table.

This statement requires an audit trail to work, but no current audit
trail exists for the table. Either none was ever started, or it was
dropped. Check that you specified the table you intended. In a recovery
situation (the statement was RECOVER TABLE), check that the table has
just been restored from a backup copy. If so, the table did not have an
audit trail at the time that this backup was made. If an audit trail
was specified later, an unknown period remains between the backup and
the start of auditing during which unaudited updates might have been
made.


-336	Cannot create or drop audit on a temporary table table-name.

Temporary tables cannot be audited. The commands regarding audit trails
will not accept the names of temporary tables. If you did not intend to
name a temporary table, check the spelling of the table table-name. See
the discussion of error -313 for a way to display the names of all
permanent tables in the database.


-337	Cannot create view on temporary table table-name.

Views can be created only on permanent tables. The SELECT statement
that defines the view in this latest statement contains the name of
the temporary table, table-name. If you did not intend to name a
temporary table, check the spelling of table-name. See the discussion
of error -313 for a way to display the names of all permanent tables
in the database.


-338	Cannot drop audit trail.

An unexpected error occurred during the execution of a DROP AUDIT
statement. Check the accompanying ISAM error code for more detailed
information.


-339	The audit trail file name must be given in full directory path.

The audit-trail file that is specified in the CREATE AUDIT statement
requires a full directory path. Because it is not required to be in a
particular directory, the database server cannot use the current
directory or the DBPATH variable to search for it.


-340	Cannot open audit trail file.

The database server needs to use the audit-trail file for this table,
but some unexpected problem prevents it. Likely causes include hardware
errors, file-permission problems, or the accidental erasure of the
file. Look for operating-system error messages that might give more
information.


-341	Could not read a row from audit trail file.

The database server encountered an unexpected error while it was
reading the audit trail for this table. Likely causes of the error
include file-permission problems and hardware errors. Look for
operating-system error messages that might give more information.


-342	Remote host cannot execute statement.

This statement was sent to a database server in a different system for
execution. However, that database server does not support the requested
function, possibly because it is an earlier version.


-343	Row from audit trail was added to a different position than expected.

While the database server was reconstructing a table from the audit
trail, it found a discrepancy between the position of an inserted row
now and the position that was recorded in the audit trail when the row
was first inserted. Either the audit-trail file has been corrupted, or
the audit-trail file is incomplete, with missing records for some
alterations. The table cannot be recovered as it stands. Try the
operation again after you make sure that the table has been restored to
exactly the same state as when the audit trail was created. If the
error recurs, rebuild the table by other means.


-344	Cannot delete row - row in table does not match row in audit trail.

While the database server was reconstructing a table from the audit
trail, it found a discrepancy between the position of a deleted row now
and the position that was recorded in the audit trail when the row was
first deleted. Either the audit-trail file has been corrupted, or the
audit-trail file is incomplete, with missing records for some
alterations. The table cannot be recovered as it stands. Try the
operation again after you make sure that the table has been restored to
exactly the same state as when the audit trail was created. If the
error recurs, rebuild the table by other means.


-345	Cannot update row - row in table does not match row in audit trail.

While the database server was reconstructing a table from the audit
trail, it found a discrepancy between the contents of an updated row
now and the contents that were recorded in the audit trail when the row
was first updated. Either the audit-trail file has been corrupted, or
the audit-trail file is incomplete, with missing records for some
alterations. The table cannot be recovered as it stands. Try the
operation again after you make sure that the table has been restored to
exactly the state it had when the audit trail was created. If the error
recurs, rebuild the table by other means.


-346	Could not update a row in the table.

While the database server was processing an UPDATE, it received an
unexpected error. Check the accompanying ISAM error code for more
detailed information on the cause. Possible causes include hardware
errors and locking conflicts.


-347	Could not open table for exclusive access.

The database server cannot complete a LOCK TABLE statement or the
implicit LOCK TABLE that must be performed as part of other statements
that change the definition of a table (for example ALTER TABLE, RENAME,
or CREATE INDEX). Check the accompanying ISAM error code for more
detailed information on the cause. Possible causes include lock
conflicts, a full lock table, or low-level problems with the host
operating-system lock mechanism.


-348	Could not read a row from the table.

While the database server was trying to fetch a row from a table, it
received an unexpected error. Check the accompanying ISAM error code
for more detailed information on the cause. Possible causes include
hardware errors and lock conflicts.


-349	Database not selected yet.

This statement cannot be executed because no current database exists.
Either no current database has been established yet, or the current
database was closed with a CLOSE DATABASE statement. You execute the
DATABASE or CREATE DATABASE statement to establish a current database.


-350	Index already exists on the column (or on the set of columns).

This CREATE INDEX statement cannot be executed because an index on the
same column or combination of columns already exists. For a given
collation order, at most two indexes can exist on any combination of 
columns, one ascending and one descending. 

To display the indexes on a particular table, join sysindices and 
systables. Supply table-name in the following statement:

        SELECT * FROM sysindices, systables
        WHERE sysindices.tabid = systables.tabid
              AND systables.tabname = 'table-name'


-351	Database contains tables owned by other users.

This DROP DATABASE or UPDATE STATISTICS statement cannot be carried out
for the reason shown. It might destroy the work of others. In order to
drop this database, you must first drop all tables that other users
own. To do so, you must have database administrator privilege. See the
discussion of error -313 for a way to list the names of all tables with
their owners.


-352	Column column-name not found.

The column, or one of the columns, named in this CREATE INDEX statement
does not exist. Review the spellings of all columns in the statement.
See the discussion of error -328 for a way to list all column names in
a table.


-353	No table or view specified when granting/revoking privileges.

This statement specifies one of the table-level privileges (ALTER,
DELETE, INDEX, INSERT, SELECT, UPDATE, and ALL) but does not specify
the table to which the privilege applies. When you grant or revoke a
database-level privilege (CONNECT, DBA, RESOURCE), you cannot name a
table, but when you grant or revoke a table-level privilege you must
name a table.


-354	Incorrect database or cursor name format.

This statement contains the name of a database or a cursor in some invalid
format. If the statement is part of a program, the name might have been
passed in a host variable.

The maximum length for database names and cursor names depends on the
database server. In IBM Informix Dynamic Server 9.2x or later, the maximum length
is 128 characters. For IBM Informix SE, database names should be no longer
than 10 characters (fewer in some host operating systems). In other
Informix database servers, the maximum length is 18 characters.

Both database and cursor names must begin with a letter and contain only
letters, numbers, and underscore characters. In IBM Informix OnLine Dynamic
Server and later Informix database servers, database and cursor names can
begin with an underscore. In Dynamic Server 9.2x or later, these names can
include dollar-sign characters.

In MS-DOS systems, filenames can be a maximum of 8 characters plus a
3-character extension.


-355	Cannot rename file for table.

This RENAME statement cannot be completed because the database server
got an unexpected error. Check the accompanying ISAM error code for
more detailed information on the cause. Possible causes include
hardware errors and file-permission problems.


-356	Data type of the referencing and referenced columns do not match.

The data types of the columns in the child constraint must be identical
to those in the parent constraint.


-357	Dependent table for view view-name has been altered.

The view is based on data from a table that has been altered since the
view was defined. The alteration removed or renamed a column that is
used in the view. The view can no longer be used. Drop the view, and
redefine it to use the current schema.


-358	Must close current database before CREATE, START or ROLLFORWARD.

These statements choose a new current database, but the present
database must be closed first. Use the CLOSE DATABASE statement before
this statement.


-359	Cannot drop or rename the current database or any open database.

The database that is currently open cannot be dropped or renamed. 
First use the CLOSE DATABASE statement or end the applications that 
access the database; then you can drop it.


-360	Cannot modify a table or view that is also used in subquery.

The UPDATE, INSERT, or DELETE statement uses data taken from the same table
in a subquery. 

Because of the danger of entering an endless loop, this action is not allowed,   
except in the case of an uncorrelated subquery in the WHERE clause 
of the DELETE or UPDATE statement.

To avoid this error,  first select the input data into a temporary table, and then refer to the 
temporary table in a separate DELETE, UPDATE, or INSERT statement.

A subquery with a correlated column name cannot reference in its FROM clause the same table that an enclosing UPDATE or DELETE statement is modifying, 
as in the following example:  

database stores_demo; 
update orders set ship_charge = ship_charge + 2.00 
   where customer_num in 
      (select new_order.customer_num from orders as new_order 
       where orders.ship_weight < new_order.ship_weight);

In an SPL routine, even an uncorrelated subquery is not allowed 
in a  DELETE or UPDATE statement that modifies the same table
that the FROM clause of the subquery specifies, as in the next
example:  

database stores_demo;
create procedure ship_count(customer_id integer) 
   returning integer
define shipcount integer;
select count(*) into shipcount from orders 
   where customer_id = orders.customer_num 
         and ship_charge > 20;
return shipcount;
end procedure;

update orders set ship_charge = ship_charge + 2.00 
   where customer_num in 
      (select customer_num from customer 
         where customer.state = 'CA' 
         and ship_count(customer.customer_num) > 5);


-361	Column size too large.

This internal error reflects a communications problem between the
database server and the application. You should not see this error. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-362	Can have only one column of serial/(serial8 or bigserial) type.

A table can have at most only one column of type SERIAL and one column
of type SERIAL8/BIGSERIAL. You are attempting to add a second column 
of type SERIAL or SERIAL8/BIGSERIAL, or you are attempting to create 
a table with more than one column of either type. If you intended to 
have a foreign key (that is, a column that refers to a SERIAL or 
SERIAL8/BIGSERIAL column in a different table), the data type of the 
column in this table should be INTEGER or INT8 or BIGINT.


-363	CURSOR not on SELECT statement.

The cursor named in this statement (probably an OPEN) has been
associated with a prepared statement that is not a SELECT statement.
Review the program logic, especially the DECLARE for the cursor, the
statement id specified in it, and the PREPARE that set up that
statement. If you intended to use a cursor with an INSERT statement,
you can only do that when the INSERT statement is written as part of
the DECLARE statement. If you intended to execute an SQL statement, do
that directly with the EXECUTE statement, not indirectly through a
cursor.

This error is also returned when you attempt to associate a cursor with
a SELECTINTO TEMP statement. Because of the INTO TEMP clause, the
SELECT statement can return no rows and so cannot be used with a
cursor.


-364	Column column-name not declared for UPDATE OF.

This UPDATE...WHERE CURRENT OF cursor-name statement refers to at least
one column that does not appear in the FOR UPDATE OF clause of the
DECLARE statement that declared the cursor. Since specific columns were
listed in the cursor declaration, the database server will not allow
others to be updated. Review the declaration and the uses of this
cursor. Perhaps the noted column, and others, should be added to the
declaration, or perhaps the OF clause should be dropped, allowing the
cursor to update any column in the table.


-365	Cursor must be defined on simple SELECT for FOR UPDATE.

The cursor named in this statement (probably an OPEN statement) was
declared with the FOR UPDATE clause. However, it has been associated
with a SELECT statement that joins two or more tables or that uses
UNIQUE, DISTINCT, GROUP BY, ORDER BY, FOR READ ONLY, INTO TEMP, or
UNION, INTERSECT, or MINUS. Such a SELECT statement cannot be used in 
an update, because there is no way to distribute the new data back into 
the multiple tables.

Review the declaration of the cursor. If it is declared FOR
statement id, also review the PREPARE statement that set
up that statement. You might need two cursors, one for general queries
and another specifically for updating.


-366	The scale exceeds the maximum precision specified.

A problem exists with the precision or scale of a DECIMAL or a MONEY
data type in this statement. Review all uses of these types. The first
should be declared as DECIMAL(p) or DECIMAL(p,s) where p, the precision
(total number of digits) is between 1 and 32, and s, the scale (number
of digits to the right of the decimal point) is no greater than p. The
MONEY type follows the same rules.


-367	Sums and averages cannot be computed for character columns.

This statement contains a use of the SUM or AVG function applied to a
column that has a character data type (CHAR or VARCHAR). If you did not
intend to take the sum or average of character strings, review the
spelling of column names against the table definition. If a character
column actually contains numeric values in character form, you can
trick the database server (Version 4.0 and later) into performing an
automatic conversion. Instead of applying the function to the column
name alone, apply it to the expression in parentheses (column+0).


-368	Incompatible sqlexec module.

The version of the database server does not agree with the version of
the database library routines in the application program. This
incompatibility must be resolved before the program can be executed.
The database server is selected through the SQLEXEC environment
variable (for database server versions prior to 6.0). It contains a
complete pathname to the database server code, which is usually named
sqlexec or sqlturbo (for database server versions prior to 6.0). The
access routines linked into the program were chosen when the program
was compiled. If the program you are running was supplied by Informix or IBM,
then it or another IBM Informix product might have been installed
incorrectly.


-369	Invalid serial number. Consult your installation instructions.

Some error has been made in the installation of your IBM Informix
products. Check the value in the SQLEXEC environment variable (for
database server versions prior to 6.0) and INFORMIXDIR environment
variable; then consult the person who installed the software, and
review the installation instructions.


-370	Cannot drop last column.

This ALTER TABLE DROP statement would drop every column from the
table. At least one column must be retained. Revise the statement to
leave one column. Or if you do not want the table at all, use DROP
TABLE to remove it.


-371	Cannot create unique index on column with duplicate data.

This CREATE UNIQUE INDEX statement cannot be completed because the
column (or columns) contains one or more duplicate rows. You can either
create an ordinary index, accepting the duplicate values, or you can
modify the table to remove the duplicates. To get a list of the
duplicate values in a single column, first create the ordinary index.
Then use a SELECT statement such as the following, filling in the table
and column names:

SELECT column FROM table main
        WHERE 1 < ( SELECT COUNT(*) FROM table sub
           WHERE main.column = sub.column )

This statement can be extended to handle the case of multiple columns
using AND.


-372	Cannot alter table with audit trail on.

Once an audit trail has been started for a table, the table should not
be altered. If you must alter the table, do the following. Copy the
table to a backup medium. Use DROP AUDIT to remove the audit trail.
Delete the audit-trail file. Alter the table. Again, copy the table to
a backup medium. Finally, use CREATE AUDIT to start a new audit trail.
The first backup is needed to restore the table if a failure occurs
while the table is being altered (a lengthy, disk-intensive procedure
if the table is large). The second backup is required because, if the
table has to be recovered later, the new audit trail must be applied
against a backup that has the same layout of columns.


-373	A database or command script is inaccessible because a DBPATH entry is too long.

The database server cannot locate a database or command script using the
DBPATH environment variable because one or more of the entries is too long.
No entry can exceed 128 bytes and the total number of entries cannot
exceed 100. Entries specified beyond the 100th entry will be ignored.

Reset the value of the DBPATH environment variable according to these rules.

-374	Can only use column number in ORDER BY clause with UNION.

This query has both a UNION clause and an ORDER BY clause. In a union
query, in which multiple SELECT statements exist and the names of the
selected columns in each statement are not necessarily the same, you
cannot use column names or expressions in the ORDER BY clause.

Instead, you must use column position numbers, with 1 representing the
first selected column, 2 representing the second, and so on. Rewrite the
query to use only numbers in the ORDER BY clause.


-375	Cannot create log file for transaction.

While the database server was trying to execute a START statement, it
got an unexpected error in trying to create the transaction-log file.
Check the accompanying ISAM error code for more detailed information on
the cause. Typical causes include a shortage of disk space, file
permission problems, or a limit on the number of open files.


-376	Log file already exists.

The transaction log file you specify in the WITH LOG IN clause must not
already exist. The database server must start a log file fresh; it has
no means of appending log data to an old log file. An existing log file
contains recovery information that may be crucial, so it will not
simply empty an existing file. To make a full backup, lock the
database, copy all of the database directory to a backup medium, erase
the log file (it is no longer needed), and use the START DATABASE
statement. To make a partial backup, lock the database, copy the log
file to a backup medium and store it with the full backup, erase or
rename the log file, and use the START DATABASE statement.


-377	Must terminate transaction before closing database.

This statement (DATABASE, CREATE DATABASE, or CLOSE DATABASE) cannot be
executed until the current transaction is finished.

Use either COMMIT WORK or ROLLBACK WORK and then close the database.

If you export a database and then import it, large-object handles (for
images) will be different after you import the database. Therefore, if you
use static html references for images and export the database and then
import it, you will have to determine the new large-object handle for each
static html reference.


-378	Record currently locked by another user.

A row of a table that this statement needs is not accessible because it
has been locked. Check the accompanying ISAM error code for more
detailed information. It will probably be -107, -113, -134, -143, -144,
or -154. Each notes a slightly different relationship between your
program and the other user's program. You can prevent most, but not
all, occurrences of this error with SET LOCK MODE TO WAIT.

For database servers prior to Version 4.1, this error message is
produced in conjunction with the UPDATE and the DELETE WHERE CURRENT OF
statements only. In Version 6.0, this error message is no longer used.


-379	Cannot revoke privilege on columns.

In the GRANT statement, you can grant UPDATE or SELECT privilege on
specific columns. However, the REVOKE statement accepts only the
keywords for the type of privilege; you cannot revoke access to
specific columns. If you want to change the columns allowed to a
certain user, you must first REVOKE the privilege in full, then GRANT
it on the new list of columns.


-380	Cannot erase log file.

The database server, while trying to initialize a transaction log file,
received an unexpected error. Check the accompanying ISAM error code
for more detailed information on the cause. Typical causes include
hardware errors and file permission problems.


-381	Cannot grant to someone who has granted you the same privilege before.

The privilege you are trying to grant is one that was first granted to
you WITH GRANT OPTION. The user who made that grant is among the list
of users in this present statement. For security reasons, you may not
do a reciprocal grant. Rewrite the statement leaving out the name of
your original patron. To see a list of the users to whom you may not
grant, query systabauth as follows:

SELECT grantor FROM systabauth WHERE grantee = USER


-382	Same number of columns must be specified for view and select clause.

In this VIEW statement, you have listed the names of the columns of the
view. However, their number is different from the number of columns in
the SELECT statement for the view. Check the punctuation of the two
lists, and make sure that you have supplied a name for each item in the
select list.


-383	Need to specify view column names in the view definition.

In this VIEW statement, you have not listed specific names for columns.
That action is allowed when the SELECT statement selects only simple,
named columns. However, the SELECT statement here selects one or more
expressions. You must give names to these columns in a parenthesized
list that follows the name of the view. Because you cannot give names
for only some of the columns, you must list names for all.


-384	Cannot modify non simple view.

This statement attempts to modify (insert, delete, or update) rows in a
view which does not have an appropriate INSTEAD OF trigger defined.
Starting with version 9.40, you can define an INSTEAD OF trigger on a view.
Without an INSTEAD OF trigger, this view is not modifiable because it is
based on a SELECT statement that joins two or more tables or that selects
calculated values or literal values. (You can DELETE from a view that
selects from a single table even if some calculated values are
selected.) Direct the statement against the actual
table on which the view is based or define an INSTEAD OF
trigger on the view to make it modifiable.


-385	Data value out of range.

This statement attempts to put data into a view that was defined WITH
CHECK OPTION, so new data has to satisfy the tests in the WHERE clause
in the view. However, one or more of the data values in this current
statement does not meet that test, so the alteration was not performed.
Roll back the current transaction. To see what tests new data must
satisfy, display the definition of the view, as follows:

SELECT seqno, viewtext FROM sysviews, systables
        WHERE systables.tabname = 'viewname'
           AND systables.tabid = sysviews.tabid
        ORDER BY seqno


-386	Column contains null values.

This ALTER TABLE statement contains a MODIFY clause that assigns the
NOT NULL attribute to an existing column. However, that column already
contains one or more null values. The modification cannot be made until
the null values have been deleted or updated to some nonnull value.


-387	No connect permission.

You cannot access the database that this statement requests because you
have not been granted CONNECT privilege to it. Contact a person who has
Database Administrator privilege to that database and ask to be granted
CONNECT privileges to it.


-388	No resource permission.

If you issued a CREATE TABLE, CREATE INDEX, or CREATE PROCEDURE
statement, you cannot execute this statement because your account has
not been granted the RESOURCE privilege for this database. You need the
RESOURCE privilege to create permanent tables, indexes on permanent
tables, and procedures.

If you issued a SET statement, START VIOLATIONS TABLE statement, or
STOP VIOLATIONS TABLE statement, you cannot execute this statement
because your account has not been granted the RESOURCE privilege for
this database. You need the RESOURCE privilege to execute the SET
statement for a constraint, trigger, or index defined on a table in the
current database. You also need the RESOURCE privilege to execute the
START VIOLATIONS TABLE or STOP VIOLATIONS TABLE statement on a base
table in the current database.

To recover from this error, contact a person who has the DBA privilege
on this database and ask to be granted the RESOURCE privilege for the
database.


-388	No resource permission.

If you issued a CREATE DATABASE statement in an 8.32 database server,
you cannot execute this statement because you are not in the group
specified in the ONCONFIG file parameter DBCREATE_GRP.

To be included in the operating system group specified in DBCREATE_GRP,
see your system administrator.


-389	No DBA permission.

This statement cannot be executed because you have not been granted DBA
privilege for this database. Contact a person who has DBA privilege for
the database and ask to be granted DBA privilege (or simply ask to have
this statement executed for you).

It is also possible that you received this message because you tried to
register a user-defined routine that is written in a language for which you
do not have usage privilege. If you do not have usage privilege for the
language, ask one of the following users to grant this privilege to you:
user informix or another user who has been granted the privilege with the
option to grant the privilege to other users.


-390	Synonym already used as table name or synonym.

This CREATE SYNONYM statement names a synonym that is already in use.
To see all the synonym and table names currently defined, query
systables as follows:

SELECT tabname, owner FROM systables WHERE tabid > 99


-391	Cannot insert a null into column column-name.

This statement tries to put a null value in the noted column. However,
that column has been defined as NOT NULL. Roll back the current
transaction. If this is a program, review the definition of the table,
and change the program logic to not use null values for columns that
cannot accept them.


-392	System error - unexpected null pointer encountered.

This internal error should not occur. If the error recurs, note
all circumstances and contact IBM Technical Support.


-393	A condition in the where clause results in a two-sided outer
join.

This query requests an outer join, but one or more conditions in the WHERE
clause interfere with the dominant-subordinate relationships between the
joined tables in the FROM clause.

Review the query, and verify that every condition that relates the joined
tables is actually necessary and semantically correct.

If an expression in the WHERE clause relates two subordinate tables, you
must use parentheses around the joined tables in the FROM clause to
enforce dominant-subordinate relationships. (Note: You cannot put a
parenthesis directly after the FROM keyword.) The following example
successfully returns a result:

   SELECT c.company, o.order_date, i.total_price, m.manu_name
      FROM customer c, OUTER (orders o, OUTER (items i, OUTER manufact m))
         WHERE c.customer_num = o.customer_num
            AND o.order_num = i.order_num
            AND i.manu_code = m.manu_code;

If you omit parentheses around the subordinate tables in the FROM clause,
you must establish join conditions, or relationships, between the dominant
table and each subordinate table in the WHERE clause. If a join condition is
between two subordinate tables, the query will fail. The following example
successfully returns a result:

   SELECT c.company, o.order_date, c2.call_descr
      FROM customer c, OUTER orders o, OUTER cust_calls c2
         WHERE c.customer_num = o.customer_num
            AND c.customer_num = c2.customer_num;

Consider using the ANSI-SQL standard syntax for outer joins. For more
information, refer to the IBM Informix Guide to SQL: Syntax.


-394	View view-name not found.

The named view cannot be dropped as it does not exist. To see names of
existing views, query systables as follows:

SELECT tabname FROM systables WHERE tabtype = 'V'


-395	The where clause contains an outer cartesian product.

This query requests an outer join, but either the WHERE clause is missing
in the query, or the conditions in the WHERE clause cause every row of the
subordinate table to be selected for every row of the dominant table,
resulting in a very large output. 

Review the query, and check that at least one condition in the WHERE clause
relates each dominant-subordinate pair of tables in the query.


-396	Illegal join between a nested outer table and a preserved table.

This query requests an outer join, but the WHERE clause contains a
condition that relates a nested subservient table to a preserved table
that is not its immediate parent. This action is not supported. Review
the query, and check that every condition that relates two tables is
between a preserved table and its immediately subordinate table.


-397	System catalog <table-name> corrupted.

This internal error should not occur. The database server has
encountered something in one or more of the system catalog tables that
violates integrity constraints.

Run the oncheck utility if you are using IBM Informix Dynamic Server,
IBM Informix Universal Server, or IBM Informix OnLine Dynamic Server. Run bcheck or
secheck if you are using the IBM Informix SE database server. Run tbcheck if you
are using the IBM Informix OnLine database server. If the error recurs, note all
circumstances and contact IBM Technical Support.


-398	Cursor manipulation must be within a transaction.

An attempt to use an UPDATE or a DELETE WHERE CURRENT OF statement
produces this error message. This statement would modify a table
through a cursor. However, this database uses a transaction log. When
that is the case, modifications made through a cursor must be placed
within the bounds of a transaction.

Review the program logic, and check that it executes a BEGIN WORK
statement prior to this statement and that it ends the transaction at
some reasonable point. If the program has to work with both databases
that use transactions and those that do not, you can have it check the
second element of the sqlwarn array of the SQL Communications Area.
This area will contain the letter W after a DATABASE statement if the
database has a transaction log, and a space if it does not.


-399	Cannot access log file.

This query refers to a table named syslog. A row in the systables
catalog has syslog in the tabname column, but it is only a convenient
place to store the pathname to the transaction-log file. Under
IBM Informix SE, a table named syslog cannot exist in a database with
logging. (In general, you should avoid table names that start with
sys-, and syslog is not allowed.)


-400	Fetch attempted on unopen cursor.

This FETCH statement names a cursor that has never been opened or has
been closed. Review the program logic, and check that it will open the
cursor before this point and not accidentally close it. Unless a cursor
is declared WITH HOLD, it is automatically closed by a COMMIT WORK or
ROLLBACK WORK statement.


-401	Fetch attempted on NULL cursor.

This FETCH statement passed a cursor data structure that is invalid or
that is a null pointer. Possibly the cursor has been freed with the FREE
statement, or possibly an automatic re-prepare has been attempted while 
opening the cursor but that operation failed, leaving the cursor unavailable,
or possibly the cursor data structure has been overwritten in memory.

Version 5.0 or later database servers do not return this error code.
See errors -267 and -404.


-402	Address of a host variable is NULL.

Review the way the program constructs the sqlda and related data
structures; somehow it is setting up a null pointer. The error might be 
caused by using a row or collection host variable without having executed
the necessary ALLOCATE statement.

If the program is in IBM Informix 4GL or another language in which the sqlda 
is not constructed directly by the program, or if this statement refers only
to host variables by name, this error should not occur. If the error
recurs, note all circumstances and contact IBM Technical Support.


-403	The size of a received row disagrees with the expected size.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM Technical Support.


-404	The cursor or statement is not available.

One of the following four situations occurred:

You used a statement that names a cursor that was released with the
FREE statement or that was released during a failed automatic re-prepare.
Review the program logic and check that the cursor specified is declared 
and opened, but not freed, prior to reaching this statement.

If the error occurred on a command that specifies a variable rather than a
cursor, the statement was not prepared before you tried to execute it.

The cursor or statement is not available because the connection to the server
does not exist or was lost.

The person who created this table has not granted Update privilege to
your account name or to the public. The owner of the table or the DBA
must grant this privilege before you can update a row in this table.


-405	The Address of a host variable is not properly aligned.

Review the way the program constructs the sqlda and related data
structures; somehow it is setting up a pointer that is not word
aligned. Also, make sure that all host variables are aligned on proper
address boundaries for their types. If the program is in IBM Informix 4GL
or another language in which the programmer has no control over storage
alignments, this error should not occur. If the error recurs,
note all circumstances and contact IBM Technical Support.


-406	Memory allocation failed.

Something in the current statement required the allocation of memory
for data storage, but the memory was not available. Several things can
cause this error. For example, your application has a memory leak, you
are asking for more resources than the system is configured to allow,
or a problem with UNIX requires that you reboot the system. On a client PC,
if the INFORMIXDIR environment variable or some GLS file is missing,
a connection attempt fails with this error message.

Rollback the current transaction. Look for ways to make this statement
simpler or move less data. On UNIX, talk with the system administrator
to solve memory problems or to look for ways to make the operating system
give this program more virtual memory in which to run. On Windows, exit
to the operating-system command line, free some disk space, and resubmit
your program. On a client PC, make sure that the INFORMIXDIR environment
variable is set and that all GLS files are available.


-407	Error number zero received from the sqlexec process.

This internal error indicates a problem in the communication between the
database server and the library functions that call it. Make sure that your
program software is compatible with the database engine in use. If the error
recurs, note all circumstances and contact IBM Technical Support.


-408	Invalid message type received from the sqlexec process.
 
This internal error indicates a problem in the communication between the
database server and the library functions that call it. Make sure that
your program software is compatible with the database engine in use.

This error can also occur if the CSM option is enabled on the database
server side but not on the client application side, or vice versa. If you
want to use a CSM, make sure that the CSM option is set in the sqlhosts
file for both the database server and client application.

This error can also occur if the confidentiality option of the CSM is
enabled on the database server side but not on the client application
side, or vice versa. If you want to use the confidentiality option of the
CSM, make sure that the confidentiality option is set for both the
database server and client application. Check your sqlhosts file and CSS
configuration file.

If the error recurs, note all circumstances and contact
IBM Technical Support.


-409	Sqlexec was not found or was not executable by the current user.

Your application contacts the database server process while it starts
up. This action uses the value in the SQLEXEC environment variable (for
database server versions prior to 6.0); it should point to one of two
executable files: sqlexec for IBM Informix SE or sqlturbo for
IBM Informix OnLine (versions prior to 6.0). Ordinarily these files will
reside in the lib subdirectory of the directory that the INFORMIXDIR
environment variable names. Check that your SQLEXEC environment
variable is set up properly and that your account has access to these
directories and files.


-410	Prepare statement failed or was not executed.

This EXECUTE statement refers to a statement id that has not been
prepared. Either no PREPARE statement was done, or one was done but
returned an error code. Review the program logic to ensure that a
statement is prepared and the PREPARE return code is checked. A
negative error code from PREPARE usually reflects an error in the
statement being prepared.


-411	Cannot specify both host variables and descriptor.

This statement has a USING DESCRIPTOR clause, but it also refers to a
cursor that was declared with host variables (that is, with
SELECT...INTO or INSERT using variables in the VALUES clause). The
purpose of both the descriptor structure and host variable names is to
specify the location of the data values, and only one method may be
used. Review the declaration of the cursor, and settle on a single
method of specifying the location of data values.


-412	Command pointer is NULL.

This statement (probably an EXECUTE or DECLARE) refers to a dynamic SQL
statement that has never been prepared or that has been freed. Review
the program logic to ensure that the statement has been prepared, the
PREPARE did not return an error code, and the FREE statement has not
been used to release the statement before this point.


-413	Insert attempted on unopen cursor.

This INSERT statement names a cursor that has never been opened or that
has been closed. Review the program logic, and check that it will open
the cursor before this point and not accidentally close it. An insert
cursor is automatically closed by a COMMIT WORK or ROLLBACK WORK
statement.


-414	Insert attempted on NULL cursor.

This PUT statement specifies a cursor that is invalid. Possibly the
cursor has been freed with the FREE statement, or possibly an automatic 
re-prepare has been attempted while opening the cursor but that operation
failed, leaving the cursor unavailable, or possibly the cursor data 
structure has been overwritten in memory.


-415	Data conversion error.

The database server is unable to convert between a program variable and
a database column. It performs automatic data conversion in many cases
but could not in this case. For instance, a character string will be
converted to a numeric type so long as the string contains the digits
of a valid number, or a float or decimal number will be converted to
integer so long as the receiver has enough precision for the value.
Review this statement, and inspect each program variable that does not
have the same data type as the matching database column.


-416	USING option with open statement is invalid for insert cursor.

This OPEN statement refers to a cursor that was declared for an INSERT
statement. The USING clause of the OPEN is not appropriate in this
case; it is only used to specify the variables that are used with a
SELECT statement. Review the program to ensure that the correct cursor
has been used in this statement. If it has, and if the INSERT statement
is written as part of the DECLARE statement, you can name the host
variables directly in it. If the INSERT statement has been prepared,
you can specify the host variables in a FROM clause in the PUT
statement.


-417	FLUSH can only be used on an insert cursor.

This FLUSH statement refers to a cursor that is associated with a
SELECT statement, not an INSERT statement. FLUSH is only appropriate
with insert cursors. Review the program to ensure that the correct
cursor has been named.


-418	NULL SQLDA descriptor or host variable list encountered.

Review the way the program constructs the sqlda and related data
structures; somehow it is setting up a null pointer. If the program is
in IBM Informix 4GL or another language in which the sqlda is not
constructed directly by the program, or if this statement only refers
to host variables by name, this error should not occur. If the error
recurs, note all circumstances and contact IBM Technical Support.


-419	SQLDATA pointer in SQLDA or host variable is null.

Review the way the program constructs the sqlda and related data
structures; somehow it is setting up a null pointer. If the program is
in IBM Informix 4GL or another language in which the sqlda is not
constructed directly by the program, or if this statement only refers
to host variables by name, this error should not occur. If the error
recurs, note all circumstances and contact IBM Technical Support.


-420	Cannot execute remote sqlexec.

Your application program is starting up and trying to make contact with
the database server process in another computer. It does this using the
contents of the SQLHOST environment variable. Check the SQLHOST
variable, and verify that the IBM Informix NET or IBM Informix STAR service has
been started in the other computer.


-421	Unknown service for execution of remote sqlexec.

Your application program is starting up and trying to make contact with
a database server in a different computer. It uses information from the
file /etc/services under the service entry sql, but this file was not
found. Contact the person who installed IBM Informix NET on your system.


-422	Flush attempted on unopen cursor.

This FLUSH statement names a cursor that has never been opened or has
been closed. Review the program logic to ensure that it will open the
cursor before this point and not accidentally close it. An insert
cursor is automatically closed by a COMMIT WORK or ROLLBACK WORK.


-423	A FETCH CURRENT was attempted with no current row.

This FETCH statement asks for the current row, but none exists. Either
the cursor was just opened, or the previous fetch returned an error
code, perhaps because it was at the end of the data. Review the program
logic, and check that it uses a FETCH NEXT statement or other FETCH
operation to establish a current row before it attempts this
statement.


-424	Cursor already declared from this prepared statement.

This DECLARE statement associates a cursor with the name of a prepared
statement. However, another DECLARE statement has already been
executed, and it associates a different cursor with the same statement
id. This action is not supported; a given statement can be associated
with only one cursor. Check all the DECLARE statements in the program,
and check that they all refer to unique statements.

This error message should not appear for Version 5.0 and later.


-425	Database is currently opened by another user.

Another user has opened the requested database in exclusive mode, or
you have more than one connection to the database server. Repeat the
statement after a short delay or when the database is known to be idle.


-426	Unknown values have already been supplied.

This internal error should not occur. If this error recurs, note
all circumstances and contact IBM Technical Support.


-427	Bind count routine called with a different count.

This internal error should not occur. If you can find no direct cause
for the error, note all circumstances and contact
IBM Technical Support.


-428	Bind routine called too many times.

This internal error should not occur. If you can find no direct cause
for the error, note all circumstances and contact
IBM Technical Support.


-429	Indicator variables should be 2-byte integers.

This statement names as an indicator variable, a host variable that was
not declared as a small integer. The value returned to an indicator
variable is a small integer value. Review the statement, especially the
use of host variables as indicator variables. Make sure the names of
indicator variables are spelled correctly and that they are properly
declared. In a 4GL program, this error should not occur. If the error
recurs, note all circumstances and contact IBM Technical Support.


-430	Type integer does not match size.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM 
Technical Support.


-431	Type float does not match size.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM 
Technical Support.


-432	Type date does not match size.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM 
Technical Support.


-433	Type money does not match size.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM Technical
Support.


-434	Type decimal does not match size.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM 
Technical Support.


-435	Time-out value must be -1 or greater.

You provided an incorrect time-out value for your callback
function/routine in IBM Informix ESQL/C or ESQL/COBOL. Check that your
time-out value is -1 or greater.


-436	Call back function must be defined when time-out value is 0 or greater.

You did not provide a callback function with your time-out value. Make
sure that you provide both.


-437	Connection must be established before registering callback function.

You attempted to register a callback function before you connected to a
database server. You must first connect to a database server and then
register your callback function.


-438	Call back function must be NULL if time-out value is -1.

You provided an incorrect value to unregister your callback function.
Pass a null value, not a function pointer, to the callback function.


-439	Database server is currently processing an SQL task.

You attempted to call an SQL routine or attempted to execute an SQL
statement within a signal handling function/routine or a callback
function/procedure. Use only the sqldone() and sqlbreak() library
functions inside your IBM Informix ESQL/C callback function. Use only the
ECO-SQD and ECO-SQB library routines inside your ESQL/COBOL callback
procedure. In addition, if you want to unregister your callback
function in IBM Informix ESQL/C, you can invoke the sqlbreakcallback()
callback registration function within your callback procedure. If you
want to unregister your callback procedure in ESQL/COBOL, you can
invoke the ECO-SQBCB callback registration routine within your callback
procedure.


-440	Cannot update more than one non-Informix DBMS within a
transaction.

In the application, an attempt was made to update data at more than one
target DBMS accessed through a gateway. In a distributed transaction,
at most one target DBMS accessed through a gateway can be updated.

You need to rewrite the application so that it updates at
most one DBMS accessed through a gateway in a single distributed
transaction.


-441	Possible inconsistent data at the target DBMS (%s) due to
an aborted commit.

Distributed commit processing failed due to a communication error,
site failure, gateway failure, or other error with the target DBMS
accessed through the gateway. Updates at all sites participating in
the transaction have been rolled back with the possible exception of
the target DBMS. The target DBMS might have committed its updates if
the failure occurred after the commit message was processed by the
target DBMS.

If the updates on the target DBMS were committed, then the updates
should be rolled back manually. Contact the target DBMS system
administrator.


-442	Cannot grant permission to NULL or empty user name.

The authorization identifier of the users to whom you are granting access
privileges cannot be NULL or empty.


-443	The range specified in the FOR loop cannot have a NULL value: (%s).

The FOR statement in a stored procedure cannot have a NULL value for 
the starting value, the ending value, or the step value of a range.


-444	Cannot use the ALTER TABLE statement to modify the extent size of 
the specified external table.

The size of extents cannot be changed for an external table, which resides 
in an extspace. An extspace refers to a storage location that the Informix 
database server does not manage.


-450	Illegal ESQL locator, or uninitialized blob variable in 4GL.

A BYTE or TEXT host variable used in this statement is not valid. If
this is a 4GL program, the variable has not been initialized by use of
the LOCATE statement, or was freed after being located. Review the
program logic to ensure all blob variables are located before use. If
this is ESQL/C, the locator structure is invalid or uninitialized.
Check that all locator structures are allocated and filled in before
use.


-451	Locator buffer size too small.

The locator structure provided for a BYTE or TEXT value in this
statement specifies a memory buffer that is smaller than the value (in
the loc_bufsize field). The actual size is in loc_indicator. No data
was transferred. Revise the program to use a larger buffer, to locate
the value in a file instead of memory, or to pass the value in segments
through a user-provided read function. Alternatively, you can specify
a substring of the value in the SELECT statement. If this is a 4GL
program, this error should not occur. If the error recurs, note
all circumstances and contact IBM Technical Support.


-452	'loc_open()' failed.

The loc_open() function provided in the locator structure for a BYTE or
TEXT value in this statement was called and returned a negative return
code. When the value is located using user-supplied functions
(loc_loctype contains LOCUSER), this function is part of the program,
and you have to diagnose its problems yourself. When the value is
located in a file (loc_loctype contains LOCFILE or, in a 4GL program,
the variable has been located in a file), this error indicates that the
system-supplied loc_open() function was not able to open the file.
Possibly the file does not exist, you do not have read permission for
the file, or too many files are open.


-453	'loc_close()' failed.

The loc_close() function provided in the locator structure for a BYTE
or TEXT value in this statement was called and returned a negative
return code. When the value is located using user-supplied functions
(loc_loctype contains LOCUSER), this function is part of the program,
and you have to diagnose its problems yourself. When the value is
located in a file (loc_loctype contains LOCFILE or, in a 4GL program,
the variable has been located in a file), this error indicates that the
system-supplied loc_close() function was not able to close the file.


-454	'loc_read()' failed.

The loc_read() function provided in the locator structure for a BYTE or
TEXT value in this statement was called and returned a negative return
code. When the value is located using user-supplied functions
(loc_loctype contains LOCUSER), this function is part of the program
and you have to diagnose its problems yourself. When the value is
located in a file (loc_loctype contains LOCFILE or, in a 4GL program,
the variable has been located in a file), this error indicates that the
system-supplied loc_read() function was not able to read from the
file.


-455	'loc_write()' failed.

The loc_write() function provided in the locator structure for a BYTE
or TEXT value in this statement was called and returned a negative
return code. When the value is located using user-supplied functions
(loc_loctype contains LOCUSER), this function is part of the program
and you have to diagnose its problems yourself. When the value is
located in a file (loc_loctype contains LOCFILE or, in a 4GL program,
the variable has been located in a file), this error indicates that the
system-supplied loc_write() function was not able to write to the file.
Possibly the disk is full, you do not have write permission for the
disk, or a hardware error occurred.


-456	Indicator value cannot fit in host variable.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstance, and contact IBM 
Technical Support.


-457	Database server terminated unexpectedly.

The database server process or thread with which your application
program was working has terminated. The DBA might have shut the system
down. The next most likely cause is an internal error. Look for
operating-system messages that might give more information. If the
error recurs, note all circumstances and contact
IBM Technical Support.

Check the ISAM error code that is returned with this error. If it
is -129, the database server has not terminated but simply reached
a limit on the number of concurrent user sessions (see the explanation
of error -129).


-458	Long transaction aborted.

The database server ran out of log space in which to record this
transaction. A transaction that is not fully recorded cannot be rolled
back. To preserve database integrity, the operating system ended the
transaction and rolled it back automatically. All changes made since
the start of the transaction have been removed. Terminate the
application, and replan it so that it modifies fewer rows per
transaction. Alternatively, contact the database server administrator
to discuss increasing the number or the size of the logical logs. Be
prepared to talk about the number of rows being updated or inserted and
the size of each row.

This error can also occur when a DBA has used FORCE_DDL_EXEC environment 
variable in another session and executes the ALTER FRAGMENT ON TABLE 
statement. In this situation, the ALTER FRAGMENT ON TABLE statement
rolls back any transactions that opened or have locks on the tables 
on which ALTER FRAGMENT is issued.


-459	The database server was shut down.

The database server instance that your application was using has been
shut down by its operator. Your current transaction will be rolled back
automatically when the database server starts up again. Rerun the
application at that time.


-460	Statement length exceeds maximum.

The statement text in this PREPARE, DECLARE, or EXECUTE IMMEDIATE
statement is longer than the database server can handle. The actual
limit differs with different implementations, but it is always
generous, in most cases up to 65,535 characters. Review the program
logic to ensure that an error has not caused it to present a string
that is longer than intended (for example, by overlaying the null
string terminator byte in memory). If the text has the intended length,
revise the program to present fewer statements at a time.


-461	File open error.

The database server could not open a file required to execute this
statement. Sometimes this is a general error, possibly referring to a
message file that the database server cannot find. At other times this
error occurs because the locator (blob) structure field loc_loctype was
set to LOCFNAME, but the database server could not open the file using
the pathname in loc_fname and the flags in loc_oflags. Any of the
following conditions can cause the database server to report this error:

*  An environment variable setting is missing.

*  Not enough disk space is available for opening the file.

*  A file permission problem exists.

*  The limit on the number of open files was reached.

*  The database server could not access a blob of type LOCFNAME.

*  The database server is on a different machine from the client.

*  The statement transfers a value between a file and a BYTE or TEXT
   column.

*  The statement attempts to drop a database when a required file is not
   available.

Make sure your environment variables and file permissions are set
correctly. For more information, check for any accompanying ISAM error
code or operating-system message.


-462	File close error.

This statement reads a value from a BYTE or TEXT column into a file.
The database server copied the data to the file but got an
operating-system error when it closed the file. Check the accompanying
ISAM error code for more information, and look for operating-system
messages. Typical causes include lack of disk space and hardware
errors.


-463	File read error.

This statement writes a value into a BYTE or TEXT column from a file.
The database server got an operating-system error while reading the
file. Check the accompanying ISAM error code for more information, and
look for operating-system messages.


-464	File write error.

This statement reads a value from a BYTE or TEXT column into a file.The
database server got an operating-system error while writing the data.
Check the accompanying ISAM error code for more information, and look
for operating-system messages. Typical causes include lack of disk
space and hardware errors.


-465	No more memory for locator buffer.

This query returns a BYTE or TEXT value that is located in memory, and
the locator structure asked (by setting -1 in loc_bufsize) that the
database server allocate the memory. It was unable to get the necessary
memory for a buffer. If you can use operating-system methods to
allocate more data space memory to your program, do so and run it
again. Alternatively, locate the value in a file, or use a substring to
select the value in portions. If this is a 4GL program, this error
should not occur. On DOS systems, exit to the operating-system command
line, free some disk space, and resubmit your program. If the error
recurs, note all circumstances and contact IBM Technical Support.


-466	File length error.

This statement stores a value in a BYTE or TEXT column from a file. The
locator structures specified a length for the data in loc_locsize, but
the database server found end of file before it had read that much
data. Review the program to ensure that the input file was properly
positioned and that the correct length was specified. Specify a length
of -1 if the file should be read to its end. If this is a 4GL program,
this error should not occur. If the error recurs, note all
circumstances and contact IBM Technical Support.


-467	Indicator object is missing.

This program was compiled with the -icheck flag, and the current SQL
statement did return a truncated or null value, for which an indicator
would normally be set, to a host variable for which no indicator
variable was specified. Revise the program to use indicator variables.


-468	Cannot obtain the user ID from the system. Unable to start the database server.

Your application is trying to open communications to a database server.
As part of this action, it has to read your user ID from the system
password file, and it failed to do this. Look for operating-system
error messages that might give more specific information. Consult with
a system administrator to ensure that the file of user IDs is readable
to all users.


-469	This descriptor does not exist.

The name of the system descriptor area that is specified does not exist
in the list of system descriptor areas, so it has not been allocated.
You must execute the ALLOCATE DESCRIPTOR statement to allocate this
descriptor name before you use it.


-470	The value of occurrence must be greater than 0.

If you include the WITH MAX occurrences clause in the ALLOCATE
DESCRIPTOR statement, you must specify a value of occurrences that is
greater than zero. Change the value of occurrences to a positive
integer, and execute the ALLOCATE DESCRIPTOR statement again.


-471	An invalid descriptor name has been used.

This error is generated if the name of the SQL descriptor is either an
empty string or an uninitialized host variable. Descriptor names follow
the same naming rules as identifiers. Check the name of the descriptor,
and verify that it has been set with the SET DESCRIPTOR statement,
allocated with the ALLOCATE DESCRIPTOR statement, or otherwise
initialized.


-472	Occurrence value is out of range.

Change the value of the COUNT statement so that it is less than or
equal to the occurrences and greater than zero, and try again.


-473	The specified data type is not a X/Open standard type.

This error is generated when a GET DESCRIPTOR or a SET DESCRIPTOR
statement is executed in X/Open mode, and the value for the type field
is not an X/Open standard type. Check the X/Open codes for data types
again, and make sure that the correct type is being used.


-474	Unknown field type.

An unknown field type has been requested. Check that you are using one
of the valid field types in X/Open mode, and try again. The valid field
types are TYPE, LENGTH, PRECISION, SCALE, NULLABLE, INDICATOR, DATA,
and NAME.


-475	In a GET statement, if DATA is null, then INDICATOR must be specified.

This X/Open rule indicates that you must request the INDICATOR value in
the GET DESCRIPTOR statement when DATA is null.


-476	The LENGTH field must be specified when the type is SQLCHAR.

When you use a SET DESCRIPTOR statement, and TYPE is set to SQLCHAR,
the LENGTH field must also be specified and set in the same SET
DESCRIPTOR statement.


-477	Buffer is too small.

In a GET DESCRIPTOR statement, the buffer (the character host variable)
that is specified to store the NAME entry is too small. Increase the
buffer size, and call the GET DESCRIPTOR statement again. This error
message also is displayed when the host variable is a FILE type, and
the buffer used to store its name is too small.


-478	User must specify TYPE.

In the initial state, when you execute a SET DESCRIPTOR statement, you
must specify TYPE as one of the fields to be set. Set the TYPE field in
the SET DESCRIPTOR statement, and execute it again.


-479	The number of DESCRIBED columns is greater than the allocated space.

The number of columns in the table is larger than the allocated
descriptor. Use the ALLOCATE DESCRIPTOR statement to reallocate a
larger occurrence value, and try the DESCRIBE statement again.


-480	A descriptor with the same name already exists.

A system descriptor area with the same name has already been allocated,
so this descriptor name is not unique. Change the name of this
descriptor in the ALLOCATE DESCRIPTOR statement so that the descriptor
is unique, and execute the statement again.


-481	Invalid statement name or statement was not prepared.

The statement has not been prepared, or the format of the statement name
is not valid. A valid statement name does not exceed the maximum length,
begins with a letter or underscore, does not contain any blanks or
nonalphanumeric characters except underscores and, in IBM Informix Dynamic
Server 9.2x or later, dollar-sign characters.

The maximum length for statement names depends on the database server. In
IBM Informix Dynamic Server 9.2x or later, the maximum length is 128 characters.In 
other IBM Informix database servers, the maximum length is 18 characters.


-482	Invalid operation on a non-SCROLL cursor.

You cannot issue a FETCH PRIOR, FETCH FIRST, FETCH LAST, FETCH CURRENT,
FETCH RELATIVE n, or FETCH ABSOLUTE n statement with a non-scroll
cursor. To do so, you must first declare the cursor as a scroll
cursor.


-483	SQL descriptor's name is too long. Limit is 128 characters.

The maximum length for SQL descriptor names depends on the database server.
In IBM Informix Dynamic Server 9.2 or later, the maximum length is 128 characters. In 
other Informix database servers, the maximum length is 18 characters.


-484	Statement/cursor's name must be between 1 to 128 characters.

The maximum length for statement and cursor names depends on the database
server. In IBM Informix Dynamic Server, the maximum length is 128 characters.
In other Informix database servers, the maximum length is 18 characters.


-485	Number of host variables does not match SELECT list.

This error can occur only if your database is ANSI compliant. The error
indicates that the number of host variables in an ESQL statement is not
the same as the number of values that the database server returns. In
addition, a warning flag is placed in the third element of the sqlwarn
structure of sqlca.

The execution of the second statement in the following ESQL/C example
returns this error:

$create table mytab (i integer, f float)
$select * into :var1 from mytab; --error

If your database is not ANSI compliant, this and similar statements
complete without error, and the values of the host variables are set in
sequence to their respective returned values. If the number of returned
values is smaller than the number of host variables, the remaining host
variables are undefined. As with an ANSI-compliant database, a warning
flag is placed in the third element of the sqlwarn structure of sqlca.


-486	Illegal data type found during data conversions.

The data type found in the system descriptor sqlvar entry is either
invalid or uninitialized. You cannot use the GET DESCRIPTOR statement
to get a value from an uninitialized sqlvar.


-487	A cursor can only be declared as static or dynamic.

The specified SQL statement requires you to declare a cursor as static
or dynamic. Declare the cursor as static or dynamic, depending on which
type of cursor is required, and retry the specified operation.


-488	Invalid operation on cursor.

An invalid operation has been attempted on a cursor. A cursor declared
for a SELECT statement cannot be used in a PUT statement. Similarly, a
cursor declared for an INSERT statement cannot be used in a FETCH
statement. Check the program, and try again.


-489	Exception number out of bounds.

An exception number was requested that was either less than 1 or
greater than the number of diagnostic entries in the diagnostic area.


-490	Database was created without NLS functionality.

You created a database that lacked NLS functionality.


-491	DBNLS not set (LC_COLLATE must be string_value).

Set the DBNLS environment variable to an appropriate value. Make sure
LC_COLLATE is set to the specified string_value.


-492	LANG or LC_COLLATE environment variable invalid.

You specified an invalid value for a LANG or LC_COLLATE environment
variable.


-493	DBNLS not set (LC_CTYPE must be string_value).

Set the DBNLS environment variable to an appropriate value. Make sure
LC_TYPE is set to the specified string_value.


-494	LANG or LC_CTYPE environment variable invalid.

You specified an invalid value for a LANG or LC_CTYPE environment
variable.


-495	LANG or LC_MONETARY environment variable invalid.

You specified an invalid value for a LANG or LC_MONETARY environment
variable.


-496	LANG or LC_NUMERIC environment variable invalid.

You specified an invalid value for a LANG or LC_NUMERIC environment
variable.


-497	LANG or LC_TIME environment variable invalid.

You specified an invalid value for a LANG or LC_TIME environment
variable.


-498	Bad cixtomsg file. Check installation.

The version of the cixtomsg file, which holds the mapping table of
SQLCODE to SQLSTATE values, is invalid. The cixtomsg file is located
in the directory $INFORMIXDIR/msg. Check the date and size of the
file. If the error recurs, note all circumstances and contact IBM
Technical Support.


-499	The operation causes a rowsize to exceed the allowable limit
(32767).

The maximum size of a table record is 32,767 bytes. Check the summary sizes
of all the fields in the table. Make sure that the operation you have
attempted does not lead to exceeding the maximum row size.


-500	Clustered index index-name already exists in the table.

A table may be clustered on only one index at a time. This table is
already clustered on the index whose name is shown. Before you can
cluster on another index, you must execute ALTER INDEX index-name TO
NOT CLUSTER. To see which tables are clustered on which indexes, query
sysindexes and systables as follows:

SELECT tabname, idxname FROM systables T, sysindexes X
        WHERE T.tabid = X.tabid AND X.clustered = 'C'


-501	Index index-name is already not clustered.

The table is no longer clustered on this index (if it ever was). Make
sure that this is the index you meant; if so, you do not need to alter
this index. For a way to see which tables are clustered, see the
discussion of error -500.


-502	Cannot cluster index.

While the database server was building a new copy of the table with
rows in clustered sequence, it got an unexpected error. Check the
accompanying ISAM error code for more information. Typical causes
include a shortage of disk space.


-503	Too many tables locked.

This database server in this host operating system has a limit on the
number of tables that can be locked at one time. It was unable to lock
the table you requested. Roll back the current transaction. Then
redesign the operation to lock fewer tables, to use row-level locking,
or to open the database in exclusive mode.


-504	Cannot lock a view.

This LOCK TABLE statement cannot be carried out because the table
specified is really a view. Only real tables can be locked. Roll back
the current transaction. Then redesign the operation to work against
the real tables on which the view is based, or open the database in
exclusive mode.


-505	Number of columns in UPDATE does not match number of VALUES.

This UPDATE statement uses a SET clause in which a list of column names
is set equal to a list of expressions or to a SELECT statement. The
number of columns on the left of the equal sign is not the same as the
number of data values produced on the right. Roll back the current
transaction. Then rewrite this statement. If a list of expressions is
used, check the punctuation to ensure that each expression is distinct.
If a SELECT statement is used, review it to see how many columns it
returns.


-506	Do not have permission to update all columns.

Your account has been granted the privilege of updating specific
columns, but this UPDATE statement updates all columns or columns for
which you do not have the privilege. Contact the owner of the table or
someone with Database Administrator privilege on this database, and ask
to be granted full UPDATE privilege. For a way to list table owners,
see the discussion of error -313.


-507	Cursor cursor-name not found.

The cursor that is named in the WHERE CURRENT OF clause in this UPDATE
or DELETE statement does not exist. Review the spelling of the name. If
it is as you intended, check the DECLARE statement to ensure that it
has been executed. Also make sure that the cursor has not been freed
with the FREE statement or during a failed automatic re-prepare attempt.


-508	Cannot rename a temporary table.

This RENAME TABLE statement cannot be executed because the specified
table is temporary. You cannot rename a temporary table. Review the
spelling of the table name. If it is as you intended, drop it, and
create it again under a different name.


-509	Cannot rename a column in a temporary table.

This RENAME COLUMN statement cannot be executed because the specified
table is temporary. You cannot rename a column in a temporary table.
Review the spelling of the table name. If it is as you intended, drop
it, and create it again with different columns.


-510	Cannot create synonym for temporary table table-name.

This CREATE SYNONYM statement cannot be executed because the specified
table is temporary. Review the spelling of the table name. If it is as
you intended, redesign the application. Either make the table
permanent, or do not use a synonym.


-511	Cannot modify system catalog table-name.

You are not allowed to update, insert, or delete rows in this table. If
you are absolutely sure that you must do so, sign on as user informix.
That user account can modify most system-catalog tables except LBAC related
catalog tables. However, this very risky practice is not recommended 
unless you are specifically instructed by IBM Technical Support.


-512	No References privilege on the referenced columns.

You do not have References privilege on the referenced columns. The
owner of the referenced table or a user who has References privilege
with the grant option on that table can grant you this privilege using
the GRANT statement.


-513	Statement not available with this database server.

You cannot do an xa_open() execution if another database is already open.
Make sure that you have closed any open databases before executing xa_open().


-514	Only a DBA can create, drop, grant, or revoke for another user.

This data definition statement specifies a table, view, index, or
synonym that is owned by another user or grants/revokes a privilege as
another user. Any of these things requires Database Administrator 
privilege, which you do not have on this database. If you intended to 
work on objects that you own, review the punctuation of the statement.
At some point in it, you have qualified a name with the user ID of 
another account. Otherwise, get a DBA to grant you DBA privilege or to
perform this operation for you.


-515	Constraint constraint-name has already been dropped.

You are trying to drop a constraint that has already been dropped in
the same ALTER TABLE statement.


-516	System error - temporary output file not created yet.

This internal error indicates a problem in the communication between
the database server and the library functions that call it. Check that
your program is at the same software level as the database server in
use. If the error recurs, note all circumstances and contact IBM Technical Support.


-517	The total size of the index is too large or too many parts in
index.

All database servers have limits on the number of columns that can be
included in an index and on the total number of bytes in a key (the sum
of the widths of the columns). This CREATE INDEX statement would exceed
that limit for this database server. IBM Informix Dynamic Server and
IBM Informix Universal Server allow 16 key parts (columnar or functional) and
a width of 390 bytes on a 2K page platform. On 4K page platforms or using a 
non-default page size allows greater than 390 bytes for the width of indexed 
columns. IBM Informix SE supports 8 columns and a width of 126 bytes.  Other 
Informix database servers allow 16 columns and 255 characters.


-518	Child constraint constraint-name not found.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-519	Cannot update column to illegal value.

One of the values in this UPDATE statement is based on an expression
that is in error. Check each expression in the SET clause for validity.
Look in particular at uses of built-in functions such as LENGTH and
DATE.


-520	Cannot open database tblspace.

The database server cannot locate the disk partition in which it has
stored a table that is referenced in this command. Contact the database
server administrator to find out what the problem is. Possibly the
chunk that contains this tblspace has been taken off-line.


-521	Cannot lock system catalog table-name.

You cannot lock any of the tables that comprise the system catalog. All
users need them at all times. The database server handles concurrent
access to them correctly, so simply remove this statement from your
program.


-522	Table table-name not selected in query.

You used a correlation name to qualify a column name in either a GROUP
BY clause or a SET clause. Consider rewriting the statement in an SPL
routine that you then use as the triggered action, passing the column
value as an argument. In any case, you must rewrite the statement
without a using a correlation name in the GROUP BY clause or the SET
clause.


-523	Can only recover, repair or drop table.

This statement (RECOVER, REPAIR, or DROP) specifies a view. However,
these statements are only supported for real tables, not views. In the
case of DROP, if you drop any of the tables used in the view, the view
will be removed as well. To recover or repair this table, you must
recover or repair the tables on which the view is defined. For a way to
list the names of tables that are views, see the discussion of error
-394.


-524	Lock table can only be used within a transaction.

Because this database has a transaction log, a table can only be locked
within a transaction. Review the program, and ensure that a BEGIN WORK
statement is issued to start a transaction before this statement.


-525	Failure to satisfy referential constraint constraint-name.

During an ALTER TABLE or SET statement, you have added or re-enabled a
referential constraint that the data in the table violates. Check that
the data in the referencing column (child key) exists in the referenced
column (parent key).


-526	Updates are not allowed on a scroll cursor.

For a DECLARE statement, the clause FOR UPDATE is not allowed in
conjunction with the SCROLL keyword. For an UPDATE statement in an
ANSI-compliant database (in which the FOR UPDATE clause is not required
when declaring a cursor for update), the cursor named in this statement
was declared with the SCROLL keyword and may not be used for updates.
The way a scroll cursor is implemented makes it unsafe for updating a
table, since it will sometimes not reflect the current state of the
selected rows. If you want to use a scroll cursor to examine rows and
then update them, you may redesign your application in the following
way (among many). Use the scroll cursor to select also the ROWID of
each row. Declare a second, nonscrolling cursor that selects one row
for update based on its ROWID. When it is time to update a selected
row:

    *   Open the update cursor using the ROWID value found by the
	scrolling cursor.

    *   Fetch the row, and check the error code (the row might have
	been deleted).

    *   If the fetch succeeded, verify that the row contents are
	unchanged from those selected by the scrolling cursor (the row
	is now locked, so it cannot change further, but it might have
	changed between the two fetches).

    *   If the row is unchanged, update it using the nonscrolling cursor.

    *   Close the nonscrolling cursor.

    *   This procedure ensures that the update reflects the current
	state of the table but also retains the convenience of the
	scrolling cursor. A fetch by ROWID of a recently fetched row
	will usually entail no disk activity and so will not cost much
	time.


-527	Lock Mode is not available on this system.

You tried to use the SET LOCK MODE TO WAIT statement on IBM Informix SE,
but your IBM Informix SE database server uses CREATE LOCKING rather than
System V locking. If the error recurs, note all circumstances
and contact IBM Technical Support.

The database server cannot execute the SET LOCK MODE TO WAIT statement
because the host operating system does not have adequate support for
locking to permit waiting for a lock to be released. On this system,
your program will be notified when a table or row is locked (with an
error such as -233 or -378); your program determines what to do next,
such as rolling back the transaction and trying it again.


-528	Maximum output rowsize max-size exceeded.

The total number of bytes that this statement selects exceeds the
maximum that can be passed between the database server and the program.
Make sure that the columns selected are the ones that you intended.
Check that you have not named some very wide character column by
mistake, neglected to specify a substring, or specified too long a
substring. If the selection is what you require, rewrite this SELECT
statement into two or more statements, each of which selects only some
of the fields. If it is a join of several tables, you might best select
all desired data INTO TEMP; then select individual columns of the
temporary table. If this is a fetch via a cursor in a program, you
might revise the program as follows. First, change the cursor to select
only the ROWID of the desired row. Second, augment the FETCH statement
with a series of SELECT statements, each of which selects one or a few
columns WHERE ROWID = the saved row ID.


-529	Cannot attach to shared memory.

This error message appears prior to Version 6.0. Your application
program is unable to initialize its connection to the database server
because you are using a shared-memory implementation. Either the
database shared memory has not been initialized, or the maximum number
of users has already started using the system. Check the accompanying
ISAM error code for more information.


-529	Cannot attach to transaction.

This error message appears beginning with Version 6.0. Your application
program is unable to initialize its connection to the database server
because you are using a shared-memory implementation. Either the
database shared memory has not been initialized, or the maximum number
of users has already started using the system. Check the accompanying
ISAM error code for more information.


-530	Check constraint constraint-name failed.

The check constraint placed on the table column was violated. To see the
check constraint associated with the column, query the syschecks system
catalog table. However, you must know the constrid for the check constraint
before you query syschecks. (The constrid is assigned in the sysconstraints
system catalog table.) Use the following subquery to show the check
constraint for constraint-name:

SELECT * FROM syschecks
        WHERE constrid = (SELECT constrid FROM sysconstraints
           WHERE constrname = constraint-name)

In certain scenarios, you might get this error without a constraint name being
specified. This can happen if you are performing a DDL operation that has a
check constraint that is violated by the existing data on the table.
In this case, the DDL operation would not succeed, and thus the constraint
name would not be in the system catalog.

-531	Duplicate column column-name exists in view.

This CREATE VIEW statement gives a list of column names, and at least
one of them appears twice in the list. Review the list of column names,
and make sure that each appears only once.


-532	Cannot alter temporary table table-name.

The table shown is only a temporary table. It will vanish when this
session ends. Such tables cannot be altered. To alter the shape of the
table, simply drop it, and re-create it.


-533	Extent size too small, minimum size is number k.

The size that is specified for a disk extent (either the EXTENT SIZE or
the NEXT SIZE clause) must be at least four times the disk page size,
as shown. Generally, set EXTENT SIZE large enough to hold all of the
rows as you initially estimate them, and set NEXT SIZE at an eighth or
a quarter of that.


-534	Could not insert new row into table, table is locked.

Database servers at Version 4.0 and later do not return this error. In
earlier versions, its meaning is the same as error -271 with ISAM error
code -113. Roll back the current transaction, and run it again when the
table has been unlocked.


-534	Cannot open EXPLAIN output file.

The statement SET EXPLAIN ON has been executed, and the database server
is trying to open the file sqexplain.out in the current working
directory. An operating-system error of some kind prevents it. See the
ISAM error code for more information. Look for operating-system error
messages that might give more detail. Likely problems include a lack of
write permissions in the current directory and a full disk. This error
message appears beginning with Version 4.1.


-535	Already in transaction.

This BEGIN WORK statement is redundant; a transaction is already in
progress. If this is a program, review its logic to make sure it has
not accidentally failed to end the previous transaction.


-536	Number of columns in child constraint does not match number of
cols in parent constraint.

The number of referencing columns (child key) does not match the number
of referenced columns (parent key) in the referential constraint. Check
that a one-to-one relationship exists between referenced and
referencing columns.


-537	Constraint column column-name not found in table.

The column that is specified in a constraint definition does not
exist.


-538	Cursor cursor-name has already been declared.

The cursor that is named in this DECLARE statement has also been named
in a DECLARE statement that was executed earlier. Possibly the same
DECLARE is being executed in a loop, or possibly the program meant to
execute a FREE statement for this cursor but did not. Review the
program logic to ensure that it executes only a single DECLARE for each
cursor (except after freeing one).


-539	DBTEMP too long.

The pathname in the DBTEMP environment variable exceeds the limit on
pathnames, which is 80 characters. You will have to locate the
temporary directory higher in the directory hierarchy. Since Version
5.01, the IBM Informix SE database server uses the DBTEMP environment
variable, but IBM Informix Dynamic Server and IBM Informix OnLine Dynamic
Server do not.


-540	Write failed on constraints.

An error occurred while defining a constraint. Possibly you have
defined a constraint whose name duplicates the name of another
constraint, table, or index. If this is the case, repeat the statement,
specifying a unique name. Otherwise, check the accompanying ISAM error
code for more information.


-541	User does not have ALTER privilege.

You must have the correct privilege before you can alter the name of a
table or the names, types, or number of columns in it. You must also
have the correct privileges to set the object modes for constraints
and triggers.

You must be the owner of the database object, have Database 
Administrator privilege in the database, or be granted ALTER privilege 
for the database object by its owner or a DBA. See the discussion of
error -313 for a way to list the owners of tables and users with 
DBA privilege.


-542	Cannot specify a column more than once in a constraint, trigger,
or index.

You name the same column more than once in the triggering column list
of an update trigger. Remove the duplicate occurrence of the column
name, and try again. This error also will appear if duplicate column
names exist in the index list.


-543	ESCAPE character must be only one byte.

In the WHERE clause, a subclause ESCAPE char contains more than one
character as char. Review the punctuation of the clause, and revise it
so that it specifies just one byte character.


-544	Cannot have aggregates within aggregates.

The statement contains a call on an aggregate function within the
parameter list for another aggregate function, such as
SUM(MAX(column)). This action is not supported because all aggregates
are calculated over the same groups of rows. If you did not intend an
expression of this sort, look for missing or misplaced parentheses. If
you did intend it, rethink the query. For example, you might select the
MAX values into a temporary table and then take their SUM.


-545	No write permission for table table-name.

Check the accompanying ISAM error code for more information. With this
database server, a database is a directory with the name dbname.dbs,
while tables and indexes are files within that directory. You need to
have read and write access to all these files in order to exercise
normal database functions.


-546	Cannot have host variables when creating a view view-name.

This statement either prepares or executes a CREATE VIEW statement in
which the SELECT statement refers to host variables. This action is not
supported. The SELECT statement in a view can be executed from any
program and cannot rely on the variables of one program. Review the
CREATE VIEW statement, and make sure that it does not contain the names
of any host variables, an INTO clause, or a ? placeholder.

Database servers after Version 5.01 do not use this error message.


-547	Must rollforward database in the directory where the database is.

Before you execute the ROLLFORWARD statement, make the current
directory the directory that contains the dbname.dbs directory for the
database. Then execute the statement again.


-548	No referential constraint or trigger allowed on a TEMP table.

You cannot create a constraint or a trigger on a temporary (TEMP)
table. Consider creating the temporary table as a permanent table in
the database. If this option is feasible, create the table, and then
create the trigger on it.


-549	Column column-name in UNIQUE constraint is not a column in the table.

The column appears in the list of columns for a UNIQUE clause, but it
is not one of the columns defined in this table. Check the spelling of
all column names in this statement. If they are as you intend, then
check the definition of the table. See the discussion of error -328 for
a way to list all column names in a table.

Database servers after Version 5.01 do not use this error message.


-550	Total length of columns in constraint is too long.

The total size of all the columns listed in a UNIQUE, PRIMARY KEY, or
FOREIGN KEY clause is limited. The limit is the same as the restriction
on the total size of all columns in a composite index.
IBM Informix Dynamic Server allows 16 key parts and a width of 390 bytes
on a 2K page platform. On 4K page platforms or using a non-default page size
allows greater than 390 bytes for the width of indexed columns. 
IBM Informix SE supports 8 columns and a width of 126 bytes. 
Other Informix database servers allow 16 columns and 255 bytes.
The limit depends on the database server in use, but all servers support 
a total of at least 120 bytes. 

For additional information, see the CREATE TABLE statement in
the IBM Informix Guide to SQL: Syntax.


-551	The constraint contains too many columns.

The total number of columns listed in a UNIQUE, PRIMARY KEY, or FOREIGN
KEY clause is limited. The limit depends on the database server in use,
but all database servers support eight columns. The limit is the same as
the restriction on the number of columns in a composite index. For
additional information, refer to the CREATE INDEX statement in the
IBM Informix Guide to SQL: Syntax.


-552	Blob host variables are disallowed in multi-statement prepares.

This EXECUTE statement executes a prepared list of multiple statements.
One or more of the host variables supplied for the ? placeholders in
the list is a locator structure for a TEXT or BYTE value. This action
is not allowed. Statements that refer to TEXT or BYTE variables may be
prepared and executed, but they must be single statements, not part of
a multistatement list.


-553	Mkdbsdir not found in $INFORMIXDIR/bin. Consult your installation
instructions.

An executable program, mkdbsdir, is used to create the initial contents
of the database directory during a CREATE DATABASE statement. It is
distributed with the database server and should be found in the bin
subdirectory of the directory that the INFORMIXDIR environment variable
names, but it was not. Check the setting of INFORMIXDIR, and then
consult with the person who installed the software.


-554	Syntax disallowed in this database server.

The database server that you are using does not support this statement
or some clause in it. When a program starts, the database server in use
is chosen based on the SQLEXEC environment variable (for database
servers prior to Version 6.0). Several small differences in statement
syntax exist between IBM Informix SE and other IBM Informix database servers.
For example, IBM Informix SE supports the IN 'pathname' clause of the
CREATE TABLE statement while other IBM Informix database servers support
the IN dbspace clause instead.


-555	Cannot use a select or any of the database statements in a
multi-query prepare.

The statement text that is presented with this PREPARE statement has
multiple statements divided by semicolons, and one is a SELECT,
DATABASE, CREATE DATABASE, or CLOSE DATABASE statement. These
statements must always be prepared as one-statement texts. Check the
statement text string, and make sure that you intended multiple
statements. If you did, revise the program to execute these four
statement types alone.


-556	Cannot create, drop, or modify an object that is external to current database.

This statement attempts to create, drop, or alter an object in an
external database, one other than the current database. You can only
read the contents of an external database.

If you make the external database your current database, you can
modify the contents. Review all uses of names beginning with <dbname>,
which refers to an object in the external database <dbname>.


-557	Cannot locate table that is external to the current database
after <level-count> levels of synonym mapping.

One of the tables named in this query was in fact a synonym, and it
pointed outside the current database. It named another synonym that
pointed outside its database, and so on for <level-count> synonyms
with no real table being found. The database server has given up on
the query in case an endless chain of synonyms exists.

To review the synonyms in the current database that refer to external
databases, query systables and syssyntable as follows:

SELECT T.tabname synonym, servername, dbname, user, S.tabname
   FROM systables T, syssyntable S
      WHERE T.tabtype = 'S' AND T.tabid = S.tabid AND S.btabid IS NULL

To follow a chain of synonyms through external databases, use a similar
query in the external database and substitute for servername, dbname,
and tabname the values that the preceding query returns each time.

SELECT T.tabname synonym, servername, dbname, user, S.tabname
        FROM dbname@servername:systables T, dbname@servername:syssyntable S
           WHERE T.tabtype = 'S' AND T.tabname = 'tabname'
              AND T.tabid = S.tabid

When this query returns no row, the requested tabname is not defined as
a synonym in that database (it is a table, a view, or not defined).


-558	Changrp not found in $INFORMIXDIR/bin. Consult your installation
instructions.

This command requires the presence of an executable program named
changrp, which is normally installed as part of the database server. It
should be in the bin subdirectory of the directory that INFORMIXDIR
environment variable names. Check the value in that variable, and then
consult with the person who installed the software.


-559	Cannot create a synonym on top of another synonym.

This CREATE SYNONYM statement names another synonym. Making a chain of
synonyms is not supported. See the discussion of error -218 for a way
to list the names of all synonyms. To have a second synonym with the
same meaning as the first, find out the meaning of the other synonym.
Then make a new synonym to refer to the same base table. To see the
base table for a given synonym, query systables and syssyntable as
follows, substituting the name of the synonym:

SELECT T.tabname synonym, S.* FROM systables T, syssyntable S
        WHERE T.tabname = name AND T.tabid = S.tabid

If btabid is defined in the resulting display, the synonym refers to a
table in that current database with that tabid; otherwise, it refers to
an external database.


-560	Synonym with tabid number not found in systables.

Either the systables or syssyntable system catalog, or an index on one
of these, has been corrupted. Run the bcheck or secheck utility. Be
prepared to drop and re-create all synonyms.


-561	Sums and averages cannot be computed on datetime values.

This statement applies an aggregate function such as SUM to a column
that has the type DATETIME. The function is not defined on this data
type since arithmetic is not. Review the use of aggregate functions.
You will have to revise the query.


-562	Database conversion failed.

You are running a new version of the database server, and you just
opened a database for the first time with this level of the software.
The database server tried to upgrade the database automatically,
probably by defining an additional system-catalog table. An unexpected
error occurred. Check the accompanying ISAM error code for more
information. If the error recurs, note all circumstances and
contact IBM Technical Support.

Database servers after Version 5.01 do not use this error message.


-563	Cannot acquire exclusive lock for database conversion.

You are running a new version of the database server, and you have just
opened a database for the first time with this level of the software.
The database server has tried to upgrade the database automatically,
probably by defining an additional system catalog table. However, it
needs to lock the database for exclusive use to do this conversion, and
some other user has the database open. Wait a short time, and try this
statement again. At that time, the database might be free (or another
user's action might have updated it).


-564	Cannot sort rows.

This internal error reflects an unexpected condition during a sort.
Check the accompanying ISAM error code for more information. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-565	Cannot read sorted rows.

This internal error reflects an unexpected condition during a sort.
Check the accompanying ISAM error code for more information. If the
error recurs note all circumstances and contact
IBM Technical Support.


-566	Cannot initiate sort.

This internal error reflects an unexpected condition during a sort.
Check the accompanying ISAM error code for more information. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-567	Cannot write sorted rows.

This internal error reflects an unexpected condition during a sort.
Check the accompanying ISAM error code for more information. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-568	Cannot reference an external database without logging.

This statement refers to a database other than the current database.
However, the current database uses transaction logging, and the
external one does not. This action is not supported; the databases
that are used in a single transaction must all use logging or all not
use it.


-569	Cannot reference an external database with logging.

This statement refers to a database other than the current database.
However, the current database does not use transaction logging, and the
external one does. This action is not supported; the databases that are
used in a single transaction must all use logging or all not use it.


-570	Cannot reference an external ANSI database.

This statement refers to a database other than the current database.
However, the current database is not ANSI compliant, and the external
one is. This action is not supported; the databases that are used in a
single transaction must all be ANSI compliant, or all must not be.


-571	Cannot reference an external non-ANSI database.

This statement refers to a database other than the current database.
However, the current database is ANSI compliant, and the external one
is not. This action is not supported; the databases used in a single
transaction must all be ANSI compliant, or all must not be.


-572	The specified wait duration is too long.

The maximum time that you can specify as the WAIT time in SET LOCK MODE
is 32,767 seconds. Review this statement, and make sure it specifies
the duration in seconds that you intended. If so, either use a shorter
duration, or (since 32,767 seconds is more than 9 hours) simply omit
the duration to specify an indefinite wait.


-573	Cannot set log to buffered in a mode ANSI database.

This statement tries to apply BUFFERED LOG mode, but the database is
ANSI compliant; that is, it was created with the clause MODE ANSI. One
aspect of ANSI compliance is that all transactions are logged
immediately during the execution of the COMMIT WORK statement. The use
of a buffered log entails a deferred write of log records. It improves
performance at some slight risk of failing to log a transaction. Such a
risk is not allowed under the standard; an ANSI-compliant database must
use unbuffered logging.


-574	A subquery has returned not exactly one column.

This statement contains a subquery (a SELECT statement within parentheses)
to represent a single value (on one side of a relational operator such as
equals). Such a subquery must return exactly one row and one column;
otherwise, it is unclear which value the subquery represents. This
subquery has returned more than one value. This error can occur if you
specify the ITEM keyword in a collection subquery with more than one element
in the projection list.

Review all subqueries to make sure that they can return at most one column
(by listing only one expression after SELECT) and at most one row (by
testing a unique key in the WHERE clause). For a collection subquery, either
drop the ITEM keyword or make sure that the projection list contains only one
element.


-575	LENGTH() requires string type values.

This statement contains a use of LENGTH that is applied to a column or
an expression that is not a character type (not CHAR or VARCHAR). This
action is not supported. Review the uses of LENGTH, and make sure they
apply only to character values.


-576	Cannot specify CONSTRAINT name for TEMP table.

You cannot specify a constraint (either UNIQUE, PRIMARY KEY, or CHECK)
name for constraints placed on temporary tables. This action is not
supported for a temporary table. However, you can specify that a column
receives one of these constraints, and you can specify a list of
columns as having a constraint, but you may not use the CONSTRAINT
constraint-name clause. Temporary tables and their indexes are not
recorded in the usual system catalog tables.


-577	A constraint of the same type already exists on the column set.

You have placed a constraint (either UNIQUE, PRIMARY KEY, FOREIGN KEY,
or CHECK) on a set of columns, but a constraint of the same type on
those columns already exists. In the case of a FOREIGN KEY, this error
only occurs if the same foreign-key set of columns references the same
existing parent key set of columns. Either the constraint was
established when the table was created, or it was added later. Because
the constraint already exists, it is not added again.


-578	Owner name is too long.

This statement contains an owner name that qualifies the name of a table, 
view, index or synonym, and the owner name is longer than the maximum 
of 32 characters (for example, overly_long1234567890123456789012.tablename). 
Review the punctuation and spelling of all identifiers. Possibly an omitted
space or comma causes two names to run together. To check the names of
all known owners, select the owner column of the relevant system
catalog: systables, sysindexes, or syssynonyms.


-579	Not owner of synonym.

You do not own the synonym that is specified in this DROP SYNONYM
statement. To drop an object you do not own, you must have Database
Administrator privilege.


-580	Cannot revoke permission.

This REVOKE statement cannot be carried out. Either it revokes a
database-level privilege, but you are not a Database Administrator in
this database, or it revokes a table-level privilege that your account
name did not grant. Review the privilege and the user names in the
statement to ensure that they are correct. To summarize the table-level
privileges you have granted, query systabauth as follows:

SELECT A.grantee, T.tabname FROM systabauth A, systables T
        WHERE A.grantor = USER AND A.tabid = T.tabid


-581	Error loading message file.

This SET EXPLAIN statement could not be completed because the database
server was unable to find the file of message templates it uses when it
prepares explanatory output. Consult with the person who installed the
IBM Informix software.


-582	Database does not have logging.

This ROLLFORWARD statement could not be executed because this database
does not have a transaction log. The rollforward operation uses the
transaction log as its input. Since no transactions have been logged,
the database cannot be rolled forward.


-583	View permissions no longer valid -- permissions on remote objects
revoked.

This statement queries a view that is based on tables in external
databases (databases other than the current database). However, in one
or more of those external databases, your account does not have the
necessary table-level privilege on a table that the view uses, or
possibly your CONNECT privilege for an external database has been
revoked. For a way to display the definition of a view, see the
discussion of error -385. In the view definition, look for table names
that are qualified with database names and possibly site names.


-584	Cannot rename system catalog.

This RENAME TABLE statement cannot be carried out because it would
rename one of the tables that make up the system catalog. The names of
these tables cannot be changed; the database server uses them.


-585	Cannot rename column in system catalog.

This RENAME COLUMN statement cannot be carried out because it would
rename a column of one of the tables that make up the system catalog.
The database server relies on these column names for internal queries,
and you cannot change them.


-586	Cursor is already open.

This database is operating in ANSI compliance (it was created or
started MODE ANSI). By the rules of ANSI SQL, a cursor must always be
closed before it can be reopened. Review the logic of the program.
Possibly it was originally written to take advantage of one of the
Informix extensions to SQL: if a cursor is reopened, it is
automatically closed and opened. In the current database, that action
is not allowed.


-587	Cannot delete file filename.

Version 4.0 and later do not use this message. For previous versions,
check the accompanying ISAM error code for more information.


-588	Invalid host variable number.

Database servers starting with Version 4.1 detect this internal error.
If the error recurs, pleasnote all circumstances and contact IBM Technical Support.


-589	Cannot update multiple sites within a single transaction.

This database server supports only single-site update. The operations
within one transaction can modify data at only one site in the network.
Some preceding statement within this transaction has already modified
data at one site; the current statement would modify data at a second
site. The statement is not executed. Roll back the current transaction.
Examine the application in the light of this restriction. Check the
names of all tables that UPDATE, INSERT, and DELETE statements affect
to make sure they are all in the same database or in databases that the
same database server holds. (Check the definition of any synonyms.
Synonyms can make tables in external databases appear to be in the
current database.)

Database servers after Version 5.01 do not use this error message.


-590	Routine cache corrupted.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-590	Procedure cache corrupted.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-591	Invalid default value for column/variable <column-name>/
<variable-name>.

The specified default value is the wrong type or is too long for a column
or an SPL-routine variable.

To specify a valid default value for a column, use the DEFAULT clause in a
CREATE TABLE statement. To specify a valid default value for a variable in an
SPL routine, use the DEFAULT clause in a DEFINE statement.


-592	Cannot specify column to be not null when the default value is null.

This CREATE or ALTER TABLE statement specifies that a column may not
contain nulls (the NOT NULL clause), but it also has a DEFAULT clause
giving the default value for new rows as NULL. This contradiction is
not allowed.


-593	Cannot specify default value for SERIAL or SERIAL8 or BIGSERIAL column.

This CREATE or ALTER TABLE statement specifies that a column has a
SERIAL or SERIAL8 or BIGSERIAL data type, but it also has a DEFAULT 
clause for the column. The database server generates values for a 
SERIAL or SERIAL8 or BIGSERIAL column each time a row is created, 
so the DEFAULT clause is meaningless.


-594	Cannot specify non-null default value for TEXT or BYTE column.

This CREATE or ALTER TABLE statement specifies that a column has a data
type of BYTE or TEXT. It also has a DEFAULT clause for the column that
specifies something other than NULL. You can only designate the default
value NULL for columns of TEXT or BYTE data type.


-595	Incorrect use of an aggregate function.

An aggregate function was incorrectly used inside an SPL
routine expression, as an argument to an iterator table function,
or inside a check constraint. These types of expressions cannot 
process aggregate functions.

The following examples show the incorrect use of an aggregate function:

LET var = MAX(another_var) + 10; -- error

SELECT 1 FROM TABLE(FUNCTION(udr1(max(1))));  -- error

An SPL routine expression, or the expression in a check constraint,
can refer to only a single value, so the use of an aggregate function
is meaningless.


-596	Bad EXIT/CONTINUE statement. Not within a statement-name loop.

The SPL routine EXIT and CONTINUE statements must be placed within
a FOREACH, WHILE, or FOR loop.


-597	[Internal] Premature End Of Buffer.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-598	Bad cursor name cursor-name.

Inside an SPL routine, a nonexistent cursor name was specified in
an UPDATE/DELETE...WHERE CURRENT OF statement.

FOREACH cur1 
        FOR SELECT col INTO var FROM tab UPDATE tab 
        SET col = proc(var) 
        WHERE CURRENT OF bad_cur_name; -- error 
END FOREACH


-599	Cannot mix IBM Informix Dynamic Server syntax with 
        IBM Informix SE syntax.

Syntax specific to IBM Informix Dynamic Server and to the IBM Informix SE
database server was mixed in the same statement. Use the appropriate syntax
for your database server.

-600	Cannot create TEXT or BYTE value.

This statement creates a new BYTE or TEXT value, but some unexpected
error prevented the creation of that value. Roll back the current
transaction. Check the accompanying ISAM error code for more
information. Possibly the storage space or tblspace has filled up, or
you are not referring to a valid storage space. If the error recurs,
note all circumstances and contact IBM Technical Support.


-601	Cannot delete TEXT or BYTE value.

This statement replaces or deletes a BYTE or TEXT value, but some
unexpected error prevented the deletion of the old value. Roll back the
current transaction. Check the accompanying ISAM error code for more
information. Possibly a hardware error or data corruption of the
storage space or tblspace occurred. If the error recurs, note all
circumstances and contact IBM Technical Support.


-602	Cannot open TEXT or BYTE value.

This statement refers to a BYTE or TEXT value, but some unexpected
error prevented locating the value. Roll back the current transaction.
Check the accompanying ISAM error code for more information. Possibly a
hardware error or data corruption of the storage space or tblspace
occurred. If the error recurs, note all circumstance, and
contact IBM Technical Support.


-603	Cannot close TEXT or BYTE value.

This statement writes a BYTE or TEXT value, but some unexpected error
prevented finishing the creation of the value. Roll back the current
transaction. Check the accompanying ISAM error code for more
information. Possibly a hardware error or data corruption of the
storage space or tblspace occurred. If the error recurs, note all
circumstances and contact IBM Technical Support.


-604	Cannot read TEXT or BYTE value.

This statement refers to a BYTE or TEXT value, but some unexpected
error prevented access to the value. Roll back the current transaction.
Check the accompanying ISAM error code for more information; possibly a
hardware error or data corruption of the storage space or tblspace
occurred. If the error recurs, note all circumstances and
contact IBM Technical Support.


-605	Cannot write TEXT or BYTE value.

This statement writes a BYTE or TEXT value, but some unexpected error
prevented the creation of the value. Roll back the current transaction.
Check the accompanying ISAM error code for more information; possibly a
hardware error or data corruption of the storage space or tblspace
occurred. One possible cause is that the storage space for this column is
full. Another is that although a new chunk has been assigned to the
storage space, pages cannot be allocated in it until the addition of the
chunk has been logged and the log file closed. The database server
administrator can use the tbmode -l or onmode -l command to force a log
file to be closed. If the error recurs, note all circumstances
and contact IBM Technical Support.


-606	Invalid storage-space name for TEXT or BYTE data.

If this statement refers to a storage space (for example, the CREATE
TABLE statement might create a column with type TEXT IN blobspace-name),
the name is invalid or does not exist. Review the identifiers intended
as storage-space names. If they are spelled as you intended, consult
with the database server administrator to find out whether they exist
and are online. If the statement does not refer to a storage space,
this is an internal error. If the error recurs, note all
circumstances and contact IBM Technical Support.


-607	Text/Byte subscript error.

This statement refers to a TEXT or BYTE value that uses substring
notation (numbers in square brackets that follow the name). However,
the substring is not correctly written. Review all uses of substrings,
and make sure that the first number in each is greater than zero but
not greater than the length of the value; the second number is not less
than the first; and the numbers are separated by a comma.


-608	Illegal attempt to convert Text/Byte data type.

This statement is written to imply a conversion from a TEXT or BYTE
value to another data type, for example, by combining it with other
types in an expression or by inserting it into a column of another
type. This action is not supported; TEXT and BYTE columns can only be
selected or be copied into other columns of the same type. Check that
the statement names the columns you intended and that they have the
data types you thought.


-609	Illegal attempt to use Text/Byte host variable.

This statement uses a host variable that is a TEXT or BYTE locator
structure but combines it with data of some other type (for instance,
in an expression or by inserting it into a column of another type).
This action is not supported; host variables of these types may only be
used for selecting from, creating, or inserting into columns of the
same type.


-610	Index not allowed on TEXT or BYTE columns.

This CREATE INDEX statement names a column of the TEXT or BYTE type;
however, these types are not supported for indexing. Because no defined
lexical ordering exists for these types, the database server does not
know how to sort or compare them. Therefore it cannot build an inverted
index. Possibly you understand the data well enough to understand how
to extract an ordered set of key values from it. If so, perform the
extraction into a separate column in the same table, and index that
column.


-611	Scroll cursor can't select TEXT or BYTE columns.

The cursor that is named in this statement is associated with a SELECT
statement that returns one or more TEXT or BYTE columns. Also, the
cursor is declared with the SCROLL keyword. This action is not
supported.Rows that are fetched through a scroll cursor are also stored
in a temporary table. Because of the bulk of TEXT and BYTE values,
this action would produce an unacceptable cost in time and disk space.
Revise the declaration of the cursor to select the desired columns of
other types and also the ROWID. After you fetch a row through the
scrolling cursor, use a separate, nonscrolling cursor to fetch the BYTE
or TEXT values, WHERE ROWID=host-var.


-612	TEXT and BYTE columns are not allowed in the "group by" clause.

This SELECT statement selects one or more BYTE or TEXT values and also
specifies those columns in the GROUP BY clause. This action is not
supported. Since no defined lexical order to BYTE or TEXT values
exists, the database server cannot order or compare them. Therefore it
cannot group rows on their values. (This condition is true even of
substrings selected from a BYTE or TEXT column.) Review your SELECT
statement to ensure that the correct columns are named in the GROUP BY
clause.


-613	TEXT and BYTE columns are not allowed in the "distinct" clause.

This statement specifies DISTINCT values, but it also selects a BYTE or
TEXT value. The database server does not know how to compare or order
these values, so it cannot sort them, and it cannot locate duplicate
values. You cannot use the DISTINCT keyword when these data types are
selected. Reword your SELECT statement to either remove the keyword or
select only normal columns.


-614	TEXT and BYTE columns are not allowed in the "order by" clause.

This SELECT statement selects one or more BYTE or TEXT values, and also
specifies those columns in the ORDER BY clause. This action is not
supported. Because no defined lexical order to BYTE or TEXT values
exists, the database server cannot order them. (This is true even of
substrings selected from a BYTE or TEXT column.) Review your SELECT
statement to ensure that he correct columns are named in the ORDER BY
clause.


-615	TEXT and BYTE columns are not allowed in this expression.

This statement uses an aggregate function, such as COUNT, SUM, MIN, MAX, or
AVG, but applies it to a column that has the BYTE or TEXT data type. This
action is not supported.

Review the use of each aggregate function to make sure that it is not applied
to a BYTE or TEXT column.


-616	A TEXT or BYTE subscript is not allowed within this context.

This UPDATE or INSERT statement specifies a subscripted column of BYTE
or TEXT data type as a destination. Subscript notation is not allowed
in this context; a BYTE or TEXT (or any other) value must be replaced
in full. Revise the statement to assign into whole columns.


-617	A TEXT or BYTE data type must be supplied within this context.

This statement assigns a value that is not a simple large object to a BYTE or 
TEXT column or assigns a BYTE or TEXT column to a column that is not a simple 
large object. Neither action is supported. BYTE and TEXT values must be 
assigned as whole units to columns of the same type. Check that the statement 
specifies the columns that you intended.


-618	Error occurred while trying to copy TEXT or BYTE data.

This statement copies a BYTE or TEXT value from one row to another, but
some unexpected error interfered with the operation. Roll back the
current transaction. Check the accompanying ISAM error code for more
information; possibly a hardware error, data corruption of the
storage space or tblspace, or a shortage of disk space exists, or an
invalid storage space was named. If the error recurs, note all
circumstances and contact IBM Technical Support.


-619	A TEXT or BYTE error has occurred in the front-end application.

This statement transfers a BYTE or TEXT value between the database and
the user program, but something has happened to prevent that. For
example, perhaps it was not possible to allocate a buffer for a value
that was located in memory. Check the accompanying ISAM error code for
more information.


-620	Unable to update next extent size.

This internal error indicates the database server cannot change an
internal data structure (not a system catalog) that is stored in the
root dbspace. Check the accompanying ISAM error code for more
information. Possibly corruption of the root dbspace occurred. Have the
database server administrator run the oncheck, onutil, or tbcheck utility.


-621	Unable to update new lock level.

This internal error indicates that the database server is unable to
convert a lock from shared to exclusive. Check the accompanying ISAM
error code for more information. Possibly a hardware error or a problem
with shared memory exists. If the error recurs, note all
circumstances and contact IBM Technical Support.


-622	Error on locating constraint index index-name.

This internal error shows that the database server is trying to test a
new or updated row for uniqueness under a UNIQUE or PRIMARY KEY
constraint, but the index that implements the constraint cannot be
found. Check the accompanying ISAM error code for more information.
Corruption of the system catalog tables or the root dbspace or a
hardware problem might have occurred. If the error recurs, note
all circumstances and contact IBM Technical Support.


-623	Unable to find CONSTRAINT constraint-name.

The constraint specified in this statement cannot be found. Review the
spelling of the name shown. If it is as you intended, check the names
of existing named constraints by querying the sysconstraints table as
shown in the following example. If the owner name shown for the desired
constraint is not yours, you need to be a Database Administrator to
reference it (and, if this database is ANSI compliant, you need to
qualify the name with its owner-name).

SELECT constrname, owner FROM informix.sysconstraints


-624	Unable to drop CONSTRAINT constraint-name.

This internal error shows that the database server had an unexpected
error while dropping a constraint or the index that implemented it.
Check the accompanying ISAM error code for more information. Corruption
of the system catalogs or the root dbspace might have occurred, or a
hardware problem might exist. If the error recurs, note all
circumstances and contact IBM Technical Support.


-625	Constraint name constraint-name already exists.

The constraint name already exists. Review the spelling. If it is as
you intended, you must select another name, or drop and redefine the
existing constraint. See the discussion of error -623 for a way to list
all constraints.


-626	Cannot obtain or set serial value.

This internal error message does not refer to a problem with a SERIAL
or SERIAL8 or BIGSERIAL column in a table that you defined. The database 
server uses unique integer values for many purposes (for example, the 
table ID number for a new or altered table). An internal error has made 
it impossible to generate a new, unique number. For example, in host 
systems that use files for locking, something might have prevented the 
creation of a lock file. Check the accompanying ISAM error code for more 
information.  If the error recurs, note all circumstances and contact 
IBM Technical Support.


-627	Cannot prepare coordinator for two-phase commit.

Because the coordinator cannot prepare this IBM Informix STAR two-phase
commit transaction, all participants eventually roll back all work that
is associated with the transaction. No administrative intervention is
required. See the ISAM error for more information about why the
database server could not prepare to commit the local transaction.


-628	Cannot end two-phase commit transaction at coordinator.

The database server acting as coordinator for the transaction cannot
end this IBM Informix STAR two-phase commit transaction, and the
transaction remains open. Eventually, IBM Informix STAR automatic recovery
mechanics will end the transaction. No administrative intervention is
required. See the ISAM error for more information about why the
database server could not end the transaction properly.


-629	Cannot end heuristically rolled back transaction.

The database server acting as coordinator for the transaction cannot
end this IBM Informix STAR two-phase commit transaction, and the
transaction remains open. Eventually, IBM Informix STAR automatic recovery
mechanics will end it. No administrative intervention is required. See
the ISAM error for more information about why the database server could
not end the transaction properly.


-630	Cannot prepare database server server-name for commit.

The specified database server cannot prepare the local transaction
associated with this IBM Informix STAR two-phase commit transaction.
Eventually, all participants roll back all work associated with the
transaction. No administrative intervention is required. See the ISAM
error for more information about why the database server could not
prepare to commit the local transaction.


-631	Cannot create optical cluster on column that is not TEXT or BYTE.

You can only create optical clusters on columns of TEXT or BYTE data
type. The column name is some other type. Check that the column is the
one you meant to specify, and review the definition of the table.


-632	Cannot create optical cluster.

An attempt to create an optical cluster has failed. See the ISAM error
for more information.


-633	Cannot drop optical cluster.

An attempt to drop an optical cluster has failed. See the ISAM error
for more information.


-634	Object does not exist.

You are trying to drop a trigger that does not exist. Check that you
are spelling the name of the trigger correctly. Also, you might query
the systriggers system catalog table to review the names of triggers in
the database.


-635	Not owner of object.

You are trying to drop a database object that you do not own. You might query
the appropriate system catalog table to see who owns the object. (For 
example, for a trigger, query the systriggers table.) You probably need 
to ask the owner of the database object or the database administrator 
to drop the object.


-636	Total size of key fields is too large or there are too many key fields.

You have violated one of the following constraints on the cluster key
that is specified in the ON clause of the CREATE OPTICAL CLUSTER
statement:

    *   The number of columns included in a composite cluster key
	exceeds 16.

    *   The length of a CHARACTER column exceeds 256 bytes.


-637	Cannot alter optical cluster.

An attempt to alter the size of an optical cluster has failed. See the
ISAM error for more information.


-638	Cannot cluster TEXT or BYTE columns on non-optical media.

You can create an optical cluster only on TEXT or BYTE columns that are
stored on optical media. Check that you have not specified the name of
a TEXT or BYTE column that is stored in a storage space.


-639	Cannot cluster TEXT or BYTE columns on different optical families.

All of the TEXT or BYTE columns specified in the FOR clause of the CREATE
OPTICAL CLUSTER statement must belong to the same optical family. Check
that the columns that are specified for an optical cluster do not
belong to different families.


-640	QPlan sanity failure line-number.

Running UPDATE STATISTICS might fix this internal error. If the error
recurs, note all circumstances and contact IBM Technical Support.


-641	Cannot reserve/release family on non-optical media.

The family name that is specified in the RESERVE or RELEASE statement
must exist on optical media. Check that you have not specified a
storage space with either of these statements.


-642	Family name must be a character string.

The optical family name that is specified in the RESERVE or RELEASE
statement must be either a character string, or a host or procedural
variable that evaluates to a character string. If you specified a
character string, check that you enclosed it in quotes.


-643	Volume must be a number.

The volume argument in the RESERVE or RELEASE statements must be
INTEGER or SMALLINT.


-644	FAMILY(), VOLUME(), and DESCR() require BLOB column on optical medium.

The argument to the FAMILY(), VOLUME(), or DESCR() function must be a
TEXT or BYTE column that is stored on optical media. Check that you
have not specified a column of a different data type or a TEXT or
BYTE column that is stored in a storage space.


-645	Cannot reserve volume.

An attempt to reserve an optical volume with the RESERVE statement has
failed. See the error from the optical subsystem (an error in the -7000
to -7199 range) for more information.


-646	Cannot release volume.

An attempt to release a requested optical volume with the RELEASE
statement has failed. See the error from the optical subsystem (an
error in the -7000 to -7199 range) for more information.


-647	Error evaluating math library function function-name.

The data type of the argument is correct, but the value passed to the
function is not appropriate for the math function. Check that you are
passing a legitimate value to the function.


-648	Cannot open DEBUG file for SPL routine trace.

An error occurred trying to open DEBUG trace file. This error can occur
when one of the directories in the specified debug file name does not
exist, or the directory is write protected. Check that the directory
path is valid and that group informix can write to the directory.


-649	The debug file name must be a NON-NULL CHAR or VARCHAR.

The argument that is specified for the debug file in the SET DEBUG
statement must be a character data type.


-650	Maximum varchar size has been exceeded.

This statement specifies a VARCHAR(m, r) column with a maximum width m
greater than allowed (255). Check the punctuation of the column
definition. If it is as you intended, redesign the table to use a
VARCHAR width that ranges from 1 character to 255 characters.


-651	Reserved column size > maximum column size (varchar).

This statement specifies a VARCHAR(m, r) column with a reserved width r
that is greater than the maximum width m. Check the punctuation of the
column definition. If it is as you intended, revise the statement so
that m is greater than or equal to r.


-652	Local variables do not allow default values.

An attempt was made to define a local variable with a default value.
Only global variables and parameters can have default values.

An example of the error follows:

DEFINE var INT DEFAULT 10; -- error

The correction is as follows:

DEFINE var INT;
LET var = 10;


-653	Variables declared as LIKE cannot be global.

A global variable was defined as LIKE. LIKE variables must be local
variables.

An example of the error follows:

DEFINE GLOBAL var LIKE tab.col; -- error

Correction: Do not use the LIKE keyword with global variables. Instead,
specify the data type explicitly.


-654	Bad use of PROCEDURE declaration type.

The procedure declaration was used either in the parameters or the
RETURNING clause. SPL routines cannot accept or return procedures.

An example of the error follows:

CREATE PROCEDURE testproc (proc1 procedure) -- error
        RETURNING procedure; -- error
	...
	END PROCEDURE

Correction: Do not attempt to use the procedure declaration type within
a parameter or the RETURNING clause.


-655	RETURN value count does not match procedure declaration.

The number of values that a procedure was declared to return in the
RETURNING clause does not match the number of values in a RETURN
clause.

An example of the error follows:

CREATE PROCEDURE testproc () RETURNING INT, INT;
	...
	RETURN 1,2,3; -- error
	...
	RETURN 1; -- error
        END PROCEDURE

Correction: In this example, return exactly two arguments.


-656	Routine is not declared to return values.

When the routine was declared, it did not contain a RETURNING clause to
indicate that the routine would not return any value, but then a RETURN
statement was found in the body of the routine.

An example of the error follows:

CREATE ROUTINE testproc() DEFINE a INT;
        LET a = 10;
        RETURN a + 1; -- error
        END ROUTINE

Correction: Add a RETURNING clause before the DEFINE statement, or
remove the RETURN statement.


-657	Cannot create a procedure within a procedure.

You cannot have a CREATE PROCEDURE statement within a CREATE PROCEDURE
statement.


-658	Variables declared as GLOBAL require a default value.

A global variable was not given a default value. Global variables
require a default value.

Example of error:

DEFINE GLOBAL glob INT; -- error

Correction:

DEFINE GLOBAL glob INT DEFAULT 10;


-659	INTO TEMP table required for SELECT statement.

A SELECT statement did not specify where to put the returned values.
SELECT statements within a procedure require either an INTO TEMP clause
or an INTO clause that references the appropriate procedural
variables.

Example of error:

CREATE PROCEDURE testproc()
	...
	SELECT col1, col2 FROM tab; -- error
        END PROCEDURE

Correction:

CREATE PROCEDURE testproc()
	...
	SELECT col1, col2 INTO var1, var2 FROM tab;
        SELECT col1, col2 FROM tab INTO TEMP another_table;
        END PROCEDURE


-660	Loop variable variable-name cannot be modified.

An attempt was made to modify the value of a loop variable in a FOR
statement. Loop variables cannot be modified inside a loop.

Example of error:

FOR i IN (1,2,3,4)
        LET i = i + 1; -- error
        END FOR

Correction: Use another variable in the LET statement.


-661	Number of variables does not match number of values returned.

The number of variables on the left side of a LET statement does not
match the number of values on the right side.

Example of error:

LET a,b = 10,20,39;
LET i,j = proc1()+proc2();
LET a,b = (SELECT c1 FROM tab)

Correction: Match the number of expressions on both sides of the LET
statement.


-662	Loop variable variable-name specified more than once.

A loop variable was used more than once in a FOREACH statement.

Example of error:

FOREACH SELECT col1, col2 INTO var, var FROM tab -- error
	...
	END FOREACH

Correction:

FOREACH SELECT col1, col2 INTO var1, var2 FROM tab
	...
	END FOREACH


-663	You are using more than one procedure-calling syntax for
procedure procedure-name.

While calling a procedure, some of the arguments were named, but others
were not.

Example of error:

LET var = proc (arg1 = 10, 20, arg3 = 30); -- error

Correction:

LET var = proc (arg1 = 10, arg2 = 20, arg3 = 30); --correct
LET var = proc (10,20,30);--correct


-664	Wrong number of arguments to system function function-name.

You have specified an incorrect number of arguments for the function 
function_name. Check that you are passing the correct number of arguments
to the function.


-665	Internal error on semantics - code-number.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-666	Variable variable-name must be declared INTEGER or SMALLINT.

In a FOR statement, loop variables that contain ranges must be declared
to be INT or SMALLINT.

Example of error:

DEFINE var CHAR(10);
FOR var IN (e1, e2 TO e3, e4) -- error
	...
	END FOR;

Correction: Because the FOR statement contains a range operator (the TO
clause), var must be declared as INT or SMALLINT.


-667	Variable variable-name not declared.

The specified variable was not declared. Check the spelling of the
undeclared variable to ensure that it is not causing the error.


-668	The system command cannot be executed or it exited with a non-zero status.

Either a system call failed in the operating system or the command that
was executed exited with a non-zero status.  

The following example shows a statement that might cause the system 
command to fail with an error:

SYSTEM 'hello';

Make sure that the system command is not trying to run a function or program 
that is not in your path or that is not applicable to the environment.

Make sure that you have provided a user ID and password when connecting
to the database server.  The database server must have the user's
password in order to execute a command on behalf of that user.

On Windows platforms, make sure the following Advanced User Rights have
been assigned to user "informix": Act as part of the operating system;
Increase quotas; Replace a process level token.

The following example shows a statement that will fails with error -668
and the ISAM error explanation '-255 Not in a transaction':

SYSTEM 'exit 255';

-669	Variable variable-name redeclared.

A variable has been declared twice in the same scope. See the IBM Informix
Guide to SQL: Tutorial for an explanation of the scope of procedural 
variables.

This error can also be seen when a DECLARE (or PREPARE) uses identifier
same as one of the declared procedural variables. Choose a different cursor
name or statement id instead.

For example, following DECLARE statement incorrectly uses cursor name same
as procedural variable:

    DEFINE spl_var INTEGER;
    ...
    DECLARE spl_var CURSOR FOR stmt_id1;

Following code fixes the issue in above sample code:

    DEFINE spl_var INTEGER;
    ...
    DECLARE cur_id CURSOR FOR stmt_id1;

-670	Variable variable-name declared as SERIAL or SERIAL8 or BIGSERIAL type.

The SERIAL or SERIAL8 or BIGSERIAL data type is not a legal procedure type.
Use the INTEGER or INT8 or BIGINT data type to match the SQL SERIAL or
SERIAL8 or BIGSERIAL data type.


-671	Routine invocation routine-name has duplicate parameter name.

A routine call named a parameter more than once.

Example of error:

LET var = proc (arg1 = 10, arg2 = 20, arg1 = 30);-- error


-671	Procedure call procedure-name has duplicate parameter name.

A procedure call named a parameter more than once.

Example of error:

LET var = proc (arg1 = 10, arg2 = 20, arg1 = 30);-- error


-672	Invalid data structure execution-tree.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-673	Routine routine-name already exists in database.

You attempted to create a routine that already exists in the database.
If you want to create a new version of the routine, use the DROP
ROUTINE statement to drop the routine before you attempt to create the
new version of the routine.


-674	Routine <routine-name> cannot be resolved.

You called a routine that does not exist in the database, you do not
have permission to execute the routine, or you called the routine
with too few or too many arguments. If a prepared statement invokes a
user-defined routine and your application or another application drops
the routine before the prepared statement is executed, you will
receive this error.

You might also see this error message if you write an expression that
calls an SPL routine (stored procedure) that returns no values. For
an SPL routine to be usable in an expression, the routine must return
a value.

Check that the name of the routine is correct, that you have execute
permission, that you specified the correct number of arguments
to execute a routine, and that the data types for the arguments are
appropriate. For a prepared statement that refers to the routine,
make sure that the routine still exists when you execute the statement.


-675	Illegal SQL statement in SPL routine.

An SQL statement that is not allowed in an SPL routine was executed.
This error occurs when a routine is called from an SQL data
manipulation statement.

Example of error:

CREATE PROCEDURE testproc (arg INT, id INT) RETURNING INT;
        UPDATE tab SET col = arg WHERE key = id; -- error
        RETURN id;
        END PROCEDURE;

SELECT col FROM tab WHERE testproc(tab.col, tab.key) = 10;

Do not use statements such as the preceding UPDATE statement in SPL
routines.


-676	Invalid check constraint column.

A check constraint that is specified at the column level can reference
only that column. To specify a check constraint that spans more than
one column, specify the check constraint at the table level. You cannot
create a check constraint for columns across tables.


-677	Check constraint cannot contain subqueries or procedures.

A check constraint cannot contain a subquery or a procedure. Subqueries
are disallowed in check constraints because they depend on the state of
the database. For data integrity, the evaluation of a check constraint
must not vary or depend on the state of the database.

Example of error:

   CREATE TABLE new_stock (
       stock_num   SERIAL PRIMARY KEY,
       unit_price  MONEY CHECK (unit_price >=
                   (SELECT unit_price FROM stock WHERE manu_code = 'HRO')),
       manu_code   CHAR(3));

Verify that your statement does not have a subquery or procedure in a
check constraint.


-678	Invalid subscript for column column-name in check constraint.

A subscripted column in a check constraint has subscripts outside the
bounds of the column. Check that the bounds specified in the
subscripted column do not exceed the maximum length of the column. If
you know the table name of the column, use the following subquery to
query the system-catalog tables to find out the maximum length of the
column:

SELECT collength FROM syscolumns WHERE colname = 'column-name'
        AND tabid = (SELECT tabid FROM systables
           WHERE tabname = 'table-name')


-679	Cannot read constraint violation data for constraint constraint-name.

See the ISAM error for more information. If this internal error recurs, note all circumstances and contact IBM Technical Support.


-680	Cannot write constraint violation data for constraint constraint-name.

See the ISAM error for more information. If this internal error recurs,
pase note all circumstances and contact IBM Technical Support.


-681	Column specified more than once in the INSERT list.

The error occurs if the user specifies a column name more than once in
the INSERT column list.


-682	Error reading constraint index on table table-name.

The system was unable to validate the constraint. See the ISAM error
for more information. If this internal error recurs, note all
circumstances and contact IBM Technical Support.


-683	Specified STEP expression will not traverse RANGE.

The evaluated value of the STEP expression in the FOR statement will
lead to an infinite loop.

Example of error:

   FOR i = 10 TO 20
           STEP -1; -- error
                ...
           END FOR

Correction: Correct either the range or the step expressions so that
the incremented values are within the range.


-684	Function <routine-name> returns too many values.

The number of returned values from a function is more than the number
of values that the caller expects.

Example of error:

   CREATE ROUTINE testroutine(arg INT) RETURNING INT, INT;
           RETURN 1,2;
           END ROUTINE

   SELECT col FROM tab WHERE col = testroutine(1); -- error


-685	Function <function-name> returns too few values.

The number of returned values from a function is less than the number
of values that the caller expects.

Example of error:

   CREATE ROUTINE testroutine (arg INT) RETURNING INT, INT;
           RETURN 1,2;
           END ROUTINE

   UPDATE tab SET (c1, c2, c3) = (testroutine(1)); -- error


-686	Function <function-name> has returned more than one row.

A function returned more than one row of values (for example, it
executed RETURN...WITH RESUME) when the caller expected only one row of
values.

Example of error:

   CREATE FUNCTION testroutine (limit INT) RETURNING INT;
           DEFINE i INT;
           FOR i IN (1 TO limit)
               RETURN i WITH RESUME;
           END FOR
           END FUNCTION;

   CREATE FUNCTION gettest() RETURNING INT;
           DEFINE var INT;
           LET var = testroutine (10); -- error
           RETURN var;
           END FUNCTION;


-687	Set debug file before tracing SPL routines.

A TRACE statement was executed before a SET DEBUG FILE statement. The
destination of the output of the TRACE statement is unknown. This error can
also apply to the TRACE OFF statement. 

Example of error:

    TRACE procedure; -- error

Correction:

    SET DEBUG FILE TO 'trace.out';
    TRACE procedure;


-688	Variable variable-name must be declared CHAR or VARCHAR.

You declared the variable as a data type other than CHAR or VARCHAR.
Correct the declaration, and try again.


-689	Global variable variable-name declared inconsistently.

Two or more procedures were executed that defined the same global
variable with different data types.

Example of error:

CREATE PROCEDURE test1()
        DEFINE GLOBAL glob INT DEFAULT 10;
	...
	END PROCEDURE

CREATE PROCEDURE test2()
        DEFINE GLOBAL glob CHAR (9) DEFAULT USER;
	...
	END PROCEDURE

Correction: Declare global variables consistently. (Using appropriate
naming conventions would be useful.) Two variables of the same data
type but different lengths are considered inconsistent.


-690	Cannot read keys from referencing table table-name.

The referential constraint could not be validated. See the ISAM error
for more information. If you are using cascading deletes, database
logging must be on.


-691	Missing key in referenced table for referential constraint
constraint-name.

A referential constraint has been violated. This condition usually
occurs when you are trying to insert a value into or update the value
of a column that is part of a referential constraint. The value you are
trying to enter does not exist in the referenced (parent-key)
column. If you are using cascading deletes, database logging must be
on.


-692	Key value for constraint constraint-name is still being referenced.

You have violated a referential constraint. This situation usually
occurs when you are trying to delete a row in a column (parent key)
that another row (child key) is referencing. If you are using cascading
deletes, database logging must be on.


-693	System command expects a non-null value.

A null value was passed to the SYSTEM statement.

Example of error:

DEFINE c CHAR(100);
        LET c = NULL;
	...
	SYSTEM c; -- error


-694	Too many arguments passed to procedure procedure-name.

More arguments were passed to a procedure than a procedure was declared
to accept.


-695	Argument is not a parameter of procedure procedure-name.

A named parameter was passed to a procedure, but the named parameter
does not exist.

Example of error:

CREATE PROCEDURE testproc (arg1 INT, arg2 INT) RETURNING INT;
	...
	RETURN 1;
        END PROCEDURE

SELECT col FROM tab WHERE testproc (arg1 = 10, arg5 = 20); -- error


-696	Variable variable-name has undefined value.

An SPL variable was referenced or a row field was set before 
a value was assigned.

Example of error:

DEFINE my_row_var1 (last_name CHAR(20), id INTEGER);
DEFINE i, j INT; 

LET i = j + 1;                -- error
LET my_row_var1.id = new_id;  -- error

While

LET my_row_var1 = ROW(NULL::CHAR(20), NULL::INTEGER)::person_rt;
LET my_row_var1.id = new_id;  -- success

Correction: Assign all variables and parameters valid values before
you use them.

Row type variables are allowed in SPL routines. Such
variables must be initialized before they are used. To initialize
a row type variable, you must initialize the entire variable.
Initializing each field will not substitute for initializing the
entire variable, and in fact you cannot initialize the individual
fields until after you have initialized the entire variable. The
following example shows correct and incorrect initialization of
row type variables in SPL.  

-- Example showing that row type variables in SPL must have the entire
-- variable initialized. It is not sufficient to initialize the fields
-- without initializing the entire variable.
 
   CREATE DATABASE tango;

   drop table table1;
   drop row type person_rt restrict;
   drop function create_person_rt;
   
   CREATE ROW TYPE person_rt (last_name CHAR(20), id INTEGER);
   
   CREATE FUNCTION create_person_rt(new_name CHAR(20), new_id INTEGER)
   RETURNING person_rt;
   DEFINE my_row_var1 person_rt;
   -- You cannot initialize the individual fields of the variable until you
   -- have initialized the entire variable. If the following statement were 
   -- executed at this point, it would fail with error -696.
   -- LET my_row_var1.id = new_id;   
   -- Initialize the entire variable.
   LET my_row_var1 = ROW(NULL::CHAR(20), NULL::INTEGER)::person_rt;
   -- Now set the individual fields.
   LET my_row_var1.id = new_id;
   LET my_row_var1.last_name = new_name;  
   RETURN my_row_var1;
   END FUNCTION;
    
-- Sample usage:
 
   CREATE TABLE table1 (person_column person_rt);
   INSERT INTO table1 (person_column) VALUES (create_person_rt('Uhuru', 128));
    
   CLOSE DATABASE;
 
   You must initialize the entire variable because the engine can
   track whether or not the entire variable has been initialized
   but cannot track initialization on a field-by-field basis.


-697	STEP expression evaluated to ZERO.

The STEP expression of a FOR statement evaluated to zero.

Example of error:

LET e = -1;
FOR i = 10 TO 20
        STEP e+1; -- error
        ...
        END FOR

Correction: Change the STEP expression so that it evaluates to a
nonzero value.


-698	Inconsistent transaction. Number and names of servers rolled
back - servers.

This message is returned if an IBM Informix STAR two-phase commit or a
distributed transaction is implemented with a mixed result. That is,
some database servers participating in the transaction rolled back
their parts of the global transaction, but other database servers
committed their parts of the global transaction. The number of database
servers that rolled back work is always accurate, but the list of
server names (specified by DBSERVERNAME values) can be incomplete. If a
large number of servers rolled back work, the list might be truncated
to save space. Refer to the message log of the coordinator database
server for a complete list of server names. If this error message is
returned, you must determine whether your networked database system is
in an inconsistent state. This procedure is described in detail in your
Administrator's Guide.


-699	Transaction heuristically rolled back.

This message is returned if all participating database servers
heuristically roll back an IBM Informix STAR two-phase commit transaction.
Because all database servers rolled back the transaction, the networked
database system remains consistent.


-700	Statement is invalid within a global transaction.

This error is generated when a user attempts to execute a BEGIN WORK,
COMMIT WORK, or ROLLBACK WORK statement within a global transaction.


-701	Statement is invalid within the XA environment.

This error is generated when you attempt to execute any of the
following statements within an X/Open distributed
transaction-processing environment:

    *   CLOSE DATABASE

    *   CREATE DATABASE

    *   DROP DATABASE

    *   SET LOG

    *   SAVEPOINT

    *   RELEASE SAVEPOINT

    *   ROLLBACK TO SAVEPOINT

Within this environment, you can execute a single DATABASE statement
after an xa_open call to specify a current database. However, after
this database is selected, no other DATABASE statement can be executed.
This error is generated when you attempt to execute a second DATABASE
statement.


-702	Cannot open database in exclusive mode.

Within an X/Open distributed transaction processing environment, you
cannot open a database in exclusive mode.


-703	Primary key on table table-name has a field with a null key value.

An attempt was made either to insert a null value into a column that is
part of a primary key, or to add a primary constraint to a table that
has a NULL value in one of the key columns.


-704	Primary key already exists on the table.

A table can have only one primary key.


-705	Cannot drop/modify procedure procedure-name. It is currently in use.
 
An attempt was made either to drop a currently executing procedure or
to run UPDATE STATISTICS on a currently running procedure. This
condition can occur if a procedure tries to drop itself or if a nested
procedure tries to drop a procedure that called it.

Example of error:

   CREATE PROCEDURE testproc()
   ...
   DROP PROCEDURE testproc; -- error 
   END PROCEDURE

Correction: You can use an ON EXCEPTION statement to trap this error
and not carry out the DROP PROCEDURE or UPDATE STATISTICS statement.

This error also occurs if you try to drop a function or procedure
that a functional index is using.

This error also occurs if you try to drop a function or procedure
that a xadatasource type is using.

-706	Execute privilege denied on procedure procedure-name.

A user who does not own the procedure or is not DBA must have Execute
privilege in order to run a procedure.


-707	TEXT and BYTE columns in optical cluster must be distinct.

The same column is specified more than once in the column list of the
FOR clause in the CREATE OPTICAL CLUSTER statement. Change your
statement so that no column appears more than once.


-708	Optical cluster cluster-name already exists.

You have attempted to create a new optical cluster with the name of an
existing cluster. You must either drop the existing cluster or
re-execute your statement using a different cluster name.


-709	TEXT and BYTE column column-name is already clustered.

You have already created an optical cluster using the named column.
Because a single column can be part of only one optical cluster, your
attempt to create a new cluster on this column has failed.


-710	Table <table-name> has been dropped, altered, or renamed.

This error can occur with explicitly prepared statements. These statements
have the following form:

    PREPARE statement id FROM "quoted_string"

After a statement has been prepared in the database server and before
execution of the statement, a table to which the statement refers might have
been renamed or altered, possibly changing the structure of the table.
Problems might occur as a result. Adding an index to the table or
altering the fragmentation scheme after preparing the statement can also
invalidate the statement.

This error can also occur with SPL routines. Before the database server
executes a new SPL routine the first time, it optimizes the code
(statements) in the SPL routine. Optimization makes the code depend on
the structure of the tables that the procedure references. If the table
structure changes after the procedure is optimized, but before it is
executed, this error can occur.

The Auto Re-prepare feature allows the database server to check prepared 
statements and stored procedures prior to execution for changes to any tables
that they reference. This feature prevents many of the common causes for the
-710 error.

When the Auto Re-prepare feature is enabled the following semantics apply:

Before execution of a prepared statement or SPL routine the database server
checks to determine if the structure of directly or indirectly referenced
tables may have changed. If changes are detected the statement is checked
prior to re-prepare:

    * A change in the number or type of columns in the SELECT list will result
      in error -710 being raised. In this case the application should prepare
      and execute the statement again to allow the database server to 
      re-describe the SELECT list.

    * For other changes the database server automatically re-prepares the
      statement. If this is successful the statement will then be executed.

Stored procedures are re-optimized and executed if the reoptimization succeeds.

An error that occurs during the re-prepare of a statement or re-optimization of
a SPL routine is returned to the application in place of the -710 error.

When the Auto Re-pepare feature is not enabled the following semantics apply:

A subsequent OPEN command for a cursor will fail if the cursor refers to the
invalid prepared statement; the failure will occur even if the OPEN command has
the WITH REOPTIMIZATION clause.

If an index was added or the fragmentation scheme was altered after the
statement was prepared, you must prepare the statement again and declare
the cursor again. You cannot simply reopen the cursor if it was based on a
prepared statement that is no longer valid.

This error can also occur if the table referenced by the statement has 
any foreign key references to tables that were renamed after the statement
was prepared.

Each SPL routine is optimized the first time that it is run (not when
it is created). This behavior means that an SPL routine might succeed
the first time it is run but fail later under virtually identical
circumstances. The failure of an SPL routine can also be intermittent
because failure during one execution forces an internal warning to
reoptimize the procedure before the next execution.
 
The database server keeps a list of tables that the SPL routine
references explicitly. Whenever any of these explicitly referenced tables is
modified, the database server reoptimizes the procedure the next time the
procedure is executed.

However, if the SPL routine depends on a table that is referenced only
indirectly, the database server cannot detect the need to reoptimize the
procedure after that table is changed. For example, a table can be
referenced indirectly if the SPL routine invokes a trigger. If a table
that is referenced by the trigger (but not directly by the SPL routine)
is changed, the database server does not know that it should reoptimize the
SPL routine before running it. When the procedure is run after the
table has been changed, this error can occur.

Use one of two methods to recover from this error:

    *   Issue the UPDATE STATISTICS statement to force reoptimization of the
        procedure.

    *   Rerun the procedure.

To prevent this error, you can force reoptimization of the SPL routine.
To force reoptimization, execute the following statement:

    UPDATE STATISTICS FOR PROCEDURE procedure_name

You can add this statement to your program in either of the following ways:

    *   Place the UPDATE STATISTICS statement after each statement that
        changes the mode of an object.

    *   Place the UPDATE STATISTICS statement before each execution of the
        SPL routine.

For efficiency, you can put the UPDATE STATISTICS statement with the action
that occurs less frequently in the program (change of object mode or
execution of the procedure). In most cases, the action that occurs less
frequently in the program is the change of object mode.

When you follow this method of recovering from this error, you must execute
the UPDATE STATISTICS statement for each procedure that references the 
changed tables indirectly unless the procedure also references the tables
explicitly.

You can also recover from this error by simply rerunning the SPL routine.
The first time that the stored procedure fails, the database server
marks the procedure as in need of reoptimization. The next time that
you run the procedure, the database server reoptimizes the procedure before
running it. However, running the SPL routine twice might be neither
practical nor safe. A safer choice is to use the UPDATE STATISTICS statement
to force reoptimization of the procedure.

-711	Cannot insert encoded BLOB descriptor.

An attempt to insert an encoded blob descriptor by means of the DESCR()
function has failed. See the ISAM error for more information.


-712	Cannot insert encoded BLOB descriptor in non-optical BLOB columns.

You have attempted to use the DESCR() function to insert an encoded
blob descriptor into a TEXT or BYTE column that is stored in a dbspace
or blobspace. You can use this function only to insert descriptors into
blob columns that are stored on optical media.


-713	Cannot decode encoded BLOB descriptor.

The decoding of a blob descriptor prior to its insertion into a data
row has failed. See the error from the optical subsystem (an error in
the -7000 to -7199 range) for more information.


-714	Cannot encode BLOB descriptor.

The encoding of a blob descriptor for storage on optical media has
failed. See the error from the optical subsystem (in the -7000 to -7199
range) for more information.


-715	Transaction state error.

An error occurred in retrieving a transaction state. See the ISAM error
for more information.


-716	Possible inconsistent transaction. Unknown servers are server-name-list.

This message appears after an administrator ends a coordinator
database server process, thread, or session using tbmode -z or onmode
-z any time after the coordinator issues its decision either to commit
or roll back a two-phase commit transaction. You must examine the
message log or the logical log at each of the database servers for
which the status is listed as unknown to determine whether the local
transaction was committed or rolled back. If some participating
database servers rolled back the transaction, and others committed it,
you must determine whether your networked database system is in an
inconsistent state. This procedure is described in detail in your
Administrator's Guide.


-717	Invalid argument passed to system function function-name.

An invalid data type has been passed to one of the arithmetic functions
(HEX(), TRUNC(), ROUND()).


-718	Statement is invalid while a global transaction is suspended.

If a database server that is acting as a Resource Manager in an X/Open
distributed transaction-processing environment has suspended a
transaction, its next statement must be xa_start. All other statements
are disallowed.


-719	Loop variable variable-name cannot be declared GLOBAL.

A global variable cannot be used as a loop variable. Redefine the
variable to be local to the loop, or use another (local) variable as
the loop variable.


-720	The number of returned values and of SPL variables do not match.

The list of SPL variables that follows the INTO keyword has a different 
cardinality from the number of values in each row of the active set.  
This error can occur during the FOREACH statement of SPL, or during the 
FETCH statement of dynamic SQL. 

In a FOREACH statement with an embedded SELECT statement, the variable 
list that follows the INTO keyword in the SELECT statement does not match 
the number of columns or expressions in each row that the SELECT statement 
retrieves.  In a FOREACH statement with an embedded EXECUTE FUNCTION or 
EXECUTE PROCEDURE statement, the INTO clause that follows the routine 
argument list specifies a list of variables whose number does not match 
the number of values that the routine returns.   

In a FETCH statement, the variable list that follows the INTO keyword does 
not match the number of columns or expressions in each row that a SELECT 
statement retrieves, or does not match the number of values returned by a 
function call. A DECLARE statement in the same SPL routine associated the 
cursor that FETCH specifies with a SELECT statement or with an 
EXECUTE FUNCTION or EXECUTE PROCEDURE statement.  

For example, the following dynamic SQL statements inside a procedure body 
returns this error when the procedure is executed, because fetching from 
the cursor returns two values (c1, c2) but has only one local variable 
(l_out1) to receive those two column values:

   create procedure proc()
   define qry_str varchar(120);
   define l_out1  char(10);

      let qry_str = "select c1,c2 from t1";

      prepare stmt_id from qry_str;

      declare my_cur cursor for stmt_id;

      open my_cur;

      fetch my_cur into l_out1;

      ....
   end procedure; 

To avoid this error, review the logic of the FOREACH or FETCH statement to 
verify that the list of variables in the INTO clause matches the number of 
values in the projection list of the SELECT statement, or matches the number 
of values returned by the routine. Both FOREACH and FETCH require a 1-to-1 
correspondence in number, order, and data type between the list of SPL 
variables in the INTO clause and the values returned by a call or in each 
row returned by a query.

If more than one cursor is open when a FETCH statement receives this error, 
make sure that the FETCH statement references the correct cursor.


-721	SPL routine (<routine-name>) is no longer valid.

You are attempting to execute a procedure from an EXECUTE statement,
but it has been redefined since the PREPARE statement was run. You must
use the PREPARE statement again on the EXECUTE PROCEDURE statement.

For example, the following sequence of code would cause this error:

$prepare pr_stat from 'execute procedure testproc()';
	...
	/* drop procedure testproc create procedure testproc() ......
	[same application or different] */
	...
	$execute pr_stat;/* triggers error -721 */


-722	Out of stack space.

The database server has run out of memory for stack space. Ask the
Informix database administrator to increase the STACKSIZE parameter
that is specified in the $ONCONFIG file to allocate more memory. The 
database server must be restarted for the change to take effect.


-723	Cannot disable logging in an ANSI-compliant database.

You attempted to use the START DATABASE <database> WITH NO LOG syntax
to remove database logging on an SE database that is ANSI compliant.
You cannot turn off logging by running this statement on this kind of
database.


-724	System initialization file $INFORMIXDIR/cnv50t60.sql is missing.

Check that $INFORMIXDIR/cnv50t60.sql is in place and readable. If it
is, and the system still fails, reinstall the system.


-725	Error occurred while reading system initialization file
$INFORMIXDIR/cnv50t60.sql.

Check that the script file $INFORMIXDIR/cnv50t60.sql is readable. If it
is, and the failure still occurs, reinstall the product.


-726	First argument to dbinfo() must be a quoted string constant.

The first argument to dbinfo() should be a quoted string constant. If
the first argument to dbinfo() is the string 'version', then the second
argument should also be a quoted string constant.


-726	First argument to dbinfo() must be a quoted string constant.

Check that the first argument to dbinfo() is a quoted string that
corresponds to one of the following values: 'dbspace', 'sqlca.sqlerrd1',
or 'sqlca.sqlerrd2'.


-727	Invalid or NULL tblspace number given to dbinfo(dbspace).

You called the dbinfo() function with the 'dbspace' string constant as
the first parameter. You must provide either the number of a valid
tablespace or an expression that evaluates to such a number as the
second parameter. Check that you supplied a number as your second
parameter and that it corresponds to the number of a valid tablespace.


-728	Unknown first argument of dbinfo(<argument>).

Check that the first argument to dbinfo() is a quoted string that corresponds
to one of the following values: 'dbspace', 'version', 'sqlca.sqlerrd1',
'sqlca.sqlerrd2', 'sessionid', 'coserverid', 'utc_to_datetime',
'utc_current', 'get_tz', or 'dbhostname'.


-728	Unknown first argument of dbinfo argument-name.

The valid arguments to the dbinfo() function are the quoted string
'dbspace' followed by the number of a valid tablespace, or one of the
following two values: 'sqlca.sqlerrd1' or 'sqlca.sqlerrd2'. Check that
you supplied one of these values and enclosed the string in quotes.


-729	Trigger has no triggered action.

Your CREATE TRIGGER statement does not include a triggered action. Add
a triggered action list to the trigger definition, and resubmit the
CREATE TRIGGER statement.


-730	Cannot specify REFERENCING if trigger does not have FOR EACH ROW.

You included a REFERENCING clause in a CREATE TRIGGER statement that
does not include a FOR EACH ROW triggered-action section. Either remove
the REFERENCING clause or, if it is appropriate, add the missing
keywords FOR EACH ROW, followed by the triggered actions that are to
occur at that time.


-731	Invalid use of column reference in trigger body.

For insert and delete triggers, the offending column is being used in
the INTO clause of the EXECUTE PROCEDURE statement (which is only
allowed for an update trigger). Remove the column names from the INTO
clause.


-732	Incorrect use of old or new values correlation name inside trigger.

You cannot use the new or old correlation name outside the FOR EACH ROW
section or in the INTO clause of the EXECUTE PROCEDURE statement. You
cannot use the new or old correlation name to qualify the SELECT COUNT
DISTINCT column. For example, the following statement returns this
error:

SELECT COUNT (DISTINCT oldname.colname)

You cannot specify an old correlation name for an insert trigger. You
cannot specify a new correlation name for a delete trigger.


-733	Cannot reference procedure variable in CREATE TRIGGER or CREATE VIEW
statement.

You have a CREATE TRIGGER or CREATE VIEW statement inside an SPL
routine, and within the CREATE TRIGGER or CREATE VIEW statement,
you reference a variable that is defined in the SPL routine.
This action is not legal. Remove the reference to the SPL-routine
variable from the CREATE TRIGGER or CREATE VIEW statement and try again.


-734	Object name matches old or new values correlation name.

This error is returned in three cases:

    *   The name of the triggering table or the synonym, if it is used,
	matches the old or new correlation name in the REFERENCING
	clause.

    *   The name of a table or a synonym that is referenced in the
	action clause matches either the old or new correlation name in
	the REFERENCING clause.

    *   The old correlation name matches the new correlation name.

Change either the correlation name or the table name, and execute the
CREATE TRIGGER statement again.


-735	Cannot reference table that participates in cascaded delete.

The child table is either referenced in a correlated subquery that is part of
a DELETE or MERGE statement or as a source table in a MERGE statement. The 
child table cannot be one of the tables on which a delete would cascade. 
These actions are not allowed because the result depends on the order in which 
the rows are processed. Rewrite your query so that the child table is not 
referenced in a correlated subquery, or as source table of the MERGE statement,
or both.


-736	The RESOLUTION and SAMPLING SIZE clauses are not valid for the 
LOW mode of the UPDATE STATISTICS statement.

Because data distributions are constructed only in the MEDIUM or HIGH
modes of the UPDATE STATISTICS statement, specifying the resolution or 
sampling size is not meaningful in LOW mode. 

Remove the RESOLUTION clause and the SAMPLING SIZE clause from the statement.

To use the SAMPLING SIZE clause, change the mode to MEDIUM. To use the 
RESOLUTION clause, change the mode to MEDIUM or HIGH.


-737	The confidence value and the SAMPLING SIZE clause are not valid for the 
HIGH mode of the UPDATE STATISTICS statement.

Remove the confidence value and the SAMPLING SIZE clause from the statement. 

For example, the following statement has a confidence value of 0.99:

UPDATE STATISTICS HIGH RESOLUTION 0.1 0.99;

The corrected statement is:

UPDATE STATISTICS HIGH RESOLUTION 0.1;

If you want a distribution that is based upon sampling rather than one
that uses all of the data in a column, change the mode from HIGH to MEDIUM 
and you specify number of samples using the SAMPLING SIZE clause.


-738	DROP DISTRIBUTIONS is only valid in LOW mode.

By default, LOW mode does not remove distributions, so you need to use
the DROP DISTRIBUTIONS clause. To remove HIGH or MEDIUM distributions,
use the DROP DISTRIBUTIONS clause.


-739	Confidence must be in the range [0.80, 0.99] (inclusive).

If the value of the confidence desired is greater than 0.99, use HIGH
mode. A value of less than 0.80 is not allowed because it will probably
yield a poor distribution. If you are reducing the confidence to reduce
the time that is required to execute the UPDATE STATISTICS statement,
consider using a larger resolution value.


-740	Resolution must be greater than 0.005 and less than, or equal to, 10.0.

The value of this parameter determines how finely the data distribution
is resolved. A resolution of 10.0 implies that the accuracy of any
estimate for the application of any single selection filter is limited
to (+ or -) 5 percent. A value greater than 10.0 would be of little
value because it would not provide sufficient detail about the
distribution of the data.


-741	Trigger for the same event already exists.

You are creating a trigger for an event, but another trigger already
exists for that event. You can have only one insert or delete trigger
on a table. If you are defining multiple triggers that occur on an
update, the column lists in the UPDATE statements must be mutually
exclusive. You cannot name a column as a triggering column in more than
one UPDATE clause.


-742	Trigger and cascading-delete referential constraint cannot coexist.

Delete triggers cannot coexist with referential constraints.

This error occurs if you try to add a delete cascade foreign key to a table 
that already has a delete trigger on it. This error also occurs if you try
to add a delete trigger to a table that already has a delete cascade foreign
key.


-743	Object object_name already exists in database.

You are trying to define an object that already exists in the database.


-744	Illegal SQL statement in trigger.

This error is returned when the triggered SQL statement is BEGIN WORK,
COMMIT WORK, ROLLBACK WORK, or SET CONSTRAINTS. These statements are
not allowed as triggered actions. Remove the offending statement.


-745	Trigger execution has failed.

This message is defined for general use to apply to error conditions
that you specify in an SPL routine that is a triggered action.


-746	message-string

You supply message-string for this message. You can apply this message 
to error conditions that you specify in an SPL routine. The corrective
action for this error depends on the condition that caused it. You, the user,
define both the condition and the message text.


-747	Table or column matches object referenced in triggering statement.

This error is returned when a triggered SQL statement acts on the
triggering table, or when both statements are updates, and the column
that is updated in the triggered action is the same as the column that
the triggering statement updates.


-748	Exceeded limit on maximum number of cascaded triggers.

You exceeded the maximum number of cascading triggers, which is 61. You
may be setting off triggers without realizing it. You can query the
systriggers system catalog table to find out what triggers exist in the
database. To trace the triggered actions, place the action clause of
the initial trigger in an SPL routine, and use the SPL TRACE
statement.


-749	Remote cursor operation disallowed with pre-5.01 server.

An external database server before Version 5.01 sent the triggering
statement or cursor operation. This action is not allowed.


-750	Invalid distribution format found for table_name.

This internal error should not occur unless the database has been
corrupted in some way. To rebuild the distribution, use UPDATE
STATISTICS. If the error recurs, note all circumstances and
contact IBM Technical Support.


-751	Remote procedure execution disallowed with pre-5.01 server.

The action clause of the trigger contains an SPL routine that is
not called in a data manipulation statement, and an external database
server before Version 5.01 will execute the procedure. This action is
not allowed. An SPL routine that is called within a data
manipulation statement cannot execute certain SQL statements, including
transaction-related statements. Transaction-related statements are not
allowed within an SPL routine that is a triggered action. A database
server before Version 5.01 cannot check for this condition, so
the procedure is not allowed. If possible, execute the procedure on a
Version 5.01 or later database server.


-752	All Smart Disk devices are busy.

Wait a while and retry your Smart Disk operation.


-753	Access denied - Single user limit has been exceeded.

Licensing enforcement is configured for only one user; multiple users
cannot use the product at the same time. If you are using the product
from a remote computer, the product is licensed only for a nonnetworked
environment.If you are using the product from a local computer, wait
until the current user exits and try again.


-754	Cannot access the license file.

The system cannot find the user license file. The user license file
might not have been installed, or it might have been installed
improperly. Also, you might not have the correct file or directory
permissions to access the user license file. Consult your installation
documentation.


-755	Cannot access the license file to release license.

You might not have appropriate permission for your particular action.
Check with your system administrator.


-756	Evaluation version has expired.

The evaluation version of this product will work only for a specified
period of time. This version allows you to evaluate the product but not
use it permanently. When the evaluation version expires, call IBM
to order a standard version of the product.


-757	File open for light append can't pseudo close.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-758	Cannot implicitly reconnect to the new server server_name.

If you use the CONNECT TO statement to connect to a server, you cannot
implicitly reconnect to another server through one of the DATABASE
statements (DATABASE, START DATABASE, and so on). You must switch to it
with the SET CONNECTION statement.


-759	Cannot use database commands in an explicit database connection.

If you use the CONNECT TO database@server syntax to connect to a database
and server, you cannot select another database until you disconnect your
current connection.


-760	Remote procedure must commit or rollback before returning.

Your remote procedure must execute a COMMIT WORK or ROLLBACK WORK
statement before that procedure returns control to your application.


-761	INFORMIXSERVER does not match either DBSERVERNAME or DBSERVERALIASES.

Your INFORMIXSERVER environment variable does not match the
DBSERVERNAME or any of the DBSERVERALIASES settings in the ONCONFIG
configuration file of the server to which you are trying to connect.
Check your environment variables and the ONCONFIG configuration file.
Check that INFORMIXSERVER matches one of the settings in the ONCONFIG
file.


-762	Stack overflow occurred during statement parse.

This error indicates that an internal memory limitation in the SQL
parser has been reached. This condition can occur if your query
contains many nested expressions. For example, the query might contain
many occurrences of AND and/or OR in the WHERE clause. To work around
this condition, rewrite the query to eliminate some of the nested
expressions.


-763	Error in auditing environment initialization.

This all-purpose message indicates a problem when a user tries to
connect to a secure database server. Contact your security
administrator or DBA for how to proceed.


-764	Only DBA can run update statistics on a database in this mode.

You tried to run the UPDATE STATISTICS statement with the DROP
DISTRIBUTIONS clause on the entire database in a mode other than LOW.
Only user informix or the database administrator can do perform this
action.


-765	Cannot EXECUTE a statement that has been DECLAREd.

You cannot execute a prepared statement that has been declared.
However, to specify output variables for a prepared singleton SELECT
statement, use EXECUTE INTO (or EXECUTE PROCEDURE INTO) instead of
executing DECLARE, OPEN, and FETCH statements.


-766	String must be null terminated.

With IBM Informix ESQL/C, if you use a host variable in an INSERT statement
or in the WHERE clause of an SQL statement, and the database is ANSI
compliant, the string must be null terminated.


-767	Cannot UPDATE/INSERT a remote table using views with check options.

You cannot perform an UPDATE or INSERT operation on a table that
resides across a network when you are using views that have check
options. Remove the all check options from the view, or perform the
UPDATE/INSERT locally.


-768	Internal error in routine routine-name.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-769	Internal - iterator execution/phase error parameter.

If you cannot find a direct cause for this internal error, note
all circumstances and contact IBM Technical Support.


-770	Bad fragment id specified.

If you cannot find a direct cause for this internal error, note
all circumstances and contact IBM Technical Support.


-771	Bad table lock id specified.

If you cannot find a direct cause for this internal error, note
all circumstances and contact IBM Technical Support.


-772	Record/key doesn't qualify for any table/index fragment.

This error can occur during a record insert or update. The most likely
cause is an incorrect fragmentation specification that did not specify
a REMAINDER. The easiest correction is to add a REMAINDER fragment to
your SQL statement. However, the best correction is probably to
reexamine the original fragmentation specification, figure out what is
wrong, and fix it with an ALTER FRAGMENT statement.

For interval fragmented table or index, ensure that automatic interval
fragment creation is enabled. The following query can be used to determine if
automatic interval fragment creation is enabled for a table and its indexes:

    SELECT t.tabname, f.indexname,
	   decode(bitand(f.flags, 2048), 0, 1, 0) intvl_enabled
        FROM sysfragments f, systables t
        WHERE f.tabid = t.tabid AND
              f.evalpos = -2 AND
              t.tabname = <tabname>;

The following are examples on how to enable automatic interval fragment
creation for an interval fragmented table or index:

    ALTER FRAGMENT ON TABLE <tabname> MODIFY INTERVAL ENABLED;
    ALTER FRAGMENT ON INDEX <idxname> MODIFY INTERVAL ENABLED;


-773	Expression required for new fragment.

When you add a fragment to an expression-based fragmentation strategy,
you must specify an expression for the new fragment. Restate your SQL
statement to include a fragment expression.


-774	Cannot specify fragment expressions with a round-robin fragmentation.

If table fragmentation is based on a round-robin strategy, you cannot
specify a fragment expression during an ALTER FRAGMENT operation.


-775	Fragment partition name not used by table/index.

The partition that is specified during an ALTER FRAGMENT operation is
incorrect because that partition contains no fragment. 
Specify a partition that has a fragment. Partition names default to the
dbspace name if not specified at create time.


-776	Alter fragment error: unable to move rows to new fragmentation scheme.

During an ALTER FRAGMENT operation, the rows could not be moved to
another fragmentation strategy. See the accompanying ISAM error for
more information on why the ALTER FRAGMENT operation failed.


-777	Internal - function not valid on fragmented table.

If you cannot find a direct cause for this internal error, note
all circumstances and contact IBM Technical Support.


-778	Unable to alter fragmentation scheme on index or table.

During an ALTER FRAGMENT operation, the fragmentation strategy for the
index or table could not be altered. See the accompanying ISAM error for more
information on why the ALTER FRAGMENT operation failed.


-779	Duplicate table name in the alter fragment specification.

You cannot attach the same table multiple times. Check that your alter
fragment specification attaches the same table only once.


-780	Table/index is not fragmented.

You cannot perform the ALTER FRAGMENT operation because the table or
index is not fragmented. Fragment the table or index, or do not perform
the fragmentation operation.


-781	Cannot alter fragmentation on a temp table.

You tried to alter a fragment that is based on a temporary table. In
general, dynamic modification of a TEMP table is not allowed. You must
re-create the temporary table if you require a different fragmentation
scheme.


-782	Attached table is fragmented.

When you attach tables, the consumed table cannot be fragmented.


-783	Cannot attach because of incompatible schema.

Incompatible table schemas do not allow you to perform an attach. When
you perform an attach, the table schemas must be identical and tables must
be compatiable from LBAC perspective. Use the ALTER TABLE statement to 
make the schemas identical, the surviving table and consumed table
to be protected by the same security policy, and make the protected 
columns to be protected by the same set of security labels. Then perform 
an ALTER FRAGMENT...ATTACH operation.


-784	Cannot detach because of the existing referential constraints.

Existing referential constraints do not allow you to perform a detach.
You must drop the referential constraints before you perform the detach
on the dbspace/partition or table.


-785	Cannot drop column because of table or index fragmentation.

You must alter fragmentation expressions to remove references to the
column before the column can be dropped.


-786	Cannot attach to this table because it is not in the list of tables in the ATTACH clause.
 
The surviving table is either nonfragmented or hash-fragmented and must
appear in the attach list in order for its existing fragment to be 
properly positioned in the resulting fragmentation scheme.


-787	Index fragmented same-as-table cannot be altered.

If you do not specify storage-spec in a CREATE INDEX statement, the
indexes are fragmented the same as the underlying table, subject to all
the restrictions on fragmented indexes. For example, an error is
returned if the underlying fragmentation strategy is round-robin, and
the index is unique. You cannot alter this type of index fragmentation.
If you want to change the index fragmentation, use the INIT option of
ALTER INDEX to detach the index. That operation makes the index and
table independent and lets you alter each independently.


-788	Unknown operator/type.

If you cannot find a direct cause for this internal error, note
all circumstances and contact IBM Technical Support.


-789	Internal error, expression not properly defined.

If you cannot find a direct cause for this internal error, note
all circumstances and contact IBM Technical Support.


-790	Cannot create interval fragment.

An error occurred while creating an interval fragment. Retry the operation
after some delay. If the error persists, note all circumstances and contact
IBM Technical Support.


-791	Cannot find fragment for the row.

An error occurred while finding a fragment for the row. For an
interval fragmented table or index, a failure occurred while evaluating
the fragment position for the row.

Examine the data value in the row with the definition of your
fragmentation strategy to verify that the row can be stored in one of
the initial range fragments or the interval fragments.


-792	Cannot update the sysfragments system catalog table for an interval fragment.

An error occurred while updating the sysfragments system catalog table for the
newly created interval fragment. Insufficient disk space is a common cause of
this error.


-793	Page size of the dbspace does not match page size of the table or index.

The page size of the dbspace does not match page size of the table or index.
All fragments of a table or index must be created in dbspace of same page
size. If this is an interval fragmented table or index, ensure that all
dbspaces in the STORE IN clause have same page size and match the page 
size of the initial fragment dbspaces.


-794	One or more dbspaces for interval fragments do not exist.

One or more dbspaces in the STORE IN clause of an interval fragmented table
or index do not exist. Contact the database server administrator to
have the dbspaces added. Alternatively you can use the ALTER FRAGMENT 
statement for the table or index to modify the STORE IN clause to list
dbspaces that exist in the system. Always ensure that the page size of the
dbspace matches the page size of the table or index.


-795	One or more dbspaces for interval fragments are unusable.

The primary chunk (and the mirror chunk, if one exists) for one or more
dbspaces in the STORE IN clause of an interval fragmented table or index are
unusable. Roll back the current transaction and terminate the application.
Contact the database server administrator to repair the dbspaces.


-796	Fragment position for the row exceeds the maximum allowed.

The fragment position for the row exceeds 2147483646. Consider changing
the interval value expression or transition value to accommodate the row.


-797	Fragment is not empty.

The fragment contains data rows or index items and is not empty.


-798	No permission on table to create an interval fragment.

The user does not have the required table-level privilege to create an interval
fragment. An interval fragment can be created during an INSERT or an UPDATE
operation. If an INSERT operation triggers the creation of an interval
fragment, then user must have INSERT privilege at the table-level. Similarly,
if an UPDATE operation triggers the creation of an interval fragment, then user
must have UPDATE privilege at the table-level.


-800	Corresponding data types must be compatible in CASE expression or DECODE function.

All the result values in all the WHEN clauses in the CASE expression should be
of compatible data types. In the linearized use of the CASE expression, the
value-expression that follows the CASE keyword should be compatible with the
value-expressions that follow all the WHEN keywords in the CASE expression.
Reissue the query after modifying the CASE expression so that all
related expressions are of compatible data types.

This error can also occur when the expressions for the DECODE function do not
have compatible data types. The DECODE function has four possible expressions:
expr, when_expr, then_expr, and else_expr. All instances of when_expr must have
the same or a compatible data type as expr.  All instances of then_expr must
have the same or a compatible data type as else_expr. Reissue the query after
modifying the DECODE function so that all related expressions are of same or
compatible data types.

This error can also occur when calling functions that use implicit casts
and comparisons between data types, such as the NVL function. In this case,
revise your program logic (for example, by adding an explicit cast). so that
the expressions return the same or compatible data types.


-801	SQL Edit buffer is full.

The text editor cannot expand the buffer in which it stores your SQL
statements because no more data space memory is available. If you have
multiple statements in the buffer, execute them one at a time.


-802	Cannot open file for run.

The SQL command file that you specified cannot be opened for reading.
Review the filename that you specified. If it is spelled as you
intended, check that it exists in the current directory or in a
directory that is named in the DBPATH environment variable and that
your account has read permission for it.


-803	The file is too large for internal editing.

The SQL command file that you selected with the Choose option is too
large for the edit buffer to hold. The size of the edit buffer is
dynamic, and the program was unable to allocate enough memory to hold
the contents of the command file. (In DOS, this error also appears if
the command file exceeds 64 kilobytes.) Check that you specified the
file you intended and that it is in fact an SQL command file. If it is
the file that you intended, break it into smaller parts, and use them
separately.


-804	Comment has no end.

This statement includes a comment that is enclosed in braces ({ }), but
the closing brace is missing. Review the punctuation of the statement,
and check that all braces appear in matching pairs.


-805	Cannot open file for load.

The input file that is specified in this LOAD statement could not be
opened. Check the accompanying ISAM error code for more information.
Possibly a more complete pathname is needed, the file does not exist,
or your account does not have read permission for the file or a
directory in which it resides.


-806	Cannot open file for unload.

The output file that is specified in this UNLOAD statement could not be
opened. Check the accompanying ISAM error code for more information.
Possibly a more complete pathname is needed; the file exists, but your
account does not have write permission for it; or the disk is full.


-807	Cannot open file for output.

The program cannot create the file that you specified with the Save
option. The file should be saved in the current directory. Possibly
your account does not have write permission in that directory. Possibly
a read-only file of the same name exists (to eliminate this
possibility, try to save the file under a different name). Possibly the
disk is full. Look for operating-system error messages that might give
more information.


-808	Cannot open file for choose.

The SQL command file that you specified for the Choose menu option
cannot be opened for input. Check that the file is in the current
directory and readable to your account.


-809	SQL Syntax error has occurred.

The INSERT statement in this LOAD/UNLOAD/INFO statement has invalid syntax.
Review it for punctuation and use of keywords.


-810	Cannot open file for save.

The SQL command file could not be saved. Check that your account has
operating-system permission to write in the current directory and that
the disk is not full.


-811	Cannot open printer for output.

The application is trying to open the device that is specified in the
DBPRINT environment variable but is failing. Check the setting of that
variable, and rerun the program.


-812	Cannot open pipe for output.

Under the Output option, you selected To-pipe and specified a program
or command to receive the output. However, Informix SQL was unable to
open the pipe to that program or command. Review the program or command
that you typed to ensure that it is a syntactically valid UNIX or DOS
command and that it names only programs that are in your current
execution path. Also look for operating-system error messages; you
might have exceeded a system quota on memory or processes.


-813	Cannot write to pipe for output (no reading process).

Under the Output option, you sent output to a command or program
through a pipe. Although the pipe was established (indicating that the
command had correct syntax and named existing programs), it has since
closed unexpectedly. This condition indicates that the (first) program
in the pipe terminated before it had received all the output. Possibly
it quit due to an error, or possibly you or another user terminated it
with a kill command. Look for messages from the pipe program that
might explain why it quit.


-816	Cannot write file (check file permissions).

The file that is specified in the prior command cannot be written.
Probably your account does not have operating-system permission to
write to the file. Check the permissions, and run the program again.


-817	Cannot read file (check file permissions).

The file that is specified in the prior command cannot be read.
Probably your account does not have operating-system permission to read
the file. Check the permissions, and run the program again.


-818	Specified user menu not found.

The user menu that was requested cannot be found. Check the spelling of
the menu name. If it is as you intended, check the contents of the
sysmenus table in the current database; the menu might not be defined
in this database.


-819	There are no menu items in the menu.

The menu that you selected contains no items. You can choose a
different menu or modify the current one. If you think that the menu
should have items, check the contents of the sysmenuitems table in the
current database.


-820	No more data to display.

The display of selected rows is finished. With no scrolling display,
you cannot show the rows again. Restart the query from the beginning,
or enter a new query.


-821	Cannot open file for default report.

You requested creation of a default-report specification. This file is
saved in the current directory, but some problem prevented it. Possibly
the disk is full, or possibly your account does not have
operating-system permission to write in that location.


-822	Statements are already saved.

The current SQL statement has already been saved under the name that is
shown at the top of the screen. (This message does not appear to occur
any longer.)


-823	There are no statements to run.

You selected the Run option, but no SQL statement has been entered.
Either enter a statement, or use Choose to load one.


-824	Missing values clause on insert statement.

Probably no current IBM Informix product returns this message. If this
message does appear, refer to the discussion of error -836. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-825	Program not found.

No supporting executable file could be located. The file should have
existed in the directory that the INFORMIXDIR environment variable
names. Consult the person who installed the IBM Informix software.


-826	Fork system call failed.

This internal error indicates an inability to start a subordinate
process. Possibly it stems from an attempt to enter vi from DB-Access
when using the Use-editor option. Look for operating-system error
messages that might give more information. Retry the operation. If the
error recurs, contact your system administrator. In DOS systems, you
probably are out of memory; exit to the operating-system command line,
and resubmit your program.


-827	Database not found.

See the discussion of error -329.


-828	Command file not found.

The SQL command file that you specified is not found in the current
directory or in the directory that is listed in the DBPATH environment
variable. Check the spelling of the name and the setting of DBPATH.


-829	Form not found.

The compiled form specification that you specified is not found in the
current directory or in the directory that is listed in the DBPATH
environment variable. Check the spelling of the name and the setting of
DBPATH.


-830	Report not found.

The compiled report specification that you specified is not found in
the current directory or in the directory that is listed in the DBPATH
environment variable. Check the spelling of the name and the setting of
DBPATH.


-831	Error found in Report specifications.

One or more errors was found during compilation of the report
specification. Edit the report-specification file, and compile it
again. Follow the prompts to see the error messages. To look them up,
use the finderr utility.


-832	Error found in Form specifications.

One or more errors was found during compilation of the report
specification. Edit the report specification file, and compile it
again. Follow the prompts to see the error messages. To look them up,
use the finderr utility.


-833	Saceprep could not compile Report.

The report compiler, saceprep, encountered an error while it was
compiling a report specification. Look for other error messages, from
saceprep and the operating system, that might give more information.


-834	Sformbld could not compile Form.

The report compiler, sformbld, encountered an error while it was
compiling a report specification. Look for other error messages, from
sformbld and the operating system, that might give more information.


-835	Current clause is invalid in interactive mode.

The WHERE CURRENT OF clause is meaningful only in a program that uses a
cursor to read rows. In this interactive context, you must specify a
condition other than CURRENT in your WHERE clause.


-836	Insert statement has no values clause.

The INSERT statement that was entered as part of this LOAD statement
requires a VALUES clause. Revise the statement to include one.


-837	There is not enough memory available.

Informix SQL needed to allocate memory for one of a number of small
work areas but was not able to do so. Stop the program, and restart it.
If this action does not eliminate the problem, see your system
administrator about getting more memory. On DOS systems, you need to
free some disk space.

Database servers after Version 4.1 do not produce this error message.
For a related error, see error message -208.


-838	A line in the load file is too long.

Each line of the input file to LOAD must be read into storage in full
to be processed. Informix SQL resizes its memory buffer as required to
hold the current line. But in this case, it was not able to allocate a
large enough buffer. This error is most likely when the load file
contains TEXT or BYTE data values or very large CHAR values. All of the
values for one row must be contained in one line of the file. If you
cannot rerun the program with more memory available, modify the input
file to have fewer or shorter values in each row. Or use the dbload
utility to try to load the file.


-839	Table not found.

You specified the name of a table that does not exist in the current
database. Review the spelling of the table name, and check that you
are using the correct database. Refer to the discussion of error -310
for a way to display all table names.


-840	Name is too long.

Names of databases, reports, forms, and other files must be 10
characters or shorter. Select a new, shorter name, and repeat this
operation. In DOS systems, filenames can be a maximum of 8 characters
plus a 3-character extension.


-841	Name must start with a letter or "_" and contain letters, digits,
or "_".

Names of databases, reports, forms, and other files must conform to
this rule. Repeat this operation with a name that conforms to the
rule. Beginning with Version 6.0, the name of the following
identifiers, as well as server and cursor names, can begin with an
underscore: column, connection, constraint, database, index, procedure,
synonym, table, trigger, and view.


-842	Cannot read temp file.

Informix SQL created a temporary file; now it is trying to read back
the temporary file. However, it received an unexpected operating-system
return code. Possibly you or another user removed the file, or possibly
a hardware error occurred.


-843	Cannot write temp file.

Informix SQL is trying to write the current SQL source file into a
temporary file for editing but received an unexpected operating-system
return code. Look for operating-system error messages that might give
more information. On UNIX systems, possibly your account does not have
write access to /tmp or the directory that is named in the DBTEMP
environment variable, or the disk might be full. With Version 5.01 and
later, the IBM Informix SE database server uses the DBTEMP environment
variable, but IBM Informix Dynamic Server and IBM Informix OnLine Dynamic Server 
do not.


-844	Statement is too long -- out of memory.

Informix SQL was unable to allocate a memory buffer large enough to
hold this statement. Find a way to shorten the statement, or run it in
two or more parts.


-845	There are no user-menus in the database.

This database does not contain the sysmenus table, it is empty, or
possibly the top-level menu is not named main. Check that you are using
the database you intended. Consult with the person who defined the user
menus for this database.


-846	Number of values in load file is not equal to number of columns.

The LOAD processor counts the delimiters in the first line of the file
to determine the number of values in the load file. One delimiter must
exist for each column in the table or for each column in the list of
columns if one is specified. Check that you specified the file that you
intended and that it uses the correct delimiter character. An empty line
in the text can also cause this error.

If the LOAD statement does not specify a delimiter, verify that the default
delimiter matches the delimiter that is used in the file. If you are in
doubt about the default delimiter, specify the delimiter in the LOAD
statement.


-847	Error in load file row number.

A problem exists with the data on the indicated row of the load data
file. The operation stopped after it inserted rows up to but not
including the row that is noted (number-1 rows have been inserted). If
this operation is inside a transaction, roll back the transaction. If
not, either delete the inserted rows from the table or remove the used
rows from the file before you repeat the operation. To correct the
file, look for additional error messages that might help isolate the
problem. Possibly not enough, or too many, fields (delimiters) exist on
the indicated row. Possibly a data conversion problem exists, (for
example, nonnumeric characters in a numeric field, an improperly
formatted DATETIME value, or a character string that is too long).
Possibly a null (zero-length) field exists in a column where nulls are
not allowed. Edit the load file to correct the problem. Look for
similar problems in following lines, and then repeat the operation.
The row number and line number might not be the same because some rows
might be split into several lines. To identify split rows and their
corresponding line numbers, run the following command:

egrep -n"\\\\$" 

To calculate a line number of an incorrect row, add the number of split
rows that occur prior to the row to the row number.


-848	Form4gl could not compile Form.

You asked for a form specification to be compiled, but the form
compiler reported one or more errors. Correct the errors in the form
specification, and repeat the operation. The error messages are in the
formname.err file.


-849	Warning found in Form specifications.

You asked for a form specification to be compiled, and it was done, but
the form compiler reported one or more warnings. You are not required
to correct a warning before you try the form, but it is recommended
it. The error messages are in the formname.err file.


-850	User does not have permission to modify this menu.

Only the user who created the sysmenus table in this database can
modify the menu structure. That user first selected the Modify option
of the User-Menu display while this database was current. To determine
who that user is, query systables as follows:

SELECT owner FROM systables WHERE tabname LIKE 'sysmenu*'

If this action is not appropriate, ask that person to drop the sysmenus
and sysmenuitems tables, and then have the person who should maintain
the menus re-create them.


-851	Cannot drop file (check file permissions).

You requested that a file be dropped, but it could not be dropped,
probably because your account does not have write permissions on it or
on the directory in which it is stored. Use operating-system commands
to check the file permissions.


-852	Write failed. count rows unloaded (check ulimit or disk space).

After writing count lines of output to the unload file, an error
occurred trying to write the next line. Look for operating-system
messages that might give more information. Possible causes include a
full disk or a disk quota limit.


-853	Current transaction has been rolled back due to error or missing
COMMIT WORK.

While Informix SQL was executing SQL statements from a command file, it
received an error return code or reached the end of the file but found
no COMMIT WORK statement. Since a transaction was in progress (either
the file contained BEGIN WORK, or the database is ANSI compliant),
Informix SQL rolled the transaction back. (It cannot leave the
transaction open, and it cannot assume success even when no error was
returned.)


-854	Back end not found. Or back end is busy.

In DOS, the application cannot establish a connection to the local
IBM Informix SE engine or to the IBM Informix NET PC communications module.

The SE engine (for accessing a local database) or the IBM Informix NET PC
communications module (for accessing a remote database) must be loaded
before trying to connect to it by means of, for example, a DATABASE
statement. To load the SE engine, run PSTARTSQ. To load the
IBM Informix NET PC communications module, run REMSQL.

If the SE engine or the IBM Informix NET PC communications module has
previously been loaded, and you get this error message, either another
application currently has a connection to the SE engine, or the
IBM Informix NET PC communications module (they can have only one
connection at a time), or the current application encountered an
internal error and lost the connection.

If another application has a connection to the SE engine or to the
IBM Informix NET PC communications module, you must first release that
connection before you can connect the current application. If the other
application is a 4GL or an ESQL/C program, that application releases
its connection by executing a CLOSE DATABASE statement, calling the
SQLEXIT( ) function, or exiting.

In extreme situations where an internal error has occurred, you must
exit the application and stop the SE engine or the IBM Informix NET PC
communications module from the DOS command line. To stop the SE engine,
run PSTARTSQ with the -T option. After you stop the SE engine, run
PSTARTSQ with no options to reload it. To stop the IBM Informix NET PC
communications module, run SETNET with the -T option. After you stop
the IBM Informix NET PC communications module, run REMSQL to reload it.

This error message also might appear when a client Windows application
uses the wrong .DLL file to connect to a database server across a
network. Client Windows applications that work with IBM Informix NET PC
Version 4.1 (such as Version 4.1 ESQL/C) can also work with
IBM Informix NET for Windows Version 5.01. Check to see whether
IBM Informix NET PC Version 4.1 and IBM Informix NET for Windows Version 5.01
reside on the same client computer concurrently. If so, check that
Version 5.01 of the LDLLSQLW.DLL file appears in your PATH environment
variable setting before Version 4.1 of the LDLLSQLW.DLL file. In
addition, Version 4.1 of the LDLLSQLW.DLL file must not reside in the
current directory, the Windows directory, the Windows \SYSTEM
directory, or the directory that contains the executable file of the
application that you are running.


-855	Cannot drop rowids on a non-fragmented table.

You tried to use the ALTER TABLE...DROP syntax to drop the rowid column
on a table that is not fragmented. A non-fragmented table has a rowid
column, but you cannot drop it.


-856	Rowids already exist on table.

A rowid column already exists for the specified table. You cannot
create a rowid for a table more than once. Change your SQL statement.


-857	Rowids do not exist on table.

You cannot drop a nonexistent rowid. You specified a rowid that does
not exist in the specified table. Avoid using rowids in your SQL
statement. Instead, use a primary key to delete data.


-858	Cannot specify the same partition/space name twice in a fragmentation specification.

You specified the same dbspace or same partition name more than once in 
a fragmentation specification. Change the fragmentation specification to 
use different dbspaces/partition for each fragment.


-859	"Distributions Only" is not meaningful in an update statistics LOW
request.

You cannot specify the DISTRIBUTIONS ONLY option in the LOW mode of the
UPDATE STATISTICS statement.


-860	A fragmented object must have at least than one fragment.

The Round Robin, Exprespression based fragmeneted object must have
at least two fragments. All other fragmented objects needs to have 
at least one fragment.


-861	Cannot create new PDQ thread.

See the accompanying ISAM error for more information.


-862	Alter fragment attach must have at least one consumed table specified.

You have not specified a table to be consumed. See the syntax and usage
for ALTER FRAGMENT... ATTACH in the IBM Informix Guide to SQL: Syntax.


-863	Cannot detach a table with rowids.

You must first drop rowids before you use ALTER FRAGMENT... DETACH. See
the syntax and usage in the IBM Informix Guide to SQL: Syntax.


-864	Cannot attach a table with rowids.

You must first drop the rowids on the surviving table before you attach
the table.


-865	Cannot add or drop the rowid column or the cdrserver and cdrtime 
columns in combination with other alter table options.

The ADD ROWIDS, DROP ROWIDS, ADD CRCOLS, or DROP CRCOLS keywords cannot 
be combined with any other ALTER TABLE options.


-866	Cannot attach tables that contain serial fields.

Before you use an ALTER FRAGMENT... ATTACH statement, you must drop any
serial fields or modify the column type.


-867	Cannot generate new rowid.

See the accompanying ISAM error for more information. A table cannot
hold more than 2 gigabytes of records if it has serial or rowid
columns.


-868	Cannot check constraints on the attaching table.

You cannot attach a table if a check, referential, primary-key, or not null
constraint exists on the surviving table.

Drop any check, referential, primary-key, or not null constraint. Then
attach the table and if you still want to use the constraint, re-create it.


-869	Subqueries and procedures are not allowed in fragmentation expressions.

A fragmentation expression can reference only columns from the current
table and data values from a single row. The restrictions disallow
subqueries.


-870	Cannot specify duplicate remainder fragments.

You specified duplicate remainder fragments. Remove one of the
remainder fragments from your SQL statement.


-871	Remainder fragment must be specified last.

If you specify a REMAINDER, it must be the last fragment expression.
Rewrite your syntax so that you specify the remainder fragment last.


-872	Invalid fragment strategy or expression for the unique index.

The round-robin method cannot fragment unique indexes. If the
expression method fragments the indexes, all the columns that are used
in the fragmentation expressions must also be part of the index key.


-873	Invalid fragment expression column.

You cannot use columns from different tables in a fragment expression.


-874	General exception error has occurred in the optimizer.

If this internal error occurs, note all circumstances and contact
IBM Support.


-875	Incompatible Access Mode and Isolation Level.

If you set the access mode to READ-WRITE, you cannot set the isolation
level to READ-UNCOMMITTED.


-876	Cannot issue SET TRANSACTION once a transaction has started.

When a transaction is active, do not issue a SET TRANSACTION statement.
A transaction becomes active when a DDL or a DML statement is issued.
The only statements that you can place between the BEGIN WORK and the
SET TRANSACTION statements are SET statements such as SET EXPLAIN, SET
CONSTRAINT, SET DATASKIP, and so on.


-877	Isolation Level previously set by "Set Transaction".

Your program attempted to reset the isolation level that a preceding
SET TRANSACTION statement established. Do not use a SET ISOLATION
statement after a SET TRANSACTION statement.


-878	Invalid operation for a READ-ONLY transaction.

You specified a READ-ONLY transaction in a SET TRANSACTION statement
and then attempted to alter the database. In other words, READ-ONLY
ensures that you can read data, but you cannot alter data. If you want
to alter the data, specify READ WRITE in the SET TRANSACTION statement.
If you only want to read the data, correct your program so that it does
not attempt to alter the data.


-879	Trim character must be null or have a length of 1.

The TRIM function evaluated to NULL. However, the TRIM character value
expression must be null or contain a single character. Your program is
incorrectly written. Every time the TRIM function evaluates to NULL,
the value your program inserts into the TRIM character value expression
is not null or contains more than one character. Correct, recompile,
and rerun your program.


-880	Trim character and trim source must be of string data type.

You used a TRIM function where the TRIM character value expression and
the source character value expression were conflicting data types. The
character and source value expressions must be the string data type.
Check the syntax of the TRIM function, and check that the character and
source values contain string data type values.


-881	The resulting string length from CONCAT, LPAD, REPLACE or RPAD is longer than the maximum.

The LPAD, RPAD, REPLACE or CONCAT function returned a string whose length is 
outside the range from 1 to 255 bytes for NVARCHAR or VARCHAR, or from 1 to 32739 
bytes for CHAR, NCHAR, or LVARCHAR. These functions return a string whose data type 
depends on the data type of the input string that the function is formatting. Make 
sure that the function returns a string whose length is within the size range for 
the returned data type.

-882	Cannot create rowids on a non-fragmented table.

You tried to use the ALTER TABLE... ADD syntax to add a rowid column to
a table that is not fragmented. This usage is not valid. If a rowid
column already exists, rowids already exist on non-fragmented tables.


-883	Cannot evaluate the fragmentation expression.

A fragmentation expression in your program is invalid. Check the
expression, and correct it. Check the logic of that expression. Also,
some components of that expression might be NULL or might not represent
existing or defined elements such as columns, hash values, ranges, index
key values, and so on.


-884	Cannot alter an index on a temporary table.

Your program attempted to alter an index on a temporary table. Correct
your program to avoid altering indexes on temporary tables.


-885	Invalid or NULL utc time given to dbinfo(utc_to_datetime).

You attempted to pass an invalid or NULL value to the dbinfo()
function. Make sure you pass a valid or non-null value to the dbinfo()
function.


-886	Cannot drop table or view because of existing dependencies.

When you issue a DROP TABLE or DROP VIEW statement, you cannot drop the
table or view if you specify the RESTRICT option and a view or
foreign-key constraint exists that depends on that table or view.

You also cannot drop a table if you specify the RESTRICT option and a
violations and diagnostics table exists for that table.


-887	Cannot revoke because of dependent privileges, views, or constraints.

You cannot use the RESTRICT option to REVOKE a privilege if that action
will cause abandoned privileges, abandoned views, or abandoned table
constraints. Refer to the IBM Informix Guide to SQL: Tutorial for more
information.


-888	Cannot attach a table with primary-key constraints.

You cannot attach a table if a primary-key or unique constraint exists on
the surviving table or consumed table.

Drop the primary-key constraint and then attach the table. If you still
want to use the primary-key constraint, re-create it.


-889	Internal dataskip condition, should reposition to next row and continue.

If this internal error recurs, note all circumstance, and
contact IBM Technical Support.


-891	Temporary table objects can only be enabled.

You cannot change the object mode of a temporary table object to the
disabled or filtering object mode.


-892	Cannot disable object object-name due to other active objects using it.

Other objects are using this object. If the object being disabled is an
index, then a unique constraint, primary constraint, or referential
constraint might be using that object. If the object is a unique or a
primary-key constraint, then a referential constraint might be using
that object. If an index of a referential constraint is being 
disabled, then a unique constraint, primary constraint, or some other
referential constraint might be using this object.

The following example illustrates one of these scenarios:

CREATE TABLE parent(c1 int, c2 int, c3 int);
ALTER TABLE parent ADD CONSTRAINT PRIMARY KEY(c1) CONSTRAINT cons_parent_c1;
CREATE TABLE child(x1 int, x2 int, x3 varchar(32));
ALTER TABLE child ADD CONSTRAINT PRIMARY KEY(x1) CONSTRAINT cons_child_x1;

The following ALTER statement is trying to disable the foreign key index that 
is being shared by the primary key, hence this error 892 is returned:

ALTER TABLE CHILD ADD CONSTRAINT
(FOREIGN KEY(x1) REFERENCES PARENT(c1) CONSTRAINT cons_child_x2 INDEX DISABLED);

-893	Cannot activate/create object object-name because of its dependencies.

The user has issued a SET statement to set a database object to the
enabled or filtering object mode, or the user has issued a CREATE
INDEX, CREATE TRIGGER, or CREATE TABLE statement to create a database
object in the enabled or filtering object mode. However, this object
needs other disabled objects. For example, before enabling a
referential constraint on a table, the user must first enable the
indexes that the constraint needs.


-894	Cannot find object object-name.

The object name that the user specified explicitly in the SET statement
is not found in the database.


-895	Cannot create violations/diagnostics table.

The user has issued a START VIOLATIONS TABLE statement for a target
table. The database server is not able to create the violations and
diagnostics tables for this target table. Any one of the following
situations might be the reason for the failure:

    *   The target table already has a violations and diagnostics table.

    *   The names that are specified for the violations and diagnostics
	table in the START VIOLATIONS TABLE statement are not valid.
	For example, if you omitted the USING clause from the statement
	and the number of characters in the target table name plus four
	characters is longer than the maximum identifier length, the
	generated names of the violations and diagnostics tables would
	be longer than the maximum identifier length. If the names of
	the violations and diagnostics tables are invalid for this
	reason, the user can give explicit names to the violations and
	diagnostics tables in the USING clause of the START VIOLATIONS
	TABLE statement to rectify the problem.

    *   The names that were specified for the violations and
	diagnostics tables in the START VIOLATIONS TABLE statement
	match the names of existing tables in the database.

    *   The target table contains columns with the names
	informix_tupleid or informix_optype. Because these two column
	names would duplicate the informix_tupleid or informix_optype
	columns in the violations table, the database server cannot
	create the violations table.

    *   The target table is a temporary table.

    *   The target table is serving as a violations or diagnostics
	table for some other table.

    *   The target table is a system catalog table.


-896	Violations table is not started for the target table.

This error occurs in either of the following cases:

   1. A STOP VIOLATIONS TABLE was executed before the START VIOLATIONS
      TABLE statement or after the START VIOLATIONS TABLE statement was
      rolled back.

   2. A violations table has not been started for the target table
      and an INSERT, DELETE, or UPDATE statement fails to satisfy any
      filtering-mode object on the target table.

A violations table must exist before execution of the STOP VIOLATIONS
statement.

To prevent this error, you can start a violations table for the
target table.


-897	Cannot modify/drop a violations/diagnostics table.

The user has tried to alter or drop a table that is serving as a
violations table or a diagnostics table for another table.


-898	Cannot alter a table which has associated violations/diagnostics tables.

The user has tried to add, drop, or modify a column in a table that has
a violations and diagnostics table associated with it.


-899	Too many violations.

The number of records in the diagnostics table either exceeds or will
exceed the limit that is specified. Limits are specified in the 
MAX VIOLATIONS clause of the START VIOLATIONS TABLE statement for 
Extended Parallel Server or the MAX ROWS clause for other 
IBM Informix database servers. 

When a single statement on the target table (such as an INSERT or 
SET statement) causes more records to be inserted into the 
diagnostics table than the limit that is specified by the MAX
ROWS clause, this error is returned to the user who issued the
statement on the target table.


-903	Licensed  Informix SQL server not accessible.

This statement refers to another host computer system, and that system
is active and accessible. However, the sqlexecd network daemon has not
been started on it, so no database services can be gotten from it.
Contact the DBA of the other system. Check that the IBM Informix STAR or
IBM Informix NET software is correctly installed.


-904	Authorization file not on licensed Informix SQL server.

This message indicates that the installation of the IBM Informix networking
software was not completed correctly. Review the installation steps on
the workstation and on the network server to make sure that it was
completed without error.


-905	Cannot locate sqlexec service /tcp service in /etc/services.

The IBM Informix STAR or IBM Informix NET software has not been properly
installed on this system. In particular, entries in the
system-configuration file /etc/services (UNIX) or \etc\services (DOS)
have not been made. Contact the person who installs your IBM Informix
software.


-906	Cannot locate remote system (check DBPATH).

IBM Informix NET is searching for the database that is requested in the
current statement. It is using the entries in the DBPATH environment
variable and is trying one that, by use of //sitename, specifies a
directory on another computer system. That system cannot be accessed.

Review the setting of the DBPATH environment variable. Check that any
other systems it specifies have IBM Informix STAR or IBM Informix NET installed
and active. This message appears prior to Version 6.0.


-907	Cannot create socket on current database server.

IBM Informix STAR or IBM Informix NET is trying to access another computer
system but is unable to create a connection. Contact your system
administrator, and ask for a check that TCP/IP is correctly installed
and functioning.


-908	Attempt to connect to database server (servername) failed.

The program or application is trying to access another database server
but has failed. Note the server name in the current statement.

The desired database server is unavailable, or the network is down or
is congested. Ask your DBA and system administrator to verify that the
server and network are operational. If the network is congested, use
the environment variables INFORMIXCONTIME and INFORMIXCONRETRY to tune
connection timing. For information on setting these environment variables,
see the IBM Informix Guide to SQL: Reference.

This message appears in Version 6.0 and later versions.


-909	Invalid database name format.

This statement seems to refer to a database from another database
server, but the database name, site name, server name, or punctuation
is incorrect. Review the statement, and check that all identifiers
start with a letter (or underscore, for Version 6.0 and later) and
contain only letters, digits, and underscores, and that the reference
is in the form dbname@sitename or //sitename/dbname (before Version
6.0) or dbname@servername or //servername/dbname (Version 6.0 and
later). If you are using IBM Informix OnLine for NetWare, check that you
provided the remote database name in one of the forms that is explained
in the product manual.


-910	Cannot create an IBM Informix Dynamic Server database from 
        an IBM Informix SE client.

This CREATE DATABASE statement cannot be carried out because the
database server on your workstation and the one on the other computer
system are different products: one is IBM Informix SE and the other is
another IBM Informix database server. You can manipulate databases in this
configuration, but you cannot create one.

To create a database, either start the same product in both locations, or
run this statement locally on the other computer system.

-911	System error - Cannot read from pipe.

This internal error reflects a failure in communication between your
application and the IBM Informix STAR or IBM Informix NET software. Look for
operating-system error messages that might give more information.
Restart the application. If the problem recurs, note all
circumstances and contact IBM Technical Support.


-912	Network error - Could not write to database server.

A network failure occurred. Look for operating-system error messages
that might give more information. Restart the application. If the
problem recurs, contact your system administrator, and ask for network
diagnostics to be run.


-913	Network error - Could not read from database server.

A network failure occurred. Look for operating-system error messages
that might give more information. Restart the application. If the
problem recurs, contact your system administrator, and ask for network
diagnostics to be run.


-914	System error - Cannot write to pipe.

This internal error reflects a failure in communication between your
application and the IBM Informix STAR or IBM Informix NET software. Look for
operating-system error messages that might give more information.
Restart the application. If the problem recurs, note all
circumstances and contact Technical Support at tsmaius.ibm.com.


-915	Cannot create an IBM Informix SE database from an IBM Informix 
        Dynamic Server client.

This CREATE DATABASE statement cannot be carried out because the
database server on your workstation and the one in the other computer
system are different products: one is IBM Informix SE and the other is
another IBM Informix database server. You can manipulate databases in this
configuration, but you cannot create one.

To create a database, either start the same product in both locations, or
run this statement locally on the other computer system.


-916	NFS mount table error.

The database server that you tried to access or a path that was
specified in your DBPATH environment variable is located on an
NFS-mounted file system. However, the database server or client
application encountered an error accessing the NFS-mounted table file
/etc/mtab (or, on some operating systems, /etc/mnttab). This condition
probably occurred because your account does not have read permission
for the file. Contact your system administrator, and have the file made
readable to public.

This message appears with Version 6.0 and later.


-916	Cannot open /etc/mtab.

The database server needs to check the system configuration file
/etc/mtab to verify the location of a file system. However, it got an
error when it tried to read that file, probably because your account
does not have read permission for it. Contact your system
administrator, and have the file made readable to public.

This message appears prior to Version 6.0.


-917	Must close current database before using a new database.

This statement (DATABASE or CREATE DATABASE) requires you to open a
different database. However, the current database is located on another
computer system, so you must explicitly close it with the CLOSE
DATABASE statement. (When you work with databases located on the same
computer as your application program, the database server will close
the current database for you automatically.) If a program receives this
error, review the program logic, and check that it executes a CLOSE
DATABASE statement before a [CREATE] DATABASE statement. This solution
will work in all situations, networked or local.


-918	Unexpected data received from another database server.

This internal error reflects a failure in communication between your
application and the IBM Informix STAR or IBM Informix NET software at another
site. Restart your application. If the problem recurs, ask your system
administrator to run network diagnostics. If the error recurs,
note all circumstances and contact IBM Technical Support.


-919	System error. Wrong number of arguments to database server process.

This internal error reflects a failure in communication between your
application, IBM Informix STAR or IBM Informix NET software, and the database
server on the other computer system. Check that all three of these
software components are at compatible software levels. (For versions
prior to Version 6.0, see the appropriate IBM Informix NET/IBM Informix STAR
Installation and Configuration Guide for a compatibility chart).
Recompile and relink your application program if necessary. If the
problem recurs, note all circumstances and contact
IBM Technical Support.


-921	System error. Illegal or wrong number of arguments to sqlexec server.

This internal error reflects a failure in communications between your
application and the database server on the other computer system. Check
that all software components are at compatible software levels. Recompile
and relink your application program if necessary. If the problem recurs,
note all circumstances and contact IBM Technical Support.

For a Windows system, check your Client Installation and Configuration
Guide for information about using Setnet32 to set the environment variables
that affect client-server communications.

For versions prior to Version 6.0, see the appropriate
IBM Informix NET/IBM Informix STAR Installation and Configuration Guide for
a compatibility chart.


-922	Cannot get name of current working directory.

A problem exists with the current working directory on this system or
on another computer system that your application is using. Possibly
your account does not have read access to the directory, or possibly
the file system that contains it is improperly mounted. Exit your
application, and retry. If the problem persists, see your system
administrator for assistance.


-923	IBM is licensed to access the current database server only.

This version of the IBM Informix product is not licensed for network use.
Locate the version of the software that is licensed for use with
IBM Informix STAR or IBM Informix NET, and reset your INFORMIXDIR environment
variable and the SQLEXEC environment variable (for database servers
prior to Version 6.0) to point to it.


-924	IBM is not licensed to access the specified database server.

If you have installed an IBM Informix NET station package only on your
client computer, you cannot access locally resident databases. If the
database that you are attempting to access is not locally resident,
enter the command again and specify a site name with the database name,
or set your DBPATH environment variable to indicate searches only in
specific sites. If you want to use your IBM Informix product to access both
local and remote databases, contact your IBM representative
for details on purchasing the appropriate IBM Informix product.


-925	The protocol type should be tcp.

The protocol type that is shown in the $INFORMIXDIR/etc/sqlhosts file
(or in \INFORMIX\etc\sqlhosts on IBM Informix OnLine for NetWare) should be
tcp.


-926	The database server is not licensed for distributed data
access.

This statement refers to a database in a different database server (for
example, by qualifying the name of a table with dbname@sitename:table).
However, this version is not licensed for such use. With this version,
you can refer only to tables in databases that are all on the same
database server.

Contact your IBM representative about upgrading this database server
to full IBM Informix STAR status. If you believe that you have IBM Informix STAR
installed, check the contents of the INFORMIXDIR environment variable. If
you are using IBM Informix OnLine for NetWare, you cannot access tables or
databases on remote systems unless you have IBM Informix NET PC.




-927	Exceeded limit on maximum number of servers you can reference.

This statement contains references to more sites than the database
server can handle. Through Version 4.1, the limit on different site
names that can appear in one statement is 32 (later versions might
allow more). Review the statement, and check that only necessary sites
are named. If so, revise the operation to use fewer sites (for example,
by selecting some data into a local, temporary table).


-928	The database server is not licensed for distributed data access.

This statement refers to a database on a different computer system (for
example, by qualifying the name of a table with dbname@sitename:table).
However, the database server that is active at the indicated site is not
licensed for such use. This situation indicates an error in the setup of
the remote computer system: it was configured for network access, but the
wrong database server was started. Contact the network administrator, and
ask for a check of the environment variables when starting the sqlexecd
daemon. If you are using IBM Informix OnLine for NetWare, you tried to access
a table on an database server that is not licensed for remote access; you
can access only other IBM Informix NET PC systems.


-930	Cannot connect to database server servername.

The application is trying to access another computer system but failed.
Note the server name in the current statement. Ask your network
administrator and DBA to check that the network is operational and that
the particular database server is active. This message appears with
Version 6.0 and later.


-929	SQLI Protocol Error.  Session terminated.

The database server received a SQLI protocol request that could not be 
interpreted. Such messages are treated as attacks on the server and the 
session issuing such a request is unilaterally terminated immediately.  
If you think you received this message erroneously, record all the 
details (including the version of CSDK or I-Connect in use) and 
contact IBM Support.


-930	Cannot connect to remote host sitename.

IBM Informix STAR or IBM Informix NET is trying to access another computer
system but has failed. Note the site name in the current statement.
Contact your network administrator, and ask for a check that the
network is operational and that the particular site is active. This
message appears in database servers prior to Version 6.0.


-931	Cannot locate servicename service/tcp service in /etc/services.

The service servicename is not listed in the network configuration file
/etc/services (UNIX) or \etc\services (DOS). Check the
$INFORMIXDIR/etc/sqlhosts file, and check that the service name for the
desired server is correct. If so, contact your network administrator to
find out why the service is not known. If you are using IBM Informix OnLine
for NetWare, check the \etc\services file on the client for the
required entries.


-932	Error on network connection, function system call failed.

This internal error reflects a failure in communication between your
application and the network software (IBM Informix STAR, IBM Informix NET,
IBM Informix NET for Windows, and so on) at another site. Restart your
application. Look for operating-system messages that might give more
information.

If you are using IBM Informix NET for Windows, a Windows Sockets problem
might exist; check your Windows Sockets 1.1 documentation for more
information. Check the sqlerrm field of the sqlca structure for the
particular Windows Sockets message.

In the ASCL context, this error might also indicate problems in your
informix.ini file. Verify that the SERVICE, HOST, and PASSWD entries
are correct.

If the problem recurs, ask your network administrator to run network
diagnostics. If the error recurs, note all circumstances and
contact IBM Technical Support.


-933	Unknown network type specified in DBNETTYPE.

The DBNETTYPE environment variable is used on certain machines to
distinguish which network protocol to use when two protocols are
available. The value that is currently set in it is not supported.
Display the variable, and check that it is set correctly. Prior to
Version 6.0, refer to the IBM Informix NET/IBM Informix STAR Installation and
Configuration Guide for the correct setting. If you are using
IBM Informix OnLine for NetWare, set DBNETTYPE to starlan, tcp/ip, or some
other supported network.


-934	Connection to remote site no longer valid.

This statement uses data from another computer system, but the
connection has been lost. Roll back the transaction, and try again
after you reestablish the connection.


-935	Cannot obtain IPX address for service name servicename.

You are trying to connect to a database server with the indicated
service name via the IPX/SPX network protocol on a system with portable
IBM Informix OnLine for NetWare. The client application, IBM Informix NET or
IBM Informix STAR, is not able to determine the IPX address that is
associated with the specified service name. Possibly the service name
is misspelled in your sqlhosts file; the sqlexecd daemon or the
database server is not running; or the portable IBM Informix OnLine for
NetWare software is not operating properly. Verify the service name in
your sqlhosts file. Ask your DBA or system administrator to verify that
the sqlexecd daemon, the database server, and the portable
IBM Informix OnLine for NetWare software are operational.


-936	Error on remote connection connection-name.

An attempted connection to a remote host failed. Check the name of the
connection that is specified in your particular connection statement
(CONNECT, DATABASE, and so on) to make sure that you correctly
specified the name or path of the connection. Check for incorrect
spelling. Check for the wrong connection name.


-937	User Defined Routine error.

mi_db_error_raise() has been called from within a user-defined routine
and set a fatal error. For an explanation, look at the SQLSTATE that
the user-defined routine set.


-938	VALUES clause may not have expressions if a cursor is declared
on an INSERT.

The INSERT statement to be associated with the INSERT cursor includes
a VALUES clause that has one or more expressions.

Change the application so that expressions are not used in the
VALUES clause.


-939	Too many messages to display; some are not shown.

This message appears if a single error in the server results in a large 
number of messages being returned. For example, if there is a nested set 
of calls in which a user-defined routine (UDR) executes an SQL statement 
that calls another UDR, and so on, when an error occurs, each UDR returns 
a message for that error corresponding to its own context.  When the 
number of messages exceeds an internal limit, the remaining messages are 
replaced by this message.  You do not need to take any special action.


-940	The statement failed, becuase the WITH CHECK OPTION keywords are not 
supported in Union, Intersect, or Minus views.

You tried to define a union/intersect/minus view with a check options. Redefine 
the union/intersect/minus view without the check options clause.


-941	String processing error while evaluating function (function_name).

An error occurred during evaluation of the case conversion function on
the input string. This error could be due to an invalid character (single-
or multi-byte) in the string. You need to execute the query again after
verifying that the characters in the input string are valid.


-942	Transaction commit failed - transaction will be rolled back.

This error can occur at transaction-commit time if an error is raised
when a DataBlade routine calls a UDR-registered end-of-transaction
(MI_EVENT_END_XACT) callback. You have registered a callback for the
MI_EVENT_END_XACT (or MI_Xact_State_Change) event in the context of a
server routine. When the end-of-transaction (MI_EVENT_END_XACT) event
occurred to commit the transaction, an error was raised.

Within a DataBlade routine, you can use the mi_error_desc_next()
function to obtain the next error, which should explain the cause of the
failure. Currently, the end-of-transaction (MI_EVENT_END_XACT) event
occurs only within the context of a DataBlade server routine. It does
not occur within the context of a DataBlade client application.


-943	Found a non-terminated comment ("/*" with no matching "*/").

DB-Access does not currently support comments without terminators. You
might see this message when you run .sql scripts through DB-Access.


-944	Cannot use "first", "limit" or "skip" in this context.

This statement uses FIRST N , LIMIT N or SKIP M inside a subquery. This action is not supported.

Review the use of FIRST N and check that it is applied only to the outer main
query SELECT clause.


-945	Invalid parameter given to dbinfo(version).

You entered a value for a version that this command does not support. 
The arguments to dbinfo() are invalid or NULL. The first argument was the
string constant version.

Check that the second argument is also a quoted string constant that
corresponds to one of the following values: 'major', 'minor', 'level',
'os', 'server-type', or 'full'.





-946	Source string for UPPER, LOWER, and INITCAP must be of string type.

The source string passed as input to a case conversion function must have
a character data type.


-947	Declaration of an SPL variable named 'null' conflicts
with SQL NULL value.

Users may not define an SPL routine variable whose spelling
is 'null'. This is an error because allowing such definition would
restrict the global scope of the NULL constant.


-948	Cannot rename constraint index.

User tried to rename a system-generated constraint index.

You do not need to take any action because you are not allowed to rename a
system-generated constraint index.


-949	Unable to alter fragmentation scheme when indexes disabled.

An attempt has been made to alter the fragmentation scheme on a table
that has disabled indexes. This is not allowed. The action is aborted.


-950	User username is not known on the database server.

This statement refers to a database on another computer system, but the
other database server does not accept your account name. You must have 
a valid trusted login identity on any database server you access remotely.
See your database administrator about putting your login ID in 
'sysuser:sysauth' on the remote server. This message appears on PAM enabled 
servers.


-951	User username is not known on the database server.

The database server that you tried to access does not accept either
your user ID, the login name that is specified for the desired server
host in your ~/.netrc file, or the user name that is specified in the
USER clause of a CONNECT statement. If you are explicitly specifying
your user name in the ~/.netrc file or in a CONNECT statement, check
that the name is correct. If you do not have a valid user ID on the
server computer, see your system administrator. This message appears
with Version 6.0 and later.


-951	User is not known on remote host.

This statement refers to a database on another computer system, but the
other system does not accept your account name. You must have a valid
login identity on any computer system you access. See your network
administrator about getting a login ID. This message appears prior to
Version 6.0.


-952	User's password is not correct for the database server.

The password that is specified for the server computer in your ~/.netrc
file or in the USER clause of a CONNECT statement is incorrect. The
database server does not accept (or cannot find) your account password.
Check that your password is specified correctly, and try again. This
message appears with Version 6.0 and later.


-952	User (<user-id>)'s password is not correct for the database server.

The password that is specified for the server computer in your ~/.netrc
file or in the USER clause of a CONNECT statement is incorrect. The
database server does not accept (or cannot find) your account password.
Check that your password is specified correctly, and try again. This
message appears with Version 6.0 and later.


-953	Network server could not exec sqlexec program.

The network server was unable to start the database server thread. The
most common cause for this error is a failure to define the INFORMIXDIR
environment variable, by root, at the time the database server process
was started. Contact your network administrator, and ask that the
database server process on the remote system be restarted with a valid
path to the IBM Informix software. This message appears with Version 6.0
and later.


-953	Remote host could not exec sqlexec program.

The network daemon, sqlexecd, on the other computer system was unable
to start the database server process. The most common cause of this
error is a failure to define the INFORMIXDIR and SQLEXEC environment
variables, by root, at the time the daemon was started. Contact your
network administrator, and ask that the daemon on the remote system be
restarted with a valid path to the IBM Informix software. This message
appears prior to Version 6.0.


-954	Client is not known to remote host.

The computer on which your application is running is not known to the
computer you are trying to access. Contact your network administrator,
and ask that your computer be made known. The usual way of making a
computer known is through the configuration file /etc/hosts.equiv on the
other system. Refer to the IBM Informix NET/IBM Informix STAR Installation and
Configuration Guide. This message appears prior to Version 6.0.


-954	Client is not known to database server.

The computer on which your application is running is not known to the
database server that you are trying to access. Contact your network
administrator, and ask that your computer be made known, most likely
through the configuration file /etc/hosts on the other system. This
message appears with Version 6.0 and later.


-955	Remote host could not receive data from client.

This internal error reflects a failure in communication between your
application and the IBM Informix STAR or IBM Informix NET software at another
site. Restart your application. Look for operating-system messages that
might give more information. If the problem recurs, ask your network
administrator to run network diagnostics. If the error recurs,
note all circumstances and contact IBM Technical Support. This
message appears prior to Version 6.0.


-955	Database server could not receive data from client.

This internal error reflects a failure in communication between your
client application and the database server software at another site.
Restart your application. Look for operating-system messages that might
give more information. If the problem recurs, ask your DBA to run
network diagnostics. If the error recurs, note all
circumstances and contact IBM Technical Support. This message
appears beginning with Version 6.0.


-956	Client client-name is not in /etc/hosts.equiv on the remote host.

This operation cannot be completed because the specified remote computer
does not recognize the name of the client computer (the local host,
whose name the hostname command returns). Client names are normally
recorded in the configuration file /etc/hosts.equiv. The rhosts file on
the remote computer might also need modification. For more information
on these files and the relation between them, try man rhosts on a UNIX
system. See the remote host administrator to ensure that the client
host name is specified in /etc/hosts.equiv file for the remote host.
This message appears in versions prior to Version 6.0.


-956	Client client-name or user is not trusted by the database server.

The desired database server does not consider the client computer or
your user ID trusted. Ask the system administrator to include the
client computer as a trusted host and/or your user id as a trusted user
in the /etc/hosts.equiv file on the server computer or in the .rhosts
file in your home directory on the server computer. See the UNIX manual
pages on HOSTS.EQUIV(5) for more information.

Alternatively, you can explicitly specify your user name and password
in the USER clause of a CONNECT statement or in the .netrc file in your
home directory on the client computer. See the IBM Informix Guide to SQL:
Syntax for information on the CONNECT statement, and the UNIX manual
pages regarding NETRC(5) for information on the .netrc file. This
message appears with Version 6.0 and later.


-957	Cannot create/access database on NFS mount.

Note the specifics of your system when this internal error
occurred, and contact IBM Technical Support.


-958	Temp table <table-name> already exists in session.

This statement tries to create a table with the name that is shown, but a
temporary table with that name already exists. Only one temporary table with
a given name can exist in a session.

Check the spelling of the name. If the name is spelled as you intended, check
that a temporary table with the given name does not exist in the session.
To review the names of temporary tables, query the systabnames table as
follows:

    SELECT dbsname, tabname FROM sysmaster:systabnames
           WHERE tabname = <table-name>

If the name exists, review this name by querying the systables table
in <dbsname>:

    SELECT tabname FROM <dbsname>:systables
           WHERE tabname = <table-name>

If the name does not exist in systables (" No rows found "), this table is
a temporary table.


-959	The current transaction has been rolled back due to an
internal error.

A server thread associated with your session has been suspended, most
likely because of a serious internal error. Evidence about the
problem has been gathered and written to an Assertion Failure file,
and your online log should contain more information. Contact 
IBM Technical Support and provide them with your Assertion
Failure file.

Before suspending the session thread, the server attempted to roll
back all work performed by the current transaction. Your connection
to the server may also have been broken, depending on the type of
thread that was suspended. At a minimum you will have to begin a
new transaction.


-960	The connection failed because the user failed the security
check set by the SECURITY_LOCALCONNECTION configuration parameter.

The ID of the local user running the client program is not the same
ID of the user trying to access the database. The server checks the
user IDs when the SECURITY_LOCALCONNECTION configuration parameter
is set to a nonzero value.

See the IBM Informix Administrator's Reference manual for more
information.


-971	Integrity violations detected.

The user has attempted to change the object mode of a disabled
constraint or disabled unique index to the enabled or filtering mode,
but the SET statement fails because the table contains data that
violates the constraint or the unique-index requirement. If a
violations table has been started for the table that contains the
inconsistent data, this message is returned to the user. The message
is returned whether or not the SET statement included the WITH ERROR
option.

Similarly, when an INSERT, DELETE, or UPDATE statement causes some
records to be added to the violations table because the statement
violates a filtering-mode object, this message is returned to the user
if the following two conditions are true:

    *   The SET statement or CREATE statement that specified the
	filtering-object mode for the object included the WITH ERROR
	option.

    *   No other errors have been encountered during the execution of
	the INSERT, DELETE, or UPDATE statement.


-972	Unable to alter table table-name.

The in-place alter table operation cannot be performed. See the
accompanying ISAM error for more information.


-973	Cannot insert from the violations table to the target table.

The user issued a statement that attempts to insert rows from the
violations table into the target table. For example, the user enters
the following statement:

INSERT INTO mytable SELECT * FROM mytable_vio

If the target table has some filtering-mode objects, this error is
returned to the user. The user can recover in any of the following
ways:

    *   Set the object mode of the filtering objects to some other
        mode.

    *   Stop the violations table.

    *   Insert rows from the violations table into a temporary table,
	and then insert rows from the temporary table into the target
	table.


-974	Cannot drop not null constraint on the serial column.

The user issued a statement to drop a NOT NULL constraint on a column
that has a SERIAL or SERIAL8 or BIGSERIAL data type. Such constraints 
can be disabled, but they cannot be dropped before the column is dropped.


-975	Invalid object and object mode combination.

The user tried to create a new object in an object mode that does not
apply to that object type, or the user set the object mode of an
existing object to a mode that does not apply to that type of object.
For example, if the user tries to create a trigger in the filtering
mode or set an existing trigger to the filtering mode, the user
receives this error.


-976	Table must be fragmented by expression to grant fragment authority.

The user attempted to grant fragment-level privileges on an
unfragmented table or on a table that is not fragmented by expression.


-977	No permission on fragment (dbspace-name/partition-name).

The user does not have the required fragment-level privilege on the
table fragment. This message is always followed by another message that
identifies the privilege that the user lacks. If an INSERT statement
fails, the second message is -271. If an UPDATE statement fails, the
second message is -346. If a DELETE statement fails, the second message
is -240.


-978	No insert permission on the violations/diagnostics tables.

The user issued an INSERT, DELETE, or UPDATE statement on a table with
filtering-mode objects. The user receives this message because the user
lacks the INSERT privilege on the violations or diagnostics tables that
are associated with this table. The user must have the INSERT privilege
on the violations and diagnostics tables before the database server can
write rows into the violations and diagnostics tables for that user.

Similarly, if the user issued a SET statement to change the object mode
of a disabled constraint or a disabled unique index to the enabled or
filtering mode, and if a violations table has been started for the
target table, the user receives this message if the user lacks the
INSERT privilege on the violations or diagnostics table associated with
the target table.


-979	The current transaction has been rolled back due to an
internal error.

A server thread associated with your session has been suspended, most
likely because of a serious internal error. Evidence about the
problem has been gathered and written to an Assertion Failure file,
and your online log should contain more information.

Before suspending the session thread, the server attempted to roll
back all work performed by the current transaction. Your connection
to the server might also have been broken, depending on the type of
thread that was suspended. At a minimum, you will have to begin a
new transaction.

Contact IBM Technical Support and provide them with your
Assertion Failure file.


-999	Not implemented yet.

This error means the functionality being exercised is not currently
implemented. Check the documentation and release notes that
describe this current restriction in this particular release for this
product. If this condition is not described in the regular documentation
or the release notes and recurs, note all circumstances and
contact IBM Technical Support.


-1003	Invalid ACCEPTKEY set in the environment.

The key that the ACCEPTKEY environment variable specifies is not
decipherable; either it does not start with F, or it has an invalid
number. Specify a different key.


-1004	The selected ACCEPTKEY has been preassigned for ISQL.

The key that the ACCEPTKEY environment variable specifies is one that
IBM Informix SQL always uses. Set a different value in the environment
variable.


-1005	Your specified termcap file cannot be read.

The TERMCAP environment variable specifies a file that cannot be
opened. Either it does not exist, or your account does not have
operating-system permissions to read it. Check the environment variable
and the file that it names.


-1006	Error number.

The error code that is shown was returned, but the program could not
display the message text for that number, probably because one of the
.iem message files is missing from the directory that the INFORMIXDIR
environment variable specifies. Look up the number in the finderr utility.
Also consult with the person who installed the IBM Informix software to find
out why the message files are not available.


-1007	Invalid value for the INFORMIXTERM environment variable.

The only valid settings for the INFORMIXTERM environment variables are
termcap and terminfo. Setting the variable to termcap (or leaving it
undefined) directs 4GL to use the TERMCAP facility for terminal
control. Setting it to terminfo causes 4GL to use the TERMINFO
facility. Other settings, including variations of the words termcap and
terminfo with capital letters in them, cause this error.


-1008	Termcap entry too long.

The contents of the TERMCAP environment variable, or of the termcap
entry from the termcap database, are read into storage when the
application is initializing. However, the memory buffer that is
allocated to hold the termcap entry is 1,024 bytes, and the entry in
use is longer than that. Use a simpler termcap.


-1009	Bad termcap entry.

The contents of the TERMCAP environment variable, or of the termcap
entry from the termcap database, are read into storage when the
application is initializing. While the program was doing this, it found
improper punctuation in the termcap entry. A colon separator did not
appear where one was expected. Review the specified termcap, and choose
a different one or correct the one that is in use.


-1010	Too many tc= indirections.

In a termcap definition for a terminal, the entry tc= causes the use of
a definition for default values for a different terminal. That terminal
might also have a tc= entry, and so on. However, 4GL cannot follow more
than four tc= commands. The termcap definition in use at this time (as
the TERM or TERMCAP environment variable specifies) exceeds the limit.
Write or find a termcap definition that is more self contained.


-1101	Variable address is NULL.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-1102	Field name not found in form.

A field name listed in an INPUT, INPUT ARRAY, CONSTRUCT, SCROLL or
DISPLAY statement does not appear in the form specification of the
screen form that is currently displayed. Review the program logic to
ensure that the intended window is current, the intended form is
displayed in it, and all the field names in the statement are spelled
correctly.

A common problem is the attempted use of field tags instead of field
names. The field tag is the name that is written in the screen picture
and that appears at the left side of the ATTRIBUTES statement for that
field. It is not the name of the field for input or display purposes.
The field name is the column name with which it is associated. This
name appears to the right of the equal sign in the ATTRIBUTES section.

   ATTRIBUTES

   f000 = customer.customer_num,color=red;

The name of the field in the preceding example is customer_num. Use of
the tag f000 in an INPUT statement will produce an error.


-1103	This value is not among the valid possibilities.

A list or range of acceptable values has been established for this
column (via an INCLUDE attribute in the form-specification file). You
must enter a value within the acceptable range.

For 4GL programs, -1301 replaces this error.


-1104	The two entries were not the same. Try again.

To guard against typographical errors, this field has been designated
VERIFY (in the form specification file). The value in this field must
be entered twice, identically. Carefully reenter the data.
Alternatively, you can cancel the form entry with the Interrupt key
(usually CTRL-C, but see the operating instructions that the program
author supplied).

For 4GL programs, -1302 replaces this error.


-1105	You cannot use this editing feature because a picture exists.

This field is defined (in the form specification file) with a PICTURE
attribute to specify its format. You cannot use certain editing keys
(for example, CTRL-A, CTRL-D, and CTRL-X) while you are editing such a
field. Use only printable characters and the backspace to enter the
value.

For 4GL programs, -1303 replaces this error.


-1106	Error in field.

You entered a value in this field that cannot be stored in the program
variable that is meant to receive it. For example, possibly you entered
a decimal number when the application provided only an integer
variable, or you entered a character string that is longer than the
application expected. Note all the circumstances and then discuss the
problem with the person who wrote the application program.

For 4GL programs, -1304 replaces this error.


-1107	Field subscript out of bounds.

The subscript of a screen array in an INPUT, DISPLAY, or CONSTRUCT
statement is either less than 1 or greater than the number of fields in
the array. Review the program source in conjunction with the form
specification to see where the error lies.


-1108	Record not in form.

The screen record that is named in an INPUT ARRAY or DISPLAY ARRAY
statement does not appear in the screen form that is now displayed.
Review the program source in conjunction with the form specification to
see if the screen record names match.


-1109	List and record field counts differ.

The number of program variables does not agree with the number of
screen fields in a CONSTRUCT, INPUT, INPUT ARRAY, DISPLAY, or DISPLAY
ARRAY statement. Review the statement in conjunction with the form
specification to see where the error lies. Common problems include a
change in the definition of a screen record that is not reflected in
every statement that uses the record, and a change in a program record
that is not reflected in the form design.


-1110	Form file not found.

The form file that is specified in an OPEN FORM statement was not
found. Inspect the "form-file" parameter of the statement. It should
not include the file suffix.frm. However, if the form is not in the
current directory, it should include a complete path to the file.


-1111	Field table offset out of bounds.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-1112	A form is incompatible with the current 4GL version. Rebuild your form.

The form file that is specified in an OPEN FORM statement is not
acceptable. Possibly it was corrupted in some way, or it was compiled
with a version of the Form Compiler that is not compatible with the
version of the 4GL compiler that compiled this program. Use a current
version of the Form Compiler to recompile the form specification.


-1113	Memory allocation error.

A BYTE or TEXT variable has been located in memory, and a value has
been assigned to the variable. However, not enough data memory is
available to hold the variable. Review the program, and locate the
large value in a file instead.

For 4GL programs, -1319 replaces this error.


-1114	No form has been displayed.

The current statement requires the use of a screen form. For example,
DISPLAY...TO or an INPUT statement must use the fields of a form.
However, the DISPLAY FORM statement has not been executed since the
current window was opened. Review the program logic to ensure that it
opens and displays a form before it tries to use a form.


-1115	Numeric value too long for field.

4GL tried to format a numeric value for display in a form field, but
the resulting string was too long for the field. Review the program
logic to find out what large numeric value is being assigned.

For 4GL programs that were compiled at Version 5.0 and later or that
are running under 4GL/GX, this error cannot occur.


-1116	Default value from form field cannot be converted to
input variable type.

This statement takes input from a form field whose default value (which
the ATTRIBUTES keyword DEFAULT specifies in the form) is not compatible
with the program variable that receives it. Review all the program
variables that are named in this statement, and compare them to the
definitions of the fields in the form specification. Check that each
variable corresponds to the intended field and has a compatible data
type.


-1117	Cannot convert date value to string.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1119	NEXT FIELD name not found in form.

This statement (INPUT or INPUT ARRAY) contains a NEXT FIELD clause that
names a field that is not defined in the form. Perhaps the form has
been changed, but the program has not. Also see the note for error
message -1102.

For 4GL programs, -1371 replaces this error.


-1120	Message file not found.

The message file that is specified in the HELP FILE clause of the most
recent OPTIONS statement does not exist. Find that OPTIONS statement in
the program, and review the "help-file" parameter. It must contain the
complete filename of the prepared message file. If the file is not in
the current directory, it must have a full pathname. Message files are
prepared with the mkmessage utility.

For 4GL programs, -1227 replaces this error.


-1121	Message number not found in message file.

A message number that is given in the HELP clause of an INPUT, PROMPT,
or MENU statement cannot be found in the current message file. The
most- recently executed OPTIONS HELP FILE statement establishes the
message file. Find that statement in the program, and verify that the
message file is the one that you intended. Then review the source of
that message file, and ensure that it contains definitions for all the
message numbers that are used in the program. Recompile the message
file with the mkmessage utility, and try the program again.

For 4GL programs, -1228 replaces this error.


-1122	Incompatible message file.

The message file that is named in the most-recently executed OPTIONS
HELP FILE statement was not acceptable. Possibly it has been corrupted
in some way. Possibly the OPTIONS statement named the message source
file instead of the compiled message file (the output of mkmessage).
Possibly the file was compiled with an outdated version of the
mkmessage utility. Recompile the message file with the current version
of the utility, and review the program source to make sure that it
names the correct file.

For 4GL programs, -1229 replaces this error.


-1123	No help file specified.

This INPUT, PROMPT, or MENU statement contains a HELP help-number
clause; however, no message file has been established. The OPTIONS HELP
FILE statement establishes the message file, but none has yet been
executed. Review the program logic, and modify it to execute an
OPTIONS statement with a HELP FILE clause before it is needed.

For 4GL programs, -1343 replaces this error.


-1124	This field requires an entered value.

The cursor is in a form field that has been designated REQUIRED. You
must enter some value before the cursor can move on to another field.
However, to enter a null value, type any printable character and then
backspace. Alternatively, you can cancel the form entry with the
Interrupt key (usually CTRL-C, but see the operating instructions that
the program author supplied).

For 4GL programs, -1305 replaces this error.


-1125	Type again for verification.

The cursor is in a form field that has been designated VERIFY. You must
enter the value twice, identically, before the cursor can move on to
another field. This requirement helps to ensure that no typographical
errors occur during data entry. Alternatively, you can cancel form
entry with the Interrupt key (usually CTRL-C, but see the operating
instructions that the program author supplied).

For 4GL programs, -1306 replaces this error.


-1126	Cannot insert another row - the input array is full.

You are entering data into an array of records that is represented in
the program by an array of program variables. That array is now full;
no place is available to store another record. Press the ACCEPT key
(usually ESCAPE, but see the operating instructions that the program
author supplied) to process the records that you have entered.

For 4GL programs, -1307 replaces this error.


-1127	Cannot delete row - it has no data.

You pressed the Delete Row function key (usually F2, but see the
operating instructions that the program author supplied) in an empty
row. Nothing was deleted.

For 4GL programs, -1308 replaces this error.


-1128	There are no more rows in the direction you are going.

You are attempting to scroll an array of records farther than it can
go, either scrolling up at the top or scrolling down at the bottom of
the array. Further attempts will have the same result.

For 4GL programs, -1309 replaces this error.


-1129	Field in BEFORE/AFTER clause not found in form.

This statement includes a BEFORE FIELD clause or an AFTER FIELD clause
that names a field that is not defined in the form that is currently
displayed. Review the program to ensure that the intended form was
displayed, and review this statement against the form specification to
ensure that existing fields are named. Also see the note on field names
for error message -1102.


-1130	You cannot have multiple BEFORE clauses for the same field.

This statement includes at least two BEFORE FIELD clauses that name the
same form field. Only one is supported. Find all the BEFORE FIELD
clauses relate to one field, and combine them into a single clause.


-1131	You cannot have multiple AFTER clauses for the same field.

This statement includes at least two AFTER FIELD clauses that name the
same form field. Only one is supported. Find all the AFTER FIELD
clauses that relate to one field, and combine them into a single
clause.


-1132	The destination string of the CONSTRUCT statement is not large enough.

The outcome of a CONSTRUCT statement is a character string that
contains all the conditions that the user entered. This string is in a
form suitable for use as the WHERE clause of a SELECT statement. In
this CONSTRUCT statement, the result string is longer than the program
variable that is specified to receive it. As a general rule, the length
of the variable must allow enough room for the names of all the screen
fields that are used in the statement, plus room for the field contents
and for punctuation and relational operators. Review the statement,
and revise the definition of the receiving variable accordingly.


-1133	The NEXT OPTION name is not in the menu.

This MENU statement contains a NEXT OPTION clause that names a
menu-option that is not defined in the statement. The string that
follows NEXT OPTION must be identical to one that follows a COMMAND
clause in the same MENU statement. Review the statement to ensure that
these clauses agree with each other.


-1134	There is no termcap entry for this function key.

The key that is specified in one clause of this OPTIONS statement is
not defined in the termcap file (or the terminfo file if you are using
it instead). Review the HELP KEY, INSERT KEY, NEXT KEY, PREVIOUS KEY,
and DELETE KEY clauses. Compare the function keys that they specify to
the current termcap definition.


-1135	The row or column number in DISPLAY AT exceeds the limits of your
terminal.

Review the DISPLAY...AT statement. Make sure that the position numbers
are in the correct order (row number first, then column) and that they
make sense for the current terminal or window. The dimensions of the
terminal for UNIX systems are determined when the program starts by
reading termcap information (or terminfo information, depending on the
value of the INFORMIXTERM environment variable). A screen location that
is correct for one user of the program might not be correct for all. On
DOS systems, the window size is always 24 lines by 80 characters.


-1136	Window is too large to fit on the screen.

The window dimensions that are specified in the WITH clause of this
OPEN WINDOW statement conflict with the size of the screen. The entire
window cannot be displayed, so the statement is not executed. If the
WITH clause specifies dimensions, you can use smaller ones; if it
specifies a form, the SCREEN statement in the form specification sets
the dimensions. Alternatively, you might be able to get the window
into the screen by changing the origin that is provided in the AT
clause. The dimensions of the terminal for UNIX systems are determined
when the program starts by reading termcap information (or terminfo
information, depending on the value of the INFORMIXTERM environment
variable). Screen dimensions that are correct for one user of the
program might not be correct for all. On DOS systems, the window size
is always 24 lines by 80 characters.


-1137	Cannot open window.

The cause of the problem is a lack of data memory. Change the logic of
the program to keep fewer windows open concurrently, or use fewer
global variables.

For 4GL programs, -1319 replaces this error.


-1138	Border does not fit on screen. Window is too large.

The window that this OPEN WINDOW statement describes cannot be opened
because its border does not fit on the screen. Despite the wording of
the message, the window is not necessarily too large for the screen.
However, one or more of its borders (top, bottom, left, or right)
cannot be drawn. The position of the window is set in the OPEN WINDOWS
statement; check that it starts no higher than row 2 and no farther
left than column 2 (or else remove the BORDER attribute). The OPEN
WINDOW statement or the form that it names sets the size of the
window.

The dimensions of the terminal for UNIX systems are determined when the
program starts by reading termcap information (or terminfo information,
depending on the value of the INFORMIXTERM environment variable). If
the termcap entry includes sg#1 (terminfo: xmc#1), 4GL reserves an
additional column to the left and right of a bordered window. On DOS
systems, the window size is always 24 lines by 80 characters.


-1139	Form line cannot be set using LAST keyword.

This OPTIONS statement includes a FORM LINE clause that uses LAST. You
can specify an absolute form line or one relative to FIRST, but you
cannot specify it relative to LAST.


-1140	NEXT OPTION is a hidden option.

The option that is named in this NEXT OPTION statement has previously
been hidden with the HIDE OPTION statement. Because it is not visible
to the user, it cannot be highlighted as the next choice.


-1141	Cannot close window with active INPUT, DISPLAY ARRAY, or MENU statement.

This CLOSE WINDOW statement cannot be executed because an input
operation is still active in that window. The CLOSE WINDOW statement
must have been contained in, or called from within, the input statement
itself. Review the program logic, and revise it so that the statement
completes before the window is closed.


-1142	Window is too small to display this form.

The window dimensions of the current window are too small to contain
the form that is to be displayed. Review the window dimensions, and
compare them to all forms that will be displayed in that window. The
dimensions of the form are established in the form-specification file
with the SCREEN statement. The dimensions of the window are set during
the OPEN WINDOW statement, either directly or by opening the window
WITH a particular form.


-1143	Window is already open.

This OPEN WINDOW statement names a window that is already open. Review
the program logic, and see whether it should contain a CLOSE WINDOW
statement, or whether it should simply use a CURRENT WINDOW statement
to bring the open window to the top.


-1144	Cannot open window. Window origin is not on the screen.

The row and column position in the AT clause of this OPEN WINDOW
statement points off the physical screen. The statement is not
executed. Review the program, and check that the numbers are in the
correct order (first row, then column). The dimensions of the terminal
are determined when the program starts by reading termcap information
(or terminfo information, depending on the value of the INFORMIXTERM
environment variable), so a window origin that is correct for some
users might not be correct for all.


-1145	Cannot open ERROR window.

4GL attempted to open a one-line, 80-column window in which to display
an error message but was not able to do so. Possible causes include a
shortage of data memory and internal errors.

For 4GL programs, -1319 replaces this error.


-1146	PROMPT message is too long to fit in the window.

Although 4GL truncates the output of MESSAGE and COMMENT to fit the
window dimensions, it does not do so for PROMPT and the user's
response. Reduce the length of the prompt string, or make the window
larger. You could display most of the prompting text with DISPLAY and
then prompt with a single space or colon.


-1147	You cannot CLOSE, CLEAR or make CURRENT an unopened window.

This CLOSE WINDOW, CLEAR WINDOW, or CURRENT WINDOW statement names a
window that has not been opened or has been closed. Review the program
logic to ensure that it does not refer to an unopened window except to
open it.


-1148	Size of a window may not be negative.

The AT clause of this OPEN WINDOW statement uses a negative number. The
row and column sizes must be positive integers. Revise the statement.


-1149	An unknown code has been detected in the form.

The screen form that is currently displayed is unacceptable in some
way. Possibly it has been corrupted; possibly it was compiled by an
obsolete version of form4gl. Recompile the form. If the problem recurs,
note all circumstances and contact IBM Technical Support.


-1150	Window is too small to display this menu.

Review the OPEN WINDOW statement for the current window in conjunction
with this MENU statement. The window must be at least two rows tall,
and it must be wide enough to display the menu title, the longest
option name, two sets of three-dot ellipses, and six spaces. Revise the
program to make the window larger or to give the menu a shorter name
and shorter options.


-1151	IBM Informix 4GL Run Time Facility.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1152	Enter value in range.

This error message is a version of message -1103/-1301, which is used
by IBM Informix 4GL/RF with handheld terminals that have very small
screens. See message -1103.


-1153	Bad verify -- reenter.

This message is a version of message -1104/-1302, which is used by
IBM Informix 4GL/RF with handheld terminals that have very small screens.
See message -1104.


-1154	Cannot use edit key.

This message is a version of message -1105/-1303, which is used by
IBM Informix 4GL/RF with handheld terminals that have very small screens.
See message -1105.


-1155	Enter value in field.

This message is a version of message -1124/-1305, which is used by
IBM Informix 4GL/RF with handheld terminals that have very small screens.
See message -1124.


-1156	Enter value again.

This message is a version of message -1125/-1306, which is used by
IBM Informix 4GL/RF with handheld terminals that have very small screens.
See message -1125.


-1157	No more rows.

This message is a version of message -1127/-1309, which is used by
IBM Informix 4GL/RF with handheld terminals that have very small screens.
See message -1127.


-1158	FMP has run out of memory.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1159	FMP has exceeded its number of concurrent INPUT statements.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1160	FMP has exceeded its number of concurrent DISPLAY ARRAY statements.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1161	FMP currently is not in the midst of an INPUT statement.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1162	FMP has exceeded the number of concurrently open forms.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1163	The FMP version number is incompatible with the 4GL program. Relink
the 4GL program and run again.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1164	A NEXT FIELD specified in the instructions section of the form is
not used within the current input statement.

The current form field has a NEXT FIELD specification (in the
INSTRUCTIONS section of the form). However, the specified next field is
not named in the current INPUT statement, so the cursor cannot move to
that field.


-1165	This statement is not allowed for the FMP.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1166	An illegal code has been received from the FMP.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1167	An unknown form name has been received by the FMP.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1168	Command does not appear in the menu.

The SHOW OPTION, HIDE OPTION, or NEXT OPTION statement cannot refer to
an option (command) that does not exist. Check the spelling of the name
of the option.


-1170	The type of your terminal is unknown to the system.

Check the setting of your TERM environment variable and the setting of
your TERMCAP or TERMINFO environment variable. Check with your system
administrator if you need help with this action.


-1171	A disallowed data type has been encountered by the FMP.

FMP refers to IBM Informix 4GL/RF. See the installation documentation for
your system.


-1176	A COMMAND KEY value occurs elsewhere in the current menu.

In the indicated MENU statement, you defined a key value in more than
one COMMAND KEY keylist or both in a COMMAND KEY keylist and as the
default activation key for one or more nonhidden COMMAND clauses (for
example, that key value is also the first character of one or more
menu-option strings). This condition is illegal because MENU has no way
to resolve what to do if the given keystroke occurs.

A given key might appear as the default activation key for more than
one COMMAND (without the KEY clause) because the user will be prompted
for subsequent keystrokes until a unique string is obtained. This
action is not possible with COMMAND KEY because only one keystroke is
compared.

If a COMMAND is currently hidden (by using the HIDE OPTION keywords),
its default activation key is ignored and does not trigger this
particular error condition.

-1200	Number is too large for a DECIMAL data type.

The float DECIMAL data type accommodates numbers greater than or equal to
1.000E-130 and less than 1.000E+126 in absolute value. The precision
(number of significant digits) varies from 1 to 32; however, the source
of this error is not the length of the number but its magnitude.


-1201	Number is too small for a DECIMAL data type.

The DECIMAL data type accommodates numbers greater than or equal to
1.000E-130 and less than 1.000E+126 in absolute value. The precision (number
of significant digits) varies from 1 to 32; however, the source of this
error is not the length of the number but its magnitude.


-1202	An attempt was made to divide by zero.

Zero cannot be a divisor. In some cases, this error arises because the
divisor is a character value that does not convert properly to
numeric.


-1203	Values used in a MATCH must both be type CHARACTER.

The MATCHES relationship applies only to character data; both of its
operands must be CHAR or VARCHAR columns or variables, or literal
character strings. If you need to apply a regular-expression pattern
match to a numeric value, you can do so in 4GL. Assign the numeric
value to a CHAR variable, and test that variable.


-1204	Invalid year in date.

The year in a DATE value or literal is invalid. For example, the
number 0000 is not acceptable as the year.


-1205	Invalid month in date.

The month in a DATE value or literal must be a one- or two-digit number
from 1 to 12.


-1206	Invalid day in date.

The day number in a DATE value or literal must a one- or two-digit number
from 1 to 28 (or 29 in a leap year), 30, or 31, depending on the month that
accompanies it.


-1207	Converted value does not fit into the allotted space.

A noncharacter value, after conversion to a character string, is too
long to fit in the buffer that was provided.

If the conversion was automatic, change the program to provide a larger
host variable to receive the string.

If this action was an explicit call to conversion function, pass a
larger buffer.


-1208	There is no conversion from non-character values to character values.

If you are using a database server prior to Version 4.0, no automatic
conversion from numeric values to character values occurs in SQL
statements such as INSERT and UPDATE. Check that the specified value
for each column agrees with the data type of that column. If you use a
Version 4.0 or later database server, this message should not appear.


-1209	Without any delimiters, this date must contain exactly 6 or 8 digits.

When a literal date value is entered in numeric form, not enclosed in
quotes to make it a character string, it must be entered as a number of
precisely 6 digits (representing mmddyy) or 8 digits (representing
mmddyyyy). Because no punctuation is present, a date with any other
number of digits is ambiguous; it cannot be divided into month, day,
and year with certainty.


-1210	Date could not be converted to month/day/year format.

The DATE type is compatible with the INTEGER type, but not all integer
values are valid dates. This error arises in attempts to convert to
character from a date whose numeric value is less than -693,594 or
greater than 2,958,464. Numbers that are outside this range have no
representation as dates.

You may also see this message if you try to use the VARIANCE() or
STDEV() functions on an inappropriate data type, such as DATE.


-1211	Out of memory.

4GL cannot allocate memory for a small, temporary work area that is
used for processing an expression. To avoid this error, simplify the
program in almost any way to release enough space


-1212	Date conversion format must contain a month, day, and year component.

When a date value is converted between internal binary format and
display or entry format, a pattern directs the conversion. When
conversion is done automatically, the pattern comes from the
environment variable DBDATE. When it is done with an explicit call to
the rfmtdate(), rdefmtdate(), or USING functions, a pattern string is
passed as a parameter. In any case, the pattern string (the format of
the message) must include letters that show the location of the three
parts of the date: 2 or 3 letters d; 2 or 3 letters m; and either 2 or 4
letters y.


-1213	A character to numeric conversion process failed.

A character value is being converted to numeric form for storage in a
numeric column or variable. However, the character string cannot be
interpreted as a number. It contains some characters other than white
space, digits, a sign, a decimal, or the letter e; or the parts are in
the wrong order, so the number cannot be deciphered.

If you are using NLS, the decimal character or thousands separator
might be wrong for your locale.


-1214	Value too large to fit in a SMALLINT.

The SMALLINT data type can accept numbers with absolute values from 0
through 32,767 (plus or minus (2 to the 15th power) - 1). To store
numbers that are outside this range, redefine the column or variable to
use INTEGER or DECIMAL type. (The value -32,768 is a 16-bit value but
is not acceptable; it indicates a null value in 4GL.)


-1215	Value too large to fit in an INTEGER.

The INTEGER or SERIAL data type can accept numbers with absolute values
from 0 through 2,147,483,647 (plus or minus (2 to the 31st power) - 1).

To store numbers that are outside this range, redefine the column or
variable to use the BIGINT or BIGSERIAL or INT8 or SERIAL8 data type 
or the DECIMAL data type.  For more information on valid ranges of 
data types, see the IBM Informix Guide to SQL: Reference.


-1216	Illegal exponent.

The exponent of a numeric literal cannot exceed 32,767. In fact, none
of the available data types can accommodate an exponent that large.
However, the exponent itself triggers this message before checking the
destination of the number. Check the statement for missing or misplaced
punctuation that might have caused two numbers to run together.


-1217	The format string is too large.

The pattern string that is used to format a date (either the DBDATE
environment variable or the pattern that is passed to rfmtdate() or the
USING function) is too long. The limit is 80 bytes.


-1218	String to date conversion error.

The input to the rstrdate() function does not properly represent a
date: either it has nondigits where digits are expected, an unexpected
delimiter, or numbers that are too large or are inconsistent.


-1219	Numeric value from database is too large for COBOL data item.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1220	Numeric value from database is too small for COBOL data item.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1221	Cannot convert null data types.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1222	Value will not fit in a SMALLFLOAT.

The SMALLFLOAT data type can accept numbers within a certain range of
exponents. The maximum and minimum exponent values are different
depending on the host operating system (the range is the same as that
supported by the C compiler for float values in this system). In the
current statement, a constant number is being converted for storage in
a FLOAT variable or column, and the exponent is too large or too
small.


-1223	Value will not fit in a FLOAT.

The FLOAT data type can accept numbers within a certain range of
exponents. The maximum and minimum exponent values are different
depending on the host operating system (the range is the same as that
supported by the C compiler for double values in this host system). In
the current statement, a constant number is being converted for storage
in a FLOAT variable or column, and the exponent is too large or too
small.


-1224	Invalid decimal number.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1225	Column does not admit a NULL value.

This statement attempted to store a null value in a column that has
been defined as not allowing nulls. Review the definition of the table,
and revise the statement so that it supplies values for all required
columns.


-1226	Decimal or money value exceeds maximum precision.

The client is attempting to convert a number into a DECIMAL or MONEY variable.
However, the number has more digits to the left of the decimal
point than the declaration of the variable allows. Revise the program to
assign the converted number to a variable with an appropriate precision. 


-1227	Message file not found.

4GL cannot locate a file of message texts. The file should have a
suffix of .iem and be in the product directory, $INFORMIXDIR/msg.
Reinstall such files from the distribution materials. If you have
started to modify the user-message file, 4glusr.msg, check that its
compiled form has been replaced in the correct directory.


-1228	Message number not found in message file.

4GL cannot find a message number that should appear in a message file
that was installed with the product. Reinstall all files of type .iem
from the distribution materials. If you have modified the contents of
the file, 4glusr.msg, review all deletions that you might have made,
and recompile that file.


-1229	Incompatible message file.

4GL is trying to look up a message text in a message file, but the file
contents do not match the current version of the product. Possibly the
file is corrupt; possibly a message file from a prior version is present.
The file has a suffix of .iem and exists in the etc subdirectory of the
path that the INFORMIXDIR environment variable identifies. Reinstall such
files from the distribution materials. If you have started to modify the
user-message file, 4glusr.msg, make sure that you are recompiling it with
a current version of the mkmessage utility.


-1230	Bad message file name formulation.

An invalid filename has been supplied for the message file that is used
for displaying error messages such as the ones in this book, so the
file cannot be opened. Check the value of the DBLANG environment
variable, if one is specified.


-1231	Cannot seek within message file.

The application is trying to look up a message text in a message file
but receives an error code when it tries to position within the file.
This situation indicates some problem with the file itself; possibly it
has been corrupted or truncated. Reinstall all files of type .iem from
the distribution materials. If you have modified the user-message file,
4glusr.msg, recompile it as well.


-1232	Message buffer too small.

4GL is reading a message text from a compiled message file but cannot
resize the buffer to be large enough to hold the complete message. This
situation might indicate a critical shortage of data space, but more
probably it indicates a corrupted or invalid message file. Reinstall
all files of type .iem from the distribution materials. If you have
modified the user-message file, 4glusr.msg, recompile it as well.


-1233	Invalid hour, minute, or second.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1234	Function may be applied only to datetime data types.

This message is not believed to be in use in any current product. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1235	Character host variable is too short for the data.

In an ESQL/C program, the program has attempted to fetch a column value
into a host variable that is not large enough. Use the DESCRIBE command
to find out the sizes of column values.

If this error arises in a 4GL program, note all circumstances
and contact IBM Technical Support.


-1236	Bad era date.

The era name or the era offset that is given in the input string is
invalid or has not been entered in the required format. Check that the
era name and offset are valid and in the proper order in the input
string. Check the format against the value of DBTIME, DBDATE, or the
format string passed to the SQL API function, whichever is
appropriate.


-1237	Bad era name.

The date format requires an era name, but no name that matches the era
names in the GLS locale could be found in the input string. Check that
you are using the correct locale and that you entered the era name
correctly.


-1238	Bad era initialization.

Contact IBM Technical Support regarding this internal error.


-1239	Era year overflow.

The era offset that is given is not within the range for the era that
is specified. Check that the era offset is within the valid range for
the era that is specified.


-1250	Unable to create pipes.

Your application is using an operating-system facility called a pipe to
initialize its communication with the database server. The operating
system returned an unexpected error. Look for operating-system error
messages that might give more information.


-1251	Unable to create shared memory. semget failed.

Your application is initializing its communication with the database
server, which is a version that uses shared memory for communications.
An unexpected error has occurred with an operating-system function,
semget. Look for operating-system messages that might give more
information. Consult with the person who installed the IBM Informix
shared-memory product.


-1252	Unable to create shared memory. shmget failed.

Your application is initializing its communication with the database
server, which is a version that uses shared memory for communications.
An unexpected error has occurred with an operating-system function,
shmget. Look for operating-system messages that might give more
information. Consult with the person who installed the IBM Informix
shared-memory product.


-1254	Unable to connect to remote host.

The program is attempting to open a database that a database server in
another system manages, but it could not open a network connection to
the other system. Check the site name that the DATABASE or CREATE
DATABASE statement specifies. If it is as you intended, look for other
error messages from the networking component or the operating system.
Contact the operator of the other system to verify that it is active
and accepting network connections.


-1257	Operating system cannot fork process for back end.

Back end refers to the database server. If this is an internal error, look
for operating-system messages that might give more detail. In DOS
systems, you probably are out of memory; exit to the operating-system
command line, and resubmit your program. After you verify that no
system limit or local problem exists, note all circumstances and
contact IBM Software Support.


-1258	Cannot attach to shared memory used to communicate with back end.

Back end refers to the database server. In this internal error, look
for operating-system messages that might give more detail. After you
verify that no system limit or local problem exists, note all
circumstances and contact IBM Technical Support.


-1260	It is not possible to convert between the specified types.

The database server attempts any data conversion that makes sense. Some
conversions, however, are not supported, such as INTERVAL to DATE, DATETIME
to MONEY, CHAR to LIST, or CHAR to SET. Possibly you referenced the wrong
variable or column. Check that you have specified the data types that you
intended and that literal representations of data values are correctly
formatted.


-1261	Too many digits in the first field of datetime or interval.

The first field of a DATETIME literal must contain either 1 or 2 digits
(if it is not a YEAR) or else 2 or 4 digits (if it is a YEAR). The
first field of an INTERVAL literal represents a count of units and can
have up to 9 digits, depending on the precision that is specified in
its qualifier. Review the DATETIME and INTERVAL literals in this
statement, and correct them.


-1262	Non-numeric character in datetime or interval.

The form of a DATETIME or INTERVAL literal is very limited. One can
contain only decimal digits and the allowed delimiters: the hyphen
between year, month, and day numbers; the space between day and hour;
the colon between hour, minute, and second; and the decimal point
between second and fraction. Any other characters, or these characters
in the wrong order, produce an error.


-1263	A field in a datetime or interval is out of range, incorrect, or missing.

Inspect the DATE, DATETIME, and INTERVAL literals in this statement;
at least one of them contains at least one incorrect field or is missing
at least one field.

In a DATE or DATETIME literal, the year might be zero, the month might be other
than 1 to 12, or the day might be other than 1 to 31 or inappropriate for the
month. Also in a DATETIME literal, the hour might be other than 0 to 23, the
minute or second might be other than 0 to 59, or the fraction might have too
many digits for the specified precision.

In an INTERVAL literal, the constraints are the same except that the
first field is a count and can have as many digits as the qualifier
specifies.


-1264	Extra characters at the end of a datetime or interval.

Only spaces can follow a DATETIME or INTERVAL literal. Inspect this
statement for missing or incorrect punctuation.


-1265	Overflow occurred on a datetime or interval operation.

Both DATETIME and INTERVAL values are stored internally as DECIMAL
values. In this statement, an arithmetic operation that uses DATETIME
and/or INTERVAL values has caused an arithmetic overflow. This
situation should not occur. Check the precision that is specified for
an INTERVAL value. If the INTERVAL value that you want to enter is
greater than the default number of digits that are allowed for that
field, you must explicitly identify the number of significant digits in
your definition. If the error recurs, note all circumstances and
contact IBM Technical Support.


-1266	Intervals or Datetimes are incompatible for the operation.

Some arithmetic combinations of DATETIME, INTERVAL, and numeric values
are meaningless and are not allowed. Review the arithmetic expressions
in this statement. Possibly one of them is using a DATETIME or INTERVAL
column or variable by mistake. If not, see your SQL reference material
for the valid use of these data types.


-1267	The result of a datetime computation is out of range.

In this statement, a DATETIME computation produced a value that cannot be
stored. This situation can occur, for example, if a large interval is added
to a DATETIME value. This error can also occur if the resultant date does
not exist, such as Feb 29, 1999.

Review the expressions in the statement and see if you can change the
sequence of operations to avoid the overflow.


-1268	Invalid datetime or interval qualifier.

This statement contains a DATETIME or INTERVAL qualifier that is not
acceptable. These qualifiers can contain only the words YEAR, MONTH,
DAY, HOUR, MINUTE, SECOND, FRACTION, and TO. A number from 1 to 5 in
parentheses can follow FRACTION. Inspect the statement for missing
punctuation and misspelled words. A common error is adding an s, as in
MINUTES.


-1269	Locator conversion error.

This message was issued because a function that requires an argument
that is a locator (a reference to a BYTE or TEXT value) received
something other than a valid locator (such as a NULL parameter, or an
argument of any other data type).

Review the program logic to make sure the arguments are correct.


-1270	Interval literal may not have embedded minus sign.

You can use a minus sign as an arithmetic operator between an INTERVAL
literal and other values, and you can use a minus sign as a prefix to
an INTERVAL literal to indicate it is a negative quantity. However, you
cannot embed a minus sign among the fields of the literal. If you did
not intend to do this, inspect the statement for missing or misplaced
punctuation.


-1271	Missing decimal point in datetime or interval fraction.

A decimal point is expected to appear in a DATETIME or INTERVAL literal
when the qualifier of the literal contains the word FRACTION. This
statement has such a literal, but no decimal point was found. Inspect
the literal qualifiers for missing or misplaced punctuation.


-1272	No input buffer has been specified.

You have not specified an input string for this function, so the
conversion cannot proceed. Set the input-string argument, and call the
function again. (This function might require that you define
formatting directives with the DBTIME environment variable.)


-1273	Output buffer is NULL or too small to hold the result.

This error is returned when the function is called and the address
space for the output buffer is null or smaller than the format-string
length. Redefine the size of the address, and execute the function
again. (This function might require that you define formatting
directives with the DBTIME environment variable.)


-1274	No output buffer has been specified.

The output buffer length is zero, or the buffer pointer is a null
pointer. Database servers after Version 5.01 do not use this error
message.


-1275	Invalid field width or precision in datetime or interval format string.

The field width or precision in DATETIME or INTERVAL format
specification must make sense. The field width must be a decimal
number, with a leading zero or minus ( - ) sign. If a precision
specification is present, it must also be decimal, separated from the
field-width specification by a period.


-1276	Format conversion character not supported.

A format conversion character in the format string is not valid. Check
the string against the table of format conversion directives for
DATETIME and INTERVAL format conversion functions in the manual for
your embedded language product. See also the discussion of the DBTIME
environment variable in the IBM Informix Guide to SQL:
Reference.


-1277	Input does not match format specification.

Check that the ASCII string that contains a DATETIME or INTERVAL value
conforms to the format string. For example, a percent character in a
DATETIME or INTERVAL ASCII string must have a matching "%%" sequence in the
format string. See also the discussion of the DBTIME environment variable in
the IBM Informix Guide to SQL: Reference.

If you are using the ROUND() or TRUNC() build-in functions on DATE or DATETIME
data types, note that the list of supported values for the second parameter
is "YEAR", "MONTH", "DAY", "DD", "HH" or "MI".  Please refer to the discussion
on "Algebraic Functions" in the IBM Informix Guide to SQL: Syntax for the
details.


-1278	Invalid escape sequence.

Check the pattern-matching string that the LIKE or MATCHES clause of
the statement specifies. In an ANSI database, the only valid characters
that can be escaped are: %, _, and the escape character for the LIKE
clause, and *, ?, [, ], and the escape character for the MATCHES
clause.


-1279	Value exceeds string column length.

This message applies only to ANSI databases. You attempted to insert into a
CHAR, NCHAR, VARCHAR, NVARCHAR or LVARCHAR column using a string host
variable, but the string is too long.


-1280	Library API incompatibility found in libgen.so.

The libgen.so shared library compiled with your client application is
incompatible with the version in the $INFORMIXDIR/lib directory.
Recompile your application with INFORMIXDIR set to the path of the new
libgen.so shared library.


-1281	Library API incompatibility found in libos.so.

The libos.so shared library compiled with your client application is
incompatible with the version in the $INFORMIXDIR/lib directory.
Recompile your application with INFORMIXDIR set to the path of the new
libos.so shared library.


-1282	Library API incompatibility found in libsql.so.

The libsql.so shared library compiled with your client application is
incompatible with the version in the $INFORMIXDIR/lib directory.
Recompile your application with INFORMIXDIR set to the path of the new
libsql.so shared library.


-1283	Library API incompatibility found in libgls.so.

The libgls.so shared library compiled with your client application is
incompatible with the version in the $INFORMIXDIR/lib directory.
Recompile your application with INFORMIXDIR set to the path of the new
libgls.so shared library.


-1284	Value will not fit in a BIGINT or an INT8.

The BIGINT or BIGSERIAL or INT8 or SERIAL8 data type can accept numbers 
with absolute values from 0 through 9,223,372,036,854,775,807 (plus or 
minus (2 to the 63rd power) - 1).

To store numbers that are outside this range, redefine the column or
variable to use the DECIMAL data type. For more information on valid
ranges of data types, see the IBM Informix Guide to SQL: Reference.


-1285	Internal error: data type unknown.

If this internal error recurs, please note all circumstances and
contact IBM Technical Support.


-1301	This value is not among the valid possibilities.

A list or range of acceptable values has been established for this
column (via an INCLUDE attribute in the form-specification file). You
must enter a value within the acceptable range.


-1302	The two entries were not the same. Try again.

To guard against typographical errors, this field has been designated
VERIFY (in the form-specification file). You must enter the value in
this field twice, identically. Carefully reenter the data.
Alternatively, you can cancel the form entry with the Interrupt key
(usually CTRL-C, but see the operating instructions that the program
author supplied).


-1303	You cannot use this editing feature because a picture exists.

This field is defined (in the form-specification file) with a PICTURE
attribute to specify its format. You cannot use certain editing keys
(for example, CTRL-A, CTRL-D, and CTRL-X) while you are editing such a
field. Use only printable characters and backspace to enter the value.


-1304	Error in field.

You entered a value in this field that cannot be stored in the program
variable that is meant to receive it. For example, possibly you entered
a decimal number when the application provided only an integer
variable, or you entered a character string that is longer than the
application expected. Note all the circumstances and then discuss the
problem with the person who wrote the application program.


-1305	This field requires an entered value.

The cursor is in a form field that has been designated REQUIRED. You
must enter some value before the cursor can move to another field. To
enter a null value, type any printable character and then backspace.
Alternatively, you can cancel the form entry with the Interrupt key
(usually CTRL-C, but see the operating instructions that the program
author supplied).


-1306	Type again for verification.

The cursor is in a form field that has been designated VERIFY. You must
enter the value twice, identically, before the cursor can move to
another field. This procedure helps to ensure that no typographical
errors occur during data entry. Alternatively, you can cancel the form
entry with the Interrupt key (usually CTRL-C, but see the operating
instructions that the program author supplied).


-1307	Cannot insert another row - the input array is full.

You are entering data into an array of records that is represented in
the program by an array of program variables. That array is now full;
no place is available to store another record. Press the ACCEPT key
(usually ESCAPE, but see the operating instructions that the program
author supplied) to process the records that you have entered.


-1308	Cannot delete row - it has no data.

You pressed the Delete Row function key (usually F2, but see the
operating instructions that the program author supplied) in an empty
row. Nothing was deleted.


-1309	There are no more rows in the direction you are going.

You are attempting to scroll an array of records farther than it can
go, either scrolling up at the top or scrolling down at the bottom of
the array. Further attempts will have the same result.


-1310	Exiting the current function without executing a RETURN statement.

The current function does not return void but is about to exit without
executing a RETURN statement.


-1312	FORMS statement error number number.

A problem exists with a screen form. Look up error number in this
document. Consider it in relation to the current statement.


-1313	SQL statement error number number.

The current statement calls on the database server that detected an
error and returned an error code number. Look up number in this
document. Also look for other error messages.


-1314	Program stopped at statement, line number line.

At the indicated point in the program, an error was detected. Look for
other error messages that give details of the error. Use the numbers in
this message to locate the error in the program source file.


-1315	4GL run-time error number number.

The program stopped because an error was detected. Look up error code
number in this document. Also look for other error messages for more
details.


-1316	ISAM error number number.

The current statement called on the database server, which detected an
error (probably reported in a display of error -1313). This message
contains additional detail on the cause of the error. Look up number in
this document.


-1317	A numeric conversion error has occurred due to incompatibility
between a calling program and its function parameters or between a variable
and its assigned expression.

4GL converts between one data type and another automatically whenever
it can do so without losing information. In the current statement, it
could not do so. Look first for function calls, and inspect the values
that are passed as parameters. Check that the values that are passed
agree in type with the parameters as they are defined in the function
bodies. (An example of such an error would be calling a function
fun("X") when within the function its parameter was defined as an
integer.) If the statement is a LET statement, check that the value
that is computed on the right can be accommodated in the variable that
is named on the left.


-1318	A parameter count mismatch has occurred between the calling function
and the called function.

Either too many or too few parameters were given in the call to the
function. The call is probably in a different source module from the
called functions. Inspect the definition of the function, and check
all places where it is called to ensure that they use the number of
parameters that it declares.


-1319	The 4GL program has run out of runtime data space memory.

You must reduce the data space that the program requires. Review the
size of large character variables and the dimensions of arrays. You
might need to split the program into separate programs that load
separately, if that is possible.


-1320	A function has not returned the correct number of values expected
by the calling function.

If the function was invoked as part of an expression, then it returned
more than one value. If a CALL invoked it, the number of expressions
that follow the RETURN statement (in the function) was different from
the number of variables that are listed in the RETURNING clause (in the
CALL statement).

Check that the correct function was called. Review the logic of the
function, especially its RETURN statements, to ensure that it always
returns the expected number of values.


-1321	A validation error has occurred as a result of the VALIDATE command.

The VALIDATE statement tests the current value of variables against
rules that are stored in the syscolval table. It has detected a
mismatch. Ordinarily, the program would use the WHENEVER statement to
trap this error and display or correct the erroneous values. Inspect
the VALIDATE statement to see which variables were being tested and
find out why they were wrong.


-1322	A report output file cannot be opened.

The file that the REPORT TO statement specifies cannot be opened. Check
that your account has permission to write such a file, that the disk is
not full, and that you have not exceeded some limit on the number of
open files.


-1323	A report output pipe cannot be opened.

The pipe that the REPORT TO PIPE statement specifies could not be
started. Check that all programs that are named in it exist and are
accessible from your execution path. Also look for operating-system
messages that might give more specific errors.


-1324	A report output file cannot be written to.

The file that the REPORT TO statement specifies was opened, but an
error occurred while writing to it. Possibly the disk is full. Look for
operating- system messages that might give more information.


-1326	An array variable has been referenced outside of its specified
dimensions.

The subscript expression for an array has produced a number that is
either less than one or greater than the number of elements in the
array. Review the program logic that leads up to this statement to
determine how the error was made.


-1327	An insert statement could not be prepared for inserting rows into
a temporary table used for a report.

Within the report function, 4GL generated an SQL statement to save rows
into a temporary table. The dynamic preparation of the statement (see
the reference material on the PREPARE statement) produced an error.
Probably the database tables are not defined now, at execution time, as
they were when the program was compiled. Either the database has been
changed, or the program has selected a different database than the one
that was current during compilation. Possibly the database
administrator has revoked SELECT privilege from you for one or more of
the tables that the report uses. Look for other error messages that
might give more details.


-1328	A temporary table needed for a report could not be created in
the selected database. The user must have permission to create tables in
the selected database.

Within the report definition, 4GL generated an SQL statement to save
rows into a temporary table, but the temporary table could not be
created. Probably no disk space is left in the database, or you
already have a table in your current database with the same name as the
temporary table that the report definition is attempting to create as a
sorting table.

Another possible cause is that the report name is too long. It should be 16
characters or fewer if your database server allows only table names
up to 18 characters long, to leave room for the "t_" prefix.

The sorting table is named "t_reportname". For example, a report named
"order_rpt" would name its sorting table "t_order_rpt". Users should
avoid beginning table names with "t_".

Another possible cause of this error with some database servers is that
you have exceeded an operating-system limit on open files.

Look for other error messages that might give more details.


-1329	A database index could not be created for a temporary database
table needed for a report.

Within the report definition, 4GL generated SQL statements to save rows
into a temporary table. However, an index could not be created on the
temporary table. Probably an index with the same name already exists in
the database. (The sorting index is named "i_reportname"; for example,
"i_order_rpt".) Possibly no disk space is available in the file system
or dbspace. Another possibility with some database servers is that you
have exceeded an operating-system limit on open files. Look for other
error messages that might give more details.


-1330	A row could not be inserted into a temporary report table.

Within the report definition, 4GL generated SQL statements that would
save rows into a temporary table. However, an error occurred while rows
were being inserted. Probably no disk space is left in the database.
Look for other error messages that might give more details.


-1331	A row could not be fetched from a temporary report table.

Within the report definition, 4GL generated SQL statements to select
rows from a temporary table. The table was built successfully but now
an error occurred while rows were being retrieved from it. Almost the
only possible cause is a hardware failure or an error in the database
server. Check for operating-system messages that might give more
details.


-1332	A character variable has referenced subscripts that are out of range.

In the current statement, a variable that is used in taking a substring
of a character value contains a number less than one or a number
greater than the size of the variable, or the first substring
expression is larger than the second. Review the program logic that
leads up to this statement to find the cause of the error.


-1333	Strings of length > 512 cannot be returned from function calls.

The current RETURN statement contains an expression that evaluates to a
character string longer than 512 characters. This situation is not
supported. Review the logic of the function, and modify it so that it
does not return such a long character value. You can assign a longer
string to a global variable.


-1334	The 4GL program cannot allocate any more space for temporary
string storage.

You should not see this message from a program that is compiled at a
version later than Version 4.1; however, programs that are compiled by
4GL Version 4.1 and earlier must deal with this issue.

Temporary string storage is used while evaluating a character
expression. It is allocated by a simple algorithm from a fixed-size
buffer. Space in this buffer is not reclaimed until the last pending
character expression is finished. Because most expressions complete
immediately, the string buffer is normally emptied as fast as it is
used.

However, when expressions involve function calls, expression evaluation
is suspended during the function call. The buffer is not cleared until
the function returns. For example, temporary space is used for the
literal "###" and the result of the USING operator in the following
statement:

LET charvar = numvar USING '###', myfunc()

These pending values remain in the string buffer for the duration of
the call to myfunc(). If the aggregate total of all temporary character
values that are used during the evaluation of myfunc() and its
sub-functions exceeds the buffer size, this error occurs.

You can usually prevent the error by isolating function calls in
separate statements, as in the following example:

LET charvar = myfunc()
LET charvar = numvar USING '###', charvar clipped

The string buffer is free during the call to myfunc() in the first
statement and free again as soon as the second statement completes.

The short form of a WHEN clause in a CASE statement also creates a
suspended character expression. In the following example, temporary
string storage is tied up throughout the calls to func_A() and
func_B().

CASE charvar
        WHEN 'A' CALL func_A()
        WHEN 'B' CALL func_B()
...

The longer form of the WHEN clause does not do this because evaluation
of the character expression is completed before the function call
begins.

CASE
        WHEN charvar = 'A' CALL func_A()
        WHEN charvar = 'B' CALL func_B()

Finally, a known error in some versions of IBM Informix-4GL Version 4.1
causes a spurious error of this type when the WORDWRAP clause appears
in a PRINT statement. If the error recurs, note all
circumstances and contact IBM Technical Support.


-1335	A report is accepting output or being finished before it has been
started.

The program executed an OUTPUT TO REPORT or FINISH REPORT statement
before it executed a START REPORT. Review the program logic that leads
up to this statement to find the cause of the error.


-1336	Module name in the pcode file contains pcode version compile-version.
This program can run pcode version runner-version. Run the pcode compiler
with the -V option to check the pcode version that it produces. Then
recompile all modules of your program, and run it again.

The program runner or a customized runner must be the same software
version as the program compiler. To check that the programs are at the
same level, execute each with the -V option. That option displays their
version numbers. When you determine that you are using compatible
software, recompile your program.


-1337	The variable name has been redefined with a different type or length.

The variable that is shown is defined in the GLOBALS section of two or
more modules, but it is defined differently in some modules than in
others. Possibly modules were compiled at different times, with some
change to the common GLOBALS file between. Possibly the variable is
declared as a module variable in some module that does not include the
GLOBALS file.


-1338	The function name has not been defined in any module in the program.

The named function is called from at least one module of the program,
but it is defined in none. If you are using the Programmer's
Environment, possibly one module was not defined as part of a
multimodule program. If you are working at the command line, possibly
one or more compiled .4go modules were omitted when the program files
were concatenated to form the .4gi file.


-1339	Global variable name cannot be found in the descriptor table.

This error indicates an internal problem in the runner. If the error
recurs, note all circumstances and contact IBM Technical Support.


-1340	The error log has not been started.

The program called the errorlog() function without first calling the
startlog() function. Review the program logic to find out the cause of
this error.


-1343	No help file specified.

This INPUT, PROMPT, or MENU statement contains a HELP help-number
clause; however, no message file has been established. The OPTIONS HELP
FILE statement establishes the message file, but the statement has not
yet been executed. Review the program logic, and modify it to execute
an OPTIONS statement with a HELP FILE clause before it is needed.


-1344	IBM Informix Run Time Facility.

No current IBM Informix product displays this message.


-1345	Undefined opcode.

The p-code file for the program (whose file suffix is .4go) has become
corrupted. Recompile the whole program, and run it again. If the same
error occurs, check that you are running the identical version of both
the p-code compiler and the p-code runner. If the error recurs,
note all circumstances and contact IBM Technical Support.


-1346	Number is too large for a DECIMAL data type.

The DECIMAL data type accommodates numbers from 10 to the -130th power
through 10 to the 124th power in absolute value. The precision (number
of significant digits) varies from 1 to 32; however, the source of this
error is not the length of the number but its magnitude.


-1347	Number is too small for a DECIMAL data type.

The DECIMAL data type accommodates numbers from 10 to the -130th power
through 10 to the 124th power in absolute value. The precision (number
of significant digits) varies from 1 to 32; however, the source of this
error is not the length of the number but its magnitude.


-1348	An attempt was made to divide by zero.

Zero cannot be a divisor. In some cases, this error arises because the
divisor is a character value that does not convert properly to numeric.


-1349	Character to numeric conversion error.

A character value is being converted to numeric form for storage in a
numeric column or variable. However, the character string cannot be
interpreted as a number. It contains some characters other than white
space, digits, a sign, a decimal, or the letter e, or else the parts
are in the wrong order so that the number cannot be deciphered.


-1350	It is not possible to convert between the specified types.

The system will attempt any data conversion that makes sense. However,
some conversions, such as INTERVAL to DATE, or DATETIME to MONEY, are
not supported. Possibly you referenced the wrong variable or column.
Check that you have specified the data types that you intended and that
you formatted literal representations of data values correctly.


-1351	The function (or report) name has already been defined. Function
and report cannot both have the same name.

Each function (or report, which is similar to a function) must have a
unique name within the program. You must change either this use or the
prior one.


-1352	name may not be used as both a function (or report) name and
a variable name.

The name that is shown has been defined at least two ways. Names at the
global or module level (function names, report names, and names of
global or module variables) must be unique. Locate all the definitions
of this name, and change all but one of them.


-1353	Use '!' to edit TEXT and BYTE fields.

The built-in form editor cannot deal with TEXT or BYTE columns.
However, you can designate an external program that can display or edit
a value from a TEXT or BYTE column. To call the external program for
any field, put the cursor in that field, and key the exclamation mark
(!) character. If an external program has been defined (with the
PROGRAM attribute in the form specification), it will be started. In a
TEXT field, if no external program is specified in the form, the
program that the DBEDIT environment variable names will be started.


-1355	Cannot build temporary file.

A TEXT or BYTE variable has been located in a temporary file using the
LOCATE statement. The current statement assigns a value into that
variable, so 4GL attempted to create the temporary file, but an error
occurred. Possibly no disk space is available, or your account does not
have permission to create a temporary file. 4GL creates a temporary
file in the directory that the DBTEMP environment variable specifies.
Look for operating-system error messages that might give more
information. Check the value of DBTEMP. Since Version 5.01, the
IBM Informix SE database server uses the DBTEMP environment variable, but
IBM Informix  Dynamic Server and IBM Informix OnLine Dynamic Server do not.


-1356	Write error on temporary file filename.

The operating system signalled an error during output to a temporary
file in which a TEXT or BYTE variable was being saved. Possibly the
disk is full, or a hardware failure occurred. For more information,
look for operating-system messages.


-1357	Read error on temporary file filename.

The operating system signalled an error during input from a temporary
file in which a TEXT or BYTE variable was saved. Possibly a hardware
failure occurred. For more information, look for operating-system
messages.


-1358	Write error on TEXT or BYTE file filename.

The operating system signalled an error during output to a temporary
file in which a TEXT or BYTE variable was being saved. Possibly the
disk is full, or a hardware failure occurred. For more information,
look for operating-system messages.


-1359	Read error on TEXT or BYTE file filename.

The operating system signalled an error during output to a temporary
file in which a TEXT or BYTE variable was being saved. Possibly the
disk is full, or a hardware failure occurred. For more information,
look for operating-system messages.


-1360	No PROGRAM= clause for this field.

You pressed the exclamation-mark key (!) while the cursor was in a TEXT
or BYTE field. However, no external program has been designated for
this field (with the PROGRAM attribute in the form-specification file).
If this field is a TEXT field, you can set the DBEDIT environment
variable before you start the program to specify a text editor.


-1361	Illegal TEXT or BYTE file name. Null names are not permitted.

The BYTE or TEXT variable has been located in a file using the 4GL
statement LOCATE. However, the filename that is given for the variable
is a null string. Because the file does not exist, 4GL cannot do
anything with it.


-1362	4GL runtime stack violation.

The program attempted to access outside the boundaries of the stack. If
the error recurs, note all circumstances and contact
IBM Technical Support.


-1363	A fatal internal error has occurred - Application Terminating.

The program attempted to access outside the memory that belongs to the
application. If the error recurs, note all circumstances and
contact IBM Technical Support.


-1364	Error recovery setup failed - Application Terminating.

The mechanism that allows the application to catch and handle internal
errors could not complete its actions. Return to DOS, and restart
Windows.


-1365	Application appname not found.

The Application Launcher, fglaunch, did not find the requested
application.


-1366	Unable to load application appname.

The Application Launcher, fglaunch, could not load the requested
application. The DLL does not have the required NewEra entry points, so
it must not be a NewEra DLL. Check to see if the NewEra DLL has the
same name as an existing system DLL.


-1367	DLL dllname is not a resource DLL - Application Terminating.

The program options for the Application Launcher, fglaunch, specified
that the DLL dllname included resources, but no resources were found,


-1371	The field fieldname does not exist in the current form.

The indicated field name has been given to the NEXT FIELD statement or
to the pf_nxfield() function, but it is not defined in the current
form. A common error is to confuse the tag name, which is used in the
screen layout and to the left of the equal sign in the ATTRIBUTES
section, with the field name, which is the column name used to the
right of the equal sign in the ATTRIBUTES section. Use the latter when
you refer to fields.


-1372	The number entered is too large to fit in the decimal or money variable.

Probably no current IBM Informix product returns this message. If it
appears, refer to the explanation of error -1226. If the error recurs,
note all circumstances and contact IBM Technical Support.


-1373	The field fieldname is not in the list of fields in the
CONSTRUCT/INPUT statement.

The built-in function get_fldbuf() or field_touched() has been called
with the field name shown. However, input from that field was not
requested in this CONSTRUCT or INPUT statement. As a result, the
function cannot return any useful value. Review all uses of these
functions, and compare them to the list of fields at the beginning of
the statement.


-1374	SQL character truncation or transaction warning.

The program set WHENEVER WARNING STOP, and a warning condition arose.
If the statement involved is a DATABASE statement, the condition is
that the database that was just opened uses a transaction log. On any
other statement, the condition is that a character value from the
database had to be truncated to fit in its destination.


-1375	SQL NULL value in aggregate or mode ANSI database warning.

The program set WHENEVER WARNING STOP, and a warning condition arose.
If the statement that is involved is a DATABASE statement, the
condition is that the database that was just opened is ANSI compliant.
On any other statement, the condition is that a null value has been
used in the computation of an aggregate value.


-1376	SQL, database server, or program variable mismatch warning.

The program set WHENEVER WARNING STOP, and a warning condition arose.
If the statement that is involved is a DATABASE or CREATE DATABASE
statement, the condition is that the database server opened the
database. On any other statement, the condition is that a SELECT
statement returned more values than there were program variables to
contain them.


-1377	SQL float-to-decimal conversion warning.

The program set WHENEVER WARNING STOP, and a warning condition arose.
The condition is that in the database that was just opened, the
database server will use the DECIMAL data type for FLOAT values.


-1378	SQL non-ANSI extension warning.

A database operation was performed that is not part of ANSI SQL,
although the current database is ANSI compliant. This message is
informational only.


-1379	Report functions may not be called directly. Use the OUTPUT
TO REPORT statement.

A report function has been entered as a result of a CALL statement.
Report functions can only be executed using the START REPORT, FINISH
REPORT, and OUTPUT TO REPORT statements. Review the program. Look for
places where the report function name is called like a normal function,
and change them. If you want to use some of the code in the report
function as a subroutine, place it in a separate subroutine, and call
it from the report function and other places.


-1380	Only character expressions may be CLIPPED.

You cannot CLIP a noncharacter expression.


-1381	Cannot execute another runner when debugging.

An instance of the 4GL runner is currently executing. While you are
debugging, you cannot launch additional instances of the runner through
a RUN command, the RUN accelerator button, or directly from Windows. To
launch a new instance of the runner, first quit the currently running
4GL application.


-1390	The class "class" has not been defined in any module in the program.

The named class has been declared, and it has been used, but it has
never been defined. It must be defined at the definition of the first
member function of that class.


-1391	Invalid class specified in AS clause.

The class specified in an AS clause of a NEW or COPY operation must be
derived from the stated class.


-1392	Cannot use a NULL object.

In the p-code runner, an attempt was made to dereference a NULL
object. Perhaps the program has defined an object, then tried to
invoke a member function of the object before creating it through
!copy() or !derive().


-1393	The class class has already been defined.

The program attempted to define a class for a second time.


-1394	Invalid ixRow object argument for built-in function.

An ixRow argument is expected as the first argument for the built-in
functions UNPACKROW() and PACKROWINTO().


-1396	A report PRINT FILE source file cannot be opened for reading.

The file that is named in a PRINT FILE statement cannot be opened.
Review the file name. If it is not in the current directory, you must
specify a full path. If the file is specified correctly, check that it
exists and that your account has file permissions to read it. Look for
operating-system error messages that might give more details.


-1778	The security subsystem could not be initialized for this command.

Ensure that this account has sufficient privileges.


-1779	This command can be executed only by members of the informix-admin
group.

Log in with a user account that belongs to the informix-admin group, or
ask the Windows administrator to add your user account to the
informix-admin group. Then try the procedure again.


-1780	The database server can be started only by user informix.

You must be a member of the informix-admin group to start the database
server. Log in with a user account that belongs to the informix-admin
group, or ask the Windows administrator to add your user account to
the informix-admin group.


-1781	The database server could not retrieve the account information for
this user account.

The account information is missing or invalid. Run User Manager to
check the validity of this account.


-1782	The database server cannot validate this user.

The user does not have a valid account or password on the computer
where the database server is running. You must create a user account
and password for this user.


-1783	UnSetup will carry out these actions:

    *   Remove the groupname group and the username user accounts

    *   Remove the servicename service

    *   Remove the branch Software\\branchname\\keyname\\ from the
	registry

Do you also want to remove all IBM Informix product files and directories?
(Y,N,Q)


-1784	The database server could not initialize the security subsystem.

The database server runs under the user informix account, which must
have the following privileges:

    *   Log on as a service

    *   Create a token object

    *   Act as part of the operating system

    *   Belong to the informix-admin group

To verify that user informix has these rights, access the User Manager,
and use the Policies/User Rights dialog box.


-1785	pathname\buildsmi.ext

This message refers to the output of buildsmi.bat. For Windows, look
into the file %INFORMIXDIR%\etc\buildsmi.out if "Error building
sysmaster" appears in the online.log file.


-1786	The command line option specified in the Control Panel/Services/Startup
dialog was -i.

The parameter that was specified in the Control Panel/Services/Startup
dialog box was -i, which causes the database server to initialize the
root dbspace, destroying any information that it currently contains.
When the database server runs as a service under Windows, it does
not prompt you to confirm the parameters that you have specified. If
you are sure that you want to initialize the root dbspace, specify the
parameters as -iy instead.


-1787	The database server detected a mismatch in the configuration file.
Mirror chunk pathname = pathname, Offset = offset K, Size = size K.

Check the actual file size of the chunk against the size that is
specified for the mirror chunk in the ONCONFIG file.


-1788	The audit configuration-file pathname is too long. Its pathname
should contain at most maxnum characters.

The maximum number of characters, or maxnum, is 128.


-1789	The database server could not get account information for user username.

Check to see that the user account exists and is valid.


-1790	The database server could not be started.

Ensure that the account used to start the database server
is a member of the informix-admin group.


-1791	The database server encountered a fatal error while initializing
shared memory.

Look for the cause of this error in %INFORMIXDIR%\online.log.


-1792	The database server cannot access %INFORMIXDIR%\dbssodir or
%INFORMIXDIR%\aaodir.

Check access to the path segments that lead to %INFORMIXDIR%\dbssodir
and %INFORMIXDIR%\aaodir. If %INFORMIXDIR% is on a network drive, make
sure that the oninit process privileges are not altered. In addition,
make sure that the AAO and DBSSO group names are valid in the
registry.


-1793	The database server could not open the chunk chunkname. The system
error value returned was errno.

Ensure that this chunk exists and has the correct permissions for
access.


-1794	The primary chunk chunkname containing the root dbspace is
invalid. It needs to be re-initialized.

The chunk that contains the root dbspace is corrupt or out of date. If
you have backed up your database server, you can perform a full-system
restore to restore the root dbspace. If you have not backed up your
database server, you will need to reinitialize the root dbspace by
using the -iy parameters when you start the database server.

Warning: Starting the database server with the parameters -iy reinitializes
the root dbspace and effectively destroys all existing data. You will
no longer be able to access existing databases unless you subsequently
perform a full system restore. Do not reinitialize the root dbspace
unless you are certain that you want to do so.


-1795	The number of chunks specified in shared memory, num_chunks, is too
large.

The maximum allowable number with the current configuration is
num_chunks. Specify larger chunk sizes, and reduce the number of
chunks.


-1796	The database server detected a mismatch in the registry subkey data for
MIRRORPATH. The data retrieved for MIRRORPATH was pathname.

The root dbspace has not been mirrored. To add mirroring, use onspaces
or onmonitor.


-1797	The root dbspace is not large enough for the specified configuration.
The actual size is sizenum, and the required size is sizenum.

The root dbspace will not fit on the specified drive. Free the amount
of space that is needed on the specified drive, or change the ROOTPATH
configuration parameter to specify a different drive with more space
available. Then restart the database server with the -iy parameters to
initialize the root dbspace.

Warning: Starting the database server with the parameters -iy
reinitializes the root dbspace and effectively destroys any existing
data. You will no longer be able to access existing databases unless
you subsequently perform a full-system restore. Do not reinitialize the
root dbspace unless you are certain that you want to do so.


-1800	Invalid transaction state.

You must commit or rollback the current transaction before you
disconnect.


-1801	Multiple-server transaction not supported.

You are attempting to span multiple connections within a single
transaction. You can switch to a different connection while a
transaction is active if you use the WITH CONCURRENT TRANSACTION clause
when you establish the connection.

This error message can occur when you try to switch connections as
follows:

    *   If the current connection is to a Version 6.0 or later database
	server, you did not specify the WITH CONCURRENT TRANSACTION
	clause when you established the connection, and there is an
	active transaction in the current connection.

    *   If the current connection is to a Version 5.0 database server,
	you did not specify the WITH CONCURRENT TRANSACTION clause when
	you established the connection, and a database is currently
	open on this connection.


-1802	Connection name in use.

A connection with the same connection name has already been made. Each
connection must have a unique connection name. Rename the connection,
and try again.


-1803	Connection does not exist.

The connection name in a SET CONNECTION or DISCONNECT statement does
not refer to an established connection. Check your program to see that
the connection was made and, if so, that it was not disconnected. Also,
check the spelling of the connection name in the statement that is
failing.


-1804	Invalid database environment.

The database server cannot connect to the database environment that you
specified. The server cannot locate either the database server or the
database that you specified. Check the syntax of your statement. If you
are specifying a database server, you must use the @ sign. You cannot
use //.


-1805	Invalid connection name.

The connection name is invalid. It must conform to the same rules as any
other identifier; that is, it cannot exceed the maximum length, cannot be an
ANSI reserved word, must begin with a letter or underscore, and can contain
only letters, digits, underscores, and, in IBM Informix Dynamic Server 9.2 or later,
dollar-sign characters.

The maximum length for identifiers depends on the database server. In
IBM Informix Dynamic Server 9.2 or later, the maximum length is 128 characters. In
other Informix database servers, the maximum length is 18 characters.


Check that the connection name is a valid identifier and that you are using
the connection name and not some other value. If a connection name was used
with the original CONNECT TO statement, you must use the connection name in
subsequent connection statements.


-1807	No connection to disconnect.

You are attempting to disconnect a connection that does not exist at
this time. Check your program to see that you have not already
performed a DISCONNECT statement for this connection.


-1808	Reconnect to server_name server to perform the database operation.

If you connect to a database server using the CONNECT statement, you
cannot implicitly reconnect to a server through one of the DATABASE
statements (DATABASE, START DATABASE, and so on). You must switch to it
with the SET CONNECTION statement.


-1809	Server rejected the connection.

Check that you have permission to connect to the server that you
specified. If you specified both a database server and a database,
check to see that you have permission to access the database.

This error message can occur when you are trying to use a Pluggable Authentication Module (PAM) feature of IDS when one or both of the following conditions exists:

    *   The PAM configuration file is not set correctly. Refer to the OS vendor
	documentation for more information.


    *   The client or server computer is not configured to handle PAM messages 
	that are generated from a connection request. 

-1810	Disconnect error.

A DISCONNECT ALL statement has not disconnected a connection. The
database server for one of the connections might have terminated. If
not, the cause is internal to the software. If the error recurs,
note all circumstances and contact IBM Technical Support.


-1811	Implicit connection not allowed after an explicit connection.

Once you have used the CONNECT TO statement to establish an explicit
connection to a database server, you cannot use one of the DATABASE
statements to connect implicitly to another database server. After an
explicit connection, you must use the CONNECT TO statement to connect
to other database servers.


-1812	Internal error.

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-1813	Only the current connection can be made dormant.

You used the SET CONNECTION DORMANT statement incorrectly. You
attempted to put a connection that was already dormant into the dormant
state. Or you attempted to put a connection that is in use by another
thread in a dormant state.


-1814	Need to allocate collection or row variable before using it.

The application needs to call ALLOCATE COLLECTION or ALLOCATE ROW
before it uses a host variable of type collection or of type row in an
SQL statement.


-1815	No type information for collection or row is available.

The application needs to declare a typed collection or row host
variable before using it in an SQL statement. The application can fetch
the complex type data from a column of type set, type list, type
multiset or type row into their untyped collection or row host variable
before it uses the data in the SQL statements.


-1816	No such column exists in the collection or row.

The field name specified by the application does not exist in the
description of the collection or row host variable. Check the
description of the field names within the declaration and make sure the
field name specified matches the one in the declaration.


-1817	No collection or row variable provided.

A collection or row host variable was expected but none was provided, or the
host variable used in the derived table syntax is not a collection or row
host variable.

Check the declaration of this host variable in the application and change it
to a collection or row host variable declaration.


-1818	Input variable type does not match collection or row definition.

Certain data types cannot be cast on the client. The following
situations return this error:

    *   Trying to cast any complex type into any other complex type
	(that is, casting a set into list)

    *   Trying to cast a built-in type (for example, INT) into a
        complex type

    *   Trying to cast a complex type into a user-defined data type

    *   Trying to cast a built-in type into a user-defined data type

Check the SQL statement and make sure the types are compatible.


-1820	The host variable type was changed between fetches or puts.

If the host variable is used for user-defined-data-type columns or if
the host variable itself is a user-defined-data-type host variable, the
host variable type and length cannot be changed between fetches or puts.


-1821	Host variable is not large enough to hold the data returned from
the server.

The memory allocated by the application to fetch the user-defined data
type is not sufficient. Change the application so that it allocates
more memory before it fetches this user-defined data type.


-1822	Invalid argument.

One of the arguments passed to the function has an illegal value or is
NULL. Check the documentation for the valid values that can be passed
to this function.


-1823	Need more memory to store data.

This error is returned from ifx_var_setlen() and ifx_var_setdata() when
the application tries to set the length or the data to a size that is
larger than the amount of memory allocated in ifx_var_alloc(). Find the
current allocated length by calling ifx_var_getlen(), resize it if
necessary by calling ifx_var_alloc(), and execute ifx_var_setlen() or
ifx_var_setdata() again.


-1824	Message cannot be found.

The server user-defined routine has been executed, but the message text
cannot be found. Check the user-defined routine to make sure all
SQLSTATES returned by the server have a corresponding message text
associated with them.


-1825	INSERT and DELETE cannot be performed on ROW host variables.

Only UPDATE and SELECT statements can be used with row host variables.
Check the derived table syntax that is using the row host variable and
use UPDATE or SELECT instead.


-1826	DESCRIBE information about this statement is not available at this time.

When the DEFERRED_PREPARE option is turned on, the description of the
statement is not known until the cursor is opened. Therefore, a DESCRIBE
can only be executed after an OPEN. If DEFERRED_PREPARE and OPTOFC are
both turned on, then the DESCRIBE can happen only after the FETCH, because
the OPEN is not executed until the FETCH is executed.


-1828	Cannot use scroll or hold cursor with client collections.

A cursor declaration for a client collection cannot be for a scroll or hold
cursor, as in the following declarations:

    /** scroll cursor case **/
    EXEC SQL DECLARE cur1 SCROLL CURSOR
             FOR SELECT * FROM table(:collection_host_variable);

    /** hold cursor case **/
    EXEC SQL DECLARE cur2 CURSOR WITH HOLD
             FOR SELECT * FROM table(:collection_host_variable);

Declare the cursor as follows instead:

    EXEC SQL DECLARE cur3 CURSOR
             FOR SELECT * FROM table(:collection_host_variable);


-1829	Cannot open file citoxmsg.pam.

The file citoxmsg.pam is missing from the directory $INFORMIXDIR/msg.

If this error occurs, note all circumstances and contact IBM Technical Support.


-1831	Combination of FetArrSize, Deferred-PREPARE, and OPTOFC is not supported.


-1832	Environment block is greater than 32K.

At the start of a session, the client groups all the environment variables 
that the server will use and sends the environment variables to the server as 
a single block. The maximum allowed size of this block is 32K. The current 
block of environment variables exceeds 32K. Unset one or more environment 
variables or reduce the size of some of the environment variables and then
retry connection to IDS.


-1833	Cannot open file itoxmsg.pam.

The file itoxmsg.pam is missing from the directory $INFORMIXDIR/msg.

If this error occurs, note all circumstances and contact IBM Technical Support.


-2013	The output form file filename cannot be opened.

Possibly your account does not have permission to write in the
specified directory; possibly the disk is full. In some systems, the
problem might be related to a limit on the number of open files. Look
for operating-system messages for more information.


-2014	There were an incorrect number of arguments on the operating
system command line. At least one (1) argument is expected.

When you run the Form Compiler from the command line, you must specify
either the -d option or the name of a form.


-2015	An open comment symbol, {, was found inside an already open
comment on line line, character column. This could be due to a failure
to close the previously opened comment, which was begun on line line,
character column.

Nested comments are not supported. Review the form specification, and
inspect all comments. Check that each open brace has a matching close
brace.


-2016	A comment has been opened, but not closed. The last comment begun
was opened on line line, character column.

Insert a close-comment symbol where appropriate in the report
specification.


-2017	The character data value does not convert correctly to the field type.

You have entered a character value (a quoted string) into a field that
has a different data type (for example INTEGER). However, the
characters that you entered cannot be converted to the type of the
field. Consult the operating instructions for this application, then
reenter the data.


-2018	A grammatical error has been found on line line, character column.
The construct is not understandable in its context.

This message points to the exact spot in a source file where the
compiler could no longer understand the input. The actual mistake might
be earlier in the file, perhaps several lines earlier, but it is not
later. Other, more specific error messages should also appear.


-2019	This integer exceeds the maximum size allowed.

The INTEGER data type can accept numbers with absolute values from 0 to
2,147,483,647 (plus or minus (2 to the 31st power) - 1). If you have to
store numbers outside this range, redefine the column or variable to
use DECIMAL data type. (The value -2,147,483,648 is a 32-bit value but
is not acceptable; it is used in 4GL to indicate a null value.)


-2020	The table table-name could not be opened. The operating system was
asked to open it for writing.

You are using a database server that manages tables as ordinary disk
files. The current database is managed as a directory, and tables are
files within it. Look for operating-system error messages that might
give more information. Locate the database directory (either in the
current directory or on a path that is named in the DBPATH environment
variable). Check that disk space is available. In UNIX, your personal
account does not have to have write access to the directory and table
files; however, they must be writable to the group-id informix.


-2021	An illegal color has been specified. Colors 0 through 7 are white,
yellow, magenta, red, cyan, green, blue, and black.

Both in a COLOR attribute in a form specification and in a display
attribute in a 4GL program, you must specify colors by name and spell
them as this message shows. Check the spelling and punctuation of the
statement.


-2022	This identifier exceeds the maximum length for identifiers,
which is <length>.

Names of fields and other identifiers cannot exceed the maximum length. In
IBM Informix Dynamic Server 9.2 or later, the maximum length for identifiers is 128
characters. In other Informix database servers, the maximum length for
identifiers is 18 characters.

Revise the form specification and recompile it.


-2023	This quoted string exceeds the maximum length for quoted strings,
which is length.

You cannot use longer quoted strings. In a form, you cannot join
shorter strings to make longer ones, so this maximum is an absolute
length limit. You must revise the form specification and recompile it.


-2024	There is already a record name specified. If the record name is
the same as a table name in the form, a default record of the same name
has been created.

Check that the record-name of every screen record and screen array is
unique in the form specification. A screen record is automatically
defined for each table that is used in the ATTRIBUTES section to define
a field. If you define a record with the name of a table, it is seen as
a duplicate.


-2025	The comment close symbol (}) has been found on line line, character
column, even though no comment has been opened.

Unless comment symbols are enclosed in quotes, they must be balanced.
Probably you accidentally deleted the open-comment symbol when you were
editing. Change the form specification so that comments are properly
delimited.


-2026	The FORMONLY field fieldname did not have a type specified. A type
must be specified if include lists or default values are specified.

The usual way of defining a form-only field (one not linked to a
database column) is as follows:

tagname = DISPLAYONLY.fieldname TYPE datatype

The TYPE clause is required. Review the attribute statements and
recompile the form. (The keyword FORMONLY is used in forms that the 4GL
compiler compiles. Its meaning is the same as DISPLAYONLY.)


-2027	An illegal (invisible, control) character has been found on
line line,character column. It has been replaced by a blank in the listing,
but it is still in the source (input) table, and should be removed before
attempting to compile again.

Illegal characters can be introduced into files by using a
word-processing editor in document mode instead of text mode, by
striking nonprinting keys while editing the file, or by data
corruption.


-2028	The symbol name does not represent a table prefix used in this form.
It cannot be used here to select record elements.

In a SCREEN RECORD statement, each component must be introduced by the
name of the table as defined in the TABLES section or by the word
FORMONLY. Review the spelling of the indicated name against the TABLES
section, and check the punctuation of the rest of the statement.


-2029	Screen record array name has component sizes which either
differ from the specified dimension of the array or differ among themselves.

The dimension of the screen array is written in square brackets that
follow its name, as in the following example where the dimension is 12:

SCREEN RECORD details [12]

(items.item_num, items.item_desc, items.unit_price)

In this case, exactly 12 screen fields should be associated with each
of the three columns that are listed in the screen record. This error
message appears when one or more of the columns appear a different
number of times.


-2030	A typographical error has been found on line line, character column.

The single character at the indicated position, although printable, is
unexpected and does not fit the syntax of a form specification.


-2031	The WORDWRAP attribute can only be specified for CHAR, VARCHAR and
TEXT fields.

This PRINT statement applies the WORDWRAP function to a value that is
not character data. Check that the field named is the one that you
intended, and check the punctuation of the rest of the statement.


-2032	The number above could not be successfully converted to either an
INTEGER or a DOUBLE or a LONG.

Something is wrong with the numeric constant; probably it has too many
digits. Check the punctuation of the statement; possibly two numbers
have been run together.


-2033	The field name has a default value not within the range of its include
list values.

The indicated field has both a DEFAULT attribute and an INCLUDE
attribute, but they disagree. The default value is not one that is
allowed. Modify one of the attributes, and recompile the form
specification.


-2034	This feature is not available for IBM Informix SQL. It is available for
IBM Informix 4GL by using the "form4gl" form builder.

The PERFORM form compiler and the 4GL form compiler accept very similar
form specifications, but they differ in some features. This statement
uses a 4GL feature, but PERFORM cannot process it.


-2035	The WORDWRAP attribute, if specified, should apply to all
the columns in a join.

Ignore this message. It applies to a feature of PERFORM (joins) that
4GL does not support.


-2036	The display lines of a multi-line field lie in different screen pages.

A multiline field (multiple fields with identical tags, given the
WORDWRAP attribute) must be complete within a screen page. Possibly you
did not intend the field to be on two pages. If your page layout, plus 4
reserved lines, is taller than the physical screen (as specified in
the SCREEN statement or in the lines dimension on the command line),
the form is divided by starting a new page after the last line that can
fit on the page, and this situation might accidentally split a
multiline field. In any case, rearrange fields so that the multiline
field fits on a single page.


-2037	The PROGRAM attribute can only be specified for BYTE and TEXT fields.

The field attribute PROGRAM specifies an external program to edit or
display a BYTE or TEXT value; these values are assumed to be too large
and specialized for the normal form-display methods. However, in this
statement, the attribute is applied to a column of another type, which
is not supported. Check the table and column names to make sure that
they are as you intended, and verify the current definition of the
table in the database that is named in the DATABASE statement.


-2038	BLOB fields cannot be joined.

Columns of BYTE and TEXT types cannot be compared. Therefore, they
cannot be used in joining tables, and they cannot be named as join
columns or in a COMPOSITES statement. Check that the table and column
names are as you intended, and verify the current definition of the
table in the database that the DATABASE statement names.


-2039	The attributes AUTONEXT, DEFAULT, INCLUDE, VERIFY, RIGHT and ZEROFILL
are not supported for BLOB fields.

Columns of BYTE and TEXT types cannot be used in the ways that these
attributes imply. Check that the table and column names are as you
intended, and verify the current definition of the table in the
database that the DATABASE statement names.


-2040	The form name name exceeds the maximum length of length characters.

The limit of the form compiler on names might be shorter than that of
the host operating system. Rename the form-specification file, and
issue the command again.


-2041	The form filename cannot be opened. This is probably because
it does not exist, or the user does not have read permission.

Check the spelling of filename. Check that the form file exists in your
current directory. If it is in another directory, check that the
correct pathname has been provided. On a UNIX system, if these things
are correct, verify that your account has read permission on the file.


-2042	The usage of a BLOB field in or around the above statement
is incorrect.

Columns of BYTE and TEXT types cannot be used in the ways that this
statement implies. Check that the table and column names are as you
intended, and verify the current definition of the table in the
database that the DATABASE statement names.


-2043	Screen layout exceeds the specified screen width. This is
a warning only.

The assumed screen width is taken from the SCREEN statement or a
command-line parameter to the form compiler, with a default of 80
characters. If the current form specification is displayed on a
terminal of that width, either some lines truncate, or lines wrap
unattractively.


-2044	At most one color attribute may be specified for each
field with each condition.

Review this ATTRIBUTES statement; a problem exists near a COLOR
attribute. Look for missing punctuation.


-2045	The conditional attributes of a 4GL field cannot depend
on the values of other fields.

The Boolean expression in a WHERE clause of a COLOR attribute can use
only the name of that field and constants. Revise this attribute, and
recompile the form.


-2100	Field field has validation string error, String = string.

One of the formatting or validation strings that is stored in the
syscolval or syscolatt tables is improperly coded. The string is shown
as is the field to which it applies. Use the Column Attributes
Dictionary utility in Windows or the upscol utility in DOS and UNIX to
update the string.


-2800	The first line of the specification must be the keyword database
followed by the database name, or the FORMONLY keyword (4GL only). An optional
WITHOUT NULL INPUT may also follow.

Aside from comment lines, a form specification must begin by naming a
database. Review the file for punctuation and spelling errors. Refer to
the reference manual for this product for the options that are allowed
in the DATABASE statement. (Current products do not use this message.
You might encounter it with Version 4.0 or earlier products.)


-2810	The name name is not an existing database name.

This name, which was found in the DATABASE statement at the start of
the form specification, is not a database that can be found. If you
are using IBM Informix SE, the database must reside either in the current
directory or in a directory that the DBPATH environment variable
names.


-2811	The temporary table table-name could not be opened for writing.

The application is attempting to create a temporary table in the
database or some other temporary file but received an error code from
the database server. The most probable cause is a lack of disk space.
Look for other error messages, including operating-system messages,
that might give more information.


-2812	The temporary table table-name could not be read.

The application created and filled a temporary table in the database or
created and filled some other temporary file, but when it tried to read
rows from it, it received an error code from the database server.
Probably a hardware failure occurred. Look for other error messages,
including operating-system messages, that might give more information.


-2820	The label name between brackets is incorrectly given or
the label is missing.

In this line of the SCREEN section of a form specification, square
brackets indicate a field. The brackets should contain a simple name.
Instead, they contain spaces or an invalid name. Review the punctuation
of the line to make sure that the brackets contain only a simple
identifier.


-2830	A left square bracket has been found on this line, with no right
square bracket to match it.

A screen field cannot span lines. Review the SCREEN section to make
sure all fields are properly marked. To create a multiline field, mark
off multiple complete fields all with the same field tag.


-2831	The control block has exceeded the maximum of limit fields.

Too many columns or tables are listed in the OF clause of this control
block. Write separate control blocks, each for part of the list.


-2832	This form uses "|" to both start and end a field placement.
Because of this, the form must specify left and right delimiters which
are the same character. This is done with the DELIMITERS command in
the INSTRUCTIONS section.

Make sure that a DELIMITERS statement is present and that it specifies
the same character for both left and right delimiters.


-2834	NULL cannot be used as the default. It is already the
default if you specify nothing.

This ATTRIBUTES statement contains a DEFAULT clause that specifies
NULL. Either delete the clause, or specify another value.


-2840	The label tag was not defined in the form.

The indicated name appears at the left of this ATTRIBUTES statement,
but it does not appear within brackets in the SCREEN section. Review
the field tags that have been defined to see why this one was omitted.


-2841	The form must include a tables declaration before the attributes
section.

Check that the form-specification file contains a DATABASE statement, a
SCREEN section, a TABLES section, and an ATTRIBUTES section, in that
order.


-2843	The column column-name does not appear in the form specification.

A name in this ATTRIBUTES statement should have been defined previously
in the form specification. Check that all names in the statement are
spelled correctly and defined properly.


-2844	The column column-name is associated with more than one field in the
form specification.

Any one table column can be related to only one field in an ATTRIBUTES
statement. Possibly you are trying to display columns from two or more
tables that have the same column names; in that case, prefix the table
names to the column names to distinguish them.


-2845	The composite column for table table-name containing
column column is not indexed. Performance will be much improved by
creating an index on the column.

The presence of an index can greatly reduce the time that is needed to
join tables. However, an index is not essential, especially when the
tables are small, or during initial testing.


-2846	The field field-name is not a member of the table table-name.

Something in this statement suggests that the name shown is part of
this table, but that is not true in the current database. Review the
spelling of the two names. If they are as you intended, check that the
correct database is in use and that the table has not been altered.


-2850	The name name is not a column name in this database.

The tables that are specified in the TABLES section of the form exist,
but the column name, which is named in the ATTRIBUTES section, does
not. Check its spelling against the actual table. Possibly the table
was altered, or the column was renamed. You can use Informix SQL to
check column names under the Tables menu, Info selection.


-2856	The TODAY attribute may be assigned only to date columns.

The TODAY function (not attribute) returns the value of today's date.
That value can be assigned only to a field that has the DATE or
DATETIME data type. The field in this statement has a different type.
Automatic data conversion is provided in 4GL programs, but not in the
context of a form.


-2857	There can be only one dominant composite column in a join list.

This statement defines a join list, a list of two or more column names
that are related to the same form field. In such lists, an asterisk
preceding a column name indicates that column is the dominant column in
a verify join. Only one such column is allowed in any join, but two or
more are present in this list. Review the documentation on verify
joins, and choose a single dominant table.


-2858	The table table-1 is joined to the table table-2, but its joined
columns do not belong to a composite key.

You have defined two or more different joining columns between the two
indicated tables. However, no composite index exists on the joining
columns. Such an index is required to ensure that a composite key
exists; that is, that any combination of values from the joining
columns will occur only once. Review the two or more ATTRIBUTES
statements that define join columns for these two tables. Make sure
that they are as you intended; for example, make sure that you intended
to join two tables on two or more columns, instead of joining three or
more tables on one column each. If you intended the composite key, then
use the CREATE INDEX command to create a composite unique index on
those columns for at least table1.


-2859	The column column-name is a member of more than one
table -- you must specify the table name.

Two or more tables that are named in the TABLES section have columns
with the name shown. You must make clear which table you mean. To do
this, write the table name as a prefix of the column name, as
table.column, wherever this name is used in the form specification.


-2860	There is a column/value type mismatch for column-name.

This statement assigns a value to the field with the DEFAULT clause or
uses its value with the INCLUDE clause, but it does so with data that
does not agree with the data type of the field. Review the data type of
the field (which comes from the column with which it is associated),
and make sure that only compatible values are assigned.


-2861	You have exceeded the maximum of number tables.

A limit exists on the number of tables that can be in use at one time.
(This limit might be different on different host systems or with
different database servers.) Reduce the number of tables that you use
in the form.


-2862	The table table-name cannot be found in the database.

All tables used in a form must exist at the time that the form is
compiled, so that the compiler can verify the data types of the
columns. The indicated table does not exist in the database that is
named in the form. Check the spelling of the table name and database
name. If they are as you intended, either you are not using the version
of the database that you expected (check the value in the DBPATH
environment variable), or the database has been changed.

The tables that are specified in the TABLES section of the form exist,
but column-name, which is named in the ATTRIBUTES section, does not.
Check its spelling against the actual table. Possibly the table was
altered, or the column was renamed. You can use IBM Informix SQL to check
column names under the Tables menu, Info selection.


-2863	The column column-name does not exist among the specified tables.

The tables that are specified in the TABLES section of the form exist,
but column-name, which is named in the ATTRIBUTES section, does not.
Check its spelling against the actual table. Possibly the table was
altered, or the column was renamed. You can use Informix SQL to check
column names under the Tables menu, Info selection.


-2864	The table table-name is not among the specified
tables.

The indicated table is used in this statement but is not defined in the
TABLES section of the form specification. Check its spelling; if it is
as you intended, add the table in the TABLES section.


-2865	The column column-name does not exist in the table
table-name.

Something in this statement implies that the column shown is part of
the indicated table (most likely the statement refers to
table-name.column). However, it is not defined in that table. Check
the spelling of both names. If they are as you intended, then check the
contents of the database; possibly the table has been altered or the
column renamed.


-2866	The NOW attribute may be assigned only to datetime
columns.

This message is not in use in any current product. SQL does not support
any NOW attribute or function; use the CURRENT function.


-2867	The CURRENT attribute may be assigned only to datetime
columns.

The CURRENT function (not attribute) produces the current date and time
as a DATETIME value, but the field that is referenced in this statement
does not have the DATETIME data type. Automatic data conversion is not
supported in this context. Review the statement to make sure that it
refers to the field that you intended, and revise the form to assign
DATETIME values only to DATETIME fields.


-2870	The subscripted column size does not match the space
allocated in the display field.

This attribute statement relates a substring of a column to a display
field. However, either the substring numbers are wrong (the first is
less than 1 or greater than the size of the column, the second is less
than the first), or they are correct but the number of characters that
they select is different from the size of the display field. Revise the
substring numbers to select exactly as many characters as the field
requires.


-2880	The word 'screen' or 'end' has been left out.

Every form specification must end in the keyword END and must contain
the keyword SCREEN. Both must begin in the first column of a line.
Review the contents of the form specification to make sure that all the
necessary sections are properly marked.


-2890	A screen definition must begin with a left curly bracket '{'.

Each screen layout must be enclosed in braces ({ }). The open brace
must be the first character on its line. Review the form specification
to make sure that the screen layout is punctuated properly.


-2892	The column column-name name appears more than once. If you wish
a column to be duplicated in a form, use the same display field label.

The expected way to display the same column in two or more places is to
put two or more fields in the screen layout, each with the same
tag-name. Then put a single statement in the ATTRIBUTES section to
associate that tag-name with the column name. The current column value
will be duplicated in all fields. If you intended to display different
columns, the column names as listed in the ATTRIBUTES section must
differ. If you intend to display different columns that happen to have
the same column-names, prefix each with its table-name.


-2893	The display field label tag-name appears more than once
in this form, but the lengths are different.

You can put multiple copies of a field in the screen layout (all will
display the same column), but all copies must be the same length.
Review the SCREEN section to make sure that, if you intended to have
multiple copies of one field, all copies are the same.


-2895	Display field length of field-size does not match
the database column length of column-size. This is a warning only.

The size of the character field that is defined in this statement (as
shown by its appearance in the SCREEN section) is different from the
size of the associate column. You specified the -v option to the form
compiler to request warnings of this type.


-2901	Field name contains two conflicting attributes, first and second.

This statement contradicts itself. The UPSHIFT and DOWNSHIFT attributes
cannot be applied to the same field; nor can NOENTRY and REQUIRED or
NOETNRY and VERIFY. Review the statement, and correct the selection of
attributes.


-2920	The column column is a dominant column but it is not indexed.
Performance will be much improved by creating an index on the column.

You have defined the indicated column as dominant in a verify join.
Whenever the operator enters a value in the field, it will be looked up
in this column. Such a lookup operation is very quick when an index is
present. No index on the column exists at this time. Without one, a
lookup might be extremely slow. Unless the field does not allow
operator input (in which case you should remove the asterisk) or the
table is very small (a few dozen rows at most), you should create an
index for this column before you put the form into use.


-2921	The database dbname is not compatible with the current version of
IBM Informix SQL.

A prior version of IBM Informix software created the database that is named
in the DATABASE statement in this form. Before the present system can
use the database, you must use the sqlconv utility to convert it.


-2930	Portions of the column name are displayed on the screen
more than once.

This form displays subscripted portions of the indicated column in
different fields. This situation is permitted; however, no single
character can appear in more than one field. That is, the subscripts
cannot overlap. For example, you can display name[25,49] in one field
and name[50,74] in another. You cannot display name[25,49] and
name[25,74] because some characters would be displayed twice.


-2931	There is an error in the format specification.

Check the content of the FORMAT string in this statement. It is not
correct for the data type; that is, it has characters other than # and
. for a numeric column, and it has an incorrect internal length for a
DATE column (for example, yyy, which calls for a three-digit year).


-2932	Formats may be specified only for float, smallfloat,
decimal, or date columns.

This attribute statement specifies a FORMAT string, but the data type
of the field is not one of the four that support formatting: FLOAT,
SMALLFLOAT, DECIMAL (or MONEY), and DATE. If this column is not
DISPLAYONLY, check that it has been associated with the right column
and that the column is defined in the database as you expected.


-2933	The format width is larger than the allocated display width.

The length of the FORMAT string that is specified for this field is
greater than the length of the field itself as shown in the SCREEN
section. Review the screen layout, and revise it or the format so that
they agree.


-2934	The format width is less than the allocated display width.

The length of the FORMAT string that is specified for this field is
less than the length of the field itself as shown in the SCREEN
section. Review the screen layout, and revise it or the format so that
they agree.


-2935	The number of lines specified with the '-l' option or
in the screen section must be a positive integer from 6 to 600.

The vertical size of the screen, as indicated in the SCREEN statement
or in the -l (lowercase L) command-line option, is out of range. Change
it to specify the expected size of the terminal where the form will be
used.


-2936	The number of columns specified with the '-c' option or
in the screen section must be a positive integer from 30 to 600.

The horizontal size of the screen, as indicated in the SCREEN statement
or in the -c command line option, is out of range. Change it to specify
the expected size of the terminal where the form will be used.


-2940	The column name appears both with and without subscripts.

This form displays all of the indicated column, and subscripted portion
of it, in different fields. You can display different, subscripted
parts of a column in different fields, but the parts cannot overlap.
That is, portions of a column cannot be displayed twice on the same
screen. Review all uses of the indicated column. Perhaps you did not
intend to name it in both places. Perhaps two or more columns of the
same name exist in different tables, and you need to use the table name
to distinguish them. Otherwise, use nonoverlapping subscripts on each
field of the column.


-2941	name is not a display field name on the form.

This statement refers to a field as name, but no such name is defined.
Check the spelling, and review the ATTRIBUTES section to see how the
field was defined.


-2943	You have exceeded the pseudo machine capacity.

The expression in this statement is too complex to process. Simplify
it, and recompile the form. (See also error message -2988.)


-2944	You may apply the after add, update, query, or remove commands to
a table only -- not a column.

The operations of Add, Update, Remove, and Query all apply to whole
rows. Consequently, these control blocks must list only table names,
not names of individual columns, in their opening command. Review the
names in this statement, and change column names to the names of their
tables.


-2945	You may apply the after add, update, query, or remove commands to
a table only -- not a column.

Aggregates (AVG, MIN, MAX, COUNT, TOTAL) can only be performed on
fields that are associated with tables (not on DISPLAYONLY fields), and
the tables must be listed in the opening command of the same control
block. Revise the form specification, and recompile.


-2946	You may not calculate an aggregate on the display-only field name.

Aggregates can only be performed on fields that are associated with
tables (not on DISPLAYONLY fields), and the tables must be listed in
the opening command of the same control block. Revise the form
specification, and recompile.


-2950	The column name has no section which starts at 1.  Remember that
the first subscript is one, not zero.

Multiple substrings from the same column are assigned to display
fields. However, the substrings do not cover adjacent, nonoverlapping
portions of the column. Either there is no first section (starting from
column 1), or one section overlaps another. Review the substrings that
are specified. Consider using a multiline edit field instead of a group
of substrings; it is simpler to code and provides better editing for
data entry.


-2951	The left and right delimiters must be specified in a two character
string.

The DELIMITERS instructions require a string of exactly two characters,
the left and right delimiter (marker) characters to be used when
displaying fields. The characters can be the same, but there must be
two of them.


-2952	In order to use a picture, the picture length must be the same as
the display field length.

The string that is specified with the PICTURE attribute must have
exactly the same length as the field as depicted in the SCREEN section.
Review the definition of this field, and make the two lengths agree.


-2953	The name name is not a database column in this form.

All the columns that are named in a COMPOSITES list must be defined in
the ATTRIBUTES section. Check the spelling of all the names, and make
sure that they have been defined.


-2954	You have exceeded the maximum of number control instructions.

The INSTRUCTIONS section of this form has exceeded the ability of the
form compiler to handle it. Remove some instructions to simplify the
form.


-2955	The name field-tag is not a displayed field in this form.

The name that is shown appears in the ATTRIBUTES section but nowhere in
the SCREEN section. Check the spelling of the name; it is wrong in one
of those places, or it has been omitted from the screen layout.


-2956	You may not set display field field-tag to a value because
none of its associated database columns belong to the same table as
table, nor is it a variable display-only field.

You cannot assign values in a LET statement across tables. All columns
that are associated to the field-tag in a LET statement must belong to
tables that are named in the opening command of the control block, or
it must be a display-only field.


-2957	You may not set the next field to that-tag because none of its
associated database columns belong to the same table as this-tag.

The field that is named in a NEXTFIELD statement must be associated
with the same table as the current field. Review the relationships
between columns and tables in this form, and revise it.


-2958	You may have a maximum of ten parameters in a C-function.

This improper call to an external C function has too many parameters.
Find some way to pass the same information in fewer parameters.


-2959	Two tables may join with a maximum of limit column pairs,
including all components of composite columns.

A limit exists on the number of columns that are involved in a join.
This limit includes both the join columns that are named in an
ATTRIBUTES statement and those that are named in a COMPOSITES statement
for the same table.


-2970	The column name joins with other columns, but it is not indexed.
It is recommended that columns be indexed for cross-table queries.
Performance will be much improved by creating an index.

The presence of an index on at least one of the columns that are
involved in a join can make join operation much faster. However, an
index is not required when one or both tables are small (dozens of
rows). Consider creating an index on all join columns before you put
the form into production.


-2971	This column is not a character column, and therefore cannot be
subscripted.

This statement contains a subscript, a pair of numbers in square
brackets, after a column name. However, the data type of the column is
not CHAR, VARCHAR, or TEXT. Only such columns can be subscripted. Check
that you named the correct column. If you did, check its definition in
the database.


-2972	This column cannot be right justified or zero-filled because its
displayed width does not match the actual column width.

In order to use the RIGHT or ZEROFILL attributes, make sure that the
field size (as depicted in the SCREEN section) is exactly the same as
the width of the database column. Review this statement, the screen
layout, and the definition of the table in the database to make sure
these sizes agree.


-2973	There may be only one dominant column in a display field description.

This statement defines a join list, a list of two or more column names
that are related to the same form field. In such lists, an asterisk
that precedes a column name indicates that column is the dominant
column in a verify join. Only one such column is allowed in any join,
but this list contains two or more. Review the documentation on verify
joins, and choose a single dominant table.


-2975	The display field label tag-name has not been used.

The indicated name was defined in the SCREEN section but not in the
ATTRIBUTES section. Review the tags in each section, and revise the
form so that all tags are defined.


-2976	The end of the form has been reached prematurely.

This form specification has a SCREEN section but no TABLES or
ATTRIBUTES sections. Complete the form specification.


-2977	Table table1 cannot be a master of table table2 because
they do not join.

The two tables that are named in a MASTER OF instruction must be
joined. A join between tables is expressed by naming columns from both
tables in one statement in the ATTRIBUTES section. Check the spelling
of the table names here, and review the attribute statements.


-2978	The column column1 and the column column2 cannot be joined columns
because their types or lengths are different.

The columns in a join must contain data from the same domain. The fact
that these columns have different types or (if they are character
columns) different lengths indicates that their contents are not from
the same domain. Check the spelling of the column names to make sure
that you named the correct columns. Review the design of the database,
and make sure that these tables are meant to be joined on these
columns.


-2984	The table identifier table is defined more than once.

Correct the statements in the TABLES section so that each table is
defined just once. Possibly you have defined an alias that is the same
as a real table name.


-2985	The table identifiers name1 and name2 represent the same table.

In the TABLES section, these two names are defined in such a way that
they refer to the same database table. One or both of them is a table
alias. Change the statements so that each name stands for just one
table and each table has just one name.


-2986	The form specification has exceeded the maximum of limit
master/detail pairs.

A restriction exists on the number of master-detail pairs that can be
supported in one form. You must find a way to simplify the form.


-2987	The form specification has exceeded the maximum of limit screens.

A restriction exists on the number of screen layouts that can be
supported in one form. You must find a way to simplify the form.


-2988	FORMBUILD has run out of memory.

The form compiler cannot get enough data memory to process the form
specification. You must find a way to simplify the form.


-2989	The column name is a reference column, but it is not indexed.
It is recommended that reference columns be indexed for lookups.
Performance will be much improved by creating an index.

You have defined the indicated column as a reference column using the
LOOKUP attribute. Whenever the operator enters a value in the field, it
will be looked up in this column. Such a lookup operation is quick when
an index is present, but no index on the column exists at this time.
Without one, a lookup might be extremely slow. Unless the field does
not allow operator input (in which case you should remove the asterisk)
or the table is very small (a few dozen rows at most), you should
create an index for this column before you put the form into use.


-2990	The columns column1 and column2 are not in the same database table.

All columns that are cited in a single LOOKUP attribute must belong to
the same table. Check the spellings of the names, and make sure that
they are the columns you intended.


-2991	Warning: Only the first screen of your multiple-screen form
will be displayed under 4GL.

This warning appears when you use the 4GL forms compiler to compile a
multipage PERFORM screen. A 4GL program can display only the first page
of a multipage form. If the form specification has more than one SCREEN
section, it has been purposely divided into multiple pages, and you
will have redesign it for 4GL. If it has only a single screen layout,
the 4GL forms compiler has split it into two pages because it will not
fit on the screen. The form design might not allow for the four screen
lines that 4GL reserves.


-2992	The display label name has already been used.

The forms compiler indicates that name has been defined twice. These
names must be defined uniquely in the form specification. Review all
uses of the name to see if one of them is incorrect.


-2993	There is a circular join path specified in the form.

This form defines a series of three or more joins such that table A
joins to table B, table B joins to table C, and table C joins to table
A. The circularity might not be obvious due to the use of table-alias
names. Review all the statements in the ATTRIBUTES section and any
COMPOSITES statements, and draw a diagram of the join relationships.
Then modify the form so that no circular joins are created.


-2994	The form has exceeded the maximum number of joins between tables.

A limit exists on the number of joins that can be specified. You must
find a way to simplify the form.


-2995	The form has exceeded the maximum number of tables contained in joins.

A limit exists on the number of tables that can be contained in one
join. You must find a way to simplify the form.


-2996	The unanticipated error number os-error has occurred. 
        Contact Technical Support.

The error number that is displayed came from the host operating system.
RDS was at one time the name of Informix Software. This error should
not occur. If the error recurs, note all circumstances and
contact IBM Technical Support.


-2997	See error number.

The database server returned the error number that is shown. Look it up
in this document. Also look for other error messages that might give
more information or contact IBM Technical Support.


-2998	Operating system error os-error: text.

The error that is displayed came from the host operating system. This
error should not occur. If the error recurs, note all circumstances
and contact IBM Technical Support.


-2999	SQL server terminated.

The application has lost contact with the database server. Someone
might have shut down the database server, or an internal error might
have damaged a pipe between the application and the database server. In
a local area network system, the database server process or thread in
the file server might have been terminated, or the file server might be
down. Look for other messages, especially operating-system messages,
that might give more detail.


-3000	ISAM or system error number number.

Look up the error number in the finderr utility.


-3001	There are no forms in the current directory.

You can run only forms that are present in the current directory or a
directory that is named in your DBPATH environment variable. Change
directories to the one that contains the desired forms, or change the
contents of DBPATH.


-3002	There are no BLOB fields to view.

You selected the View menu option. This option lets you view the
contents of TEXT and BYTE fields of a form, but this form has none.

-3003	This BLOB field is empty.

You selected the View menu option. The cursor is positioned in a field
that represents a BYTE column, and you pressed the ! key to edit the
contents of the field. However, the field is null; no data exists to
view. Use Query to select a row that includes nonnull data in this
field.


-3005	You do not have permission to access the form form-name.

The form file form-name does exist; however, your account does not have
operating-system permissions to read and write it.


-3006	An unknown code has been found in the .frm file. Recompile your form before running it again.

Recompile the form to make sure that the .frm file has not been
corrupted. If the same error occurs, check that you are running
FORMBUILD and PERFORM products at the identical version level (version
numbers are displayed when the commands are executed from the command
line if you do not use the -s option). If the error recurs, note
all circumstances and contact IBM Technical Support.


-3007	Your form is incompatible with the current version
of PERFORM. Recompile your form before running it again.

Use FORMBUILD to compile the form, then run PERFORM again.


-3010	Database database-name not found.

The database that is named in the DATABASE section of the form could
not be opened. Either it could not be found, or your account has not
been granted CONNECT privilege for it. You can use Informix SQL to
separate these cases. Use Select option from the Database menu. If
database-name is listed, the database can be found but could not be
opened.

The database server looks for a database first in the current directory
and then in directories that are named in the DBPATH environment
variable. Check to see if database-name.dbs exists in one of those
directories.


-3011	A table is locked -- no reading or writing is permitted.

Because another user has locked a table in exclusive mode, PERFORM
cannot continue. Rerun the transaction when the table is not locked.


-3019	Unanticipated error number has occurred; call Technical Support.

Note all circumstances and contact IBM Technical Support.


-3020	The table table-name is not in the database. Build your form again.

A table that is listed in the TABLES section of the form cannot be
found. Review the DATABASE statement to ensure that the form is using
the correct database. If so, and if the table name is spelled as you
intended, the table has been dropped or renamed. You can use
Informix SQL to check table names under Info selection in the Tables
menu. Revise the form to use the correct name.


-3030	The column column-name is not in the database. Build your form again.

The tables that are specified in the TABLES section of the form do
exist, but the column column-name, which was named in the ATTRIBUTES
section, does not. Check the spelling of column-name against the
actual table. The table might have been altered, or the column may have
been renamed. You can use Informix SQL to check column names under Info
selection in the Tables menu. Revise the form to use the correct column
name.


-3031	The form form-name cannot be found or opened.

PERFORM cannot locate the compiled form form-name.frm in the current
directory or in a directory that is named in the DBPATH environment
variable. Or if it did find the file, it could not open it. Check the
spelling of the name. Verify that the file exists, and check that your
account has read access to it.


-3035	The column column-name has changed column type. Build your form again.

The column column-name, which is named in the ATTRIBUTES section of the
form, no longer has the data type that it had when the form was
compiled (the table has been altered since). Check the present data
type; then examine the form specification to make sure that it will
display the column in a field of the appropriate size. Modify the form
as required, and rebuild it.


-3037	The column column-name is not a composite column. Build
your form again.

The column column-name is mentioned as part of a COMPOSITE in the
INSTRUCTIONS section of the form specification. However, no composite
index (an index over all the columns of a composite key) exists over
this column and its fellows in the database. After the form was
compiled, the composite index was dropped. Either it should be
restored, or the form should be revised.


-3050	Operating system error. Cannot open a temporary file.

PERFORM is trying to open a temporary file that it created earlier.
Look for operating-system error messages that might give more
information. Possibly you have exceeded a limit on the number of open
files. If the error recurs, note all circumstances and contact
IBM Technical Support.


-3060	Operating system error. Cannot create a temporary file.

PERFORM is trying to create a temporary file but cannot. On UNIX
systems, check that your account is allowed to write in the /tmp
directory or the directory that is named in the DBTEMP environment
variable and that the directory is not full. Possibly you have exceeded
an operating-system limit on the number of open files. In that case,
you will have to reduce the number of tables that are used in this
form.


-3081	The specified output file name has a bad extension.

The output filename cannot end in any of the following suffixes:
.dat, .idx, .aud, .per, .frm, .ace, .arc, .sql, or .unl.

Select a different filename.


-3082	No program specified to edit this BYTE field.

The form user has keyed! in the display of a BYTE field. However, no
program= attribute was defined for this field.


-3101	The column column-name does not allow null values.

When you added data to a table, you did not specify data for the column
shown. However, that column is defined in the database as not allowing
null values. You cannot add the row unless you supply a value.


-3120	Error in field.

The data that is entered into the current field is not appropriate for
the data type of the field.


-3200	There are no rows in the current list.

You must first query the table before you execute the UPDATE, REMOVE,
NEXT or PREVIOUS command.


-3210	The current row position contains a deleted row.

Another user has just deleted the row now displayed. That row no longer
exists. You cannot use the UPDATE, REMOVE, NEXT, or PREVIOUS commands
until you use QUERY to display a valid row.


-3260	This is an invalid value -- it does not exist in table-name table.

This column has a verify join with a column in table table-name. Any
value that is entered in this field must be found in that table. The
value just entered was not found. Enter a correct value.


-3261	Invalid value -- its composite value does not exist in table-name table.

This column is listed with others as a COMPOSITE in the INSTRUCTIONS
section of the form specification. It is shown there as needing to be
verified against matching columns of table table-name. The value you
have entered, considered with the other values in the composite, does
not occur in table-name.


-3265	A required index on column-name is missing. Restore.

All dominant columns (those with asterisks before their names) in
verify joins must be indexed. Perhaps the index has been dropped since
the form was compiled. Re-create the index, and run the form again.


-3300	There are no more rows in the direction you are going.

You reached the beginning or the end of the current list of rows. You
can start a new query with the QUERY command, or use the PREVIOUS or
NEXT command to reverse through the list the other way.


-3400	There are no rows satisfying the conditions.

No rows in the database match the values that are entered in the form.
Enter different values, and query again.


-3420	This value is not among the valid possibilities.

A list or range of acceptable values has been established for this
column (via an INCLUDE attribute in the form-specification file). You
must enter a value within the acceptable range.


-3421	The joined field table.column cannot be selected by the current user.

This form queries the column in the table shown in joining two tables.
However, your account name does not have SELECT privilege for that
table and column. Contact the owner of the table or a Database
Administrator to be given this privilege.


-3430	This field requires an entered value.

The row cannot be added to the table until a value has been entered in
the indicated field. A REQUIRED attribute in the form-specification
file has been associated with the column. Enter a value in the field.


-3450	Someone else has deleted a row which is in your list.

Another user, accessing a table that is queried by your form, has
deleted a row that your latest query selected. Restart your query to
get an accurate selection of rows. Version 4.0 and earlier of PERFORM
might return this error message when you query a view. Early versions
of the product did not support views.


-3451	This form has no fields requiring data entry.

None of the fields in this form specification permit data entry; they
are all marked as either LOOKUP or DISPLAYONLY without the ALLOWING
INPUT keywords.


-3452	Add, Update and Remove operations not allowed on a remote table.

The table that is being queried is in a database that is external to
the current database (the one that is named in the DATABASE section of
the form). Such tables cannot be modified. (This message is not
currently used. You might encounter it with products of Version 4.0 or
earlier.)


-3460	This row has been locked by another user -- try again later.

Another individual is currently using the table. Wait a few moments,
and reenter your statement.


-3500	The two entries were not the same. Try again.

To guard against typographical errors, you must enter the value in this
field twice. The values that are entered must be identical. Carefully
reenter the data. (A VERIFY attribute in the form-specification file
has been associated with this column.)


-3600	No detail table has been specified for this table.

You must first establish this table as the master of another table in
the INSTRUCTIONS section of the form.


-3610	No master table has been specified for this table.

You must first establish this table as the detail of another table in
the INSTRUCTIONS section of the form.


-3620	You do not have permission to write into this table.

You do not have insert or update privilege for the table, so you cannot
insert or update a column. Check with the owner of the table or the
person who has Database Administrator (DBA) privilege for the database
for the necessary permission.


-3630	Operating system error. Cannot write into a temporary file.

PERFORM earlier created a temporary file but now cannot write into it.
The most likely cause of this error is that the disk has filled up.
Alternatively, another user might have deleted the temporary file after
it was created.


-3650	You must first remove table-name rows which join this row.

The row you wish to remove is the dominant member of a verify join. You
cannot remove this row without first removing any rows that join it.


-3651	You have exceeded the number of opened tables allowed by your system.

Executing the statement would require that PERFORM exceed an operating
system limit on the number of open files. You will have to reduce the
number of tables that are included in the form specification.


-3660	You must first update table-name rows which join this row.

The row you wish to update is the dominant member of a verify join. You
are not allowed to change a row value in this column that would
invalidate joined rows in other tables. You must first update the rows
in table-name that join this column.


-3670	Operating system error. Cannot seek into a temporary file.

Earlier PERFORM created a temporary file; now it cannot change the file
position in that file. Perhaps another user deleted the file after it
was created. Look for messages from the operating system that might
give more detail on the problem.


-3680	PERFORM has run out of memory.

PERFORM cannot get the memory data space it needs. You will have to
reduce the complexity of the form.


-3690	Detail cannot be executed -- tables first and second do not join.

A master-detail relationship for these two tables is specified in the
INSTRUCTIONS section of the form. However, the two tables do not join.
Add a join attribute in the ATTRIBUTES section.


-3700	Permission not granted to allow reading of table-name.

Your account has not been granted SELECT privilege for the table
table-name. The owner of the table, or a person who has Database
Administrator (DBA) privilege for the database, can grant this
privilege level to you.


-3710	Permission not granted to allow update of table-name.

Your account has not been granted UPDATE privilege for the table
table-name. The owner of the table, or a person who has Database
Administrator (DBA) privilege for the database, can grant this
privilege level to you.


-3720	Permission not granted to allow add of table-name.

Your account has not been granted INSERT privilege for the table
table-name. The owner of the table, or a person who has Database
Administrator (DBA) privilege for the database, can grant this
privilege level to you.


-3730	Permission not granted to allow remove of table-name row.

Your account has not been granted DELETE privilege for the table
table-name. The owner of the table, or a person who has Database
Administrator (DBA) privilege for the database, can grant this
privilege level to you.


-3731	Cannot open the table table-name.

The database server cannot open the file that represents this table.
You might have exceeded an operating-system limit on open files; if
that is the case, you will have to reduce the number of tables that are
included in the form. However, first make sure that a file exists for
this table in the database directory (its name is database-name.dbs)
and that your account has read access to it. The name of the table file
is composed of table-name, a 3-digit number, and the suffix .dat.


-3750	Command aborted.

No current IBM Informix product returns this message. If the error recurs, note all circumstances and contact IBM Technical Support.


-3751	Type carriage return to continue.

No current IBM Informix product returns this message. If the error recurs, note all circumstances and contact IBM Technical Support.


-3752	You cannot use this editing feature because a picture exists.

This field is defined (in the form-specification file) with a PICTURE
attribute to specify its format. You cannot use certain editing keys
(for example, CTRL-A, CTRL-D, and CTRL-X) while you are editing such a
field. Use only printable characters and backspace to enter the value.


-3754	You have exceed the pseudo machine stack space.

Reduce the complexity of the form. In particular, reduce the level of
nesting of loops and IF statements, and break very complicated
expressions in LET statements up into simpler ones.


-3755	The selected display-only field tagname cannot be accessed.

The field tag name that is passed to the C function pf_nxfield() is the
name of a display-only field. Because the user is not allowed to enter
data in a display-only field, the cursor cannot be located in one.
Check the tag name that is supplied; if it is the one that you
intended, review the attributes of that field, and find out why it has
been set display-only.


-3756	The selected field tag-name cannot be assigned a value at this time.

The specified field is not in the current table. The cursor is not
allowed to enter such fields, and values cannot be set in them.


-3757	A conversion error has occurred for the field tag-name.

The data type of the value that is passed to pf_putval() could not be
converted into the data type of the screen field tag-name. Review the
value and the valtype flag versus the data type of the field in the
form definition.


-3758	The next selected field tag-name is not in the current table.

The field tag name that is passed to the C function pf_nxfield() is the
name of a field that is not in the current table. The cursor is not
allowed to enter such fields.


-3759	The display field field-name does not exist in the form.

The field tag name that is passed to the C function pf_nxfield() is not
defined in this form. Review the string that is passed; if it is as you
intended, inspect the form definition to see what has been changed. A
common error is to confuse the tag name, which is used in the screen
layout and to the left of the equal sign in the ATTRIBUTES section,
with the field name, which is the column name used to the right of the
equal sign in the ATTRIBUTES section. The latter is used when
referring to fields.


-3760	Matching may not be used between non-character fields or expressions.

An IF-THEN-ELSE statement in the INSTRUCTIONS section of the form uses
the keyword MATCHES to compare two fields. However, at least one of the
fields is not a character field, and you can use MATCHES only with
character fields. Review all uses of MATCHES in the INSTRUCTIONS
section to make sure it is applied only to character fields.


-3761	ERROR -- attempt to divide by zero has occurred.

A division expression in the INSTRUCTIONS section has a zero divisor.
Review all uses of division in the INSTRUCTIONS section, and look for
any that might have a denominator of zero (possibly the denominator is
a field into which the user entered a zero). Protect these expressions
with tests for zero using IF-THEN-ELSE.


-3762	The user function funcname defined in the form could not be found
in the C function definition table userfuncs.

The INSTRUCTIONS section of the form includes a call to a function
funcname, and sperform assumes that this is the name of an external C
function. However, the name and address of each such function must
appear in a static array that is named userfuncs. That array, along
with the computer code of the external functions, is linked with a
custom version of sperform. Because name did not appear in the array,
sperform cannot call it.

Check that you are executing the correct, customized version of
sperform (the original version of the program has no external functions
linked to it). Check to see if funcname is correctly spelled. Then
examine the source of the C functions to make sure that the userfuncs
array is defined correctly.


-3763	This program has an invalid serial number. Consult your
installation instructions.

The IBM Informix software product has been improperly installed. Review the
installation procedure. If you need help, contact IBM Technical Support.


-3764	Screen too small. Must be at least 6 lines and 30 columns.

PERFORM cannot operate in a screen or window that is smaller than 6
lines by 30 columns. You must increase the size of the terminal window
in which you are executing PERFORM. The absolute minimum is 6 lines by 30
columns. However, the window must also be large enough to contain
the form that will be displayed.


-3765	Form image too large to fit in the screen window.

The screen image as defined in the form file is larger (either wider or
taller) than the dimensions of the current window. If the current
window is the main window, its size is set by the dimensions of the
terminal in use. If the current window was opened with OPEN WINDOW, you
should specify more rows or columns. Review the form file, and either
reduce the size of the screen image or display it as a bigger window.


-3766	Usage: SPERFORM [-s] [-d database] filename . . .

This message displays the command-line option of the sperform program.


-3767	An unknown option option name was found on the command line.

Make sure that you typed the correct command-line option.


-3999	System internal error in file filename at line number.

This error should not occur. If the error recurs, note all
circumstances and contact IBM Technical Support.


-4000	Intrinsic member functions cannot be declared as SHARED.

This statement attempts to declare one of the intrinsic members of this
class (the class constructor, or the !copy() or !derive() function) as
SHARED. You can declare these functions in order to extend them, but
the declaration cannot specify SHARED.


-4001	Fundamental type name "type" cannot be used as a class name.

This CLASS statement attempts to declare a class with the same name as
a built-in data type such as INTEGER. Find a different name for your
class.


-4002	Argument n of function "name" is not convertible to its formal
parameter's type.

The indicated argument expression or default argument expression is not
compatible with the declared type of that function argument. Review the
declaration of the function to see what type is expected.


-4004	Member "name" of class "class-name" cannot be accessed in this context.

The compiler is aware of the member, but the access control for the
member makes it inaccessible in the statement. Check for a PUBLIC,
PRIVATE, or PROTECTED declaration. Member variables default to
PROTECTED access, but member constants and member functions default to
PUBLIC.


-4005	You cannot redefine private base member function "name".

This FUNCTION declaration in a class declaration names a member that is
inherited from a base class of this class. However, that inherited name
is declared as PRIVATE, so it cannot be overridden in this class.
Review the declarations of all base classes; then choose a name for
your function that will be unique to this class.


-4007	Record member "name" is undefined.

This statement refers to record.name. While the variable record is
indeed a record, name is not the name of one of its component fields.
Find the definition of record (it might be in the GLOBALS file), and
verify the names of its fields. Then correct the spelling of name.


-4009	Non-shared member "name" cannot be used in default values.

A default value expression in this function declaration refers to the
value of a normal member variable of this class. This action is not
supported. Default value expressions can refer to variables, but they
must be declared at the module level or be shared members of classes.


-4010	Include file "pathname" is not found.

This INCLUDE statement names a file that the compiler cannot find. If a
complete pathname is used, the file does not exist. Check the spelling
of all the directories and the filename. If only a filename is given,
that file could not be found in the current directory, in
$INFORMIXDIR/incl, or in any directory that is specified in a -H
compiler argument. Perhaps one of these arguments was omitted or
misspelled.


-4011	Class "name" is not declared.

This statement refers to a class of the indicated name, but no such
class has been declared to this point in the source module. Check the
spelling of the name. Make sure that all desired include files have
been included.


-4012	You can only specify a base clause for class constructors.

This function declaration is followed by a colon, class-name, and
argument list (in short, a base clause). This syntax is used only when
declaring the constructor function for a class (the function whose name
is the same as the name of the class), in order to specify function
arguments to the constructor of the base class.


-4013	Invalid intrinsic member function "!name".

The supported intrinsic member functions are !copy(), !derive(), and
the class-name (the constructor). No other functions can be declared
with an initial exclamation mark. Check the spelling of name. If it is
not one of the supported names, declare the function as a normal member
function.


-4014	You cannot specify the RETURNING type for intrinsic member functions.

This declaration of an intrinsic member function includes a RETURNING
clause. This action is not supported. The compiler defines the returned
value from an intrinsic member function. Omit the RETURNING clause.


-4016	Each class declaration must have at least one member function.

This class declaration contains no member functions. A class must
contain at least one, because the point at which the first (or only)
member function is defined is also the point at which the class itself
is defined. If the class has no other members, declare its constructor
function. Because the constructor is declared, it must also be defined
(although the definition need not contain any statements beyond
FUNCTION and END FUNCTION unless you wish).


-4018	The columns specified in the THRU option do not belong to the same
table.

This statement refers to some table first THRU (or THROUGH) last;
however first and last are not both columns in that table. Check the
spelling of these column names. Make sure that the correct database is
current at this point in the compilation (the most recent preceding
DATABASE statement).


-4019	The columns specified in the THRU option appear in the reverse order.

This statement refers to some aggregate (table, record, or object) with
the qualification "first THRU (or THROUGH) last." However, first and
last do not appear in that order in the aggregate; last precedes first.
Check the spelling of the two names. Make sure that the correct
database is current at this point in the compilation (the most recent
preceding DATABASE statement).


-4020	Function "member" is not a member of class "class".

This statement tries to invoke class::member(), either directly or as
object.member(). However, no such member function is available from
that class. Check the spelling of the member name and the class or
object name. If the reference is class::member(), review the
declaration of the class for the correct spelling of the names of its
members. If the reference is through an object, make sure the object is
declared as having the class you intended. You can only call members of
the stated class (the class it is declared to have) of an object. If
you want to call a member of an actual class (the class that you think
will be present at execution time), use the CAST operator.


-4021	A class member cannot be named "SELF".

You cannot use SELF, regardless of letter case, as the name of a member
variable, member constant, or member function. The identifier SELF is a
built-in identifier that New Era provides automatically. You can refer
to SELF to make your code more readable when a member has the same name
as an identifier that is declared as in the global or module scope, or
to access a member when a local entity has the same name.


-4022	The reserved keyword "name" cannot be used as a 4GL identifier.

Keywords cannot be used to name a function, report, variable, or
constant. Consult the IBM Informix 4GL Language Reference for a list of
reserved words.


-4023	A class cannot derive from itself.

This CLASS statement asserts that the class is DERIVED FROM itself.
This action is not supported. Either remove the clause, or name another
base class.


-4024	Identifier "name" has multiple declarations with different types.

Multiple declarations of a given name in a given scope must be
consistent (that is, they must have the same type). The identifier that
is shown has been declared with a different type.


-4025	Function "name" is already declared in the class.

A function with the specified name has already been declared in the
current class.


-4026	Member "name" is already defined in base class "class".

A derived class inherits all the members of its base classes. You
cannot add a member that has the same name as a member from the base
class.


-4029	The type of expression on which member "name" is selected is not
an object reference or record.

This statement refers to .name as if name were a member of a record or
of a class. However, the expression that precedes the dot is neither
the name of a record nor a reference to an object. If you think name is
a member of a record, check the definition of the record, and make sure
that its name is correctly spelled immediately preceding the dot. If
you think name is a class member, make sure that the dot is preceded by
an expression that yields a reference to an object of the right class.


-4030	Warning: Cannot further expand an expanded expression.

An expression cannot have multiple .* suffixes.


-4032	Warning: The structure part of the THRU member "name" is ignored.

The statement included a THRU phrase of the following form:

   rec.first THRU rec.last

The correct form is:

   rec.first THRU last

The logic is that first THRU last modifies rec.


-4033	Base member name "name" cannot be used for class name.

This statement attempts to declare a class name, but it also specifies
a DERIVED FROM clause. One of the members that is inherited from that
base class is called name. The name of a class cannot be the same as
the name of one of its members because the constructor function must
use that name. Review the inheritance for this new class, and then
choose a different name for it.


-4034	SQL statements and two-pass reports are not allowed when
compiling with the "-nosql" switch.

The compiler was invoked with the "-nosql" switch, but the source
included either explicit SQL statements or a two-pass report (which
involves SQL statements). Compiling with "-nosql" causes generation of
.c code (instead of .ec code) in which no SQL statements are allowed.


-4035	Function "name" cannot be redefined in a derived
class "class" with different access permissions.

The parent class of the function "name" has an access permission
(PRIVATE, PROTECTED, or PUBLIC) different from this declaration.


-4036	Function "name" cannot be redefined in a derived class
"class" with different scope of reference.

The base class of the function "name" is declared as SHARED and "name"
is not, or "name' is declared as SHARED and its base class is not.


-4037	Multiple declarations of function "name".

Although you can declare multiple distinct versions of a user-defined
function, you cannot do so for functions such as a name that IBM Informix software defines.


-4041	Including "file" again will cause an infinite loop.

This INCLUDEAGAIN statement specifies a file that includes itself. If
you force it to be included, a loop will follow. Make sure that this is
the file you intended to include. Review the contents of the file.


-4042	This form of declaration can only appear in the global (module) scope.

The declaration for identifier::identifier can appear only in the
global scope.


-4043	Illegal EXTERNAL declaration.

This statement tries to declare an EXTERNAL classname::membername. A
program cannot use a global EXTERNAL declaration to declare a shared
member variable. To accomplish this, include the class description of
which it is a SHARED member.


-4044	Member "name" not defined in class "class".

This statement tries to access class::name. However, no such variable
or constant is defined for that class. Check the spelling of the member
name and the class or object name. If the reference is class::name,
review the declaration of the class for the correct spelling of the
member names. If the reference is through an object, make sure that the
object is declared as having the class that you intended.


-4045	Member "name" is defined in class "class", but not as a
variable or constant.

The identifier name is defined in the class, but as something other
than a variable or a constant, such as a member function. Check the
spelling of the member name and the class or object name.


-4046	Formal declaration appeared previously for this informal function
definition.  The formal declaration is invalidated.

A formal declaration for this function appeared previously in this
source module. At this point, a definition in the informal function
syntax appears.


-4047	Mixed informal and formal function declaration syntax.
Return type is ignored.

A function declaration has blended informal (FUNCTION program block)
and formal (FUNCTION prototype) syntax. The parenthesized list of
arguments gave only names, with the types to be defined later in a
VARIABLE statement, but the declaration then continued with a RETURNING
clause, available only in the FUNCTION prototype style of declaration.
Consult the IBM Informix 4GL Reference Manual.


-4048	Driver statements for a report are not allowed within the
body of that report.

This statement defines a record variable and uses initialization
expressions when it declares one or more members. This action is not
supported. You can use an initialization expression only when you
define a simple variable.


-4050	Function "name" has been used and hence declared as informal
before this formal declaration.

A call to this function appears prior to this declaration of it. Calls
to undeclared functions are supported only for compatibility with
previous versions of the 4GL language. When the compiler encountered
the call to the function, it assumed an informal declaration for it.
Move the declaration of the function to the top of the source module so
that it precedes calls to it.


-4051	Member "name" is defined in class "class", but not as a function.

This statement tries to invoke class::member(), either directly or as
object.member(). The class has a member of that name, but it is a
member variable, not a function. Check the spelling of the member name
and the class or object name. Review the declaration of the class for
the correct spelling of its member names.


-4052	Identifier "name" is not defined in the global scope.

A constant or variable is used that is not locally defined, so the
compiler assumes that it is to be globally defined but does not find it
there either.


-4053	Function "name" has already been declared with a different prototype.

The function that is described in this FUNCTION statement has already
been declared, and the previous declaration disagrees with this one in
the number or type of the arguments. Review included files for
declarations of this function, and make those statements consistent.


-4054	Function "name" has already been declared with a different return type.

The function that is described in this FUNCTION statement has already
been declared, and the previous declaration disagrees with this one in
the number or type of returned values. Review included files for
declarations of this function, and make those statements consistent.


-4055	Overriding the constructor of a base class is not allowed.

This FUNCTION declaration in a CLASS statement specifies a function
whose name is the same as the name of a base of this class. In other
words, you are trying to override the constructor function of a base
class. This action is not permitted. Review the names of members that
are inherited by this class, and choose unique names for its member
functions.


-4057	A class cannot be derived from a class with PRIVATE intrinsic functions.

This statement declares a new class with a DERIVED FROM clause.
However, the specified base class has one or more intrinsic functions
(class constructor, function such as !copy()) that are declared
PRIVATE. The intrinsic functions of a base class must be available for
calling from within the same functions of the derived class. Private
members cannot be called so; therefore, you cannot derive a class from
a base class with private intrinsic functions. Make sure that you
specified the correct base class, and review its declaration.


-4058	Symbol with constructor name is not a function.

A class name that is followed by the name of a member variable or
constant is not allowed in this context.


-4059	More actual arguments than formal arguments for function "name".

This statement invokes function name, but it specifies more argument
expressions than were called for in the declaration of function name.
Check the syntax of the argument list. Review the declaration of the
function for the expected number and type of arguments.


-4060	Fewer actual arguments than formal arguments without defaults for
function "name".

This statement invokes function name, but it specifies fewer argument
expressions than were called for in the declaration of function name.
Check the syntax of the argument list. Review the declaration of the
function for the expected number and type of arguments.


-4062	Warning: Informal function "name" returns (or is expected to return)
different number of results at different places.

The function name is called at more than one place in this source
module, and it is implied to return different numbers of arguments.
Possibly this correct; it is possible to write functions that return
different numbers of values in different circumstances. However, you
should check that this is the case and that the expected number of
values will be returned in each case.


-4063	Function "name" should not return any results.

This statement invokes the function "name" in a context that implies it
should return one or more values. However, that function has been
declared earlier in this module without a RETURNING clause or with
RETURNING VOID. Make sure that you have called the function you
intended; then review its declaration.


-4064	Type of returned value does not match the declared return type of
function "name".

The function "name" was not explicitly declared but has already been
called with one prototype, and the current call provides a different
prototype. Make sure that you have called the function you intended.
Then review its earlier call, or create an explicit declaration for
it.


-4065	Multiple exception handlers for the same exception class "name".

Two or more ON EXCEPTION statements exist for the same exception class
in this block. Only one can be invoked. Review the statements, make
sure that each specifies the correct exception class, and remove or
combine duplicate handlers.


-4066	RETURN statement not allowed in the body of intrinsic functions.

This statement is part of the definition of an intrinsic member
function (the class constructor, !copy, and so on). These functions do
not have explicit result values; or more precisely, code that the
compiler automatically generates produces their returned values. Delete
the RETURN statement.


-4067	This RETURN statement must provide a value.

This RETURN statement does not specify a value to return, but the
function was declared with a RETURNING clause that specified other than
VOID. If you want to terminate a function early without producing a
value, you could put a label on the END FUNCTION statement and use a
GOTO, or redesign the function logic to avoid the need for an early
exit.


-4068	Function "class::member" has not been declared as SHARED.

This statement uses the double-colon syntax to invoke a class-member
function. However, the specified member function was not declared as
SHARED. Only shared member functions can be called this way; normal
member functions must be called through a reference to an object
because they need the object reference as the value of their SELF
reference. Check that you have specified the class and member that you
intended; then review the declaration of that class.


-4069	The type of expression on which member function "name" is
called is not a class.

This statement attempts to invoke the specified function using either
the scope resolution (::) operator or the record membership (.)
operator. However, the name to the left of the scope resolution
operator is not the name of a class in which name is a member, or the
name to the left of the record membership operator is not the name of
an object reference of which name is a member. If you intended to call
name through a reference to an object, use object.name syntax.
Otherwise, make sure that you have specified the class and member names
that you intended, and review the declaration of the class.


-4070	Cannot assign to "SELF".

This statement would assign a new value to the implicit function
argument named SELF. Since the value of SELF is used implicitly in any
reference to a member of the self object, assignment to it is not
permitted.


-4071	Cannot assign to constant "name".

This statement would assign a new value to name, but name was declared
(in this scope) with a CONSTANT statement. Constants do not have memory
locations and cannot be assigned new values. Check that name is the
identifier you intended to use. Then review its declaration. Possibly
you want to assign into a module-level variable name, but it has been
declared as a local constant or a member constant that takes precedence
in this context.


-4072	Cannot expand structure with no members.

The statement attempted to perform an expansion, but it failed. The
expansion was of the form object.*, but the object that is named does
not have any public member variables, so the expansion set is empty.
Check that you are referring to the correct class and member.


-4073	Beginning or ending name in THRU specification is not a member
of the target record.

This statement makes a reference to some structure (table, record, or
object) with the qualification "first THRU (or THROUGH) last". However,
first or last does not appear as an element of that aggregate. Check
the spelling of the two names.


-4074	No more than two substring index expressions are allowed.

The substring qualifier consists of a pair of integer expressions,
separated by a comma and surrounded by brackets (example: name[1,23]).
The first value cannot be larger than the second. Both must be positive
and no larger than the string length (or the declared length of the
receiving data type).


-4075	Simple string expressions must have type CHAR or VARCHAR.

The compiler expected a string expression but found an expression that
was neither CHAR nor VARCHAR data type.


-4076	Class of CAST object must be a base of class specified as right
argument.

You cannot cast an object to any class; you can only cast it as being
of a class that is derived from its stated class. In the CAST
expression in this statement, the stated class of the object reference
on the left is not a base class of the class that is named as the right
argument. Review the expression to make sure that you have specified
the object that you intended (possibly you need to use parentheses
around the object reference) and the target class.


-4077	This operation is not valid on an operand of this type.

The operator cannot accept operands of this type. Correct any other
errors that might have been reported, and verify that this operator is
defined for operands of this type. Then compile the program again.


-4078	Operand is missing, or is of a type that is not supported.

The operator has been directed to operate on an invalid type. Perhaps a
function returns VOID, a blob (TEXT or BYTE), or FOREIGN result. IS
NULL and IS NOT NULL operators can operate upon TEXT or BYTE and FOREIGN
operands and can receive assignment from other operands of the same
type or NULL.


-4079	Operation is not allowed in index expressions.

An operation such as expansion (.*), COPY, NEW, or THRU was attempted
in an index expression.


-4080	Warning: Operation on NULL returns NULL.

While the compiler was optimizing expressions, it found an expression
composed of literal values, at least one of which was NULL.


-4081	Warning: A DATETIME expression cannot be negative.

A "-" operator occurred with a DATETIME operand. No negative points
exist in time. INTERVAL can be negative, but DATETIME cannot. Inspect
the syntax of the expression, and revise it to make it greater than or
equal to zero.


-4082	Operands of MATCH and LIKE operations must be of CHAR or VARCHAR type.

This statement uses the MATCH or LIKE operator with an argument
expression that is numeric or binary. No automatic conversion of data
types exists in this case. Examine the expression. If it is written as
you intended, revise it to assign the values to character variables
(thus forcing their conversion to character) before you use them with
MATCH or LIKE.


-4083	Warning: Initialization of external variables will be ignored.

This is only a warning. This statement declares a variable with both
the EXTERNAL keyword and an initialization expression. You can
initialize a variable only at the point where it is defined (that is,
where memory is allocated for it). This is a declaration, not a
definition, so the initialization is ignored.


-4085	Cannot output expression of this type.

The statement attempted to output an expression of a type that cannot
be output, such as FOREIGN, or an expression that includes an
invocation of a function that returns VOID.


-4091	Cannot assign to or refer to an array as a whole. Use
indexing to refer to individual elements.

The compiler attempted to convert the result of one expression to
conform with the type of another expression, and only one of them was
an ARRAY. Either both must be ARRAY type, or neither can be.


-4092	Type mismatch between CLASS and non-CLASS type.

The compiler attempted to convert the result of one expression to
conform with the type of another expression, and only one of them was a
CLASS. Either both must be CLASS type, or neither can be.


-4093	Type mismatch between RECORD and non-RECORD type.

The compiler attempted to convert the result of one expression to
conform with the type of another expression, and only one of them was a
RECORD. Either both must be RECORD type, or neither can be.


-4094	Length of compared CHAR or VARCHAR types is different.

The compiler was attempting to process a comparison between two string
types (such as comparing function signatures), and the two strings had
different bounds.


-4095	Records have different number of fields or fields of incompatible types.

In this multiple-field assignment the values that are being assigned do
not correctly match to the fields in the receiving record or object.
Examine the syntax of the value expression; then review the
declaration of the receiving variable.


-4096	Expression class must be equal to or derived from result class.

The statement attempted to assign a value of one class to an object of
a different class that is not derivable from the former class.


-4097	Multiple declarations for class "name".

This class has been declared previously in the source module (perhaps
in an included file). Only one declaration is allowed. Find all
declarations of the class, and reduce them to one.


-4098	Type of expression that is expanded must be class or record.

This statement refers to name.* (or uses THRU notation); however, the
name it refers to is not declared as a record or as an object of some
class. Check the spelling of the name, and review its declaration.


-4099	Type to CAST to must be a class.

The right argument to the CAST operator in this statement is not the
name of a class. Review the syntax and spelling of the statement. Make
sure that you have included all necessary header files to declare
classes.


-4100	Illegal definition of constant identifier "name".

A name already established as that of a constant identifier has
appeared as a declaration for a new identifier. Suppose, for example,
that maxval has already been declared to be a constant in class x, and
then a later declaration of VARIABLE x::maxval INT occurs.


-4103	The compiler detected an internal error in file "name" at line
number.

Consult your system administrator or contact IBM Technical Support to
report this error.

Note the specified file name and line number. Then report this internal
error.


-4104	The type of a column value does not match the type of a variable.

The INITIALIZE statement cannot establish a match between the type of
the column value and the type of the corresponding variable.


-4106	An expression of type DATETIME is expected.

In an EVENT statement, a function definition or declaration, an
EXTERNAL REPORT statement, a HANDLER statement, a function invocation,
or just an expression, the compiler found something other than a
DATETIME expression.


-4107	An expression of type INTEGER or SMALLINT is expected.

In an EVENT statement, a function definition or declaration, an
EXTERNAL REPORT statement, a HANDLER statement, a function invocation,
or just an expression, the compiler found something other than a
INTEGER or SMALLINT expression.


-4108	An expression of type DATE is expected.

In an EVENT statement, a function definition or declaration, an
EXTERNAL REPORT statement, a HANDLER statement, a function invocation,
or just an expression, the compiler found something other than a DATE
expression.


-4109	An expression of type DATE or DATETIME is expected.

In an EVENT statement, a function definition or declaration, an
EXTERNAL REPORT statement, a HANDLER statement, a function invocation,
or just an expression, the compiler found something other than a DATE
or DATETIME expression.


-4110	You cannot use more than one of the REPORT TO options in the
OUTPUT section of a REPORT routine.

In this OUTPUT section, the statement REPORT TO appears more than
once. Only one such specification is allowed. Remove all but one.


-4111	Warning: The function name is declared informally. For stronger
type checking, use a function defined formally.

The compiler detected that function name is an informal function.
Possibly the function returned a different number of arguments in
different circumstances, or the function has no prototype
declaration. Although nothing is wrong with defining a function this
way, informal functions are more prone to errors at runtime. It is
recommended that you use formal function declarations (along with
function prototypes) that are less error-prone and that the compiler
checks more rigorously.


-4117	A constant expression is expected here.

At least one of the values in one of the constant expressions in this
CONSTANT statement cannot be evaluated at compile time. See the information on
constant expressions in the IBM Informix 4GL Reference Manual for
information on what types of operations can be used in constant
expressions.


-4118	Expressions of this data type are not allowed in constant expressions.

The indicated expression cannot be evaluated to a constant. Correct any
other errors that might have been reported against this expression, and
recompile.


-4119	Time-dependent functions must be used with the function
CONSTANT() in constant expressions.

One of the constant expressions in this CONSTANT statement refers to
function such as CURRENT, whose value depends on the current time. Such
functions have to be written as arguments to the CONSTANT() function,
which returns their value as of the time of compilation. (You cannot
use the time of execution in a constant value.)


-4120	Declare variable "name" either external or local to module,
but not both.

The specified variable has been declared or defined more than once. At
least one of those times declared it with EXTERNAL, and another was a
definition as a module variable (lacking either EXTERNAL or GLOBAL).
Review the declarations and definitions of name, recalling that some of
them might be in included files. If you intend name as a variable
private to this module, give it a unique name. (You can declare a
variable as EXTERNAL more than once, and you can declare it as EXTERNAL
and then define it as GLOBAL. Both of these things can happen as a
result of including header files, and they have well-defined meanings.
But it is contradictory to have a variable that is both external and
local to the module.)


-4121	Reports cannot be invoked through the CALL statement or in function
call expressions.

This statement attempts to call a report as if it were a function.
Although a report has the general form of a function definition, it
cannot be used like one. Check the names of functions that are called
in this statement; one is a report. If you meant to send a row of data
to the report, use the OUTPUT TO REPORT statement.


-4122	Parser limitations have been exceeded. Try to reduce complexity or
size of module.

The parser has returned an error that is NOT a syntax error. This error
could be caused by a parser-stack overflow (too many levels of nesting
within IF statements, WHILE statements, or the like) or by the parser
running out of parser-stack space (the module is too large). Try to
reduce the complexity of the code by splitting complex functions into
multiple functions or splitting the module into multiple modules.


-4123	CALL to function "name" must have a RETURNING clause.

The function name is declared as returning a result, so the CALL
statement must provide a RETURNING clause to receive the result.


-4125	Not defined/declared as a member in the class hierarchy "name".

The element indicated is either not declared, or is declared but not
defined, as a member of the class hierarchy "name."


-4126	Handler expected.

The identifier in the WITH clause of the HANDLE statement does not
identify a handler. If the identifier of the handler specifies a class,
check to see that the handler is declared as belonging to that class;
otherwise, check to see that it is declared as belonging to the
declared class of the target object.


-4127	Event expected.

The identifier before the WITH clause of the HANDLE statement does not
identify an event. The event must be declared in or inherited by the
declared class of the target object (which can be the SELF object).


-4128	Handler should be a member of either the same class, or else
a base class, of the object.

The indicated handler is declared in the program but is not a member of
same class as the object or of a base class from which the object is
derived.


-4129	Object name expected.

In the HANDLE statement, the event was prefixed with a "name." qualifier,
but the name is not that of a known object.


-4130	Handler can't be invoked directly.

A handler cannot be the object of an explicit CALL statement. The only
way to invoke a handler is through calling or posting the event to
which the handler has been assigned by a HANDLE statement.


-4131	No implied object for this non-shared function call ("SELF" is
not defined in this context).

No object reference has been supplied for this member function call. If
the member function call was made inside a member function, "self"
would be the implied object reference. This call was made in a
nonmember function body, so there is no implied object reference.


-4132	Incorrect base class name in base clause.

The program has declared a base class and has declared another class as
DERIVED FROM that base class. In the definition of the constructor for
the derived class, a base constructor clause specifies a call to a
function that is NOT the base class constructor. Suppose a derived
class is called "bread" and its base class is called "food"; if the
constructor for loaf should have a definition that begins FUNCTION
bread::bread(args1):food(args1). If it begins FUNCTION
bread::bread(args1):beverage(args1), the error message appears.


-4133	Only events can be posted.

A POST statement specified something other than event. Member
functions, handlers, and reports cannot be posted.


-4134	Class qualification not allowed when invoking an event.

The program specified a class name followed by a scope resolution
operator (::) and the name of an event. Replace the class name with the
name of the appropriate object.


-4135	Only shared class variables can be defined outside class declaration.

A class variable described as SHARED cannot be defined outside the
class declaration. The variable definition indicated is completing the
definition of a variable already described without a SHARED qualifier
in a class declaration.


-4136	Intrinsic function name() has wrong signature.

The correct signature for a !copy() function is FUNCTION !copy (obj
this_class), having one parameter whose type is an object of the
containing class. The correct signature for a !derive() function has no
arguments, only a pair of parentheses.


-4137	Embedded C code is allowed in compiled-4GL programs only.

A BEGIN_C and END_C block can be included only in compiled NewEra
programs. It is not valid in a interpreted (p-code) NewEra program.


-4138	Arrays of CHAR(*) are not allowed.

ARRAY [ ] OF CHAR(*) is not a valid type.


-4139	The constant "name" cannot be used within its own definition.

A constant cannot be used until it is defined. Therefore, a constant
cannot be used in its own definition.


-4140	Compiler cannot continue.

This error is output if an unrecoverable error occurs in the compiler
(that is, SEG VIO, BUS ERROR). This situation could occur if the user
terminated the compilation explicitly. Otherwise, if the error recurs,
note all circumstances and contact IBM Technical Support.


-4141	Unknown 4GL compiler flag "name" will be ignored.

This error occurs when the user invokes components of the NewEra
product directly, instead of through standard interfaces. The
executable fglc or fglp has been passed a compiler switch that is not
understood.


-4142	Functions called in the WHENEVER statement cannot require parameters.

The WHENEVER statement in the program has the form WHENEVER condition
CALL function, and the function being called is declared to have
parameters. The function call in this context cannot even have
parentheses, let alone arguments. Note that main has implicit
parameters, so it cannot be used in this form of the WHENEVER
statement.


-4143	Functions called in the WHENEVER statement cannot return values.

The WHENEVER statement in the program has the form WHENEVER condition
CALL function, and the function that is being called is declared with a
RETURNING clause. The function call in this context cannot return any
values.


-4144	A grammatical error has been found in an INCLUDEd file.  The
construct is not understandable in its context.

This general message shows an inability to parse a NewEra statement
from a file summoned by an INCLUDE statement. Start at the point where
the error was issued, and work backward in the program looking for
other error messages, and for missing punctuation, missing END
statements, and other mistakes. Often, a missing END IF is the culprit.
If the cause for this error is not obvious, concentrate on eliminating
any other, more specific error messages, and this one will probably go
away also.


-4145	Too many errors, compiler will quit.

Too many compiler errors have been detected. The compiler reports the
errors it has found to this point and quits.


-4146	Too many input files specified.

The executables fglc and fglp allow only 1 input file.


-4147	A RETURN statement is required in this function.

The function was declared with a RETURNING clause that specified other
than VOID, but no RETURN statement occurs in the body of the function.


-4148	CHAR (*) type is not allowed in SQL statements.

The CHAR(*) type is not allowed as an SQL type. It cannot be used in
CREATE TABLE, ALTER TABLE, and so on.


-4149	Expressions of this type are not allowed in SQL statements.

An identifier that is mentioned in an SQL statement is of a type such
as FOREIGN, or it names an object (a member of a class) or a record.


-4150	First parameter must be an ixRow object.

For calls to the built-in functions packrow() and unpackrow(), the
first argument must be of type ixRow.


-4151	Constructor cannot be called directly.

A constructor cannot be called directly using the CALL statement or as
the function in a function call expression. The constructor should be
invoked indirectly using the NEW operator.


-4152	Invalid begin or end name for THROUGH expression.

Invalid expressions have been used in a THROUGH expression in an SQL
statement.


-4153	Warning: The constant expression with the USING clause has been
evaluated based on the values of the environment variables at compile time.

This warning is generated when a value for a CONSTANT contains a USING
clause. The settings for environment variables DBFORMAT and DBMONEY can
affect the result of the USING operation. This warning reminds the user
that the USING clause in the CONSTANT statement will be evaluated at
compile time and might not be consistent with other USING clauses that
are evaluated at runtime.


-4154	The maximum size allowed for a constant of type CHAR or VARCHAR
is 255.

In a CONSTANT declaration or definition, the size of a character type
constant (CHAR or VARCHAR) cannot exceed 255.


-4155	Warning: Only static cursor names are allowed in the WHERE CURRENT OF
clause. Cursor name will be processed as a static cursor name.

In the UPDATE and DELETE statements, the WHERE CURRENT OF cursor-name
clause cannot cite a cursor name that has been declared as dynamic.


-4156	Warning: The loop counter may overflow.

This warning can occur for a FOR statement when the upper limit of the
FOR loop is within the STEP value of the maximum value of that type. As
an example, suppose the FOR statement tried to run IX from 1 to 32760
with a step of 20, and IX was declared as SMALLINT; the compiler would
issue the warning because IX would overflow without satisfying the loop
termination condition.


-4157	The statement is too complex. Try to simplify it.

This error occurs if a stack overflow is detected during compilation.
Under Windows, the stack size is limited. Try to reduce the complexity
of your code. Complex expressions, such as many string concatenations
('||'), can consume a large portion of the stack.


-4158	IBM Informix FORM and WINDOW statements are not supported in this
product. Use the Visual Class Library for screen interaction.

The compiler encountered an OPEN FORM or OPEN WINDOW statement. In
NewEra, these functionalities are handled through Visual Class Library
objects. Consult the Graphical and Connectivity Reference Manual. Other
grammatical errors might be generated in addition to this one.
Replacing the offending statements with VCL calls and recompiling
should eliminate the additional messages.


-4159	Subscripting cannot be applied to the expression because it is
not a character or array reference.

The expression cannot be qualified by a subscript because the
expression is neither an ARRAY nor CHAR() type.


-4160	This expression cannot be used as the target of an assignment statement.

An illegal assignment was detected. For example, you declared abc to be
a constant, but here you attempted to assign a value to it. Some
statements that involve assignment: LET, SELECT...INTO, OPEN
CURSOR...INTO, FETCH INTO, FOREACH...INTO, FOR iterator (the iterator
is assigned values), INITIALIZE, and LOCATE. Only NewEra returns this
error.


-4161	This variable has not been defined as a record or object.

The variable indicated has been used with an asterisk or with the THRU
or THROUGH keywords. However, it has not been defined as a record or an
object. Check the spelling of the name. If it is as you intended,
locate the definition of the variable, and find out why it was not
defined as expected. Only NewEra returns this error.


-4162	Values cannot be RETURNed from within reports.

A report cannot include a RETURN statement because that would return
control to the routine that invoked the report.


-4163	Intrinsic function "name" of class "class" cannot be called directly.

Constructors of the form classname::classname() are invoked through the
NEW operator. The classname::!copy() is invoked through the COPY
operator. The classname::!derive() is invoked through the AS clause in
both the NEW and the COPY operator. Only NewEra returns this error.


-4164	The variable is too complex a type to be used in an assignment
statement.

The type of the variable cannot be used in an assignment.That is, you
cannot assign a value (except for the nonvalue NULL) to a BYTE or TEXT
variable. You cannot assign any value to an ARRAY variable.


-4167	The PRAGMA LOCATION statement should be the last statement on the line.

No other NewEra statement can follow PRAGMA LOCATION on the same line.
If your source file includes any other NewEra statement or compiler
directive after PRAGMA LOCATION, insert a linefeed character
immediately following the end of the PRAGMA LOCATION compiler
directive. (The last specification of PRAGMA LOCATION must be a line
number, a filename, or the keyword RESET.)


-4168	An unexpected character was detected in this NewEra name.

A multibyte character (or other non-ASCII character that supports the
locale) was found in the name of a NewEra identifier. For this release
of NewEra, multibyte characters and other locale-specific characters
are not valid in NewEra identifiers.


-4169	Error loading locale.

A failure occurred in trying to load the CLIENT_LOCALE locale file.
Verify that the specified files exist, that these files have
appropriate permissions set, and that sufficient space is available in
which to load them.


-4200	Write error -- out of disk space.

The compiler failed to write some information to the output file
because it ran out of disk space.


-4201	Write error. Check available disk space and ulimit.

The compiler failed to write some information to the output file, but
the cause of the error was not reliably determined. This usually means
that the ulimit was exceeded, but possibly the error was detected too
late for the auxiliary information to be accurate, or other errors have
occurred since.


-4202	The compilation was not successful. Errors found: n.  The file
filename was not written successfully either.

The compiler failed to produce the output file because of errors and it
also failed to produce the error file. Probably not enough disk space
was available.


-4203	The compilation was successful, with n warnings. The file filename
was not written successfully.

The compiler produced the output file. It also detected some warnings,
and it failed to produce the error file as well. Probably not enough
disk space was available.


-4300	This statement contains too many levels of function call nesting.

This statement has calls to functions that are nested within the
parameter lists of other function calls, to a level exceeding four. The
maximum level supported is four, as in the following expression:
Afun(2-Bfun(3+Cfun(4*Dfun(5)))).

Rewrite the expression to store the result of the innermost function
calls in a variable, and use the variable in the expression.


-4301	The program has too many levels of WHILE, FOR, MENU, and/or
CASE statements.

You can only nest CASE, FOR, MENU, and WHILE statements (in any combination)
to a depth of 25. Rearrange the program so that the nesting depth does not
exceed 25, for example, by moving some of the inner structures to a separate
module or isolating them in a function.


-4302	The record description is nested too deep.

Rewrite the record definition so that it does not exceed the limit of five nested levels of records.


-4303	A blob variable or cursor name expected.

The argument to the FREE statement must be the name of a cursor or
prepared statement or, in 4GL, the name of a variable with the BYTE
or TEXT data type.


-4304	A different database has already been declared. If your program
uses a global definition file, it must contain the same database name
as this one.

This module contains a non-procedural DATABASE statement and also uses the GLOBALS filename statement to
include a global definitions file. In that file there is a DATABASE statement that names a
different database. Change either the module or the global
definitions file so they name the same database.

-4305	The database "name" cannot be found or opened. If the database
exists, check the database permissions on the database. In addition,
check the system permissions on the database directory and its
ascendant directories.

Check the spelling of the database name. Check that the database
name exists in your current directory or in a directory included in
your DBPATH environment variable. If the database is in a different
directory, make sure that you have the ability to read that directory
(to test this, make it the current directory and list the names of files
in it). If these items are correct, make sure that you have at least
CONNECT privilege for the database.


-4306	The GLOBALS file "pathname" cannot be opened for reading.

The file specified in the GLOBALS statement cannot be opened.
Check that the file exists and that you can read it, for example, by
displaying it with an operating system command. If these items are
correct, double-check the spelling of the pathname. If the file is not in
the current directory, give the complete path.


-4307	The number of variables and/or constants in the display list does
not match the number of form fields in the display destination.

There must be exactly as many items in the list of values to display
as there are fields listed following the TO keyword.


-4308	The number of input variables does not match the number of form
fields in the screen input list.

Your INPUT statement must specify the same number of variables as
it does fields. When checking this, keep in mind that when you refer
to a record using an asterisk or THRU, it is the same as listing
each record component individually.


-4309	Printing cannot be done within a loop or CASE statement contained
in report headers or trailers.

4GL needs to know how many lines of space will be devoted to page
headers and trailers; otherwise, it does not know how many detail rows
to allow on a page. Since it cannot predict how many times a loop will
be executed, or which branch of a CASE will be execute, it forbids the
use of PRINT in these contexts within FIRST PAGE HEADER, PAGE HEADER,
and PAGE TRAILER sections. You have to rearrange the code to place the
PRINT statement where it will always be executed.


-4310	Files cannot be printed within report headers or trailers.

4GL needs to know how many lines of space will be devoted to page
headers and trailers; otherwise, it does not know how many detail rows
to allow on a page. Since it cannot predict how many lines are in a
file, it forbids printing a file in a header or trailer. You can write
PRINT statements in the control blocks for FIRST PAGE HEADER, PAGE
HEADER, and PAGE TRAILER. However, you cannot write PRINT FILE
statements in these control blocks.


-4311	The variable "variable-name" was not defined as a record. 
        It cannot be used in this fashion.

The variable name that is shown is being used with THRU (or THROUGH)
notation or with .* notation, but is not defined as a record. 
Check that the variable name is the one that you intended. If it is,
find the place where it is defined (which may be in a global
definition file included with the GLOBALS statement) and find out
why it is no longer defined as a record.


-4312	The NEED statement is allowed only within reports.

The NEED n LINES statement is used in a report to cause a conditional
page skip. This is only relevant in the context of the FORMAT section
of a report. Check to see if a REPORT statement has been omitted.


-4313	The NEED statement cannot be used within report headers or trailers.

The NEED n LINES statement is used in a a report to cause a conditional
page skip. In the context of a FIRST PAGE HEADER, PAGE HEADER, and PAGE
TRAILER section, however, it is irrelevant. If it did cause a page
skip, an endless loop could ensue.


-4314	The program cannot continue or exit a menu at this point because
it is  not within a MENU statement.

This CONTINUE or EXIT statement uses the MENU keyword, but it is not
located within a COMMAND section of a MENU statement. Either the
statement is in error, or some other error has prevented 4GL from
recognizing the MENU statement.


-4315	The program cannot exit a FOREACH statement at this point because
it is not within a FOREACH statement.

This CONTINUE or EXIT statement uses the FOREACH keyword, but it is not
located within a FOREACH loop. Either the statement is in error, or
some other error has prevented 4GL from recognizing the FOREACH
statement.


-4316	The program cannot exit a WHILE statement at this point because
it is not within a WHILE statement.

This CONTINUE or EXIT statement uses the WHILE keyword, but it is not
located within a WHILE loop. Either the statement is in error, or some
other error has prevented 4GL from recognizing the WHILE statement.


-4317	The program cannot exit a FOR statement at this point because
it is not within a FOR statement.

This CONTINUE or EXIT statement uses the FOR keyword, but it is not
located within a FOR loop. Either the statement is in error, or some
other error has prevented 4GL from recognizing the FOR statement.


-4318	The program cannot exit a CASE statement at this point because
it is not within a CASE statement.

This CONTINUE or EXIT statement uses the CASE keyword, but it is not
located within a CASE statement. Either the statement is in error, or
some other error has prevented 4GL from recognizing the CASE
statement.


-4319	The symbol variable-name has been defined more than once.

The variable that is shown has appeared in at least one other DEFINE
statement before this one. If this DEFINE is within a function or the
MAIN section, the prior one is also. If this DEFINE is outside any
function, the prior one is also outside any function; however, it might
be within the file included by the GLOBALS statement.


-4320	The symbol table-name is not the name of a table in the specified
database.

The named table does not appear in the database that is named in the
latest DATABASE statement. It may be spelled wrong in the program, or
the table might have been dropped or renamed since the last time the
program was compiled.


-4321	An array may have the maximum of three dimensions.

You have written more than three subscripts following the name of an
array. However, 4GL only supports arrays of three dimensions or fewer.
Check the syntax of the subscript; an extra comma might have been
entered in error.


-4322	The symbol column-name is not the name of a column in the specified
database.

The preceding statement suggests that the named column is part of a
certain table in the database that is in the last DATABASE statement.
The table exists, but the column does not appear in it. Check the
spelling of the column name. If it is spelled as you intended, then
either the table has been altered, or the column renamed, or you are
not accessing the database you expected.


-4323	The variable variable-name is too complex a type to be used in an
assignment statement.

The named variable is a record or an array. 4GL does not support the
assignment of whole records or arrays. In the case of a record, you
must assign the individual record components, or you can assign groups
of components to groups of components using asterisk notation. In the
case of an array, you must use a subscript to designate a single array
element. This error is not produced by any version of 4GL later than
Version 4.1.


-4324	The variable variable-name is not a character type, and cannot
be used to contain the result of concatenation.

This statement attempts to concatenate two or more character strings
(using the comma as the concatenation operator) and assign the result
to the named variable. Unfortunately, it is not a character variable.
4GL will not perform automatic conversion from characters in this case.
Assign the concatenated string to a character variable; then, if you
want to treat the result as numeric, assign the string as a whole to a
numeric variable.


-4325	The source and destination records in this record assignment
statement are not compatible in types and/or lengths.

This statement uses asterisk notation to assign all components of one
record to the corresponding components of another. However, the
components do not correspond. Note that 4GL matches record components
strictly by position, the first to the first, second to second, and so
on; it does not match them by name. If the source and destination
records do not have the same number and type of components, you will
have to write a simple assignment statement for each component.


-4326	A NULL value may not be applied to substrings.

The value NULL is a whole value that is relevant to complete variables
only. You can assign NULL to the name of this variable (omitting the
substring notation) to make the entire variable contain the null
string. Alternatively, you can assign spaces to a substring to make it
blank. The only way to delete a portion of a string is to write an
expression that extracts the leading and trailing substrings that are
to be retained and concatenates them.


-4327	The variable variable-name is not of type INTEGER or SMALLINT. It
cannot be used as a loop index.

The index variable in a FOR loop must be an integer type. Specify a
different variable, or redefine the one named.


-4328	The variable variable-name has too complex a type to be used
as the destination of a return from a function.

The named variable is a record or an array. Only simple variables can
be returned by a function, although the function can return a list of
simple variables. In the case of a record, you can use the asterisk or
THRU notation as shorthand to specify a list of components.


-4329	The variable variable-name is not a record. Only record variables
may be expanded using the .* or THROUGH shorthand.

You have used the displayed name with either dot-asterisk (.*) or the
word THRU (or THROUGH), which is shorthand notation to specify a list
of the components of a record. Unfortunately, the variable is not
defined as a record. Make sure that you specified the right variable
and that it is defined as a record.


-4330	Values cannot be RETURNed from the MAIN program.

Although RETURN is equivalent to EXIT PROGRAM in a MAIN program, it
cannot include a value to be returned. NewEra programs return this
error.


-4331	Only variables of type INTEGER or SMALLINT may be used to
index display fields

This statement uses a subscript to refer to one element of a screen
array. However, the subscript variable is not an integer type. Make
sure that the subscripting variable is the one you intended to use,
and make sure it is defined as INTEGER or SMALLINT.


-4332	The LET statement must have at least one source expression.

This LET statement has no valid expression to the right of the equals
sign. Check the punctuation; perhaps part of the statement was
deleted in error, or perhaps a comment delimiter has been inserted
in the wrong place.


-4333	The name has already been called with a different number of parameters.

Earlier in the program, there is a call to this same function or event
with a different number of parameters in the parameter list. At least
one of these calls must be in error. Examine the FUNCTION or EVENT
statement for name to find out the correct number of parameters. Then
examine all calls to it, and make sure that they are written correctly.
When this error appears near the top of a function in conjunction with
error -4336, fix error -4336 first, and -4333 will usually disappear.
NewEra programs return this error.


-4334	The variable variable-name in its current form is too complex
to be used in this statement.

By "too complex" 4GL means "has too many component parts." In this
statement, only simple variables (those that have a single component)
can be used. If variable-name is an array, you must provide a subscript
to select just one element. If it is a record, you must choose just one
of its components. (However, if this statement permits a list of
variables, as in the INITIALIZE statement, you can use asterisk or THRU
notation to convert a record name into a list of components.)


-4335	The symbol field is not an element of the record record.

This statement refers to record.field. Although the variable record is
indeed a record, field is not the name of one of its component fields.
Find the definition of record (it may be in the GLOBALS file), verify
the names of its fields, and correct the spelling of field.


-4336	The parameter variable-name has not been defined within the
function or report.

The name variable-name appears in the parameter list of the FUNCTION
statement for this function. However, it does not appear in a DEFINE
statement within the function. All parameters must be defined in their
function before use. Possibly you wrote a DEFINE statement but did not
spell variable-name the same way in both places.


-4338	The symbol variable-name has already been defined once as a parameter.

The name that is shown appears in the parameter list of the FUNCTION
statement and in at least two DEFINE statements within the function
body. Only one appearance in a DEFINE statement is permitted.


-4339	4GL has run out of data space memory.

Your 4GL program requires more memory than is available.
If your program was executing sucessfully prior to this 
message, examine your code to see if FREE, CLOSE FORM, 
CLOSE WINDOW, or other 4GL statements can release memory 
used by 4GL program objects that are no longer needed.

If your program was using a shared memory connection, try 
setting INFORMIXSHMBASE to a larger value.  Alternatively, 
use a streams (olipcstr) or network (oltlitcp) connection.  
 
If you receive this message during compilation, a .4gl 
source module might be too large to compile. Divide it 
into smaller modules, and compile them separately. If the 
error persists, divide the 4GL program into smaller programs.


-4340	The variable variable-name is too complex a type to be used in an
expression.

By "too complex," NewEra means "has too many component parts." In an
expression, only simple variables (those that have a single component)
can be used. If the variable indicated is an array, you must provide a
subscript to select just one element. If it is a record or object, you
must choose just one of its components. NewEra programs return this
error.


-4341	Aggregate functions are only allowed in reports and SELECT statements.

Aggregate functions such as SUM, AVG, and MAX can only appear in SQL
statements and within certain statements you use in the context of a
report body. They are not supported in ordinary expressions in program
statements. You might be able to write an application-specific
function to form this aggregate function on your data; however, you
must name it something else because names such as SUM, AVG, and MAX are
reserved words.


-4342	PAGENO and LINENO are allowed only in reports.

These functions are only relevant in the body of a report function (one
following a REPORT statement). Only within the report-generating code
is the idea of a current page or line meaningful. You can make these
values available outside a report through global variables. For
example, you could put a statement such as this one in the PAGE HEADER
control block:

LET CURR_PAGE = PAGENO

This would assign the current page to a global variable (called
CURR_PAGE in the example) that could be tested by code outside the
report function.


-4343	Subscripting cannot be applied to the expression because it
is not a character or array reference.

You can write subscript expressions (integer-valued expressions
separated by commas and enclosed in square brackets) following an
expression that evaluates to an array. You can specify a substring (two
integer expressions in square brackets) following a character
expression. However, in this statement, expressions in square brackets
follow something that is neither character nor an array. Review the
punctuation of the statement and the declaration of the variables in
it. Error -4343 with this text is produced by 4GL through Version 4.1.


-4343	Subscripting cannot be applied to the variable
variable-name because it is not a character or array variable.

You can write a subscript expression (one, two, or three numbers in
square brackets) following the name of an array variable. You can write
a substring expression (two numbers in square brackets) following the
name of a variable of data type CHAR or VARCHAR. However, variable-name
is none of those things. Either it is not the variable you intended, or
it is not correctly defined. Error -4343 with this text is produced by
4GL through Version 4.1.


-4344	The variable variable-name cannot be used with substrings
because it is not a character variable.

This statement contains what appears to be a substring expression (two
numbers in square brackets) following the identifier shown. However,
that variable is not of data type CHAR or VARCHAR. If you intended this
variable as a substring, then you either named the wrong variable, or
the variable is not correctly defined. If you meant this as an array
subscript, the same is true.


-4345	The variable variable-name has already had substrings applied to it.

The name that is shown is followed by one substring expression (two
numbers in square brackets) and then by another. This is not valid.
Perhaps some punctuation was deleted accidentally in editing the name
of another variable. Or if you meant this to be a subscript of a
two-dimensional array of character items followed by a substring of the
chosen element, the problem is that variable-name has not been defined
as an array.


-4346	Subscripts can contain only INTEGER or SMALLINT expressions.

Array subscripts are integer values, and only integer variables can be
used to form them. This statement contains a subscript in which a
FLOAT, CHAR or some other type of variable is used. No automatic
conversion of data types is performed in a subscript expression. Review
the subscript expressions in the statement; perhaps you simply entered
the wrong variable name. If not, you will have to revise the program to
store array subscripts in integer variables only (you might expect that
a DECIMAL value with a scale factor of zero would be permitted also,
but this is not the case.)


-4347	The variable variable-name is not a record. It cannot
reference record elements.

In this statement variable-name appears followed by a dot, followed by
another name. This is the way you would refer to a component of a
record variable; however, variable-name is not defined as a record.
Either you have written the name of the wrong variable, or else
variable-name is not defined the way you intended.


-4348	This type of aggregate must be applied to an expression,
not '*'. Only PERCENT and COUNT aggregates use '*'.

An aggregate function in this statement is one of those, such as MIN
and SUM, that must be applied to a specific column or to an expression
involving specific columns. The asterisk notation in an SQL statement
means "the whole row." With an aggregate function, it is useful only
when counting entire rows.


-4349	The PERCENT and COUNT report aggregates cannot be used with an
expression.

These aggregate functions simply count entire rows, without regard for
the contents of the rows. COUNT returns a count of the rows, and
PERCENT returns the count of rows as a percentage of the entire table.
The only permitted parameters of these functions '*' mean "the entire
row." They cannot be applied to specific columns or to expressions that
involve specific columns.


-4350	The program cannot continue a FOR loop at this time because
it is not within a FOR loop.

A CONTINUE FOR statement is not between a FOR statement and its
matching END FOR statement. Perhaps the FOR statement has been
accidentally deleted, or perhaps you changed to another type of loop
such as FOREACH or WHILE.


-4351	The program cannot continue a WHILE loop at this time because
it is not within a WHILE loop.

A CONTINUE WHILE statement is not between a WHILE statement and its
matching END WHILE statement. Perhaps the WHILE statement has been
accidentally deleted, or perhaps you changed to another type of loop
such as FOREACH or FOR.


-4352	The program cannot continue a FOREACH loop at this time because
it is not within a FOREACH loop.

A CONTINUE FOREACH statement is not between a FOREACH statement and its
matching END FOREACH statement. Perhaps the FOREACH statement has been
accidentally deleted, or perhaps you changed to another type of loop
such as WHILE or FOR.


-4353	The type of this ORDER BY or GROUP item specified for the
report is not valid for sorting.

The database server does not support comparison functions on columns of
such types as TEXT or BYTE. As a result, columns with such types cannot
be used to order or group rows. Use other columns (usually the primary
key of the table) for ordering and grouping.


-4354	Aggregate functions cannot be performed with TEXT or BYTE variables.

This statement applies an aggregate function such as SUM to a variable
that is defined as BYTE or TEXT. Such variables are not in the domain
of the aggregate functions. Review the use of functions in the
statement, and make sure that they are applied to the variables you
intended.


-4356	A page header has already been specified within this report.

Only one PAGE HEADER control block is allowed in a report. The
statements in this control block must be suitable for all pages of the
report (except the very first page, for which you may write a FIRST
PAGE HEADER block). Find the other PAGE HEADER control blocks, and
combine all their statements into one control block.


-4357	A page trailer has already been specified within this report.

Only one PAGE TRAILER control block is allowed in a report. The
statements in this control block must be suitable for all pages of the
report. Find the other PAGE TRAILER control blocks, and combine all
their statements into one control block.


-4358	A first page header has already been specified within this report.

Only one FIRST PAGE HEADER control block is allowed in a report. (After
all, only one first page exists.) Find the other FIRST PAGE HEADER
control blocks, and combine all their statements into one control
block.


-4359	An ON EVERY ROW clause has already been specified within
this report.

Only one ON EVERY ROW control block is permitted in a report. Find the
other ON EVERY ROW control blocks, and combine their statements into
one block.


-4360	An ON LAST ROW clause has already been specified within
this report.

Only one ON LAST ROW control block is permitted in a report. Find the
other ON LAST ROW control blocks, and combine their statements into
one block.


-4361	Group aggregates can occur only in AFTER GROUP clauses.

The aggregate functions that apply to a group of rows (GROUP COUNT,
GROUP PERCENT, GROUP SUM, GROUP AVG, GROUP MIN, and GROUP MAX) can only
be used at the point in the report when a complete group has been
processed, namely, in the AFTER GROUP control block. Make sure that the
AFTER GROUP statement exists and was recognized. If you need the value
of a group aggregate at another time (for instance, in a PAGE TRAILER
control block), you can save it in a global variable with a LET
statement in the AFTER GROUP control block.


-4362	The report cannot skip to the top of page while in a header or trailer.

When SKIP TO TOP OF PAGE is executed, the page trailer clause must be
executed (so as to display fixed page-end material) followed by the
page header clause. If the statement was allowed in a header or trailer
clause, an infinite loop could ensue.


-4363	The report cannot skip lines while in a loop within a header or trailer.

4GL needs to know how many lines of space will be devoted to the page
header and trailer (otherwise it does not know how many detail rows to
allow on the page). It cannot predict how many times a loop will be
executed, so it has to forbid the use of SKIP statements in loops in
the PAGE HEADER, PAGE TRAILER, and FIRST PAGE HEADER sections.


-4364	Type of initialization/default expression does not match
declared type of the variable/parameter.

The initialization expression for the specified variable does not
evaluate to a data type that is compatible with the declared type.
Review the expression, and make it and the declared type agree.


-4365	Deferments of interrupt or quit may be executed only in the main
program.

The statements DEFER INTERRUPT and DEFER QUIT can only appear in the
MAIN section of the program. They can appear only once each in a
program.


-4366	The number of variables does not match the number of database
columns in this statement.

There must be a program variable to receive data from or supply data to
each column named in the statement. Possibly there is an ambiguity
between column names and variable names. When a program variable has
the same name as a database column, you can force 4GL to use the
database column by prefixing it with the at-sign (@) character or with
its tablename.


-4367	Interrupt has already been deferred once in the main program.
Each main program may defer interrupts only once.

The statements DEFER INTERRUPT and DEFER QUIT can only appear in the
MAIN section of the program. They can appear only once each in a
program.


-4368	Quit has already been deferred once in the main program. Each main
program may defer quit only once.

The statements DEFER INTERRUPT and DEFER QUIT can only appear in the
MAIN section of the program. They can appear only once each in a
program.


-4369	The symbol variable-name does not represent a defined variable.

The name shown appears where a variable would be expected, but it does
not match any variable name in a DEFINE statement that applies to this
context. Check the spelling of the name. If it is the name you
intended, look back and find out why it has not yet been defined.
Possibly the GLOBALS statement has been omitted from this source
module, or it names an incorrect file. Possibly this code has been
copied from another module or another function, but the DEFINE
statement was not copied also.


-4370	The variable variable-name cannot be used in validation.

The VALIDATE statement operates on only simple variables; it cannot
accept records or arrays. If you have named a record, you can use
asterisk notation or THRU notation as shorthand for a list of the
component fields of the record. However, if a record component is
itself a record, you must list its components individually as well.


-4371	Cursors must be uniquely declared within one program module.

In the statement DECLARE cname CURSOR, the identifier cname can be used
in only one DECLARE statement in the source file. This is true even
when the DECLARE statement appears inside a function. Although a
program variable made with the DEFINE statement is local to the
function, a cursor within a function is still global to the whole
module.


-4372	The cursor cursor-name has not yet been declared in this program
module. It must be declared before it can be used.

The name shown appears where the name of a declared cursor or a
prepared statement is expected; however, no cursor (or statement) of
that name has been declared (or prepared) to this point in the program.
Check the spelling of the name. If it is the name you intended, look
back in the program to see why it has not been declared. Possibly the
DECLARE statement appears in a GLOBALS file that was not included.


-4373	A grammatical error has been found on line line-number, character
char-number. The construct is not understandable in its context.

This general message shows an inability to parse a 4GL statement. The
line and character numbers show the point at which the parser detected
a problem. However, this is almost never the point at which the error
exists. Start there, and work backward in the program looking for
other error messages and for missing punctuation, missing END
statements, and other mistakes. If the statement at line-number is END
FUNCTION, END MAIN, or END REPORT, one probable cause is the absence of
another END, possibly many lines earlier. Usually a missing END IF is
the culprit. If the cause for this error is not obvious, concentrate on
eliminating any other, more specific error messages, and this one will
probably go away also.


-4374	This type of statement can only be used within a MENU statement.

This statement, for example a SHOW OPTION statement, only makes sense
within the context of a MENU statement. Review the program in this
vicinity to see if an END MENU statement has been misplaced. If you
intended to set up the appearance of a menu before displaying it, use a
BEFORE MENU block within the scope of the MENU.


-4375	The page length is too short to cover the specified page
header and trailer lengths.

Examine the statements in the OUTPUT section and in any HEADER and
TRAILER clauses. The total of lines used by these statements must be
sufficiently less than the specified page length that some detail rows
can be printed.


-4376	The temporary file filename cannot be created for writing.

Check that your account, on UNIX systems, has permission to create
files in the /tmp directory or in the directory named in the DBTEMP
environment variable if that is different. Look for other, more
explicit, error messages from the operating system. Possibly the disk
is full, or you have reached a limit on the number of open files.


-4377	The output file filename cannot be created or opened.

On UNIX systems, check that your account has permission to create files
in the directory where filename would be created. Look for other, more
explicit, error messages from the operating system. Possibly the disk
is full, or you have reached a limit on the number of open files.


-4378	No input file was specified.

You invoked the C-code or the p-code compiler from the command line but
did not specify the name of a source file to be edited. Repeat the
command, specifying a source file.


-4379	The input filename filename cannot be opened.

Either the file does not exist, or, on UNIX, your account does not have
permission to read it. Possibly the filename is misspelled, or the
directory path leading to the file was specified incorrectly.


-4380	The listing file filename cannot be created.

Check that the directory path leading to the file is specified
correctly and, on UNIX systems, that your account has permission to
create a file in that directory. Look for other, more explicit, error
messages from the operating system. Possibly the disk is full, or you
have reached a limit on the number of open files.


-4381	The input file filename has an invalid extension. The file
name must have .4gl as the extension.

You do not need to enter the file extension or suffix of .4gl when you
type the name of a program source file. However, if you do type a file
suffix it must be .4gl; no other is allowed. If you type the suffix
incorrectly, enter the command again omitting the suffix. If the file
really has a different suffix, you will have to change it.


-4382	Cannot expand a structure with an array member.

The ".*" and THROUGH notation cannot be used to expand a record with an
array member, except in the LET statement. Error -4382 with this
meaning is issued by NewEra.


-4382	Record variables that contain array type elements may not
be referenced by the ".*" or THROUGH shorthand, or used as a function
parameter.

You can define a record that contains an array as one of its
components. However, you must always list that component by its full
designation of record.part[n]. The asterisk or THRU notation is only
shorthand for a list of the names of the components of the record. It
cannot produce the bracketed subscript after the name of the array
component.

A record that contains an array component cannot be used as a parameter
to a function. However, you can use the array component itself as a
function parameter if you spell out its name as record.part. Error -4382
with this meaning is issued by NewEra.


-4383	The elements name-1 and name-2 do not belong to the same parent record.

The two names shown are used where two components of one record are
required; however, they are not components of the same record. Check
the spelling of both names. If they are spelled as you intended, go
back to the definition of the record and see why it does not include
both names as component fields.


-4384	The symbol name does not represent the element of any record.

The name shown is used where 4GL expects the name of a record
component. Check the spelling of the name. If it is spelled as you
intended, go back to the definition of the record variable and see why
it does not include name as a component field.


-4385	Report aggregates cannot be nested.

Aggregate functions cannot be nested, primarily because the value of
the inner aggregate is not known at the time the outer aggregate is
being accumulated. Rewrite aggregate expressions to refer only to
columns and simple expressions on columns. In an AFTER GROUP OF clause,
you can save the aggregate value from one group of rows in a program
variable, so as to use it in computing an aggregate over a subsequent
group.


-4386	There are too many ORDER BY fields in this report. The maximum
number is number.

A limit exists on the number of ordering fields. You will have to
redesign the report so that it requires ordering by no more than number
columns. Alternatively you can order the data before passing it to the
report, and specify the EXTERNAL keyword on the ORDER BY statement in
the report body. It is generally more efficient to have the database
server produce the rows in the correct order (using SELECT...ORDER BY
in the cursor that produces the rows).


-4387	The right margin must be greater than the left margin.

If the right margin of a report were no greater than the left margin,
there would be no room on each line for data. Check both MARGIN
statements in the OUTPUT section for reasonable values.


-4388	There is one BEFORE GROUP OF clause and one AFTER GROUP OF clause
allowed for each report input parameter.

The report is attempting to define a second BEFORE GROUP OF or AFTER
GROUP OF block for a single report parameter. Only one such control
block is allowed. Find all the blocks for this parameter, and combine
their statements into one.


-4389	There are too many levels of nesting of IF statements in this report.

You have exceeded the maximum of five levels of nesting of IF
statements. Possibly an END IF statement has been omitted. If not, you
will have to revise the logic of the report so that decisions are
nested less deeply.


-4390	Only one BEFORE MENU clause is allowed for each MENU statement.

There can be only one BEFORE block of statements in a MENU. Make sure
that the scope of your MENU statements are correctly marked with an END
MENU. Then combine all the preparation code for this menu into a
single BEFORE MENU block. This error is returned only by 4GL at Version
4.1.


-4391	When doing INPUT BY NAME or INPUT ARRAY, the BEFORE/AFTER field
names can be specified only by the field name suffix. Screen array and
screen record elements are not allowed.

Only names of single form fields can be used with a BEFORE or AFTER
clause. The name of a field is defined in the ATTRIBUTES section of
the form definition; it is often the same as the name of a database
column. Here are example lines from an ATTRIBUTES section:

atag = customer.customer_num,noentry;
tag2 = formonly.total,format="#######.##";

The names of these fields are customer_num and total, respectively.

In the 4GL statement in question, you have written a name prefixed with
another name and a dot. That syntax is used for specifying components
of screen records or screen arrays, or database columns of the same
name in different tables, but it is not appropriate here.


-4392	The 4GL compiler has run out of data space memory to contain
the 4GL program symbols. If the program module is very large, dividing it
into separate modules may alleviate the situation.

Reorganize your program source as a group of modules that can be
compiled separately. Alternatively, revise the program so that fewer
unique symbols are required, for instance by replacing many similar
variables with an array. This error might also be related to the
CONSTRUCT statement. If there is a CONSTRUCT over a large number of
fields, moving that statement to a function and putting the function in
a different source module might alleviate the problem with no other
changes.


-4393	The MENU statement has exceeded the maximum number of selections.

There is a maximum of 25 selections in a menu. Make sure that you have
not omitted an END MENU statement, thus combining two menus. If the
menu is as you intended it, you will have to revise the program so as
not to exceed the limit, for example by creating a hierarchy of menus.


-4394	Warning: Formal parameters in informal function headers cannot have
initial values. The initial value of this parameter is ignored. If this value
is intended as the default parameter, then use formal function headers to
specify defaults.

Although parameters in formal (function-prototype-style) definitions
can have initial values, those in the informal function definitions
cannot. The initial value of this parameter is ignored. If this value
is intended as the default parameter, then use the formal definition
format that uses function prototypes to specify defaults. Only NewEra
returns this error.


-4395	There are too many subscripts specified with a database column name.

In this statement the name of a database column is followed by square
brackets with several numbers between them. The only valid use for
square brackets with a database column is to select a substring from a
character column. However, for that use you must write exactly two
numbers, the subscripts of the first and last letters of the substring.
Here more than two numbers are used. Check and correct the
punctuation.


-4396	The MENU declaration at line line-number is not terminated.

4GL could not identify an END MENU statement to match the MENU
statement on the line number shown. Start at that line and work down
until you find where the terminating statement should have been, and
insert it.


-4397	The IF statement at line line-number is not terminated.

4GL could not identify an END IF statement to match the IF statement on
the line number shown. Start at that line and work down until you find
where the terminating statement should have been, and insert it.


-4398	The CASE statement at line line-number is not terminated.

4GL could not identify an END CASE statement to match the CASE
statement on the line number shown. Start at that line and work down
until you find where the terminating statement should have been, and
insert it.


-4399	The WHILE statement at line line-number is not terminated.

4GL could not identify an END WHILE statement to match the WHILE
statement on the line number shown. Start at that line and work down
until you find where the terminating statement should have been, and
insert it.

-4400	The FOR statement at line line-number is not terminated.

4GL could not identify an END FOR statement to match the FOR statement
on the line number shown. Start at that line and work down until you
find where the terminating statement should have been, and insert it.


-4401	A concatenation operation has created a string too long to
fit in the destination string variable.

This statement concatenates two or more character strings and stores
the result in another variable of type CHAR or VARCHAR. However, the
result of concatenation was longer than the receiving variable. If the
excess length is due to trailing spaces, you can use the CLIPPED
function to prevent them from being included in the combined result.
Otherwise you will have to define the length of the receiving variable
as at least the sum of the lengths of the input variables.


-4402	In this type of statement, subscripting may be applied only
to array variables to select individual array elements.

The statement contains a name followed by square brackets, but the name
is not that of an array variable. Check the punctuation of the
statement and the spelling of all names. Names that are subscripted
must be arrays. If you intended to use a character substring in this
statement, you will have to revise the program.


-4403	The number of dimensions for the variable variable-name does
not match the number of subscripts.

In this statement, the array whose name is shown is subscripted by a
different number of dimensions than it was defined to have. Check the
punctuation of the subscript. If it is as you intended, then review the
DEFINE statement where variable-name is defined.


-4405	The function has exceeded the maximum number of allowed parameters.

This message is not returned by any current IBM Informix product. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-4406	There is an unmatched quote in the above line.

The source line contains an odd number of quote symbols. Inspect it
from left to right and make sure that all literal character strings
begin and end with a quote. All literal strings must begin and end on
the same logical line. However, you can write long literal strings in
two ways. First, you can escape the end of line by making the final
character in the line a backslash (however, there is a fixed maximum of 256
characters on the total length of a single quoted string). Second,
in the DISPLAY and LET statements, you can concatenate shorter literal
strings using the comma. Here are two examples.

DISPLAY "abcdefghijkl\

mnopqrstuvwxyz"

DISPLAY "abcdefghijkl",

"mnopqrstuvwxyz"

Both display the alphabet with no embedded white space.


-4407	There is an unprintable character in the above line.

This source line contains an unusual character. 4GL suggests that the
source file might be corrupt. Edit the file and remove the bad
character. If you cannot see or select it with your editor, you may
have to delete and retype the line.


-4408	There is a quoted string that is too long in the above line.

The limit on the length of a literal character string is 256 characters.
However, in the DISPLAY and LET statements you can concatenate shorter
literal strings using the comma. See message -4406 for an example.


-4409	There is an invalid character in the above line.

This source line contains some character other than printable text and
normal white space. Remove the invalid characters (which may be
invisible under normal editing). If you cannot see or select the
invalid characters with your editor program, you might have to delete
the line and retype it.


-4410	There is a numeric constant in the previous line that
is too large or too small.

A numeric constant in this line cannot be processed. Check the digits
and punctuation of all literal numbers; for example, make sure that you
have not typed a letter for a digit. No number can have more than 50
digits. Depending on the context, numbers might be restricted to one
of three ranges.

SMALLINT:

absolute value not exceeding 32,767

INTEGER:

absolute value not exceeding 2,147,483,647

DECIMAL:

absolute value from 10 to the 130th power through 10 to the 124th power

BIGINT/INT8/SERIAL8 :

absolute value from -9,223,372,036,854,775,807  to  +9,223,372,036,854,775,807 

-4411	There is an alphanumeric identifier that is too long in the above line.

No identifier can exceed 50 characters. Check the spelling and
punctuation of all identifiers (perhaps two names have run together).


-4412	Values from the RUN command can be returned only
to INTEGER or SMALLINT variables.

The RUN command only returns the integer return code from the program
that was executed. No automatic conversion of data occurs in this case;
its result must be assigned to an integer variable.


-4413	The label label-name has already been defined within this
function/report.

The name shown appears in two or more LABEL statements. Check the
spelling of the name; if it is as you intended, then look back through
this function, report, handler, or main program for other LABEL
statements and find the one that uses this same name. Change one of
them to use a different name. Only NewEra returns this error.


-4413	The label label-name has already been defined within this
main program or function.

The name shown appears in two or more LABEL statements. Check the
spelling of the name; if it is as you intended, then look back through
this function or main program for other LABEL statements and find the
one that uses this same name. Change one of them to use a different
name. Only 4GL returns this error.


-4414	The label label-name has been used but has never been defined
within this function/report.

A GOTO or WHENEVER statement refers to the label shown, but there is no
corresponding LABEL statement in the current function, report, handler,
or main program. Check the spelling of the label. If it is as you
intended it, find and inspect the LABEL statement that should define
it. You cannot transfer out of a program block with GOTO; labels must
be defined in the same function body where they are used. Only NewEra
returns this error.


-4414	The label label-name has been used but has never been defined within
the above main program or function.

A GOTO or WHENEVER statement refers to the label shown, but there is no
corresponding LABEL statement in the current function, report, handler,
or main program. Check the spelling of the label. If it is as you
intended it, find and inspect the LABEL statement that should define
it. You cannot transfer out of a function with GOTO; labels must be
defined in the same function body where they are used. Only 4GL returns
this error.


-4415	An ORDER BY or GROUP item specified within a report must be
one of the report parameters.

The names used in a ORDER BY, AFTER GROUP OF, or BEFORE GROUP OF
statement must also appear in the parameter list of the REPORT
statement. It is not possible to order or group based on a global
variable or other expression. Check the spelling of the names in the
statement and compare them to the REPORT statement.


-4416	There is an error in the validation string: "%s".

Change the appropriate DEFAULT or INCLUDE value in the syscolval
table.


-4417	This type of statement can be used only in a report.

Statements such as PRINT, SKIP, or NEED are meaningful only within the
body of a report function, where there is an implicit report listing to
receive output.


-4418	The variable used in the INPUT ARRAY or DISPLAY ARRAY statement
must be an array.

The name following the words DISPLAY ARRAY or INPUT ARRAY must be that
of an array of records. Check the spelling of the name. If it is as you
intended, find and inspect the DEFINE statement to see why it is not an
array. (If you want to display or input a simple variable or a single
element of an array, use the DISPLAY or INPUT statement.)


-4419	The variable used in the CONSTRUCT statement must be a character
variable.

The name following the word CONSTRUCT must be that of a variable
defined as CHARACTER or VARCHAR. It ought to be a long variable, since
the string it receives may be long. Check the spelling of the name. If
it is as you intended, find and inspect the DEFINE statement to see why
it is not a character type.


-4420	The number of lines printed in the IF part of an IF-THEN-ELSE statement
of a header or trailer clause must equal the number of lines printed in the
ELSE part.

4GL needs to know how many lines will be filled in header and trailer
sections (otherwise it could not know how many detail rows to put on
the page). Because it cannot tell which part of an IF statement will be
executed, it requires that both produce the same number of lines of
output.


-4421	You may not use an INPUT statement within another INPUT statement or
PROMPT statement, even if it is enclosed within a conditional or looping
statement.

You can execute an INPUT statement from within another one, or from a
PROMPT statement, but in order to do so you must place the INPUT
statement in a function and call the function. You cannot embed the
text of an INPUT statement within another.


-4422	You may not use a CONSTRUCT statement within another INPUT statement.
This includes situations when CONSTRUCT is enclosed within a conditional or
looping statement. You must call a function that executes the CONSTRUCT
statement.

You can execute a CONSTRUCT statement from within an INPUT statement,
but in order to do so you must place the CONSTRUCT statement in a
function and call the function. You cannot embed the text of a
CONSTRUCT statement in an INPUT statement.


-4423	The CLIPPED and USING options for the DISPLAY statement may not be used
when displaying to a form field.

The CLIPPED and USING keywords cannot be used in the DISPLAY TO and
DISPLAY BY NAME statements. The display format of a form field is
controlled by the attributes of that field, as specified in the form
file. Trailing spaces are not displayed in a field. To get the effect
of USING, edit the form file and add a USING attribute to the field or
fields.


-4424	The variable variable-name has not been defined as a record.

The variable shown has been used with an asterisk, or with the THRU or
THROUGH keywords. However, it has not been defined as a record. Check
the spelling of the name. If it is as you intended, locate the
definition of the variable and find out why it was not defined as a
record. Only 4GL returns this error.


-4425	The variable variable-name has not been defined LIKE the table
table-name.

The named variable has been used in the SET clause of an UPDATE
statement. However, it was not defined to be LIKE the table being
updated. As a result, 4GL cannot associate record components with table
columns. You can change the definition of the variable, or you can
rewrite the UPDATE statement to show the explicit relationship between
column names and record components.


-4426	The PRINT statement can be used only within reports. If you wish to
print without screen positioning, use the DISPLAY statement without any field
or screen destination.

The keyword PRINT is used specifically to produce lines of output to a
report. The keyword DISPLAY introduces output to the screen. Possibly
this statement was accidentally copied from a report body; more likely
it was a hasty attempt to display casual output on the screen. In the
latter case, simply changing PRINT to DISPLAY is usually enough.


-4427	The COLUMN feature for the DISPLAY statement may be used only when
displaying without screen or field destination.

The COLUMN function returns a string of spaces long enough to reach a
certain column in the display output. You may use it with unqualified
DISPLAY and with DISPLAY AT, but it is not appropriate with DISPLAY TO
or DISPLAY BY NAME.


-4428	You may not use a PROMPT statement within an INPUT or PROMPT statement,
even if it is enclosed within a conditional or looping statement.

You can execute a PROMPT statement from within another one or from
within an INPUT statement, but in order to do so you must place the
PROMPT statement in a function and call the function. You cannot embed
the text of a PROMPT statement within an INPUT statement or another
PROMPT.


-4429	Report and function parameters cannot be arrays.

You cannot pass a whole array as a parameter of a function. You can
pass an individual element of the array by using a subscript. Possibly
the array that is causing this error is one component of a record
variable that is being passed using asterisk notation. Only 4GL returns
this error.


-4429	Parameters cannot be arrays, records with array members, or constants.

You cannot pass a whole array or a constant as a parameter of a
function. You can pass an individual element of an array by using a
subscript. Possibly the array that is causing this error is one
component of a record variable that is being passed using asterisk
notation. Only NewEra returns this error.


-4430	Values cannot be RETURNed from within reports.

A report cannot include a RETURN statement because that would return
control to the routine that invoked the report. Only NewEra returns
this error.


-4430	Record parameters for a report cannot contain elements that are arrays.

You cannot pass a whole array as a parameter of a function. You can
pass an individual element of the array by using a subscript. In this
case, a record variable is specified as a parameter using asterisk
notation, but one of the components of the record is an array.


-4431	The number of expanded report parameters has exceeded the maximum
allowed.

This message is not returned by any current IBM Informix product. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-4432	An element in a GROUP clause must be a member of the ORDER BY clause.

In order to perform grouping, the set of selected rows must be ordered
on the same columns. This is the only way to force all the equal values
to be found together, as a group. Rewrite the statement so that each
selected value that you want to group also appears in an ORDER BY
clause. Note that both these clauses allow you to refer to selected
values by their position number, as in the following example:

SELECT customer_num, month(order_date), avg(ship_weight) FROM orders
	ORDER BY 1, 2 GROUP BY 1,2


-4433	A variable used in the above statement must be of type CHAR or VARCHAR.

The filename in the REPORT TO statement must be given as a character
value; and the program name in the REPORT TO PIPE statement must also
be given as a character value. In either case, this can be a constant,
a variable of either of the types mentioned, or an expression. However,
it cannot be a number or other data type; no automatic type conversion
occurs in these statements.


-4434	The limits of the IBM Infomix 4GL Demo Version have been exceeded.
Call IBM for licensing information.

A program compiled using the demonstration version of IBM Informix 4GL can
contain only one module with no more than 150 statements. This program
either has too many statements, or it refers to a function in another
module. Contact your IBM sales representative for information on
full development licenses.


-4435	An acceptable hyphenated key format is CONTROL-X, where X is any letter
except A, D, H, L, R, or X.

When a key is trapped by an ON KEY clause, it loses other special
functions; for example, if you trap the Escape key, you must use the
OPTIONS statement to set up a different Accept key. You are not allowed
to use one of the control keys A, D, H, L, R, or X because these keys
have editing functions, and there is no method of assigning alternate
keys to those functions.


-4436	There are too many variables to VALIDATE or INITIALIZE in one statement.

There is a limit of 250 names (through Version 4.0) in the VALIDATE and
INITIALIZE statements. Simply divide this statement into multiple
statements so as not to exceed the limit.


-4437	All table names in the SELECT list must be the same as the table name
in the FROM clause.

One of the table names used in the list of columns to select does not
appear in the FROM clause. Possibly you simply misspelled the name in
one of the two places. Or you might have used a table alias in the
select-list but forgot to define it in the FROM clause.


-4438	You cannot SELECT into a substring of a character variable.

Substring notation is not allowed in the INTO clause. You can specify a
substring of a column in the list of columns to select and in the WHERE
clause. But you have to select into an entire variable. Define a
variable to select into, and move the data into the destination
substring using a LET statement.


-4439	You cannot SELECT into record record because element name is a record
or an array.

The INTO clause can name only simple variables. The use of asterisk or
THRU notation is a shorthand for listing all the component fields of a
record. The resulting list of fields must consist of simple variables.
In this case, the field name is not simple. Perhaps you have referred
to the wrong record. If not, you will have to list the name component
separately, specifying one or more of its component parts.


-4440	name1 precedes name2 in the record/object and must also precede it when
 used with the THROUGH shorthand.

The THROUGH or THRU shorthand requires you to give the starting and
ending fields as they appear in physical sequence in the record. Check
the spelling of the names; if they are as you intended, then refer to
the VARIABLE statement where the record was defined to see why they are
not in the sequence you expected. Only NewEra returns this error.


-4440	The field name1 precedes name2 in the record record-name and must also
precede it when used with the THROUGH shorthand.

The THROUGH or THRU shorthand requires you to give the starting and
ending fields as they appear in physical sequence in the record. Check
the spelling of the names; if they are as you intended, then refer to
the DEFINE statement where the record was defined to see why they are
not in the sequence you expected. Only 4GL returns this error.


-4448	Cannot open the file filename for reading or writing.

Verify that the filename is correctly spelled and that your account 
has permission to read or write to it.


-4451	The size of the pcode generated from this function/report has exceeded
the 32K per function limit.

The function or report will have to be simplified. Extract some portion
of its code to a separate function or report, and call that one. Only
NewEra returns this error.


-4452	The function (or report) name has already been defined.

No two functions can have the same name. No two reports can have the
same name. Change one of the two occurrences of name to a different
name. Only NewEra returns this error.


-4452	The function (or report) name has already been defined.  Function and
report cannot both have the same name.

Each function (or report, which is similar to a function) must have a
unique name within the program. Change the function or report name.


-4453	Too many global identifiers and literal strings in your program.

A table 256K bytes long holds literal strings and identifiers used in
the main function and at the global and module levels. The table also
holds the identifiers of forms, windows, and cursors. To avoid this
error, move some code that uses many literal strings into a separate
module or into a function. Alternatively, find a way to initialize
character variables without assigning literal strings, for example by
reading the initial values from a database or file. Reducing the number
of global and module variables will also help.


-4453	The size of the global string table has exceeded the limit of 32767.

The table is used to hold literal strings and identifiers used in the
main function and at the global and module levels. The table also holds
the identifiers of forms, windows, and cursors. To avoid this error,
move some code that uses many literal strings into a separate module or
into a function. Alternatively, find a way to initialize character
variables without assigning literal strings, for example by reading the
initial values from a database or file. Reducing the number of global
and module variables will also help. Only 4GL returns this error.


-4454	The size of the local string table has exceeded the limit of 32767.

The table is used to hold literal strings and identifiers used in the
current function. To avoid this error, split the function into two or
more sub-functions. Alternatively, find a way to initialize character
variables without assigning literal strings, for example by reading the
initial values from a database or file. Only 4GL returns this error.


-4458	Each dimension for an array must be between 1 and 32767, inclusive.

Array dimensions cannot be less than one or greater than 32,767. If you
need a larger array, you must either split the array into multiple
arrays, or use multiple dimensions.


-4475	"name" cannot be used as both a function (or report) name and an
identifier name.

The name shown has been defined at least two ways. Names at the global
or module level must be unique. Locate all the definitions and
declarations of this name and change all but one of them. Only NewEra
returns this error.


-4475	"name" may not be used as both a function (or report) name and a
variable name.

The name shown has been defined at least two ways. Names at the global
or module level (function names, report names, and names of global or
module variables) must be unique. Locate all the definitions of this
name and change all but one of them. Error -4475 is issued with this
meaning from 4GL at versions after 4.1.


-4475	"name" may not be used as both a function (or report) name and an
identifier.

The name shown has been defined at least two ways. Names at the global
or module level must be unique. Locate all the definitions and
declarations of this name and change all but one of them. Error -4475
is issued with this meaning from 4GL at versions after 4.1.


-4476	Record members may not be used with database column substring. Possible
misspelling or usage of undefined host variables.

This statement has a reference of the form name1.name2[...]. This is
the form in which you would refer to a substring of a column:
table.column[...]. However, the names are not a table and column in
the database, so 4GL presumes they refer to a field of a record.
Inspect the statement and determine what was intended: a reference to a
column or to a record. If it is a column reference, verify the names of
the table and column in the database. If it is a record reference,
verify that the record and component are properly defined. If the
record has the same name as a table, prefix the name of the table with
@ to make it clear you mean the table, not the record.


-4479	Warning: non-ANSI comment indicator. Use "--" for ANSI compatibility.

If you want your SQL statements to comply with ANSI standards, you must
use the two-dash comment delimiter (- -). The comment delimiters of the
number sign (#) and the braces ({ }) are not portable to ANSI-compliant
systems. This message is seen because you specified that you wanted
warnings issued for constructs that are not ANSI compliant, by means of
the -ansi command-line parameter, the DBANSIWARN environment variable,
or the DBANSIWARN setting in the informix.ini file. Only NewEra returns
this error.


-4479	Warning: non-ANSI comment indicator. Use "--" for ANSI compatibility.

If you want your SQL statements to comply with ANSI standards, you must
use the two-dash comment delimiter (- -). The comment delimiters of the
number sign (#) and the braces ({ }) are not portable to ANSI-compliant
systems. This message is seen because you specified that you wanted
warnings issued for constructs that are not ANSI compliant, by means of
the -ansi command-line parameter, or the DBANSIWARN environment
variable. Only 4GL returns this error.


-4486	TEXT or BYTE variables and wordwrap fields cannot be printed in report
headers or trailers.

4GL has to be able to predict how many lines will be used in a report
header or trailer. Because the size of a TEXT variable is
unpredictable, you cannot display one in these contexts.


-4487	It is not possible to mix parameter and local record definitions where
the record contains variables of type TEXT or BYTE.  Make a second
definition for the local record variable.

In this report body, use separate DEFINE statements for parameters of
the report and for local variables of any type.


-4488	The program cannot CONTINUE or EXIT statement-type at this point
because it is not immediately within statement-type statement.

This CONTINUE or EXIT statement is not appropriate in its context.
Possibly the statement is misplaced, or possibly the statement type was
specified incorrectly.


-4489	The statement above does not allow the use of local variables or
report parameters in its expressions.

This statement cannot refer to an argument of the function or to a
variable defined in the function. It can use only variables defined at
the module level (before the MAIN section) or in the GLOBALS section.
In the case of OUTPUT REPORT TO, the statement takes effect during the
execution of a START REPORT statement. At this time, no arguments are
passed into the report description, and no report description
statements are executed that could initialize a local variable. Change
the statement to refer to a variable that can be initialized before the
report is started.


-4490	You cannot have multiple BEFORE clauses for the same field.

You cannot specify more than one BEFORE clause for the same field.


-4491	The parameter name has been changed.

More than one copy of the function prototype has occurred in the
current scope, and the one indicated by this message has specified a
different name for a formal parameter than that specified by any
prototypes already encountered.


-4492	Warning: The parameter is assigned a new default value.

More than one copy of the function prototype has occurred in the
current scope, and the one indicated by this message has specified a
different default value for a formal parameter than that specified by
any prototypes already encountered.


-4493	Named parameters are allowed only for formal functions/reports.

The indicated function reference uses named parameters, but the
declaration of the function or report used the informal style of
parameter declaration, in which only the names are specified in the
parameter list and the types are specified in subsequent, subsidiary
declarations.


-4494	Missing named parameter "name" does not have default value.

The indicated function invocation does not list a value for a
parameter, and the declaration for the function does not provide a
default value for it. Either add a default value in the declaration, or
add a name/value pair here in the invocation.


-4495	Duplicate or invalid parameter name.

The name of a parameter specified in the invocation of the function
does not match any of the names in the declaration of that function, or
it is not a valid NewEra identifier. Check its spelling.


-4496	CHAR (*) type is not allowed within records or classes.

The CHAR(*) type is allowed only in function prototypes, as a
parameter, not as an element of a record or class.


-4497	Event "name" is already declared in the class.

Two events in the same class cannot have the same name.


-4498	Event/Handler name must be different from intrinsic member function
name.

You cannot declare an event or a handler with the same name as an
intrinsic member function (!copy(), !derive(), or the name of the
class). Change the name of the event or handler.


-4499	Member "name" is already declared in the class or in its base class.

Either a member called "name" already exists in the current class, and
you have attempted to declare another member with that name, or you are
attempting to override an event or a variable. Only member functions
can be overridden.


-4500	A numeric conversion error has occurred due to incompatibility between
a calling program and its function parameters or between a variable and its
assigned expression.

See error -1317, which has replaced this error.


-4501	A parameter count mismatch has occurred between the calling function
and the called function.

See error -1318, which has replaced this error.


-4502	The 4GL program has run out of runtime data space memory.

See error -1319, which has replaced this error.


-4503	A function has not returned the correct number of values expected by
the calling function.

See error -1320, which has replaced this error.


-4504	A validation error has occurred as a result of the VALIDATE command.

The type of a VALIDATE variable cannot be converted to the type of the
validation values. Only NewEra returns this error.


-4504	A validation error has occurred as a result of the VALIDATE command.

See error -1321, which has replaced this error for products other than
NewEra.


-4505	A report output file cannot be opened.

See error -1322, which has replaced this error.


-4506	A report output pipe cannot be opened.

See error -1323, which has replaced this error.


-4507	A report output file cannot be written to.

See error -1324, which has replaced this error.


-4508	PRINT FILE error - cannot open file filename for reading.

See error -1325, which has replaced this error.


-4509	An array variable has been referenced outside of its specified
dimensions.

An array bound has been exceeded, and array-bounds checking has been
turned on. Array-bounds checking can be turned on through the compiler
switch "-a" or the PRAGMA ARRAY BOUNDS statement. Only NewEra returns
this error.


-4509	An array variable has been referenced outside of its specified
dimensions.

See error -1326, which has replaced this error for products other than
NewEra.


-4511	A temporary table needed for a report could not be created in the
selected database. The user must have permission to create tables in the
selected database.

See error -1328, which has replaced this error.


-4512	A database index could not be created for a temporary database table
needed for a report.

See error -1329, which has replaced this error.


-4513	Incorrectly formed hexadecimal value.

The hexadecimal digits are a to f and 0 to 9. Possibly you included an
illegal character where NewEra expected a hexadecimal value or its
sign.


-4513	A number used as a DISPLAY AT location or SCROLL count must be
positive.

For a DISPLAY AT statement, see error -1135, which has replaced this
error. Since Version 4.0, the SCROLL statement accepts negative
numbers.


-4514	A row could not be inserted into a temporary report table.

See error -1330, which has replaced this error.


-4515	A row could not be fetched from a temporary report table.

See error -1331, which has replaced this error.


-4516	A character variable has referenced subscripts that are out of range.

See error -1332, which has replaced this error.


-4517	Strings of length > 512 cannot be returned from function calls.

See error -1333, which has replaced this error.


-4518	The 4GL program cannot allocate any more space for temporary string
storage.

Either the program is attempting to return more than 32,768 bytes of
CHAR, VARCHAR, or CHAR(*) values from a function, or the number of
bytes of temporary CHAR(*) variables that the program creates
implicitly has exceeded 32,768. Only NewEra returns this error.


-4518	The 4GL program cannot allocate any more space for temporary string
storage.

For products other than NewEra, see error -1334, which has replaced
this error.


-4527	Undefined opcode in function name.

The p-code file for the program (whose file suffix is .4go) has become
corrupted. Recompile at least the module that contains the named
function (preferably the whole program) and run it again. If the same
error occurs, make sure that you are running both fglpc and fglgo at
the identical version level. If you are, refer to the Administrator's
Guide or Reference for your database server, for additional diagnostics.
Contact IBM Technical Support with the
diagnostic information.


-4535	Bad store include table syntax "file1" "file2".

An internal error has occurred.

The code that generates the INCLUDE statement, the Application Builder
front-end code that generated the INCLUDE statement is out of
synchronization with the Application Builder back-end code that handles
the insertion and removal of data from the database.

An extraordinarily large save in which the filenames exceed 64
kilobytes could also cause this error.


-4536	Database open failed.

The Application Builder could not open the database. A network failure,
IBM Informix NET failure, or an incorrect value in the DBPATH environment
variable could cause this error. Check the DBPATH setting, and run
SETNET. Also verify that the UNIX host is functioning correctly.


-4538	No database name has been given.

The Application Builder attempted to execute an OPEN DATABASE command
without specifying the name of the database. Check the "database=..."
line in your informix.ini file. If you want to use the default
database, set the line to "database=syspg4gl".


-4542	Attempt to upgrade the design database failed.

The Application Builder attempted to upgrade an older style database
from IBM Informix 4GL to a new style that uses NewEra failed. This process
involves creating a series of new tables and modifying and moving the
data.

The error might occur because of lack of permissions. The owner of the database
should perform the upgrade.

The error could be due to a full disk. The upgrade does not erase old
information until it has been written and verified, and then only if
requested. The amount of free space that an upgrade requires is
approximately equal to the amount that the older database uses.


-4543	Invalid delimiter. Do not use '\\', hex digits (0-9, A-F, a-f), or
space.

Use a delimiter other than any of the 22 forbidden symbols that are
listed here.


-4555	Variable size cannot exceed 65535 bytes.

You have attempted to create a variable whose total size exceeds 65535.
Arrays can consume space more quickly than you might notice. A
simple array A[100,100] of CHAR(6) would consume 10,000 x 7 - 70,000
bytes.


-4556	Object size cannot exceed 65535 bytes.

You have attempted to create an object whose total size exceeds 65535.
Arrays can consume space more quickly than you might notice. A simple
array A[100,100] of CHAR(6) would consume 10,000 x 7 - 70,000 bytes.


-4600	No form by specified name found.

The form specified cannot be found as a file named formname.frm.
The system looks in the current directory, and in each directory
named in the DBPATH environment variable. Possibly the form
name was misspelled, or the form file might have been renamed, or
possibly the DBPATH variable is not set correctly.


-4601	No 4GL module by specified name found.

The source module specified cannot be found as a file module.4gl.
The system looks in the current directory and in directories named
in the DBPATH environment variable. Possibly the module name
was misspelled, or the file might have been renamed, or possibly the
DBPATH variable is not set correctly.


-4602	No 4GL program by specified name found.

The multi-module program specified cannot be found in the
program database. Possibly the module name was misspelled.
Possibly, if the DBPATH environment variable has been changed
since the program was defined, you are now using a different
program database than before.


-4603	No executable 4GL program by specified name found.

The executable program specified cannot be found as a file
module.4go. The system looks in the current directory and in
directories named in the DBPATH environment variable. Possibly
the name was misspelled, or the file might have been renamed, or
possibly the DBPATH variable is not set correctly.


-4604	Errors found in 4GL module.

Select the Correct menu choice. You will be shown the module
source with error messages included.


-4607	The following errors were discovered during compilation.

Errors were found that are not related to specific lines of source code,
for example, undefined functions. There may be .err files as well
that you can display to see more error messages. Modify the
program definition and the source modules as required and
recompile.


-4608	The compilation of the program was not successful.

There should be other error messages visible, or in a file with a suffix
of .err, to explain the lack of success.


-4609	Insufficient memory is available to complete program compilation.

The only practical recourse is to divide the source files into smaller
units.


-4610	Warnings found in 4GL module.

You have compiled with the -ansi command line option, which asks
that you be warned about any use of SQL that does not comply with
ANSI standard SQL. The compiler did find one or more uses of
Informix extensions to standard SQL. Edit the module.err file to see
the warning messages.


-4611	There is no 4GL source available for this program.

You have requested that a program be compiled, but the system
cannot locate one of the module source files. It is looking for files
with the suffix .4gl and having the names shown in the program
source list. It looks in the current directory and in directories named
in the DBPATH environment variable. Check that the program is
correctly defined, and locate the source modules. Make sure that the
DBPATH environment variable is correctly set.


-4612	Data validation table does not currently exist for this database.

The program uses a statement such as VALIDATE or INITIALIZE
that requires input from the syscolval table; however that table
does not exist in the current database. Possibly it has not been
created (using the Column Attributes Dictionary utility in Windows
or the upscol utility in DOS and UNIX); possibly it was inadvertently
dropped from the database; or possibly the database now being
used is not the one you expected, owing to a change in the value of
the DBPATH environment variable.


-4613	Screen display attribute table does not currently exist for this
database.

The program uses a statement that requires input from the syscolatt
table; however that table does not exist in the current database.
Possibly it has not been created (using the Column Attributes
Dictionary utility in Windows or the upscol utility in DOS and
UNIX); possibly it was inadvertently dropped from the database; or
possibly the database now being used is not the one you expected,
owing to a change in the value of the DBPATH environment variable.


-4614	A program already exists by this name.

You have specified as a new program one that already
appears in the program database. Programs must have unique
names. Choose a different name.


-4615	Invalid program name.

You have specified an unacceptable name for a new program. The
name may be too long (at most 10 characters in some operating
systems, at most 8 in others). If not, make sure that it starts with a
letter and contains only letters, digits, and underscore characters.


-4616	The 4GL program database does not exist. Create via
PROGRAM section.

In UNIX, the program database, named syspgm4gl, is not accessible.
If you select the Program menu option you will be asked if you want
to create it. If you think that this database ought to exist already (for
instance, if you have previously defined multi-module programs),
then exit the Programmer's Environment and check the value of the
DBPATH environment variable. It determines which databases are
visible (if you are using the IBM Informix SE). If it is
correct, or if you are using an OnLine database server, then the
program database either never existed or has been dropped.


-4617	You may not edit a program located on a different device.
You cannot specify a pathname to a source file in a directory that is
not on the device that holds your current directory. Use a system
utility to copy the source file to your current directory (or to a
directory on the current device).


-4618	An error has occurred in accessing the requested file.

Something prevented the program from reading the file you
specified. Look for other messages including operating system
messages that might give more details.


-4620	IBM Informix ESQL/C is not installed on the system.

In order to use ESQL/C modules (source files with a .ec suffix) in a
program definition, you must have IBM Informix ESQL/C installed in your
system. If you believe it has been installed, review
the installation procedure, because the product is not visible in the
directory named in the INFORMIXDIR environment variable.


-4621	Error occurred while writing to output file filename.
While writing to the named file the operating system reported an
error. The problem may be a full disk or a hardware failure. Look for
operating system error messages that give more information.


-4622	No runable 4GL program by specified name found.

The program you asked to run is not accessible as a file named
program.4go. 4GL looks in the current directory and in directories
named in the DBPATH environment variable. Check the spelling of
the program name. If it is as you intended, check the existence of the
file and the setting of DBPATH. Possibly you need to compile the
program before running it.


-4623	memory allocation error.

It has proven impossible to allocate memory for a small work area of
fixed size needed by a print function such as USING or ASCII. The
amount of memory needed is small; almost any reduction in
program size should avoid the error.


-4624	Owner name identifier has exceeded 8 characters in length.

The name shown appears in this statement where an owner name is
expected, for example preceding the name of a table: identifier.table.
However, the name exceeds eight characters, and the database
server only allows eight-character owner names. Review the
punctuation of the statement and the spelling of the identifier.


-4625	FIXTIME FAILED.

This is an internal error. If the error recurs, note all
circumstances and contact the IBM Technical Support.


-4626	Could not open file filename.

Either the file does not exist, or your account does not have
permission to access it, or some hardware failure occurred while it
was being opened. Verify that the file exists; if it does, look for
operating system error messages for more information.


-4627	The program cannot exit an INPUT statement at this point because it
is not within an INPUT statement.

The current statement is EXIT INPUT but it is not in the context of an
INPUT statement. Inspect the source module backward from this
point to determine what happened to the INPUT statement. Perhaps
the current statement was misplaced, or perhaps an END INPUT
statement was inserted at an earlier point.


-4628	The program cannot exit a DISPLAY ARRAY statement at this point
because it is not within a DISPLAY ARRAY statement.

The current statement is EXIT DISPLAY but it is not in the context of
an DISPLAY statement. Inspect the source module backward from
this point to determine what happened to the DISPLAY statement.
Perhaps the current statement was misplaced, or perhaps an END
DISPLAY statement was inserted at an earlier point.


-4629	Load from file filename failed.

The LOAD statement failed, either because of an error reading the
named file, or because of an error converting data from one form to
another. Look for other messages from 4GL or the operating system
for more information.


-4630	Unload to file filename failed.

The UNLOAD statement failed, either because of a problem with the
SELECT statement or because of an error producing the output file.
Look for other messages from 4GL or the operating system for more
information.

-4631	Startfield of DATETIME or INTERVAL qualifiers must come earlier in
the time-list than its endfield.

The qualifier for a DATETIME or INTERVAL consists of start TO end,
where the start and end are chosen from this list:

YEAR MONTH DAY HOUR MINUTE SECOND FRACTION

The keyword for the start field must come earlier in the list than, or
be the same as, the keyword for the end field. For example, qualifiers
of DAY TO FRACTION and MONTH TO MONTH are valid but one of
MINUTE TO HOUR is not.


-4632	Parenthetical precision of FRACTION must be between 1 and 5. No
precision can be specified for other time units.

In a DATETIME qualifier only the FRACTION field may have a
precision in parentheses, and it must be a single digit from 1 to 5.
Check the DATETIME qualifiers in the current statement; one of them
violates these rules. The first field of an INTERVAL qualifier may also
have a parenthesized precision from 1 to 5. Consult the SQL
reference material for the distinction between DATETIME and
INTERVAL.


-4633	DATETIME units can only be YEAR, MONTH, DAY, HOUR, MINUTE,
SECOND, and FRACTION.

In the current statement there is an error of some sort either in the
qualifier of a DATETIME or INTERVAL value, or in the argument of
the UNITS function. The only valid precision keywords for these
uses are listed in the message. Possibly a keyword has been
misspelled, or possibly some other syntax error has prevented 4GL
from recognizing the keywords.

-4634	Symbol name must be a SQL database item name -- either a database
name, a tablename or a column name.

The name shown is used in a context that suggests you intend to
name a database or an item in a database. However, there is nothing
of that name in the current database. Check the spelling of name. If it
is as you intended, then make sure that the current database is the
one you meant to use.

-4635	Cannot create temporary file filename to contain a blob variable.

A TEXT or BYTE variable has been located in a temporary file using
the LOCATE statement. The current statement assigns a value into
that variable, so 4GL attempted to create the temporary file, but an
error occurred. Possibly there is no disk space, or possibly your
account does not have permission to create a temporary file. 4GL
creates a temporary file in the directory specified by the DBTEMP
environment variable. Look for operating system error messages

that might give more information. Check the value of DBTEMP.

-4638	The maximum size for varchar must be between 1 and 255.

To store strings longer than 255 characters you must use the CHAR
data type.

-4639	Real column name cannot be specified here. The symbol "*" is
expected instead.

When defining a RECORD LIKE a table you may not write the name
of a single column. Use an asterisk to mean all columns.

-4640	Table name is expected here.

When defining a variable or record LIKE a table you must specify a
table that exists in the current database (the database selected by the
first DATABASE statement in the source file). Only tables in that
database can be named in a LIKE definition. Review the spelling of
the name and the choice of databases.

-4641	Column name is expected here.

When defining a variable LIKE a column you must specify a table
and column. The name here is not a column that appears in the
current database (the database selected by the first DATABASE
statement in the source file). Review the spelling of the name and the
choice of databases.

-4642	Subscripting is NOT allowed here.

This message is not returned by any current Informix product. If the
error recurs, note all circumstances and contact the Informix
Technical Support Department.

-4643	A field in the INTERVAL qualifier is out of range. The acceptable
ranges are from YEAR to MONTH and from DAY TO FRACTION.

An INTERVAL may specify a period of years and/or months, or a
period of days and/or parts of days. However, an interval value
may not mix months and days. The qualifier for an INTERVAL may
use fields from YEAR and MONTH, or fields from DAY through
FRACTION, but it may not have fields from both sets.

-4644	The HELP and ATTRIBUTE clauses each can be specified only once.

Within the scope of an INPUT or DISPLAY ARRAY statement, only
one of each of these clauses may be given. Search backward in the
source module from this statement; locate all the statements of this
type, and reconcile them into one.

-4645	4GL does not support returning a blob variable.

The RETURN statement may not name either a BYTE or a TEXT value.
The only way to return such a value from a function is through a
global variable.


-4646	The specified WORDWRAP RIGHT MARGIN value is out of range. It
must be greater than or equal to the current column and less than or
equal to the report's right margin.

Modify this PRINT statement to specify a right margin for the
WORDWRAP function that does not exceed the report right margin.
The report right margin is set in the OUTPUT section of the report.

-4647	Cannot open file filename to read a TEXT variable value.

This PRINT statement refers to a file or to a TEXT variable has been
located in a file using the LOCATE statement. When 4GL attempted
to open the file to fetch the value an error occurred. Possibly the file
does not exist; possibly your account does not have permission to
access it; possibly there was a hardware error. Verify that the file
exists and is spelled as shown; then look for operating system
messages giving more details.

-4648	I/O error while running the 4GL C or p-code compiler.

The compiler received an unexpected operating system error code
while opening an input or an output file (a source file, a listing file,
an error file etc.) Look for operating system errors that may give
more information.

-4649	I/O error while running fglc: %s.

This messages is not returned by any current IBM Informix product. If it
appears, see the discussion of error -4648. If the error recurs,
note all circumstances and contact the IBM Technical Support.

-4650	Cannot find Runner runner.

Either the normal program runner or the debugger could not be
found in the directory named by the INFORMIXDIR environment
variable. Check the setting of the environment variable.

-4651	The p-code compiler is not contained in your path.

The source module or program cannot be compiled because the
compiler cannot be executed. It should be located in the bin
directory pointed to by the INFORMIXDIR environment variable;
however, that directory also must be listed in the PATH environment
variable before the program can be called.

-4652	The function function name can only be used within an INPUT or
CONSTRUCT statement.

The function shown is being used outside of an INPUT or
CONSTRUCT statement. However, it returns a result that is only
meaningful in the context of INPUT or CONSTRUCT. Review the code
to make sure that an END INPUT or END CONSTRUCT statement has
not been misplaced. Review the operation and use of the function to
make sure you understand it.

-4653	No more than one BEFORE or AFTER INPUT/CONSTRUCT/MENU
clause can appear in an INPUT/CONSTRUCT/MENU statement.

There may be only one BEFORE block of statements to initialized
each of these statement types. Make sure that the scope of all your
INPUT, CONSTRUCT and MENU statements is correctly marked with
END statements. Then combine all the preparation code into a single
BEFORE block for each one.

Note: Error -4653 with this meaning is issued by 4GL after Version 4.1.


-4654	CHAR size should be in the range of 1 to 32766.

The program has declared a variable of type CHAR with a size that is
out of the acceptable range.


-4655	Invalid range specified for VARCHAR.

The declaration of the fort VARCHAR (maximum, reserved) has incorrectly
specified a value for reserved that is not between 0 and maximum,
inclusive.


-4656	CANCEL INSERT can only be used in the BEFORE INSERT
clause of an INPUT ARRAY statement.

The CANCEL INSERT statement is being used outside of
BEFORE INSERT clause of an INPUT ARRAY. Review the code
to make sure that CANCEL INSERT has not been used
anywhere else except in the BEFORE INSERT clause.


-4657	CANCEL DELETE can only be used in the BEFORE DELETE
clause of an INPUT ARRAY statement.

The CANCEL DELETE statement is being used outside of
BEFORE DELETE clause of an INPUT ARRAY. Review the code
to make sure that CANCEL DELETE has not been used
anywhere else except in the BEFORE DELETE clause.


-4658	Constants are not allowed as cursor names.

Identifiers that are used for dynamic cursor names must be variables.


-4659	The CHAR (*) type is not allowed for report parameters.

A formal argument cannot accept a character data type of unspecified
length, such as CHAR(*).


-4660	Report parameters cannot take object references.

A formal argument cannot specify a class name (or FOREIGN) as its data
type.


-4661	Access control restrictions are not allowed for this intrinsic member
function.

The intrinsic member functions !copy() and !derive() must have PUBLIC
access control, which is the default access control for member
functions.


-4663	ODBC error from engine - "text".

The -useccl compiler switch has been used. An ODBC error, shown here as
"text", has been detected.


-4664	CCL class declarations are required with the "-useccl" switch. Add
INCLUDE SYSTEM "ixstmt.4gh" to your module.

To compile a REPORT or the MAIN program block with the -useccl switch,
the user needs to include ixstmt.4gh.

This statement has calls to functions nested within the parameter lists
of other function calls, to a level exceeding four. A maximum level of
four is supported, as in the following expression:
Afun(2-Bfun(3+Cfun(4*Dfun(5))))

Rewrite the expression to store the result of the innermost function
calls in a variable, and use the variable in the expression.


-4665	Warning: Report page header or trailer output must end with a newline,
so a newline will be automatically appended.

A report header or trailer contained a semicolon (;) at the end of the
line. In the body of the report, a trailing semicolon suppresses the
creation of a new line. The header and trailer must end with a new-line
character to perform properly. The compiler has ignored the semicolon.
To prevent this warning message from appearing, remove the semicolon
from the source code.


-4666	Problem encountered in populating the repository.

For a detailed description of the problem, see the repold.log file in
either $INFORMIXDIR\temp or the current directory.


-4667	Class name is only forward declared in this file.

Updating the repository with a forward-declared class is discouraged.


-4668	The report output, specified by a START REPORT
statement, is not any of file, pipe, screen, printer,
pipe in line mode, or pipe in form mode.

The output of a report can be sent only to any of file,
pipe (in form or line modes), screen, or printer.


-4669	The function fgl_setcurrline can only be used in
INPUT/DISPLAY ARRAY block.

The function is being used outside of an INPUT/DISPLAY
ARRAY block. Review the code to make sure that
fgl_setcurrline has not been used anywhere else except
in the INPUT/DISPLAY ARRAY block.


-4670	Multiple INTO clauses cannot be used inside SQL...END
SQL block.

Only one INTO clause can be used inside the SQL...
END SQL block. Review the code to make sure that more
than one INTO clause has not been used.


-4671	Missing END SQL after semicolon(;) in SQL...END
SQL block.

A optional semicolon(;) can be used to mark the end of
an SQL statement inside the SQL...END SQL block. The
program has encountered a semicolon(;) but could not
find END SQL immediately after that. Review the code to
make sure that the END SQL directive appears immediately
after the semicolon(;).


-4701	The -V option must be used on its own with no other arguments.

The -V option requests that the program display the version number and
then terminate. No other options are allowed with this option. To
display the version number, repeat the command, but with only the -V
option.


-4702	No program was specified.

The command cannot be executed because you did not specify the program
name. Repeat the command with the name of a NewEra program as an
argument.


-4703	Invalid option name.

You specified an option that the program does not recognize. For the
valid options of this command, refer to your documentation. Repeat the
command, using only valid options.


-4704	Option name requires an argument.

You specified an option that the program does not recognize. For the
valid options of this command, refer to your documentation. Repeat the
command, using only valid options.



-4801	Only 1, 2 or 3 can be used with WITH DIMENSIONS.

The syntax for declaring a dynamic array is
DEFINE arrname DYNAMIC ARRAY [with n dimensions] OF TYPE.
The value of n can be 1,2, or 3. If not specified, a 
default of 1 is assumed.

-4802	Dynamic array of a record with BLOB as one of the members 
is not allowed.

A dynamic array of records cannot have a BLOB or TEXT data type as one
of its members. 

-4803	The variable used in ALLOCATE/DEALLOCATE/RESIZE ARRAY
statement can only be a variable of the DYNAMIC ARRAY type.

The subject of an ALLOCATE, DEALLOCATE, or RESIZE statement
must be a variable of type DYNAMIC ARRAY. The variable can
be a dynamic array of any simple type or a 4GL RECORD type.


-4804	Subscripting cannot be applied to the variable "%s"
because it is not an array variable.

Only variables of the type ARRAY or DYNAMIC ARRAY can have
subscripts applied to them. If the compiler encounters a subscript
operation on a variable of some other type, it generates this error.


-4805	The variable on which ALLOCATE/DEALLOCATE/RESIZE ARRAY
statement is to act must be a dynamic array.

A variable of the type DYNAMIC ARRAY can be the subject of 
ALLOCATE, DEALLOCATE, or RESIZE statements. The variable can
be a dynamic array of any simple type or a 4GL RECORD type.


-4806	The dynamic array has been allocated already.

The array has been allocated using an ALLOCATE statement. 
Use DEALLOCATE before trying to ALLOCATE it again, or use RESIZE
to change the extent sizes.


-4807	Accessing elements of a dynamic array that has not been allocated is 
not allowed.

The dynamic array has not been allocated. Allocate a dynamic array
with the ALLOCATE DYNAMIC ARRAY statement. The syntax is ALLOCATE ARRAY <arrayname>[extent information]
See the 4GL Reference Manual for more details.


-4808	RECORD nesting is not allowed when DYNAMIC ARRAY OF RECORD is involved.

You cannot define a RECORD element where the top level record is
a DYNAMIC ARRAY type. Replace the top level DYNAMIC
ARRAY OF RECORD with an ARRAY type.


-4809	DEALLOCATE ARRAY statement can only have the array name. It cannot 
have subscripts.

You deallocate a dynamic array only by using the array name
without subscripts. You cannot use a statement like the one below, with a subscript:
DEALLOCATE ARRAY dynarr[10] 
Instead, use the statement as follows:
DEALLOCATE ARRAY dynarr


-4810	Subscript was missing on the dynamic array variable "%s" for ALLOCATE/RESIZE.

The ALLOCATE and RESIZE statements need the (new)size. If the subscripts
are missing, then this error is generated.
Example:
ALLOCATE ARRAY dynarr[10]


-4811	DYNAMIC ARRAY in a DYNAMIC ARRAY OF RECORD is not allowed.

You cannot have a DYNAMIC ARRAY inside a DYNAMIC ARRAY of RECORD.
Replace it with an ARRAY type.


-4813	Dynamic array ALLOCATE/RESIZE parameters must be positive and
non zero.

Check your RESIZE or ALLOCATE statement. Subscript values
must be positive and non zero.


-4814	Dynamic arrays passed/returned should be of similar
characteristics.

A dynamic array passed to functions or returned from a function:
a. Must be of the same type as the function passed/returned
b. Must have the same number of extents for both functions
c. If it is a dynamic array of record, must have both records the same size


-4815	Only dynamic arrays can be used for fgl_isdynarr_allocated or
fgl_dynarr_extentsize.

Use a DYNAMIC ARRAY only as an argument for the fgl_isdynarr_allocated function and as the first argument for
the fgl_dynarr_extentsize function.
The dynamic array name should be used without any subscripts.


-4816	Dynamic array used in fgl_dynarr_extentsize function should
be in ALLOCATEd state. 

The function can be used only with a dynamic array that 
has been allocated. Use the ALLOCATE ARRAY statement before
the fgl_dynarr_extentsize function is called.


-4817	The dynamic array for which fgl_dynarr_extentsize(dynarr, n)
is being used does not have the 'n'th dimension.

The array for which fgl_dynarr_extentsize function has been called 
does not have the nth dimension. Look at the array definition 
in the DEFINE DYNAMIC ARRAY statement and find out how many dimensions 
it has. 


-4818	Delimiter should be comma, when format is CSV. It should be a 
newline when format is TEXT.

When the format specified is CSV (Comma Separated Values), the delimiter must be 
Comma. Similarly if the format specified is text, the delimiter must be new-line.
Change the Delimiter accordingly.

-4819	Only LOAD, CSV and TEXT formats are supported.

The formats that can be specified are LOAD, CSV(Comma Separated values) and TEXT.
Specify the format of the file as either LOAD, CSV or TEXT.

-4820	Delimiter should be set only when format is specified.

The delimiter must be set only when format of the file is specified.
Specify the format of the file to either LOAD, CSV or TEXT and then 
specify the delimiter. 

-4821	The file file_name cannot be created or opened.
Accompanying OS message : OS_Message. 

Check that your username, has permission to create files in the specified directory. Look 
for the accompanying error messages from the operating system. Possibly the disk is full, 
or you have reached a limit on the number of open files. 

-4822	The file file_name cannot be closed. 
Accompanying OS message : OS_Message. 

The file cannot be closed. Look for the accompanying error messages from the operating 
system. Possibly the file is not opened, or the file descriptor specified may not be correct.

-4823	The file associated with the file descriptor may not be opened. 

The file descriptor specified may not be associated with a file. Possibly the file may already 
be closed or the file descriptor may be changed in the program. Revisit the program logic.

-4824	The file "%s" cannot be read.
Accompanying OS message : "%s". 

The file cannot be read. Check that your username, has permission to read the file. Look for the 
accompanying error messages from the operating system.  Possibly, the file is already closed, 
or the disk is full, or a hardware failure occurred. 

-4825	Seek on file file_name cannot be done.
Accompanying OS message : OS_Message.

Seek on the file cannot be done. Look for the accompanying error messages from the operating 
system. Possibly the file may already be closed or the file descriptor may be changed in the program.

-4826	The file file_name cannot be written.
Accompanying OS message : OS_Message.

The file cannot be written. Check that your username, has permission to write to the file. Look for 
the accompanying error messages from the operating system.  Possibly, the file is already closed, or 
the disk is full, or a hardware failure occurred.

-4827	The string in the file file_name is too long to fit in the variable.

The length of the variable is less than the length of the string read from the file. The String cannot be 
stored in the variable. Increase the size of the variable.

-4828	The field to be read from the file file_name should not be greater than 4096 bytes.

The length of the string read from the file exceeds 4096 bytes. Check the field in the file. Possibly, the 
file delimiter is misplaced.

-4829	Memory allocation error.

It has proven impossible to allocate memory for a small fixed size structure needed by a File IO function 
such as Open or Close. The amount of memory needed is small; almost any reduction in program size should 
avoid the error.

-4830	The variable var_name is not of type INTEGER or SMALLINT.  It cannot be 
used as a file descriptor. 

The variable used as a file descriptor must be an integer type. Specify a 
different variable, or redefine the one named.

-4831	The variable var_name is not of type INTEGER or SMALLINT.  It cannot be 
used to store offset bytes returned from the seek operation.

The variable used to store the offset bytes returned from the seek operation 
must be an integer type. Specify a different variable, or redefine the one named.

-4850	Insufficient space for formatted INTERVAL value.

The INTERVAL value could not be accommodated within the allocated buffer.

-4851	Invalid INTERVAL value.

The INTERVAL value has an invalid character.
The syntax of an INTERVAL value must begin with the character 'P'.

-4852	Invalid INTERVAL value.

The INTERVAL value has an invalid character.
Any hours, minutes, or seconds in the durationmust begin with 'T''.

-4853	Extra (non-blank) characters at the end of a interval value.

Only spaces can follow an INTERVAL literal. Inspect the INTERVAL values.

-4854	Invalid INTERVAL value.

An Invalid character is used as a marker in an INTERVAL value.  Valid markers are YMDTHMS.

-4855	Invalid INTERVAL value.

A Valid marker is used incorrectly in an INTERVAL value. Review the markers used for INTERVAL qualifiers like 
YMDTHMS to ensure they are used at the right place in the value.

-4856	No digits where digits required in INTERVAL value.

Review the INTERVAL value to ensure it is not missing a field.
In an INTERVAL literal, the first field is a count and can have as many digits as the qualifier specifies.

-4857	Too many digits in field of INTERVAL value.

The first field of an INTERVAL literal must contain either 1 or 2 digits 
(if it is not a YEAR) or 2 or 4 digits (if it is a YEAR).
Review the INTERVAL literals in this statement and correct them as necessary.

-4858	Invalid INTERVAL value.

The INTERVAL value has repeated mark letters. An INTERVAL value can specify 
either a period of years and/or months, or a period of days and/or parts of days. 
It cannot specify both years and/or months and days and/or parts of days.
The INTERVAL value must follow the first to last format and cannot have the same units repeated.

-4859	Invalid INTERVAL value.

The INTERVAL value has an invalid sequence of mark letters. 
An INTERVAL value can contain either a year-month interval or a day-time interval.
An INTERVAL value must follow the  first to last format l. The qualifier for an
 INTERVAL can specify fields from YEAR and MONTH, or fields from DAY through 
FRACTION, but it  can not specify fields from both sets.

-4860	Invalid INTERVAL value.

Fraction only allowed in seconds in INTERVAL value and 
decimal point should be between second and fraction.
Review the literal qualifier for missing or misplaced punctuation.

-4861	Output buffer not big enough to hold the DATETIME value.

This error is returned when the function is called and the address 
space for the output buffer is null or smaller than the format-string length.

-4862	Invalid DATETIME format.

The XSD format of a DATETIME value is not supported.

-4863	Invalid DATETIME format.

The DATETIME value does not match the required format.

The DATETIME value is missing at least one field, or repeating a field value, or has a 
missing, misplaced, or repeated delimiter, or has improper Markers
in the xsd DATETIME value.

-4864	Invalid character in DATETIME value.

The form of a DATETIME literal is very limited and can
contain only decimal digits and the following delimiters: the hyphen
between year, month, and day numbers; the space between day and hour;
the colon between hour, minute, and second; and the decimal point
between second and fraction.

Any error is returned if Any other characters or any of the allowed characters are used
in the wrong order.

-4865	Field value out of acceptable range in DATETIME value.

The DATETIME value contains at least one incorrect field or is missing at least one field.

Possible errors include: Using zero for the year; using numbers other than 
1 to 12 for the month, 1 to 31 for the day, 0 to 23 for the hour, or 0 to 59 for the minute or second; 
using an inappropriate number for the month; and using a fraction with too many digits for the specified precision.

-4866	Invalid DATETIME format .

The Field value is too wide for an xsd DATETIME value. 

-4986	Communication between fgld daemon and application server was closed.

Connection between fgld daemon and application server was interrupted, check
if application server is able to send request to fgld daemon running.

-4987	The supplied argument does not match with a function definition

Match the supplied argument with the function definition described in the WSDL file 
and correct the argument either in the configuration file or in the 4GL client application.

-4988	The number of environment values received is different from the number expected

The client has not provided the sufficient number of environment values. 
Ensure that the client application correctly processes the 
INFORMIXSERVER, CLIENT_LOCALE, and DB_LOCALE in the code.

-4989	A client is attempting to invoke a web service that does not exist

Match the SERVICENAME in the subscriber configuration file with the web service name in the WSDL file.

-4990	Unrecoverable error in application server

The application server encountered an unrecoverable error. 
Note the scenario and contact IBM Technical Support.

-4991	Operation failed while converting data from the XSD format to the SQL format

Ensure that input values match the input parameter types in WSDL file.

-4992	Message protocol error

Note the scenario and contact IBM Technical Support.

-4993	Supplied service name or operation name  (%s) cannot be found

The given web-service name or the operation cannot not be found. 
Match the SERVICENAME in the subscriber configuration file with the web service name in the WSDL file. 
Or, match the [FUNCTION]...NAME that follows the SOAP_NAME tag in the subscriber configuration file 
with the operation name in the WSDL file.

-4994	The number of inputs received does not match the number of inputs defined in the web service

Match the supplied input argument(s) with the input argument(s) function definition 
described in the WSDL file and correct the argument either in the configuration file or 
in the 4GL client application.

-4995	The number of outputs received does not match the number of outputs defined in the web service

Match the supplied output argument(s) with the output argument(s) function definition 
described in the WSDL file and correct the argument either in the configuration file or 
in the 4GL client application.

-4996	Unknown host name or port number

Ensure that the web service publisher has:
	1) Set the environment variables FGLD_HOSTNAME and FGLD_PORTNUMBER 
	2) Run the fgld on the FGLD_PORTNUMBER specified
	3) Run Axis2C on the same terminal where fgld is running

-4997	Port number  (%s) must be in the range 1024 - 65535

The port number set in the FGLD_PORTNUMBER environment variable is not in the valid range 1024 - 65535.

-4998	Operation failed while converting data from the SQL format to the XSD format

Ensure that output values match the output parameter types in WSDL file.


-5000	CSM error: <text>

A CSM (Communications Support Module), in the database server or in the
client, detected an error.

This error code is a general CSM error code. It can be used by individual
CSMs to reflect different error conditions. The text provides clues about
the possible cause of the error.

If the confidentiality option is enabled for a particular CSM, you might
see the following example of this error code: "CSM error: CSM: received
message of unexpected type." This implies that the CSM on the user's side
(either database server side or client application side) cannot interpret
the messages it receives. Make sure that the confidentiality option is
set for both the database server and the client application.

Check your sqlhosts file and CSS configuration file. Check the error
message on the other side (either database server side or client
application side) for more clues about the possible cause of the error.

Also make sure that the CSM you are using is supported by the database
server or the client SDK. If the problem persists, contact
IBM Technical Support or the CSM vendor. Have the following information
available: CSS configuration files and sqlhosts information for both
the client and the database server.


-5001	CSM: memory allocation error.

A CSM (Communications Support Module), in the database server or in the
client, could not acquire memory for processing.

Make sure that the system configuration makes sufficient memory available
for dynamic allocation. If that fails, contact IBM Technical Support
or the CSM vendor and have the following information available: CSS
configuration files and sqlhosts information for both the client and the
database server.


-5002	CSM: memory de-allocation error.

A CSM (Communications Support Module), in the database server or in the
client, could not deallocate memory. This error message arises only when
some form of memory corruption has occurred.

Contact IBM Technical Support or the CSM vendor and have the
following information available: CSS configuration files and sqlhosts
information for both the client and the database server.


-5003	CSM: file I/O error.

A CSM (Communications Support Module), in the database server or in the
client, could not complete a file read or write operation successfully.
This error can occur only during use of a CSM.

Validate that all files that the CSM requires for operation are available
for read and write access by the user in the client or by user informix
in the database server. If that fails, contact IBM Technical Support
or the  CSM vendor and have the following information available: CSS
configuration files and sqlhosts information for both the client and the
database server.


-5004	CSM: invalid context.

A CSM (Communications Support Module), in the database server or in the
client, detected a context that contains invalid data or that is
inconsistent with the current operation or CSM state. This error normally
occurs during input or output message processing (as opposed to context
establishment).

Contact IBM Technical Support or the CSM vendor and have the
following information available: CSS configuration files and sqlhosts
information for both the client and the database server.


-5005	CSM: unsupported feature.

A CSM (Communications Support Module), in the database server or in the
client, found either a global or connection parameter specification that
the current version of the CSM does not support. The CSM could also find
that the peer CSM, through the internal CSM-to-CSM protocol, indicated
the use of an option that this CSM instance does not support.

Remove any option that the CSM does not support or upgrade the CSM to one
that supports the option. Install and activate matching versions of the
CSMs in the client and database server. If the problem recurs, contact 
IBM Technical Support or the CSM vendor and have the following
Information available: CSS configuration files and sqlhosts information
for both the client and the database server.


-5006	CSM: invalid global options.

A CSM (Communications Support Module) found a global option that the
current version of the CSM does not support. The global option string is
specified in the CSS configuration file. 

Remove any options that the CSM does not support from the global option
specification or upgrade the CSM to one that supports the options. If the problem recurs,
contact IBM Technical Support or the CSM vendor and have
the following information available: CSS configuration files and sqlhosts
information for both the client and the database server.


-5007	CSM: invalid context options: <text>

A CSM (Communications Support Module), in the database server or in the
client, found a CSM connection option specification that the current
version of the CSM does not support. The connection options string is
specified in the CSS configuration file, and the csm option field in the
sqlhosts file. The text in the error message shows any options that the
CSM does not support.

Remove any options that the CSM does not support from the CSM connection
option specification or upgrade the CSM to one that supports the options.
If the problem recurs, contact IBM Technical Support or the CSM vendor and
have the following information available: CSS configuration files and
sqlhosts information for both the client and the database server.




-5008	CSM: peer disconnected.

A CSM (Communications Support Module), in the database server or in the


client, received a message from the peer CSM (using their private 
CSM-to-CSM protocol) to initiate an orderly tear-down of their respective
CSM contexts. This CSM responded by returning to the caller (CSS and its
caller) with this message. This message might not be an error, but might
actually be part of the protocol. A typical event that might trigger this
disconnection is the expiration of a credential (such as an old Kerberos
ticket, an association that is too long if the CSM functionality includes
placing limits on the duration of SQL sessions, or an expired X.509 
certificate). This error can occur only during use of a CSM.

If the disconnection seems unexpected and the problem persists, contact
IBM Technical Support or the CSM vendor and have the following
information available: CSS configuration files and sqlhosts information
for both the client and the database server.


-5009	CSM: authentication error.

A CSM (Communications Support Module) that performs principal 
authentication either in the database server or in the client failed to
authenticate the principal. 

If this error occurs during session establishment, the connection
establishment fails. Otherwise, the connection is dropped.

A common cause for this error is that an invalid password is given or the
desired database server does not consider the client computer or your
user ID trusted.

Provide a correct password as required by the authentication. Or ask the
system administrator to include the client computer as a trusted host
and/or your user ID as a trusted user in the /etc/hosts.equiv file on the
database server computer or in the .rhosts file in your home directory on
the database server computer. For more information, see the UNIX manual
pages on HOSTS.EQUIV(5).

If the problem recurs, contact IBM Technical Support and have the following
information available: CSS configuration files and sqlhosts information
for both the client and the database server.


-5010	CSM: internal processing error.

A CSM (Communications Support Module), in the database server or in the
client, detected an internal processing error and is incapable of
self-diagnosing it to provide additional information. This error can
occur only during use of a CSM and normally represents an internal
processing error, but could be caused by an undetected protocol error.

If this error occurs during context setup (that is, at connection time),
the connection establishment fails. If this error occurs after
establishment of the connection, the connection is dropped.

Contact IBM Technical Support or the CSM vendor and have the
following information available: CSS configuration files and sqlhosts
information for both the client and the database server.


-5011	CSM: protocol error.

A CSM (Communications Support Module), in the database server or in the
client, received a message that is not consistent with the CSM's protocol
formats, with its internal state, or with both. The usual cause of this
error is an internal message inconsistency, which indicates the receipt
of a protocol data unit with an unknown format. This error can occur only
during use of a CSM, and the cause can be a communications error, the use
of incompatible versions of the CSM in the client and the database
server, or inconsistent configurations of the client and database server
CSMs.

If this error occurs during context setup (that is, at connection time),
the connection establishment fails. If this error occurs after
establishment of the connection, the connection is dropped.

Make sure that the release levels of the CSMs types match, and the
configurations of client and database server CSMs match. If the problem recurs,
contact IBM Technical Support or the CSM vendor and have the
following information available: CSS configuration files and sqlhosts
information for both the client and the database server.


-5012	CSM: received message of unexpected type.

A CSM (Communications Support Module), in the database server or in the
client, received a message with a type that is inconsistent with the
protocol formats and/or internal state. This message is more specific
than message -5011 because in this case the protocol data unit that is
internally consistent might be carrying a message type that the receiver
cannot handle. This error can occur only if a CSM is used. It can be
caused by a communications error, by the use of incompatible versions of
the CSM in the client and the database server, or by inconsistent
configurations of the client and database server CSMs.

If this error occurs during context setup (that is, at connection time),
The connection establishment fails. If this error occurs after
Establishment of the connection, the connection is dropped.

Make sure that the release versions of the CSMs types match, and the
configurations of client and database server CSMs match. If the problem recurs,
contact IBM Technical Support or the CSM vendor and have the
following information available: CSS configuration files and sqlhosts
information for both the client and the database server.


-5013	CSM: cannot obtain credential: authentication error.

A CSM (Communications Support Module), in the database server or in the
client, cannot obtain a credential to proceed in an authentication
exchange. For example, a user did not provide a password, or a credential
request to an external authentication service returned an error. This
error can only occur during context setup (that is, at connection time).

The connection establishment fails.

When a CSM is configured to require a password for authentication, a
valid password must be provided. Do not configure the database server to
use CSM in such a way that password input is required when you first
bring up the database server. Bring the database server up and let it
build system tables. Bring the database server down, and reconfigure it
to use the CSM as you desire.

Provide the password credential, or perform the operations that the
external authentication service provider requires in advance (for
example, Kerberos klogin).


-5030	CSM: crypto library error: <text>.

A CSM (Communications Support Module), in the database server or in the
client, received an error indication from its cryptographic service
provider (or crypto library). This error can occur only during use of a
CSM and normally represents an internal processing error, but an
undetected protocol error could cause this error as well. Additional
text, crypto-library return codes, or both might follow the error
message.

If this error occurs during context setup (that is, at connection time),
the connection establishment fails. If this error occurs after
establishment of the connection, the connection is dropped.

Contact IBM Technical Support or the CSM vendor and have the
following information available: CSS configuration files and sqlhosts
information for both the client and the database server.

-5848	A row with constraint violations exists

.PROBLEM
The transaction mode setting for constraints cannot be changed because
there is a row with constraint violations, possibly due to deferred
constraints.

-5849	The sub-query flattening settings for the query plan and the current 
value of NO_SUBQF environment variable do not match.

.PROBLEM
The query plan was created with a different value of the NO_SUBQF environment 
variable than the current value of the NO_SUBQF environment variable.
.ACTION
Change the value of the NO_SUBQF environment variable or run UPDATE STATISTICS
to recreate the routine query plan.

-5851	Invalid value specified to SUBSTRING function.

The length argument specified to the SUBSTRING function cannot have a
negative value


-5852	Invalid date.

One of the arguments specified to the function must be a DATETIME type. 
Check the values of the arguments that you are passing to the function.


-5853	The format element: (element_name) does not have an equivalent
in Informix.

The format specified is not supported and therefore cannot be converted 
to an Informix format.


-5854	Unrecognized format element: (element_name).

The format element specified is unrecognized. It is probably not a legal 
Oracle format element.


-5855	The target string is not long enough to contain the converted format.

The target string is not long enough to contain the converted format. You 
need to allocate more space for the target string.


-5856	You specified invalid precision for FLOAT.

Maximum precision value for FLOAT data type must be between 1 and 16.
Note: SQL ignores any specified precision.


-5857	Using NULL in the RANGE or STEP expression is not possible.

A RANGE or STEP expression included NULL.

Replace NULL with another value in the RANGE or STEP expression and
retry the statement.


-7000	Error error-number from the optical subsystem. Consult your appropriate
subsystem manual.

Check the error number in the documentation for the subsystem that you
are using.

-7202	Database was created without NLS functionality.

You attempted to create an NCHAR (or NVARCHAR) column or declare an
NCHAR (or NVARCHAR) variable, in a non-NLS database.


-7203	DBNLS is not set or LC_COLLATE must be category-value.

You might receive this message when you try to access an external
database that has a different locale than the current database. In
order to use this NLS database, you must set the DBNLS environment
variable to 1 or 2 and the LC_COLLATE environment variable to the
specified category-value.


-7204	LANG or LC_COLLATE environment variable is invalid.

Either the LANG or the LC_COLLATE environment variable setting is
invalid. Set either or both variables to the values that your system
supports.


-7205	DBNLS is not set or LC_CTYPE must be set to category-value.

You might receive this message when you try to access an external
database that has a different locale than the current database. In
order to access this NLS database, you must set the DBNLS environment
variable to 1 or 2 and the LC_CTYPE environment variable to the
specified category-value.


-7206	LANG or LC_CTYPE environment variable is invalid.

Either the LANG or the LC_CTYPE environment variable setting is
invalid. Set either or both variables to the values that your system
supports.


-7207	LANG or LC_MONETARY environment variable is invalid.

Either the LANG or the LC_MONETARY environment variable setting is
invalid. Set either or both variables to the values that your system
supports.


-7208	LANG or LC_NUMERIC environment variable is invalid.

Either the LANG or the LC_NUMERIC environment variable setting is
invalid. Set either or both variables to the values that your system
supports.


-7209	LANG or LC_TIME environment variable is invalid.

Either the LANG or the LC_TIME environment variable setting is invalid.
Set either or both variables to the values that your system supports.


-7210	This server does not have NLS capability.

You tried to access an NLS database from a non-NLS-ready database
server. This database server does not support NLS. Contact IBM
for a version that does support NLS.


-7211	Cannot reference an external NLS database.

If your current database is not an NLS database, you cannot access an
NLS database on another database server or on the same database
server. However, if the NLS environment variables are set correctly,
you can drop an external NLS database even if your current database is
not an NLS database.

-7350	Attempt to update a stale version of a row

An attempt was made to update a stale copy of a row.  This caused an
optimistic concurrancy failure.

This error can occur when using updatable secondary and the current
version of the row has not yet been replicated to the secondary on which
the client application is connected.

This error code is also returned when table schema at secondary server
doesn't match with the table schema at primary server.

-7351	Connection between secondary and primary has been lost

The connection between the secondary and the primary has been lost.  This
will prevent the updates on secondary until connectivity has been
reestablished.


-7352	Operation can not be run on secondary node

There was an attempt to run an operation on a secondary node which can
only be successfully run on the primary.  You will need to perform
the operation on the current primary node


-7353	The transaction cannot continue on the new primary server.

The transaction was started at a secondary server.  While processing the
transaction, the original primary server to which the secondary server was
connected went off-line and another server became the new primary server.
There was an error recreating the transaction state at the new primary
server.


-7400	Invalid API argument <argument-name>.

Verify the arguments to the DataBlade API calls.


-7401	Invalid API usage <API-call>.

A DataBlade API call used an invalid argument or was made in an incorrect
context. The value of one or more arguments might be invalid, the sequence
of DataBlade API calls might be incorrect, or the call might have been made
from within a callback function where the call is invalid.

Check that the values of individual arguments are valid in the API call and
that the combination of all argument values is correct. Also check the
sequence of your DataBlade API calls. If the API call named in the
error message is made from within a callback function, move the call or
remove it.


-7402	Internal error.

If this error occurs, note all circumstances and contact IBM Technical
Support.


-7403	File protocol error. Expected message_packet_name.

This is an internal error. If it recurs, note all circumstances
and contact IBM Technical Support.


-7404	File protocol error. Reported by client.


If this error recurs, note all circumstances and contact
IBM Technical Support.


-7406	Operation operation_name not supported outside execution.

This is an internal database server error. If it recurs, note
all circumstances and contact IBM Technical Support.


-7411	Error loading locale object for client locale.

Probably an error occurred either while reading a registry or reading a
conversion object file. Locale file details are missing from the
registry file. Make sure the locale you are trying to load is
compatible with the locale that was specified when the database was
created.


-7412	Error loading code-set conversion object for converting to client
codeset.

Probably an error occurred either while reading a registry or reading a
conversion object file. Locale file details are missing from the
registry file. Make sure the locale you are trying to load is
compatible with the locale that was specified when the database was
created.


-7413	Error loading locale object for server processing locale.

Probably an error occurred either while reading a registry or reading a
conversion object file. Locale file details are missing from the
registry file. Make sure the locale you are trying to load is
compatible with the locale that was specified when the database was
created.


-7420	Argument argument_name is invalid.

Verify the arguments to the DataBlade API calls.


-7421	The specified column position is invalid.

Check the arguments to the DataBlade API calls that require column
numbers. DataBlade API calls use column numbers 0 to number of columns
minus one.


-7422	Cannot issue SAPI function <function-name> in a secondary PDQ
thread. You need to define the user-defined routine as non-parallelizable.

A user-defined routine that was defined as parallelizable has issued a SAPI
function that is not PDQ thread-safe. Only nonparallelizable user-defined
routines can call such a SAPI function.

Drop the routine and redefine it as nonparallelizable. To define a routine
as nonparallelizable, reissue the CREATE FUNCTION, CREATE PROCEDURE, or
CREATE ROUTINE statement without the WITH (PARALLELIZABLE) class. Or you can
use the following statement to make a routine nonparallelizable:

    ALTER ROUTINE routine-name WITH (DROP PARALLELIZABLE)


-7423	An invalid argument is specified. Either the return type buffer is
empty or the length of the buffer is not valid.

Verify arguments to DataBlade API calls.


-7424	A Cursor can only be defined for a prepared SELECT statement.

Prepare your SELECT statement before you define the cursor.


-7425	Invalid statement handle.

Verify arguments to DataBlade API calls. The statement handle used was
invalid or improperly modified.


-7426	There is no active query on this connection.

Verify the logic in the user-defined routine. You cannot retrieve or
query results without an active query.


-7427	Argument is not a valid argument_name.

An argument to a DataBlade API is invalid. Verify the arguments used in
each call to the DataBlade API.


-7428	Saveset is corrupted.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7429	Out of memory allocating save set.

Check with your system administrator or database administrator.


-7430	Out of memory allocating save set element.

Check with your system administrator or database administrator.


-7431	Invalid save set type type_name.

Verify that your type name is spelled correctly. If it is a
user-defined type, ensure that it has been defined correctly in your
database.


-7432	Command is not yet complete.

Feature is not yet implemented. Review your release notes.


-7433	Command not a DML.

A SELECT, INSERT, UPDATE or DELETE statement was expected. Review the
SQL statement in the user-defined routine.


-7434	Parameter information not supported for SELECTS.

Feature is not implemented.


-7435	This statement references a table that is used in the parent queries.

Subqueries or queries invoked by nested user-defined routines cannot
reference tables used by parent queries or calling user-defined
routines. Restructure your query to avoid this situation.


-7436	Inappropriate statement for parameter information.

You requested parameter information calls for a non-DML statement.
Parameter information can be obtained only for DML statements.


-7438	Unsupported data type.

The data type you are using is not supported. Verify the type
definition.


-7442	The statement must be opened before this operation can be performed.

An attempt was made to fetch or close a prepared statement that is not
open. Ensure that a mi_open_prepared_statement call was successfully
completed prior to calling mi_fetch_statement or mi_close_statement.


-7443	The statement must be closed before it can be reopened or executed.

An attempt was made to open or execute a prepared statement that is
already open. A statement must be closed before it can be reopened with a
mi_open_prepared_statement call or executed with a mi_exec_prepare_statement
call.

-7469	Calling %s is not supported from compare function.

Compare() functions cannot call strings.


-7470	Invalid connection connection_handle.

Verify arguments to DataBlade API calls. The connection handle used was
NULL, not opened, invalid, or improperly modified.


-7471	Internal error: Invalid user-defined routine context/state (state)

If this error recurs, note all circumstances and contact IBM Technical
Support.


-7472	Out of memory allocating internal user-defined routine connection state.

Check disk space on your computer. For more help, call your system
administrator or database administrator. If these checks do not
resolve the problem, and this error recurs, note all
circumstances and contact IBM Technical Support.


-7473	Internal error: Bad install of user-defined routine-language manager
callback.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7474	Out of memory allocating server user-defined routine connection.

Check disk space on your computer. For more help call your system
administrator or database administrator. If this error recurs,
note all circumstances and contact IBM Technical Support.


-7475	Cannot close a connection from outside of its own parent statement.

Check the logic in your user-defined routine. You must open and close
connections within the scope of the user-defined routine.


-7476	Cannot close a session-duration connection within an UDR.

A session-duration connection has the scope of the session to which it is
associated. Such a connection cannot be closed within an UDR. See the IBM
Informix DataBlade API Programmer's Guide and the IBM Informix DataBlade
API Function Reference for further details.


-7490	Cannot open trace output file file_name.

Check permissions on the file and its directory. For more help, call
your system administrator or database administrator.


-7491	Cannot read trace system table table_name.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7492	Write to trace output file failed.

Check permissions on the file and its directory. Check disk space on
your computer. For more help, call your system administrator or
database administrator. If this error recurs, note all
circumstances and contact IBM Technical Support.


-7493	Cannot create internal map to trace classes.

Check disk space on your computer. For more help call your system
administrator or database administrator. If this error recurs,
note all circumstances and contact IBM Technical Support.


-7494	Cannot create internal trace message list.

Check disk space on your computer. For more help call your system
administrator or database administrator. If this error recurs,
note all circumstances and contact IBM Technical Support.


-7500	Invalid multibyte character in syserrors catalog table for sqlstate
SQLSTATE_value.

An invalid multibyte character has entered the syserrors catalog
table. Possibly, the syserrors.locale is not the actual locale used
for syserrors.message. This table is normally populated with DataBlade
messages or possibly messages from user-defined routines.


-7503	The BLOB or CLOB data size provided differs from the client file size.

The size of the BLOB or CLOB data that was provided in a load command is not 
the same as the actual size of the smart large object client file. 
Verify that the data size provided in the load command is correct or check if 
the smart large object client file is incomplete or corrupted.


-7510	API use not valid in callback (<routine>).

You cannot call this routine in the callback.

For information on the use of callbacks, see the "DataBlade
API Programmer's Manual."


-7514	MI_EVENT_END_XACT callback can only be registered inside a transaction.

Move the end-of-transaction callback inside your transaction.


-7520	Argument argument_name is NULL.

Verify arguments to DataBlade API calls. NULL was passed but not
expected.


-7521	GLS internal error encountered within API: error_code.

Verify your CLIENT_LOCALE. If this error recurs, note all
circumstances and contact IBM Technical Support.


-7522	Incomplete locale information for conversion between client and server
formats

Verify your CLIENT_LOCALE. If this error recurs, note all
circumstances and contact IBM Technical Support.


-7530	Missing parenthesis in the signature specified for user-defined routine
lookup.

Verify signature for routine specified for fastpath execution.


-7531	Invalid user defined routine type: must be function or procedure.

Specified user-defined routine must be a function or a procedure.
Verify name and definition of routine to be called.


-7532	Error converting type in string format to id format

Verify spelling and definition of types used in the routine signature.


-7533	Error in user-defined-routine lookup: Specified user-defined routine
not found.

Verify spelling and definition of user-defined routine.


-7534	Error initializing user-defined-routine sequence for execution.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7535	Invalid MI_FPARAM pointer returned.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7536	Error unlinking function descriptor from connection, not previously
linked.

Verify arguments to Blade API calls. The connection handle used was
NULL, not opened, invalid or improperly modified.


-7537	Error setting default arguments for execution of user-defined routine.

Review arguments to user-defined routine.


-7538	Error converting default arguments to C style values.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7539	Error performing fastpath execution of UDR from API.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7540	Routine's return value ID is out of range.

If this error recurs, note all circumstances and contact
IBM Technical Support.


-7542	Cast user-defined-routine lookup failed.

Verify spelling and definition of types used in the routine signature.
If this error recurs, note all circumstances and contact
IBM Technical Support.

-7546	Unknown routine type <text>, routine type must be one of 'f'
or 'p'.

You used an invalid routine type when using mi_create_signature() to 
create a function or procedure.

Specify either 'f' or 'p' as the routine type.


-7547	Routine name is missing in call to mi_create_signature.

Verify that you included all required parameters in your call to the
mi_create_signature() function. For the complete syntax of
mi_create_signature(), refer to the DataBlade API Function Reference.


-7549	Cannot use mi_funcmap_get on remote routines.

This routine must be used with functions that are in the local database.

Remove references to routines on remote databases from mi_funcmap_get().


-7580	Invalid attempt to call routine: this routine may only be called
from an am_check routine.
 
You tried to call the specified routine from a UDR other than 
a VTI/VII am_check routine. Outside of am_check routines, use 
mi_db_error_raise to report messages and errors. 


-7590	Cannot read past the end of stream marker.

After a call to mi_stream_eof() would have returned MI_TRUE, indicating
the end of the file or stream, another read operation was attempted. You
cannot read past the end-of-stream marker.

Once the mi_stream_eof() function returns MI_TRUE, terminate read
operations to avoid this error.


-7591	This is a generic mi_stream failure.

An unspecified mi_stream error occurred. The cause is not clearly
known.

Check the stream-type documentation for any details.


-7592	The mi_stream function being called is not implemented.

An attempt was made to execute an unimplemented mi_stream
operation, such as mi_stream_read(), mi_stream_write(), or
mi_stream_seek(). Not all mi_stream types support all mi_stream
functions.

Check the functional definition for the stream being used to ensure
that the function that returns this status has been implemented.


-7593	During an mi_stream operation a Send side failure has occurred.

During an mi_stream operation, the send side of a data transfer
encountered problems, and the data transfer failed. This status is
usually associated with Enterprise Replication (ER) operations.

Check the log files for any additional information.


-7594	During an mi_stream operation a Receive side failure has occurred.

During an mi_stream operation, the receive side of a data transfer
encountered problems, and the data transfer failed. This status is
usually associated with Enterprise Replication (ER) operations.


-7595	An error has occurred during the conversion or manipulation of
the ifx_int8 involved with an mi_stream operation.

A conversion operation for ifx_int8 values failed.

Check the values being used to verify that they match the types required
and are set with valid data.


-7596	An mi_stream seek has occurred using a bad whence value.

A call to mi_stream_seek() received a seek parameter that is in
error.

Use one of the following values:

   MI_LO_SEEK_SET or SEEK_SET
   MI_LO_SEEK_CUR or SEEK_CUR
   MI_LO_SEEK_END or SEEK_END


-7597	An attempt to determine the shared library module ID for an
mi_stream operation has failed.

An mi_stream function address lookup failed. The shared-library
module handle is set to NULL to indicate that no shared library is
currently loaded.

Check the log files for any errors that might have occurred when
an attempt was made to load the library. Common load problems
include an incorrect library path and a library that does not
exist at the designated location.


-7598	The mi_stream function symbol lookup in a shared library failed.

An mi_stream function symbol name was not found in the given
shared-library module.

Check that the spelling of the function symbol name is correct.


-7599	The mi_stream function address lookup in a shared library failed.

An mi_stream function address could not be resolved using the function
name provided. The function handle could not be mapped to a real
executable address.

Check the log files for any errors that might have occurred when
an attempt was made to load the library. Check the spelling of
the function name.


-7601	Bad cursor action: Subquery collections only support cursor
action MI_CURSOR_NEXT.

A cursor action other than MI_CURSOR_NEXT was used on a subquery collection.

Remove any invalid cursor actions. For subquery collections, use only the
MI_CURSOR_NEXT cursor action or open the subquery collection without the
flags MI_COLL_NOSCROLL and MI_COLL_READONLY.


-7602	Internal error: Invalid field count for a row.

This is an internal error.

If it recurs, note all circumstances and contact
IBM Technical Support.


-7607	Invalid row literal value.

A row literal should be well-formed with respect to its syntax and the type
of objects contained in the literal. For a description of the syntax and
semantics of Literal Row, refer to the IBM Informix Guide to SQL: Syntax.


-7610	Invalid collection literal value.

Your collection value is not well-formed.

See the documentation for a description of the construction of collection
literal values.


-8001	The number of newlines specified for TOP MARGIN, FIRST PAGE HEADER
(PAGE HEADER), PAGE TRAILER, and BOTTOM MARGIN must leave enough room on the
page for the printing of the ON EVERY RECORD clause.

The total number of lines that are defined for all the above statements
exceeds the page length. Check that you entered the desired number of
lines in each statement in the OUTPUT section and in the header and
trailer specifications of the FORMAT section.


-8002	The ACE report specification is too complex or large to be properly
compiled. The number of instructions needed to implement this specification is
greater than the space that is allocated in the instruction tables for the
compiler.

Reduce the size of the report. Because you cannot divide a report into
parts to compile separately, you must find a way to simplify the
report.


-8003	A SMALLINTEGER constant may not be larger than 32767.

The allowable range of values for a SMALLINT constant is -32,767
through 32,767. Only whole numbers are allowed, with only digit
characters.


-8004	Illegal FLOAT constant.

The FLOAT constant is not written correctly. The exponent might be too
small or too large (the allowable range of exponents depends on your
computer and operating system but is the same as your C compiler allows
for the DOUBLE data type), or incorrect punctuation or a nondigit
character other than e might be present.


-8005	Too many user variables, parameters, or functions have been defined.
You cannot define any more than number in an ACE specification.

The total number of identifiers that are defined for ASCII fields,
parameters, and variables cannot exceed the number that is shown. You
must simplify the report.


-8006	A quoted string may not exceed 80 characters in length.

You must reduce the quoted string to a maximum of 80 characters. In a
PRINT statement, simply divide the string into shorter parts, and
separate the parts with commas.


-8007	There is an unmatched quote in a quoted string.

This line of the report specification contains an odd number of quote
(") symbols. A quoted string cannot include a new-line character; all
quoted strings must be complete in one line. In order to print a longer
string, store its parts in variables and list them all in a PRINT
statement.


-8008	The file filename could not be opened. The operating system was asked
to open it for reading.

Check the spelling of the filename. Make sure that the file exists and
that your account name has read access to it. If the file is in a
directory other than the current directory, you might have to enter a
complete pathname.


-8009	A memory allocation error has occurred. The ACE report specification
is probably too large.

The ACE compiler could not allocate memory that it needed. Try reducing
the size of the report specification.


-8010	The file filename could not be opened. The operating system was asked
to open it for writing. It is possible that a file by the same name already
exists, but the user has no permission to write over it, or, if -o is used,
the  destination directory does not exist.

Ensure that filename is spelled correctly and that your account name
has write access to the directory where it will be stored. (That
directory might be the one that the environment variable DBTEMP names.)
If a file of that name already exists, either erase it or make sure
that your account has write access to it.


-8011	The user function called name has not yet been defined by the user.

A call was made to a function with the name shown. ACE assumes that it
is an external C function. However, external functions must be defined
in the DEFINE section of the report using FUNCTION funcname statements,
and this name is not defined. If name was intended as the name of an
external function, insert a FUNCTION statement for it.


-8013	An error occurred when an attempt was made to open the listing file
filename.  Be certain that the user has write permissions in the current
directory.

Ensure that your account has write access to the current directory. If
a file filename already exists, check that your account has write
access to it.


-8014	Usage: SACEPREP [-q][-o output_directory] input_filename (etc.)

Something in the command line that you entered was not acceptable to
saceprep. Read the message to remind yourself of the syntax of the
various options and then retype the command line.


-8015	An open comment symbol, {, was found inside an already open comment
on line line-number, character char-number. This could be due to a failure
to closethe previously opened comment, which was begun on line lnum,
character cnum.

You cannot nest comments. Insert a close-comment symbol where
appropriate in the report specification.


-8016	A comment has been opened but not closed. The last comment begun was
opened on line line-number, character char-number.

Insert a close-comment symbol where appropriate in the report
specification.


-8017	An illegal (invisible, control) character has been found on line
line-number, character char-number. It has been replaced by a blank in the
listing, but it is still in the source (input) file, and should be removed
before attempting to compile again.

Using a word-processing editor in document mode instead of text mode,
striking nonprinting keys while you are editing the file, or data
corruption can introduce illegal characters into files.


-8018	A grammatical error has been found on line line-number, character
char-number. The construct is not understandable in its context.

A syntax error exists in the source file. A keyword might be misspelled
or misplaced in the file. Check the spelling of the keyword or the
sequence of control blocks within the report-specification file.


-8019	Cannot open temporary file filename for reading of a TEXT column.

For each TEXT column that is selected for the report, ACEGO prepares a
temporary file in the directory that the DBTEMP environment variable
names. This message indicates that the file was created and loaded
with a copy of a TEXT value, but now it cannot be read. Look for
operating-system error messages that might give more details. If the
error recurs, note all circumstances and contact
IBM Technical Support.


-8021	The source file filename cannot be opened. This is probably because
the file does not exist.

Check the spelling of filename. Check that the report-specification
file exists in your current directory, or if it is in another
directory, check that you provided the correct pathname. If this 
information is correct, verify that your account has read permission on the
file.


-8022	This identifier exceeds the maximum length for identifiers, which is 50.

You must devise a shorter identifier.


-8025	The comment close symbol, }, has been found on line line-number,
character char-number, even though no comment has been opened.

Unless comment symbols are enclosed in quotes, they must be balanced.
Probably the open-comment symbol was accidentally deleted during
editing. Change the file so that comments are properly delimited.


-8030	A typographical error has been found on line line-number, character
char-number.

The single character at the location that is shown is not syntactically
correct; it cannot be interpreted as part of a report specification.


-8033	The source file name filename exceeds the maximum length of 10.

The form compiler imposes a limit on the length of source-file
identifiers. You must rename the file before you use it. In DOS
systems, filenames can be a maximum of 8 characters plus a 3-character
extension.


-8034	An unknown option option was found on the command line.

ACEPREP supports the following command-line options:

    *   -s to suppress messages

    *   -o to name an output destination

    *   -ansi to test for ANSI compliance

ACEGO supports the following command-line options:

    *   -s to suppress messages

    *   -d to name a database


-8051	The LEFT MARGIN must be no less than zero and no greater than the RIGHT
MARGIN.

Revise the left and right MARGIN statements in the OUTPUT section to
reasonable margin values.


-8052	There is insufficient space in the compiler string table for the
storage of CHAR variables.

Reduce the length or number of character variables in the report
specification.


-8053	Neither the PAGE LENGTH, TOP MARGIN, nor BOTTOM MARGIN is allowed
to be less than zero.

Revise the statements in the OUTPUT section to have reasonable values.


-8054	The string string does not fit into remaining space in the compiler's
string table.

Reduce the length or number of strings in the report specification.
Identical strings are stored only once.


-8055	This constant causes the constant table in ACEPREP to overflow.

Reduce the number of numeric constants that the report-specification
file uses.


-8056	Skipping lines inside of WHILE or FOR loops is not allowed within PAGE
HEADER or TRAILER.

ACEPREP needs to determine how many lines of space to devote to the
page header and trailer (otherwise, it does not know how many detail
rows to allow on the page). It cannot predict how many times a loop
will be executed, so it has to forbid the use of SKIP statements in
loops in these sections.


-8057	Only user variables of type CHARACTER may be subscripted or have lists
in the LET statement.

You can use a subscript (two numbers in square brackets, used to
extract a substring of characters) with names of character variables
only. In a LET statement, you can assign multiple strings, separated by
commas, to a character variable only. Variables of other types can
receive only single values.


-8058	The ASCII field field-name has already been defined.

A field name can be defined only once. Field names must be unique in
the DEFINE section, that is, a name cannot be used for both a PARAM and
a field.


-8059	The limit for IF statement nesting has been exceeded. There are too
many IF statements within IF statements for ACE to properly compile this
specification.

You have exceeded the maximum levels of nested IF statements. You must
simplify the logic of the report.


-8060	An end-of-file has been prematurely found in the report specification.

ACEPREP encountered the end of the report-specification file while it
still expected input. Possibly you omitted an END statement. A minimal
FORMAT section that contains at least an EVERY ROW statement is
required, and any control block must contain at least one statement.


-8061	This report contains a READ statement but no ASCII record definition
has been specified.

In order to use the READ statement, you must use the ASCII statement in
the DEFINE section to define the expected fields of the ASCII file.


-8062	This report contains a SELECT statement, but a READ statement should
be used instead because an ASCII record definition has be specified.

You can base a report on an ASCII file or on database rows, but not on
both. The ASCII statement in the DEFINE section means that file input
will be used, and a READ statement is used to read the file. If you
want to base the report on database rows, retain the SELECT statement
and delete the ASCII statement.


-8102	There may be only one AFTER or BEFORE GROUP OF clause for any single
column specified in the ORDER BY command.

The report contains more than one AFTER GROUP OF clause for a certain
column or more than one BEFORE GROUP OF clause. Only one of each can
name a given column. However, you can combine the statements from the
multiple clauses into a single clause.


-8103	In order for the BEFORE or AFTER GROUP OF clause to function properly,
the column specified in the clause must also have been specified as a sort
column in the ORDER BY command. If the sort column is subscripted, the column
in the BEFORE or AFTER GROUP OF clause must be also.

Make sure that the control columns are specified identically in both
the ORDER BY statement and the GROUP OF clauses.


-8104	Group aggregates can only be used in an AFTER GROUP OF clause.

Aggregate values over a group are accumulated while the rows of the
group are being processed, so they are not available until the end of
the group is seen. Therefore, the report cannot refer to them except in
an AFTER GROUP OF clause.


-8105	Aggregates may not be used within another aggregate.  Nor may
aggregates be used within the WHERE clause of another aggregate.

Aggregate functions cannot be nested, primarily because the value of
the inner aggregate is not known while the outer aggregate is being
accumulated. Rewrite aggregate expressions to refer only to columns and
simple expressions on columns. In an AFTER GROUP OF clause, you can
save the aggregate value from one group of rows in a variable in order
to use it to compute an aggregate over a subsequent group.


-8107	A user variable or parameter has been defined by the user more than
once.

You can define a name only once in a DEFINE section. You used a name
more than once in the ASCII, PARAM, or VARIABLE statements.


-8108	A user variable or parameter must have a length which is greater than
zero.

Make sure that every CHAR and VARCHAR field in the DEFINE section has a
nonzero length specification.


-8109	Wordwrap may not be used within PAGE HEADERS or TRAILERS.

ACEPREP needs to know how many lines will be filled in header and
trailer sections (otherwise, it does not know how many detail rows to
put on the page). However, printing with the WORDWRAP function can fill
a variable number of lines, depending on the words. Therefore, it is
not allowed in page header or trailer sections.


-8110	The user variable called name has not yet been defined.

The variable, parameter, or field name was not defined in the DEFINE
section. If name is spelled correctly, it must be defined.


-8111	User variables and run-time parameters may not be used in an ORDER BY
statement.

Only names of columns can be used in an ORDER BY clause. Check the
spelling of the column names or display labels in the clause. You
cannot request ordering by the contents of defined variables,
parameters, or ASCII fields.


-8112	Within an IF-THEN-ELSE statement of a header or trailer clause, the
number of lines printed in the IF part must equal the number of lines printed
in the ELSE part.

ACEPREP needs to know how many lines will be filled in header and
trailer sections (otherwise, it does not know how many detail rows to
put on the page). Because it cannot tell which part of an IF statement
will be executed, it requires that both produce the same number of
lines of output.


-8113	SKIP TO TOP OF PAGE is not allowed in any header or trailer clause.

When SKIP TO TOP OF PAGE is executed, the page-trailer clause must be
executed (to display fixed page-end material), followed by the
page-header clause. If the statement was allowed in a header or trailer
clause, an infinite loop could ensue.


-8114	The number of lines to be printed in the top and bottom margins plus
the lines to be printed in the page header and trailer clauses exceeds or
equals the page length.

Examine the statements in the OUTPUT section and in any HEADER and
TRAILER clauses. The total of lines that these statements use must be
sufficiently less than the specified page length that some detail rows
can be printed.


-8115	There may be no more than 8 sort columns specified in the ORDER BY
command.

ACEGO limits the number of columns that can be ordered. You must reduce
the number of columns that are listed following ORDER BY.


-8116	Illegal subscripting in ORDER BY command.

You can only subscript a character field. Check the subscripts. No
negative numbers are allowed; the numbers must fall within the length
of the character column; and the first number must be less than or
equal to the second number.


-8121	The specified WORDWRAP RIGHT MARGIN value is out of range. It must be
greater than or equal to the current column and less than or equal to the
report's right.

The right margin of a WORDWRAP clause is used to set a narrower right
margin than the one that applies to the report as a whole. The
effective left margin of a WORDWRAP display is the current column when
WORDWRAP is processed. The right margin must fall between the current
column and the report margin.


-8122	NEED n LINES may not be used in PAGE HEADER or PAGE TRAILER clauses.

The PRINT statements in a page header or trailer establishes its size.
To set a larger size, use PRINT statements with no parameters.


-8123	The PRINT FILE command is not allowed within the FIRST PAGE HEADER,
PAGE HEADER, or PAGE TRAILER clauses.

ACEPREP needs to know how many lines will be filled in header and
trailer sections (otherwise, it does not know how many detail rows to
put on the page). Because the size of a file cannot be predicted when
the report is compiled, the PRINT FILE command is not allowed. You must
use PRINT statements to produce the data.


-8124	A user variable used in the above query has not been defined in the
DEFINE section.

A variable that is named in the SELECT statement is not defined in the
DEFINE section of the report. Check that all names in the SELECT
statement are the ones that you intended and that you have not
misspelled any column or variable names.


-8125	The keyword END was found more than once inside the SELECT section.
Within the SELECT section, use semicolons to separate SQL statements. Use the
keyword END only after the final SELECT.

Review the contents of the SELECT section to make sure that each SELECT
statement except the last one ends in a semicolon and that the last one
is followed by an END statement. Perhaps you omitted the FORMAT
statement at the beginning of that section.


-8126	PARAM[0] may not be defined.

The first parameter that you can define in the PARAMETER statement is
number 1. In some host-operating systems, the zeroth parameter is
preset to the program name, but this value is not available within a
report.


-8127	You cannot use more than one REPORT TO statement in a report
specification.

The entire report is directed to one destination, which is chosen with
the REPORT TO statement in the OUTPUT section. The report cannot be
divided between multiple destinations, so remove all REPORT TO
statements after the first. If you want to produce separate report
files for different sets of data, perform one of the following steps:

    *   Write a separate report for each set of data (the
	specifications should differ only in their SELECT statements).

    *   Produce a full report, but with sets of data on separate pages,
	and use operating-system utilities and tools to separate the
	files afterward.

    *   Use parameter variables in the SELECT statements so that you
	can choose a subset of data dynamically, when you run the
	report, and use REPORT TO PRINT so that you can set the DBPRINT
	variable to control the output destination before you start the
	report.


-8128	Minimum length of a VARCHAR variable must be smaller than the maximum
size.

A VARCHAR variable is defined with the two numbers name(n,r), where n
is the maximum length of the variable and r is the reserved length. The
reserved length is meaningful only in the context of a database table
definition, although it is allowed when you define a report variable.
If you specify it, you must write a number for r that is less than or
equal to the size, n.


-8129	Specified page length length is too short for default report.

A report page cannot fit in the number of lines that are specified.
Allow more lines per page or revise the report specification to use
fewer lines (for instance, by changing the top or bottom margins).


-8130	An INTEGER constant may not be larger than 2147483647.

This statement specifies a value that cannot be contained in an
integer. Either use a smaller value or a different data type (for
example, DECIMAL).


-8200	User <user-name> does not have DBSECADM authority.

User does not have the necessary permission to perform the operation;
only DBSECADM has the authority to perform this operation. Contact the
DBSECADM to perform this operation.


-8201	The security label component <component-name> already exists.

The security label component to be created is already defined in the
database. For RENAME SECURITY LABEL COMPONENT, a security label
component with the specified new name already exists. Verify that you
have specified the correct component name and that you are in the
correct database.


-8202	The security label component element <element-name> is
already defined.

The security label component element was specified more than once
in the list of security label component elements. For TREE security
label component, the security label component element is already
defined as ROOT or UNDER some other element. Specifying the
element more than once on the left side of UNDER clause is not
allowed. Verify that you have specified the correct component
element name.


-8203	The security label component element <element-name> exceeds 32 bytes.

The security label component element specified exceeds its limit
length of 32 bytes. Specify a shorter name.


-8204	The security label component <component-name> has too many elements.

A security label component can have no more than 64 elements.
Your statement exceeded this limit. Specify a smaller number of
elements within the limit.


-8205	The security label component element <element-name> is not
yet defined.

This error can have any of the following causes:

    *  The element <element-name> is used on the right side of the
       UNDER clause in CREATE or ALTER SECURITY LABEL COMPONENT
       statement but has not yet been defined as being ROOT or
       being UNDER some other element. Define the object as ROOT
       or as being UNDER some defined element.

    *  The element <element-name> is used on the right side of
       BEFORE or AFTER clause of ALTER SECURITY LABEL COMPONENT
       has not yet been defined. Specify a defined or existing
       element name.


-8206	The security policy <policy-name> already exists.

The security policy to be created is already defined in the database.
For RENAME SECURITY POLICY, a security policy with the specified new
name already exists. Verify that you have specified the correct policy
name and that you are in the correct database.


-8207	The security label component <component-name> was specified
more than once.

The security label component was duplicated in the list of components
of a security policy or a security label. Verify that you have specified
the security label component name correctly. Remove any duplicates
from the list of security label components.


-8208	The security label component <component-name> does not exist.

The specified security label component does not exist in the database.
Verify that you have specified the correct security label component
name, and that you are in the correct database.


-8209	The maximum number of components in security policy <policy-name>
has been exceeded.

A security policy can have a maximum of 16 components. You have exceeded
the number of component allowed to make up a security policy.


-8210	The security policy <policy-name> does not exist.

The specified security policy does not exist in the database. Verify
that you have specified the correct security policy name, and that
you are in the correct database.


-8211	The security label <label-name> already exists.

The security label to be created is already defined in the database.
For RENAME SECURITY LABEL, a security label with the specified new
name already exists. Verify that you have specified the correct
label name and that you are in the correct database.


-8212	The security label component <component-name> is not defined
in the security policy.

Security labels can only contain values for those components that are
defined in the security policy of which the label is a part. The specified
security label component is not part of the security policy, so the
component cannot be used in that security label. Verify that you have
specified the correct component name and that you are in the correct
database.


-8213	The element <element-name> is not defined in the security label
component.

The component element does not exist in the definition of the security
label component. If you get this error when executing the scalar
function SECLABEL_BY_COMP(), then check the security label string
to make sure that the values are listed in the same order that the
components are listed in the security policy.


-8214	Two or more elements are specified for the security label
component <component-name>.

A security label cannot have multiple elements for a component of
type ARRAY. Specify only one element for the security label component.


-8215	The security label component element <element-name> was
specified more than once.

The security label component element was duplicated in the list of
elements of a security label component. Verify that you have specified
the security label component element name correctly.  Remove any
duplicates from the list of security label component elements.


-8216	The access rule <rule-name> does not exist in the rule set
used by the security policy.

The access rule specified in the GRANT EXEMPTION or REVOKE EXEMPTION
statement is not part of the LBAC rule set that is used by the
security policy. Specify an access rule that is part of the rule set
used by the specified security policy.


-8217	Cannot specify PUBLIC or a role name.

GRANT or REVOKE SECURITY LABEL or EXEMPTIONS to or from PUBLIC or a
role is not allowed. Specify an individual user name.


-8218	A DBSECADM cannot grant a privilege, security label or
exemption to self.

DBSECADM is not allowed to grant a privilege, security label, or
exemption to self. Ask another DBSECADM to perform this operation.


-8219	A DBSECADM cannot revoke a privilege, security label or
exemptions from self.

DBSECADM is not allowed to revoke a privilege, security label, or
exemption from self. Ask another DBSECADM to perform this operation.


-8220	User <user-name> does not hold this privilege, security label, 
or exemption.

The specified user does not hold this privilege, security label, or
exemption, so the revoke operation failed.


-8221	The security label <label-name> does not exist for the
security policy.

The specified security label does not exist for the security policy.
Verify that you have specified the correct security label name and
security policy name and that you are in the correct database.


-8222	User already has a security label <label-name> for READ access.

Each user can have at most one security label for READ access and at
most one for WRITE access. A security label has already been granted
to the user for READ access. If you want to change the user's security
label for READ access, you must first use the REVOKE SECURITY LABEL
statement to revoke the security label from the user.


-8223	User already has a security label <label-name> for WRITE access.

Each user can have at most one security label for READ access and at
most one for WRITE access. A security label has already been granted
to the user for WRITE access. If you want to change the user's security
label for WRITE access, you must first use the REVOKE SECURITY LABEL
statement to revoke the security label from the user.


-8224	The security label <label-name> conflicts with the existing
granted security label.

If the user is granted two distinct labels, one for READ access and
another for WRITE access, they must satisfy the following rules:

    *  For security label components of type ARRAY, the value must be
       the same in both security labels.

    *  For security label components of type SET, the values given in
       the security label used for WRITE access must be a subset of
       the values given in the security label used for READ access.

    *  For security label components of type TREE, either the values
       must be the same, or the values given in the security label
       used for WRITE access must be one of the sub tree values of
       the security label used for READ access.


-8225	The security label component <component-name> is currently in use.

The security label component cannot be dropped because one or
more security policies refer to it. The following query can be used
find all the security policies that refer to this security label
component:

         SELECT SECPOLICYNAME  FROM SYSSECPOLICIES
             WHERE SECPOLICYID = (SELECT  SECPOLICYID FROM
                                  SYSSECPOLICYCOMPONENTS
             WHERE COMPID = (SELECT COMPID FROM SYSSECLABELCOMPONENTS
             WHERE COMPNAME = "<component-name>"))


-8226	The security label <policy-name.label-name> is currently in use.

The security label could not be dropped because:

    *  It is granted to one or more users. Revoke this security label from
       all users who have been granted this security label for this
       security policy. The following query can be used to find all
       the users who have been granted with this security label.

         SELECT GRANTEE FROM SYSSECLABELAUTH
             WHERE READSECLABELID = (SELECT SECLABELID FROM SYSSECLABELNAMES
             WHERE SECLABELNAME = "<label-name>"    AND
                   SECPOLICYID = (SELECT SECPOLICYID FROM SYSSECPOLICIES
             WHERE SECPOLICYNAME = "<policy-name>")) OR
                   WRITESECLABELID = (SELECT SECLABELID FROM SYSSECLABELNAMES
             WHERE SECLABELNAME = "<label-name>"    AND
                   SECPOLICYID = (SELECT SECPOLICYID FROM SYSSECPOLICIES
             WHERE SECPOLICYNAME = "<policy-name>"))

    *  It is being used to protect one or more columns. For all the
       tables that use this security label to protect a column, either
       alter the table to drop this column protection or drop the table.
       The following query can be used to find all protected tables and
       all the columns that are protected with this security label.

         SELECT TABNAME, COLNAME FROM SYSCOLUMNS, SYSTABLES
             WHERE SYSCOLUMNS.TABID = SYSTABLES.TABID   AND
                   SECLABELID = (SELECT SECLABELID FROM SYSSECLABELNAMES
             WHERE SECLABELNAME = "<label-name>"        AND
                   SECPOLICYID = (SELECT SECPOLICYID FROM SYSSECPOLICIES
             WHERE SECPOLICYNAME = "<policy-name>"))


-8227	The security policy <policy-name> is currently in use.

The security policy could not be dropped because:

    *  It is being used to protect one or more tables. For all the
       tables that use this security policy, either alter the table to
       drop this table protection or drop the table. The following
       query can be used to find all the tables protected by this policy:

         SELECT TABNAME FROM SYSTABLES
             WHERE SECPOLICYID= (SELECT SECPOLICYID FROM SYSSECPOLICIES
             WHERE SECPOLICYNAME = "<policy-name>" )

    *  There are one or more security labels that use it. Drop all the
       security labels that are part of this security policy. The
       following query can be used find all security labels that belong
       to this security policy:

         SELECT SECLABELNAME FROM SYSSECLABELS
             WHERE SECPOLICYID=(SELECT  SECPOLICYID FROM SYSSECPOLICIES
             WHERE SECPOLICYNAME = "<policy-name>" )

    *  There are one or more exemptions granted on one or more of its
       rules. Revoke all exemptions granted for this security policy from
       all users. The following query can be used to find all users that
       have been granted exemptions for this policy:

        SELECT GRANTEE, EXEMPTION FROM SYSSECPOLICYEXEMPTIONS
            WHERE SECPOLICYID=(SELECT  SECPOLICYID FROM SYSSECPOLICIES
            WHERE SECPOLICYNAME = "<policy-name>")


-8228	Cannot GRANT or REVOKE SETSESSIONAUTH privilege to or from PUBLIC.

To grant or revoke SETSESSIONAUTH privilege to or from PUBLIC is not
allowed. Specify an individual user or role name.


-8229	User <user-name> does not have SETSESSIONAUTH privilege.

Only users holding SETSESSIONAUTH privilege can perform SET SESSION
AUTHORIZATION operation. Ask the DBSECADM to grant the privilege.


-8230	User <user-name> does not have the authority to grant or
revoke DBSECADM.

Only the DBSA has the authority to grant or revoke DBSECADM privilege.
Contact the DBSA to perform this operation.


-8231	DBSECADM cannot be granted to user <user-name>.

The GRANT statement attempted to grant DBSECADM to an authorization name that
is not allowed to receive that authority. The DBSECADM authority can only be
granted to an individual user.


-8232	The element <element-name> already exists in the security
label component.

During ALTER SECURITY LABEL COMPONENT, the security label component
element to be added to an existing component is already defined in that
security label component.


-8233	Cannot secure columns or rows in a table without a security policy.

A table cannot be protected with row or column level granularity
without associating a security policy with the table. The user should
add a security policy to the table using the SECURITY POLICY clause
of the CREATE TABLE statement or the ADD SECURITY POLICY clause of the
ALTER TABLE statement.


-8234	Invalid specification of a column <column-name> of type
IDSSECURITYLABEL.

For a column of type IDSSECURITYLABEL, the specification of an attribute
for the column is invalid because a column of type IDSSECURITYLABEL
cannot be encrypted or altered to a different data type. The column of
type IDSSECURITYLABEL also cannot have attributes like column protection,
single column contraints or be part of multiple column referential or
check contraints. The DEFAULT clause cannot be specified for the 
IDSSECURITYLABEL column in a CREATE TABLE statement. The DEFAULT clause
can be specified for the IDSSECURITYLABEL column only in an ALTER TABLE 
statement. The default value provided will only be applied to existing rows 
in the table.


-8235	A security policy cannot be added to a temporary, typed or 
external table.

Adding a security policy to a temporary, typed or external table is not
supported. Do not associate a security policy with a temporary or
external table.


-8236	Only one security label column is allowed in a table.

An attempt was made to create or alter a table with more than one
security label column. For a CREATE TABLE statement, declare only
one column to have the IDSSECURITYLABEL type. For an ALTER
TABLE statement, a column of type IDSSECURITYLABEL already exists.


-8237	Cannot modify column <column-name> to type IDSSECURITYLABEL.

An existing column cannot be modified to IDSSECURITYLABEL data type;
this data type is used only for the security label column to protect
data rows. To protect table with row-level granularity, add a new column
of type IDSSECURITYLABEL.


-8238	Source table must have the same security protection as target table.

The security protection on the tables is not identical. The tables are
protected by different security policies or the set of security labels
protecting columns in the source table is not identical to that of target
table. The two tables must have the same secuirty policy, same protection
granularity, have the same set of protected columns, and each
pair of corresponding columns must be protected with same security label.


-8239	The table <table-name> already has a security policy.

A table can have at most one security policy attached to it. Do not try
to associate another security policy with the table before you have
dropped the association of the table with its current security policy.


-8240	The table <table-name> is not protected with a security policy.

A security policy cannot be dropped from a table that is not protected
with a security policy.


-8241	The column <column-name> has already been protected by a
security label.

The specified column is already protected by a security label. Do not
add another security label for protecting the column.


-8242	The column <column-name> is not protected by a security label.

Column security cannot be dropped from a column that is not protected by
a secuirty label.


-8243	User <user-name> does not hold a security label for READ access.

To execute the built-in function SECLABEL_TO_CHAR, the user must have a
security label for READ access of the security policy. Ask the DBSECADM
to grant a security label for READ access.


-8244	The value <column-value> provided for row security label column
is invalid.

An INSERT or UPDATE statement specified a value for a column of type
IDSSECURITYLABEL. The value corresponds to a null label or cannot be
converted to a valid security label for the security policy that is
protecting the table. Check the INSERT or UPDATE statement and make
sure that the value being set in the security label column is valid
for the security policy protecting the table.  Sometimes an invalid
value can be generated as a result of a SELECT statement done from a
table that is not protected with the same security policy as the target
table. You should only copy security labels between tables protected by
the same security policy.


-8245	User cannot perform READ access to the protected column
<column-name>.

While accessing the table protected by a security policy, the user
is attempting SELECT, DELETE, or UPDATE access on the column. The user
does not have the LBAC credentials necessary to read the column.
Ask the DBSECADM to grant the user the LBAC credentials that allow
READ access to the column.


-8246	User cannot perform WRITE access to the protected column
<column-name>.

While accessing the table protected by a security policy, the user
is attempting INSERT, DELETE, or UPDATE access on column. The user
does not have the LBAC credentials necessary to update the column.
Ask the DBSECADM to grant the user the LBAC credentials that allow
WRITE access to the column.


-8247	User does not have the LBAC credentials to perform INSERT
on table <table-name>.

The user is not allowed to perform INSERT on the table. A user is
not allowed to insert a row into a protected table if the user does
not have appropriate security label or exemption credentials. Ask the
DBSECADM to grant the user the proper security label or exemptions
required to perform insert operation.


-8248	User does not have the LBAC credentials to perform SELECT
on table <table-name>.

The user is not allowed to perform SELECT on the table. A user is
not allowed to select rows in a protected table if the user does
not have appropriate security label or exemption credentials. Ask the
DBSECADM to grant the user the proper security label or exemptions
required to perform select operation.


-8249	User does not have the LBAC credentials to perform UPDATE
on table <table-name>.

The user is not allowed to perform UPDATE on the table. A user is
not allowed to update a row in a protected table if the user does
not have appropriate security label or exemption credentials. Ask the
DBSECADM to grant the user the proper security label or exemptions
required to perform update operation.


-8250	User does not have the LBAC credentials to perform DELETE
on table <table-name>.

The user is not allowed to perform DELETE on the table. A user is
not allowed to delete a row from a protected table if the user does
not have appropriate security label or exemption credentials. Ask the
DBSECADM to grant the user the proper security label or exemptions
required to perform delete operation.


-8251	Update, delete, or insert into a UNION ALL view is not allowed.

Updates, deletes, and inserts are not allowed into a UNION ALL view
if that view is created on one or more protected tables. If you have
sufficient credentials, perform the DML operation on the base table,
rather than on the UNION ALL view.


-8252	Cannot set role to DBSECADM.

DBSECADM is a system defined role. SET ROLE statement can only be
used with user created roles.


-8253	Cannot open database <database-name>.

The database server cannot find the specified database. To find the names of
all databases, query sysmaster:sysdatabases.


-8254	Database <database-name> is currently opened by another user.

Another user has opened the specified database in exclusive mode. Repeat
the statement after a short delay or when the database is known to be idle.


-8255	User <user-name> does not have DBSA authority.

User does not have the necessary permission to perform the operation;
only DBSA has the authority to perform this operation. Contact the
DBSA to perform this operation.


-8256	Invalid character in element <element-name>.

The security label component element has an invalid character. The element
name cannot include parentheses, comma, or colon characters: ( ), :


-8257	The security label component element <element-name> cannot be null.

The security label component element specified is null. The element name
should be a non-null quoted character string.


-8258	The rule specified is not consistent with the security policy
<policy-name>.

The rule specified is not consistent with the security policy.


-8259	Cannot GRANT or REVOKE SETSESSIONAUTH privilege for role.

To grant or revoke SETSESSIONAUTH privilege for role is not allowed.
Specify an individual user or PUBLIC.


-8260	Multiple security policy clauses.

The security policy clause has been specified more than once. Either
ADD or DROP SECURITY POLICY was specified more than once or a combination
of ADD and DROP SECUIRTY POLICY was specified. Change the statement to
so that it has only one ADD or DROP SECURITY POLICY clause.


-8261	Cannot secure rows in a table without a default value for the
IDSSECURITYLABEL column.

A non-empty table cannot be protected with row-level granularity
without specifying a default value for the IDSSECURITYLABEL column.
Change the ALTER TABLE statement to specify the DEFAULT clause for
the IDSSECUIRTYLABEL column.


-8262	Cannot update partition flags.

This internal error indicates the database server could not update
partition flags to set or unset table protection. Check the accompanying
ISAM error code for more information.


-8263	The component type specified <component-type> does not match the type 
in the system catalog.

The security label component type specified in ALTER SECURITY LABEL COMPONENT
statement does not match the type of this component in the system catalog.


-8264	Cannot alter ARRAY security label component to add elements before 
<element-name>.

You cannot add more elements before the specified element because too many
alters have been performed on the ARRAY security label component. You can add
elements before or after other elements in the security label component.


-8265	Cannot alter ARRAY security label component to add elements after 
<element-name>.

You cannot add more elements after the specified element because too many
alters have been performed on the ARRAY security label component. You can add
elements before or after other elements in the security label component.


-8266	Operation not permitted.

This operation is an internal command that you are not permitted to use.


-8267	Cannot add LBAC protection to a table defined for replication.

The specified operation cannot be performed on a table if replication
is defined on the table. LBAC is not supported with Enterprise Replication.


-8268	Cannot create a distinct type <type-name> of type IDSSECURITYLABEL.

The statement specified creation of a distinct data type as IDSSECURITYLABEL.
A IDSSECURITYLABEL data type cannot be a distinct type. Remove DISTINCT from 
the statement or specify a different data type.


-8269	LBAC internal error: <internal-error> 

If this internal error recurs, note all circumstances and
contact IBM Technical Support.


-8270	Row security label for a protected table cannot be null.

To insert data into a row protected table either user should have LBAC 
security label or the user has to explicitly specify a row security label. 


-8300	The specified sequence object <sequence-name> is not in the database.

The database server cannot find the sequence object specified in the
statement. The sequence object might have been renamed or dropped from
the database.

Check the names of sequence objects in the statement. If the names are
spelled as you intended, check that you are using the database you want.
To find the names of all sequence objects, query the syssequences table.


-8301	Sequence <sequence-name> already exists in the database.

This statement tries to create a table or sequence object with the name
that is shown, but a sequence object with that name already exists.
Only one table or sequence object with a given name can exist in a single
database. (In an ANSI-compliant database, the name of the user that created
a table or sequence object name qualifies it, so one table or sequence 
object of a given name per user can exist.)

Check the spelling of the name; if it is as you intended, and you are
sure it should not exist, check that you are using the right database.
You can review the names of all tables and sequence objects in this
database by querying systables as follows:

SELECT tabname FROM systables WHERE tabid > 99


-8302	A Sequence object definition value is invalid or out of range.

A non-integral or out-of-range value has been specified in the sequence
object's definition in the CREATE SEQUENCE or ALTER SEQUENCE statements.
The sequence object's definition parameters include its START/RESTART
value, INCREMENT value, MAXVALUE, and MINVALUE.

Check that the values specified for the sequence object's definition
parameter are integral and in the range (-2e63 + 1) or
-9,223,372,036,854,775,807 and (+2e63 -1) or 9,223,372,036,854,775,807.


-8303	Duplicate or conflicting (%s) specification in sequence definition.

A duplicate or conflicting specification for sequence object definition
parameters has been found in the CREATE SEQUENCE or ALTER SEQUENCE
statements.

Conflicting specifications include combination of MAXVALUE-NOMAXVALUE,
MINVALUE-NOMINVALUE, CACHE-NOCACHE, ORDER-NOORDER, and CYCLE-NOCYCLE.

Check whether any sequence definition parameters have been specified more than
once or if both the conflicting parameters have been specified.


-8304	MAXVALUE cannot be less than MINVALUE.

You cannot set the MAXVALUE of the sequence object to less than its
MINVALUE.


-8305	INCREMENT 0 is not allowed in sequences.

You cannot specify an INCREMENT value of 0 for sequence objects. The
INCREMENT value has to be a non-zero integral value.


-8306	CACHE size should be in the range of 1 to 2,147,483,647.

The number of cached values of a sequence object has to be in the range of 1
to 2,147,483,647.

Use NOCACHE parameter specification to specify a cache size of 0.


-8307	CACHE size should be less than one cycle. The default CACHE size is 20.

The number of cached values of a sequence object cannot be greater than
the number of values generated in single cyclic sequence. The
default number of cached values is 20.

Check whether the number of cached values is less than 20 and no cache parameter
has been specified in the sequence object definition. If so, specify an
appropriate value for CACHE parameter. Use NOCACHE parameter specification
to specify a cache size of 0.


-8308	Cannot set START value less than MINVALUE or greater than MAXVALUE.

You cannot set a sequence object to start at a value less than its MINVALUE
or greater than its MAXVALUE.

Check the statement and modify the range MINVALUE-MAXVALUE or set an
appropriate START value in this range.


-8309	Cannot RESTART the sequence at a value less than MINVALUE or greater
than MAXVALUE

You cannot set a sequence object to restart at a value less than its
MINVALUE or greater than its MAXVALUE.

If you are attempting to restart the sequence, check to see that the
RESTART value is in the range MINVALUE-MAXVALUE. If not, either alter the
MINVALUE-MAXVALUE parameters or set an appropriate value to restart from.
If you are attempting to alter either or both MINVALUE and MAXVALUE
parameters, check to see whether a restart value has already been set for the sequence
that does not lie in the altered MINVALUE-MAXVALUE range. To
find an existing set restart value, query the syssequences table.


-8310	MINVALUE cannot be set to exceed current value.

You cannot alter the sequence definition to set the MINVALUE greater than the
current value of the sequence object. The current value of the sequence
object is the value generated on last NEXTVAL reference.

If you have already initialized the sequence in your session, you may
compare the CURRVAL of your session with the MINVALUE in the statement.
However, the CURRVAL of your session may not be in sync with the current
value of the sequence object, as there may be other sessions generating
numbers from the sequence object. You can set and check the current value
of the sequence object by generating a number with a NEXTVAL reference.


-8311	MAXVALUE cannot be set to be lesser than the current value.

You cannot alter the sequence definition to set MAXVALUE less than the
current value of the sequence object. The current value of the sequence
object is the value generated on the last NEXTVAL reference.

If you have already initialized the sequence in your session, you may
compare the CURRVAL of your session with the MAXVALUE in the statement.
However, the CURRVAL of your session may not be in sync with the current
value of the sequence object, as there may be other sessions generating
numbers from the sequene object. You can set and check the current value
of the sequence object by generating a number with a NEXTVAL reference.


-8312	No options specified for ALTER SEQUENCE.

The ALTER SEQUENCE statement has no parameters specified to be altered.
Specify the definition parameters you intend to alter and then run the
statement.


-8313	Sequence (%s) exceeds its MAXVALUE.

The specified sequence object cannot generate numbers because it has exceeded
its MAXVALUE.

If you have set a MAXVALUE for the sequence, you can alter it to a higher
value, up to (+2e63 -1) or 9,223,372,036,854,775,807. If the MAXVALUE is 
already set to this highest value, consider altering your sequence to be
a cyclic sequence to restart from the MINVALUE.


-8314	Sequence (%s) goes below its MINVALUE.

The specified sequence object cannot generate numbers because it has gone
below its MINVALUE.

If you have set a MINVALUE for the sequence, you can alter it to a lower
value, up to (-2e63 +1) or -9,223,372,036,854,775,807. If the MINVALUE is
already set to this lowest value, consider altering your sequence to be
a cyclic sequence to restart from the MAXVALUE.


-8315	Sequence (%s) CURRVAL is not yet defined in this session.

You cannot get the session CURRVAL because the sequence object has not been
initialized in this session. The session CURRVAL is the value generated
on a previous call to the sequence object's NEXTVAL.

If the sequence object has been renamed using RENAME SEQUENCE, you will
need to reinitialize the sequence object in your session.

Run a NEXTVAL first to define a CURRVAL for the sequence object in your
session.


-8316	Cannot rename a sequence object using a synonym.

You cannot perform a rename operation on a sequence object using a synonym.
Specify the <sequence-name> instead.

If you intend to rename the synonym, then drop the existing synonym and
create a new one.


-8317	A sequence object cannot appear in the FROM clause.

A sequence object cannot appear in the FROM clause. To generate a number
from the sequence object use:

    SELECT <sequence-name>.[NEXTVAL|CURRVAL] from <table-name>;

A DELETE operation is not allowed on sequence objects.


-8318	This action is not allowed on sequence object.

Only the following operations are allowed on sequence objects:

    SELECT <sequence-name>.[NEXTVAL|CURRVAL] from <table-name>;
    ALTER SEQUENCE
    DROP SEQUENCE
    RENAME SEQUENCE
    GRANT/REVOKE
    CREATE SYNONYM
    DROP SYNONYM

Check to see whether you have specified any operation that does not belong to this set.


-8319	Sequence object cannot be used here.

Cannot refer to sequence object's CURRVAL or NEXTVAL in the following cases:

    WHERE clause of a SELECT/DELETE statement
    a condition of CHECK constraint
    SELECT statement with DISTINCT operator, aggregate function, GROUP BY
    clause, ORDER BY clause and UNION, INTERSECT, or MINUS set operator
    a fragment expression of CREATE TABLE or ALTER TABLE
    a VIEW definition
    DEFAULT clause of CREATE TABLE or ALTER TABLE

Check to see whether you attempted any operation in this set.


-8320	Only SELECT and ALTER are valid priveleges for sequence objects.

Only a subset of Table level privileges are valid for sequence objects.
You can GRANT or REVOKE only SELECT and ALTER privileges.

Both these privileges can be granted with the WITH GRANT option.


-8321	Not owner of sequence object.

Only the owner of the table or a user who has Database Administrator
privileges can execute this statement, for example, to drop a sequence object.
Check that the statement names the sequence object you
intended. If it does, you will have to get its owner or a DBA to
execute this statement. To find out whom to contact, you can query the
system catalog as follows:

SELECT tabname, owner FROM systables WHERE tabid > 99;
SELECT username FROM sysusers WHERE usertype = 'D'


-8322	Remote sequences are not supported currently.

You cannot reference a sequence object on a remote database.

Check to see whether you have a reference of type:

    <dbname>@<remote-server>:<sequence-name>.[NEXTVAL|CURRVAL]


-8324	Serial foreign keys should not refer to serial unique keys.

Both the referencing and referenced columns in a referential relationship
are SERIAL columns or SERIAL8 columns or BIGSERIAL columns, which the 
database server does not allow.

Change the referencing columns to be of a nonserial data type.

-8328	Write failed. count rows unloaded (check ulimit or disk space).

After writing count lines of output to the unload file, an error
occurred trying to write the next line. Look for operating-system
messages that might give more information. Possible causes include a
full disk or a disk quota limit.

-8331	Invalid table or view name (%s) in the REFERENCING clause of the
CREATE PROCEDURE or CREATE FUNCTION statement.

This error is generated from the CREATE TRIGGER statement when a routine
with the REFERENCING clause is called within the action statement with a 
mismatched table or view name.

The table or view name in the REFERENCING clause of the CREATE PROCEDURE or
CREATE FUNCTION statement should match the triggering table or view name.

-8332	Only NEW value of the column reference can be modified.

Neither the OLD correlation name nor the table or view name in the
REFERENCING clause can be specified in the left hand side of the LET
statement in the trigger routine body.

Example 1 of error:

        CREATE PROCEDURE testproc1()
        REFERENCING OLD as O NEW as N FOR T;
        ...
        LET O.column1 = <value>; --- error
        END PROCEDURE;

Example 2 of error:

	CREATE PROCEDURE testproc2()
	REFERENCING OLD as O NEW as N FOR T;
	...
	LET T.column1 = <value>; --- error
	END PROCEDURE;
	
-8333	Invalid invocation of the routine with referencing clause.

This error is returned in the following cases:

    * The routine was created with the REFERENCING clause but was not 
      executed from the trigger action statement.

    * The routine was created with the REFERENCING clause but was not 
      executed with the WITH TRIGGER REFERENCES clause.

    * The routine was NOT created with the REFERENCING clause and was 
      executed with the WITH TRIGGER REFERENCES clause.

    * The routine was created with the REFERENCING clause but was not 
      executed from the FOR EACH ROW trigger action statement.
      	
-8334	REFERENCING clause cannot be used in external routines.

For external routines, using the REFERENCING clause to access the OLD or 
the NEW values for the column(s) is not valid.

-8335	Usage of the Boolean function (%s) is not valid in this context.

The Boolean functions INSERTING, UPDATING, DELETING and SELECTING are valid
for procedures that are executed from trigger action statements.

These functions return 't' or 'f' depending on the trigger type.

For Example:

        Create trigger trig1 INSERT ON tab1
                for each row(execute procedure proc1());


        Create procedure proc1()

        define i integer;
        define u integer;
        if (INSERTING) then
                LET i = 1;
        end if
        if (UPDATING) then
                LET u = 1;
        end if

        end procedure;

Execution of the above example will set the variable i to 1 but will not set
u to 1 because the created trigger is an insert trigger.

-8336	Undefined symbol (%s).

The symbol is undefined in the current context. If the error is from CREATE
TRIGGER or CREATE PROCEDURE/FUNCTION with REFERENCING clause, check for the
misspelling of the OLD or NEW correlation variable names.

-8337	New value of column reference (%s) cannot be modified.

A trigger routine whose REFERENCING clause specifies a view cannot
modify the NEW value of any column in that view.

Example of error:

       CREATE VIEW View1 ...

       CREATE PROCEDURE testproc()
       REFERENCING OLD as O NEW as N FOR View1;
       ...
       LET N.column1 = <value>; --- error
       END PROCEDURE;

Here the REFERENCING clause of a trigger routine declares N as a correlation 
name for qualifying NEW values of columns in a view. The LET statement is not
valid, because a correlation name cannot qualify NEW column values on the left
side of LET expressions if the REFERENCING clause specified a view.

The syntax in this example is valid only for LET statements within trigger
routines that are invoked (in the FOREACH section of the action clause) by
an INSERT or UPDATE trigger on a table, but not for INSTEAD OF triggers on
views.

-8351	Function <funcname> Invalid input XML document or input XPATH string.

Explanation:The input XML document or XPATH string has illegal characters or
            the XML document is not well-formed or the XPATH string is not 
            correct.
Action:Supply valid input arguments to the function <funcname> which
       is a well-formed XML document or a valid XPATH string.
       For Example :
       select extractvalue(col2, '/customer/personnel/') from tab;
       The above example has an XPATH string with trailing '/' which is
       invalid XPATH string. The correct usage would be,
       select extractvalue(col2, '/customer/personnel') from tab;

-8352	Function <funcname> Empty input XML document.

Explanation:The input arguments, XML document, or XPATH string are passed
            as empty strings. For example:
            SELECT extract(col, '') FROM tab;
            SELECT extractvalue('', '') FROM tab;
Action:Supply valid input arguments to the function <funcname> which
       is a well-formed XML document or a valid XPATH string.

-8353	Function  <funcname>  NULL input XML document.

Explanation:The input XML document is passed as NULL.
Action:Supply a well-formed XML document as the input.

-8354	Function <funcname>  Exception received for ICU memory allocation.

Explanation:An exception was received while allocating memory for ICU data
            structures.
Action:Make sure that the system has enough memory to run the command.
       If the problem persists, contact Technical Support to resolve
       the problem.

-8355	Function <funcname>  Error parsing the input XML document.

Explanation:The input XML document for <funcname> is not a well-formed
            XML string. For example:
            SELECT idsxmlparse('<customer>John<customer>') from tab;
            The input XML string is not a well formed XML string in this
            case because it is missing a </customer> tag.
Action:Supply a well-formed XML document as the input.
       For example:
       SELECT idsxmlparse('<customer>John</customer>') from tab;

-8356	Function <funcname>  Returned multiple nodes for the query.

Explanation:The function <funcname> returned more than one node.
Action:Modify the function <funcname> so that only one node is returned.

-8357	Function <funcname>  Out of memory exception.

Explanation:The database server needed to allocate memory in order to
            process the query, but none was available.This error might reflect 
            a hardware limit, an operating-system configuration limit, or a
            temporary shortage of space.
Action:Try the query again after a delay. If it still fails, consult your
       system administrator. If possible, revise your query to join fewer
       tables, to order or group on fewer columns, or to operate in two or
       more separate statements. On DOS systems, exit to the operating-system 
       command line, free some disk space or reduce the complexity of your 
       program, and resubmit the program.If the problem persists, contact 
       Technical Support to resolve the problem.

-8358	Function <funcname>  Connection Open Failed.

Explanation: The open connection call failed while running the function
             <funcname>.
Action:Rerun the application. Make sure server is running and there is
       no error messages in server log file. If the problem persists,
       contact Technical Support to resolve the problem.

-8359	Function <funcname>  Error allocating temporary clob file.

Explanation:The server was unable to allocate enough memory for allocating
            a temporary clob file while running the function <funcname>.
Action:Make sure that the system has enough memory to run the command.
       If the problem persists, contact Technical Support to resolve
       the problem.

-8360	Function <funcname>  Large Object spec init failed.

Explanation:The server failed to open large object specification init
            structure while running the function <funcname>.
Action:Make sure that the system has enough memory to run the command.
       If the problem persists, contact Technical Support to resolve
       the problem.

-8361	Function <funcname>  Failed to create a large object.

Explanation:The server failed to create a smart large object while running the
            function <funcname>.
Action:Make sure that the system has enough memory to run the command.
       If the problem persists, contact Technical Support to resolve
       the problem.

-8362	Function <funcname>  Failed to write to a large object.

Explanation:The server failed to write to an open smart large object while
            running the function <funcname>.
Action:Make sure that the system has enough memory to run the command.
       If the problem persists, contact Technical Support to resolve
       the problem.

-8363	Function <funcname>  Null argument to function.

Explanation:One or more of the arguments that were passed to the function
            <funcname> is null.
Action:Contact Technical Support to resolve the problem.


-8364	Function <funcname>  Null buffer passed

Explanation:The state buffer that is used for storing XML output is null.
Action:Verify that system has enough memory.Contact Technical Support
       to resolve the problem.


-8365	Function <funcname>  Null row descriptor

Explanation:The row descriptor information in the argument was null.
Action:Contact Technical Support to resolve the problem.

-8366	Function <funcname>  Null type ID

Explanation:The row descriptor type ID is null.
Action:Contact Technical Support to resolve the problem.

-8367	Function <funcname>  Null type descriptor

Explanation:The descriptor of row descriptor type descriptor is null.
Action:Contact Technical Support to resolve the problem.

-8368	Function <funcname>  Buffer size exceeds maximum size

Explanation:The output of <funcname> must be less than 32739 bytes.
Action:If the combined size of output records exceeds 32739 bytes,
       one need to use a clob function.

-8369	Function <funcname> Memory allocation for internal buffer failed

Explanation:Function <funcname> was not able to allocate more memory.
Action:Make sure that the system has enough memory to run the command.
       If the problem persists, contact Technical Support to resolve
       the problem.

-8370	Function <funcname> init failed

Explanation:clob function <funcname> for init has failed.
Action:Contact Technical Support to resolve the problem.

-8371	Function <funcname> create failed

Explanation:clob function <funcname> for create has failed.
Action:Contact Technical Support to resolve the problem.

-8372	Function <funcname> stat failed

Explanation:clob function <funcname> for getting status has failed.
Action:Contact Technical Support to resolve the problem.

-8373	Function <funcname> stat size failed

Explanation:clob function <funcname> for getting size status has failed.
Action:Contact Technical Support to resolve the problem.

-8374	Function <funcname> write with seek failed

Explanation:clob function <funcname> for write with seek has failed.
Action:Contact Technical Support to resolve the problem.

-8375	Function <funcname> General exception.

Explanation:Function <funcname> received a general exception during execution.
Action:Contact Technical Support to resolve the problem.

-8376	Function <funcname> null input large object handle.

Explanation:A null input large object handle was passed as an input XML string
            for function <funcname>.
Action:Supply a valid smart large object handle.
       For example ,consider a table tab :
       create table tab(col1 int, col2 clob);
       Clob data can be inserted as,
       INSERT INTO tab values(1, filetoclob("data.xml", "client"));
       where "data.xml" is XML string document. The column tab.col2 can
       be used as input large object handle to function <funcname>.

-8377	Function <funcname> failed because the first argument is too long.

Explanation: The length of the first argument in the function is larger
than the maximum allowed length.
Action: Run the function again with a first argument that is less than or
equal to the maximum allowed length.

-8378	Function <funcname> failed because the second argument is too long.

Explanation: The length of the second argument in the function is larger
than the maximum allowed length.
Action: Run the function again with a second argument that is less than or
equal to the maximum allowed length.

-9001	Only columns of type CHARACTER may be subscripted or printed
without trailing blanks.

Either you attempted to subscript or apply the CLIPPED function to a
noncharacter variable, or you specified a variable to have the wrong
data type.


-9002	An unknown operation code was found in the PMIM.

An internal ACEGO error occurred. Make sure that a version of ACEPREP
at the same version level as ACEGO compiled your report. If that is the
case, recompile the report to make sure that the .arc file is not
corrupted. If the error recurs, note all circumstances and
contact IBM Technical Support.


-9003	A USING format string may contain only one '.'.

The format string that specifies the display of a number contains more
than one decimal point. Remove all but one of the decimal points. Refer
to the discussion of the USING function in the reference manual.


-9004	The column name is not in the current table, or the user variable name
has not been defined.

The name that is shown cannot be related to either a column in a
database table or a defined variable. Check its spelling. If you meant
it to be a variable, add it in the DEFINE section. If you meant to name
a column in the database, check to see if the table was altered or its
columns were renamed.


-9014	Usage: SACEGO [-q][-d database] report-filename.

Flags:

-q   SACEGO will not print any messages or errors.

-d   SACEGO will use the database name that follows the -d option instead of
     the database name that is specified in the DATABASE section of the
     report specification.

This message displays when ACEGO is not given appropriate command-line
arguments. Other messages might explain it explicitly. You can use the
-s option, as the manual describes, in place of -q as shown in the
message; they have the same effect.


-9025	The column name is not in the current table. Any column used as an
ORDER BY column must be in the current table.

The name that is displayed appears after the words ORDER BY, but it is
not the name of a column or the display label of an expression that is
selected in this statement.


-9046	The report output file filename could not be opened.  This is probably
due to permissions.

The report was directed to the destination shown, either with a REPORT
TO statement or through the contents of the DBPRINT environment
variable. Make sure that the destination was spelled correctly. Verify
that your account has operating-system permissions to write the
destination file and that the destination disk is writable and not
full.


-9047	The output file filename could not be created.

Probably your account does not have write permission in that directory,
the disk is full, or you have exceeded a limit on open files.


-9048	The pipe pipe-specification could not be opened.

The report was directed to the pipe that is shown in the REPORT TO
statement. Make sure that all program names in it are spelled
correctly, that the programs exist, and that they are on the current
execution path. Look for other messages from the operating system that
might indicate the source of trouble (for example, a message that
indicates not enough system memory was available).


-9049	A value entered as a command line parameter cannot be converted to the
data type type.

A PARAMETER statement in the DEFINE section defines one of the values
from the command line as having data type type. However, the value that
is given on the command line cannot be converted to that type. Check
the following points:

    *   If type is numeric, check that the parameter can be read as a
        number.

    *   If type is MONEY, the parameter should nevertheless not include
	a currency symbol.

    *   If type is CHARACTER or VARCHAR, check that the parameter is
	not longer than the length that is defined for the variable.

    *   If type is DATETIME, check that the parameter is correctly
        punctuated (refer to the information on DATETIME and INTERVAL
        data in the user guide).

    *   If type is DATE, check that the parameter is correctly
	punctuated as a date.

Correctly punctuated DATE, DATETIME and INTERVAL values contain
characters that might have special meaning to the operating system. The
problem might be that the parameter was correct but needed quotes
around it to protect it.


-9050	The user variable name is of type type. The value entered is out of
range or cannot be converted to that type.

A value was entered in response to a PROMPT statement, which stores the
value in a variable of the name and type shown. However, it was
impossible to convert the entered value to the data type of the
variable (see the discussion of error -9049 for details on conversion).
Rerun the report and enter appropriate data (also consider revising
the prompt string to better guide the user).


-9051	The number of defined parameters in the ACE program does not equal the
number of actual parameters passed to ACEGO on the command line.

The number of parameters that are defined using PARAMETER statements in
the DEFINE section does not agree with the number of items that are
given as parameters on the command line. Check that parameters that
contain spaces or other special characters are enclosed in quotes; the
lack of quotes can cause a single parameter to be taken as more than
one.


-9052	The format string is too large. It may not be larger than 79 characters.

A limit exists on the size of the format string that is presented to
the USING function.


-9053	An unknown entry in the .arc file has been detected. Recompile your ACE
report specification using SACEPREP and then rerun SACEGO. Be certain that the
version numbers for SACEPREP and SACEGO are identical.

The versions of ACEPREP and ACEGO must agree. (To check the version of
either program, run it from the command line with the -v option.) To
recompile the report, use a version of the compiler, ACEPREP, that is
identical to the version of the runner, ACEGO. If the versions are
already the same, recompile the report anyway to ensure that the .ace
file has not been corrupted. If the error recurs, note all
circumstances and contact IBM Technical Support.


-9054	The ACE report was compiled by version A compiler. This runner can only
run 5 through B. Recompile your ACE report specification using SACEPREP and
then rerun SACEGO.

The versions of ACEPREP and ACEGO must agree. (To check the version of
either program, run it from the command line with the -v option.) To
recompile the report, use a version of the compiler, ACEPREP, that is
identical to the version of the runner, ACEGO. If the versions are
already the same, recompile the report anyway to ensure that the .ace
file has not been corrupted. If the error recurs, note all
circumstances and contact IBM Technical Support.


-9055	The compiled report file filename could not be found or opened.

The report filename was named on the ACEGO command line. It expects to
locate the file filename.arc in the current directory or a path that
the DBPATH environment variable names, but it could not find the file
or could not open it for reading. Check that the filename was spelled
correctly and that your account has read access to it.


-9059	A select statement which is not the final select statement in an ACE
report must select into a temporary table.

The SELECT section of the report can contain more than one SELECT
statement. However, only the last one of these statements can produce
the rows that are the report contents. The preceding SELECT statements
are used to prepare data in temporary tables that the final statement
delivers to the report. Change the report specification so that all but
the last SELECT statement contain INTO TEMP clauses.


-9060	The values m and n used to subscript name are outside the bounds for
the column's defined length.

A column substring in the ORDER BY clause is incorrect. When taking a
substring of a column, the first number in brackets specifies the
position of the first character, and the second number specifies the
position of the last character of the substring. Both numbers must be
at least 1 and not greater than the total length of the column or
variable.


-9061	A 'SELECT INTO' statement cannot be executed as the last select
statement in an ACE report.

The SELECT section of the report can contain more than one SELECT
statement. The last (or only) one of these statements must produce the
rows that are the contents of the report. Any preceding SELECT
statements are used to prepare data in temporary tables that the final
statement delivers to the report. Change the report specification so
that all but the last SELECT statement contain INTO TEMP clauses.


-9062	An error has occurred during the conversion of a numeric value to a
CHARACTER type user variable. The CHARACTER type variable is not long enough
to hold the result.

The conversion of a numeric value to character produced more numeric
characters than the destination could hold. Rather than truncate the
result, ACEGO stops with an error. You can either redefine the
destination variable, or you can limit the size of the converted value
(for example, with a USING format string).


-9063	The user function name, defined by the user in the DEFINE statement
of ACE, could not be found in the C function definition table userfuncs in the
user's C static data area.

The DEFINE section of the report contains a FUNCTION statement
indicating that an external function name would be linked with the
report. (The ESQL/C manual covers the use of external C functions with
ACE reports and PERFORM screens.) However, the name and address of each
such function must appear in a static array that is named userfuncs.
That array, along with the computer code of the external functions, is
linked with a custom version of ACEGO. Because name did not appear in
the array, ACEGO cannot call it.

Check that you are executing the correct, customized version of ACEGO
(the original version of the program has no external functions linked
to it). Check to see if name is correctly spelled. Then examine the
source of the C functions to make sure that the userfuncs array is
defined correctly and that it contains an entry for name.


-9064	The run-time string table is full. No more memory can be allocated.

The data space available for temporary character strings is full.
Temporary strings are built when calling external C functions and when
processing the USING, SPACE, and ASCII built-in functions. Reduce the
use of these items.


-9065	Memory allocation has failed.

ACEGO was unable to allocate memory to hold a row, a line, or an SQL
data structure. The space needed is not (as the message text suggests)
directly related to the size of the report specification. The report
lacks only a few thousand bytes, at most, to run.


-9066	An error has occurred while writing to the output report.

The report destination was opened correctly, but the operating system
reported an error while output was being written. Look for error
messages from the operating system that explain the problem. The most
common cause of the error is lack of available disk space.


-9067	ACEs arithmetic stack has exceeded its bounds. The expression here is
too complicated.

Reduce the complexity of the arithmetic expression. For example, divide
the expression into subexpressions and assign the values of each to a
variable.


-9068	An SQL statement has been found in the SELECT section that is not a
SELECT statement. Only SELECT statements or SELECT statements that create
temporary tables are allowed in the SELECT section.

Possibly the word SELECT is misspelled in the report specification. If
you intentionally wrote another SQL statement such as UPDATE or INSERT,
remove it; only SELECT statements are permitted in reports. (You can
execute other SQL statements in a C function that is called from a
report. The ESQL/C manual discusses linking external C functions with
reports.)


-9070	A record in the flat ascii input file contains more data fields than
what was specified in the DEFINE ASCII statement of the report.

A field in the ASCII file is a sequence of zero or more characters that
ends in a delimiter character (the delimiter is specified in the READ
statement). Effectively, as many fields as delimiter characters exist
in each record. The number of fields must be the same in each record,
and each field must be defined in an ASCII statement in the DEFINE
section of the report. Extra fields are not ignored. Look for message
-9072; it can help you locate the record in error.


-9071	A record in the flat ascii input file contains less data fields than
what was specified in the DEFINE ASCII statement of the report.

A field in the ASCII file is a sequence of zero or more characters that
ends in a delimiter character (the delimiter is specified in the READ
statement). Effectively, as many fields as delimiter characters exist
in each record. The number of fields must be the same in each record,
and each field must be defined in an ASCII statement in the DEFINE
section of the report. No default exists for missing fields. Look for
message -9072; it can help you locate the record in error.


-9072	The count records from the ascii input file have been read in.

This informational message helps you locate the source of a problem in
the ASCII input file. The problem that is described in another message
was found in the count line of the file.


-9140	An attempt was made to divide by zero on line number.  The result was
set to zero.

An expression on line number of the report-specification file contains
a division operation. At some point in the report run, the divisor in
the expression was zero. Examine the expression and the data it uses
and write the report so that division by zero will not occur (for
example, by testing for zero in an IF statement). This error can result
from applying an aggregate function to a defined variable before the
first row of data is processed. To avoid this situation, make sure that
any variable has a value before it is used (for example, by setting it
from a command-line parameter or with a PROMPT FOR statement).


-9142	Date conversion error.

ACEGO is trying to convert from characters into a DATE data type but
found an error. Either the date is not punctuated correctly, unwanted
nonnumeric characters are present, or the date itself is inconsistent
(for example, "01/32/91").


-9143	Character, Text, and Byte data cannot be printed with using formats.

The USING function can only be applied to numeric data. Revise the
report specification.


-9200	Purpose routine (am_xxx) is not yet supported with JVTI.

Your JVTI code included a purpose method that is not supported
in this release. am_xxx can be any of the following unsupported 
methods: am_delete, am_insert, am_update, am_check, am_truncate,
or am_stats.


-9201	Secondary access method with Java am_purpose routine is not
supported.

You attempted to create a secondary access method with Java-Language User
Defined Routines. Secondary access methods are not supported in Java
technology. 

To create a secondary access method, you must use the C language User Defined
Routines. For more information, see the Virtual-Index Interface Programmer's
Guide.


-9202	JVTI only supports external am_sptype in this release.

Your CREATE PRIMARY ACCESS_METHOD SQL statement specified an am_sptype
value other than "X". JVTI allows you to address only extspace (not sbspace
or dbspace) data storage.

 Use the ALTER ACCESS_METHOD SQL statement to change am_sptype to 'X'.


-9250	Xadatasource type datasource_type_name already exists in database.

The xadatasource type that you are creating with CREATE XADATASOURCE TYPE
statement already exists. You must use a new name.


-9251	Xadatasource datasource_name already exists in database.

The xadatasource that you are creating with a CREATE XADATASOURCE 
datasource_name USING statement already exists. You must use a new name.


-9252	Xadatasource type datasource_type_name not found.

The datasource_type_name you are trying to drop with DROP XADATASOURCE 
TYPE datasource_type_name statement does not exist. Use the correct 
datasource_type_name.


-9253	Xadatasource datasource_name not found.

The datasource_name DROP XADATASOURCE datasource_name does not exist. 
Use the correct name.


-9254	Improper purpose function used for xadatasource type.

A purpose routine used with the CREATE XADATASOURCE TYPE type_name statement 
is improper. It might be spelled incorrectly. Otherwise, it is used 
incorrectly in combination with the other purpose routines, or it is a purpose 
routine is not appropriate for the xadatasource type. Correct the spelling 
of the purpose routine or change one or more of the purpose routines until the 
combination of purpose routines is valid.

Example:  CREATE XADATASOURCE TYPE xads_t1(
             xa_flags    = 1,
             xa_version  = 0,
             xa_open     = xa2pc_open,
             xa_start    = xa2pc_start,
             xa_close    = xa2pc_close,
             xa_end      = xa2pc_end,
             xa_rollback = xa2pc_rollback,
             xa_prepare  = xa2pc_prepare,
             xa_commit   = xa2pc_commit,
             xa_recover  = xa2pc_recover,
             xa_forget   = xa2pc_forget,
             xa_complete = xa2pc_complete);


-9255	Duplicate purpose function used for xadatasource type.

A purpose routine used with the CREATE XADATASOURCE TYPE datasource_type_name 
statement has been used more than once. Change the purpose routines used until 
no duplicates exist.


-9256	Required purpose function is was not used for the xadatasource type.

A required purpose routine has not been used with the CREATE XADATASOURCE TYPE 
datasource_type_name statement. Change the purpose routines used until the 
required purpose routines are included or preserved.

Example:  CREATE XADATASOURCE TYPE xads_t1(
             xa_flags    = 1,
             xa_version  = 0,
             xa_open     = xa2pc_open,
             xa_start    = xa2pc_start,
             xa_close    = xa2pc_close,
             xa_end      = xa2pc_end,
             xa_rollback = xa2pc_rollback,
             xa_prepare  = xa2pc_prepare,
             xa_commit   = xa2pc_commit,
             xa_recover  = xa2pc_recover,
             xa_forget   = xa2pc_forget,
             xa_complete = xa2pc_complete);


-9257	Improper value used for purpose function for xadatasource type.

A purpose routine has been used with an improper value in a CREATE XADATASOURCE 
TYPE datasource_type_name statement. Use the proper type of value for 
the purpose routine.


-9258	Not an owner of xadatasource type or DBA.

The user executing a DROP XADATASOURCE TYPE statement is not authorized 
because the user is not the owner of the xadatasource type or does not 
have DBA privileges.


-9259	Not an owner of xadatasource or DBA.

The user executing a DROP XADATASOURCE statement is not authorized 
because the user is not the owner of the xadatasource type or does not 
have DBA privileges.


-9260	Cannot drop xadatasource type (type_name) that is still in use.

An xadatasource type cannot be dropped while it is in use. Be sure that no
xadatasource is defined using type_name.


-9261	Cannot drop xadatasource (name) that is still in use.

An xadatasource cannot be dropped while it is in use. Be sure that name
is currently not registered in the transaction.


-9262	Error [err] indicated by an xadatasource purpose function.

An error occurred when an attempt was made to execute an xadatasource purpose
routine. For more information, refer to the accompanying XA error code.


-9263	Can't execute CREATE/DROP XADATASOURCE statements in non logging database.

'CREATE XADATASOURCE TYPE', 'CREATE XADATASOURCE', 'DROP XADATASOURCE TYPE' and
'DROP XADATASOURCE' statements are for trasactional support for external 
datasources. Non logging databases do not support transactions and therefore
these statements cannot be executed in non logging database.

-9265	Invalid xadatasource name.

The xadatasource name passed as argument is invalid. The valid format for
the xadatasource name is 'xadatasourcename' or 'owner.xadatasourcename'. 


-9266	Not in a transaction.

The database server cannot register or unregister xadatasource instance
because no transaction is active in the current session. In order to register 
or unregister an xadatasource instance, you must start a transaction. 


-9267	Xadatasource name is not present in the database.

The xadatasource name is not present in the current database. Check the
name of the xadatasource; it might be spelled incorrectly. Otherwise
create the xadatasource name.


-9268	Xadatasource name is not registered in the transaction.

The xadatasource name is not registered in the transaction; xadatasource
has to be registered before it can be unregistered.


-9269	xa_open purpose function of xadatasource has returned an error.

The xa_open purpose function of xadatasource has returned an error. 
In order to register the xadatasource instance, xa_open needs to be 
Successful (i.e. it needs to return XA_OK).


-9270	Type <opaque_type_name> is unsupported in distributed queries.

The type <opaque_type_name> is unsupported in distributed queries.
The type  <opaque_type_name> cannot be used in queries that access more 
than one database.

Modify the query not to use the  <opaque_type_name> data type.


-9271	Type <opaque_type_name> is not identically defined in all the databases used in the distributed queries.

The attributes of the user-defined data type <opaque_type_name> are different
on the local and remote databases. A UDT used in a distributed queries must
have the same attributes  and type hierarchy in all databases accessed by 
the query.

Examine the definition of the <opaque_type_name> UDT in both your local and
remote databases. Modify one or both of the UDTs so that they are the same.

-9272	The data type <type_name> is not supported for current client/server configuration.

The data type <type_name> is not supported for current client version.
Modify the query not to use the <type_name> data type or upgrade client version

-9273	Cannot create duplicate table table-name.

In a non-ANSI database, table names must be unique. When two different users
create tables with the same name at the same time, one or both of the users can 
receive this message. Rerun the CREATE TABLE statement.

-9274	Complex type name length exceeds maximum allowd 65535.

The statement is trying to create complex type. The name of the complex type
is exceeds maximum allowed 65535. Modify the statement such that it uses 
smaller identifiers.

-9275	Decimal data precision exceeds the allowable limit for DRDA connections.

The query output contains decimal data that has precision exceeding the 
allowable limit of 31 digits for DRDA connections.

-9300	Cannot set clear flag for UDT (<udt-id>) in global jar list.

J/Foundation cannot set the clear flag for the specified user-defined
type in the global jar list.


-9301	Cannot set remove flag for jar (<jar-id>) in global JVP list.

J/Foundation cannot set the remove flag for the specified jar in the
global JVP list.


-9302	Cannot set new path flag for <identifier>.

J/Foundation cannot set a new path flag for the specified object.


-9303	User SQL Exception. <exception>

J/Foundation returned the specified SQL exception.


-9304	Updatable scroll cursor features are not supported in this
version.

The 9.21 database server does not support updatable scroll cursor
features. Attempts to use updatable scroll cursor methods like
updateRow(), insertRow(), or deleteRow() raise this error message.


-9305	Attempt to read or position past end of UDT data.

This error occurs when a Java user-defined routing (UDR) attempts to read
or set a position beyond the end of the user-defined type (UDT) data
available from a UDT data input stream.

Check the length and structure of the UDT carefully against the data
input UDR code.


-9400	User-defined aggregate <aggregate-name> already exists.

The name given already exists in your database, either as an aggregate name
or as the name of a routine. (You cannot have an aggregate and a routine
with the same name.)

Change your CREATE AGGREGATE statement to give the aggregate a unique name.


-9401	Cannot re-define or drop builtin aggregate <aggregate-name>.

The named aggregate is a system-defined aggregate. You can overload the
functions that support the built-in aggregates, but you cannot redefine
or drop built-in aggregates.

Create support functions for the named aggregate but do not use the CREATE
AGGREGATE statement.


-9402	Multiple occurrences of the <modifier-name> modifier.

Each of the modifiers INIT, ITER, COMBINE, FINAL, and HANDLESNULLS can
appear only once in the CREATE AGGREGATE statement. Check your statement
for repeated modifier names.


-9403	The <modifier-name> modifier must be specified.

You need to include the named modifier in your CREATE AGGREGATE statement.
The iterator (ITER) and combine (COMBINE) functions are required for all
user-defined aggregates.


-9404	User-defined aggregate <aggregate-name> does not exist.

The named aggregate does not exist in your database. Before you can use a
user-defined aggregate, you must create the necessary support functions and
register the new aggregate with a CREATE AGGREGATE statement.


-9405	Must be owner of user-defined aggregate <aggregate-name> or DBA.

You attempted to drop a user-defined aggregate that someone else created.
To drop a user-defined aggregate, you must own (be the creator of) the
aggregate or you must have DBA privilege.


-9406	Cannot resolve support function for user-defined aggregate
<aggregate-name>.

You attempted to use a built-in aggregate for which the database server
could not find an appropriate support function. For example, if you try
to use the SUM  aggregate on the "new_type" data type, the database server
looks for the following operator function:

     plus(new_type, new_type)

This error can also occur for a user-defined aggregate when one of the
support functions that the CREATE AGGREGATE statement has listed
(INIT/ITER/COMBINE/FINAL) is missing.

Make sure that you have the correct support functions for the user-defined
aggregate. These functions must be exist and must be registered in the
database with CREATE FUNCTION.


-9407	Set-up parameter to the aggregate <aggregate-name> cannot
contain non-group columns.

If the user-defined aggregate has been defined with a set-up argument, the
second argument of this aggregate must be either a constant or one of the columns in the GROUP BY clause of your query.

For example, the following two statements are valid:

    SELECT new_aggr(colA, 2) FROM some_table

    SELECT new_aggr(colA, colB) GROUP BY colB FROM some_table


-9408	User-defined aggregate <aggregate-name> has no arguments.

The user-defined aggregate in your SELECT statement does not specify any
arguments

Make sure that the user-defined aggregate of the SELECT statement 
provides the correct number of arguments (one or possibly two, if 
the aggregate includes a set-up argument).


-9409	User-defined aggregate <aggregate-name> has too many arguments.

The user-defined aggregate in your SELECT statement specifies too many
arguments

Make sure that the user-defined aggregate of the SELECT statement 
provides the correct number of arguments (one or possibly two, if 
the aggregate includes a set-up argument).


-9410	User-defined aggregate <aggregate-name> has two arguments but no
INIT function specified.

The user-defined aggregate in your SELECT statement specifies a set-up
argument. However, the CREATE AGGREGATE statement that defined this
aggregate has not specified an INIT support function. The handling of
a set-up argument must occur in an INIT function.

You can either call the user-defined aggregate without a set-up argument
or implement a set-up argument for the user-defined aggregate. To implement a set-up argument, take the following actions:

     -  Write an INIT support function that handles the set-up
        argument.
     -  Register the INIT function (with CREATE FUNCTION).

     -  Drop the user-defined aggregate (with DROP AGGREGATE).

     -  redefine the user-defined aggregate (WITH CREATE AGGREGATE),
        providing the INIT modifier to specify the new INIT support 
        function.


-9411	User-defined aggregate support function <function-name> does not
handle nulls.

You created your aggregate with the HANDLESNULLS option, but the function
named in the error message does not handle nulls.

When you create an aggregate with HANDLESNULLS, all support functions must
also handle nulls. You can either change the aggregate or change the
function. To change the aggregate, drop the aggregate and re-create it
without the HANDLESNULLS option.

If the aggregate needs to handle null values, you must modify the function so
that it can handle nulls. Then drop the function and reregister it with the
HANDLESNULLS option.


-9412	Return type of the support function <function-name> does not
match the aggregate state type.

When you extend a built-in aggregate for a user-defined data type, the
return type of the operator function must be the same as the data type
for which you are extending the aggregate. For example, if you try to use the SUM aggregate on the "new_type" data type, thedatabase server looks for a plus() function with the following signature: 

     CREATE FUNCTION plus(c1 new_type, c2 new_type)
            RETURNING new_type;

This error can also occur for user-defined aggregates if the  return type of
an INIT support function is not the same as that of the ITER or COMBINE
function. For user-defined types, make sure that the return types of the
INIT function (if any), ITER function, and COMBINE function are the same as the user-defined type.


-9422	JDK 1.2 cannot be used with kernel AIO.

JDK 1.2 cannot be used with kernel AIO.

Disable kernel AIO and try again.


-9423	Transaction request %s failed to execute.

A server JDBC attempt to start a transaction failed to execute.

Check online.log for any failures.


-9424	Server JDBC failed to get a row from the server.

A server JDBC attempt to get a row from the database server resulted
in an error. This is an internal error.


-9425	Internal error with the Java memory pool. 

An unexpected internal error occurred during use of the Java memory pool.
The pool could have been corrupted.

Restart the database server.


-9426	Can't use Native threads in this configuration.

You cannot use native threads in this configuration. Only green threads
can be supported on this platform.


-9427	Can't use Green threads in this configuration.

You cannot use green threads in this configuration. Only native threads
can be supported on this platform.


-9428	Java configuration (<configuration-name>) parameter error. 

The configuration parameter was not specified correctly.

Modify the configuration parameter and restart the server.


-9429	Java initialization failed, unable to find the library/routine
(<identifier>).

Java startup failed to locate the library or the specified routine
(<identifier>).

Check the Java installation on the machine. Either a wrong version
of the JDK has been installed, or the installation has not been completed
correctly.


-9430	JNI internal error. Unable to find or execute JNI call
(<call-id>).

The specified JNI call could not be executed. Possible causes of this
error include invalid JVP ONCONFIG variable settings, a possible VM
crash, and VM corruption. For example, your JVPCLASSPATH ONCONFIG
parameter might be missing the $INFORMIXDIR/extend/krakatoa/krakatoa.jar
file, or JVPCLASSPATH or another ONCONFIG parameter might have an incorrect
path or file name.

Check your JVP ONCONFIG variable settings. If the settings are valid,
contact IBM Technical Support.


-9431	Can't find system class or method or library (<identifier>).

Java startup failed to locate the system class or method (<identifier>).

Check the Java installation and J/Foundation installation on the
computer. Either the wrong version has been installed, or the
installation has not been completed correctly.


-9432	Variable length UDTs are not supported in this version of Java.

This version of Java does not support variable-length. This feature is
scheduled to be enabled in a future release.


-9433	Cannot position Blob/Clob.

An internal error occurred during access to a large object.

Contact IBM Technical Support.


-9434	Unexpected failure during initialization of Java virtual
processor.

An unexpected failure occurred during the initialization of a JVP.

Check online.log for details.


-9435	Unexpected failure during Java procedure execution.

An unexpected failure occurred during Java procedure execution.

Check online.log for details.


-9436	Java UDR's VP class must be CLASS_JAVA.

A Java UDR can run only on a JVP.


-9437	Unable to get SQLException information.

An internal error during access to the SQLException object.

Contact IBM Technical Support.


-9438	Feature or method (<identifier>) is not supported for opaque types.

The feature or method (<identifier>) is currently not supported for
opaque types. This feature or method might be implemented in a future
release.


-9439	Feature or method (<identifier>) is not supported for distinct
types.

The feature or method (<identifier>) is currently not supported for
distinct types. This feature or method might be implemented in a future
release.


-9440	Server JDBC failed to open cursor.

An attempt to open a cursor fetch by server JDBC failed.


-9441	Cannot create UDR Thread (%s).

The Embedded Java Virtual Machine failed to create a thread for processing
the UDR call. Contact IBM Technical Support.


-9442	Error loading Java UDR class (%s).

Make the following checks to ensure that the class that contains the Java
UDR is loaded:
     o  The directory that contains the class must be specified in the 
        CLASSPATH environment variable.

     o  The jar that contains the class must be correctly installed with
        the built-in procedure install_jar().

     o  The jar file has been created correctly, with the proper path to the
        class.


-9443	Cannot find class for type (%s).

For a user-defined-type mapping, make sure that the class is present in the
CLASSPATH environment variable or in a jar that is installed in the
database. Mappings for other data types come from the Java Developer's Kit
(JDK) or Informix-enhanced classes. For these data types, check the
installation of your JDK and Informix database server.


-9444	Initialization of Java virtual processor failed: (<processor>).

Possible causes for this error message include incorrect settings in
the configuration file for the database server, incorrect installation
of the JDK release, missing links to the JDK shared libraries,
and no informix.policy file.

Make sure that the configuration file for the database server has the
correct settings for J/Foundation. Also make sure that your JDK release
is properly installed. For Solaris systems that require /usr/lib links
to the JDK shared libraries, make sure that the links are properly
installed with the setjdk utility program.

If the informix.policy file is missing, copy the file
$INFORMIXDIR/extend/krakatoa/informix.policy.std to
$INFORMIXDIR/extend/krakatoa/informix.policy. You can customize
the informix.policy file after you create it.


-9445	Java language manager operation failed (%s).

Contact IBM Technical Support.


-9446	Execution of Java user-defined routine failed: (%s).

Correct the implementation of the Java UDR based on the problem that the
paranthetical message indicates.


-9447	Cannot perform Java-to-SQL type mapping for type (%s).

The user-defined-type mapping is invalid. Refer to the J/Foundation
documentation for allowed type mappings.


-9448	Unequal number of parameters in SQL and Java signature (%s).

Make sure that the SQL and Java signatures that the CREATE FUNCTION or
CREATE PROCEDURE statement has provided specify the same number of
parameters.


-9449	Java UDR method not found or is not static: (%s).

Make sure that the specified Java method exists as a public static method in
the specified class. Also make sure that the signature of the defined method
matches the signature that the CREATE FUNCTION or CREATE PROCEDURE statement
has specified.


-9450	Java method invocation failed (%s).

Make sure that the Java method is accessible. That is, it must either be
public or be in the same package as the caller.


-9451	Error instantiating user-defined-type mapping class (%s).

Make sure that the Java class specified has the proper access permissions
for instantiation. Check the instantiation rules for the Java language.


-9452	Error processing null argument. Use Java object form of type (%s).

You have probably used a Java primitive type as an argument to a Java method
that maps to the specified Java UDR. A null value for a primative-type
argument is invalid. Replace the Java primitive type with a Java Object
type. For example, replace "int" with "java.lang.Integer".


-9453	The JDBC command doesn't return any rows.

The database server did not return any rows as a result of the JDBC command. 


-9454	Error getting length for user-defined type (<udt-type>).

An error occurred during an attempt to retrieve the length for the
specified user-defined type.

Make sure that the length of the user-defined type is correctly stored in
the sysxtdtypes system catalog table.


-9455	Cannot access large object.

Make sure that the default sbspace, which the SBSPACENAME configuration
parameter indicates, has been created. The onspaces utility creates sbspaces.


-9456	Cannot get large object length.

The database server cannot obtain the length of a large object using a JDBC
connection. Make sure the connection from which the large object comes is
still valid.


-9457	Cannot convert large object handle to byte[].

The database server cannot obtain the content of a large object using
a JDBC connection. Make sure the connection from which the large object
comes is still valid.


-9458	Cannot start large object search.

The database server cannot perform seek on a large object using a JDBC
connection. Make sure the connection from which the large object comes
is still valid.


-9459	Large object Error: (%s).

The database server cannot access a large object using a JDBC connection.
Check the problem information contained in the error message. Also make sure
the connection from which the large object comes is still valid. 


-9460	Wrong connection for large object.

Contact IBM Technical Support.


-9461	Cannot read (%s) bytes off binary stream.

The large object does not contain as many bytes of data as are requested to
be read from it.

Make sure the binary stream used to create a large object has a sufficient
amount of data.


-9462	Driver being shutdown.

The Java virtual processor (VP) cannot create new JDBC connections while it is
in the process of being shut down. Terminate your JDBC session and restart
it after the VP is completely removed from the database server.


-9463	Cannot load the specified IfxProtocol class: (%s).

Make sure that the JDBC URL, which you specify in the
DriverManager.getconnection() method, has a valid protocol class name
for the ProtocolClass parameter.


-9464	Must specify user=name in the URL.

Make sure the JDBC URL contains the username.


-9465	Must specify dbname in the URL.

Make sure the JDBC URL contains the database name.


-9466	Must specify password=value in the URL.

Make sure the JDBC URL contains the password for the desired user session.


-9467	Driver shutdown, no new connection.

The Java virtual processor (VP) was shut down in the middle of creating
a JDBC connection. Terminate your JDBC session and restart it after the VP
is completely removed from the database server.


-9468	Cannot make UDR connection in non-UDR thread.

A UDR connection can be made only from the thread executing a Java UDR. Make
sure the connection is not created on a child thread forked by the UDR.


-9469	UDR connection failed.

Contact IBM Technical Support.


-9470	Cannot establish JDBC connection for embedding application.

Contact IBM Technical Support.


-9471	Database server connection failed.

Contact IBM Technical Support.


-9472	Error creating Solano connection: (%s).

Contact IBM Technical Support.


-9473	Connection to database failed.

Make sure that the database exists and has all required access permissions.


-9474	Could not connect to database (%s).

Contact IBM Technical Support.


-9475	Connection is closed.

Make sure the connection used to issue the JDBC operation is still open.


-9476	Database server JDBC error: (%s).

Contact IBM Technical Support.


-9477	Cannot obtain UDR environment.

UDR environment objects are available only to Java UDR threads. Make sure
the getUDREnv() method is not invoked by a child thread forked by the Java
UDR.


-9478	VM too low on memory: (%s) bytes left.

There is insufficient memory to start a new instance of a Java UDR. Reduce
the number of session connected to the Java virtual processor (VP) or
terminate the resource-intensive Java computations.


-9479	Unknown throwable: (%s).

The Java UDR throws an unknown exception. Check the Java VP log for details.


-9480	Unknown iterator code.

Contact IBM Technical Support.


-9481	Internal Error: (%s).

Contact IBM Technical Support.


-9482	Deployment descriptor file (%s) is not in the right format.

Refer to the J/Foundation documentation for the correct format of a
deployment descriptor file.


-9483	Unrecognized type: (%s).

Make sure that the specified data type is registered in the current database.


-9484	Invalid jar name.

If the jar name specifies the database and/or username, make sure that these
names match the database and user in the environment in which the jar is
being installed.


-9485	Attempt to install an existing jar: (%s).

Remove the existing jar before you install a new one that has the same name.


-9486	Invalid URL.

Check the syntax of the URL for the jar.


-9487	Attempt to remove non-existing jar: (%s).

You cannot drop a jar that has not first been installed. 


-9488	Invalid jar removal. All dependent UDRs not dropped.

You cannot drop a jar if dependent UDRs still reference any of the classes
within the jar. Drop all user-defined functions and/or user-defined
procedures that reference a class in the jar within their external names.


-9489	Invalid jar replacement. Class (%s) from old jar is still
referenced.

There is at least one class in the old jar that is not replaced in the new
jar and is referenced by a Java UDR. You must either drop the Java UDR
before you attempt to replace the jar, or add the class to the new jar.


-9490	No manifest file found for jar (%s).

All deployment descriptions that install_jar() needs to process must be
listed in the manifest file for the jar. Make sure that the manifest file
is created correctly for the jav. If no deployment descriptors are to be
processed, pass a value of '0' as the last parameter to the install_jar() built-in procedure. 


-9491	User threads are not allowed in this context, must be a DBAThread.

Java threads created by users from within user-defined routines are not
allowed to open JDBC connections.

If such threads need to execute SQL statements, then they need to open Solano connections
to run the queries against.


-9492	Unsupported feature: (%s).

This version of the database server cannot implement the specified feature.


-9493	Unsupported command from deployment descriptor: (%s).

Check the J/Foundation documentation for the commands that the database server
supports within deployment descriptor files.


-9494	Java not supported in this database server or Error loading
Java language module.

The version of your database server might not be Java enabled.

If you are using a Java-enabled database server and the Java language
module $INFORMIXDIR/extend/krakatoa/lmjava.so does not exist in your
distribution, contact IBM Technical Support.


-9495	Database server JDBC internal error. Check with your
administrator.

Unexpected JDBC driver internal error. This error is raised if 
the JDBC driver fails to acquire an internal resource.

For diagnostic information, check the jvp.log and online.log files.


-9496	Unable to map Java type to an SQL type or SQL type to a
Java type.

Unable to map between the Java type and the specified SQL type. This
error is usually raised when the database server is unable to start a
Java user-defined routine because its SQL types could not be mapped
to Java types.

Check the declaration of the Java user-defined routine.


-9498	Incorrect path to JAR file specified: (<pathname>).

The pathname for the JAR file to be installed is incorrect.

Correct the path to the JAR file and retry.


-9499	Internal JAR handling error. Check with your
administrator.

Unexpected JAR handling error.

For additional information, check the jvp.log and online.log files.


-9500	A subscript is out of bounds.

This statement takes a substring of a character variable. The substring
values (that is, two numbers in square brackets) are incorrect. The
first is less than zero or greater than the length of the column, or
the second is less than the first. Correct the form specification and
recompile.


-9503	The table tablename could not be opened.

Check that the table name is correctly spelled. If so, the table
tablename might not exist in the database (it might have been dropped
or renamed); or if it exists, your account might not have SELECT access
to it. Alternatively, if you are using the IBM Informix SE database server,
you might have exceeded the limit on open files, which can limit the
number of tables that you can name in a SELECT statement. In this case,
you might have to revise the SELECT section of the report to use more
SELECT statements, each of which names fewer tables. Products after
Version 4.0 do not issue this message.


-9503	PRINT FILE filename could not be opened.

The file that is shown could not be opened for output. Look for
operating-system error messages that might give more information.
Possible causes include a full disk or lack of the correct permissions
for the file or directory.


-9504	The argument number is out of bounds for the ascii function. Arguments
must be between 0 and 255, inclusive.

The input to the ASCII function must be a number between 0 and 255.
Examine the use of this function in the report specification. If the
improper value number came from a command-line parameter, you might
consider testing it with an IF statement.

-9602	Illegal attempt to convert a collection type into another type.

You attempted to store a collection of one type in a collection of a
different type, or you attempted to move a collection into a host
variable that is not a collection. In ESQL/C, a collection host
variable declared to contain elements of a specific type can only hold
collections of that same type. If you require that a collection host
variable hold collections of different types, declare it without the
specific type information.


-9605	Scroll cursor can't select collection columns.

You attempted to select a collection column while you were using a
scroll cursor. You must rewrite the query without the scroll cursor or
eliminate any collection columns from the select list.


-9606	Collections are not allowed in the GROUP BY clause.

Move the reference to a collection column in the GROUP BY list.


-9607	Collections are not allowed in the DISTINCT clause.

Either remove the DISTINCT clause or remove the collection column
from the SELECT clause.


-9608	Collections are not allowed in the ORDER BY clause.

Remove the reference to a collection column in the GROUP BY list.


-9609	Collections are not allowed in the expression.

You attempted to select a collection from within a subquery, perform an
aggregation on a collection, or use a collection in some other
expression that is not allowed. Check your manual to determine
the places where you can use collections in expressions.


-9610	Illegal attempt to use collection host variable.

You attempted to calculate the cardinality of a data type that is not a
collection, incorrectly used a collection host variable by using an
untyped collection without assigning a value to it, or used incorrect
syntax to create a collection derived table.

Check your manual to determine the correct usage of collections in
this context.


-9611	ROM clause cannot have a join when one of the tables is a collection.

You cannot join a table derived from a collection with a table. Remove
TABLE(:coll_host_var) from the FROM clause of your query.


-9612	No WHERE, GROUP BY, HAVING or ORDERBY clause is allowed in a collection.

Remove any WHERE, GROUP BY, HAVING, or ORDER BY clause from your
statement or remove TABLE(:coll_host_var) from the FROM clause of your
statement.


-9613	Select list cannot have expression when selecting from a collection.

Only '*' or column names are allowed in the select list for derived
tables that use collections. Check your SELECT list.


-9614	Derived column list is not allowed for this statement.

UPDATE statements do not require derived-column lists. Columns are
listed in parentheses following a table name. Also, in any SQL
statement, a derived-column list can be associated only with
collection-derived tables and not others.

Remove the derived-column list from the UPDATE statement.


-9615	AT keyword is not allowed when inserting in a base table.

Use the AT keyword only when you are inserting into a LIST.


-9616	Position value should be specified through a constant or a
variable.

The position argument for an AT keyword of a list must be a simple integer
literal or host variable.

Simplify the expression to one of these.


-9617	Source for the SET clause should be a simple expression.

Collection derived tables can only be updated using constants, host
variables, or table columns.


-9618	Aliasing is not allowed for a collection of ROW types.

For collection-derived tables, you need not provide a column name
alias. Remove the column name alias.


-9620	Cannot select the collection variable (collection_variable_name).

This error occurs within SPL when you attempt to place an SPL collection
variable in the select list. You must remove the collection variable
from the select list.


-9621	The number of derived columns do not match the actual number of columns.

For collection-derived tables, you must provide number of derived columns 
matching with columns in select list. 
For example, the following SELECT statement would cause error -9621:

SELECT * FROM TABLE(MULTISET(SELECT colno, colname FROM syscolumns WHERE 
		tabid > 99)) AS vtab(vc1) 


-9623	Internal length must be greater than zero and smaller than 32,768.

When you use the CREATE OPAQUE TYPE statement to define a fixed-length
opaque type, the value that you specify for the internal length
modifier must be greater than 0 bytes and smaller than 32,768 bytes.

Use a valid value to define the type.


-9624	Maximum length must be greater than zero and smaller than 32,768.

When you use the CREATE OPAQUE TYPE statement to define a variable-
length opaque type, the value that you specify for the maximum length
modifier must be greater than 0 bytes and smaller than 32,768 bytes.
Redefine the type with a valid value.


-9625	Alignment must be set to 1, 2, 4 or 8.

When you use the CREATE OPAQUE TYPE statement to define an opaque type,
the value that you specify for the alignment modifier must be 1, 2, 4,
or 8. Redefine the type with a valid value.


-9626	Maximum length should be set for variable-sized opaque types only.

When you use the CREATE OPAQUE TYPE statement to define a fixed-length
opaque type, you should not specify the maximum length modifier.


-9627	Passedbyvalue can only be set if length is 1, 2, or 4.

When you use the CREATE OPAQUE TYPE statement to define a fixed-length
opaque type that is passed by value, its internal length must be 1, 2,
or 4.


-9628	Type (type_name) not found.

The specified type_name could not be found. The datatype name you use 
should either be a built-in datatype of Informix Dynamic Server or 
an extended datatype explicitly created by the user/application. 
If you encounter this error on a Read-only Secondary of an HDR pair, 
check to see if the specified type_name was ever created on the Primary.


Example of extended datatypes: distinct type, row type, collection type, 
and opaque type. Before you can use an extended type, you must 
create it with the CREATE <datatype> TYPE statement.
example: CREATE DISTINCT TYPE di AS INT;
	 CREATE ROW TYPE rt (a INT, b CHAR(10));


-9629	Not owner of type.

USAGE permission is required for the use of opaque types. Use the GRANT
USAGE ON TYPE statement to grant permission to use a type.


-9630	Cannot drop type (type_name): still in use.

An opaque type cannot be dropped while it is in use. Be sure that no
casts, functions, or distinct type definitions are based on the type.


-9631	Opaque type (type_name) already exists in database.

Opaque types must be unique within the schema (ANSI mode) or database.
Be sure that the type does not already exist.


-9632	Value does not match the type of column (column_name).

If the value does not match the data type of the column, but can 
be converted into the data type of the column, then you might need 
to use an implicit or explicit cast.  

If you want the conversion to be automatic, then create an 
implicit cast by using the CREATE IMPLICIT CAST statement to define 
a cast between the source and destination types.  See the description
of the CREATE CAST statement in the IBM Informix Guide to SQL: Syntax.  

In some cases, you might need to use explicit casting. A common cause
of error -9632 is failure to explicitly cast a row type. For example,
the following INSERT statement would cause error -9632:

   CREATE ROW TYPE rt1 (i INT, f FLOAT);
   CREATE TABLE table1 (rt1_col rt1);
   INSERT INTO table1 (rt1_col) VALUES (ROW(1, 2.0));

The correct INSERT statement, with the explicit cast, follows:

   INSERT INTO table1 (rt1_col) VALUES (ROW(1, 2.0)::rt1);


-9633	ALTER TABLE cannot modify column (column_name) type.  Need a cast from
the current type to the new type.

Conversions of column types require a cast. Use the CREATE CAST
statement to define a cast from the source to destination type.


-9634	No cast from <type-name>.

The specified cast does not exist or the cast function does not exist. Use
the CREATE CAST statement to define the cast or to create the cast function.


-9635	An attempt has failed to convert an opaque type into another type
without a cast function.

The specified cast does not exist or the cast function does not exist. Use
the CREATE CAST statement to define the cast or to create the cast function.

The BOOLEAN, BLOB, CLOB, and LVARCHAR data types are implemented by the
database server as built-in opaque data types.


-9636	Opaque type exceeded its maximum length.

Opaque types are defined with a maximum length that cannot be
exceeded. Verify that user-defined routines that return the type do
not attempt to exceed the size limit.


-9637	Cast function (function_name) does not exist.

The function associated with a cast must exist when the cast is
executed. Use the CREATE FUNCTION statement to create the function.


-9638	Grant/Revoke under on opaque types disallowed.

The UNDER clause in the GRANT/REVOKE statements applies to row types
only. It cannot be used with opaque types.


-9639	Grant/Revoke under on distinct of non-row types disallowed.

The UNDER clause in the GRANT/REVOKE statements applies to row types
(and distinct of row-types) only. You cannot use the UNDER clause with
non-row types or distinct of non-row types.


-9640	Cannot drop type (type_name): distinct type defined over the type.

Before you can drop a type, you must first drop all distinct types
based on the type.


-9641	Drop type can only drop opaque type or distinct type.

The DROP TYPE statement applies to opaque and distinct types only. Use
DROP ROW TYPE statement to drop row types.


-9642	A quoted string exceeds 32,768 bytes.

The system imposes a limit of 32,768 bytes on quoted strings. You
cannot exceed this limit.


-9643	Type (type_name) is not hashable.

Hashing is used in GROUPBY queries and as a mechanism to eliminate
duplicate values in DISTINCT and UNION, INTERSECT, or MINUS clauses. You cannot 
use types declared as non-hashable in these statements.


-9645	Cannot execute cast from user-defined type to character format.

When you use the debugging feature of SPL to print the content of a
user-defined, data-type variable, this error occurs if the database
server cannot find or execute the cast function to convert from the
given user-defined data type to character or long format.


-9646	Result of a Boolean expression is not of Boolean type.

When a conditional expression, such as a WHERE clause or an IF clause,
is evaluated in this statement, the result is not a Boolean value. All
conditional expressions must evaluate to a Boolean value, so check that
all conditional expressions evaluate correctly. If the expression does
not, use appropriate casts to make it evaluate properly.

-9647	Cannot drop extended type <extended_type_name>: still in use.

The extended type that you are attempting to drop is being referenced by
another type or table. Before you drop the extended type, first drop any 
type or table that refers to the extended type.

-9648	Invalid value specified for a Boolean type

't','T' or 'f','F' or NULL are the only valid values for boolean type.

-9649	Cannot transport a user-defined type to client versions earlier than version 9.

This operation is not supported in pre-version 9.x client. 


-9650	Right hand side of IN expression must be a COLLECTION type.

The column that is specified for the IN clause must be a COLLECTION
type. For other data types you must specify values in a parenthesized list. 
For example:

	SELECT * FROM CUSTOMER WHERE CUSTOMER_NUM IN (101);
 
-9651	The statement failed because binary large objects are not allowed in 
the Union, Intersect, or Minus queries.
 
You selected a TEXT or BYTE column in a UNION, INTERSECT, or MINUS query. The 
projection clause of each query cannot include any TEXT or BYTE columns. These 
columns are not allowed in a UNION, INTERSECT, or MINUS clause because TEXT 
and BYTE columns cannot be tested for equality. A UNION ALL clause, however, 
can include TEXT and BYTE columns (in a standalone SELECT statement or in a 
UNION view).

-9653	UNDER  privilege required to create subtype/subtable.

The user is not the owner of the type or table under which the statement
attempted to create a subtype or subtable, and the user has not been
granted the UNDER privilege on that type or table.

To create a named row type under an existing named row type or to create
a table under an existing table, you must be the owner of the supertype
or supertable or you must have been granted the UNDER privilege on that
supertype or supertable. For example, the following sequence of statements
allows a user named user2 to create a named row type and table under the
row type and table that user1 created.

   -- As user named user1
   CREATE ROW TYPE super_rt (int_col INT);
   GRANT USAGE ON TYPE super_rt TO user2;
   GRANT UNDER ON TYPE super_rt TO user2;

   CREATE TABLE super_table OF TYPE super_rt;
   GRANT UNDER ON super_table TO user2;

   -- As user named user2
   CREATE ROW TYPE sub_rt (float_col FLOAT) UNDER user1.super_rt;
   CREATE TABLE sub_table OF TYPE sub_rt UNDER user1.super_table;


-9654	The element types of the collection are not unique; explicit 
casting is required.

The element types of the complex type (row, set, multiset, or list) are
not unique and cannot be converted from one complex type to another
complex type by implicit casting. Use the explicit casting notation to 
explicitly cast the source complex type to the desired target complex type.


-9656	Cannot create a distinct type of type (serial or serial8 or bigserial).

The statement specified creation of a distinct data type as SERIAL or SERIAL8
or BIGSERIAL.  A SERIAL or SERIAL8 or BIGSERIAL data type cannot be a 
distinct type.

Remove DISTINCT from the statement or specify a different data type.

-9657	Cannot determine the data type of a collection in the given expression.

The data type of a collection used in the provided expression cannot be
determined until run time. Casting the collection to a specific data
type usually solves this problem.


-9700	Routine (routine_name) ambiguous - more than one routine
resolves to given signature.

This problem happens when an argument (or its source type or parent
type) has implicit casts to the parameters of two or more routines.

For example, assume two routines exist called routine_name(paramtype1)
and routine_name(paramtype2), and routine_name is invoked with
routine_name(argtype). Also, implicit casts exist from argtype to
paramtype1 and argtype to paramtype2. In this case, this error is
raised.

The error is also raised, if instead of argtype, argtype_dad which is
in the source type hierarchy of argtype (if argtype is a distinct type)
or in the super type hierarchy of argtype (if argtype is a row type)
has casts to paramtype1 and paramtype2.

You will need to redefine the implicit casting scheme, such that only
one casts exists from argtype to either paramtype1 or paramtype2 or
remove one of the routines.


-9701	An EXTERNAL PROCEDURE cannot have RETURN clause.

Do not specify the returns/returning clause to a PROCEDURE that is an
external procedure. You can specify this clause for a SPL procedure,
but specifying a RETURN clause to a procedure is highly discouraged.


-9702	When a FUNCTION is created, the RETURN clause must be specified.

All functions must return a value. Specify a return clause or use a
CREATE PROCEDURE statement.


-9703	Modifiers VARIANT and NOT VARIANT cannot be used in the same routine.

Either VARIANT or NOT VARIANT can be specified either as a modifier or
as a clause after the LANGUAGE clause. If both are specified, they must
both be specified as VARIANT or as NOT VARIANT. Either make them
consistent or remove one of the references as a modifier or as a clause
after the LANGUAGE clause.


-9704	For SPL routine, parameter must be named.

The name of the parameter in a CREATE FUNCTION or CREATE PROCEDURE
statement is optional only for external routines. Specify the parameter
name.


-9705	The modifier (modifier-name) is not valid for SPL routines.

This message displays a modifier that you cannot specify for an SPL
routine. The following modifiers are invalid for SPL routines: CLASS, CLIENT, HANDLESNULLS, INTERNAL, ITERATOR, PARALLELIZABLE, PERCALL_COST, SELFUNC, and STACK. Other modifiers might also be invalid.


-9706	END PROCEDURE/FUNCTION does not match with CREATE PROCEDURE/FUNCTION.

If you are using a CREATE PROCEDURE statement, the end clause must
contain END PROCEDURE. If you are using a CREATE FUNCTION statement,
the end clause must contain END FUNCTION. Do not mix and match
PROCEDURE and FUNCTION keywords.


-9707	Modifiers COMMUTATOR and NEGATOR are not allowed in procedure.

Because procedures do not return values, these modifiers are not
allowed in a CREATE PROCEDURE statement. Use a CREATE FUNCTION
statement or do not specify these modifiers.


-9708	SELFUNC modifier can only be used in EXTERNAL FUNCTION.

Do not specify SELFUNC modifier to a SPL routine or an external
procedure.


-9709	More than one distinct type of the parameter type have cast to argument
type.

This situation occurs if more than one distinct type of the source type
of the parameter has casts from the argument type. For example, assume
the routine routine_name(paramtype) exists. Both paramdist1 and
paramdist2 are distinct types of paramdist1. The routine is invoked as
routine_name(argtype). Casts also exist from argtype to paramdist1 and
argtype to paramdist2. Because distinct types inherit all the routines
defined on the source types, paramdist2 and paramdist1 inherit the
routine routine_name. Thus the routine resolution cannot resolve the
routine, and this error results.


-9710	Overloading of built-in functions is not allowed.

Built-in functions such as dbinfo and trim should not be overloaded.
Change the name of the routine that you are creating so that it does
not conflict with the names already used in the database server.


-9711	Late bound functions cannot have different number of return values

Due to late binding, the function that is executed could change in the
middle of query execution. This error is called if the number of values
returned by the new function is not the same as the previous function.
All functions with the same name defined over a type hierarchy should
have the same number of return values.


-9712	Late bound functions cannot have different return types.

Due to late binding, the function that is executed could change in the
middle of query execution. This error results if the type of values
returned by the new function is not the same as the previous function.
All functions with the same name defined over a type hierarchy should
have the same type of return values.


-9713	Identifier too long - maximum allowed length for this identifier is 128.

The specific name specified in the CREATE PROCEDURE or CREATE FUNCTION
statement is longer than 128 bytes. Shorten the name.


-9714	OUT parameter can only be the last parameter of a routine.

When an OUT parameter is specified in the CREATE FUNCTION statement, it
must be the last parameter and the only parameter with the OUT option.


-9715	A procedure cannot have any OUT parameters.

A CREATE PROCEDURE function cannot have OUT parameters. Only a CREATE
FUNCTION statement can have OUT parameters in the parameter. The
parameter specified as OUT should be the only and last parameter.


-9716	This routine routine_name has the same specific name as another routine.

A specific name is unique within a name space. In a non-ANSI database,
it is unique within a database. In an ANSI database, it is unique
within the user's schema. Change the name to a unique name.


-9717	Owner name specified in the routine name and specific name must be the
same.

If the specific name is qualified with the owner name, the owner name
specified should be the same as the owner name used in qualifying the
routine being created. If the routine name is not qualified, it should
be the same as the current user.


-9718	Owner name specified in the specific name must be the current user.

If the specific name is qualified with the owner name, the owner name
specified should be the same as the owner name used in qualifying the
routine being created. If the routine name is not qualified, it should
be the same as the current user.


-9719	A routine and an aggregate cannot share the same name.

An attempt to create a routine (UDR) with the same name as an aggregate
is illegal. Also, creating an aggregate with the same name as a routine
is also invalid. A routine name may not also match a built-in aggregate
name, like sum(), count(), or max().

Change the aggregate or the routine name that is causing the failure.


-9720	Module name or language name specified is not valid.

The module name or language name that you specified in the
ifx_replace_module() or ifx_unload_module() function call is not 
valid. The only valid language name for these functions is C. 

Check the module names for correctness. Check if module path is
included in the values for the DB_LIBRARY_PATH configuration parameter.
Replace the module name or language name, or update the value of 
DB_LIBRARY_PATH, and execute the function again.


-9721	Module name could not be unloaded while in use.

You can use the ifx_unload_module() function only to unload an 
unused shared-object file; that is, when no executing SQL statements 
(in any database) are using any user-defined routines in the specified 
shared-object file.

Wait until all active SQL statements complete before trying to unload
the shared-object file.


-9722	Specify a non-zero SQL error number in the RAISE EXCEPTION statement.

You must provide a non-zero value for the SQL error number parameter in the
RAISE EXCEPTION statement. To display your customized error string,
specify -746 as the value of the SQL error.


-9740	Execution of remote routine (routine_name) with non-built-in types is
not allowed.

When you invoke a remote routine you cannot pass complex data types or 
unsupported user-defined opaque types as routine arguments or return types. 
Cast the unsupported data types to supported data types or create the 
routine in the local database.


-9741	Internal error - attempt to pass arguments in C style while requiring
argument casts.

An internal programming error occurred. If this error recurs,
note all circumstances and contact IBM Technical Support.


-9743	Internal error - unable to determine all routines in statement.

A SQL statement that passed host variables into routines still had
unknown routine argument types after host variable binding. Rerun the
query without passing host variables to any routine or rerun the query
and pass the correct number of host variables.


-9744	BUILTIN routine routine_name definition does not match internal
operator.

This entry from SYSPROCEDURES with language BUILTIN does not match the
internal format of the operator that is being overloaded. If this error
recurs, note all circumstances and contact IBM Technical Support.


-9748	Cannot convert argument types when passing arguments by name, routine
routine_name.

At least one argument requires a cast before it can be passed into the
routine. Casts are not supported when passing arguments by name. Use
explicit casts from the argument to the parameter type.


-9750	Routine routine_name determined during PREPARE and BIND/EXECUTE return
different types.

If host variables are used in the statement that is being prepared, in
the absence of argument types information, the server tries to resolve
to a routine that is most likely the routine to which the user intended
to resolve. However, during BIND/EXECUTE time, in the presence of
argument type information, the routine specified in the statement might
resolve to a different routine. In that case, if the return types of
the routine that the server originally selected are different than the
one later resolved, this error is raised.

-9751	Cannot prepare the statement because the return type of the routine 
routine_name is not known.

The database server could not prepare the statement because a host variable 
was specified without a data type in a routine acting on a collection-derived 
table.  
You must cast the host variable to a data type that the routine takes as an 
argument. 

For example, the following statement fails to prepare because the argument type 
of the ST_IsValid routine is not specified: 
SELECT * FROM table(function ST_IsValid(?));

The following statement prepares successfully because the host variable 
is cast to a valid data type for the ST_IsValid routine: 
SELECT * FROM table(function ST_IsValid(?::st_multipolygon));

-9752	Argument must be a Statement Local Variable or SPL variable or argument for an OUT or INOUT parameter.

UDRs with OUT/INOUT parameters cannot be used in the WHERE clause of a 
SELECT statement unless the OUT/INOUT parameters are defined as Statement 
Local Variables (SLV). For example

	SELECT *
	FROM mytable
        WHERE foo (arg1, arg2, inout1, inout2, ...., inoutn) ;
 
is not a valid syntax assuming that foo is a UDR which has OUT/INOUT
parameters denoted by inout1...inoutn above. To use UDR foo in the WHERE
clause the above example must be modified to

             SELECT myslv1 , ..., myslvN, *
             FROM   mytable
             WHERE  foo (arg1, arg2, myslv1 # svlDataType1, 
                              ..., myslvN # svlDataTypeN);

myslv1, ..., myslvN are the SLVs defined for the OUT/INOUT parameters 
with return datatype svlDataType1, ..., svlDataTypeN respectively. 
Please note that it is optional to use the SLVs in the projection 
list for the SELECT statement.


You can invoke an SPL routine or a C UDR with OUT or INOUT parameters 
within a routine written in SPL. The parameter you pass into the OUT or 
INOUT parameter must be either an SPL variable or a parameter from another 
SPL routine, and the parameter cannot be passed as any form of expression.

Example:
create procedure p1(inout in1 integer);
  define a int;
  let a = in1;
  let in1 = a + 1;
end procedure;

create function f1(in1 integer) returning integer;
  call p1(in1);
  return in1;
end function;


-9753	Unable to find User Defined Routine with the given id.

The user defined routine with the specified ID cannot be found.

CAUSE
The user defined routine ID is incorrect or has been changed.

ACTION
Correct the ID in the prepared statement and then reprepare and execute the
statement.

-9754	No usage privilege.

The user does not have usage privilege on create functions or the user does
not have grant/revoke usage privilege on a language. This error is returned
when the user does not have the privilege to create a user-defined routine.

Ask user informix or a user with GRANT option privilege on the language to
grant usage permission to you.


-9757	Remote iterator function is not supported in this context.

Remote iterator function used in the context of a table reference is not
currently supported. Only local server iterator functions can be used.

For example, this is not supported:
select * from table (function remote_db@remote_server:tv1());


-9780	Statement-local variable cannot be an argument to a function called
from outside the WHERE clause.

A user-defined routine (UDR) invocation that accepts a Statement
Local Variable as an argument can be performed only in a WHERE clause
of a Data Manipulation Language statement. This error results if this
rule is violated. Move the UDR invocation inside a WHERE clause.


-9781	SLV cannot be an argument to a function invoked explicitly by EXECUTE
or CALL.

A routine that has an OUT parameter can only be invoked as part of a
data-management language query (only in the WHERE clause). Do not
invoke such a routine with a CALL or EXECUTE statement.


-9782	Statement Local Variable has already been defined.

The same statement-local variable (SLV) is used for different OUT and INOUT 
parameters in a query. Ensure that the SLV is unique within a query.


-9784	SLV (my_slv) has no producer-UDR; or is outside the scope of the
producer-UDR.

A statement-local variable (SLV) is out of scope. For example, given a UNION,
INTERSECT, or MINUS of two SELECT statements, one SELECT statement declares 
an SLV and the other SELECT statement references the SLV.


-9785	SLV (my_slv) cannot be accessed before it is produced by a UDR

You cannot access the SLV until it is generated in the UDR. The following statement will produce the error:

SELECT slv_var FROM my_table WHERE foo_slv(slv_var # int) 
	OR my_table.column IN (100,200,300);

If the IN clause of the OR condition in the WHERE clause is evaluated before the UDR foo_slv is called,
then slv_var is not initialized. 

-9786	Only iterative UDR allowed in this context.

The function used in the FROM clause of a select statement should be an iterative UDR.
The iterative UDRs written in SPL should have 'return with resume' clause. 

For example,
create procedure ret_x1() returning dint;
define r1 dint;
    foreach select a into r1 from x1
        return r1 with resume;
    end foreach;
end procedure;


The iterative UDRs written in C or Java should be create with 'with (iterator)' modifier
in the CREATE FUNCTION statement and should handle the different states of iteration.

create function fibgen(arg integer) returning integer
with ( iterator)
external name "$userfuncdir/fib.udr(fibGen)"
language c;


-9790	Language Manager initialization failed.

This error can occur in the following scenarios:

1.  The database server could not load internal C language or
    initialize data areas during server initialization.

    The following error message appears in the log:

    Language Manager initialization failed.

2.  An internal Language Manager error occurs during UDR loading 
    or execution, causing a failure such as memory allocation 
    or locking.

    The following error messages appears in the log:

    ERROR: Loading Routine routine_name procid = process_ID_number file:
    sqlmload.c

    ERROR: Unloading Routine routine_name procid = process_ID_number file:
    sqlmunld.c

    ERROR: Routine execution problem -- procname= procedure_name procid =
    process_ID_number file: sqlmexec.c


-9791	User-defined routine execution failed.

This error occurs under the following circumstances:

1.  A language problem occurred or an internal server error
    exists. In this case, the following log message is entered 
    in the log:

    ERROR: Routine execution failed -- procname = routine_name procid =
    process_ID_number

2.  The executing routine has caused one of the following
    exceptions:

       mem -- memory fault

       ill -- illegal instruction

       fpt -- floating point or divide by zero

       sys -- system call problem

       "xxx" -- SAPI layer exception explanation

    The following error message appears in the log:

    ERROR: Routine execution trap -- procname = procedure_name procid =
    process_ID_number reason: error_string


-9792	User-defined-routine language initialization failed.

A module failed to load, or an internal language error occurred. The
following error message appears in the log:

ERROR: Initializing Language language_name Module module_name


-9793	User Defined Routine (<routine-name>) module load failed.

The following error message appears in the log:

    ERROR: Loading Module <module-name>

A bad external name, missing file, or wrong permissions might cause this
error. Log message <log-message-number> contains the UNIX error number
encountered and the actual module name being used. For the C language on
UNIX, the following log message might appear:

    <error-number>: C Language Module <module-name> can't load <error-string>

In the log message, <error-number> is the current UNIX error number,
<module-name> is the module name from the catalog, and <error-string> is the
dlerror() explanation.


-9794	User-defined-routine load failed.

The following error message appears in the log:

Loading Routine routine_name procid = process_ID_number

The routine routine_name is not found in the module, possibly because
of a bad external name or the wrong module. The log message
log_message_number is probably -1, and error_message_string is the
database routine name as opposed to the symbol that was not found.


-9795	User-defined-routine unload failed.

The following error message appears in the log:

ERROR: Unloading Routine error_name procid = process_ID_number


-9796	User-defined routine module unload failed.

An internal system error occurred from a call to dlclose for Solaris C
modules. The following error message appears in the log:

ERROR: Unloading Module error_string


-9797	User-defined routine language shutdown failed.

The language did not shut down correctly. Probably an internal system
error occurred. The following error message appears in the log:

ERROR: error_string Language Shutdown


-9798	User-defined routine language lookup failed.

Language information is not defined in the system. Either the routine
definition is wrong, or something happened to the data dictionary. The
following error message appears in the log:

ERROR: Language error_string -- lookup failed


-9799	User-defined routine vitual-processor context-switch failed.

The database server could not switch to or back from the needed VP
during load, unload, or execution. The VP class could be wrong in the
routine definition, or the VPCLASS parameter could be missing from the
onconfig file. The following error messages appear in the log:

   ERROR: Routine execution VP switch failed -- new VP error_string

   ERROR: Routine execution VP switch failed -- old VP id = VP_ID

Make sure the VP class is correct in the routine definition. Also,
check the ONCONFIG file to make sure that it includes a VPCLASS
parameter for this type of virtual processor and that the setting
of the JVPCLASSPATH parameter is correct.


-9800	Table table_name is typed.

You cannot add a type to a table that is already typed. Drop the table
type and try adding the type again.


-9801	Cannot alter table table_name to add type.  Incompatible.

The column names and the column types of the table do not match the
field names and the field types of the type. Change them to
statements.


-9802	Cannot alter typed table <table_name>.

The only valid ALTER TABLE statement for a typed table is one that drops
the table type.

If you need to use any other ALTER TABLE statement on the table, first
drop the table type.


-9803	Cannot create typed view <view-name>. Incompatible.

Either you attempted to use a BYTE or TEXT field in a typed view or the
column names and the column types of the view do not match the field names
and the field types of the type.

Remove any BYTE or TEXT fields or change the field types to match those of
the underlying columns.


-9804	Cannot generate ROWIDS on typed table <table_name>.

Cannot have a ROWIDS column in a typed table. Either untype the table
with ALTER TABLE or do not create a ROWID column.


-9805	SERIAL/SERIAL8/BIGSERIAL data types allowed only as table column types.

You cannot have SERIAL/SERIAL8/BIGSERIAL data types in CREATE ROW statements.
They are allowed only as table-column types.


-9806	Cannot have duplicate/null field names in unnamed row types.

The CREATE ROW TYPE statement has duplicate field names or is missing one or
more field names.

Specify a unique name for each field in the CREATE ROW TYPE statement.


-9807	Temporary table <temptable_name> cannot be created with a type.

You cannot create temporary tables with types; typed tables are only
for permanent tables. Instead, try using the following example to
create a temporary table:

Instead of:
   CREATE ROW TYPE rowtypename (columnname int);
   CREATE TEMP TABLE tablename OF TYPE rowtypename;
use:
   CREATE TEMP TABLE tablename (columnname int);


-9808	The subtable type must be a subtype of the supertable type.

When creating a table hierarchy of supertable and subtable, the subtype for 
that subtable must also be a subtype of the supertable type (supertype). There
must be a type hierarchy defined before the corresponding table hierarchy can 
be defined.


-9809	Cannot specify blobspace names on TEXT or BYTE field types.

When specifying TEXT or BYTE fields in a complex type, do not specify the name
of the blobspace for that data type. The server uses the default partition 
blobspace for that TEXT or BYTE data type.


-9810	Smart-large-object error.

An error occurred during the processing of a smart large object.

For more information, check the accompanying, detailed smart-large-object
error code.


-9811	Invalid smart-large-object fd (<lo_fd>).

An attempt was made to access a smart large object using an
invalid LO file descriptor. Check that the LO file descriptor you
supplied is correct and that the smart large object is still open.


-9812	Cannot do implicit begin work.

Internal error. This error can be caused by many different situations, 
If the error reoccurs, note all circumstances and contact IBM Support. 
 
Informix Dynamic Server implicitly begins transactions for executing SQL 
statements. Sometimes, Informix Dynamic Server implicitly uses a separate 
transaction while recompiling statements within a procedure written in the 
Stored Procedure Language to write the new plan to the catalog. In that case, 
a failure to begin work results in the failure to execute the procedure.  


-9813	Cannot do implicit commit work.

Internal error. This error can be caused by many different situations, 
If the error reoccurs, note all circumstances and contact IBM Support. 
 
Informix Dynamic Server implicitly commits transactions for executing SQL 
statements. Sometimes, Informix Dynamic Server implicitly uses a separate 
transaction while recompiling statements within a procedure written in the 
Stored Procedure Language to write the new plan to the catalog. In that case, 
a failure to commit work results in the failure to execute the procedure.  


-9814	Invalid default sbspace name (sbspace_name)).

The database server is trying to create a smart large object in the
default sbspace, but the sbspace does not exist. Check that the
SBSPACENAME parameter in the ONCONFIG file is the name of an existing
sbspace. If necessary, the database server administrator can create an
sbspace using the onspaces command.


-9815	Invalid filename specification (file_spec).

You are calling a function that creates an operating-system
file, but the filename specification supplied is not valid.


-9816	Btree index not allowed on a column of this datatype.

You have attempted to use a B-tree index on a column that contains one
of the following datatypes: blob, clob, json, bson. Remove the statement
that attempts to create an index on one of these data types from your program.


-9818	Error detected in sql smart-large-object hash table.

Internal error. Contact IBM Technical Support.


-9819	Column (column_name) incorrect type for storage in sbspace.

You have attempted to store a column in an sbspace that is not an
appropriate type. Only CLOB and BLOB columns can be stored in sbspaces.
Columns of types TEXT and BYTE may not be stored in an sbspace.


-9820	SQL SBLOB error: no such sbspace.

The most likely problem is that an operation specifies an sbspace
by name (for example, in the PUT clause of a CREATE TABLE statement),
but that sbspace has not been created.

You can run the onstat utility with the -d option to see the names
of sbspaces created. Ask the database server administrator
about creating a new sbspace.


-9823	Inconsistent use of procedure named return parameters.

A procedure has duplicate return parameter names or only a partial list of return parameter names.

Example of error:

RETURNING INT AS customer, INT AS customer; -- error
RETURNING INT AS customer, INT; -- error


-9824	Cannot perform more than one online create/drop index operation on 
table.


-9825	Online create/drop index not allowed on VII indexes.


-9826	Cannot perform online create/drop index operation along with storage optimization operation.

-9827	The sbspace specified by the SYSSBSPACENAME configuration parameter does not exist (syssbspace_name).

The database server failed to create a smart large object in the
sbspace that is specified by the SYSSBSPACENAME configuration parameter
because the sbspace does not exist. Check that the value of the
SYSSBSPACENAME configuration parameter in the onconfig file is the
name of an existing sbspace. If necessary, the database server
administrator can create an sbspace using the onspaces command and
update the value of the SYSSBSPACENAME configuration parameter
in the onconfig file.

The UPDATE STATISTICS operation might require an existing sbspace,
which is specified by the SYSSBSPACENAME configuration parameter.

-9831	Could not find opclass id opclass_ID while resolving compare routine
for index.

The operator class for one or more key parts of the index no longer
exists in the database. The index is no longer valid and must be
dropped.


-9832	Could not find routine routine_name while resolving compare routine.

Either the comparison routine for one or more key parts of the index no
longer exists in the database, or the comparison routine required to
perform a sort cannot be found. You need to re-create the compare
routine. If an index is involved, the index needs to be dropped.


-9833	Could not find extended type type_ID for index.

The type of one or more key parts of the index no longer exists in the
database. The index is no longer valid and must be dropped.


-9835	Could not find routine ID routine_ID for functional key.

The routine identified by the routine ID for one or more functional key
parts no longer exists in the database. The index is no longer valid
and must be dropped.


-9836	Could not initialize sequence for routine <routine-name>.

A user-defined routine is missing a statcollect() or compare() function.

Add the missing function to the user-defined routine.


-9838	Cannot create operator class for a primary access method.

You cannot create an operator class for a primary access method. For a
list of available secondary access methods, you can perform the
following query.

SELECT * FROM INFORMIX.SYSAMS WHERE AM_TYPE = 'S';


-9839	Cannot mix generic and specific operators in an operator class.

If you specify the full function signature for one of the strategy
functions in the operator class, you need to specify the function
signatures for all of the strategy functions.


-9840	Invalid number of strategies or support function for btree.

You must specify no more than five operators (operators implementing
lessthan, lessthanorequal, equal, greaterthanorequal, and greaterthan)
and exactly one support function (the comparison function) in CREATE
OPCLASS for the btree access method.


-9841	Operator class for key part not specified or invalid.

The operator class specified in one or more of the key parts is 
invalid. Probable causes for this error include:

*   You might be using an operator class for a different access method
    than the one with which you are creating the index.

*   If the access method that you use does not have a default
    operator class associated with it, you must explicitly specify the
    operator class for each key part.

*   Data type of the key column and that of the operator class do not 
    match, where strategy function signatures are specified for the operator 
    class.


-9842	Specification of ASC/DESC only applicable to btree.

You cannot specify ASC or DESC in the key part if you are using an
access method other than btree.


-9843	Invalid number of arguments for functional key.

A functional key part can only take between 1 and 16 arguments.


-9844	Invalid function function_name used in a functional key.

The function used in a CREATE INDEX statement cannot be used as a
functional key part. Make sure that the function you use is not a
variant function.


-9845	Access method access_method_name does not exist in database.

The access method used in a CREATE INDEX or CREATE OPCLASS statement
does not exist. Before you can use an access method, you must create it
with a CREATE ACCESS_METHOD statement. For a list of available access
methods, see informix.sysams.


-9846	Operator class operator_class_name does not exist in database.

The operator class used in a CREATE INDEX statement does not exist.
Before you can use an operator class, you must create it with a CREATE
OPCLASS statement. See informix.sysopclasses for a list of available
operator classes.


-9848	Functional key part cannot use a variant function function_name.

The function used in a CREATE INDEX statement for a functional key part
must be a nonvariant function (that is, it must be created with the NOT
VARIANT modifier in the CREATE FUNCTION statement).


-9849	Compare routine routine_name cannot be in SPL

The compare routine used for a generic B-tree cannot be written in SPL.
You should rewrite the compare routine in C.


-9851	Access method access_method_name already exists in database.

The access method that you are creating with a CREATE ACCESS_METHOD
statement already exists. You must use a new name.


-9852	Improper purpose purpose_name used for access method.

A purpose used with the CREATE ACCESS_METHOD or ALTER ACCESS_METHOD
statement is improper. It might be spelled incorrectly. Otherwise, it
is used incorrectly in combination with the other purposes, or it is a
purpose that is not appropriate for the type of access method. For
example, an access method cannot be created with AM_DELETE if AM_ROWIDS
is not used, and AM_GETBYID cannot be used for a secondary access
method. Correct the spelling of the purpose or change one or more of
the purposes until the combination of purposes is valid.


-9853	Duplicate purpose purpose_name used for access method.

A purpose used with the CREATE ACCESS_METHOD or ALTER ACCESS_METHOD
statement has been used more than once. Change the purposes used until
no duplicates exist.


-9854	Required purpose purpose_name not used for access method.

A required purpose has not been used with the CREATE ACCESS_METHOD
statement, or a required or default purpose has been removed with the
ALTER ACCESS_METHOD statement. For example, AM_SCANCOST has a default
value if not used with the CREATE ACCESS_METHOD statement, but it
cannot be dropped with the ALTER ACCESS_METHOD statement. Change the
purposes used until the required purposes are included or preserved.


-9855	Improper value used for purpose purpose_name for access method.

A purpose has been used with an improper value in a CREATE
ACCESS_METHOD or ALTER ACCESS_METHOD statement. For example, an integer
cannot be used for AM_SPTYPE. Use the proper type of value for the
purpose.


-9856	Index not created because the table's access method doesn't
support rowids.

A CREATE INDEX statement was used on a table whose access method
does not support rowids. Because rows from the table are fetched by the
index by rowid, the index cannot be created.


-9857	Unknown space space_name used for external table/index.

A CREATE TABLE or CREATE INDEX statement has an IN clause that
references an extspace that does not exist. Use an existing extspace.


-9858	Unsupported option option_name used for an external table/index.

An ALTER TABLE or ALTER INDEX statement has an option that is not
supported by the access method. Remove the option.


-9859	Index not created because its access method does not support
unique keys.

A CREATE UNIQUE INDEX statement or CREATE DISTINCT INDEX statement used an
access method that does not support unique keys.

Remove UNIQUE from the CREATE INDEX statement or remove DISTINCT from the
CREATE INDEX statement.


-9860	Improper access method used.

A CREATE TABLE statement used a secondary access method or a CREATE
INDEX statement used a primary access method. Use a primary access
method with CREATE TABLE and a secondary access method with CREATE
INDEX.


-9861	Improper access method parameter information used for an external
table/index.

A CREATE TABLE or CREATE INDEX statement is using an access method with
parameter information that is improper. For example, the identifier
might be longer than 18 bytes, or the value might be longer than 236
bytes. Correct the parameter information.


-9862	Could not initialize or execute access method routine.

An access method routine failed to execute properly. The RSAM error
code gives more information.


-9863	Opclass opclass_name already exists in database.

The opclass being created with a CREATE OPCLASS statement already
exists. Use a new name.


-9864	Improper strategy definition.

A CREATE OPCLASS statement is using a strategy definition that is
improper. For example, a strategy might take at most three arguments.
Correct the strategy definition.


-9865	Improper support definition.

A CREATE OPCLASS statement is using a support definition that is
improper. For example, a support name can be at most 18 bytes. Correct
the support definition.


-9867	Access method access_method_name not found.

A DROP ACCESS_METHOD or ALTER ACCESS_METHOD statement uses an access
method that does not exist. Use the correct access method.


-9868	Not owner of access method.

The person executing a DROP ACCESS_METHOD or ALTER ACCESS_METHOD
statement is not the owner of the access method or does not have DBA
privileges.


-9869	Cannot drop access method access_method_name: still in use.

A DROP ACCESS_METHOD statement cannot be used if any tables or indexes
are defined using that access method. Drop the tables or indexes first
and then drop the access method.


-9870	Cannot alter access method access_method_name: still in use.

An ALTER ACCESS_METHOD statement cannot be used while anyone is using
the access method. Wait until no one is using the access method and try
again.


-9871	Alter fragment attach/detach for external table not supported.

The ALTER FRAGMENT statement cannot be used for a table or index that
uses an access method. Either create a new table with the desired
properties and copy the data from the old table to the new table or
create a new index with the desired properties.


-9872	Cannot drop operator class operator_class_name: still in use.

The operator class is being used in an existing index and therefore
cannot be dropped. Drop all the indexes that use the operator class
before you drop it.


-9873	Not owner of operator class.

You cannot drop an operator class unless you are the owner or the
database administrator. Contact the database administrator or the owner
of the operator class.

-9874	Cannot rename database if it has a virtual table or index.

You cannot rename a database if the database has any tables created using primary 
access method (also known as virtual table interface) or indices using 
secondary access method (also known as virtual index interface).  R-TREE indices
are implemented using secondary access method and therefore, databases with 
R-TREE indices cannot be renamed.


-9875	Bad internal structure for collection data: unknown flag
value.

The structure of collection or row data might be corrupted.

Report this situation to IBM Technical Support.


-9878	An implied insert column does not accept NULLs.

The statement attempted an implied insert of a null value into a column
that does not accept null values.

Rewrite the INSERT statement to provide a value for any column that
do not accept null values, or redefine the column to accept nulls.


-9880	Storage space <name> is incompatible with the access method.

The operation was unsuccessful because the specified storage space cannot be
used by the access method referenced in the SQL statement.

Change the statement to specify a storage space that is of a type that the
access method supports. To find out whether the access method supports an
extspace (external storage) or sbspace (smart-large-object storage), query
the sysams system catalog table for access method name that you specify in
the CREATE TABLE statement USING clause. Refer to the am_sptype value for
that access method. The following values indicate the type of storage space
that you can use with the access method:

    *   'X' indicates that the access method supports only extspaces
    *   'S' indicates that the access method supports only sbspaces
    *   'A' indicates that the access method supports both extspaces and
        sbspaces

Important: You cannot use a dbspace (Dynamic Server table space storage)
with a user-defined access method. A user-defined access method is one.

For more information about the type of storage spaces that the access method
supports, refer to the access-method user guide.


-9882	Access method AM_SPTYPE purpose value <space-types> is invalid.

The operation failed because the access method specified in the SQL
statement has an invalid value, <space-types>, for its AM_SPTYPE purpose
value.

Because processing for the CREATE PRIMARY ACCESS_METHOD and CREATE SECONDARY
ACCESS_METHOD SQL statements validates the AM_SPTYPE value, this error
should only occur if the row associated with the access method in the sysams
system catalog table was explicitly updated after the access method was
created.

Ask the access-method provider or database administrator to change the
AM_SPTYPE value for the access method with the ALTER ACCESS_METHOD statement.


-9883	Could not determine the type of storage space <name>.

An error occurred while the database server was looking up the type
of the specified storage space (dbspace, sbspace, or extspace).
Usually this problem is related to accessing the sysmaster:sysextnames table.
For more information, refer to the accompanying ISAM error code.


-9884	No default storage space exists for the access method.

None of the storage-space types supported by the access method has a default
storage space.

To correct this error, you can take either of the following actions:

    *   In your SQL statement, explicitly specify the storage spaces for
        the access method to use.

    *   If the access method supports sbspaces, ask your database server
        administrator to create a sbspace with the onspaces utility and
        set the ONCONFIG parameter SBSPACENAME to that sbspace name.

    *   If the access method supports only extspaces, the access method
        software can create a default external storage space, such as a disk
        file.

To find out whether the access method supports an extspace (external
storage) or sbspace (smart-large-object storage), query the sysams system
catalog table for access method name that you specify in the CREATE TABLE
statement USING clause. Refer to the am_sptype value for that access method.
The following values indicate the type of storage space that you can use
with the access method:

    *   'X' indicates that the access method supports only extspaces
    *   'S' indicates that the access method supports only sbspaces
    *   'A' indicates that the access method supports both extspaces and
        sbspaces

For information about how to determine if a storage space is of a type that
an access method supports or how to determine the storage space type that an
access method supports, refer to the access-method user guide.


-9885	Variant user defined routine cannot be used in check constraint
or fragment expression.

You cannot use a variant user-defined routine (UDR) in a check constraint
or fragment expression.

Check your statement to make sure that no variant UDR is used in a check
constraint or fragment expression.


-9885	A check constraint or fragmentation expression cannot contain a 
variant user-defined routine.

A user-defined routine (UDR) in a check constraint or in a fragmentation
expression cannot be variant. That is, the UDR must not return different
results when passed the same arguments. Variant UDRs include routines that
process queries and functions that return random results.

Verify that your statement does not have a variant UDR in a check constraint
or in a fragmentation expression. If you want to alter a UDR that is
currently in a check constraint or in a fragmentation expression from
nonvariant to variant, you must drop its associated check constraints
or its table or index fragments.


-9886	A check constraint or fragmentation expression cannot contain a 
user-defined routine that generates an OUT parameter.

A check constraint or fragmentation expression cannot contain a 
user-defined function that generates an OUT parameter. That is, an OUT 
parameter cannot be passed back to a check constraint or a fragmentation 
expression from a user-defined function.

Verify that your statement does not use a user-defined function that 
generates an OUT parameter in a check constraint or in a fragmentation 
expression.


-9887	A check constraint or fragmentation expression cannot contain a 
cross-database or remote user-defined routine.

The check constraint or fragmentation expression contains a remote or 
cross-database user-defined routine (UDR).

Verify that a UDR in a check constraint or in a fragmentation expression is 
stored within the same database as the check constraint or the 
fragmentation expression.


-9889	Cannot drop the user-defined routine <routine_name> because a 
check constraint or a fragmentation expression currently uses this routine.

To identify the check constraint that uses the routine that you are trying 
to drop, run this query:

   SELECT constraint_id
       FROM syscheckudrdep x, sysprocedures y
       WHERE x.udr_id = y.procid AND
             y.procname = '<routine_name>';

To identify the table or index that has a fragmentation expression that 
uses the routine that you are trying to drop, run this query:

   SELECT tabid, idxname, owner
       FROM sysfragexpudrdep x, sysprocedures y
       WHERE x.udr_id = y.procid AND
             y.procname = '<routine_name>';


-9904	Invalid extended type text.

Could not determine the internal SQL data type. If this error recurs,
note all circumstances and contact IBM Technical Support.


-9905	No extended type information for domain.

Could not find the attribute information for a domain or type. If this
error recurs, note all circumstances and contact
IBM Technical Support.


-9906	Cannot modify column data type to collection type.

You cannot use an ALTER statement to change a column type to a
collection type.


-9907	Not allowed to modify collection type column.

You cannot use an ALTER statement to change a column type from a
collection type to another type.


-9908	Columns of a row type cannot contain fields of type TEXT, BYTE,
SERIAL, SERIAL8 or BIGSERIAL.

You created a table that has a column with a named row of type TEXT,
BYTE, SERIAL, SERIAL8 or BIGSERIAL. The following example should fail:

   create row type rtype (col1 byte);
   create table tab1 (c1 rtype);

Re-create the table with a different type of named row.


-9909	Nested row type not supported

You cannot nest row types.


-9910	Byte, Text, Serial or Serial8 or Bigserial data types in collection type not allowed.

The fields of a row within a collection and the elements of a
collection cannot be of type TEXT, BYTE, SERIAL, or SERIAL8 or BIGSERIAL.


-9911	Defaults on collection type column not allowed.

Default values are not supported in the definition a column of a
collection type. Remove the default value clause.


-9912	Constraints on collection type column not allowed.

Constraint expressions are not supported in the definition of a column
of a collection type. Remove the constraint clause.


-9919	Cast already exists in database.

Casts must be unique with regard to their source and destination types,
regardless of cast class. Use the DROP CAST statement to remove an
existing cast.


-9920	Cannot create a cast between identical types or between built-in types.

No cast is needed between identical types. Casts between built-in types
are handled by internal system casts and cannot be overloaded.


-9922	Cast does not exist in database.

The requested cast does not exist. Use the CREATE CAST statement to
define the cast.


-9923	Cannot create cast between incompatible types.

An attempt was made to define a no-function cast between types with
differing representations. Redefine the cast to use a function or
redefine the types so that they share the same representation.


-9926	The statement failed because row-type or collection columns were 
referenced in ORDER BY, DISTINCT, UNIQUE, INDEX, UNION, INTERSECT, 
or MINUS specifications, or in primary key, foreign key, or unique constraints.

Do not create or alter a table which makes columns of collection or row
types into primary key, foreign key, or unique constraints. Do not create an 
index or UNION, INTERSECT, or MINUS that involves collection or row type 
columns.  However, you can create a union that involves collection or row type 
columns if you use the UNION ALL operator instead of the UNION operator.


-9928	Must supply a cast function for cast between incompatible types.

An attempt was made to define a no-function cast between types with
differing representations.

Redefine the cast to use a function, or redefine the types so that they
share the same representation.


-9930	Byte, Text, Serial or Serial8 or Bigserial datatypes in collection types
not allowed.

You cannot use TEXT, BYTE, SERIAL, or SERIAL8 or BIGSERIAL data types in 
the fields of a row within a collection or the elements of a collection.

-9931	Byte and Text datatypes in row and collection types not
allowed.

You requested the construction of an object that contains a BYTE or
TEXT data type. This is only supported for column types of a table or
CREATE ROW TYPE statement. All other references to a named row type,
unnamed row type, or collection type cannot contain BYTE or TEXT
data types.

-9932	External Directives feature is currently disabled.

You issued a statement that is valid only when the feature
External Directives is enabled. Contact your DBA
if you need to enable it.

-9933	Invalid Directive specification for external directives.

The optimizer directives you specified are invalid.

-9934	Only DBA is authorized to do this operation.

Only users with DBA privileges can perform this operation.

-9935	External Directives already exist for the query.

There are external directives already saved for the specified query. 

Drop the existing external directives first, then the new 
external directives for the query can be saved in the database.

-9943	The collection format is out of date. Recreate the collection data.

Collection data from a 9.10 or earlier 9.x database server was not unloaded
and reloaded for migration to a version 9.11 or 9.12 database server.

If a table column has a collection data type, you must unload the collection
data before migrating to release 9.11 or 9.12, from a 9.10 or earlier
release, and then reload the data after the migration.


-9944	Cannot seek in non-scrollable collection.

You have opened a collection with the flag MI_COLL_NOSCROLL and later
attempted to seek within the collection. Open the collection without this
flag or do not attempt to seek within the collection. 


-9945	Cannot modify a read only collection

You have opened a collection with the flag MI_COLL_READONLY and then
attempted to modify the collection. Do not open the collection with this 
flag or do not modify the collection.


-9946	Cannot open subquery collection twice.

Subquery collections opened with the flags MI_COLL_READONLY and
MI_COLL_NOSCROLL cannot be opened again.


-9950	Field referencing is not possible for non-row type expressions.

Only expressions of the form column.field are only meaningful for objects
of type row.

Remove the .field part of your expression.


-9953	An aggregate function is not allowed in this context.

You cannot use an aggregate function expression as an argument to a 
function or procedure.

An aggregate function is valid only in these contexts:
  in the projection clause of the SELECT statement, 
  in the projection clause or in the WHERE clause of a subquery. 

An aggregate is not valid, however, in the WHERE clause of a subquery 
within a SELECT, DELETE, or UPDATE statement unless each of the following 
conditions is true:
  The aggregate is on a correlated column originating from a parent query.
  The WHERE clause appears in a subquery within a HAVING clause.

You can also include OLAP window aggregate functions in these clauses of 
the SELECT statement:
  The Select list of the Projection clause
  The ORDER BY clause of the SELECT statement 
  Subquery specifications in the Projection clause

To be valid, the OLAP window aggregate function expression must immediately
precede the OVER clause.

To avoid this error, do not call any aggregate function outside the SELECT 
statement and subquery contexts that are listed above as allowing aggregate
expressions.


-9960	Combination of table/index fragmentation not allowed.

If a table is fragmented by round-robin and its subtable specifies its
own fragmentation scheme, you cannot create an index on the supertable
without a fragmentation clause. Either create an index with an explicit
fragmentation clause or let the subtable inherit its fragmentation
scheme from the supertable.


-9965	The maximum number of allowable sbspaces maximum_number has been
exceeded.

The maximum number of 64 sbspaces per table has been exceeded, so your
operation failed. For more information on the number of sbspaces
associated with the table, run the following queries:

SELECT tabid FROM informix.systables
        WHERE tabname = `<user_table_name>';


SELECT count(*) FROM informix.syscolattribs
        WHERE tabid = <tabid_from_previous_query>;


-9967	Cannot find data type data_type_name.

The specified data type does not exist in the database. Check
sysxtdtypes to make sure that the data type exists before you use it.


-9969	Corrupted collection type information.

The type information for a collection is not consistent. 

If this error recurs, note all circumstances and contact
IBM Technical Support.


-9970	Cannot determine host variable type during bind.

An ambiguous bind message was received. The database server could not
infer the variable type from the context of the query. The host
variable type must be explicitly defined.


-9971	Cannot determine the return types of a query or return types
are inconsistent.

The database server cannot determine the data type for one or more of
the values that the query is to return.

Check the specification of the data type for each return value,
correct any errors in the specification, and retry the query.


-9973	Row buffer for collection of fixed size elements not of
correct size.

You attempted to insert a new or update an existing collection
element with a value that is not the same size as was declared in the
collection definition. This error occurs only when a collection contains
fixed-length elements.

Check to make certain that the value you are inserting matches the
collection declaration.


-9974	Cannot delete element from a ROW type.

You have attempted to delete a row from a host variable of type ROW.
Because a ROW host variable has only the single row as its contents,
deletion is not allowed. If you want to construct a row with NULL
values, use an UPDATE statement and set each field to a NULL value.
Otherwise, remove the request to execute the SQL DELETE for the row
host variable in your embedded language program.


-9975	Type of a table must be unique within a table hierarchy.

You cannot have siblings of the same type under the same parent. For
example, assume that you create the following row types:

create row type r1 (a int);

create row type r2 under r1;

Now you attempt to create a supertable and two subtables. The third
statement in the following set generates an error:

create table supertab of type r1;

create table subtab1 of type r2 under r1;

create table subtab2 of type r2 under r1;

The third CREATE TABLE statement generates an error because subtab1
and subtab2 would be siblings under supertab. Informix does not support
this table hierarchy in this release. The current version of the database
server restricts the table hierarchy to match the type hierarchy, and
no type can appear more than once within a single hierarchy of tables.


-9976	Manipulation of NULL collection disallowed.

You attempted an action on a NULL collection. Examine your embedded
language program to determine why you are attempting to operate on a
NULL collection.


-9977	Internal Error: hash value out of sync.

This message indicates an error internal to the support of the Informix
database server for collection data types. If this error recurs,
note all the circumstances and contact IBM Technical Support.


-9978	Insertion of NULLs into a collection disallowed.

The statement attempted to insert one or more NULL values into a collection.
The elements of a collection must always be non-null. The fields of a row
within a collection can be NULL, but the elements of the collection cannot
be NULL. This error can occur, however, if a collection subquery specifies
an ITEM select and one of the rows contains a NULL value.

The following example is valid for a collection defined with elements of
type row. However, insert into table(:coll_hv2) values (NULL) is not valid
for any collection.

    INSERT INTO TABLE(:coll_hv) VALUES (row(NULL, NULL));

Do not attempt to insert NULL values as elements of a collection.


-9979	Updating of a collection element to NULL is disallowed.

The elements of a collection cannot be NULL. Do not attempt to update
collection elements to NULL values. (See the corrective action for
error message -9978.)


-9980	LIST expected when inserting AT position.

You can use a positional insert statement only with collection of type
LIST. Remove the AT clause from your insert statement.


-9981	Delete disallowed on collection with other cursor references.

You attempted to delete a collection that is being referenced by more
than one cursor. Review your program, determine the relevant cursor to
keep, and remove the other cursor that is acting on the collection.


-9982	Update disallowed on collection with other cursor references.

You attempted to update a collection that is being referenced by more
than one cursor. Review your program, determine the relevant cursor to
keep, and remove the other cursor that is acting on the collection.


-9983	Deleting a nonexisting element.

You positioned your cursor to an element of a collection that no longer
exists and then requested that the element be updated or deleted. This
problem occurs if you use a FETCH statement to position your cursor
past the last record and then attempt an update or delete. An error
results because you are not pointing to a valid record. Make sure your
embedded language program is checking the SQLCODE value returned after
a FETCH to determine that there are no more rows.


-9984	Cannot free a collection with other cursor references.

You attempted to free a collection reference while a cursor is still
opened on the collection. Review your embedded language program to
determine why you are prematurely freeing the collection reference
before you close the cursor.


-9985	Internal Error: invalid change log.

This message indicates an error internal to the support of IBM Informix
database server for collection data types. If this error recurs,
note all the circumstances and contact IBM Technical Support.


-9986	Internal Error: corrupted collection.

This message indicates an error internal to the support of IBM Informix
database server for collection data types. If this error recurs,
note all the circumstances and contact IBM Technical Support.


-9987	Cursor already registered.

You are attempting to open a cursor that is already open. Review your
embedded language program to determine why you are re-opening the
cursor before you close it.


-9988	Cannot flatten a collection with other cursor references.

You attempted to store a collection host variable into a table column,
or row field, but cursors are still open on the collection. You must
close the other cursors before you attempt this operation.


-9989	Incorrect number of fields in the ROW type.

You attempted to store a row with incorrect field types into a
collection. Verify that the row fields match those of the collection.


-9990	Cannot drop named row type <row_type_name>: still in use.

The row type that you are attempting to drop is being referenced by
another type or table, or the row type is used in an SPL routine.

For example:

   CREATE ROW TYPE MyType ...;
   CREATE FUNCTION f(param1 MyType) RETURNS INTEGER;
   ...
   END FUNCTION;
   DROP ROW TYPE MyType;   -- Gets error -9990

Before you drop the row type, first drop any type or table that refers
to the row type and drop any SPL routine that uses it.


-9991	Named row type row_type_name already exists in database.

You are trying to create a named row type whose name is already used.
Use another name or drop the row type to reuse its name.


-9992	Named row type row_type_name not found.

The named row type specified does not exist in the database. Verify its
existence by selecting from sysxtdtypes.


-9993	Not owner of named row type.

You cannot drop the named row type unless you are the owner or have the
DBA privilege. Verify the owner of the named row type by selecting from
sysxtdtypes.


-9994	Cannot use ONLY(TABLE(str)) over collections.

The ONLY syntax is not legal over TABLE expressions over collections.
Use ONLY on supertables; that is, parents in an inheritance chain.


-9995	Table table_name is not typed.

Cannot alter a table to drop its type if the table is not typed. Make
sure you are referring to the correct table.


-9996	Distinct type (<type-name>) already exists in database.

Distinct types must be unique within the schema (ANSI mode) or database.

Redefine the type with a new name or remove the existing name before
attempting to create your version.


-9997	No usage privilege on data type (<type-name>).

You do not hold the privilege to use this data type, which is a
DISTINCT data type that is based on a built-in data type. The
creator of this user-defined data type or a DBA must explicitly
grant you the Usage privilege on this data type.

You should ask a DBA or the owner of the cast to grant you
the Usage privilege on the cast.


-9998	No privilege to drop a cast of this DISTINCT data type.

You do not have the privilege to drop a cast of this DISTINCT type. By
default, after a DISTINCT type is defined, only the owner of the
DISTINCT type or a DBA can drop a cast for it. The owner of the
DISTINCT type, however, can grant to other users, to PUBLIC, or to
roles the Usage privilege on the DISTINCT type.

You should ask the DBA or the owner of the cast to drop the cast, or else
to grant you the Usage privilege on the cast so that you can drop it.


-9999	Routine collcompare() is not supported.

This routine always returns -1 and an error. The semantics of
the comparison are not defined.


-10000	Argument must be a variable to be an OUT or INOUT parameter.

The corresponding arguments to UDRs with OUT or INOUT parameters must be
specified as variables when the routine is called from a client such as
DRDA. Constants cannot be used as an argument for an OUT or INOUT parameter
in such cases.


-11000	Success.

This IBM Informix CLI error code is the same as SQLSTATE value 00000. The
following functions can return this error code: all IBM Informix CLI functions.

The function completed successfully.


-11001	General warning.

This IBM Informix CLI error code is the same as SQLSTATE value 01000. The
following functions can return this error code: all IBM Informix CLI functions
except SQLAllocEnv() and SQLError().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. For more
information, call SQLError().


-11001	General warning.

This CLI warning can be returned with any CLI function except
SQLAllocEnv and SQLError when a nonspecific warning occurs. Additional
text is appended to describe the specified warning in more detail. For
detailed information associated with the appended text, check the
IBM Informix CLI Programmer's Manual.


-11002	Disconnect error.

This IBM Informix CLI error code is the same as SQLSTATE value 01002. The
following function can return this error code: SQLDisconnect().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. For more
information, call SQLError().


-11003	Data truncated.

This CLI message is issued when the data that a CLI function returns
exceeds the defined buffer size. Increase the size of the allocated
buffer.

This IBM Informix CLI error code is the same as SQLSTATE value 01004. The
following functions can return this error code: SQLBrowseConnect(),
SQLColAttributes(), SQLDataSources(), SQLDescribeCol(), SQLDriverConnect(),
SQLDrivers(), SQLExecDirect(), SQLExecute(), SQLExtendedFetch(), SQLFetch(),
SQLGetCursorName(), SQLGetData(), SQLGetInfo(), SQLNativeSql(), and
SQLPutData().

For SQLExecDirect(), SQLExecute(), or SQLPutData(), one of the following
problems occurred for the SQL statement, the prepared statement, or the data
sent: (1) The statement or data contained a binary or character parameter
or literal that exceeded the maximum length of the associated column, or
(2) The function truncated the fractional part of a numeric parameter or
literal in the statement or data, or (3) The function truncated part of a
date or time parameter or literal in the statement or data. Change the data
or the parameters and literals in the statement so that they do not exceed
the maximum length of the associated column, and set the data types for the
parameters and literals so that they can accommodate the data.

For SQLExtendedFetch() or SQLFetch(), the function returned
SQL_SUCCESS_WITH_INFO, which means that the function completed successfully,
and that a nonfatal error occurred. To handle the nonfatal error, the function
truncated the data that was returned for one or more columns. If the value was
a string, the function right-truncated it. If the value was numeric, the
function truncated the fractional part of the number. Set the data types for
the return data so that they can accommodate the data. For more information,
call SQLError().

For SQLGetData(), the function returned SQL_SUCCESS_WITH_INFO, which means
that the function completed successfully, and that a nonfatal error occurred.
The nonfatal error occurred because the function could not retrieve all the
data for the specified column in one call. The pcbValue argument contains
the length of the data that was left in the column before the current call
to SQLGetData(). Call SQLGetData() repeatedly until all data is retrieved.

For all other functions that can return this error code, the function returned
SQL_SUCCESS_WITH_INFO, which means that the function completed successfully,
and that a nonfatal error occurred. The nonfatal error occurred because the
return buffer was not large enough to return all the requested information.
The function truncated the return data and set the total number of bytes
returned to the length of the untruncated return data. Reallocate the return
buffer so that it can accommodate the return data. For more information, call
SQLError().



-11004	Privilege not revoked.

This IBM Informix CLI error code is the same as SQLSTATE value 01006. The
following functions can return this error code: SQLExecDirect() and
SQLExecute().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. The nonfatal error
occurred because the SQL statement or prepared statement contained a REVOKE
statement, and the user does not have the access privilege to make this
change. For more information, call SQLError().


-11005	Invalid connection string attribute.

Specified connection string attribute is unsupported for
SQLBrowseConnect and SQLDriverConnect. Check the list of valid
attributes.

This IBM Informix CLI error code is the same as SQLSTATE value 01S00. The
following functions can return this error code: SQLBrowseConnect() and
SQLDriverConnect().

For SQLBrowseConnect(), the function returned SQL_NEED_DATA, which means that
either the connection string contains an invalid attribute keyword, or the
connection string contains an attribute keyword that does not apply to the
current connection level. Set each attribute keyword in the connection string
to a valid value that applies to the current connection level.

For SQLDriverConnect(), the function returned SQL_SUCCESS_WITH_INFO, which
means that the function completed successfully, and that a nonfatal error
occurred. The nonfatal error occurred because the connection string contains
an invalid attribute keyword, but IBM Informix CLI connected to the data source
anyway. For more information, call SQLError().


-11006	Error in row.

An error occurred while fetching one or more rows with
SQLExtendedFetch. Check the rgfRowStatus array.

This IBM Informix CLI error code is the same as SQLSTATE value 01S01. The
following function can return this error code: SQLExtendedFetch().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. The nonfatal
error occurred while the function was fetching one or more rows. For more
information, call SQLError().



-11007	Option value changed.

The driver did not support the specified value of the VParam argument
with the SQLSetConnectOption or SQLSetStatementOption. The driver
substitutes a similar value and returns SQL_SUCCESS_WITH_INFO. To
determine the new value of VParam, use SQLGetConnectionOption or
SQLGetStatement.

This IBM Informix CLI error code is the same as SQLSTATE value 01S02. The
following functions can return this error code: SQLSetConnectOption() and
SQLSetStmtOption().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. The nonfatal
error occurred because IBM Informix CLI does not support the vParam value for
the option. The function substituted a similar value. For more information,
call SQLError().



-11008	No rows updated or deleted.

This IBM Informix CLI error code is the same as SQLSTATE value 01S03. The
following functions can return this error code: SQLExecDirect() and
SQLExecute().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. The nonfatal
error occurred because the SQL statement or prepared statement contained a
positioned UPDATE or DELETE statement, but the function did not update or
delete any rows. For more information, call SQLError().


-11009	More than one row updated or deleted.

This IBM Informix CLI error code is the same as SQLSTATE value 01S04. The
following functions can return this error code: SQLExecDirect() and
SQLExecute().

The function returned SQL_SUCCESS_WITH_INFO, which means that the function
completed successfully, and that a nonfatal error occurred. The nonfatal
error occurred because the SQL statement or prepared statement contained a
positioned UPDATE or DELETE statement, and the function updated or deleted
more than one row. For more information, call SQLError().


-11010	Cancel treated as FreeStmt/Close.

This IBM Informix CLI error code is the same as SQLSTATE value 01S05. The
following function can return this error code: SQLCancel().

This message is issued whenever SQLCancel is used with an open
statement handle. This warning is not returned when using the driver
manager. Instead of using SQLCancel, close the statement handle with
the SQLFree statement.



-11011	Attempt to fetch before the result returned the first rowset.

This IBM Informix ODBC error code is the same as SQLSTATE value 01S06. The
following functions can return this error code: SQLExtendedFetch and
SQLFetchScroll.

For SQLExtendedFetch(), the requested rowset overlapped the start of the
result set when the current position was beyond the first row, and either
FetchOrientation was SQL_PRIOR or FetchOrientation was SQL_RELATIVE with
a negative FetchOffset whose absolute value was less than or equal to the
current SQL_ROWSET_SIZE. (Function returns SQL_SUCCESS_WITH_INFO.)

For SQLFetchScroll, the requested rowset overlapped the start of the
result set when FetchOrientation was SQL_FETCH_PRIOR, the current
position was beyond the first row, and the number of the current row is
less than or equal to the rowset size.

The requested rowset overlapped the start of the result set when
FetchOrientation was SQL_FETCH_PRIOR, the current position was beyond the
end of the result set, and the rowset size was greater than the result
set size.

The requested rowset overlapped the start of the result set when
FetchOrientation was SQL_FETCH_RELATIVE, FetchOffset was negative, and
the absolute value of FetchOffset was less than or equal to the rowset
size.

The requested rowset overlapped the start of the result set when
FetchOrientation was SQL_FETCH_ABSOLUTE, FetchOffset was negative, and
the absolute value of FetchOffset was greater than the result set size
but less than or equal to the rowset size. (Function returns
SQL_SUCCESS_WITH_INFO.)


-11012	Wrong number of parameters.

This IBM Informix CLI error code is the same as SQLSTATE value 07001. The
following functions can return this error code: SQLExecDirect() and
SQLExecute().

The number of parameters that you used SQLBindParameter() to bind is less
than the number of parameters in the SQL statement or prepared statement.
Bind the same number of parameters as the number of parameters in the
statement.



-11013	Restricted data type attribute violation.

This IBM Informix CLI error code is the same as SQLSTATE value 07006. The
following functions can return this error code: SQLBindParameter(),
SQLExtendedFetch(), SQLFetch(), and SQLGetData().

A data value could not be converted to the C data type specified by the
fCType argument of the SQLBindCol function. This error occurs when you
try to retrieve data types that are unsupported by the CLI driver or
the value in the fCType argument is not recognized. Confirm that the
data type you are requesting is supported by the database server and
confirm that the value you are supplying for the fCType argument is
valid.

For SQLBindParameter(), it is not possible to convert the result data (the
data value associated with the IBM Informix CLI C data type (fCType) argument)
to the data type of the parameter (the data value associated with the
IBM Informix CLI SQL data type (fSqlType) argument). Set the IBM Informix CLI C and
SQL data types to values that make it possible to convert the result data
to the data type of the parameter.

For SQLExtendedFetch() or SQLFetch(), it is not possible to convert one of the
result data values to the specified data type (the IBM Informix CLI C data type
(fCType) argument for SQLBindCol()). For each data value that the function
fetches, set the associated IBM Informix CLI C data type argument for SQLBindCol()
to a value that makes it possible to convert the data value to the specified
data type.

For SQLGetData(), it is not possible to convert the data value to the
specified data type (the IBM Informix CLI C data type (fCType) argument). Set
IBM Informix CLI C data type to a value that makes it possible to convert the
data value to the data type.



-11014	Invalid use of default parameter.

This IBM Informix CLI error code is the same as SQLSTATE value 07S01. The
following functions can return this error code: SQLExecDirect(), SQLExecute(),
and SQLPutData().

You used SQL_DEFAULT_PARAM and the corresponding parameter does not have a
default value. Use SQL_DEFAULT_PARAM only if the corresponding parameter has
a default value.


-11015	Unable to connect to data source.

This IBM Informix CLI error code is the same as SQLSTATE value 08001. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), and SQLDriverConnect().

The driver cannot establish a connection with the data source. Check
that the database server name, user ID, and password are correctly
specified and that the database server is available.



-11016	Connection in use.

The specified connection with a data source is in conflict with another
user's exclusive use of the database. Establish a connection when the
data source is available.


-11017	Connection not open.

This IBM Informix CLI error code is the same as SQLSTATE value 08003. The
following functions can return this error code: SQLAllocStmt(),
SQLDisconnect(), SQLGetConnectOption(), SQLGetInfo(), SQLNativeSql(),
SQLSetConnectOption(), and SQLTransact().

The connection that the hdbc argument specifies is not open. Validate
that the SQLConnect, SQLDriverConnect, or SQLBrowseConnect calls
succeeded.


-11018	Data source rejected establishment of connection.

The data source rejected the establishment of the connection for
implementation-defined reasons. Confirm that the password and user ID
are correct.


-11020	Communication link failure.

This IBM Informix CLI error code is the same as SQLSTATE value 08S01. The
following functions can return this error code: SQLBrowseConnect(),
SQLColumnPrivileges(), SQLColumns(), SQLConnect(), SQLDriverConnect(),
SQLExecDirect(), SQLExecute(), SQLExtendedFetch(), SQLFetch(),
SQLForeignKeys(), SQLFreeConnect(), SQLGetData(), SQLGetTypeInfo(),
SQLParamData(), SQLPrepare(), SQLPrimaryKeys(), SQLProcedureColumns(),
SQLProcedures(), SQLPutData(), SQLSetConnectOption(), SQLSetStmtOption(),
SQLSpecialColumns(), SQLStatistics(), SQLTablePrivileges(), and SQLTables().

The communication link between IBM Informix CLI and the data source failed before
the function completed successfully. If this error occurs consistently,
contact IBM Technical Support.



-11021	Insert value list does not match column list.

This IBM Informix CLI error code is the same as SQLSTATE value 21S01. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained an INSERT statement, but the number of values
to insert was not the same as the number of columns into which to insert
values. Change the INSERT statement so that the number of values to insert
is the same as the number of columns into which to insert values.


-11022	Degree of derived table does not match column list.

This IBM Informix CLI error code is the same as SQLSTATE value 21S02. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained a CREATE VIEW statement, but the number of column
names for the view was not the same as the number of columns that the SELECT
statement returns. Change the CREATE VIEW statement so that the number of
column names is the same as the number of columns.


-11023	String data right truncation.

This IBM Informix CLI error code is the same as SQLSTATE value 22001. The
following function can return this error code: SQLPutData().

Before you called SQLPutData(), SQLGetInfo() returned "Y" when you called it
with an information type of SQL_NEED_LONG_DATA_LEN. You then sent more data
than the amount that the pcbValue argument specified in SQLBindParameter().
Send only the amount of data that pcbValue specifies.


-11024	Indicator variable required but not supplied.

This IBM Informix CLI error code is the same as SQLSTATE value 22002. The
following functions can return this error code: SQLExtendedFetch(),
SQLFetch(), and SQLGetData().

For SQLExtendedFetch() or SQLFetch(), the value for a bound column was null
but the INDICATOR_PTR field in the corresponding record was a null pointer.
For each column that can have a null value, set the corresponding pointer
to a non-null value.

For SQLGetData(), the column value was null but StrLen_or_Ind was a null
pointer. For each column that can have a null value, set the corresponding
StrLen_or_Ind value to a non-null value.


-11025	Numeric value out of range.

This IBM Informix CLI error code is the same as SQLSTATE value 22003. The
following functions can return this error code: SQLExecDirect(),
SQLExecute(), SQLExtendedFetch(), SQLFetch(), SQLGetData(), SQLGetInfo(),
and SQLPutData().

For SQLExecDirect() and SQLExecute(), the SQL statement contained a numeric
parameter or literal that was too large. Therefore, the function truncated
the whole (as opposed to fractional) part of the number before it assigned
the number to the associated column. Change the SQL statement so that each
numeric value fits into the associated column.

For SQLExtendedFetch(), SQLFetch(), or SQLGetData(), the result set contains
one or more columns that have values that are too large for the associated
return parameters. If the function returned the value as a numeric value or
string, the function truncated the whole (as opposed to fractional) part of
the number. If the function returned the value as a binary value, the number
lost binary significance. Change the return parameters so that each one can
accommodate the associated value in the result set.

For SQLGetInfo(), the requested information would lose numeric or binary
significance if the function returned it. Set the storage for the requested
information to a size that can accommodate the information.

For SQLPutData(), you called the function more than once for a parameter or
column and one of the following problems occurred: (1) You called the function
to send data to a column that does not have a character, binary, or
data-source-specific data type, or (2) The function truncated the whole (as
opposed to fractional) part of a number to assign it to the associated column.
Call SQLPutData() only for a column that has a character, binary, or
data-source-specific data type, and change the data that you are sending so
that it does not exceed the size of the column.

Returning the numeric value (as a numeric or string) for one or more
columns causes the whole (as opposed to fractional) number to truncate.
For the range of values for the numeric parameter or column type that
you tried to write or fetch, check the IBM Informix CLI Programmer's
Manual.



-11026	Error in assignment.

The argument szSqlStr contains an SQL statement that contains a
parameter or literal, and the value is incompatible with the data type
of the associated table column. Check the list of compatible data types
associated with the table column.

This IBM Informix CLI error code is the same as SQLSTATE value 22005. The
following functions can return this error code: SQLExecDirect(), SQLExecute(),
SQLExtendedFetch(), SQLFetch(), SQLGetData(), SQLPrepare(), and SQLPutData().

For SQLExecDirect(), SQLExecute(), or SQLPrepare(), the SQL statement or
prepared statement contained a parameter or literal that was incompatible
with the data type of the associated column. Change the statement so that
each parameter and literal is compatible with the data type of the column.

For SQLExtendedFetch() or SQLFetch(), the function fetched a zero-length
string that you had bound to a numeric data type, so the function converted
the string to a zero. Change the data type of the parameter that is bound to
the string.

For SQLGetData() or SQLPutData(), the data type for the column is incompatible
with the data type for the parameter. Change the data type for the parameter
so that it is compatible with the data type for the column.



-11027	Datetime field overflow.

This IBM Informix CLI error code is the same as SQLSTATE value 22008. The
following functions can return this error code: SQLExecDirect(), SQLExecute(),
SQLExtendedFetch(), SQLFetch(), SQLGetData(), and SQLPutData().

The argument szSqlStr contains an SQL statement that contains a date,
time, time-stamp parameter, or literal that is invalid. For the valid
values of the szSqlStr argument, check the IBM Informix CLI Programmer's
Manual.

For SQLExecDirect() or SQLExecute(), the function converted an SQL_C_DATE or
SQL_C_TIMESTAMP value to an SQL_CHAR value, and the resulting value was not a
valid date or time stamp. Change the SQL_C_DATE or SQL_C_TIMESTAMP value so
that it will be a valid date or time stamp after the function converts it to
an SQL_CHAR value.

For SQLExtendedFetch() or SQLFetch(), the SQL statement or prepared statement
contained an invalid date or time stamp. Change the statement so that the date
and time stamp values are valid.

For SQLGetData() or SQLPutData(), the data that the function sent or received
was an invalid date or time stamp. For SQLPutData(), change the data so that
it is a valid date or time stamp.




-11028	Division by zero.

This IBM Informix CLI error code is the same as SQLSTATE value 22012. The
following functions can return this error code: SQLExecDirect(), SQLExecute(),
SQLExtendedFetch(), SQLFetch(), and SQLGetData().

You either sent an arithmetic expression in an SQL statement or prepared
statement to a database server, or a database server returned an arithmetic
expression. This expression caused division by zero. Change the arithmetic
expression so that it does not cause division by zero.


-11029	String data, length mismatch.

This IBM Informix CLI error code is the same as SQLSTATE value 22026. The
following function can return this error code: SQLParamData().

Before you called SQLParamData(), SQLGetInfo() returned "Y" when you called
it with an information type of SQL_NEED_LONG_DATA_LEN. You then sent less
data than the amount that the pcbValue argument specified in
SQLBindParameter(). Send the amount of data that pcbValue specifies.


-11030	Integrity constraint violation.

This IBM Informix CLI error code is the same as SQLSTATE value 23000. The
following functions can return this error code: SQLExecDirect() and
SQLExecute().

One of the following problems occurred for one of the parameters in the SQL
statement or prepared statement: (1) The parameter was null for a column that
is defined as not null, or (2) The parameter provided a duplicate value for a
column that can contain only unique values, or (3) The parameter violated some
other integrity constraint. Change the parameter so that it does not violate
any integrity constraints.


-11031	Invalid cursor state.

This IBM Informix CLI error code is the same as SQLSTATE value 24000. The
following functions can return this error code: SQLColAttributes(),
SQLColumnPrivileges(), SQLColumns(), SQLDescribeCol(), SQLExecDirect(),
SQLExecute(), SQLExtendedFetch(), SQLFetch(), SQLForeignKeys(), SQLGetData(),
SQLGetStmtOption(), SQLGetTypeInfo(), SQLPrepare(), SQLPrimaryKeys(),
SQLProcedureColumns(), SQLProcedures(), SQLSetCursorName(),
SQLSetStmtOption(), SQLSpecialColumns(), SQLStatistics(),
SQLTablePrivileges(), and SQLTables().

A cursor is open on hstmt, and SQLFetch or SQLExtendedFetch was not
called. Check the sequence of operations. For example, confirm that you
are not trying to execute an EXECUTE statement before the PREPARE
statement finishes.

One of the following problems occurred:

(1) The statement that is associated with the statement handle does not return
a result set because there are no columns to describe. Change the statement so
that it returns a result set. This problem can occur for SQLColAttributes()
and SQLDescribeCol().

(2) You already opened a cursor for the statement handle. Use the cursor that
you already opened. This problem can occur for SQLColumnPrivileges(),
SQLColumns(), SQLExecDirect(), SQLExecute(), SQLForeignKeys(),
SQLGetTypeInfo(), SQLPrepare(), SQLPrimaryKeys(), SQLProcedureColumns(),
SQLProcedures(), SQLSpecialColumns(), SQLStatistics(), SQLTablePrivileges(),
and SQLTables().

(3) The cursor was positioned before the start of the result set or after the
end of the result set. Make sure that the cursor is positioned within the
result set. This problem can occur for SQLExecDirect(), SQLExecute(),
SQLGetData(), and SQLGetStmtOption().

(4) The statement handle was in an executed state, but no result set was
associated with the statement handle. Make sure that a result set is
associated with the statement handle. This problem can occur for
SQLExtendedFetch(), SQLFetch(), and SQLGetData().

(5) You opened a cursor for the statement handle, but you did not call
SQLFetch() or SQLExtendedFetch(). Call SQLFetch() or SQLExtendedFetch() after
you open a cursor for a statement handle. This problem can occur for
SQLGetData().

(6) The fOption value was SQL_ROW_NUMBER, but the cursor was not open. Open a
cursor before you use an fOption value of SQL_ROW_NUMBER. This problem can
occur for SQLGetStmtOption().

(7) The statement handle was already in an executed state or a
cursor-positioned state. Do not call this function for a statement handle
that has already been executed or is already in a cursor-positioned state.
This problem can occur for SQLSetCursorName().

(8) The fOption value was SQL_CONCURRENCY, SQL_SIMULATE_CURSOR, or
SQL_CURSOR_TYPE, and the cursor was open. Do not use an open cursor for one
of these fOption values. This problem can occur for SQLSetStmtOption().



-11032	Invalid transaction state.

This IBM Informix CLI error code is the same as SQLSTATE value 25000. The
following function can return this error code: SQLDisconnect().

A transaction is in process on the hdbc connection. The transaction remains
active. Wait for the transaction to finish before you call SQLDisconnect()
for the hdbc connection.


-11033	Invalid authorization specification.

This IBM Informix CLI error code is the same as SQLSTATE value 28000. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), and SQLDriverConnect().

Either the user identifier or the authorization string or both, as
specified in the browse request connection string, violated
restrictions that the data source defined. Confirm that you logged in
correctly and that your password is current.


-11034	Invalid cursor name.

This IBM Informix CLI error code is the same as SQLSTATE value 34000. The
following functions can return this error code: SQLExecDirect(), SQLPrepare(),
and SQLSetCursorName().

The argument szSqlStr contains a positioned update or delete statement,
and the cursor referenced by the statement being executed is not open.
Check that the cursor is executed.

For SQLExecDirect() or SQLPrepare(), the SQL statement contained a positioned
UPDATE or DELETE, but the cursor that the statement references was not open.
Make sure that the cursor for an UPDATE or DELETE statement is open.

For SQLSetCursorName(), the cursor name was invalid. For example, it might
exceed the maximum allowable length. Make sure that the cursor name is valid.



-11035	Syntax error or access violation.

This IBM Informix CLI error code is the same as SQLSTATE value 37000. The
following functions can return this error code: SQLExecDirect(),
SQLNativeSql(), and SQLPrepare().


The argument szSqlStr contains an SQL statement that is not preparable
or contains a syntax error. Check the syntax of the SQL statement and
make any necessary corrections.



-11036	Duplicate cursor name.

This IBM Informix CLI error code is the same as SQLSTATE value 3C000. The
following function can return this error code: SQLSetCursorName().

The cursor name specified already exists. Specify a unique cursor name. 


-11037	Serialization failure.

This IBM Informix CLI error code is the same as SQLSTATE value 40001. The
following functions can return this error code: SQLExecDirect(), SQLExecute(),
SQLExtendedFetch(), and SQLFetch().

IBM Informix CLI terminated the transaction to prevent deadlock. If you
consistently receive this error, a problem exists with the logic in your
application.


-11038	Syntax error or access violation.

This IBM Informix CLI error code is the same as SQLSTATE value 42000. The
following functions can return this error code: SQLExecDirect(), SQLExecute(),
and SQLPrepare().

The user does not have the privileges necessary to execute the SQL statement,
or the SQL statement was not prepared, or the statement contained a syntax
error. If you consistently receive this error, a problem exists with the logic
in your application.




-11039	Operation aborted.

This IBM Informix CLI error code is the same as SQLSTATE value 70100. The
following function can return this error code: SQLCancel().

The data source did not process the cancel request because the database
server does not support this function.


-11040	Driver does not support this function.

This IBM Informix CLI error code is the same as SQLSTATE value IM001. The
following functions can return this error code: all ODBC functions except
SQLAllocEnv(), SQLDataSources(), SQLDrivers(), SQLError(), SQLFreeConnect(),
SQLFreeEnv(), and SQLGetFunctions().

IBM Informix CLI does not support this function. Do not call this function.



-11041	Data source name not found and no default driver specified.

This IBM Informix CLI error code is the same as SQLSTATE value IM002. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), and SQLDriverConnect().

One of the following problems occurred: (1) The function cannot find the
initialization file, or (2) The data source that the szConnStrn string
specified does not exist in the initialization file, and a default driver
specification does not exist. Make sure that the initialization file exists.
Add the specified data source to the initialization file or create a default
driver specification.

The data source name specified in the connection request is not found
in the ODBC.INI file or registry, and there is no default driver
specification. Confirm that the data source name is registered. You can
also provide a default data source.


-11042	Specified driver could not be loaded.

This IBM Informix CLI error code is the same as SQLSTATE value IM003. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), and SQLDriverConnect().

The driver listed in the data source specification in the ODBC.INI file
or registry or the driver that the DRIVER keyword specifies is not
found or cannot be loaded. Make sure that the
specified driver exists. Confirm that you entered the correct
spelling and path for the driver.



-11043	Driver's SQLAllocEnv failed.

This IBM Informix CLI error code is the same as SQLSTATE value IM004. The
following IBM Informix CLI functions can return this error code:
SQLBrowseConnect(), SQLConnect(), and SQLDriverConnect(). The function
called the driver version of SQLAllocEnv(), which returned an error. The
CLI driver does not return this error.

The most common failure could be attributed to a memory allocation failure.
Driver Manager's call to SQLAllocEnv could not succeed. See the error message
returned by SQLError in the szErrorMsg to describe any driver specific
SQLSTATE or error message if returned for other reasons.


-11044	Driver's SQLAllocConnect failed.

This IBM Informix CLI error code is the same as SQLSTATE value IM005. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), and SQLDriverConnect(). The function called the driver
version of SQLAllocConnect(), which returned an error. The CLI driver
does not return this error.

The allocation of a connection handle may fail due to insufficient memory
or initialization of new Database Connection handle (DBC). See the error
message returned by SQLError in the szErrorMsg to describe driver specific
SQLSTATE or error message if returned for other reasons.


-11045	Driver's SQLSetConnectOption failed.

This IBM Informix CLI error code is the same as SQLSTATE value IM006. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), and SQLDriverConnect(). The function called the driver version
of SQLSetConnectOption(), which returned an error. The CLI driver does not
return this error.

See the error message returned by SQLError in the szErrorMsg to describe
driver specific SQLSTATE or error message if returned for other reasons.


-11046	No data source or driver specified; dialog prohibited.

This IBM Informix CLI error code is the same as SQLSTATE value IM007. The
following function can return this error code: SQLDriverConnect().

The connection information flag, fDriverCompletion, is SQL_DRIVER_NOPROMPT,
but the connection string does not provide enough information. Ensure that the driver
keyword is in the connection string, or set the fDriverCompletion flag
to SQLDriver prompt to have the driver prompt for additional connection
information.



-11047	Dialog failed.

This IBM Informix CLI error code is the same as SQLSTATE value IM008. The
following function can return this error code: SQLDriverConnect().

IBM Informix CLI could not display the SQL Data Sources dialog box or the login
dialog box because the hwnd value is null and the fDriverCompletion value is
not SQL_DRIVER_NO_PROMPT. Use different values for hwnd and fDriverCompletion.


-11048	Unable to load translation shared library (DLL).

This IBM Informix CLI error code is the same as SQLSTATE value IM009. The
following functions can return this error code: SQLBrowseConnect(),
SQLConnect(), SQLDriverConnect(), and SQLSetConnectOption().

The driver is unable to load the translation DLL that is specified for
the data source or for the connection. Check that the name and path for
the DLL are correct.



-11049	Data source name too long.

This IBM Informix CLI error code is the same as SQLSTATE value IM010. The
following functions can return this error code: SQLBrowseConnect() and
SQLDriverConnect().

A data source name that is in the initialization file is too long. Change any
data source name that is too long.


-11049	Data source name too long.

The attribute value for DSN name is more than the maximum number of
characters. For the accepted number of characters in the DSN name,
check the IBM Informix CLI Programmer's Manual.


-11050	Driver name too long.

This IBM Informix CLI error code is the same as SQLSTATE value IM011. The
following functions can return this error code: SQLBrowseConnect() and
SQLDriverConnect().

The attribute value for the DRIVER keyword is more than 255 characters.
Use a keyword that is less than 255 characters.



-11051	DRIVER keyword syntax error.

This IBM Informix CLI error code is the same as SQLSTATE value IM012. The
following functions can return this error code: SQLBrowseConnect() and
SQLDriverConnect().

In the initialization file, the syntax for the line that sets the driver path
is incorrect. The keyword-value pair for the DRIVER keyword contains a syntax error.
Check that you entered the correct spelling and path for the driver.


-11053	Base table or view already exists.

This IBM Informix CLI error code is the same as SQLSTATE value S0001. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained a CREATE TABLE or CREATE VIEW statement, but the
table name or view name already exists. Reword the query to use a unique table name or a unique view
name.



-11054	Base table not found.

This IBM Informix CLI error code is the same as SQLSTATE value S0002. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained a DROP TABLE, DROP VIEW, ALTER TABLE, CREATE VIEW,
CREATE INDEX, GRANT, REVOKE, SELECT, DELETE, INSERT, UPDATE, or CREATE TABLE
statement, but the table name or view name does not exist. Make sure that the
necessary tables and views already exist.



-11055	Index already exists.

This IBM Informix CLI error code is the same as SQLSTATE value S0011. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained a CREATE INDEX statement, but the index name
exists already. Reword the statement to use a unique index name.



-11056	Index not found.

This IBM Informix CLI error code is the same as SQLSTATE value S0012. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained a DROP INDEX statement, but the specified index name did
not exist. Use an index name that exists already.


-11057	Column already exists.

This IBM Informix CLI error code is the same as SQLSTATE value S0021. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The SQL statement contained an ALTER TABLE statement, but the column name
specified in the ADD clause is not unique or identifies a column that already
exists. Use column names that do not exist already.


-11058	Column not found.

This IBM Informix CLI error code is the same as SQLSTATE value S0022. The
following functions can return this error code: SQLExecDirect() and
SQLPrepare().

The column cannot be associated with the table in the SQL statement.
Verify that you are using an existing table name in your SQL
statement.

The SQL statement contained a CREATE INDEX, GRANT, REVOKE, SELECT, DELETE,
INSERT, UPDATE, or CREATE TABLE statement, but one or more of the column
names did not exist. Use column names that exist already.



-11060	General error.

An error occurred that has no specific SQL_STATE. In this case,
additional text is provided that identifies the source of the problem.
This IBM Informix CLI error code is the same as SQLSTATE value S1000.



-11061	Memory allocation failure.

This IBM Informix CLI error code is the same as SQLSTATE value S1001. The
following functions can return this error code: all IBM Informix CLI functions
except SQLError(), SQLFreeConnect(), and SQLFreeEnv().

The driver or driver manager cannot allocate memory for the connection
handle. Try to reduce the number of processes currently running or
provide more memory.



-11062	Invalid column number.

This IBM Informix CLI error code is the same as SQLSTATE value S1002. The
following functions can return this error code: SQLBindCol(),
SQLColAttributes(), SQLDescribeCol(), SQLExtendedFetch(), SQLFetch(), and
SQLGetData().

The value specified for the argument icol exceeds the maximum number of
columns that the cursor defines. Confirm that the column number you are
fetching is in the result set of the cursor.

For all functions except SQLGetData(), a column number was 0, exceeded the
number of columns in the result set, or exceeded the number of columns that
the data source supports. For SQLBindCol(), make sure that the column number
does not exceed the maximum number of columns that the data source can
support. For SQLColAttributes(), use a descriptor type of SQL_COLUMN_COUNT
if the column number is 0 or exceeds the number of columns in the result set.
For SQLDescribeCol() and SQLFetch(), make sure that the column numbers are
not 0 and do not exceed the number of columns in the result set. For
SQLExtendedFetch(), set SQL_USE_BOOKMARKS to SQL_UB_OFF if column 0 is bound,
and make sure that the bound column numbers do not exceed the number of
columns in the result set.

For SQLGetData(), one of the following problems occurred: (1) The column
number was 0 and you either called SQLFetch() to get the data or you set
SQL_USER_BOOKMARKS to SQL_UB_OFF, (2) The column number exceeded the number
of columns in the result set, or (3) You already called SQLGetData() for
the current row. Make sure that you do not call SQLFetch() or set
SQL_USER_BOOKMARKS to SQL_UB_OFF if the column number is 0, that the column
number does not exceed the number of columns in the result set, and that
you have not already called SQLGetData() for the current row. 



-11063	Program type out of range.

This IBM Informix CLI error code is the same as SQLSTATE value S1003. The
following functions can return this error code: SQLBindCol(),
SQLBindParameter(), and SQLGetData().

The IBM Informix CLI C data type (fCType) argument was not a valid IBM Informix CLI
C data type or SQL_C_DEFAULT. Set the IBM Informix CLI C data type to a valid
value. 

For SQLBindCol(), it is also possible that the column number was 0 and the
IBM Informix CLI C data type was not SQL_C_BOOKMARK. If the column number is 0,
set the IBM Informix CLI C data type to SQL_C_BOOKMARK.


-11064	SQL data type out of range.

This IBM Informix CLI error code is the same as SQLSTATE value S1004. The
following functions can return this error code: SQLBindParameter() and
SQLGetTypeInfo().

The value specified for the argument fSqlType is in the block of
numbers reserved for CLI SQL data type indicators but is not a valid
ODBC SQL data type indicator. Check that you are referring to an ODBC
SQL data type that this driver and this server support.

The IBM Informix CLI SQL data type (fSqlType) argument was not a valid Informix
CLI SQL data type. Set IBM Informix CLI SQL data type to a valid value.



-11065	Operation canceled.

This IBM Informix CLI error code is the same as SQLSTATE value S1008. The
following functions can return this error code: SQLAllocConnect(),
SQLAllocStmt(), SQLBindCol(), SQLBindParameter(), SQLColumns(),
SQLExecDirect(), SQLForeignKeys(), SQLGetData(), SQLGetInfo(),
SQLNativeSql(), SQLParamData(), SQLPrepare(), SQLProcedureColumns(),
SQLPutData(), SQLSetConnectOption(), SQLSetCursorName(), and
SQLSetStmtOption().

Before the function could complete execution, a different thread called
SQLCancel() for the statement handle. Fix your application logic.

For SQLParamData() and SQLPutData(), one of the following problems can also
occur: (1) You called SQLExecute() or SQLExecDirect() for the statement
handle and the function returned SQL_NEED_DATA, or (2) You called SQLCancel()
before data was sent for all data-at-execution parameters or columns. Fix
your application logic.


-11066	Invalid argument value.

This IBM Informix CLI error code is the same as SQLSTATE value S1009. The
following functions can return this error code: SQLAllocConnect(),
SQLAllocStmt(), SQLBindParameter(), SQLGetData(), SQLGetInfo(),
SQLExecDirect(), SQLForeignKeys(), SQLNativeSql(), SQLPrepare(), SQLPutData(),
SQLSetConnectOption(), SQLSetCursorName(), and SQLSetStmtOption().

Check that the arguments passed with the CLI request are correct.

For SQLAllocConnect(), SQLAllocStmt(), SQLExecDirect(), SQLGetData(),
SQLNativeSql, SQLPrepare(), and SQLSetCursorName(), the pointer argument
(phdbc, phstmt, rgbValue, szCursor, szSqlStr, or szSqlStrIn) was a null
pointer. Set the pointer argument to a non-null value.

For SQLBindParameter(), rgbValue and pcbValue were null pointers and
fParamType was not SQL_PARAM_OUTPUT. Set rgbValue or pcbValue to a non-null
pointer or set fParamType to SQL_PARAM_OUTPUT.

For SQLForeignKeys(), szPkTableName and szFkTableName were null pointers. Set
szPkTableName or szFkTableName to a non-null pointer.

For SQLGetInfo(), fInfoType was SQL_DRIVER_HSTMT and rgbInfoValue did not
point to a valid statement handle. Change rgbInfoValue to point to a valid
statement handle.

For SQLPutData(), rgbValue was a null pointer and cbValue was not 0,
SQL_DEFAULT_PARAM, or SQL_NULL_DATA. Change cbValue to 0, SQL_DEFAULT_PARAM,
or SQL_NULL_DATA.

For SQLSetConnectOption() and SQLSetStmtOption(), vParam was not valid for
the specified fOption value. Change vParam to a valid value.



-11067	Function sequence error.

An asynchronously executing function is called for the hstmt and is
still executing when this function is called, or an attempt was made to
use an hstmt out of sequence. Check the sequence of operations. For
example, check that you are not trying to execute an EXECUTE statement
before the PREPARE statement is finished.

This IBM Informix CLI error code is the same as SQLSTATE value S1010. The
following functions can return this error code: SQLBindCol(),
SQLBindParameter(), SQLColAttributes(), SQLColumnPrivilages(), SQLColumns(),
SQLDescribeCol(), SQLDisconnect(), SQLExecDirect(), SQLExecute(),
SQLExtendedFetch(), SQLFetch(), SQLFreeConnect(), SQLFreeEnv(), SQLFreeStmt(),
SQLForeignKeys(), SQLGetConnectOption(), SQLGetCursorName(), SQLGetData(),
SQLGetFunctions(), SQLGetStmtOption(), SQLGetTypeInfo(), SQLMoreResults(),
SQLNumParams(), SQLNumResultCols(), SQLParamData(), SQLPrepare(),
SQLPrimaryKeys(), SQLProcedureColumns(), SQLProcedures(), SQLPutData(),
SQLRowCount(), SQLSetConnectOption(), SQLSetCursorName(), SQLSetStmtOption(),
SQLSpecialColumns(), SQLStatistics(), SQLTablePrivileges(), SQLTables(), and
SQLTransact().

For SQLBindCol(), SQLBindParameter(), SQLColAttributes(),
SQLColumnPrivilages(), SQLColumns(), SQLDescribeCol(), SQLDisconnect(),
SQLExecDirect(), SQLExecute(), SQLExtendedFetch(), SQLFetch(), SQLFreeStmt(),
SQLForeignKeys(), SQLGetCursorName(), SQLGetData(), SQLGetStmtOption(),
SQLGetTypeInfo(), SQLMoreResults(), SQLNumParams(), SQLNumResultCols(),
SQLPrepare(), SQLPrimaryKeys(), SQLProcedureColumns(), SQLProcedures(),
SQLRowCount(), SQLSetConnectOption(), SQLSetCursorName(), SQLSetStmtOption(),
SQLSpecialColumns(), SQLStatistics(), SQLTablePrivileges(), SQLTables(), and
SQLTransact(), IBM Informix CLI called SQLExecute(), SQLExecDirect(), or
SQLSetPos() for the statement handle and returned SQL_NEED_DATA, which means
that you called this function before data was sent for the data-at-execution
parameters or columns. Wait until data is sent for all the data-at-execution
parameters or columns before you call this function.

Additionally for SQLColAttributes(), SQLDescribeCol(), SQLNumParams(), and
SQLNumResultCols(), you called this function before you called SQLPrepare()
or SQLExecDirect for the statement handle. Do not call this function before
SQLPrepare() or SQLExecDirect().

Additionally for SQLExecute(), the statement handle was not prepared due to
one of the following conditions: (1) The statement handle was not in an
executed state, (2) You opened a cursor on the statement handle and called
SQLFetch() or SQLExtendedFetch(), (3) The statement handle was in an executed
state but did not have a result set associated with it, or (4) The statement
handle was in an executed state but you did not call SQLFetch() or
SQLExtendedFetch(). Make sure that none of these conditions occurs.

Additionally for SQLExtendedFetch(), SQLFetch(), and SQLGetData(), one of the
following problems occurred: (1) The statement handle was not in an executed
state because you did not call SQLExecDirect(), SQLExecute(), or a catalog
function before you called this function, or (2) You called this function
after you called SQLFetch() and before you called SQLFreeStmt() with the
SQL_CLOSE option. Make sure that neither of these conditions occurs.

For SQLFreeConnect(), you called this function before you called
SQLDisconnect() for the connection handle.

For SQLFreeEnv(), at least one connection handle was in an allocated or
connected state. Call SQLDisconnect() and SQLFreeConnect() for each
connection handle before you call this function.

For SQLGetConnectOption(), SQLGetFunctions(), and additionally for
SQLSetConnectOption(), IBM Informix CLI called SQLBrowseConnect() for the
connection handle and returned SQL_NEED_DATA, which means that you called
this function before SQLBrowseConnect() returned SQL_SUCCESS_WITH_INFO or
SQL_SUCCESS. Wait until SQLBrowseConnect() returns SQL_SUCCESS_WITH_INFO or
SQL_SUCCESS before you call this function.

Additionally for SQLGetFunctions(), you called this function before you called
SQLConnect(), SQLBrowseConnect(), or SQLDriverConnect(). Do not call this
function before SQLConnect(), SQLBrowseConnect(), or SQLDriverConnect().

For SQLParamData(), the previous function call was to this function. Call this
function only after you call SQLExecDirect() or SQLExecute() where the return
code is SQL_NEED_DATA or after you call SQLPutData().

For SQLPutData(), the previous function call was to SQLExecDirect() or
SQLExecute() where the return code was SQL_NEED_DATA. Call this function only
after you call SQLParamData() or SQLPutData().

Additionally for SQLRowCount(), you called this function before you called
SQLExecute() or SQLExecDirect() for the statement handle. Do not call this
function before SQLExecute() or SQLExecDirect().



-11068	Operation invalid at this time.

This IBM Informix CLI error code is the same as SQLSTATE value S1011. The
following functions can return this error code: SQLGetStmtOption(),
SQLSetConnectOption(), and SQLSetStmtOption().

For SQLGetStmtOption(), fOption was SQL_GET_BOOKMARK and SQL_USE_BOOKMARKS was
SQL_UB_OFF. If SQL_USE_BOOKMARKS is SQL_UB_OFF, do not use this option value.

For SQLSetConnectOption(), fOption was SQL_TXN_ISOLATION and a transaction was
open. Make sure that no transactions are open before you use this option
value.

For SQLSetStmtOption(), fOption was SQL_CONCURRENCY, SQL_SIMULATE_CURSOR, or
SQL_CURSOR_TYPE and the statement was prepared. If the statement is prepared,
do not use one of these option values.


-11069	Invalid transaction operation code specified.

This IBM Informix CLI error code is the same as SQLSTATE value S1012. The
following function can return this error code: SQLTransact().

The value specified for the argument fType is neither SQL_COMMIT nor
SQL_ROLLBACK. Check the value and verify that it is valid for the ftype
parameter.


-11070	No cursor name available.

This IBM Informix CLI error code is the same as SQLSTATE value S1015. The
following function can return this error code: SQLGetCursorName().


No open cursor exists on the hstmt, and no cursor name has been set
with SQLSetCursorName. Check the sequence of operations. For example,
check that you are not trying to execute an EXECUTE statement before
the PREPARE statement is finished.

The statement handle does not have an open cursor and did not previously call
SQLSetCursorName() to set a cursor name. Open a cursor or set a cursor name.



-11071	Invalid string or buffer length.

This IBM Informix CLI error code is the same as SQLSTATE value S1090. The
following functions can return this error code: SQLBindCol(),
SQLBindParameter(), SQLBrowseConnect(), SQLColAttributes(),
SQLColumnPrivileges(), SQLColumns(), SQLConnect(), SQLDataSources(),
SQLDescribeCol(), SQLDriverConnect(), SQLDrivers(), SQLExecDirect(),
SQLExecute(), SQLForeignKeys(), SQLGetCursorName(), SQLGetData(),
SQLGetInfo(), SQLNativeSql(), SQLPrepare(), SQLPrimaryKeys(),
SQLProcedureColumns(), SQLProcedures(), SQLPutData(), SQLSetCursorName(),
SQLSpecialColumns(), SQLStatistics(), SQLTablePrivileges(), and SQLTables().

The value specified for the argument cbValueMax is less than zero.
Supply a value for the argument cbValueMax that is zero or greater.

For all functions, an argument that specified a string or buffer length, such
as cbCursor, cbConnStrIn, or cbSqlStr, had one or more of the following
problems: (1) It was less than 0, (2) It was less than 0 but not equal to
SQL_NTS or SQL_NULL_DATA, (3) It was less than 0 but the corresponding
pointer was not a null pointer, (4) It was equal to 1, or (5) It was too
large. Set the string or buffer length to a valid value.

Additionally for SQLExecDirect() and SQLExecute(), a parameter value that was
set with SQLBindParameter() had one of the following problems: (1) It was a
null pointer, and the parameter length was not 0, SQL_NULL_DATA,
SQL_DATA_AT_EXEC, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET, or
(2) It was not a null pointer, and the parameter length was less than 0 but
was not SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, or less than or equal to
SQL_LEN_EXEC_DATA_AT_EXEC_OFFSET. Set the parameter value to a valid value.


-11072	Descriptor type out of range.

This IBM Informix CLI error code is the same as SQLSTATE value S1091. The
following function can return this error code: SQLColAttributes().

The value specified for the argument fDescType is in the block of
numbers reserved for driver-specific descriptor types but is
unsupported by the driver. For a list of accepted descriptor types,
check the IBM Informix CLI Programmer's Manual.

The fDescType argument was not a valid descriptor type. Set fDescType to a
valid value.



-11073	Option type out of range.

This IBM Informix CLI error code is the same as SQLSTATE value S1092. The
following functions can return this error code: SQLFreeStmt(),
SQLGetConnectOption(), SQLGetStmtOption(), SQLSetConnectOption(), and
SQLSetStmtOption().

The value specified for the argument fOption is in the block of numbers
reserved for CLI connection and statement option but is not valid for
the version of ODBC that the driver supports. For a list of accepted
descriptor types, check the IBM Informix CLI Programmer's Manual.

The fOption argument was not a valid option value. Set fOption to a valid
value.


-11074	Invalid parameter number.

This IBM Informix CLI error code is the same as SQLSTATE value S1093. The
following function can return this error code: SQLBindParameter().

The value specified for the argument ipar is less than one or is
greater than the maximum number of parameters that the data source
supports. To verify that the value is in the correct range for the
statement, check the SQL statement.

Either the ipar value was less than 1, or the ipar value exceeded the maximum
number of parameters that the data source supports. Set ipar to a valid value.



-11075	Invalid scale value.

The value that the argument ibScale specifies is outside the range of
values supported by the data source for a column of the SQL data type
that the fSqlType argument specifies. For a list of supported values
for the column type that fSqlType specifies, check the IBM Informix CLI
Programmer's Manual.

This IBM Informix CLI error code is the same as SQLSTATE value S1094. The
following function can return this error code: SQLBindParameter().

The ibScale value was invalid for the IBM Informix CLI SQL data type (fSqlType)
argument. Set ibScale to a valid value. 



-11076	Function type out of range.

This IBM Informix CLI error code is the same as SQLSTATE value S1095. The
following function can return this error code: SQLGetFunctions().

An invalid fFunction value is specified. For a list of valid values for
the fFunction parameter, che