cicsnew

157
CICS C I C S (Customer Information Control System)

Transcript of cicsnew

Page 1: cicsnew

CICS 1

C I C S(Customer Information Control System)

Page 2: cicsnew

CICS 2Table of Contents• Introduction to CICS• Basic Mapping Support• Program Control• File Control• Queues• Interval and Task Control• Recovery and restart• Program preparation• CICS Supplied Transactions• Screen Definition Facility

Page 3: cicsnew

CICS 3

Introduction to CICS

Page 4: cicsnew

CICS 4

Introduction

• 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 5: cicsnew

CICS 5

Batch & 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

• ONLINE SYSTEM1. Data is entered as needed

not in sequence (terminal)2. Since processing seq. is

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

3. Programs and files can be shared

4. Transaction can be run at any time

Page 6: cicsnew

CICS 6

CICS & Operating System

Operating System

CICS

User’sApp.Prg

Files &Database

Enter Code :

Page 7: cicsnew

CICS 7

DB/DC System

Terminals

Central System

Data Base

Page 8: cicsnew

CICS 8

CICS System Services

• Data-Communication Functions• Data-Handling Functions• Application Program Services• System Services• Monitoring Functions

Page 9: cicsnew

CICS 9

Task &Transaction

• 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)

Page 10: cicsnew

CICS 10Application Programming Concepts

• Pseudo-Conversational

• Multitasking

• Multithreading

• Quasi-Reentrancy

Page 11: cicsnew

CICS 11

Terminal Conversation

• 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

Page 12: cicsnew

CICS 12Conversational Transaction Example

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

Page 13: cicsnew

CICS 13Pseudo-Conversational Example

Transaction TSK1Program PROG1

PROCEDURE DIVISION. :

EXEC CICS RECEIVE END-EXEC. :EXEC CICS SEND END-EXEC.EXEC CICS RETURNTRANSID (‘TSK2’)END-EXEC.

Transaction TSK2Program PROG2

PROCEDURE DIVISION. :

EXEC CICS RECEIVE END-EXEC.

:EXEC CICS SEND END-EXEC.EXEC CICS RETURNEND-EXEC.

Page 14: cicsnew

CICS 14

CICS Components

• Control Programs (or Management Modules)Programs that interface between OS and app. pgmHandle the general functions that are crucial to operation of CICS

• Control Tables Define the CICS environmentFunctionally associated with the management module

• Control Blocks (or Areas)Contain system type information. Eg. Task Control Area contains

information about the task

Page 15: cicsnew

CICS 15Management Pgms. & Ctrl. Tables

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

• TablesProcessing Program Table

PPTFile Control Table

FCTTerminal Control Table TCTProgram Control Table PCTTemp. Storage Table

TSTDestin. Control Table

DCT

Page 16: cicsnew

CICS 16

CICS Program Considerations

• Considerations

- Must eventually return control to CICS

- Can’t modify procedure division instructions ‘cause 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 17: cicsnew

CICS 17

CICS 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 18: cicsnew

CICS 18

Sample CICS ProgramIDENTIFICATION DIVISION.PROGRAM-ID. SAMPLE.ENVIRONMENT DIVISION.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-INPUT.

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

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.

Page 19: cicsnew

CICS 19

Sample Program Contd.PROCEDURE DIVISION.000-MAINLINE. PERFORM 100-RECV-INPUT. PERFORM 200-SEND-OUTPUT. EXEC CICS RETURN END-EXEC. STOP RUN.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.

Page 20: cicsnew

CICS 20

Basic Mapping Support

Page 21: cicsnew

CICS 21

Topics in BMS

• Introduction to BMS• Physical and Symbolic Map• Map and Mapset• Map Definition Macros• Screen Manipulation/Handling• Screen Design Considerations• Interfacing with Terminal using a Map

Page 22: cicsnew

CICS 22

Introduction to BMS • Primary functions of BMS

• 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.

