SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
Host Variables in COBOL Programs
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
4-21
Retrieving Rows With Nulls
See DATEFORMAT Function in the SQL/MX Reference Manual. 
Retrieving Rows With Nulls 
To retrieve a row that contains null, use the NULL predicate in the WHERE clause. 
You cannot use an indicator variable set to -1 in a WHERE clause to retrieve a row 
that contains null. If you do, NonStop SQL/MX does not find the row and returns a 
NOTFOUND exception even if a column actually contains null.
Example 4-1. Null Test Example
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
 01 PRODUCT-REC.
 02 PRODNUM PIC 9(5) COMP.
 02 TIMESTAMP-SHIPPED PIC X(26).
 02 SHIP-IND PIC S9(4) COMP.
 ... 
* Variable for selecting the product number:
 01 MIN-PRODNUM PIC 9(5) COMP.
 EXEC SQL END DECLARE SECTION END-EXEC.
* Variable for displaying the timestamp or NULL:
 01 VALUE-DISPLAY PIC X(26) VALUE SPACES.
 ... 
* Declare a cursor to perform the SELECT:
 EXEC SQL DECLARE get_prodnum CURSOR FOR
 SELECT prodnum, timestamp_shipped 
 FROM sales.products
 WHERE prodnum >= :MIN-PRODNUM
 END-EXEC.
 PROCEDURE DIVISION.
 0100-MAIN.
 ...
 EXEC SQL OPEN get_prodnum END-EXEC.
 PERFORM 0150-FETCH UNTIL SQLSTATE = "02000".
 EXEC SQL CLOSE get_prodnum END-EXEC.
 ...
 0150-FETCH.
 EXEC SQL FETCH get_prodnum INTO
 :PRODNUM, 
 DATEFORMAT (:TIMESTAMP-SHIPPED INDICATOR :SHIP-IND, USA)
 END-EXEC.
* SQL/MX sets SHIP-IND to less than zero if the column 
* contained a null value in the selected row.
 IF SHIP-IND < 0 THEN MOVE "NULL" TO VALUE-DISPLAY
 ELSE MOVE TIMESTAMP-SHIPPED TO VALUE-DISPLAY.
 IF SQLSTATE = "00000" DISPLAY PRODNUM " " VALUE-DISPLAY.
 ... 
COBOL










