CICS Training Material

183
1 CICS (Customer Information Control System)

Transcript of CICS Training Material

Page 1: CICS Training Material

1

CICS(Customer Information Control System) CICS(Customer Information Control System)

Page 2: CICS Training Material

2

Table of ContentsTable of Contents

• Introduction to CICS• Basic Mapping Support• Program Control• File Processing• Error Handling• Queues• Interval and Task Control• Recovery and Restart• Program preparation• CICS Supplied Transactions• Case Study

Page 3: CICS Training Material

3

Introduction to CICSIntroduction to CICS

• Customer Information Control System -CICS developed in late 1960s as a DB/DC control system

• CICS provides an interface between the Operating System and application programs

• Macro Level CICS - initial version Assembler macro to request CICS services

• Command Level CICS - high level lang.version - commands to request CICS services - Single command can replace series of macros

Page 4: CICS Training Material

4

Batch & Online : DifferencesBatch & Online : Differences

BATCH SYSTEM1. Input data is prepared and

given in sequence (file)2. Processing sequence is

predictable and hence restarting the process in case of failure is easy.

3. Programs and files can’t be shared

4. Programs are scheduled through jobs

5. O/P printed on paper or in sequential of VSAM or Indexed files

6. Response time: Could be scheduled to be Hours or days

ONLINE SYSTEM1. Data is entered as needed not

in sequence (terminal)2. Since processing sequence is

unpredictable, special recovery/restart proc. is required in case of failure

3. Programs and files can be shared

4. Transaction can be run at any time

5. O/p displayed on Terminal updated files

6. Response Time: Could be in minutes or second. Usually in seconds

Page 5: CICS Training Material

5

CICS & Operating System CICS & Operating System

Operating SystemOperating System

CICSCICS

User’sApp.

Files &Database

Enter Code :

Page 6: CICS Training Material

6

DB/DC System DB/DC System

Terminals

Central System

Data Base

CICS System Environment & API routines, and Application Programs

Page 7: CICS Training Material

7

CICS System ServicesCICS System Services

• Data-Communication Functions

• Data-Handling Functions

• Application Program Services

• System Services

• Monitoring Functions

Page 8: CICS Training Material

8

• Task :- A basic unit of work which is scheduled by the

operating system or CICS

Ex -Read from and write to the terminal

• Transaction :- An entity which initiates execution of a task. In CICS, transaction is identified by the transaction identifier (Trans-id)

Task & TransactionTask & Transaction

Page 9: CICS Training Material

9

Application Programming ConceptsApplication Programming Concepts

• Pseudo-Conversational

• Multitasking

• Multithreading

• Quasi-Reentrancy

Page 10: CICS Training Material

10

• Conversational : A mode of dialogue between program and terminal based on a combination of sending message and receiving message within the same task– Since human response is slower than the CPU speed, a

significant amount of resource will be wasted just waiting

• Pseudo-Conversational. A mode of dialogue between program and terminal which appears to the operator as a continuous conversation but which is actually carried by a series of tasks

Terminal ConversationTerminal Conversation

Page 11: CICS Training Material

11

PROCEDURE DIVISION.: FIRST-PROCESS.

EXEC CICS RECEIVE ---- <= TSK1,12345END-EXEC.: processEXEC CICS SEND ----- <= EMP(12345) DetailsEND-EXEC.

* - - - - - - Program Waits For Response - - - - - SECOND PROCESS.

EXEC CICS RECEIVE ----- <= User Enters DataEND-EXEC.: process

Terminal Conversation ExampleTerminal Conversation Example

Page 12: CICS Training Material

12

Transaction TSK1Program PROG1

PROCEDURE DIVISION. :

EXEC CICS RECEIVE END-EXEC.

:EXEC CICS SEND END-EXEC.EXEC CICS RETURN

TRANSID (‘TSK2’)END-EXEC.

Transaction TSK2Program PROG2

PROCEDURE DIVISION. :

EXEC CICS RECEIVE

END-EXEC. :

EXEC CICS SEND

END-EXEC.EXEC CICS RETURNEND-EXEC.

Pseudo-Conversation ExamplePseudo-Conversation Example

Page 13: CICS Training Material

13

• Control Programs (or Management Modules)

Programs that interface between OS and app. pgm

Handle the general functions that are crucial to operation of

CICS• Control Tables

Define the CICS environment

Functionally associated with the management module• Control Blocks (or Areas)

Contain system type information. Eg. Task Control Area

contains information about the task

CICS ComponentsCICS Components

Page 14: CICS Training Material

14

• ProgramsProgram Control PCPFile control FCPTerminal Control TCPTask Control KCPTemporary Storage TSPTransient Data TDPStorage Control SCP Interval Control ICPJournal Control JCP

• Tables

Processing Program Table PPTFile Control Table FCTTerminal Control Table TCTProgram Control Table PCTTemp. Storage Table TSTDestin. Control Table DCT

Mangement Pgms & Ctrl TablesMangement Pgms & Ctrl Tables

Page 15: CICS Training Material

15

CICS Program ConsiderationsCICS Program Considerations

Considerations:

• Must eventually return control to CICS

• Can’t modify procedure division instructions because CICS programs may be shared by many tasks

• Can modify working storage since a unique copy of working storage is created for each task

Page 16: CICS Training Material

16

CICS Program RestrictionsCICS Program Restrictions

Restrictions:• No CONFIG. SECTION, I/O SECTION to be specified in the

ENVIRONMENT DIVISION.

• FILE SECTION, OPEN, CLOSE, and non-CICS READ & WRITE statements are not permitted because file management is handled by CICS.

• COBOL commands such as ACCEPT, DISPLAY, EXHIBIT, TRACE, STOP RUN, GOBACK are avoided. (STOP RUN & GOBACK are sometimes included in order to eliminate compiler diagnostic but never executed)

Page 17: CICS Training Material

17

Sample CICS ProgramSample CICS Program

IDENTIFICATION DIVISION.PROGRAM-ID. SAMPLE.ENVIRONMENT DIVISION.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-INPUT.

05 WS-TRANSID PIC X(4).05 FILLER PIC X(1).05 WS-IN-EMP-CD PIC X(4) VALUE ALL ‘X’.

Page 18: CICS Training Material

18

Sample Program (Contd..)Sample Program (Contd..)

01 WS-OUTPUT. 05 FILLER PIC X(16) VALUE ‘EMP CODE : ‘. 05 WS-OUT-EMP-CD PIC X(4).01 WS-LENGTH PIC S9(4) COMP.LINKAGE SECTION.

CAN Include DFHCOMMAREA if data needs to be communicated between two transactions or multiple iterations of the same transaction.PROCEDURE DIVISION.000-MAINLINE.

PERFORM 100-RECV-INPUT. PERFORM 200-SEND-OUTPUT. EXEC CICS RETURN END-EXEC.

Page 19: CICS Training Material

19

100-RECV-INPUT. MOVE 9 TO WS-LENGTH. EXEC CICS RECEIVE INTO (WS-INPUT) LENGTH (WS-LENGTH) END-EXEC.

MOVE WS-IN-EMP-CODE TO WS-OUT-EMP-CODE200-SEND-OUTPUT. EXEC CICS SEND FROM (WS-OUTPUT) LENGTH (20)

ERASE END-EXEC.

Sample Program (Contd..)Sample Program (Contd..)

Page 20: CICS Training Material

20

The CICS translator converts CICS commands into the COBOL

code so that it could be compiled by a Standard Cobol compiler

CICS program with CICS Commands

CICS Translator

COBOL Statements

CICS TranslatorCICS Translator

Page 21: CICS Training Material

21

• When you compile a CICS/VS program the translator will automatically add many lines of code to your program, which can be seen in the compiled listing

TranslatorTranslator

Page 22: CICS Training Material

22

Basic Mapping Support Basic Mapping Support

Page 23: CICS Training Material

23

Topics in BMSTopics in BMS

• Introduction to BMS

• Map and Mapset

• Physical and Symbolic Map

• Map Definition Macros

• Screen Manipulation/Handling

• Screen Design Considerations

• Interfacing with Terminal using a Map

Page 24: CICS Training Material

24

Introduction to BMS Introduction to BMS