Page 23: cicsnew

CICS 23

Map and Mapset

• Representation of one screen format is called Map (screen panel).

• One or more maps, linkedited together, makes up a Mapset (load module).

• Mapset must have a entry in PPT • Mapset name has two parts.

• Generic name 1- 7 chars. Used in App. Pgm.• Suffix 1 char. To identify the device type

• Multimap Panel• Dynamically constructing a screen panel with multiple

maps at the execution time

Page 24: cicsnew

CICS 24

Types of MAPSThere are 2 types of MAPS

• Physical MapPhysical Map is a map used by CICS ( CSECT)Ensure device independence in the application program

• Symbolic MapEnsure device and format independence in the app prog Symbolic Map is a map used by Application Program (DSECT)

Page 25: cicsnew

CICS 25

Example 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 26: cicsnew

CICS 26

Physical & Symbolic Map - Logic Flow

BMSsource

Assembler

Physical MAP

Linkage editor

Symbolic MAP

Load module (MVS)

Page 27: cicsnew

CICS 27

Map definition Macros

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

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

** ANY COMMENTS

Page 28: cicsnew

CICS 28

Order of Macros

• DFHMSD TYPE=DSECT Mapset • DFHMDI Map• DFHMDF A field• DFHMDF A field• :• DFHMDI Map• DFHMDF A field• DFHMDF A field• : • DFHMSD TYPE=FINAL Mapset• END

Page 29: cicsnew

CICS 29

DFHMSD Macro

• Define a mapset and its characteristics or to end a mapset definition

• Only one mapset is allowed in one assembly run.• Example

EMPMSET DFHMSD TYPE=&SYSPARM , X MODE=INOUT, XLANG=COBOL, XSTORAGE=AUTO, XTIOAPFX=YES, XCNTL=(FREEKB,FRSET,PRINT)

Page 30: cicsnew

CICS 30

DFHMDI Macro

• Define a map and its characteristics • Example

EMPMAP DFHMDI SIZE=(ll,cc),X

LINE=nn,X

COLUMN=mm,X

JUSTIFY=LEFT/RIGHT

Page 31: cicsnew

CICS 31

Screen Layout

• Where& Attribute charactern Unprotected numeric- Cursor

&Customer No. :&nnnnnnnn

Page 32: cicsnew

CICS 32DFHMDF Macro For The Above Layout

• Define a field and its characteristics• Example

DFHMDF POS(ll,cc), XINITIAL=‘Customer No. :’, XATTRB=ASKIP, XLENGTH=14

CUSTNO DFHMDF POS=(ll,cc), X ATTRB=(UNPROT,NUM,FSET,IC), X JUSTIFY=RIGHT, X

PICIN=‘9(8)’, XPICOUT=‘9(8)’, XLENGTH=8

Page 33: cicsnew

CICS 33

Attribute character

• Invisible one byte character• Defines the characteristics of a field

Thru’ ATTRB param. of DFHMDF.

• There are different kinds of attributes - Attributes to control the display intensity of the field - Keyboard Attributes

- Attribute Related to the Field Modification- Cursor Control Attribute

Page 34: cicsnew

CICS 34

Modified Data Tag

• Indicates the field has been modified or not• Effective use of MDT reduces the amount of data traffic.• MDT setting/resetting

- when the user modifies a field on the screen- CNTL=FRSET, defined in map/mapset- FSET in ATTRB parameter of DFHMDF

Page 35: cicsnew

CICS 35

Skipper 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 byteX Unprotected field

Page 36: cicsnew

CICS 36

Stopper 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 37: cicsnew

CICS 37

Cursor Positioning Techniques

• Static positioning (map definition)

• Dynamic/Symbolic Positioning (app.pgm) • Dynamic/Relative Positioning (app. pgm) • Checking Cursor Position by EIBCPOSN.

Page 38: cicsnew

CICS 38

AID KEYS• Indicates the method to initiate the transfer of info. from

