Method 3 example

The following example uses prepare and fetch, and prompts the user for an order by clause in a select statement:

exec sql begin declare section end-exec 
 01  AGE                PIC S9(2) COMP. 
 01  R-AGE              PIC S9(2). 
 01  ROYALTY            PIC S9(9) COMP. 
 01  TITLE              PIC X(25). 
 01  MANAGER            PIC X(25). 
 01  SQLSTR2            PIC X(100). 
 01  I-TITLE            PIC S9(4) COMP. 
 01  I-AGE              PIC S9(4) COMP. 
 exec sql end declare section end-exec 
 
 01  DSP-AGE            PIC  9(2). 
 01  DSP-ROYALTY        PIC -ZZZ,ZZZ,ZZZ. 
 
 PROCEDURE DIVISION. 
 
     MOVE 60 TO R-AGE. 

MOVE "select age, royalty, title, manager from
 -          " inprogr where age !=?" TO SQLSTR2
 MOVE 0 TO I-AGE. 
     exec sql prepare statement2 from :SQLSTR2 
         end-exec. 
     exec sql declare C1 cursor for statement2 
         end-exec 
     exec sql whenever not found goto NOT-FOUND 
         end-exec 
     exec sql open C1 using :R-AGE indicator :I-AGE
         end-exec. 
 
 RET-LOOP. 
     MOVE 0 TO I-TITLE. 
 
     exec sql fetch C1 into  
         :AGE, :ROYALTY,  
         :TITLE indicator :I-TITLE,  
         :MANAGER end-exec. 
 
     MOVE AGE TO DSP-AGE. 
     MOVE ROYALTY TO DSP-ROYALTY. 
     IF I-TITLE = -1 
         MOVE "Null" TO TITLE. 
 
     DISPLAY "Age = " DSP-AGE 
             " Royalty = " DSP-ROYALTY 
             " Title = " TITLE 
             " Manager = " MANAGER. 
     DISPLAY " ". 
     GO TO RET-LOOP. 
 
 NOT-FOUND. 
     exec sql close C1 end-exec.