cobol cics db2 program
TRANSCRIPT
-
7/29/2019 Cobol CICS DB2 Program
1/5
000100******************************************************************00010001
000200* *00020001
000300* PROGRAM TITLE: WORKING WITH CURSORS IN DB2 *00030001
000600* *00060001
000700* PROGRAM OVERVIEW: *00070001
000800* ---------------------------------------------------------- *00080001
000900* | THIS PROGRAM DETALS WITH THE CONCEPT OF COBOL-CICS-DB2 |*00090001
001000* ---------------------------------------------------------- *00100001
001100* *00110001
001200* PROGRAMS CALLED : NONE *00120001
001300* *00130001
001400******************************************************************00140001
001500* 00150001
001600 IDENTIFICATION DIVISION. 00160000
001700 PROGRAM-ID. PY021. 00170000
002000* 00200002
002100******************************************************************00210002
002200*** DATA DIVISION ***00220002
002300******************************************************************00230002
002400* 00240002
002500 DATA DIVISION. 00250000
002600* 00260002
002700******************************************************************00270002
002800*** DATA DIVISION ***00280002
002900******************************************************************00290002003000* 00300002
003100 WORKING-STORAGE SECTION. 00310000
003210* 00321003
003300 01 WS-STDSTID PIC 9(9) VALUE ZERO. 00330002
003310* 00331003
003400 01 WS-STD-NULL PIC S9(4) USAGE COMP. 00340002
003410* 00341003
003500 01 WS-MENU PIC 9(5). 00350003
003510* 00351003
003600 01 WS-MESSAGE PIC X(20) VALUE "HELLO". 00360003
003610* 00361003
003700 01 WS-COMMAREA PIC X(5) VALUE ZERO. 00370003
003710* 00371003003800 01 WS-NAME PIC X(25). 00380003
003810* 00381003
003900 COPY DFHAID. 00390000
004000 COPY MY0021. 00400000
004100 COPY DFHATTR. 00410000
004200 EXEC SQL 00420000
004300 INCLUDE S29995 00430003
004400 END-EXEC. 00440000
004500 EXEC SQL 00450000
004600 INCLUDE SQLCA 00460003
004700 END-EXEC. 00470000
004900 LINKAGE SECTION. 00490000
005100 00510000005200 01 DFHCOMMAREA. 00520000
005300 05 WS-SUBMENU PIC X(5). 00530000
005310* 00531003
005320******************************************************************00532003
005330*** DATA DIVISION ***00533003
005340******************************************************************00534003
005350* 00535003
005500 PROCEDURE DIVISION. 00550000
005700 00570000
-
7/29/2019 Cobol CICS DB2 Program
2/5
005800 A000-FIRST-PARA. 00580003
005900 MOVE DFHCOMMAREA TO WS-COMMAREA. 00590003
006000 IF EIBCALEN = 0 00600003
006100 PERFORM B000-SEND-PARA 00610003
006200 MOVE 'EEEEE' TO WS-COMMAREA 00620003
006300 PERFORM B001-RETURN-PARA 00630003
006400 ELSE 00640000
006500 PERFORM C000-RECEIVE-PARA 00650003
006600 EVALUATE EIBAID 00660000
006700 WHEN DFHENTER 00670003
006800 PERFORM C100-GETSTDNO-PARA 00680003
006900 PERFORM C210-VALIDATE-PARA 00690003
007000 PERFORM C220-WRITE-PARA 00700003
007100 PERFORM B001-RETURN-PARA 00710003
007200 WHEN DFHPF3 00720003
007300 PERFORM D000-HANDLE-F3-PARA 00730003
007400 WHEN DFHPF5 00740003
007500 PERFORM D001-HANDLE-F5-PARA 00750003
007600 WHEN DFHPF6 00760003
007700 PERFORM D002-HANDLE-F6-PARA 00770003
007800 WHEN OTHER 00780003
007900 MOVE LOW-VALUES TO ADDSTDO 00790003
008000 MOVE "INVALID KEY PRESSED" 00800003
008010 TO ADDMSG2O 00801003
008100 PERFORM B000-SEND-PARA 00810003008200 END-EVALUATE 00820003
008300 PERFORM B001-RETURN-PARA 00830003
008400 END-IF 00840003
008410 . 00841003
008500*-----------------------* 00850000
008600*SEND MAP PARA. 00860000
008700*-----------------------* 00870000
008800 B000-SEND-PARA. 00880003
008900 MOVE LOW-VALUE TO ADDSTDI. 00890000
009000 EXEC CICS SEND 00900000
009100 MAP('ADDSTD') 00910003
009200 MAPSET('MY0021') 00920003
009300 ERASE 00930003009400 FREEKB 00940003
009500 END-EXEC 00950003
009510 . 00951003
009600*-----------------------* 00960000
009700*RETURN MAP PARA. 00970000
009800*-----------------------* 00980000
009900 B001-RETURN-PARA. 00990003
010000 EXEC CICS RETURN 01000000
010100 TRANSID('Y021') 01010003
010200 COMMAREA(WS-COMMAREA) 01020003
010300 END-EXEC 01030003
010310 . 01031003
010400*-----------------------* 01040000010500*RECEIVE MAP PARA. 01050000
010600*-----------------------* 01060000
010700 C000-RECEIVE-PARA. 01070003
010800 EXEC CICS RECEIVE 01080000
010900 MAP('ADDSTD') 01090003
011000 MAPSET('MY0021') 01100003
011100 END-EXEC 01110003
011110 . 01111003
011200*-----------------------* 01120000
-
7/29/2019 Cobol CICS DB2 Program
3/5
011300*AUTO GENARATION PARA. 01130000
011400*-----------------------* 01140000
011500 C100-GETSTDNO-PARA. 01150003
011600 EXEC SQL 01160000
011700 SELECT MAX(STID) 01170003
011800 INTO :WS-STID:WS-STD-NULL 01180003
011900 FROM STUDENT 01190003
012000 END-EXEC 01200003
012010 . 01201003
012100 IF WS-STD-NULL = -1 01210000
012200 THEN 01220000
012300 COMPUTE WS-STDSTID = 200000000 01230003
012400 ELSE 01240000
012500 COMPUTE WS-STDSTID = WS-STID + 1 01250003
012600 END-IF 01260003
012610 . 01261003
012700 01270000
012800*C2000-ADDSTD-PARA. 01280000
012900*----------------------------------------------------------------*01290000
013000* INPUT VALIDATION *01300000
013100*----------------------------------------------------------------*01310000
013200 C210-VALIDATE-PARA. 01320003
013300 IF (SDNAMEL = 0) THEN 01330003
013500 MOVE "ENTER ATLEAST ONE CHARACTER FOR NAME" 01350003
013510 TO ADDMSG1O 01351003013600 MOVE "MAKE CHANGES AND PRESS ENTER" 01360003
013610 TO ADDMSG2O 01361003
013700 MOVE -1 TO SDNAMEL 01370000
013800 PERFORM C210-SENDFINAL-PARA 01380003
013900 PERFORM B001-RETURN-PARA 01390003
014000 END-IF. 01400000
014100 01410000
014200 IF ( SDMAILL = 0 ) 01420000
014300 THEN 01430000
014400 MOVE "ENTER ATLEAST ONE CHARACTER FOR MAIL" 01440003
014410 TO ADDMSG1O 01441003
014500 MOVE "MAKE CHANGES AND PRESS ENTER" 01450003
014510 TO ADDMSG2O 01451003014600 MOVE -1 TO SDMAILL 01460000
014700 MOVE ATTR-PXMBL TO SDNAMEA 01470003
014800 PERFORM C210-SENDFINAL-PARA 01480003
014900 PERFORM B001-RETURN-PARA 01490003
015000 END-IF. 01500000
015100 01510000
015200 IF (SDBTCHL = 0) THEN 01520003
015400 MOVE "ENTER ATLEAST ONE CHARECTER FOR BATCH" 01540003
015410 TO ADDMSG1O 01541003
015500 MOVE "MAKE CHANGES AND PRESS ENTER" 01550003
015510 TO ADDMSG2O 01551003
015600 MOVE ATTR-PXMBL TO SDNAMEA 01560003
015700 MOVE ATTR-PXMBL TO SDMAILA 01570003015800 MOVE -1 TO SDBTCHL 01580003
015900 PERFORM C210-SENDFINAL-PARA 01590003
016000 PERFORM B001-RETURN-PARA 01600003
016100 END-IF. 01610000
016200*-----------------------* 01620000
016300*FINAL MAP SEND PARA. 01630000
016400*-----------------------* 01640000
016500 C210-SENDFINAL-PARA. 01650003
016600 EXEC CICS SEND 01660000
-
7/29/2019 Cobol CICS DB2 Program
4/5
016700 MAP('ADDSTD') 01670003
016800 MAPSET('MY0021') 01680003
016900 ERASE 01690003
017000 CURSOR 01700003
017100 FREEKB 01710003
017200 END-EXEC. 01720000
017300*-----------------------* 01730000
017400*WRITE TO TABLE PARA. 01740000
017500*-----------------------* 01750000
017600 C220-WRITE-PARA. 01760003
017700 MOVE SDNAMEL TO WS-SNAME-LEN. 01770003
017800 MOVE SDMAILL TO WS-SEMAIL-LEN. 01780003
017900 MOVE SDBTCHL TO WS-BATCH-LEN. 01790003
018000 MOVE SDNAMEI TO WS-SNAME-TEXT. 01800003
018100 MOVE SDMAILI TO WS-SEMAIL-TEXT. 01810003
018200 MOVE SDBTCHI TO WS-BATCH-TEXT. 01820003
018300 MOVE WS-STDSTID TO WS-STID. 01830003
018400 01840000
018500 EXEC SQL 01850000
018600 INSERT INTO STUDENT 01860003
018700 VALUES(:WS-STID,:WS-SNAME,:WS-SEMAIL,:WS-BATCH) 01870003
018800 END-EXEC. 01880000
018900 IF SQLCODE = 0 01890003
019000 THEN 01900000
019100 MOVE "SUCCESS" TO MSGO 01910003019200 PERFORM C2300-SUCESS-WRITE-PARA 01920003
019300 PERFORM C2210-SUCESS-SEND-MAP-PARA 01930003
019400 PERFORM B0001-RETURN-PARA 01940003
019500 ELSE 01950000
019600 PERFORM C2400-FAIL-WRITE-PARA 01960003
019700 PERFORM B0001-RETURN-PARA 01970003
019800 END-IF 01980003
019810 . 01981003
019900*-----------------------* 01990000
020000*WRITE TO MAP PARA. 02000000
020100*-----------------------* 02010000
020200 C230-SUCESS-WRITE-PARA. 02020003
020300 MOVE WS-STDSTID TO SSSTIDO . 02030003020400 MOVE WS-SNAME-TEXT TO SSNAMEO . 02040003
020500 MOVE WS-SEMAIL-TEXT TO SSMAILO . 02050003
020600 MOVE WS-BATCH-TEXT TO SSBTCHO . 02060003
020700*-----------------------* 02070000
020800*ERROR HANDLING PARA. 02080000
020900*-----------------------* 02090000
021000 C240-FAIL-WRITE-PARA. 02100003
021100 EVALUATE TRUE 02110000
021200 WHEN SQLCODE = -551 02120003
021300 MOVE ' NO PERMISSION OT ACCESS THE TABLE' 02130003
021310 TO MSGO 02131003
021400 WHEN SQLCODE = -204 02140003
021500 MOVE 'THE TABLE DOES NOT EXIST' TO MSGO 02150003021510 TO MSGO 02151003
021600 WHEN OTHER 02160003
021700 MOVE ' SOME DATABASE ERROR' TO MSGO 02170003
021710 TO MSGO 02171003
021800 END-EVALUATE 02180000
021900 EXEC CICS SEND TEXT 02190000
022000 FROM(WS-MESSAGE) 02200003
022100 ERASE 02210003
022200 END-EXEC. 02220000
-
7/29/2019 Cobol CICS DB2 Program
5/5
022300 EXEC CICS RETURN 02230000
022400 TRANSID('Y021') 02240003
022500 COMMAREA(WS-COMMAREA) 02250003
022600 END-EXEC. 02260000
022700*-----------------------* 02270000
022800*SEND MAP PARA. 02280000
022900*-----------------------* 02290000
023000 C220-SUCESS-SEND-MAP-PARA. 02300003
023100 EXEC CICS SEND 02310000
023200 MAP('SUCSTD') 02320003
023300 MAPSET('MY0021') 02330003
023400 FREEKB 02340003
023500 ERASE 02350003
023600 END-EXEC 02360003
023610 . 02361003
023700*-----------------------* 02370000
023800*HANDLING F3. 02380000
023900*-----------------------* 02390000
024000 D000-HANDLE-F3-PARA. 02400003
024100 MOVE "THANK YOU" TO WS-MESSAGE 02410003
024200 EXEC CICS SEND TEXT 02420000
024300 FROM(WS-MESSAGE) 02430003
024400 ERASE 02440003
024500 FREEKB 02450003
024600 END-EXEC. 02460000024700 EXEC CICS RETURN 02470000
024800 END-EXEC 02480003
024810 . 02481003
024900*-----------------------* 02490000
025000*HANDLING F5. 02500000
025100*-----------------------* 02510000
025200 D001-HANDLE-F5-PARA. 02520003
025300 MOVE SPACES TO ADDSTDO 02530003
025400 PERFORM B0000-SEND-PARA 02540000
025500 PERFORM B0001-RETURN-PARA 02550003
025510 . 02551003
025600*-----------------------* 02560000
025700*HANDLING F6. 02570000025800*-----------------------* 02580000
025900 D002-HANDLE-F6-PARA. 02590003
026000 EXEC CICS XCTL 02600000
026100 PROGRAM('PY025') 02610003
026200 END-EXEC 02620003
026300 . 02630003