SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
Static Rowsets
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
7-26
Using the Index Identifier
...
EXEC SQL ROWSET FOR KEY BY row_id 
 SELECT empnum, row_id 
 INTO :hva_empnum, 
 :hva_row_id 
 FROM persnl.employee 
 WHERE jobcode = :hva_jobcode; 
...
EXEC SQL GET DIAGNOSTICS :numrows = ROW_COUNT; 
... 
for (i = 0; i < numrows; i++) {
 printf("\nEmp Nbr: %hu", hva_empnum[i]);
 printf("\nRow Id: %hu", hva_row_id[i]);
} 
...
...
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
 01 sqlstate pic x(5).
 01 rs.
 02 ROWSET[5] hvajobcode pic 9(4) comp.
 02 ROWSET[100] hvaempnum pic 9(4) comp.
 02 ROWSET[100] hvarowid pic s9(4) comp.
 01 numrows pic 9(9) comp.
 EXEC SQL END DECLARE SECTION END-EXEC.
 01 i pic s9(4) comp.
 ...
***** Populate the rowset in some way *****
 Move 100 TO hvajobcode(1)
 Move 200 TO hvajobcode(2)
***3 Does not exist***
 Move 350 TO hvajobcode(3) 
 Move 400 TO hvajobcode(4)
 Move 500 TO hvajobcode(5)
 EXEC SQL ROWSET FOR KEY BY row_id
 SELECT empnum, row_id+1
 INTO :hvaempnum,
 :hvarowid
 FROM employee
 WHERE jobcode = :hvajobcode END-EXEC.
 EXEC SQL GET DIAGNOSTICS :numrows = ROW_COUNT end-exec.
 PERFORM VARYING i FROM 1 BY 1 UNTIL i < numrows
 display "Emp Nbr: " hvaempnum(i)
 display "Row Id: " hvarowid(i)
 end-perform.
...
The output for this example has 20 rows selected from the EMPLOYEE table:
•
Eleven rows with jobcode equal to 100 and row identifier value 0 for C and 1 for 
COBOL
•
One row with jobcode equal to 200 and row identifier value 1 for C and 2 for 
COBOL
•
Five rows with jobcode equal to 400 and row identifier value 3 for C and 4 for 
COBOL
COBOL










