IDENTIFICATION DIVISION.
PROGRAM-ID. EXSINQ01.
*
* InstantSQL Status Inquiry Example 01.
*
*This example prepares a SELECT query for all
*the columns in the Employees table for a specified
*department code value. The example then gets the
*column numbers for the employee Number and Surname
*columns before listing these columns for department
*code 20. Before disconnecting from the data source,
*the example gets the connection status to ensure that
*there are no queries associated with the connection.
*
*Note: To simplify the example, error handling
* is incomplete.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY "lisqlall.cpy".
01 ws-DataItems.
05 ws-number-ColNo PIC 9(4) BINARY.
05 ws-surname-ColNo PIC 9(4) BINARY.
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.
*Connect to Payroll data source.
SQL CONNECT DATASOURCE sql-ConnectionHandle
"Payroll"
"MyName"
"MyPassword".
IF NOT sql-OK
DISPLAY "<Error connecting to Payroll data source.>"
STOP RUN
END-IF.
*Prepare SELECT query.
SQL PREPARE QUERY sql-QueryHandle
sql-ConnectionHandle
"SELECT * FROM Employees WHERE DeptCode = ?"
*Get query description.
SQL DESCRIBE QUERY sql-QueryHandle
sql-Query-Description.
DISPLAY "Query has "
sql-QryNoCols OF sql-Query-Description
" result columns.".
*Get column descriptions and save column numbers
*for employee Number and Surname columns.
SQL DESCRIBE COLUMN sql-QueryHandle
"Number" sql-Column-Description.
MOVE sql-ColNumber OF sql-Column-Description
TO ws-number-ColNo.
SQL DESCRIBE COLUMN sql-QueryHandle
"Surname" sql-Column-Description.
MOVE sql-ColNumber OF sql-Column-Description
TO ws-surname-ColNo.
*Bind query parameter.
SQL BIND PARAMETER sql-QueryHandle
1 sql-Integer sql-Param-Input ws-deptcode OMITTED.
*Set parameter value and start (execute) query.
MOVE 20 TO ws-deptcode.
SQL START QUERY sql-QueryHandle.
*Display result set from query of department code 20.
PERFORM UNTIL NOT sql-OK
SQL FETCH ROW sql-QueryHandle
IF sql-OK
SQL GET DATA sql-QueryHandle
ws-number-ColNo ws-number OMITTED
ws-surname-ColNo ws-surname OMITTED
DISPLAY "Employee #" ws-number
" Surname: " ws-surname
END-IF
END-PERFORM
*End query.
SQL END QUERY sql-QueryHandle.
*Get connection description.
SQL DESCRIBE CONNECTION sql-ConnectionHandle
sql-Connection-Description.
*Disconnect from Payroll data source if there are
*no associated queries.
IF sql-ConNoQueries of sql-Connection-Description = 0
SQL DISCONNECT DATASOURCE sql-ConnectionHandle
END-IF.
*Terminate InstantSQL and application.
SQL SHUTDOWN.
STOP RUN.
END PROGRAM EXSINQ01.