Introductory conceptsIn online systems, formatted screens are used. In order to display formatted screen, a terminal (e.g. 3278) must receive a series of data stream called Native Mode Data Stream (NMDS) based on the hardware protocol; this NMDS is a mixture of Buffer Control Characters (BCCs) and text data. NMDS is designed for a particular terminal and is thus both device dependent and format dependent. So if NMDS is used, re-coding is required whenever there is change in the terminal device or screen format. To remove this device and format dependency from application program, CICS provides a facility called Basic Mapping Support (BMS).

Page 25: CICS Training Material

25

• Removal of device dependent codes from Application Program• Removal of constant information from Application program

(Headers, Titles...)• Construct NMDS - Native Mode Data Stream• Text handling• Terminal Paging & Message routing• Contents of the screen defined thru’ BMS is called Map.• Map is a program written in assembly language.• BMS macros are available for Map coding.

The BMS Macros are coded in the form of Maps, and Mapsets to define the screen attributes, screen field positions, and field characteristics.

Primary Functions of BMSPrimary Functions of BMS

Page 26: CICS Training Material

26

Map and Mapset Map and Mapset

• Representation of one screen format is called Map (screen

panel).

• One or more maps, link edited together, makes up a Mapset

(load module).

• Mapset must have a entry in PPT as given below:

DFHPPT TYPE=ENTRY,MAPSET=nameOr DFHPPT TYPE=ENTRY,PROGRAM=name

Page 27: CICS Training Material

27

• Mapset name has two parts.

– Generic name 1- 7 chars. Used in App. Program.

– Suffix 1 char. To identify the device type

• Multimap Panel

• Dynamically constructing a screen panel with multiple maps at

the execution time

Map and Mapset (Contd..) Map and Mapset (Contd..)

Page 28: CICS Training Material

28

The concepts of map and mapset can be utilized in two type of cases as given below:

 Case 1: A mapset consist of a single map. For e.g.MAPSET1 MAPNUM1

 Case 2: A mapset consists of several maps. For e.g.MAPSET2 MAPNUM1

MAPNUM2

Map and Mapset (Contd..) Map and Mapset (Contd..)

Page 29: CICS Training Material

29

Types of MAPSTypes of MAPS

There are 2 types of MAPS• Physical Map

Physical Map is a map used by CICS (CSECT)

Ensure device independence in the application program

BMS macro coding ==> Assembly==> Link edit ==> Load module ==> LOADLIB ===> To be used by CICS

• Symbolic Map

Ensure device and format independence in the application program

Symbolic Map is a map used by Application Program (DSECT)

BMS macro coding ==> Assembly ==> Symbolic map definition ==> COPYLIB ==> Copied (COPY) into CICS application program.

Page 30: CICS Training Material

30

01 EMPRECI. 02 FILLER PIC X(12). 02 EMPNAL PIC S9(4) COMP. 02 EMPNAF PIC X. 02 FILLER REDEFINES EMPNAF. 03 EMPNAA PIC X. 02 EMPNAI PIC X(21). 01 EMPRECO REDEFINES EMPRECI. 02 FILLER PIC X(12). 02 FILLER PIC X(03). 02 EMPNAO PIC X(21).

Example – Symbolic Map Example – Symbolic Map

Page 31: CICS Training Material

31

Physical & Symbolic Map - Logic FlowPhysical & Symbolic Map - Logic Flow

BMSsource

Assembler

Physical MAP

Linkage editorSymbolic MAP

Load module (MVS)

Page 32: CICS Training Material

32

Physical Map.• The BMS macros are assembled and link-edited into CICS load

library to create the physical map. The mapset like any other CICS program is stored in CICS runtime library the PPT(Program Processing Table). At the program execution time the physical map is being used by CICS to load the screen image.

• In case of input operations, the physical map defines the maximum length, the starting position for each field to be read and allows BMS to interpret an input NMDS.

• In case of output operations, the physical map defines the starting position, length, field characteristics and the default data for each field and allows BMS to construct an output NMDS.

Physical MapPhysical Map

Page 33: CICS Training Material

33

• The symbolic map is coded using the BMS macro, assembled separately and catalogued into a copy library. The symbolic map serves as a DSECT for referencing the Terminal Input/Output Area (TIOA). The program issues a COBOL COPY statement to include it in the program.

• The symbolic maps represents the actual data structure of the fields defined in the physical map, and is used by the application program to send and receive information from the terminal, in the CICS SEND-MAP & RECEIVE MAP commands.

• The symbolic map can be used by the CICS application programs to dynamically to alter the field attributes, modify screen cursor position, and highlight , protect , unprotect specific fields on the screen.

Symbolic Map Symbolic Map

Page 34: CICS Training Material

34

Map definition MacrosMap definition Macros

General FormatColumn Number1 16 72setname operation operands contd.ExampleEMPMAP DFHMSD TYPE=MAP, X

MODE=INOUT, XLANG=COBOL, XSTORAGE=AUTO, XTIOAPFX=YES

** ANY COMMENTS

Page 35: CICS Training Material

35

Explanations:

SETNAME : Name of the mapset. Used in CICS command to read or write one of the maps in the mapset. It is the load module name.

OPERATION : Macro identifier. Mapset/Map/Field definition.

OPERANDS : Optional key words (parameters) separated by comma.

CONTD : Current line can be continued by leaving this column non-blank (usually X) and the next

line have to be started in 16th column. Comments : ‘*’ in column 1 makes the line comment.

Map definition Macros (Contd..)Map definition Macros (Contd..)

Page 36: CICS Training Material

36

INITIAL VALUES : Always surround initial values by single quote marks

Escape Chars : ‘ and &

Map definition Macros (Contd..)Map definition Macros (Contd..)

Page 37: CICS Training Material

37

Order of MacrosOrder of Macros

DFHMSD TYPE=DSECT Mapset DFHMDI MapDFHMDF A fieldDFHMDF A field :DFHMDI MapDFHMDF A fieldDFHMDF A field: DFHMSD TYPE=FINAL MapsetEND

Page 38: CICS Training Material

38

DFHMSD MacroDFHMSD Macro

The DFHMSD macro is used to define a mapset (TYPE=MAP) and its characteristics or to end a mapset definition (TYPE=FINAL). Only one mapset is allowed in one assembly run. All the maps in a map set get assembled together, and they're loaded together at execution time.

Example:TSTMSET DFHMSD TYPE=&SYSPARM, X MODE=INOUT, X LANG=COBOL,

XSTORAGE=AUTO, XTIOAPFX=YES,

XCNTL=(FREEKB,FRSET,PRINT)

Page 39: CICS Training Material

39

Options TYPE= To define the map type

DSECT For symbolic mapMAP For physical map&SYSPARM For special assembly procedureFINAL To indicate the end of a mapset coding

 MODE= To indicate input/output operations

IN For an input map onlyOUT For an output map onlyINOUT For maps involving both input and output.

DFHMSD Macro (Contd..)DFHMSD Macro (Contd..)

Page 40: CICS Training Material

40

STORAGE = AUTO To acquire a separate symbolic map area for

each mapsetBASE To have the same storage base for the

symbolic maps of from more than one mapset

TIOAPFX=YES To reserve the prefix space (12 bytes) for

BMScommands to access TIOA properly.

Required for the CICS command level.

DFHMSD Macro (Contd..)DFHMSD Macro (Contd..)

Page 41: CICS Training Material

41

CNTL= To define the device control requests FREEKB To unlock the keyboard FRSET To reset MDT to zero status ALARM To set an alarm at screen display time PRINT To indicate the mapset to be sent to

the printer

TERM=type This ensures device independence, required if other than 3270 terminal is being used

SUFFIX=nn To specify the user provided suffix number. This must correspond to the TCT

parameter.

DFHMSD Macro (Contd..)DFHMSD Macro (Contd..)

Page 42: CICS Training Material

42

DFHMDI MacroDFHMDI Macro

Defines a map and its characteristics Example

EMPMAP DFHMDI SIZE=(ll,cc), XLINE=nn, XCOLUMN=mm,XJUSTIFY=LEFT/RIGHT

Options SIZE=(ll,cc) To define the size of the map by the line size (ll)

and the column size (cc). Useful when the screen contains.

