Database Interface in COBOL
Introduction
- In COBOL database interface, programs interact with DB2 database.
- It includes various terms, such as embedded SQL, DB2 Application programming, host variables, SQLCA, SQL Queries, Cursors.
Embedded SQL
- Embedded SQL statements are used in COBOL programs to execute standard SQL operations.
- These statements are preprocessed by SQL processor before the application program is compiled.
- COBOL is called as Host Language. COBOL-DB2 applications are those applications which consists of both COBOL and DB2.
- It works like normal SQL statements with some small changes.
DB2 Application Programming
The following are the rules to be considered while coding a COBOL-DB2 program:- All the SQL statements should be delimited between EXEC SQL and END-EXEC.
- The SQL statement should be coded in Area B.
- All the tables are used in a program that should be declared in the Working-Storage Section using with the INCLUDE statement.
- NCLUDE and DECLARE TABLE must appear in the Procedure Division.
Host Variables
- Host variables are used for inserting or collecting a data from the table.
- It is important to declare host variables for all values passed between the program and DB2.
- Host variables are declared in the Working-Storage section.
- It cannot be group items, but it may be grouped together in host structure.
- Host variables cannot be redefined or renamed.
Syntax
Following syntax defines how to declare host variables and include a table in Working-Storage section:
DATA DIVISION.
WORKING-STORAGE SECTION.
EXEC SQL
INCLUDE table-name
END-EXEC.
EXEC SQL BEGIN DECLARE SECTION
END-EXEC.
01 EMPLOYEE-REC.
05 EMPLOYEE-ID PIC 9(4).
05 EMPLOYEE-NAME PIC X(25).
05 EMPLOYEE-ADDRESS X(50).
EXEC SQL END DECLARE SECTION
END-EXEC.
SQLCA
- SQLCA is known as a SQL Communication Area.
- It acts as a communication area between COBOL and DB2 to validate the SQLs execution.
- It is a communication area which DB2 passes the feedback of SQL execution to the program. It notifies the program, whether an execution was successful or not.
- SQLCA is used to verify the return code of the specific execution once SQL execution is finished.
- In SQLCA, there are a number of predefined variables like SQLCODE that contains the error code.
Following are the return code which verifies the SQLCODE:
i. If the SQLCODE is
0(ZERO) then successfully executed the query.
ii. If the SQLCODE is
Positive then query executed successfully, but with a warning.
iii. If SQLCODE is
Negative then displays error condition.
Syntax
Following syntax defines how to declare an SQLCA in the Working-Storage section:
DATA DIVISION.
WORKING-STORAGE SECTION.
EXCE SQL
INCLUDE SQLCA
END-EXEC.
Cursors
- Cursor is a data structure which holds all the results of the query.
- It is defined in the procedure division or working-storage section.
- It is used to handle multiple rows selection at a time.
- Declare, Open, Close, Fetch are the operations associated with the cursor.
Declare cursor
- DECLARE statement is the first statement which is non-executable statement.
- The declaration can be done in the Working-Storage section or the Procedure Division.
Syntax:
EXEC SQL
DECLARE EMPCUR CURSOR FOR
SELECT EMPLOYEE-ID, EMPLOYEE-NAME, EMPLOYEE-ADDRESS FROM EMPLOYEE
WHERE EMPLOYEE-ID >: WS-EMPLOYEE-ID
END-EXEC.
Open
Open statement performs before using a cursor. It prepares the SELECT statement for execution.
Syntax:
EXEC SQL
OPEN EMPCUR
END-EXEC.
Close
Close statement is necessary to close a cursor before ending a program. It releases all the memory occupied by the cursor.
Syntax:
EXEC SQL
CLOSE EMPCUR
END-EXEC.
Fetch
Fetch statement recognizes the cursor & puts the value in the INTO clause and coded in a loop.
Syntax:
EXEC SQL
FETCH EMPCUR
INTO : WS-EMPLOYEE-ID, : WS-EMPLOYEE-NAME, WS-EMPLOYE-ADDRESS
END-EXEC.