0% found this document useful (0 votes)
48 views26 pages

CICS BMS Map Design and Execution Guide

1. The document discusses designing screens and screen navigation in CICS. It covers creating BMS maps with DFHMSD, DFHMDI, and DFHMDF macros, compiling the BMS program, and setting up and executing the map in a CICS region using CEDA and CECI commands. 2. It also discusses writing COBOL programs with CICS to process the screen data, including compiling, setting up the program in the PPT, and executing the transaction to see the results. 3. Key aspects of BMS screen design like field attributes, positioning, and cursor control are explained.

Uploaded by

srbcobol
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views26 pages

CICS BMS Map Design and Execution Guide

1. The document discusses designing screens and screen navigation in CICS. It covers creating BMS maps with DFHMSD, DFHMDI, and DFHMDF macros, compiling the BMS program, and setting up and executing the map in a CICS region using CEDA and CECI commands. 2. It also discusses writing COBOL programs with CICS to process the screen data, including compiling, setting up the program in the PPT, and executing the transaction to see the results. 3. Key aspects of BMS screen design like field attributes, positioning, and cursor control are explained.

Uploaded by

srbcobol
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

================================================================================
===============================================================

You might also like