LINE Indicates the starting line number of the map. COLUMN Indicates the starting column number of the map. JUSTIFY To specify the entire map (map fields) is to be left or

right justified.

Page 43: CICS Training Material

43

The DFHMDF macro is used to define a field in a map and its characteristics. This is the position on the screen where the field should appear. It's the position relative to the beginning of the map. Field starts with its attribute byte, so if POS=(1,1) is coded, then the attribute byte for that field is on line 1 in column 1, and the actual data starts in column 2. The length of the field (not counting the attribute byte) is specified. Literals can be specified within quotes; these character data is for an output field. It is used to define labels and titles for the screen and keep them independent of the program.

DFHMDF MacroDFHMDF Macro

Page 44: CICS Training Material

44

Sample Screen layout

The above defines the screen layout as given below:  

Where

‘&’ Is the Attribute character‘n’ Is unprotected numeric ‘_‘ Is Cursor

ITEM NUMBER :&nnnnnnnn

Page 45: CICS Training Material

45

DFHMDF Macro For The Above Layout

Define a field and its characteristics

Example

DFHMDF POS(ll,cc), X

INITIAL=‘Customer No. :’, X

ATTRB=ASKIP, X

LENGTH=14

CUSTNO DFHMDF POS=(ll,cc), X

ATTRB=(UNPROT,NUM,FSET,IC), X

JUSTIFY=RIGHT, X

PICIN=‘9(8)’, X

PICOUT=‘9(8)’, X

LENGTH=8

Page 46: CICS Training Material

46

Attribute characterAttribute character

Function:The attribute character is an invisible 1-byte character, which precedes a screen field and determines the characteristics of a field.

ASKIP Autoskip. Data cannot be entered in this field. The cursor skips to the next field.

PROT Protected field. Data cannot be entered into this field. If data is entered, it will cause the input-inhibit status.

UNPROT Unprotected field. Data can be entered and this is used for all input fields.

NUM Numeric field. Only numbers (0 to 9) and special characters (“.” and “-“) are allowed.

Page 47: CICS Training Material

47

Attribute character (Contd..)

BRT Bright display of a field (highlight).

NORM Normal display.

DRK Dark display.

IC Insert cursor. The cursor will be positioned in this field. In case, IC is specified more than once, the cursor is

placed in the last field.

FSET Field set. MDT is set on so that the field data is to be sent from the terminal to the host computer regardless of whether the field is actually modified by the user.

Page 48: CICS Training Material

48

Modified Data TagModified Data Tag

Function:Modified Data Tag (MDT) is a one bit of the attribute character. If it is off (0), it indicates that the terminal operator has not modified the field. If it is on (1), it indicates that the operator has modified this field. Only when MDT is on, the data of the field will be sent by the terminal hardware to the host computer. An effective use of MDT drastically reduces the amount of data traffic in the communication line and thus improves performance.

Three ways of setting and resetting the MDT.  1. Terminal user modifies a field on the screen, it is

automatically set to “1” (on) by the terminal hardware. 

Page 49: CICS Training Material

49

Modified Data Tag (Contd..)

2. If CNTL=FRSET is specified in the DFHMSD or DFHMDI macro, when the mapset or the map is sent to the

terminal, MDT will be reset to “0” (off) i.e. not modified for all the fields of the mapset or the map.

 3. If FSET is specified in the ATTRB parameter of the DFHMDF macro for a field, when the map is sent to the terminal, MDT will be set to “1”. (on i.e. modified) for the field regardless of whether the field has been modified by the terminal user.

Page 50: CICS Training Material

50

Skipper TechniqueSkipper Technique

• Unlabelled 1-byte field with the autoskip attribute

• DFHMDF POS(ll,cc),ATTRB=ASKIP,LENGTH=1• To skip the cursor to the next unprotected field after one

unprotected field.• Screen Layout :

&xxxxx&$ &xx

where

$ Skipper field

& Attribute byte

X Unprotected field

Page 51: CICS Training Material

51

Stopper TechniqueStopper Technique

• Unlabelled 1-byte field with the protect attribute

• DFHMDF POS(ll,cc),ATTRB=PROT,LENGTH=1• To stop the cursor in order to prevent erroneous field overflow by

terminal user.• Screen Layout :

&xxxxx&$#&$

where

# Stopper field

Page 52: CICS Training Material

52

Format Of the Symbolic Map

Format of Symbolic Map• Once the symbolic map is assembled and is placed in the

COPY library, the COBOL COPY statement can be used to include it in the application program.

• The symbolic map starts with the 01 level definition of the map name specified in the DFHMDI macro with the suffix ‘I’ for the input map and the suffix ‘O’ for the output map.

• Next is the definition of FILLER PIC X(12), which is the TIOA prefix created by the TIOAPFX=YES of the DFHMSD macro; this is required by the BMS under the CICS command level.

Page 53: CICS Training Material

53

Format Of the Symbolic Map (Contd..)

For each field name (1 to 7 characters) specified in the DFHMDF macro, BMS creates three fields for inputs and three fields for outputs, by placing one character suffix to the original field name. The meaning of these fields are given below: • Name + L: The half-word binary (PIC S9(4) COMP)

field. For the input field, the actual number of characters typed in the field will be placed by the BMS when the map is received. For the output field, this is used for the dynamic cursor positioning.

Page 54: CICS Training Material

54

Format Of the Symbolic Map (Contd..)

• Name + F: Flag Byte. For the input field, it will be X’80’ if the field has been modified but no data is sent (i.e. the field has been cleared). Otherwise this field is X’00’.

• Name + A: The Attribute byte for both input and output fields.

• Name + I: The input data field. X’00’ will be placed if no data is entered. Note that space X’40’ is data. The application program should differentiate X’00’ from space (X’40’).

 • Name + O: The output data field.

Page 55: CICS Training Material

55

Example Of Symbolic MapExample Of Symbolic Map

01 EMPRECI. 02 FILLER PIC X(12). 02 EMPNAL PIC S9(4) COMP. 02 EMPNAF PIC X. 02 FILLER REDEFINES EMPNAF. 03 EMPNAA PIC X. 02 EMPNAI PIC X(21). 01 EMPRECO REDEFINES EMPRECI. 02 FILLER PIC X(12). 02 FILLER PIC X(03). 02 EMPNAO PIC X(21).

Page 56: CICS Training Material

56

Cursor Positioning TechniquesCursor Positioning Techniques

CICS provides multiple ways of to specify where to position the cursor on the screen. The cursor positioning is important to prompt an user of an entry he has to make, or to point to an error which has occurred during editing the user entries.

• Static positioning (Achieved thru Map definition ATTRIB=IC).

Example : DFHMDF

POS=(5,8),ATTRB=(UNPROT,FSET,IC),LENGTH=10

Page 57: CICS Training Material

57

Cursor Positioning Techniques (Contd..)• Dynamic/Symbolic Positioning.

The cursor is placed dynamically through an application program by moving -1 to the symbolic map field-length field (i.e. fieldname + L) for the field where the cursor is to be placed. The SEND MAP command must be issued with the CURSOR option (without value). Also, the mapset should be coded with MODE=INOUT in the DFHMSD macro. This approach is very useful when the cursor is to be placed at the field where data entry error has been detected by the data edit routine.

Page 58: CICS Training Material

58

Cursor Positioning Techniques (Contd..)

Example Of Dynamic Cursor Positioning.

WORKING-STORAGE SECTION.:

COPY MAPSET101 MAPSET1I

05 FILLER PIC X(6).05 FIELD1L PIC X(5).05 FIELD1F PIC X.05 FIELD1I PIC X.

 

Page 59: CICS Training Material

59

Cursor Positioning Techniques (Contd..)

PROCEDURE DIVISION.: MOVE –1 TO FIELDL.

EXEC CICS SEND MAP(‘MAP1’) MAPSET(‘MAPSET1’)

CURSORERASE

END-EXEC.The cursor will be placed at FIELD1 field of the map during execution.

Page 60: CICS Training Material

60

Cursor Positioning Techniques (Contd..)

Dynamic/Relative Positioning (application program)

The cursor is placed dynamically through an application program using the CURSOR(data-value) option in the SEND MAP command with the value of the relative position (starting from zero) of the terminal. At the completion of the SEND MAP command, the map will be displayed with the cursor placed at the specified position, overriding the static cursor position defined at the map definition time.

   

