Sunteți pe pagina 1din 21

CICS

(Customer Information Control System)

Table of Contents
Introduction to CICS
Basic Mapping Support
Program Control
File Control
Queues
Program preparation
CICS Supplied Transactions
Introduction to CICS
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 language version - commands to request
CICS services - Single command can replace series of macros.

Batch & Online Environment


BATCH SYSTEM

1. Input data is prepared and given in a 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 SYSTEM

1. Data is entered as needed from the 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 any time

CICS & Operating System


DB/DC System
CICS System Services

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

Task &Transaction

Task:- A basic unit of work which is scheduled by the operating system or CICS
E.g.; -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).

Application Programming Concepts

Pseudo-Conversational
Multitasking
Multithreading
Quasi-Reentrancy

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.

Conversational Transaction Example

PROCEDURE DIVISION.
:
FIRST-PROCESS.
EXEC CICS RECEIVE ---- <= TSK1, 12345
END-EXEC.
: Process
EXEC CICS SEND ----- <= EMP (12345) Details
END-EXEC.
* - - - - - - Program Waits For Response - - - - -
SECOND PROCESS.
EXEC CICS RECEIVE ----- <= User Enters Data
END-EXEC.
: Process

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.

Pseudo-Conversational Example
Transaction TSK1
Program PROG1

PROCEDURE DIVISION.
:
EXEC CICS RECEIVE
END-EXEC.
:
EXEC CICS SEND
END-EXEC.
EXEC CICS RETURN
TRANSID (‘TSK2’)
END-EXEC.

CICS Components

Control Programs (or Management Modules)


Programs that interface between OS and application program
Handles the general functions that are crucial to operation of CICS

Program Control PCP


File control FCP
Terminal Control TCP
Task Control KCP
Temporary Storage TSP
Transient Data TDP
Storage Control SCP
Interval Control ICP
Journal Control JCP

Control Tables
Define the CICS environment
Functionally associated with the management module

Processing Program Table PPT


File Control Table FCT
Terminal Control Table TCT
Program Control Table PCT
Temp. Storage Table TST
Destin. Control Table DCT

Control Blocks (or Areas)


Contain system type information. E.g. Task Control Area contains information
about the task
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

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.

Basic Mapping Support

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.

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.

Types 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

Symbolic Map
Ensure device and format independence in the app pgm.
Symbolic Map is a map used by Application Program (DSECT)

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

Physical & Symbolic Map - Logic Flow

Map definition Macros


General Format
1 16 72
setname operation operands contd.

Example
EMPMAPDFHMSD TYPE=MAP, X
MODE=INOUT, X
LANG=COBOL, X
STORAGE=AUTO, X
TIOAPFX=YES
*
ANY COMMENTS

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

DFHMSD Macro

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

Example
EMPMSET DFHMSD TYPE=&SYSPARM , X
MODE=INOUT, X
LANG=COBOL, X
STORAGE=AUTO, X
TIOAPFX=YES, X
CNTL=(FREEKB,FRSET,PRINT)

DFHMDI Macro

Define a map and its characteristics


Example
EMPMAP DFHMDI SIZE=(ll,cc), X
LINE=nn, X
COLUMN=mm, X
JUSTIFY=LEFT/RIGHT

Screen Layout
Where
& Attribute character
n Unprotected numeric
- Cursor
DFHMDF
Macro For The Above Layout

Define a field and its characteristics