terminal to CICS.• PF keys, PA keys, ENTER & CLEAR key• EIBAID contains , recently used AID code• Standard AID list - DFHAID• 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 39: cicsnew

CICS 39Numeric Sign/Decimal Pt Handling

• Numeric Sign : For input operations, Separate fields or CR/DR field approach can be used and for output operations, PICOUT parameter can be given in macro

• Decimal Point : For input operations, Virtual decimal point or Separate fields approach can be used and for output operations, PICOUT parameter has to be given in the field definition macro.

Page 40: cicsnew

CICS 40

SEND MAP• Writes formatted output to a terminal.• Syntax :

EXEC CICS SEND MAP(mapname)[[ FROM(dataname) ] [DATAONLY] | MAPONLY] [ MAPSET(mapsetname) ][ CURSOR(VALUE) ][ FREEKB ][ ERASE ][ FRSET ][ HANDLE | NOHANDLE [ RESP (dataname) ] ]

END-EXEC

Conditions : INVREQ,LENGERR

Page 41: cicsnew

CICS 41

RECEIVE MAP• To receive input from a terminal• Syntax :

EXEC CICS RECEIVE MAP (mapname) [ SET(pointer) | INTO(dataname) ]

[LENGTH(msg-len)] [ MAPSET(mapsetname) ]

[ HANDLE | NOHANDLE [ RESP() ] ]

END-EXEC

Conditions: INVREQ, MAPFAIL

Page 42: cicsnew

CICS 42

Types of BMS Panel operations

• Single Map panel• Text Panel• Multipage Message• Multimap Panel• Multimap/Multipage Message

Page 43: cicsnew

CICS 43

Screen Design Considerations

• Functional Screen Design • User-Friendly Screen Design

Page 44: cicsnew

CICS 44

ACCT

Operating System

TerminalControl

System Services

StorageManage-ment

Program Library

Account File

1

2 3

CICS Transaction (Initiation) Flow :-

Page 45: cicsnew

CICS 45

Menu Screen

Operating System

File

Control

BMS

Program

Program Library

Account File

CICS Transaction Flow :-( SEND MAP)

ACCT00

Page 46: cicsnew

CICS 46

User’sNext input

Operating System Program Library

Account File

FileControl

ProgramACCT01

BMS

6 78

CICS Transaction Flow :-( RECEIVE & SEND MAPs)

Page 47: cicsnew

CICS 47

PROGRAM CONTROL

Page 48: cicsnew

CICS 48

Program Control Commands

• LINK• XCTL• RETURN• LOAD• RELEASE

Page 49: cicsnew

CICS 49

LINK

• 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 50: cicsnew

CICS 50

LINK Syntax

EXEC CICS LINK PROGRAM(name) [COMMAREA(data-area) [LENGTH(data-value)]]

END-EXEC.

Conditions : PGMIDERR, NOTAUTH, LENGERR

Page 51: cicsnew

CICS 51

XCTL

• To xfer 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 52: cicsnew

CICS 52

XCTL Syntax

EXEC CICS XCTL PROGRAM(name) [COMMAREA(data-area) [LENGTH(data-value)]]

END-EXEC.

Conditions : PGMIDERR, NOTAUTH, LENGERR

Page 53: cicsnew

CICS 53

RETURN

• 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 54: cicsnew

CICS 54

RETURN Syntax

EXEC CICS RETURN [TRANSID(name) [COMMAREA(data-area) [LENGTH(data-value)]]]

END-EXEC.

Conditions : INVREQ, LENGERR

Page 55: cicsnew

CICS 55

PROG A LINKRETURN

CICS

PROG BXCTL

PROG CLINKRETURN

PROG DXCTL

PROG ERETURN

Level 0

Level 1

Level 2

Level 3Application ProgramLogic Levels

Page 56: cicsnew

CICS 56

LOAD• 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, PGMIDERR

Page 57: cicsnew