Page 61: CICS Training Material

61

Cursor Positioning Techniques (Contd..)

Example EXEC CICS SEND MAP(‘MAP1’)MAPSET(‘MAPSET1’)CURSOR(100)ERASE

END-EXEC. 

The cursor will be placed at FIELD1 field of the map MAP1 during execution.

Page 62: CICS Training Material

62

Interfacing with a Terminal using a Map

The BMS maps are used in the application programs for the actual terminal input/output operation. These operations are performed by a set of CICS commands for BMS.

  The following are the three basic functions performed by CICS commands: 

1. Map Sending function – using the data in the symbolic map, BMS prepares the output NMDS, the corresponding physical map, and sends to the terminal.

2. Map Receiving Function – using the input NDMS from the terminal, BMS prepares data in the symbolic map through the corresponding physical map.

3. Text Handling Function – BMS prepares text without using a map and sends to the terminal.

Page 63: CICS Training Material

63

Interfacing with a Terminal using a Map (Contd..)

Flow of Information from 3270 Terminal and the Application Program.

Application Program

Send Map Command

Symbolic Map

BMS

Physical Map

BMSSymbolic Map

Application Program

Receive Map Command

Output NDMS

Input NDMS

Terminal

Data Entry

Terminal

Page 64: CICS Training Material

64

Interfacing with a Terminal using a Map (Contd..)

The following are the available commands: 

• RECEIVE MAP : To receive a map • SEND MAP : To send a map • SEND CONTROL : To send a control function to the

terminal• SEND TEXT : To send a text • SEND PAGE : To send the accumulated text or

maps as a logical message

Page 65: CICS Training Material

65

Receive Map CommandRECEIVE MAP Command is used to receive input from a terminal. At the completion of the command, the symbolic map will contain valid data from the terminal in the following three fields as per each field defined by the DFHMDF macro:

 Field name + L : The length field, which contains the actual

number of characters, typed in the screen field.

Field name + F : The Flag Byte which is normally X’00’. It will be X’80’ if the field has been modified but

cleared.Field name + I : The actual input data field. X’00’ will be placed

if no data is entered.

Page 66: CICS Training Material

66

Receive Map Command (Contd..)

Syntax: EXEC CICS RECEIVE MAP (MAPNAME)

MAPSET(MAPSETNAME) [ SET(POINTER)|

INTO(DATANAME) ] [ LENGTH(MSG-LEN)]

[ HANDLE | NOHANDLE ] [ RESP() ]

END-EXEC. • Conditions: INVREQ, MAPFAIL

Page 67: CICS Training Material

67

Receive Map Command (Contd..)MAP specified the name of the MAP defined thru DFHMDI command , which describes the screen details.

MAPSET specified the name of the MAPSET defined thru DFHMSD command which includes the MAP.

INTO is used to specify the area in the working storage section to which the data from the terminal is to be placed.

SET is used when the address pointer is to be set to the address of the symbolic map (by CICS) so that the application program can directly refer to the record without moving the record content into the working storage area defined in the program.

Page 68: CICS Training Material

68

Receive Map Command (Contd..)RESP will be used by CICS to place a response code at a completion of the command.

HANDLE is used to transfer control to the procedure label specified if the exceptional condition specified occurs.

NOHANDLE will cause no action to be taken for any exceptional condition occurring during execution of the CICS command.

Conditions : INVMPSZ , INVREQR , LENGERR, MAPFAILMAPFAIL is set when the data being mapped has a length of zero. It occurs when the following keys are pressed in response to the RECEIVE MAP command: CLEAR or Attention Keys & ENTER or PF keys without entering data.

Page 69: CICS Training Material

69

SEND MAP Command SEND MAP Command

The SEND MAP command is used to send formatted output to a terminal. Before issuing this command, the application program must prepare the data in the symbolic map of the map to be sent, which has the following three fields per each field defined by the DFHMDF macro:

Name + L: The length field, for which the application program need not prepare except when used for the dynamic cursor positioning.

Name + A: The Attribute byte for output fields. Application program will use it for dynamic cursor positioning.

Name + O: The actual output data field, where the application program places the data.

Page 70: CICS Training Material

70

SEND MAP Command (Contd..)EXEC CICS SEND MAP(MAP1)

MAPSET(MAPSET1) ] [FROM(DATANAME) ], [DATAONLY] |

MAPONLY],[ CURSOR(VALUE) ],[ FREEKB ] , [ ERASE ] , [ FRSET ] ,[ HANDLE | NOHANDLE ] ,[ RESP (DATANAME) ]

END-EXEC.

• Conditions : INVREQ,LENGERR

Page 71: CICS Training Material

71

SEND MAP Command (Contd..)

MAP specified the name of the MAP defined thru DFHMDI command , which describes the screen details.

MAPSET specified the name of the MAPSET defined thru DFHMSD command which includes the MAP.

MAPONLY is used when no data from your program is to be merged into the map.

DATAONLY is used when only the data from the program is to be sent to the screen. The constants in the map are not sent.

Page 72: CICS Training Material

72

SEND MAP Command (Contd..)

FROM is used to specify the area in the working storage section from which the data is to be sent to the terminal.

Page 73: CICS Training Material

73

AID KEYSAID KEYS

First time when a transaction is initiated the application program throws the screen image on the terminal thru SEND MAP command. Once the screen appears, the AID (Attention Identifier ) Keys are being used to send the information back from the terminal to CICS to application program. CICS application program needs to trap the attention identifier keys and process various functions related to the AID keys.

Salient Points• PF keys, PA keys, ENTER & CLEAR key

• EIBAID in the CICS Executive Interface Block contains, recently used AID key.

Page 74: CICS Training Material

74

AID KEYS (Contd..)• DFHAID – CICS System copybook which stores the values of

the EIBAID field for the various AID keys. Flow : User hits AID key – Control goes to CICS – To Application program. EIBAID contains information about the last AID key pressed. Program compares EIBAID to the DFHAID field and performs processing logic as per the AID key pressed.

• HANDLE AID establish the routines that are to be invoked when the aid is detected by a RECEIVE MAP command.Syntax : EXEC CICS HANDLE AID

Option (label)END-EXEC

Conditions : INVREQ

Page 75: CICS Training Material

75

Screen Design ConsiderationsScreen Design Considerations

Functional Screen Design

• Screen layout should be similar to source where terminal users enter data.

• Screen id should be placed at the top right corner of a screen. This helps at problem determination time.

• Screen title and field descriptions should be self-explanatory.

Instructions should be concise.

Page 76: CICS Training Material

76

Screen Design Considerations (Contd..)• Large fields can be broken into a number of small fields. E.g.

the field contact information can be split into contact numbers, email ids and postal address.

• In case of repeated fields or group of fields, sequence numbers helps.

• Error messages should be provided. Preferably the last few lines can be used for the error messages.

Page 77: CICS Training Material

77

Screen Design ConsiderationsUser-Friendly Screen Design

• Screens should be simple and friendly.• Default values in fields helps in reducing keystrokes by the

users. Also, in case the user forgets to enter a field data, defaults values are assigned according to the field.

• Calculations should be done by program and not by users. • The cursors should be placed in the appropriate fields.• Highlight the error field. Using a different colour or blinking

the error field can achieve this. This enables users to identify the erroneous field easily.

Page 78: CICS Training Material

78

Screen Design Considerations (Contd..)• Alarm sound can be used for error entries.• Provide suitable help messages for erroneous entries. The

help message should be instructive and kind and should not be rude.

• Provide help on fields and their meanings. Using an attention key for a help menu, which has details on each field, makes a screen user-friendly.

Artistic Screen Design• A simple screen layout is always preferred.• Proper use of indentations, spaces, and lines makes a

screen look good.

Page 79: CICS Training Material

79

Screen Design Considerations (Contd..)• Colour can help in improving the screen design; however the

colour used should be in accordance with the norms and standards followed.

Considerations for Human Errors • Important and useful fields can be placed at the top part of

the screen. • Related fields can be grouped together.• Protected fields should be skipped automatically. This

reduces manual skipping and is preferred.• Skipper/Stopper techniques can be used at appropriate

places.

Page 80: CICS Training Material

