Beruflich Dokumente
Kultur Dokumente
There are a sequence of steps which should be done for developing COBOL stored procedures -
1) & 2) are initial setup and once they are done, no need to repeat them again. [Application programmers can
skip it].
*Declare Identification division and Environment Division [No file Section needed].
* Working-Storage Section - Variables, SQLCA & DCLGEN for DB2 table to be accessed.
* Linkage-Section - List of Variables passed by Calling PGM.
* Procedure Division - Procedure Division Using would be having list of variables passed, logic to fetch data
from DB2 using SQL.
IDENTIFICATION DIVISION.
PROGRAM-ID. EMPDTL1C.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 WS-PARMAREA.
02 WS-EMPNO PIC X(06).
-----------------------------------------------------------------
VARIABLES FOR ERROR-HANDLING
-----------------------------------------------------------------
01 ERROR-MESSAGE.
02 ERROR-LEN PIC S9(4) COMP VALUE +960.
02 ERROR-TEXT PIC X(80) OCCURS 12 TIMES
INDEXED BY ERROR-INDEX.
77 ERROR-TEXT-LEN PIC S9(9) COMP VALUE +80.
-----------------------------------------------------------------
SQLCA AND DCLGENS FOR TABLES
-----------------------------------------------------------------
EXEC SQL INCLUDE SQLCA END-EXEC.
LINKAGE SECTION.
01 PEMPNO PIC X(6).
01 PFIRSTNME.
49 PFIRSTNME-LEN PIC S9(4) COMP.
49 PFIRSTNME-TEXT PIC X(12).
01 PMIDINIT PIC X(1).
01 PLASTNAME.
49 PLASTNAME-LEN PIC S9(4) COMP.
49 PLASTNAME-TEXT PIC X(15).
01 PWORKDEPT PIC X(3).
01 PHIREDATE PIC X(10).
01 PSALARY PIC S9(7)V9(2) COMP-3.
01 PSQLCODE PIC S9(9) COMP.
01 PSQLSTATE PIC X(5).
01 PSQLERRMC.
49 PSQLERRMC-LEN PIC S9(4) COMP.
49 PSQLERRMC-TEXT PIC X(250).
EXEC SQL
SELECT
FIRSTNME,
MIDINIT,
LASTNAME,
WORKDEPT,
HIREDATE,
SALARY
INTO
:PFIRSTNME
,:PMIDINIT
, :PLASTNA ME
, :PWORKDEPT
, :PHIREDATE
, :PSALARY
FROM EMP
WHERE EMPNO = :WS-EMPNO
END-EXEC.
EVALUATE SQLCODE
WHEN 0
CONTINUE
WHEN OTHER
PERFORM 9000-DBERROR THRU 9000-EXIT
END-EVALUATE.
2000-EXIT.
EXIT.
-----------------------------------------------------------------
9000-DBERROR - GET ERROR MESSAGE
-----------------------------------------------------------------
9000-DBERROR.
CALL 'DSNTIAR' USING SQLCA ERROR-MESSAGE ERROR-TEXT-LEN.
IF RETURN-CODE = ZERO
PERFORM 9999-ERROR-DISPLAY THRU 9999-EXIT
VARYING ERROR-INDEX FROM 1 BY 1
UNTIL ERROR-INDEX GREATER THAN 12.
GOBACK.
9000-EXIT.
EXIT.
-----------------------------------------------------------------
9999-ERROR-DISPLAY
-----------------------------------------------------------------
9999-ERROR-DISPLAY.
DISPLAY ERROR-TEXT (ERROR-INDEX).
9999-EXIT.
EXIT.
*****************************************************************************
Calling Program Set up
Well We don't need to do much in calling program except making call to stored procedure
EXEC SQL
CALL EMPDTL1C( :PEMPNO
,:PFIRSTNME
,:PMIDINIT
,:PLASTNAME
,:PWORKDEPT
,:PHIREDATE
,:PSALARY
,:PSQLCODE
,:PSQLSTATE
,:PSQLERRMC
)
END-EXEC.
Note :- All the variables used above in CALL statement need to be declared in WORKING-STORAGE Section.