CICS 57

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

EXEC CICS RELEASE PROGRAM(name)

END-EXEC.

Conditions : PGMIDERR, NOTAUTH, INVREQ

Page 58: cicsnew

CICS 58

COMMAREA

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

• Calling program - Working Storage defn• Called program - Linkage section defn 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 59: cicsnew

CICS 59

POSSIBLE ERRORS• Conditions that aren't normal from CICS's point of view

but that are expected in the pgm. • Conditions caused by user errors and input data errors.• Conditions caused by omissions or errors in the application

code.• Errors caused by mismatches bet. applications and CICS

tables, generation parameters & JCL• Errors related to hardware or other system conditions

beyond the control of an appl. pgm.

Page 60: cicsnew

CICS 60Error Handling MethodsWhen 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 61: cicsnew

CICS 61

HANDLE CONDITION• 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 cond.

• Syntax :EXEC CICS HANDLE CONDITION ERROR(ERRHANDL) LENGERR(LENGRTN)END-EXEC This example handles DUPREC cond. separately, all the other

ERRORs together. LENGERR will be handled by system

Page 62: cicsnew

CICS 62Alternative 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 fullword 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 63: cicsnew

CICS 63

IGNORE CONDITION

• IGNORE CONDITION 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 64: cicsnew

CICS 64

PUSH & 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 65: cicsnew

CICS 65

Syntax of Push & Pop• Syntax of Push :

EXEC CICS Push HandleEND-EXEC.

• Syntax of Pop :

EXEC CICS Pop HandleEND-EXEC.

Page 66: cicsnew

CICS 66

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 67: cicsnew

CICS 67

Processing 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 68: cicsnew

CICS 68

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

:other options

Page 69: cicsnew

CICS 69

File Handling

Page 70: cicsnew

CICS 70

VSAM

Different types of VSAM Datasets used in CICS are :

• ESDS Entry Sequenced Dataset• KSDS Key Sequenced Dataset• RRDSRelative Record Dataset

Page 71: cicsnew

CICS 71

Services Provided By CICS• Basic Operations required for a file are

Adding a Record.Modifying an Existing Record.Deleting an Existing Record. Browsing One or Selected or All Records.

• In Addition, CICS Provides

Exclusive Control. (Record Level Locking).Data Independence.Journalling.Opening and closing Files.

Page 72: cicsnew

CICS 73

Defining A File to 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 73: cicsnew

CICS 74

Syntax of DFHFCT Macro

DFHFCT TYPE=FILE,ACCMETH=VSAM,

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

FILSTAT=(ENABLED,OPENED)

Page 74: cicsnew

CICS 75

File 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 75: cicsnew

CICS 76

Important 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 76: cicsnew

CICS 77

Random READ

EXEC CICS READ File(filename) [SEt() | Into()] RIdfld(Rec-Key)

END-EXEC.

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

Page 77: cicsnew

CICS 78

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 78: cicsnew

CICS 79

Sequential 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 79: cicsnew

CICS 80

Syntax for STARTBR

EXEC CICS STARTBR FILE(filename) RIDFLD(data-area)

END-EXEC.

Condition : DISABLED, IOERR, NOTFND, NOTOPEN.

Page 80: cicsnew

CICS 81

Reading 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 81: cicsnew

CICS 82

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 82: cicsnew

CICS 83

ENDBRowse

• ENDBRowse terminates a Previously issued STARTBR.• SYNTAX :- EXEC CICS ENDBR FILE(filename) END-EXEC.

Condition: INVREQ

Page 83: cicsnew

CICS 84

RESETBR

• 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 84: cicsnew

CICS 85

WRITE 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 85: cicsnew

CICS 86

Syntax for WRITE EXEC CICS WRITE

FILE(filename)FROM(data-area)RIDFLD(data-area)

END-EXEC.

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

Page 86: cicsnew

CICS 87

REWRITE Command

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