80

Exercise - 1

Exercise - 1

Page 81: CICS Training Material

81

CICS File Processing TechniquesCICS File Processing Techniques

Page 82: CICS Training Material

82

CICS VS FILE PROCESSING

File handling in CICS is achieved thru a set of file handling commands. It is essential to know the various file handling commands for application programming.

File Specific functions to be performed are the following.• Defining a specific file to the CICS system.• Reading a file sequentially• Reading a Key Sequenced file randomly• Reading a file sequentially starting from a specific point. • Reading and Updating a record• Deleting a Record.• Handle any errors that occur during file processing

Page 83: CICS Training Material

83

CICS VS FILE PROCESSING

Instead, CICS has a list of all the files it is allowedTo access.

This list is called the FILE CONTROL TABLE (FCT) and is maintained by the systems programmers

When CICS/VS is started up. It goes through the FCT and makes all the files available. When CICS/VS is closed down it closes all the files.

Application programs do not needThe FD Section, and the Input – OutputSection. Application program directly Refer to filenames in EXEC CICS Command.

Files do not need to exclusivelydefined in Application programs. The files do not need to opened and closed in a CICS application program , before being used in the program.

Page 84: CICS Training Material

84

CICS COBOL V/S COBOL

BATCH COBOL CICS COBOL

READ DATAFILE INTO REC-AREA EXEC CICS READDATASET (‘FILE IDENTIFIER)INTO (RECORD NAME)RID-FLD (record-key)END-EXEC.

WRITE RECORD-NAME FROM RECORD-AREA

EXEC CICS WRITE DATASET (‘File identifier’) FROM (Record-Name) RID-FLD (Record- key)END-EXEC.

Replaced by

Replaced by

AT END MOVE ‘Y’ TOEOF-FLAG

Page 85: CICS Training Material

85

VSAMVSAM

Different types of VSAM Datasets used in CICS are :

• ESDS Entry Sequenced Dataset• KSDS Key Sequenced Dataset• RRDS Relative Record Dataset

Page 86: CICS Training Material

86

Services Provided By CICSServices Provided By CICS

• Basic Operations required for a file areAdding a Record.Modifying an Existing Record.Deleting an Existing Record. Browsing One or Selected or All Records.

• In Addition, CICS ProvidesExclusive Control. (Record Level Locking).Data Independence.Journaling.Opening and closing Files.

Page 87: CICS Training Material

88

Defining A File in CICSDefining A File in CICS

• Files should be defined in FCT (File Control Table).

• FCT will contain all the Information about a file (like dataset name, access methods, permissible file service request, etc.)

• Defining files can be done either by CEDA Transaction or DFHFCT Macro.

Page 88: CICS Training Material

89

Syntax of DFHFCT Macro Syntax of DFHFCT Macro

DFHFCT TYPE=FILE,ACCMETH=VSAM,

DATASETNAME=NAME,

SERVRQ=(ADD,BROWSE,DELETE,READ,UPDATE),

FILSTAT=(ENABLED,OPENED)

Page 89: CICS Training Material

90

File Handling in ProgramsFile Handling in Programs

• Files should not be defined in the Program.

• Program should not open or close a File.

• Records can be written in any order. A number of records can be

added at a time.

• Records can be inserted, updated or deleted.

Page 90: CICS Training Material

91

Important Key-WordsImportant Key-Words

• Dataset/File :- Name in the FCT.

• Into/From (WS-Rec) :- Working-Storage Area defined in the program where the CICS Puts/Gets the Data.

• RIDFLD :- Contains the Record Key.

• RESP :- Contains the return code of the executed command.

• LENGTH :- Length of the Record to be Retrieved or Written.

Page 91: CICS Training Material

92

Random READRandom READ

EXEC CICS READ File(filename)

[SET() | Into()]

RIdfld(Rec-Key)

END-EXEC.

Condition: DISABLED, NOTOPEN, NOTFND, LENGERR, DUPKEY, IOERR.

Page 92: CICS Training Material

93

Example for Random Read Example for Random Read

EXEC CICS READ

File( 'INVMAS ')

Into(WS-INVMAS-REC)

Length(WS-INVMAS-LEN)

RIdfld('7135950602') | RIdfld(WS-INVMAS-KEY)

END-EXEC.

Page 93: CICS Training Material

94

Sequential ReadSequential Read

• Sequential Read is done by Browse Oper.• Establish the pointer to the First Record to be Read Using

StartBr.• Next and Previous Records can be Read as required Using

ReadNext and ReadPrev.• End the Browse Operation at last.• Browse can be re-positioned.• During Browse Operation, Records cannot be Updated.

Page 94: CICS Training Material

95

Syntax for STARTBRSyntax for STARTBR

EXEC CICS STARTBR

FILE(filename)

RIDFLD(data-area)

END-EXEC.

Condition : DISABLED, IOERR, NOTFND, NOTOPEN.

Page 95: CICS Training Material

96

Reading the Record after STARTBRReading the Record after STARTBR

• Sequentially the Next or Previous Record can be read by a READNEXT or READPREV.

• The first READNEXT or READPREV will read the Record where the STARTBR has positioned the File Pointer.

Page 96: CICS Training Material

97

Syntax of READNext/READPrev Syntax of READNext/READPrev

EXEC CICS READNext | READPrev

FILE(name)

INTO(data-area)|SET(ptr-ref)

RIDFLD(data-area)

END-EXEC.

Condition : DUPKEY, ENDFILE, IOERR, LENGERR, NOTFND.

Page 97: CICS Training Material

98

ENDBRowseENDBRowse

• ENDBRowse terminates a Previously issued STARTBR.

• SYNTAX :

EXEC CICS ENDBR

FILE(filename)

END-EXEC.

Condition: INVREQ

Page 98: CICS Training Material

99

RESETBRRESETBR

• Its effect is the same as ENDBR and then giving another STARTBR.

• Syntax :

EXEC CICS RESETBR

FILE(filename)

RIDFLD(data-area)

END-EXEC.

Condition: IOERR, NOTFND.

Page 99: CICS Training Material

100

WRITE CommandWRITE Command

• Adds a new record into the File.• For ESDS, RIDFLD is not used but after write execution, RBA

value is returned and Record will be written at the end of the File.

• For KSDS, RIDFLD should be the Record Key. The record will be written depending on the Key.

• MASSINSERTion must be done in ascending order of the Key.

Page 100: CICS Training Material

101

Syntax for WRITE Syntax for WRITE

EXEC CICS WRITE

FILE(filename)

FROM(data-area)

RIDFLD(data-area)

END-EXEC.

Condition: DISABLED, DUPREC, IOERR, LENGERR, NOSPACE, NOTOPEN.

Page 101: CICS Training Material

102

REWRITE CommandREWRITE Command

• Updates a Record which is Previously Read with UPDATE Option.

• REWRITE automatically UNLOCKs the Record after execution.

Page 102: CICS Training Material

103

Syntax for REWRITESyntax for REWRITE

EXEC CICS REWRITE

FILE(filename)

FROM(data-area)

END-EXEC.

Condition: DUPREC, IOERR, LENGERR, NOSPACE.

Page 103: CICS Training Material

104

DELETE CommandDELETE Command

• Deletes a Record from a dataset.• Record can be deleted in two ways,

1. RIDFLD with the full key in it

2. The record read with READ with UPDATE will be deleted.• Multiple Records Delete is possible using Generic Option.

Page 104: CICS Training Material

105

Syntax of DELETESyntax of DELETE

EXEC CICS DELETE

FILE(filename)

RIDFLD(data-area) Optional

END-EXEC.

Condition: DISABLED, DUPKEY, IOERR, NOTFND,

NOTOPEN.

Page 105: CICS Training Material

106

UNLOCKUNLOCK

• To Release the Record which has been locked by READ with UPDATE Command.

• Syntax :

EXEC CICS UNLOCK

FILE(filename)

:

[other options]

END-EXEC.

Condition: DISABLED, IOERR, NOTOPEN.

Page 106: CICS Training Material

107

General ExceptionsGeneral Exceptions

• The following exceptions usually will occur for ALL CICS file handling commands.

FILENOTFOUND,

NOTAUTH,

SYSIDERR,

INVREQ

Page 107: CICS Training Material