Example
DFHMDFPOS(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

Attribute character

Invisible one byte character


Defines the characteristics of a field
Thru’ ATTRB parameter 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

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

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 byte
X Unprotected field
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

Cursor Positioning Techniques

Static positioning (map definition)

Dynamic/Symbolic Positioning (app. pgm)

Dynamic/Relative Positioning (app. pgm)

AID KEYS

Indicates the method to initiate the transfer of information 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

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

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

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

Types of BMS Panel operations

Single Map panel


Text Panel
Multipage Message
Multimap Panel
Multimap/Multipage Message

Screen Design Considerations

Functional Screen Design

User-Friendly Screen Design

PROGRAM CONTROL

Commands
LINK
XCTL
RETURN
LOAD
RELEASE
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.

Syntax:
EXEC CICS LINK
PROGRAM(name)
[COMMAREA(data-area)
[LENGTH(data-value)]]
END-EXEC.

Conditions: PGMIDERR, NOTAUTH, LENGERR

XCTL

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

Syntax:
EXEC CICS XCTL
PROGRAM(name)
[COMMAREA(data-area)
[LENGTH(data-value)]]
END-EXEC.

Conditions: PGMIDERR, NOTAUTH, LENGERR

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

Syntax:
EXEC CICS RETURN
[TRANSID(name)
[COMMAREA(data-area)
[LENGTH(data-value)]]]
END-EXEC.
Conditions: INVREQ, LENGERR

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.

Conditions: NOTAUTH, PGMIDERR

RELEASE

To RELEASE a loaded program/table/map

Syntax:
EXEC CICS RELEASE
PROGRAM(name)
END-EXEC.

Conditions: PGMIDERR, NOTAUTH, INVREQ

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 be 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

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
depending on the exceptional condition occurred.

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

LENGERR will be handled by system

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

PUSH & POP

To suspend all current HANDLE CONDITION, IGNORE CONDITION, HANDLE


AID and HANDLE ABEND commands.
Used for e.g. 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
Syntax of Push:
EXEC CICS Push
Handle
END-EXEC.

Syntax of Pop :
EXEC CICS Pop
Handle
END-EXEC.

EXEC Interface Block (EIB)

CICS provides some system-related information to each task as EXEC Interface


Block (EIB) unique to the CICS command level
EIBAID 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)
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

PCT Entry
DFHPCT 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

File Handling
VSAM
Different types of VSAM Datasets used in CICS are :

ESDS Entry Sequenced Dataset


KSDS Key Sequenced Dataset
RRDS Relative Record Dataset

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.

Defining Files

In CICS, Files cannot be created, Files can be created using IDCAMS Utility.

Re-indexing, Creating new indexes, etc. should be done using IDCAMS Only.

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.

Syntax of DFHFCT Macro


DFHFCT TYPE=FILE,ACCMETH=VSAM,
DATASETNAME=NAME,
SERVRQ=(ADD,BROWSE,DELETE,READ,UPDATE),
FILSTAT=(ENABLED,OPENED)

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.

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.

Random READ

EXEC CICS READ File(filename)


[SEt() | Into()]
RIdfld(Rec-Key)
END-EXEC.

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

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.

Sequential Read

Sequential Read is done by Browse Operation


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.

Syntax for STARTBR


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

Condition : DISABLED, IOERR, NOTFND, NOTOPEN.

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.

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.

ENDBRowse

ENDBRowse terminates a Previously issued STARTBR.


SYNTAX:
EXEC CICS ENDBR
FILE(filename)
END-EXEC.

Condition: INVREQ

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.

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.

Syntax :
EXEC CICS WRITE
FILE(filename)
FROM(data-area)
RIDFLD(data-area)
END-EXEC.

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


REWRITE Command

Updates a Record which is Previously Read with UPDATE Option.

REWRITE automatically UNLOCKs the Record after execution.

Syntax:
EXEC CICS REWRITE
FILE(filename)
FROM(data-area)
END-EXEC.

Condition: DUPREC, IOERR, LENGERR, NOSPACE.

DELETE Command

Deletes a Record from a dataset.


Record can be deleted in two ways,
RIDFLD with the full key in it. and
the record read with READ with UPDATE will be deleted.
Multiple Records Delete is possible using Generic Option.

Syntax:
EXEC CICS DELETE
FILE(filename)
RIDFLD(data-area) Optional
END-EXEC.

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

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.

General Exceptions

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

FILENOTFOUND,
NOTAUTH,
SYSIDERR,
INVREQ

Communication With Databases

CICS - DB2

CICS provides interface to DB2.


CICS programs can issue commands for SQL services in order to access the DB2
database.
EXEC SQL function
[options]
END-EXEC

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

DB2 – Precompiler

Source Program (EXEC SQL...


| EXEC CICS...)
DB2 Precompiler
|
CICS command translator
|
Compile By COBOL
|
Linkedit by Linkage editor
|
Load Module

Program Preparation

Introduction

Preparing a Program to run in CICS Environment.


Defining the Program in the CICS Region.
Executing the Program.

Preparing a Program

CICS requires the following steps to prepare a Program.


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

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.

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.

Defining the Program

The Application should be defined and Installed into the PPT.


This can be done either by using CEDA Trans. or DFHPPT.

CICS Supplied Transactions

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

CEMT-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
CEBR-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

S-ar putea să vă placă și