• REWRITE automatically UNLOCKs the Record after execution.

Page 87: cicsnew

CICS 88

Syntax for REWRITE

EXEC CICS REWRITEFILE(filename)FROM(data-area)

END-EXEC.

Condition: DUPREC, IOERR, LENGERR, NOSPACE.

Page 88: cicsnew

CICS 89

DELETE Command

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

RIDFLD with the full key in it. andthe record read with READ with UPDATE will be deleted.

• Multiple Records Delete is possible using Generic Option.

Page 89: cicsnew

CICS 90

Syntax of DELETE

EXEC CICS DELETE FILE(filename)RIDFLD(data-area)

OptionalEND-EXEC.

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

Page 90: cicsnew

CICS 91

UNLOCK• 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 91: cicsnew

CICS 92

General Exceptions

• The following Exceptions usually will occur for ALL CICS File Handling Commands.

FILENOTFOUND, NOTAUTH, SYSIDERR,

INVREQ

In Addition to the above, Exceptions shown along the systax will occur.

Page 92: cicsnew

CICS 93

Communication With Databases

Page 93: cicsnew

CICS 94

CICS - 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 94: cicsnew

CICS 95

Operating system

CICS REGION DB2 REGION

App. Pgm. EXEC SQL.. CICS Attachment Facility

DB2Database

DB2 Database access by CICS

Page 95: cicsnew

CICS 96

RCT 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 96: cicsnew

CICS 97DB2 - Precompiler Source Program (EXEC SQL... | EXEC CICS...) DB2 Precompiler | CICS command translator | Compile By COBOL | Linkedit by Linkage editor | Load Module

Page 97: cicsnew

CICS 98

QUEUES

Page 98: cicsnew

CICS 99

Transient 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 99: cicsnew

CICS 100

TDQs• Intra-partitioned - association within the same CICS

subsystemTypical uses are - ATI (Automatic Task Inititation ) 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 100: cicsnew

CICS 101

TDQs

• Operations

Write data to a transient data queue (WRITEQ TD)Read data from a transient data queue (READQ TD) Delete an intrapartition transient data queue (DELETEQ TD).

Page 101: cicsnew

CICS 102

WRITEQ 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 102: cicsnew

CICS 103

READQ 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 103: cicsnew

CICS 104

DELETEQ TD

• Deletes all entries in the queue• Syntax :

EXEC CICS DELETEQ TD QUEUE(name)

END-EXEC.

Conditions: INVREQ, ISCINVREQ, NOTAUTH, QIDERR, SYSIDERR

Page 104: cicsnew

CICS 105

Destination 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 105: cicsnew

CICS 106

Automatic Task Initiation

• Facility through which a CICS transaction can be initiated automatically

DFHDCT TYPE=INTRA DESTID=MSGS TRANSID=MSW1 TRIGLEV=500When the number of TDQ records reaches 500, the

transaction MSW1 will be initiated automatically

• Applications Message switching & Report printing

Page 106: cicsnew

CICS 107

Temporary 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 107: cicsnew

CICS 108

TSQs

• 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 108: cicsnew

CICS 109

TSQs - Typical uses

• Data passing among transactions• Terminal Paging• Report printing

Page 109: cicsnew

CICS 110

WRITEQ 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 110: cicsnew

CICS 111

READQ 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 111: cicsnew

CICS 112

DELETEQ TS

• Deletes all entries in the queue• Syntax :

EXEC CICS DELETEQ TS QUEUE(name)

END-EXEC.

Conditions: INVREQ, ISCINVREQ, NOTAUTH, QIDERR, SYSIDERR

Page 112: cicsnew

CICS 113

INTERVAL AND TASK CONTROL

Page 113: cicsnew

CICS 114

ASKTIME

• 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 114: cicsnew

CICS 115FORMATTIME• 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 115: cicsnew

CICS 116

DELAY

• 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 116: cicsnew

CICS 117