108

CICS Error Handling ProceduresCICS Error Handling Procedures

Page 108: CICS Training Material

109

Error Handling in CICS

Possible Errors:

• Conditions that aren't normal from CICS's point of view but that are

expected in the program.

• Conditions caused by user errors and input data errors.

• Conditions caused by omissions or errors in the application code.

• Errors caused by mismatches between applications and CICS

tables, generation parameters and JCL

• Errors related to hardware or other system conditions beyond the

control of an application program.

Page 109: CICS Training Material

110

Error Handling methods

When the error (exceptional conditions) occur, the program can do any of the following

• Take no action & let the program continue - Control returns to the next inst. following the command that has failed to execute. A return code is set in EIBRESP and EIBRCODE. This state occurs ‘cause of NO HANDLE /RESP/IGNORE conditions

• Pass control to a specified label - Control goes to a label in the program defined earlier by a HANDLE CONDITION command.

• Rely on the system default action - System will terminate or suspend the task depends on the exceptional condition occurred

Page 110: CICS Training Material

111

Error Handling methods (Contd..)• HANDLE CONDITION condition[(label)]... 'condition' specifies

the name of the condition, and 'label' specifies the location within the program to be branched

• Remains active while the program is executing or until it encounters IGNORE/another HANDLE condition.

• Syntax :EXEC CICS HANDLE CONDITION ERROR(ERRHANDL) LENGERR(LENGRTN)END-EXEC

This example handles DUPREC condition separately, all the other Errors together. LENGERR will be handled by system

Page 111: CICS Training Material

112

HANDLE Condition

Example of Handle condition:

EXEC CICS HANDLE CONDITION

NOTFND(RECORD-NOT-FOUND)

END-EXEC

This condition catches the NOTFND condition and transfers control to the REC-NOT- FOUND paragraph in the program. The error handling logic can be coded in the REC-NOT-FND paragraph.

Page 112: CICS Training Material

113

Alternative to Handle condition

• NOHANDLE to specify “no action to be taken for any condition or attention identifier (AID) “

• RESP(xxx) "xxx" is a user-defined full word binary data area. On return from the command, it contains a return code. Later, it can be tested by means of DFHRESP as follows,

If xxx=DFHRESP(NOSPACE) ... or If xxx=DFHRESP(NORMAL) ...

Page 113: CICS Training Material

114

IGNORE Condition

• IGNORE CONDITION condition ...• ‘condition’ specifies the name of the condition that is to be

ignored( no action will be taken)• Syntax :

EXEC CICS IGNORE CONDITION

ITEMERR

LENGERR

END-EXEC• This command will not take any actions if the given two error

occurs and will pass the control to the next instruction

Page 114: CICS Training Material

115

Sample program to use Handle condition

Here is an example of the CICS- COBOL code with proper handling of errors

Procedure Division.EXEC CICS HANDLE CONDITION

NOT-FND(REC-NOT-FOUND)END EXEC.:EXEC CICS READ

DATASET(SAMPLE)RIDFLD(EMP-NO)INTO (EMP-REC)

END-EXEC:GO TO LAST-PART

Page 115: CICS Training Material

116

Sample program to use Handle condition (Contd..)

REC-NOT-FOUND

MOVE ‘NOT-ON-FILE’ TO NAMEO ( SYMBOLIC MAP

PARAMETER)

LAST-PART.

EXEC CICS SEND

MAP (‘TC0BM31’)

MAPSET(‘TC0BM30’)

FROM (‘TC0BM310’)

DATA-ONLY

END-EXEC

Page 116: CICS Training Material

117

PUSH & POPPUSH & POP

• To suspend all current HANDLE CONDITION, IGNORE CONDITION, HANDLE AID and HANDLE ABEND commands.

• Used for eg. while calling sub-pgms (CALL).

• While receiving the control, a sub-program can suspend Handle commands of the called program using PUSH HANDLE.

• While returning the control, it can restore the Handle command using POP HANDLE.

Page 117: CICS Training Material

118

Syntax of Push & PopSyntax of Push & Pop

• Syntax of Push :

EXEC CICS Push

Handle

END-EXEC.

• Syntax of Pop :

EXEC CICS Pop

Handle

END-EXEC.

Page 118: CICS Training Material

119

EXEC Interface Block (EIB)EXEC Interface Block (EIB)

• CICS provides some system-related information to each task as EXEC Interface Block (EIB)

• Unique to the CICS command levelEIBAID Attention- Id (1 Byte)EIBCALEN Length of DFHCOMMAREA (S9(4)

comp)EIBDATE Date when this task started (S9(7) comp-3)EIBFN Function Code of the last command ( 2

Bytes)EIBRCODE Response Code of the last command (6

Bytes)EIBTASKN Task number of this task (S9(7) comp-3)EIBTIME Time when this task started (S9(7) comp-3)EIBTRMID Terminal-Id (1 to 4 chars)EIBTRNID Transaction-Id (1 to 4 chars)

Page 119: CICS Training Material

120

Processing Program Table - PPTProcessing Program Table - PPT

DFHPPT TYPE=ENTRY

PROGRAM |MAPSET= name

[PGMLANG= ASM|COBOL|PLI]

[RES= NO|FIX|YES]

:

: other options

:

Eg.

DFHPPT TYPE=ENTRY,PROGRAM=TEST,

PGMLANG=COBOL

Page 120: CICS Training Material

121

PCT EntryPCT Entry

DFHPCT TYPE=ENTRY TRANSID= name PROGRAM=name TASKREQ=pf6 RESTART=yes/no ( TRANSEC = 1 to 64) RSLKEY= 1 to 24 resource level key SCTYKEY= 1 to 64 security key :

:other options

Page 121: CICS Training Material

122

PROGRAM CONTROLPROGRAM CONTROL

Page 122: CICS Training Material

123

Program Control CommandsProgram Control Commands

• LINK

• XCTL

• RETURN

• LOAD

• RELEASE

Page 123: CICS Training Material

124

LINKLINK

• Used to pass control from one application program to another

• The calling program expects control to be returned to it

• Data can be passed to the called program using COMMAREA

• If the called program is not already in main storage it is loaded

Page 124: CICS Training Material

125

LINK Syntax LINK Syntax

EXEC CICS LINK

PROGRAM(name)

[COMMAREA(data-area)

[LENGTH(data-value)]]

END-EXEC.

Conditions : PGMIDERR, NOTAUTH, LENGERR

Page 125: CICS Training Material

126

XCTLXCTL

• To transfer control from one application program to another in the same logical level

• The program from which control is transferred is released

• Data can be passed to the called program using COMMAREA

• If the called program is not already in main storage it is loaded

Page 126: CICS Training Material

127

XCTL Syntax XCTL Syntax

EXEC CICS XCTL

PROGRAM(name)

[COMMAREA(data-area)

[LENGTH(data-value)]]

END-EXEC.

Conditions : PGMIDERR, NOTAUTH, LENGERR

Page 127: CICS Training Material

128

RETURNRETURN

• To return control from one application program to another at a

higher logical level or to CICS

• Data can be passed using COMMAREA when returning to CICS

to the next task

Page 128: CICS Training Material

129

RETURN SyntaxRETURN Syntax

EXEC CICS RETURN

[TRANSID(name)

[COMMAREA(data-area)

[LENGTH(data-value)]]]

END-EXEC.

Conditions : INVREQ, LENGERR

Page 129: CICS Training Material

130

PROG A LINKRETURN

CICS

PROG BXCTL

PROG CLINKRETURN

PROG DXCTL

PROG ERETURN

Level 0

Level 1

Level 2

Level 3

Application ProgramLogic Levels

Page 130: CICS Training Material

131

LOADLOAD

• To load program/table/map from the CICS DFHRPL concatenation library into the main storage

• Using load reduces system overhead• Syntax :

EXEC CICS Load

Program(name)

[SET (pointer-ref)]

[LENGTH (data-area)]

END-EXEC.

Condition : NOTAUTH, PGMIDER

Page 131: CICS Training Material

132

RELEASERELEASE

• To RELEASE a loaded program/table/map• Syntax :

EXEC CICS RELEASE

PROGRAM(name)

END-EXEC.

Conditions : PGMIDERR, NOTAUTH, INVREQ

