4.15 HIGHVAL | LOWVAL

Use the @HIGHVAL and @LOWVAL functions when you need to generate a value, but you want to constrain it within an upper or lower limit. These functions emulate the COBOL functions of the same name.

Use @HIGHVAL and @LOWVAL only with string and binary data types. Using them with decimal or date data types, or with SQLEXEC, can cause errors.

Note:

Invalid maps to incorrect type will result in a mapping error 222.

Syntax

@HIGHVAL ([length]) | @LOWVAL ([length]) 
length

Optional. Specifies the binary output length in bytes. The maximum value of length is the length of the target column.

Examples

Example 1   

This example sets COBOL-type group level to low values if key is less than 50, and it sets COBOL-type group level to high values if the key is greater than 50.

MAP \PROD.$DATA.MASTER.CUSTOMER, TARGET \BACK.$DATA.MASTER.CUSTOMER, DEF CUSTOMER-REC,
TARGETDEF NEW_CUSTOMER_REC,
COLMAP (USEDEFAULTS, CUST-KEY = CUST-KEY,
    GROUP-LEVEL = @IF (CUST-KEY < 50,@LOWVAL(), @HIGHVAL()));
Example 2   

The following example assumes that the size of the GROUP-LEVEL field is 5 bytes.

Function statement Results
GROUP-LEVEL = @HIGHVAL ()
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
GROUP-LEVEL = @LOWVAL ()
{0x00, 0x00, 0x00, 0x00, 0x00}
GROUP-LEVEL = @HIGHVAL (3)
{0xFF, 0xFF, 0xFF}
GROUP-LEVEL = @LOWVAL (3)
{0x00, 0x00, 0x00}