START• 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-EXECConditions : INVREQ, LENGERR,TERMIDERR, TRANSIDERR

Page 117: cicsnew

CICS 118Other 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 118: cicsnew

CICS 119

Recovery & Restart

Page 119: cicsnew

CICS 120

The 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 120: cicsnew

CICS 121

RECOVERY

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

• Recoverable ResourcesVSAM filesIntrapartition TDQTSQ in the auxiliary storageDATA tablesResource definitions & System definition files

Page 121: cicsnew

CICS 122

RESTART

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

Page 122: cicsnew

CICS 123

Facilities 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 123: cicsnew

CICS 124Dynamic 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 124: cicsnew

CICS 125

LUW & 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 125: cicsnew

CICS 126

LUWs & 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 126: cicsnew

CICS 127

Automatic 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 127: cicsnew

CICS 128

Extended Recovery Facility-XRF

• XRF is to increase the availability of CICS by automating the fast recovery of CICS resources

• There are two systems with same configuration• All the resources are shared by the two systems• If the failure occurs in one system, the other system will

continue • The system downtime can be reduced to few minutes if

XRF is used

Page 128: cicsnew

CICS 129

ACF/NCP

ActiveSession

Back-up Session

System Files

CICS Files

Application Files

MVS/XAACF/VTAMCICS/MVS

MVS/XAACF/VTAMCICS/MVS

30903090

Active System Shared Resources Alternate system

Communication Controller (3725)

XRF-Concept

Page 129: cicsnew

CICS 130

Program Preparation

Page 130: cicsnew

CICS 131

Introduction

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

Page 131: cicsnew

CICS 132

Preparing a Program

• CICS requires the following steps to prepare a Program.• Translating the Program.• Assemble or Compile the Translator Output. &• Link the Program.

Page 132: cicsnew

CICS 133

Translation

• 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 133: cicsnew

CICS 134

Compiling 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 134: cicsnew

CICS 135

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 135: cicsnew

CICS 136

CICS Supplied Transactions

Page 136: cicsnew

CICS 137

CESN/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 137: cicsnew

CICS 138CECI - 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 138: cicsnew

CICS 139CEMT-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 139: cicsnew

CICS 140 CEDF-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 140: cicsnew

CICS 141

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 141: cicsnew

CICS 142CEBR-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 142: cicsnew

CICS 143

Screen Definition Facility SDF - II

Page 143: cicsnew

CICS 144

INTRODUCTION - SDF

• An interactive tool for defining information to be displayed on the screen

• Objects created by SDF are used by various systems like CICS/BMS, IMS, ISPF etc..

• The SDF objects are Panel and Panel Groups (etc..) corresponding to map and mapset in CICS/BMS

Page 144: cicsnew

CICS 145

SDF Functions

• Creation of objects which is common for all the systems• Provides functions to alter and test the objects• Generation function to create code for the objects like

macro codes for CICS/BMS• Provides utilities to print, migrate & convert objects• Provides functions to develop application prototypes

Page 145: cicsnew

CICS 146Panel Commands• SDF has panel commands like ‘TOP’ ‘BOTTOM’ ‘UP’

‘DOWN , to browse through the the panels• PRESERVE to protect the panel• AUTOSAVE to set the automatic save option on• commands ‘SAVE’ to record the changes and

CANCEL/CCANCEL to quit the changes• TEST to test the appearance of the object • Commands are available to edit the panels... like to

create,alter & view the fields and its attributes E.g.. ATTRIBUTE,EDIT,SHOW,HIDE etc..

Page 146: cicsnew

CICS 147

Panel & Line Commands

• SDF has got panel commands to do the following.• To browse through the panel• To quit/save the changes• To protect the panel and to restore the panel in case or errors• To test the appearance of the panel

• Panel editor commands to create, alter & view the fields and its attributes

• And Line commands to copy, move, delete, repeat & insert lines

Page 147: cicsnew