Page 132: CICS Training Material

133

COMMAREA COMMAREA

• Data passed to called program using COMMAREA in LINK and XCTL

• Calling program - Working Storage definition• Called program - Linkage section definition under

DFHCOMMAREA• Called program can alter data and this will automatically

available in calling program after the RETURN command

( need not use COMMAREA option in the return for this purpose )

• EIBCALEN is set when COMMAREA is passed

Page 133: CICS Training Material

134

Communication With DatabasesCommunication With Databases

Page 134: CICS Training Material

135

CICS - DB2CICS - DB2

• CICS provides interface to DB2.• DB2 requires “CICS Attachment Facility” to connect itself to

CICS• CICS programs can issue commands for SQL services in order

to access the DB2 database.

EXEC SQL function

[options]

END-EXEC

Page 135: CICS Training Material

136

Operating system

CICS REGION DB2 REGION

App. Pgm. EXEC SQL.. CICS Attachment Facility

DB2Database

DB2 Database access by CICS

Page 136: CICS Training Material

137

RCT EntryRCT Entry

• The CICS-to-DB2 connection is defined by creating and assembling the resource control table (RCT)

• The information in RCT is used to control the interactions between CICS & DB2 resources

• DB2 attachment facility provides a macro (DSNCRCT) to generate the RCT.

• The RCT must be link-edited into a library that is accessible to MVS

Page 137: CICS Training Material

138

DB2 - PrecompilerDB2 - Precompiler

Source Program (EXEC SQL...

| EXEC CICS...)

DB2 Precompiler

|

CICS command translator

|

Compile By COBOL

|

Linkedit by Linkage editor

|

Load Module

Page 138: CICS Training Material

139

QUEUES QUEUES

Page 139: CICS Training Material

140

Transient data ControlTransient data Control

• Provides application programmer with a queuing facility• Data can be stored/queued for subsequent internal or external

processing • Stored data can be routed to symbolic destinations• TDQs require a DCT entry • Identified by Destination id - 1 to 4 bytes

Page 140: CICS Training Material

141

TDQsTDQs

• Intra-partitioned - association within the same CICS subsystem

Typical uses are

- ATI (Automatic Task Initiation) associated with trigger level

- Message switching

- Broadcasting etc

• Extra-partitioned - association external to the CICS subsystem, Can associate with any sequential device - Tape, DASD, Printer etc

Typical uses are

- Logging data, statistics, transaction error messages

- Create files for subsequent processing by Non-CICS / Batch

programs.

Page 141: CICS Training Material

142

TDQsTDQs

• Operations

Write data to a transient data queue (WRITEQ TD)

Read data from a transient data queue (READQ TD)

Delete an intra partition transient data queue (DELETEQ TD).

Page 142: CICS Training Material

143

WRITEQ TDWRITEQ TD

• Syntax :

EXEC CICS WRITEQ TD

QUEUE(name)

FROM(data-area)

[LENGTH(data-value)]

[SYSID(systemname)]

END-EXEC.

Conditions: DISABLED, INVREQ, IOERR, ISCINVREQ, LENGERR, NOSPACE, NOTAUTH, NOTOPEN, QIDERR, SYSIDERR

Page 143: CICS Training Material

144

READQ TDREADQ TD

• Reads the queue destructively - Data record not available in the queue after the read.

• Syntax :

EXEC CICS READQ TD

QUEUE(name)

{INTO(data-area) | SET(ptr-ref) }

[LENGTH(data-value)]

[NOSUSPEND]

END-EXEC.

Conditions : DISABLED, IOERR, INVREQ, ISCINVREQ, LENGERR, NOTAUTH, NOTOPEN, QBUSY, QIDERR, QZERO, SYSIDERR

Page 144: CICS Training Material

145

DELETEQ TDDELETEQ TD

• Deletes all entries in the queue• Syntax :

EXEC CICS DELETEQ TD

QUEUE(name)

END-EXEC.

Conditions: INVREQ, ISCINVREQ, NOTAUTH, QIDERR, SYSIDERR

Page 145: CICS Training Material

146

Destination Control TableDestination Control Table

• DCT is to register the information of all TDQs• Destination Control Program (DCP) uses DCT to identify all

TDQs and perform all I/O operations.• DFHDCT is a macro to define intra & extra partition TDQs

TYPE=INTRA/EXTRA• REUSE option specified along with intra partition TDQ tells

whether the space used by TDQ record will be removed & reused after it has been read.

Page 146: CICS Training Material

147

Automatic Task InitiationAutomatic Task Initiation

• Facility through which a CICS transaction can be initiated automatically

DFHDCT TYPE=INTRA

DESTID=MSGS

TRANSID=MSW1

TRIGLEV=500

When the number of TDQ records reaches 500, the

transaction MSW1 will be initiated automatically• Applications

Message switching & Report printing

Page 147: CICS Training Material

148

Temporary Storage ControlTemporary Storage Control

• Provides application programmer the ability to store and retrieve data in a TSQ

• Application can use the TSQ like a scratch pad• TSQs are

- Created and deleted dynamically

- No CICS table entry required if recovery not required

- Identified by Queue id - 1 to 8 bytes

- Typically a combination of termid/tranid/operid• Each record in TSQ identified by relative position, called the item

number

Page 148: CICS Training Material

149

TSQsTSQs

• Operations– Write and Update data– Read data - Sequential and random– Delete the queue

• Access– Across transactions– Across terminals

• Storage– Main - Non-recoverable– Auxiliary - Recoverable – TST entry required, VSAM file DFHTEMP

Page 149: CICS Training Material

150

TSQs - Typical uses TSQs - Typical uses

• Data passing among transactions

• Terminal Paging

• Report printing

Page 150: CICS Training Material

151

WRITEQ TSWRITEQ TS

• Syntax :

EXEC CICS WRITEQ TS

QUEUE(name)

FROM(data-area)

[LENGTH(data-value)]

[NUMITEMS(data-area) |

ITEM(data-area) [REWRITE] ]

[MAIN|AUXILIARY]

[NOSUSPEND]

END-EXEC.

Conditions : ITEMERR, LENGERR, QIDERR, NOSPACE, NOTAUTH, SYSIDERR, IOERR, INVREQ, ISCINVREQ

Page 151: CICS Training Material

152

READQ TSREADQ TS

• Syntax :

EXEC CICS READQ TS

QUEUE(name)

{INTO(data-area) | SET(ptr-ref) }

LENGTH(data-value)

[NUMITEMS(data-area)]

[ITEM(data-area) | NEXT ]

END-EXEC.

Conditions : ITEMERR, LENGERR, QIDERR, NOTAUTH, SYSIDERR, IOERR, INVREQ, ISCINVREQ

Page 152: CICS Training Material

153

DELETEQ TSDELETEQ TS

• Deletes all entries in the queue• Syntax :

EXEC CICS DELETEQ TS

QUEUE(name)

END-EXEC.

Conditions: INVREQ, ISCINVREQ, NOTAUTH, QIDERR, SYSIDERR

Page 153: CICS Training Material

154

INTERVAL & TASK CONTROLINTERVAL & TASK CONTROL

Page 154: CICS Training Material

155

ASKTIMEASKTIME

• Used to obtain current date and time• Syntax :

EXEC CICS ASKTIME[ABSTIME(data-area)]

END-EXEC.

• EIBDATE and EIBTIME updated with current date and time• ABSTIME returns value of time in packed decimal format

Page 155: CICS Training Material

156

FORMATTIMEFORMATTIME

• Syntax :

EXEC CICS FORMATTIME ABSTIME(data-ref)

[YYDDD(data-area)]

[YYMMDD(data-area)]... etc.

[DATE(data-area) [DATEFORM[(data-area)]]]

[DATESEP[(data-value)]]

[DAYOFMONTH(data-area)]

[MONTHOFYEAR(data-area)]

[YEAR(data-area)].....

[TIME(data-area) [TIMESEP[(data-value)]]]

END-EXEC.

Condition: INVREQ

Page 156: CICS Training Material

157

DELAYDELAY

• Used to DELAY the processing of a task• The issuing task is suspended for a specified interval or Until the

specified time • Syntax :

EXEC CICS DELAY

INTERVAL(hhmmss) | TIME(hhmmss)

