1.
INTODUCTION TO ONLINE -> CICS
2. SCREEN COMMUNCIATION
1. DESIGN A BMS MAP
2. COMPILE => SETUP -> EXECUTE THE MAP -> SEE THE DESIGN
3. COBOL+CICS PGM
4. COMPILE -> SETUP -> EXECUTE THE TRAN -> SEE PROCESS 4 CLASS =. 90% THOERY - 10%
3. SCREEN -> SCREEN NAVIGATION --> 1 SESSION -> U NEED TO ATTEND THESE CLASSES.
4. DATA COMMUNCATION
1. DB2 TABLE -> COBOL + CICS + DB2 PGM (MAINPGM-SUBPGM) -- TAINING RECORD/ YOUTUB
E CHANNEL
2. VSAM KSDS -> COBOL + CICS + KSDS FILE -- SAME OVER HERE
3. QUEUE -> COBOL + CICS + DB2 + TSQ -- LAST PGM -->NOT ANY PLACE
--> COBOL + CICS + TDQ
5. HANDLE ERROR -> OTHER POINT -
=========================================================================
CICS CLASS 01:
MAINFRAME -> 1. STORE THE DATA 1. FILE SYSTEM 2. DATABASE
PS DB2
2. PROCESS THE DATA 1. BATCH SYSTEM 2. ONLINE SYSTEM
BATCH -> JCL 1. BULK DATA PROCESS 2. SCHDUDLER 3. WITHOUT USER INTERACTION 4. THR
U JCL
ONLINE -> CICS 1. SHORT INFORMATION 2. UNSCHDULE 3. WITH USER INTETRACTION 4. THR
U CICS.
MAINFRAME APPLICATION -> ONLINE -> 1. CICS
2. IMS-DC
ONLINE SYSTEM -> QUICK ACCESS TO DATA>
CLIENT
|
IT -- DATA -- BUSINESS-USER
|
CUSTOMER
I WANT TO SEE ANY DATA IN A DB2 TABLE:
BUSINESS USER CUSTOMER
1. LOGIN MAINFRAME DO THIS NO
2. ISPF -> DB2I SCREEN DO THIS
3. OPTION SPUFI -> CREATE DATASET-INPUT /OUTPUT MAY BE
4. EDIT THE DATASET - CODE A SQL QUERY -> EXECUTE I CANNOT
5. SEE THE DATA IN SPUFI OUTPUT FILE I CANOT
ONLINE APPLICATION -> USER FRONT SYSTEM --> INTERNAL PROJECT PERSON -> MAINFRAM
E
CUSTOMER FRINT SYSTEM --> EXTERNAL PERSON -> NOT INTO MAINFRAME
USER FRONT SYSTEM --> SCREEN (CICS) -> INPUT-TRIGGER -> PROCESS - PGM -> TABLE/FIL
E -DATA
CUSTOMER FRONT SYSTEM -. JAVA/.NET (SCREEN) - INPUT - TRIGGER -> WEB SERIVICES -->
TIRGR THE CICS TRAN -> CICS -PGM -> DATA
|__________________________________MQ SERIES (MESSAGE QUEUE) ---|
PROJECT -> 100 APPLICATION ONLINE -> PERCENT OF HAVING -> CUSTOMER vs USER
80% - USER
20% - CUSTOMER
100 ONLINE APPLICATRION 100 - CICS + 20 CUSTOMER
OUR TRAINING -> USER FRONT SYSTEM:
CICS -> CUSTOMER INFORMATION AND CONTROL SYSTEM
CICS -> DB/DC SYSTEM DB -> DATA BASE -> STORE THE DATA
DC -> DATA COMMUNICAITON -> PASS THE DATA
IN OUR PROJECT -> WE USE ONLY CICS -> DC -> DATA COMMUNCATION ONLY
CICS - INTERFACE B/W APPLICAITON PGM -> DATA SOURCE
IN BATCH -> PGM =EXECUTING IN Z/OS
IN ONLINRE -> PGM -.EXECUTED BY CICS
PGM ---> CICS --> DATA/(FILE-DB2)
|-------CICS------------|
================================================================================
===============================================================================
CLASS -02:
BMS CODING:
MAPSET-NAME DFHMSD PARAMETER:
1. MAPSET NAME -> 1-7 CHAR ONLY -> WHILE EXEUTING ON THE TERMINAL -> PLACE 8TH CH
AR -> TYPE.
--> DEVICE INDEPENDENT
TYPE -> - CONTROL THE OUTPUT OF THE COMPILER
TYPE=MAP --> COMPILER -> CREATE ONLY PHY MAP (LOAD)
TYPE=DSECT --> COMPILER -> CREATE ONLY SYM MAP (COPYBOOK)
TYPE=&SYSPARM --> COMPILER -> FOR BOTH - SYM + PHY
TYPE=FINAL --> END OF THE MAPSET
LANG--> USED TO TELL IN WHICH LANG - COPYBOOK TO BE CREATED..
COBOL-CICS -> LANG=COBOL
PLI - CICS -> LANG=PLI
ASM -> LANG=ASM > COBOL
MODE=INOUT
IN -> ONLY FOR INPUT -> GET THE DATA TO THE PGM
OUT > ONLY FOR OUTPUT ->, ONLY SEND THE DATA TO SCREEN
INOUT --> BOTH
TERM-ALL , STORAGE=AUTO , MAPATTS=COLOR DEATTS=COLOR -> USE IT COPY-PASTE
TIOAPFX=YES --> BY DEFAULT =YES -
ALONG WITH UR DATA FILED -> U NEED ADDITIONAL MEMORY FOR TERMINA I/O PROCESS
TERMINAL INPUT OUTPUT AREA PREFIX -= TIOAPFX=YES -> COMPILER 0 ADD -> 12 BYTES OF
FILLER VARIABLE
12 BYTE OF FILLER VARIABLE -> 1ST VARIABLE IN THE COPYBOOK
TIOAPFX=NO -> NO MEMORY ALLOCATION./.
0> WE CANNOT DO ANY TERMINAL INTERACTION
CTRL=(FREEKB,FRSET)
FREEKB -> FREE THE KEYBOARD.
-> CICS -WHEN RECEVIES ANY INPUT -> IT WIL LOCK THE KEYBOARD
--> WHEN AM SENDING THE MAP AS RESULT -> THE KEYBOARD SHOULD BE FREE FOR INPUT
S..
IF U DONT USE FREEKB -> -- X SYSTEM - LOCK THE TERMINAL
FRSET -> FIELD RESET..
ON A MAP -> I HAVE 80 FIELDS --> USER PROVIDED INPUT -> 1 FILEDS -> PRESS ENTER.
UR -PGM 1. RECEVIE ALL 80 FILED DATA
2. RECEVIE ONLY 1 FIELD DATA
HOW THE CICS PGM KNOWS WHICH FILED TO RECEVIE...
1. SEND THE MAP -> RESET FIELDS -> MDT OFF (0) (MODFIED DATA TAG)
2. USER EDITS THE FILED -> FSET MDT ON (1)
3. CICS ALWAYS - RECEVIES ONLY THE FILED -WHICH ARE SET (MDT ON)
NOTE: IN CASE USER -DO NOT EDIT ANY FIELDS -> ENTER -> RECEIVE NOTHING --> COMMAN
D FAIL -> MAPFAIL**
ANY TIME U GET ANY ERROR IN CICS COMMAND -> SYSTEM ABEND THE PROCESS. IF U DON
T HANDLE THE CICS ERROR.
MSETNAME DFHMDF TYPE=&SYSPARM,LANG=COBOL,MODE=INOUT, X
TERM=ALL,STORAGE=AUTO,MAPATTS=(COLOR), X
TIOAPFX=YES,CTRL=(FREEKB,FRSET)
INTRO OF CICS:
CICS -> INTERFACE B/W APPLICATION PGM (COMMAND) -> DATA
CICS -. IS MIN OPERATING SYSTEM
3 MAIN COMPONENTS:
1. CONTROL PROGRAM -- TASK CARRIER
2. CONTROL TABLE*** --> CONTAIN THE REQUIRED COMPOENT DETAILS -> DEVELOPER TA
SK
3. CONTROL AREA --> AUTO - SYSTEM WIL TAKE -SPACE ALLOCATION FOR THE PROCESS.
IF AM THE COBOL-CICS PGM-> I WANT TO GET SOME DATA FROM A SCREEN.
COMMAND THE CICS -> TO GET THE DATA FILE -> 1. CONTROL PROGRAM -> TASK CARRIER (
CORIRE BOYS) --
2. CONTROL TABLE -> REQUIRE INFORMATION 0-UR COMPOENT DETAIL NEED TO BE SET
3. CONTROL AREA -> SPACE REQUIRED TO DO THE TASK
1. SCREEN DESIGN:
BMS => LANG -- BASIC MAPPING SUPPORT (MODULE ASM LANG)
TO DO THE DESING -> 3 COMPONENT
1. MAPSET -- COLLECTION OF 1 OR MORE MAP
2. MAP --> COLLECTION OF 1 OR MORE FIELDS
3. FIELDS --> ELEMENT THAT WE SEE ON THE SCREEN.
2 TYPES;
1. LABEL FILEDS -- USERID (NON-EDITABLE)
2. DATA VALUE FIELD -- _____
USERID: _____
TO DEFINE THESE 3 COMPONENT -> WE USE 3 ASM MACRO
DFHMSD --> MAPSET DEFINATION -> DEFINE THE MAPSET
DFHMDI --> MAP DEFIANTION INTERFACE -> DEFINE THE MAP
DFHMDF --> MAP DEFIANTION FIELDS --> DEFINE THE FIELDS
- BMS CODE SHEET -
MAPSET-NAME DFHMSD PARAMETER1,PARAMETER2,.... X(72)
PARA3,PARA4
MAP-NAME DFHMDI PARAMETER...
FLDNAME DFHMDF PARAMETER
FLDNAME DFHMDF PARAMETER
FLDNAME DFHMDF PARAMETER
FLDNAME DFHMDF PARAMETER
MAP-NAME DFHMDI PARAMETER...
FLDNAME DFHMDF PARAMETER
FLDNAME DFHMDF PARAMETER
FLDNAME DFHMDF PARAMETER
FLDNAME DFHMDF PARAMETER
DFHMSD TYPE=FINAL END OF MAPSET
END END OF THE BMS PGM
BMS PGM - READY -> COMPILATION
ASM COMPILER -> ASMA90** -> INPUT - BMS PGM
OUTPUT -> 1. PHYSICAL MAP --> LOAD MODULE
2. SYMBOLIC MAP --> COPYBOOK OF THE SCEEN
FILE COPYBOOK -- U CREATED MANUALLY
TABLE COPYBOOK -- USED DCLGEN TOOL
SCREEN/MAP COPYBOOK ---- CREATE BY THE COMPILER --> SYMBOLIC MAP << PGM -> SY
M-MAP -> SCREEN >>
====
TO SETUP & EXECUTE ->
SETUP -> LOAD -> PROGRAM PROCESSING TABLE -> PPT -> CONTROL TABLE
CEDA DEF MAPSET(NAME) G(APP-GRP)
CEDA INS MAPSET(NAME) G(APP-GRP) -> PPT (LIKE UR STEPLIB)
EXECUTION
1. CECI -> MANUALLY - CECI SEND MAP(NAME) MAPSET(NAME) -> ENTER - 2 TIMES
2. PGM -> AUTOMATIC - EXEC CICS SEND MAP() MAPSET() .. END-EXEC.
=========================================================================
CLASS 03:
2. SCREEN COMMUNCIATION
1. DESIGN A BMS MAP
2. COMPILE => SETUP -> EXECUTE THE MAP -> SEE THE DESIGN
3. COBOL+CICS PGM
4. COMPILE -> SETUP -> EXECUTE THE TRAN -> SEE PROCESS
>> DESIGN A BMS MAP
1. MAPSET
2. MAP
3. FILEDS -> 1 LABEL FILEDS , 2. DATA VALUE (USERID: _____ )
MARCO 1. DFHMSD --> MAPSET
2. DFHMDI MAP
3. DFHMDF FIELDS
BMS PGM -> COMPILATION 2 OUTPUT 1. PHYSICAL MAP --> LOAD
2. SYMBOLIC MAP --> COPYBOOK
ONCE U HAVE THE LOAD -.> CICS ENV -. PPT -> CEDA DEF MAPSET() - CEDA INS MAPSET()
TO SEE THE SCREEN:
1. MANUALLY -> CECI SEND MAP() MAPSET()
2. PGM -> EXEC CICS SEND MAP() MAPSET().. END-EXEC
CODE THE BMS PGM:
MAPSETNAME DFHMSD TYPE=&SYSPARM,LANG=COBOL,MODE=INOUT, X
TERM=ALL,STORAGE=AUTO,MAPATTS=(COLOR), X
TIOAPFX=YES,CTRL=(FREEKB,FRSET)
MAPNAME DFHMDI SIZE=(24,80),LINE=1,COLUMN=1
FLD-NAME DFHMDF PARAMETER:
>> FLD-NAME -> WE NEED TO PROVIDE FLD NAME ONLY TO THE DATA VALUE FIELDS
-> WE SHOULD NOT PROVIDE A FLD NAME TO LABEL FIELDS.
1. POS=(LL,COL)
USERID: ______ ’ ’
USERID -> POS=(10,30),LENGTH=7,INITIAL=’USERID:’,
______ -> POS=(10,38),LENGTH=4,INITIAL=’____’
" " > POS=(10,43),LENGTH=1,INITIAL=’ ’
30 31 32 33 34 35 36 37 38 39 40 41 42 43
U S E R I D : _ _ _ _ ’’
1 BYTE ATTRIBUTE ** -- FIELD ATTRIBUTE -> THIS NEED TO BE PREFIXED TO EACH FIELD ON T
HE SCREEN
&USERID:&______&’ ’ & -> 1 BYTE ATTRIBUTE
IF U MISS THIS POINT AND DESING THE SCREEN -> IMPROPER POSITION => ERROR -> OVERL
APPING.
ATTRB=()
1. PROT/UNPROT/ASKIP
PROT -> CANNOT EDIT THE FIELDS --> LABEL FILEDS & OUTPUT DATA FIEDLS
UNPROT -> FOR THE FILED - TO EDIT --> INPUT FIELDS
---
ASKIP -> AUTO SKIP -> SKIPPER -- USED TO MOVE/POSITION THE CURSOR TO NEXT UN-PRO
TECTED FIELDS
STOPPER -> PROT
SKIPPER -> ASKIP
2. VISIBILITY ->
NORM - ALL DATA FILED
BRT - HEADING -> WHITE
DRK -> HIDDEN FILED - PASSWORD
3. IC -> *** - INSERT CURSOR (CURSOR POSITIONING TECQ)
[Link] C-POS
BY DEFAULT -> BLACK SCREEN
BY DEFAULT -> CURSOR WIL BE ALLWAYS PLACE TO LEFT TOP CORNER
WHEN WE SEND A MAP -> CUROSR NEED TO BE POSITIONED ON THE INPUT FILEDS
IC IS USED ONLY TO FIRST DATA FILEDS - PLACE THE CURSOR AND RECEVIE THE INPUT.
-- WHAT IF I USE IC ALL FIELDS -> CUROSR WIL BE BLIKING ON LAST FIELDS
4. NUM -> TO ALLOW ONLY NUMEIRC
IF UR NOT USING - NUM -> NUM1: 111_ -- IN THE PGM - STRING HANDLING -> 111_ --> 0111
5. FSET -. FIELD SET - SOME TIME WE MAY NEED A FILED TO BE RECEVIED ALWAYS
CICS -> CAN ONLY RECEIE A FILED DATA WHEN IT IS SET.
--> A FIELD CAN BE SET ->
1. WHEN USER EDITS IT
2. DESIGN THE FILED -> ATTRB=(FSET)
ATTRB=(PROT,NORM) , PROT,BRT
ATTRB=(UNPROT,NORM)
UNPROT,DRK
UNPROT,NORM,IC
UNPROT,NORM,IC,NUM
UNPROT,NORM,FSET
MAPNAME DFHMDI SIZE=(LL,CL),LINE=1,COLUMN=1,CTRL=()
CICS SCREEN -> 24 LINE , 80 COL SIZE=(24,80)
1 MAP -> SIZE=(24,80),LINE=1,COLUMN=1
--
2 MAP -> SIZE=(04,80),LINE=1,COLUMN=1
SIZE=(20,80),LINE=5,COLUMN=1
CTRL ==> CAN BE USED ONLY ONCE -> EITHER U CODE ON MAPSET OR ON MAP NOT BOTH
FRSET -> FIELD RESET
1. WHENEVER WE SEND ANY MAP -> WE NEED TO RESET ALL FILEDS
2. USER WHEN EDITS ANY FILED -> IT WIL BE SET (FSET)
3. CICS - CAN ONLY RECEVIE THE FIELDS WHICH ARE SET.
IN CASE IF I HAVE A SCREEN => 80 FILEDS -> 1 INPUT FILED -> HOW THE SYSTEM CAN KNOW T
O RECEVIE ONLY 1 FIELDS
FRSET - FSET -> MDT MODIFIED DATA TAG (ON or OFF)
================================================================================
==========================================================================
CLASS 04:-
COBOL - CICS PGM:
ID DIVISION. NO CHANGES
PROGRAM-ID.
AUTHOR.
DATE-WRITTEN.
ENVIRONMENT DIVISION. NOT USED (EVEN WE HAVE A FILE ALSO - NO NEED TO DEFINE THE
FILE IN HERE)
DATA DIVISION.
WORKING-STORAGE SECTION.
1. CICS CHANGE
1. SYMBOLIC MAP -> COMPILED UR MAPSET CODE -> 1. PHY MAP(LOAD) 2. SYB MAP(SCREEN C
OPYBOOK)
BY DEFAULT -> MAPSET NAME --> COPYBOOK MEMBER NAME
MAPSET2 MAPSET2
MAPNAME -> 01 GROUP NAME
MODE=INOUT -> 01 MAPNAME-I. REDEFINES 01 MAPNAME-O.
INPUT -> USED TO RECEVIE THE DATA
OUTPUT -> USED TO SEND THE DATA
FLD NAME** (NOTE- U NEED TO GIVE FLD NAME ONLY FOR DATA VALUE FLDS)
ADD OF 2 NUMBER
NUM1: ___ <- NO1
NUM2: ___ <- NO2
FOR EACH DATA VALUE FILED -> MULTIPLE VARIABLE.
NO1 -> NO1-L - LENGTH -> 1. CONTAINS THE LENGTH DATA RECEVIED
-> 2. HELPS 1. AUDIT -> IF NO1L = 0 -> NO INPUT RECEVIED.
2. CURSOR POSITION
CURSOR POSITONING
1. STATIC -> IC ->INSERT CURSOR => PLACE THE CUSROR ON 1ST INPUT FILEDS
2. DYNAMIC -> WE USE LENGTH FIELDS -> MOVE -1 TO NO1L. -> PLACE THE CUSOR DURING
PGM RUN.
USERID: 12345_ -> ENTER
PASSWD: ____ -> ERROR -> PLEASE TYPE PASSWORD
NO1-I - INPUT --- > INPUT DATA FROM THE MAP
NO1-O - OUTPUT > OUTPUT DATA - SEND TO THE MAP
> WE HAVE REDEFINES INPUT-OUTPUT GORUP.
> WE DONT NEED -> MOVE NO1I TO NO1O --> NOT REQUIRED.
NO1-A - ATTRIBUTE -->
USED TO CHANGE THE FILED PROPERIES -> DURING EXECUTION.
MAPSET -> MAP -> FLD => ATTRB=(PROT,NORM) -> NOW I WANT MAKE TO UNPORT
FLD2 ATTRB=(UNPROT,NORM) -> NOW I WANT TMAKE TO PROT.
MOVE DFHBAPRO TO NO1A.
USERID: 12345_ -> ENTER
PASSWD: ____ -> ERROR -> PLEASE TYPE PASSWORD
2. DFHIAD AID -> ATTENTION IDENTIFIER ->
-> ALL KEY THAT CAN TRIGGER THE TRANSACTION.
EX -> FUCNTION KEY (F1-F24) , ENTER , CLEAR , PAGE-UP
-> ALL AID VARIABLE ARE DEFINED IN THIS COPYBOOK
01 DFHAID
02 DFHPF1 PIC X(01) VALUE ’1’.
02 DFHPF2 PIC X(01) VALUE ’1’.
02 DFHPF3 PIC X(01) VALUE ’1’.
02 DFHPF4 PIC X(01) VALUE ’1’.
02 DFHENETER PIC X(01) VALUE ’’..
3. DHFBMSCA --> CONTAINS ATTRIBUTE VARIBALE.
01 dfhbmsca.
02 DFHBAPRO -> PROT
02 DHFBAPRF -> PROT + FSET
02 DFHBAUNN -< UNPROT -> NUMER
MOVE DFHBAPRO TO NO1A.
LINKAGE SECTION.
1. COPYBOOK -> DFHEIBLK 1. ADDED BY THE COMPILER
2. REQUIRED FOR COBOL-CICS PGM (SQLCA)
3. CONTAINS ALL EIB VARIABLE -> REQUIRED/USED FOR COMMAND EXECUTION
WE NEED
1. EIBCALEN
2. EIBAID
2. 01 DFHCOMMAREA -> VARIABLE - ADDED BY THE COMPILER =
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY MAPSET2.
COPY DFHAID.
COPY DFHBMSCA.
LINKAGE SECTION.
PROCEDURE DIVISION.
2 CHANGE -. CODING THE COMMANDS
SCREEN COMMUNICATION:
3 COMMAND
1. SEND -SEND A MAP
-SEND THE DATA
- SEND BOTH
1ST TIME -> CLEAN THE VARIABLE GRP - THEN SEND
MOVE LOW-VALUES TO MAPNAMEO.
EXEC CICS SEND MAP(’NAME’) MAPSET(’NAME’)
FROM (MAPNAMEO) - OUTPUT GROUP SYM MAP
MAPONLY | DATAONLY 1ST TIME -> MAP LATER -> DATA (BY DEFAULT - BOTH)
EARSE | EARASAUP =EARSE - CLEAN THE WHOLE SCREEN , AUP - CLEAN UNPROT
FREEKB -- TO FREE THE KYBOARD -> DATAONLY
RESP(WS-RESPCODE)
END-EXEC.
EVAUATE WS-RESP-CODE
WHEN DFHRESP(’NORMAL’)
DO THIS
WHEN DFHRESP(LERR)
DO THIS
IF WS-RESPCODE = DFHRESP(’NORMAL’)
DO THIS
ELSE
DO THIS
END-EXEC.
2. RECEIVE -- ONLY DATA**
MOVE LOW-VALUES TO MAPNAMEI.
EXEC CICS RECEVIE MAP(’NAME’) MAPSET(’MAME’)
INTO(MAPNAMEI) == INPUT GRP OR THE SYM MAP
RESP(WS-RESPCODE)
END-EXEC.
IF NORMAL -> DO
ELSE MAPFAIL -> U RECEIVE NO DATA -> SEND ERROR
3. RETURN: THIS IS MUCH COMPLEX ->TOMRROW.
================================================================================
================================================================================
=======
CLASS 05:-
=================================
COBOL - CICS PGM:
ID DIVISION. NO CHANGES
PROGRAM-ID.
AUTHOR.
DATE-WRITTEN.
ENVIRONMENT DIVISION. NOT USED (EVEN WE HAVE A FILE ALSO - NO NEED TO DEFINE THE
FILE IN HERE)
DATA DIVISION.
WORKING-STORAGE SECTION.
1. CICS CHANGE
1. SYMBOLIC MAP -> COMPILED UR MAPSET CODE -> 1. PHY MAP(LOAD) 2. SYB MAP(SCREEN C
OPYBOOK)
BY DEFAULT -> MAPSET NAME --> COPYBOOK MEMBER NAME
MAPSET2 MAPSET2
MAPNAME -> 01 GROUP NAME
MODE=INOUT -> 01 MAPNAME-I. REDEFINES 01 MAPNAME-O.
INPUT -> USED TO RECEVIE THE DATA
OUTPUT -> USED TO SEND THE DATA
FLD NAME** (NOTE- U NEED TO GIVE FLD NAME ONLY FOR DATA VALUE FLDS)
ADD OF 2 NUMBER
NUM1: ___ <- NO1
NUM2: ___ <- NO2
FOR EACH DATA VALUE FILED -> MULTIPLE VARIABLE.
NO1 -> NO1-L - LENGTH -> 1. CONTAINS THE LENGTH DATA RECEVIED
-> 2. HELPS 1. AUDIT -> IF NO1L = 0 -> NO INPUT RECEVIED.
2. CURSOR POSITION
CURSOR POSITONING
1. STATIC -> IC ->INSERT CURSOR => PLACE THE CUSROR ON 1ST INPUT FILEDS
2. DYNAMIC -> WE USE LENGTH FIELDS -> MOVE -1 TO NO1L. -> PLACE THE CUSOR DURING
PGM RUN.
USERID: 12345_ -> ENTER
PASSWD: ____ -> ERROR -> PLEASE TYPE PASSWORD
NO1-I - INPUT --- > INPUT DATA FROM THE MAP
NO1-O - OUTPUT > OUTPUT DATA - SEND TO THE MAP
> WE HAVE REDEFINES INPUT-OUTPUT GORUP.
> WE DONT NEED -> MOVE NO1I TO NO1O --> NOT REQUIRED.
NO1-A - ATTRIBUTE -->
USED TO CHANGE THE FILED PROPERIES -> DURING EXECUTION.
MAPSET -> MAP -> FLD => ATTRB=(PROT,NORM) -> NOW I WANT MAKE TO UNPORT
FLD2 ATTRB=(UNPROT,NORM) -> NOW I WANT TMAKE TO PROT.
MOVE DFHBAPRO TO NO1A.
USERID: 12345_ -> ENTER
PASSWD: ____ -> ERROR -> PLEASE TYPE PASSWORD
2. DFHIAD AID -> ATTENTION IDENTIFIER ->
-> ALL KEY THAT CAN TRIGGER THE TRANSACTION.
EX -> FUCNTION KEY (F1-F24) , ENTER , CLEAR , PAGE-UP
-> ALL AID VARIABLE ARE DEFINED IN THIS COPYBOOK
01 DFHAID
02 DFHPF1 PIC X(01) VALUE ’1’.
02 DFHPF2 PIC X(01) VALUE ’1’.
02 DFHPF3 PIC X(01) VALUE ’1’.
02 DFHPF4 PIC X(01) VALUE ’1’.
02 DFHENETER PIC X(01) VALUE ’’..
3. DHFBMSCA --> CONTAINS ATTRIBUTE VARIBALE.
01 dfhbmsca.
02 DFHBAPRO -> PROT
02 DHFBAPRF -> PROT + FSET
02 DFHBAUNN -< UNPROT -> NUMER
MOVE DFHBAPRO TO NO1A.
LINKAGE SECTION.
1. COPYBOOK -> DFHEIBLK 1. ADDED BY THE COMPILER
2. REQUIRED FOR COBOL-CICS PGM (SQLCA)
3. CONTAINS ALL EIB VARIABLE -> REQUIRED/USED FOR COMMAND EXECUTION
WE NEED
1. EIBCALEN
2. EIBAID
2. 01 DFHCOMMAREA -> VARIABLE - ADDED BY THE COMPILER =
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY MAPSET2.
COPY DFHAID.
COPY DFHBMSCA.
LINKAGE SECTION.
PROCEDURE DIVISION.
2 CHANGE -. CODING THE COMMANDS
SCREEN COMMUNICATION: SEND , RECEIVE , RETURN
3 COMMAND
1. SEND -SEND A MAP
-SEND THE DATA
- SEND BOTH
1ST TIME -> CLEAN THE VARIABLE GRP - THEN SEND
MOVE LOW-VALUES TO MAPNAMEO.
EXEC CICS SEND MAP(’NAME’) MAPSET(’NAME’)
FROM (MAPNAMEO) - OUTPUT GROUP SYM MAP
MAPONLY | DATAONLY 1ST TIME -> MAP LATER -> DATA (BY DEFAULT - BOTH)
EARSE | EARASAUP =EARSE - CLEAN THE WHOLE SCREEN , AUP - CLEAN UNPROT
FREEKB -- TO FREE THE KYBOARD -> DATAONLY
RESP(WS-RESPCODE)
END-EXEC.
EVAUATE WS-RESP-CODE
WHEN DFHRESP(’NORMAL’)
DO THIS
WHEN DFHRESP(LERR)
DO THIS
IF WS-RESPCODE = DFHRESP(’NORMAL’)
DO THIS
ELSE
DO THIS
END-EXEC.
2. RECEIVE -- ONLY DATA**
MOVE LOW-VALUES TO MAPNAMEI.
EXEC CICS RECEVIE MAP(’NAME’) MAPSET(’MAME’)
INTO(MAPNAMEI) == INPUT GRP OR THE SYM MAP
RESP(WS-RESPCODE)
END-EXEC.
IF NORMAL -> DO
ELSE MAPFAIL -> U RECEIVE NO DATA -> SEND ERROR
3. RETURN: THIS IS MUCH COMPLEX ->TOMRROW.
- USED TO EXIT THE PGM EXECUTION. (STOP RUN)
EXEC CICS RETURN END-EXEC. = RELESAE THE RESOURCE.
EXEC CICS RETURN TRANS(XXXX) COMMAREA(VARIABLE) END-EXEC.
CICS PGM -> INTERACTION WITH USER
>> DIFF B/W BATCH & ONLINE
DATA INPUT -> BATCH PGM JCL -> THE INPUT FILE/DATA - NEED TO BE READY BEFORE EXEC
UTION.
ONLINE PGM CICS -> THE INPUT DATA -> PROVIDED DURING EXECUTION.
CONVERSION*** -> 1. NORMAL CONVERSION --> THE EXCHANGE OF MESSAGE/DATA IS CARRI
ED IN SINGLE TASK
2. PSEUDO-CONVERSION --> THE EXCHANMGE OF DATA IS CARRIED IN SERIES OF TASK (M
ULTIPLE)
TASK -> EXECUTION OF THE PGM
USER -> TRIGGER A TRANS-ID -> PGM STARTS
PROCEDURE DIVISION.
000-MAIN-PARA.
1ST TIME--> 1. PGM: SEND A EMPTY MAP
2. USER - WILL TAKE SOME TIME - PROVIDE THE INPUT - PRESS AID KEY(F1,ENTER)
3. PGM: - RECEIVE THE INPUT = AUDIT THE INPUT -- PROCESS THE INPUT - SEND THE RESULT
4. USER -
1. ANOTHER INPUT --> REPEAT STEP-3
2. EXIT THE PROCESS -> RETURN -& RELEASE THE RESOUCE. TASK-1
--> AT THE TIME OF USER INPUT -> WHAT OUR PGM IS DOING? WAITING FOR THE CONTROL --
> RESOURCE WASTEAGE
P-CONVERSION:
USER -> TRIGGER A TRANS-ID -> PGM STARTS
PROCEDURE DIVISION.
000-MAIN-PARA.
1ST TIME--> 1. PGM: SEND A EMPTY MAP + RELESE THE RESOUCE (RETURN) TASK-1
2. USER: TAKE MORE TIME -. PROVIDE INPUT -> PRESS ENTER
LATER TIME 3. PGM -RE-TRIGGER --> RECEVIE + AUDIT + PROCESS + SEND RESULT + RELEASE
TASK-2
4. USER -> TAKE MORE TIME
1. PROCIDE ANOTHER INPUT -> REPEAT -3 TASK-3
2. EXIT --> RETURN COMMAND.
>>1. HOW TO TELL THE PGM -IF ITS TRIGGERED FOR FIRST TIME OR LATER TIMES - EIBCALEN
>>2. HOW THE SYSTEM IS EXECUTING/TIGGER THE SAME PGM FOR SECOND TIME - WE NEED
TO PLACE THE TRAN=ID
>>3. HOW DOES THE PGM KNOW WHICH KEY USER PRESSED.
TRAIL-1:
01 WS-FIRST-TIME PIC X(01) VALUE ’Y’.
PROCEDURE DIVISION.
000-MAIN-PARA.
IF WS-FIRST-TIME = ’Y’
1. SEND AN EMTY MAP
2. MOVE ’N’ TO WS-FIRST-TIME
3. RELESE THE RESOURCE
ELSE
RECEVIE + AUDIT + PROCESS + SEND
RELEASE
END-IF.
ABOVE LOGIC LOOK OKAY -> BUT RELEASE THE RESOURCE - MEMORY WIL BE DELETED, VARI
ABLE ARE GONE..
SO SECOND TIME ALSO - IT WIL BE DOING SEND MAP ONLY.
CPMMAREA -> COMMUNICATION AREA -- THIS IS ALLOCATED WITH EMPTY SPACE AT THE TIM
E OF TRANSACTION STARTED
THE MEMORY IS DELETED WHEN TRANSACTION IS TERMINATED
WORK AREA --> > THIS IS ALLOCATED WHEN THE PGM STARTS -> DELETED WHEN PGM IS RE
LEASED
WHEN U KEEP ANY DATA IN THE COMMAREA -> CAN BE USED THRU OUT THE PROCESS.
--> DATA STORED IN THE COMMAREA -> LENGTH OF THE DATA IS STORED IN EIBCALEN VARI
ABLE
EIBCALEN -> EIB COMMAREA LENGTH - HOLD THE LENGTH OF THE COMMAREA DATA>>
01 WS-COMMAREA-DATA PIC X(01) VALUE ’A’
PROCEDURE DIVISION.
000-MAIN-PARA.
IF EIBCALEN = 0 03 EIBCALEN PIC S9(04) COMP. 32K BYTES
1. SEND AN EMTY MAP
2. MOVE WS-COMMAREA TO COMMAREA-SPACE
3. RELESE THE RESOURCE
ELSE
RECEVIE + AUDIT + PROCESS + SEND
RELEASE
END-IF.
HOW THE SAME PGM IS TRIGGER FOR SECOND TIME
1. EIBCALEN -. USED TO TELL FIRST OR NOT
2. RETURN COMMAND
EXEC CICS RETURN TRANS(XXXX) COMMAREA(WS-COMMAREA) END-EXEC
1. RELEASE THE RESOUCE -> WE KEEP THE TRAN-ID ON THE SCREEN
> IT WILL KEEP SOME DATA IN COMMAREA.
2. USER PROVIDE INPUT - PRESS ANY AID KEY -> TRAN-ID WILL TRIGGER AGAIN -SAME PGM S
TARTS
> BECUAE WE KEPT SOME DATA IN COMMAREA -> PGM -> ELSE BLOCK - RECEVIE.
TO TRIGGER A PGM FROM ONLINE SCREEN
1. USER CAN PROVIDE TRAN-ID AND ENTER
2. WE PLACE THE TRAN-ID ON THE SCREEN AND RELEASE THE PGM
PROCEDURE DIVISION.
000-MAIN-PARA.
EVALUATE TRUE
WHEN EIBCALEN = 0
DO THIS - FIRST EXEC CICS SEND THE MAP
WHEN EIBAID = DFHPF1
DO THIS
WHEN EIBAID = DFHPF2
DO THIS..
WHEN EIBAID = DFHPF3
EXEC CICS RETURN END-EXEC
WHEN OTHER
MOVE ’INVALID KEY PRESSS’ TO MSGO
SEND THE MAP
END-EVALUATE.
EXEC CICS RETURN TRANS(XXXX) COMMAREA(WS-COMMAREA) END-EXEC.
GOBACK
EXEC CICS RETURN END-EXEC. -- TO TERMINATE TRANSACTION - NOT TO COME BACK
EXEC CICS RETURN TRANS(XXXX) COMMAREA(WS-COMMAREA) END-EXEC -- TO TERMINATE T
ASK - TO COME BACK
================================================================================
================================================================================
=====
3. SCREEN -> SCREEN NAVIGATION
--> 1 SESSION -> U NEED TO ATTEND THESE CLASSES.
=> CICS SUBPGM CONCEPT:
1. HOW TO PASS THE CONTROL TO SUBPGM
CALL -> USED TO PASS THE CONTROL TO SUBPGM
CICS COMMAND
LINK - > USED TO PASS THE CONTROL TO SUBPGM
-> PGMA ->LINK-> PGMB 1. WHILE PGMB IS EXECUTING -> PGMA WIL BE WAITING FOR THE C
ONTROL
--> USED TO DO DATA PROCESS
-> PGMA -> AUDIT/UPDATE PGM -> SUBPGM
XCTL -> USED TO PASS THE CONTROL TO SUBPGM
-> PGMA --> XCTL -> PGMB 1. THE MAINPGM WIL BE TERMINATED FIRST AND THEN THE CONT
ROL WIL BE SENT SUBPGM
THIS TIME -SUBPGM > MAINPGM
-> USED TO DO SCREEN NAVIGATION
-> PGMA (S1) - XCTL -> PGMB (S2)
ISPF 3.4
2. HOW TO PASS THE DATA TO SUBPGM
1. CALL STATEMENT --> U CAN PASS USING THE WORKING STORAGE VARIABLE.
CALL ’SUBPGM’ USING VAR1 ,VAR2 , GRP1, GRP2.
2.
LINK COMMAND -> COMMAREA MEMORY -> PASS THE DATA TO SUBPGM
01 CLAIM-DATA-SUBPGM.
03 CLAIM-NUMBER
03 CUST-NAME
03 SUB-RTN-CODE
EXEC CICS LINK PROGRAM(’NAME’) COMMAREA(CLAIM-DATA-SUBPGM) END-EXEC
3. HOW TO RECEVIE THE DATA IN SUBPGM:
LINKAGE SECTION.
01 DFHCOMMAREA.
03 CLAIM-NUMBER
03 CUST-NAME
03 SUB-RTN-CODE
PROCEDURE DIVISION USING DFHCOMMAREA.
COMMAREA -> CODED IN ANY COMMAND -> TO PLACE THE DATA IN SYSTEM COMMAREA SPA
CE.
DFHCOMMAREA -> CODE IN LINKAGE SECTION AS A VARIABLE > USED TO ACCESS THE DATA
IN THE COMMAREA.
SINCE BOTH PGM ARE USING COMMAREA -> ANY CHANGES WE DO IN SUBPGM , IT WIL EFFEC
T THE MAINPGM AS WELL.
COMMAREA =-> LIMITED TO HOLD - 32K BYTES - MORE THAN ENOUGH FOR THE DATA
COMMAREA -> EIBCALEN -> S9(04) COMP. -> 32K BYTE OF VALUE
WHEN U WANT TO PASS THE BULK DATA TO SUBPGM ->?? >> QUEUE -TSQ- 1. STORE THE DA
TA IN QUEUE -> LINK - JUST PASS THE QNAME
4. HOW TO SEND THE CONTROL - DATA BACK TO MAINPGM
DATA -> AS WE ARE USING SAME MEMORY -> WE JUST NEED TO EDIT THE OUTPUT VARIABLE
- THE WIL BE USED IN MAINPGM
CONTROL -> PGMA --> LINK --> PGMB (EXEC CICS RETURN END-EXEC) ---> PGMA - CONTINUE
PGMA S1
LINK
S2
PGMB.
S3
S4
EXEC CICS RETURN
EXECUTION - S1-LINK-S3,S4-RETURN,-S2
CONTROL -> PGMA --> XCTL --PGMB --> IF U SAY RETURN -CONTROL WIL GO TO CICS
CICS - PGMA -> XCTL -- PGMB
--
CICS --. PGMB -> RETURN -> CICS
S1 -- XCTL - S2 --> XCTL - S1
PGMA -> S1
XCTL - PGMB
S2
PGMB --> S1
F3 -> XCTL -> PGMA
1. MENU SCREEN
OPTION: _ 1. ADDITION
2. SUBTRACTION
3. MULTIPLICATION
4. DIVISION.
CHOOSE OPTION AND PRESS ENTER
1. -> ADDITION 2 NUMBER
2 --> SUB
3. -> MULTIPLE OF 2 NUMBER
MENUSET -> MSETADD MSETSUB MSETMUL - COMPILED - LOAD -- PPT
MENUPGM -> ADDP SUBP MULP - PGM - LOAD -- PPT
MENU TRN1 TRN2 TRN3 -- PCT
================================================================================
==========
COBOL - CICS:
1. TRANSLATION -> 1. DFHECP1$ 1. EXEC CICS -> COMMENT - REPLACE A CALL STATEMENT
2. INCLUDE - DFHEIBLK
3. DHFCOMMAREA (GRP -ELE ) IF NOT CODED
2. IGYCRCTL
3. HEWL -> LOAD
1. GOTO CICS
2. CLEAR THE SCREEN
3. PPT ENTRY --> PROGRAM PROCESSING TABLE - LOAD MODULE
CEDA DEF MAPSET() G() - 1 TIME (SECOND U DO - UNSUCCESSFUL)
CEDA INS MAPSET() G() -- CHANGE IN THE PGM/LOAD -> DO THIS INS EACH TIME
CEDA DEF PROGRAM() G() - 1 TIME (SECOND U DO - UNSUCCESSFUL)
CEDA INS PROGRAM() G() -- CHANGE U NEED TO INSTALL AGAIN.
OR -> CEMT SET PROG(NAME) NEWC (NEWCOPY)
OR -> APPL-TRAN -> NEWC PGMNAME -> ENTER
4. PCT ENTRY -> PROGRAM PROCESSING TABLE
TRANS-ID 1. 4 CHAR ALP-NUMERIC
2. SHOULD TNO START WITH LETTER C (C- RELATED WITH CICS -, CECI , CEDA , CEMT , CES
N ,CESF)
3. IN THE PGM - RETURN TRAN (XXXX) - THAT SHOYLD BE USED TO CONNECT THE PGM
4. A SINGLE PGM , CAN HAVE MULTUPLE TRAN-ID
CEDA DEF TRANS(XXXX) PROGRAM() G()
CEDA INS TRANS() G()
5. EXECUTE ->
2 WAYS 1. SINGLE SCREEN FOR PROJECT -> TRANS-ID => PRESS ENTER
2. MANY SCREEN FOR THE APPLICATION -> MENU SCREEN -> MENU TRANSACTION 1. INQUE
2. UPDATE 3. DELETE
TRAN-ID => PCT -> PGMNAME => PPT -> LOAD -> EXECUTE.
================================================================================
=======================================================================
COMMUNICATION WITH THE CICS SCREEN
1. SEND , RECEVIE , RETURN
2. XCTL
USER IS ACCESS THE SCREEN -> REASON -> TO GET THE DATA / SET THE DATA
MAINFRAME - 1. STORE THE DATA -> 1. FILE SYSTEM 2. DATABASE
FILE SYSTEM -> KSDS CLUSTER
DATABASE -> DB2 - IMS
IN OUR TRAINING -> FILE-KSDS = DB2
==
COBOL + CICS + DB2 PGM
ID DIVISION. - NO CHANGES
PROGRAM-ID.
AUTHOR.
DATE-WRITTEN.
ENVIRONMENT DIVISION. - NOT USED AT ALL
DATA DIVISION.
WORKING-STORAGE SECTION.
->
DB2 EXEC SQL INCLUDE SQLCA END-EXEC.
EXEC SQL INCLUDE DCLGEN END-EXEC
EXEC SQL DECLARE CURSOR ..END-EXEC
CICS COPY SYM-MAP.
COPY DFHAID.
COPY DFHBMSCA.
LINKAGE SECTION.
CICS DFHEIBLK + DFHCOMMAREA.
PROCEDURE DIVISION.
DB2 EXEC SQL QUERY .. END-EXEC
IF SQLCODE = 00
CICS EXEC CICS COMMAND END-EXEC
IF WS-RESPCODE = DFHRESP(NORMAL)
COBOL + CICS + DB2 PGM IS COMPLETED > COMPILATION
ONLY COBOL -> COMPILATION PROCES JOB J1 S1. IGYCRCTL -> COMPILE
S2. HEWL -> LINK-EDIT -> O/P -> LOAD
COBOL + DB2 -> PRE-COMPILATION PROCESS JOB J2 S1. DSNHPC -PRE-COMPILER = ***EXEC
SQL - REPLACE CALL ’DSNHLI’ USING
S2. IGYCRCTL
S3. HEWL -> LOAD + DBRM
JOB J3 S1. IKJEFT01 -> BIND PROCESS
PACKAGE & PLAN**
COBOL + CICS => TRANSLATION PROCESS JOB J4 S1. DFHECP1$ --> ****EXEC CICS -> REPLCE
D -> CALL ’DSNELI’ USING
S2. IGYCRCTL
S3. HEWL -> LOAD
COBOL + CICS + DB2
==> PRE-COMPIL FOLLOWED BY TRANSLATION.
JOB J5 - S1 -> DSNHPC -> REMOVE THE EXEC SQL --> DBRM
S2 -> DFHECP1$ -> REMOVE THE EXEC CICS
S3. -> IGYCRCTL
S4 -> HEWL -> LOAD
JOB J3 -> BIND PROCESS
S1. IKJEFT01 --> PACKAGE -> PLAN**
COBOL + CICS + DB2 -> COMPILATION -> O/P -> LOAD + PLAN
-> SETUP & EXECUTE
PPT ENTRY -> LOAD -> CEDA DEF MAPSET() , CEDA DEF PROG()
PCT ENTRY -> TRAN-ID -> CEDA DEF TRANS() PROG() G()
RCT ENRT -> RESOURCE CONTROL TABLE
3 SUB-ENTRY
CEDA DEF DB2C -CONNECTION --> ADMIN -> SETUP - CONNECTING -> CICS - DB2
CICS The CICS-DB2 - attachment has connected to DB2 subsystem DB8G
CEDA DEF DB2E() - ENTRY** IMP ->
--> IN HERE U NEED TO PROVIDE THE PLAN NAME.
CEDA DEF DB2T() - TRANSACTION -> CONNECT THE TRANS-ID -WITH THE - DB2 ENTRY ID..
USER -> TRIGGER THE PGM -> TRANS-ID <--
|
IN THE PGM -> QUERY -> ENTRY ID <--
PCT RCT-DB2E
TRAN-ID --> PGM --> QUERY -> ENTRY-ID --> PLAN --> CONNECT THE DB2 SYSTEM
|__________DB2T__________________|
================================================================================
==========================================================
COBOL - DB2 - CICS
---------------------
HOW TO DO IN PRACTICAL
LOGIN PROCESS
USERID: ____ -> SUBPGM -> VALIDATION -> AGNIST THE DB2 TABLE
PASSWORD: ____
IF THE ID/PASSWORD - -> NAV TO AFTER LOGIN SCREEN
IN CASE OF INVALID - SEND AN ERROR MSG BACK TO SCREEN
2 SCREEN -> LOGIN SCREEN , AFTER LOGIN |MENU SCREEN
2 MAINPGM PGM-1 PGM-2
2 TRANS-ID LGN1 MNU1
-
1. SUBPGM PGM3
-
1. TABLE -> LOGINID - PASSWORD
SELECT * FROM RACFTAB;
---------+---------+------
LOGIN_ID LOGIN_PSWRD
---------+---------+------
ANIL12 ANIL123
MSETLGN -> MNUSET1 -- DONE
LGNPGM01 -> MNU1PGM
LGN1 MNU1
--
VLDUID01 -- COBOL + DB2 + CICS
S1304PL - PLAN - DONE
-> PPT -< LOAD CEDA DEF MAPSET() PROG()
-> PCT -> TRAN CEDA DEF TRANS()
-> RCT -> PLAN CEDA DEF DB2C --- CEDA DEF DB2E** -- CEDA DEF DB2T**
================================================================================
===============================================================
1. HOW TO GET SYSTEM DATE & TIME
EXEC CICS ASKTIME ABSTIME() END-EXEC. COMP-3
EXEC CICS FORMATTIME ABSTIME() YYYYMMDD(DATE-OUT) DATESEP(’/’
TIME(TIME-OUT) TIMESEP(’:’) END-EXEC
2. ERROR HANDLING:
WHEN ANY CICS COMMAND SEE AN ERROR (NOTFND) -> BY DEFAULT
SYSTEM WIL ABEND THE PROGRAM (AEIM -ABEND RECORD NOT FOUND)
TO HANDLE THE ERROR
4 WAYS: 1. HANDLE CONDITION - FEW
2. RESP CODE - MORE
3. NOHANDLE - FEW
4. IGNORE CONDITION - NOT MUCH
1. HANDLE CONDITION -> COMMAND
IN CASE OF ANY ERROR IN ANY CICS COMMAND IN THE PGM
SYSTEM WIL COME AND CHECK FOR THE MATCH IN THIS HANDLE CONDITION COMMAND
IF FOUND -> CONTROL WILL BE PASSED TO ANOTHER PARAGRAPPH
PROCEDURE DIVISION.
000-MAIN-PARA.
EXEC CICS HANDLE CONDITION
MAPFAIL(999-MAPFAIL-PARA)
NOTFND(999-NOTFND-PARA)
..
ERROR(999-ERROR-PARA)
END-EXEC.
EXEC CICS READ FILE() -> NOTFND -> CONTROL WILL GOTO 100-NOTFND-PARA
999-NOTFND-PARA
MOVE ’RECORD NOT FOUND ’ TO MSGO
PERFORM 100-SEND-PARA THRU 100-EXIT.
2. RESP CODE**
01 WS-RESPCODE PIC 9(08) COMP.
EXEC CICS READ RESP(WS-RESPCODE) END-EXEC.
IF WS-RESPCODE = DFHRESP(NORMAL)
PROCESS
ELSE
IF WS-RESPCODE = DFHRESP(NOTFND)
MOVE ’RECORD NOT FOUND ’ TO MSGO
PERFORM 100-SEND-ERR-PARA THRU 100-EXIT
ELSE
ABEND/SEND ANY OTHER ERROR MSG
END-IF
END-IF.
3. NOHANDLE --> MEANS IGNORE THE ERROR MESSAGE
EXEC CICS RECEVIE NOHANDLE END-EXEC.
MAPFAIL -> IGNORE
1. RECEIVE -> NO INPUT -> MAPFAIL - ABENDING
-> NO INPUT -> MAPFAIL - IGNORE/NOHANDLE
2. VALIDATE THE INPUT -- INCASE NO INPUT -> ERROR MESSAGE --> You must enter a EMP num
ber
4. IGNORE CONDITION
EXEC CICS IGNORE CONDITION
MAPFAIL
LENERR
END-EXEC.
================================================================================
=============================================================================
QEUEU:
MAINFRAME -> DATA IS STORED 1. FILE SYSTEM (VSAM -KSDS CLUSTER)
2. DATABASE (DB2)
OTHER THAN THIS - WE USE QUEUE AS ANOTHER CICS INTERNAL TEMP SPACE FOR DATA STO
RE & ACCESS
QUEUE -> 1. TSQ --> WE CAN ACCESS THE DATA FROM THIS Q - MANY TIMES
2. TDQ --> WE CAN ACCESS THE DATA FROM THIS Q - ONLY TIME
TSQ -> TEMP STORAGE QEUEU:
-> CRETAE & DELETE THE QUEUE THRU PGM ITSELF
-> TST ENTRY OPTIONAL
OPERATION: 1. READQ
2. WRITEQ
3. DELETEQ
-> ALL THE RECORD IN THE QUEUE - ARE KNOW AS ITEM’S , EACH ITEM/RECORD IS REFFERED
BY ITEM NUMBER
TDQ: -> TRANSIAENT DATA QUEUE
--> CREATE THE QUEUE - DELETE THE QYEUE THRU PGM
--> DCT -> ENTRY IS REQUIRED.
OPERATION: 1 READQ
2. WRITEQ
3. DELETEQ
-> ALL THE RECORD IN THE QUEUE - ARE KNOW AS ITEM’S , EACH ITEM/RECORD IS REFFERED
BY ITEM NUMBER
DIFF - TSQ & TDQ
TSQ:
1. READ --> WE CAN READ THE ITEM IN SEQ & RANDOM (USE ITEM NUMBER)
EXEC CICS READQ TS
QUEUE(NAME) 8 CHAR
INTO(LAYOUT)
NEXT | ITEM(VALUE) NEXT - SEQ , ITEM(VALUE) - RANDOM
RESP(WS-RESPCODE)
END-EXEC.
RESPCODE -> NORMAL , QIDERR , ITEMERR -> END OF THE QUEUE
2. WRITE -> USED TO ADD A ITEM TO THE QUEUE
--_> THE QUEUE WIL BE CREATE ON FIRST WRITE COMMAND
EXEC CICS WRITEQ TS
QUEUE(NAME)
FROM(LAYOUT)
ITEM(WS-ITEM-NUM) -> OUTPUT -> IT WIL GIVE THE LAST ITEM NUMBER
RESP(WS-RESPCODE)
END-EXEC.
NORMAL -> INVREQ - IOERR
3. DELETEQ -_ USED TO DELETE THE WHOLE QUEUE (NOT ANY SINGLE ITEM)
EXEC CICS DELETEQ TS
QUEUE(NAME)
NOHANDLE
END-EXEC.
Q - PRESENT -> SUCCESSFUL
Q - NOT PRESENT -. UNSUCCES -> QIDERR -> NOHANDLE /IGNORE
TDQ
1. READ --> WE CAN READ ONLY SEQ
--> THE RECORD/ITEM WILL BE DELETE AFTER THE READ.
EXEC CICS READQ TD
QUEUE(NAME) - 4 CHAR
INTO(LAYOUT)
NEXT
RESP(WS-RESPCODE)
END-EXEC.
RESPCODE - NORMAL
- QIDERR -- Q IS NOT PRESENT
- QZERO ---> END OF THE QUEUE
2. WRITE -> USED TO ADD A ITEM TO THE QUEUE
--_> THE QUEUE WIL BE CREATE ON FIRST WRITE COMMAND
EXEC CICS WRITEQ TD
QUEUE(NAME)
FROM(LAYOUT)
ITEM(WS-ITEM-NUM) -> OUTPUT -> IT WIL GIVE THE LAST ITEM NUMBER
RESP(WS-RESPCODE)
END-EXEC.
NORMAL -> INVREQ - IOERR
3. DELETEQ -_ USED TO DELETE THE WHOLE QUEUE (NOT ANY SINGLE ITEM)
EXEC CICS DELETEQ TS
QUEUE(NAME)
NOHANDLE
END-EXEC.
Q - PRESENT -> SUCCESSFUL
Q - NOT PRESENT -. UNSUCCES -> QIDERR -> NOHANDLE /IGNORE
PAGING LOGIC:
COBOL + CICS + DB2 + TSQ
PGM => LOAD
DB2 -> PLAN
POLCSET
POLCPGM4
S1304TS
TSQMSET
TDQPGM1
TDQ1
QUEUE --> TDQ1
================================================================================
===============================================================