SQL/MP Programming Manual for COBOL85

Dynamic SQL Operations
HP NonStop SQL/MP Programming Manual for COBOL85429326-004
10-34
Displaying Output
Example 10-3. Displaying Output Column Values
DATA DIVISION.
* Define storage for all possible data types for output columns:
01 COLUMNS-REC.
02 COLUMN OCCURS 20 TIMES.
03 C PIC X(60).
03 RCHAR REDEFINES C PIC X(60).
03 RINT REDEFINES C PIC 9(9) COMP.
03 RVARCHAR REDEFINES C.
04 LEN PIC S9(4) COMP.
04 VAL PIC X(30) .
03 RNUMERIC REDEFINES C PIC S9(15)V9(3) COMP.
03 RDECIMAL REDEFINES C PIC S9(9)V9(3) DISPLAY.
03 RLARGINT REDEFINES C PIC 9(18) COMP.
03 RSMLINT REDEFINES C PIC 9(4) COMP.
* Define loop counter:
01 INDEX PIC S9(4) COMP.
* Define a variable to save the length of a column:
01 CLEN PIC S9(4) COMP.
* Define a variable to store the column name:
01 NAME PIC X(30).
* Get the column name from the names buffer and store in
* NAME.
PROCEDURE DIVISION.
PERFORM UNTIL INDEX IS > OUTPUT-NUM OF SQLSA
...
* Check for character data type:
IF DATA-TYPE OF SQLVAR OF OUT-SQLDA(INDEX) < 64
MOVE DATA-LEN OF SQLVAR OF OUT-SQLDA(INDEX) TO CLEN
DISPLAY NAME, " = ",
RCHAR OF COLUMN(INDEX) (1 : CLEN)
ELSE
* Check for VARCHAR data type:
IF DATA-TYPE OF SQLVAR OF OUT-SQLDA ( INDEX ) = 64
MOVE LEN OF RVARCHAR OF COLUMN( INDEX ) TO CLEN
DISPLAY NAME, " = ",
VAL OF RVARCHAR OF COLUMN( INDEX ) ( 1 : CLEN )
ELSE
* Check for 16-bit integer data type:
IF DATA-TYPE OF SQLVAR OF OUT-SQLDA ( INDEX ) <= 131
DISPLAY NAME , " = ", RSMLINT OF COLUMN( INDEX )
ELSE ...
* Continue checking all possible data types.