NULL_NUMERIC_WRITE configuration variable

COBOL does not have a concept that corresponds directly to SQL's NULL. The closest candidates in COBOL are data items that contain either SPACES or LOW-VALUES. In SQL, NULL is often used to indicate that the data is missing or not applicable.

To maintain the integrity of the source data and to ensure that any data written from your application back to the COBOL source is accurate, you must provide a representational mapping between COBOL's SPACES and LOW-VALUES and the corresponding SQL column values.

Use the NULL_NUMERIC_WRITE variable to indicate how SQL NULLs in numeric data should be translated into COBOL data. For data returned to the COBOL files (WRITEs), indicate whether the NULLs in numeric data should be interpreted as SPACES, LOW-VALUES, or zero.

Valid values are:

NULL_NUMERIC_WRITE spaces
NULL_NUMERIC_WRITE low-values
NULL_NUMERIC_WRITE 0

By default, numeric data is interpreted as zero on output to the COBOL source.

Numeric fields that take the form of one of the computational types further complicate the situation. For most comp fields, LOW-VALUES and SPACES are valid values. See the configuration variable NULL_NUMERIC_READ for examples. To prevent erroneous information being written to the COBOL data files by the insert of a NULL value, tables created with comp fields that could be misinterpreted are created with the NOT NULL constraint on these columns. The following describes these columns:

Field Type      NULLABLE
Numeric NULL
COMP NOT NULL
COMP-1 NOT NULL
COMP-2 NULL
COMP-3 NOT NULL
COMP-4 NOT NULL
COMP-5 NOT NULL
COMP-6 NOT NULL
Other comp See above types

In this case, if you attempt to insert a row into the COBOL file and specify NULL for one of these columns, or do not specify a value, you will receive the error message:

“***** ERROR: NULL not allowed for column”

From within the command-line query tool, you can check which columns have this constraint. For example, to find out which columns in the table COMPTEST will not allow a null value, use the command:

select
        column_name, ordinal_position
from
        information_schema.columns
where
        table_name = 'COMPTEST'
and
        is_nullable = 'N';

For columns having the NOT NULL constraint, you must specify a value.

Note: This variable is ignored if your data source is read-only.