IDENTIFICATION DIVISION.
PROGRAM-ID. EXAQRY01.
*
* InstantSQL Advanced Query Example 01.
*
*This example requests a department code and uses
*a parameterized query to display the employee number
*and surname for all employees in that department.
*The process is repeated until a department code of
*99 is entered. The example also improves its
*efficiency by binding the result columns to COBOL
*data items.
*
*Note: To simplify the example, error handling
* is incomplete.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY "lisqlall.cpy".
01 ws-emp-data.
10 ws-number PIC 9(09). *> employee number
10 ws-surname PIC X(30). *> employee surname
10 ws-deptcode PIC 9(02). *> department code
PROCEDURE DIVISION.
A.
SQL CONNECT DATASOURCE sql-ConnectionHandle
"Payroll"
"MyName"
"MyPassword".
IF NOT sql-OK
DISPLAY "<Error connecting to Payroll DS.>"
STOP RUN
END-IF.
SQL PREPARE QUERY sql-QueryHandle
sql-ConnectionHandle
"SELECT Number, Surname FROM Employees
- " WHERE DeptCode = ?".
SQL BIND PARAMETER sql-QueryHandle
1 sql-Integer sql-Param-Input
ws-deptcode OMITTED.
SQL BIND COLUMN sql-QueryHandle
1 ws-number OMITTED
2 ws-surname OMITTED.
PERFORM WITH TEST AFTER UNTIL ws-deptcode = 99
DISPLAY "Department Code: "
ACCEPT ws-deptcode COL 0
IF ws-deptcode NOT = 99
SQL START QUERY sql-QueryHandle
PERFORM WITH TEST AFTER UNTIL NOT sql-OK
SQL FETCH ROW sql-QueryHandle
IF sql-OK
DISPLAY "Employee #" ws-number
" Surname: " ws-surname
END-IF
END-PERFORM
END-IF
END-PERFORM.
SQL END QUERY sql-QueryHandle.
SQL DISCONNECT DATASOURCE sql-ConnectionHandle.
SQL SHUTDOWN.
STOP RUN.
END PROGRAM EXAQRY01.