END-EXEC

Conditions: EXPIRED, INVREQ

Page 157: CICS Training Material

158

STARTSTART

• Used to start a transaction at the specified terminal and at the specified time or interval

• Data can be passed to the new transaction• Syntax :

EXEC CICS START

TRANSID(transid)

[TERMID(termid)

TIME(hhmmss) | INTERVAL(hhmmss) ]

END-EXEC

Conditions : INVREQ, LENGERR,TERMIDERR, TRANSIDERR

Page 158: CICS Training Material

159

Other Interval Control CommandsOther Interval Control Commands

• POST - to request notification when the specified time has expired.

• WAIT EVENT - to wait for an event to occur.• RETRIEVE - Used to retrieve the data passed by the START• CANCEL -Used to cancel the Interval Control requests. eg.

DELAY,POST and START identified by REQID.• SUSPEND - Used to suspend a task• ENQ - to gain exclusive control over a resource• DNQ - to free the exclusive control from the resource gained by

ENQ

Page 159: CICS Training Material

160

Recovery & RestartRecovery & Restart

Page 160: CICS Training Material

161

The Need for Recovery/RestartThe Need for Recovery/Restart

• The possible failures that can occur outside the CICS system are

Communication failures (in online systems)

Data set or database failures

Application or system program failures

Processor failures & Power supply failures.

• Recovery/Restart facilities are required to minimize or if possible, eliminate the damage done to the online system, in case of the above failures to maintain the system & data integrity.

Page 161: CICS Training Material

162

RECOVERYRECOVERY

• An attempt to come back to where the CICS system or the transaction was when the failure occurred

• Recoverable Resources

VSAM files

Intrapartition TDQ

TSQ in the auxiliary storage

DATA tables

Resource definitions & System definition files

Page 162: CICS Training Material

163

RESTARTRESTART

• To resume the operation of the CICS system or the transaction when the recovery is completed

Page 163: CICS Training Material

164

Facilities for Recovery/RestartFacilities for Recovery/Restart

Facilities for CICS Recovery/Restart

• Dynamic Transaction Backout• Automatic Transaction Restart• Resource Recovery Using System Log• Resource Recovery Using Journal• System Restart• Extended Recovery Facility (XRF)

Page 164: CICS Training Material

165

Dynamic Transaction Backout (DTB)Dynamic Transaction Backout (DTB)

• When the transaction fails, backing out the changes made by the transaction while the rest of the CICS system continues normally is called DTB

• CICS automatically writes the ‘before image’ information of the record into the dynamic log for the duration of one LUW ,the work between the two consecutive SYNC points

• When an ABEND occurs, CICS automatically recovers all recoverable resources using the info. in dynamic log (Set DTB=YES in PCT)

Page 165: CICS Training Material

166

LUW & SYNC pointLUW & SYNC point

• The period between the start of a particular set of changes and the point at which they are complete is called a logical unit of work - LUW

• The end of a logical unit of work is indicated to CICS by a synchronization point (sync pt).

• Intermediate SYNC pt. can be done by• Syntax :

EXEC CICS SYNCPOINT

[ROLLBACK]

END-EXEC

Page 166: CICS Training Material

167

LUWs & SYNC ptsLUWs & SYNC pts

|- - - - - - - - - - - - LUW - - - - - - - - - |

Task A|---------------------------------------------|

SOT EOT-SP

|- - - LUW- - |- - - LUW- - |- - -LUW- - |

Task B|---------------->--------------->--------------|

SOT SP SP EOT-SP

When the failure occurs, changes made within the abending LUW will be backed out.

Page 167: CICS Training Material

168

Automatic Transaction RestartAutomatic Transaction Restart

• CICS capability to automatically restart a transaction after all resources are recovered through DTB

• If the transaction requires automatic restart facility, set RESTART=YES in PCT

• Care should be taken in order to restart the task at the point where DTB completes in the case of intermediate SYNC point

Page 168: CICS Training Material

169

Program PreparationProgram Preparation

Page 169: CICS Training Material

170

Introduction Introduction

• Preparing a Program to run in CICS Environment.• Defining the Program in the CICS Region.• Executing the Program.

Page 170: CICS Training Material

171

LOADMODULE

LINK EDIT

COBOLCOMPILER

CICS COMPILER

DB2PRECOMPILER

IF DB2 :

SOURCE

Program preparation

Page 171: CICS Training Material

172

Preparing a ProgramPreparing a Program

CICS requires the following steps to prepare a program

• Translating the Program.• Assemble or Compile the Translator Output. &• Link the Program.

Page 172: CICS Training Material

173

TranslationTranslation

• Translates the ‘EXEC CICS’ Statements into the Statements your Language (COBOL) Compiler can Understand.

• The Translator gives two outputs, a Program Listing as SYSPRINT and a Translated Source in SYSPUNCH.

• The SYSPUNCH is given as the input to the Program Compiler.• If any Copy Books are used in the Program, there should not be

any CICS Statements in the Copy Book.

Page 173: CICS Training Material

174

Compiling or LinkingCompiling or Linking

• As the CICS Commands have been translated, the compilation of the CICS program is the same as language program.

• Hence, the compiler options can be specified as required.

Page 174: CICS Training Material

175

Defining the Program Defining the Program

• The Application should be defined and installed into the PPT.

• This can be done either by using CEDA trans or DFHPPT.

Page 175: CICS Training Material

176

CICS Supplied Transactions CICS Supplied Transactions

Page 176: CICS Training Material

177

CESN/CESF TransactionsCESN/CESF Transactions

• To sign on to CICS system• CESN [USERID=userid] [,PS=password]

[,NEWPS=newpassword][,LANGUAGE=l]• Userid & password values can be from 1-8 chars.• In RACF, the Userid given in CESN is verified.• NEWPS to change the password and LANGUAGE to choose

national language• Sign off by CESF which breaks the connection between the user

and CICS• If the Sign on is done twice for the same userid at the terminal,

the previous operator will be signed off

Page 177: CICS Training Material

178

CECI - Command Level Interpreter CECI - Command Level Interpreter

• To build and test the effect of EXEC CICS commands• CECI ASSIGN is used to get the current userid,sysid, terminal id,

application id etc..• Before using the maps in programs, it can be tested using CECI

to check how it appears on the screen.• CECI gives the complete command syntax of the specified

command.• CECI READQ TD QUEUE(TESTL001) will read the current

record of the given TDQ

Page 178: CICS Training Material

179

CEMT-Master Terminal TransactionCEMT-Master Terminal Transaction

CEMT provides the following services

• Displays the status of CICS & system resources• Alter the status of CICS & system resources• Remove the installed resource definitions• Perform few functions that are not related to resources

Page 179: CICS Training Material

180

CEDF-Execution Diagnostic FacilityCEDF-Execution Diagnostic Facility

• To test command level application programs interactively• CEDF [termid/sysid/sessionid] [,ON/,OFF]• Termid - the identifier of the terminal on which the transaction to

be tested is being run• Sessionid - To test/monitor a transaction attached across an

MRO/ISC session• Sysid - To test a transaction across an APPC session

Page 180: CICS Training Material

181

CEDF (Contd..)CEDF (Contd..)

The points at which EDF interrupts execution of the program and sends a display to the terminal• At transaction initialization, after EIB has been initialized and

before the app. pgm given control• Start of execution of each CICS command (auguement

values can be changed at this point)• End of execution of each CICS command and before the

Handle condition mechanism is invoked (response code values can be changed)

• At program termination & at normal task termination• When an ABEND occurs & at abnormal task termination.• EIB values can be changed..& CEBR can be invoked

Page 181: CICS Training Material

182

CEBR-Temporary Storage BrowseCEBR-Temporary Storage Browse

• To browse the contents of CICS temporary storage queues (TSQ)

• CEBR by default will show the queue associated with the current terminal ‘CEBRL001’ which can be overridden to view any other queue

• TERM to browse TSQ for another terminal• QUEUE to make the named queue, current• PUT to copy the current queue contents into TDQ• GET to fetch TDQ for browsing• PURGE erases the contents of the current queue

Page 182: CICS Training Material

183

Exercise - 2

Exercise - 2

Page 183: CICS Training Material

184

Thank YouThank You