CICS 148

Panels

• To create a panel, Enter a existing panel which is to be used as a skeleton for the new panel OR Enter a device type

• Panel text can be defined by typing the text in the required panel position in format mode.

• Variable fields can be defined by variable field marks. and arrays can be defined by specifying a dimension and direction.

• Variable fields can be defined by variable field marks

Page 148: cicsnew

CICS 149

Panels Contd.

• A panel can be included in another panel with few restrictions

• Default attributes are assigned to fields which can be changed. E.g.. for attributes are,• color,protection,intensity,cursor position,justify, field

format,field validation, modified data flag, etc.

• To change the panel,• Enter the panel name and library identifier where the panel

resides

Page 149: cicsnew

CICS 150

Panel Groups

• A panel group contains information about a group of panels, and the names of the panels that belong to the panel group.

• Procedure of Creating and editing panel group is same as panel

• Define the global parameters of the panel group thru’ ‘Panel Group Characteristics’ opt.• E.g.. BMS characteristics like generation name(later used in

generation) & logical device code etc.

Page 150: cicsnew

CICS 151

Generation

• As SDF objects are stored in internal rep. they have to be generated to be used in applications

• Output of generation , depends on the object type • Panel => Map • Panel group => Mapset

• One or more data structures(used in Cobol) or control blocks (BMS macros) can be generated

Page 151: cicsnew

CICS 152

SDF Libraries

• Define libraries(created in ISPF) to be used by SDF II to store and retrieve objects

• SDF II library is a partitioned data set with a three-level dataset name (project.group.dgipnl)

• Only the first two levels can be defined & third level added by sdf depends on the object type• DGIPNL-for panels, DGIGRP-for panel groups and DGIPST-

for partition sets

• 'ID' is assigned for each library which is used to search the objects in the library

• password can be given to protect the library.

Page 152: cicsnew

CICS 153

SDF utilities

• Print :- To print utility produces printouts of panels, panel groups,partition sets etc..

• Migration:- To migrate objects from various sources into SDF libraries. Eg. Maps, map sets & partition sets defined with CICS/BMS macros

• Conversion utility :-To convert objects from one target system to a new target system.

Page 153: cicsnew

CICS 154

Application Prototype

• To test the flow of panels, before they are incorporated into application programs.• Simulative prototype :- Simulates the primary interaction

between the application & user. • Used to validate and determine the initial user requirements

before designing the program

• Prototype definition• Identify the panel by giving name & library ID• Define the prototype rules based on the CURRENT panel,the

ACTION to be performed & NEXT PANEL to be displayed if certain CONDITIONS are met.

Page 154: cicsnew

CICS 155Sample MacroTULMAP DFHMSD TYPE=MAP,LANG=COBOL,MODE=INOUT, STORAGE=AUTO,SUFFIX=C TULMAP DFHMDI SIZE=(12,60), CTRL=(FREEKB,ALARM,FRSET), COLUMN=1,LINE=1,DATA=FIELD,

TIOAPFX=YES,JUSTIFY=(LEFT,FIRST)

DFHMDF POS=(3,14),LENGTH=6,INITIAL='Name:',

ATTRB=(PROT,NORM)

Page 155: cicsnew

CICS 156

contd

NAME DFHMDF POS=(3,21), LENGTH=10, ATTRB=(UNPROT,BRT,ASKIP)

DFHMDF POS=(3,32),LENGTH=1, ATTRB=(PROT,NORM)

DFHMDF POS=(4,14),LENGTH=6,INITIAL='Age :',

ATTRB=(PROT,NORM) AGE DFHMDF POS=(4,21),LENGTH=3,

ATTRB=(UNPROT,NORM), DFHMDF POS=(4,25),LENGTH=1,

ATTRB=(PROT,NORM) DFHMSD TYPE=FINAL

Page 156: cicsnew

CICS 157

Click here

Page 157: cicsnew

CICS 158

Thank You