Friday, January 29, 2010

CICS TUTORIAL

CICS Tutorial :-

CICS

INTRODUCTION

BATCH & ONLINE SYSTEM

ONLINE SYSTEM

DEFINITION : ONLINE processing allows a user to interact with a computer and access its resources via a terminal.
Example : Railway Reservation system.

BATCH & ONLINE SYSTEM

BATCH

ONLINE

Input

Data from card tape, disk Batched, sequential, scheduled

Data from terminal random, concurrent

Start of A job

Operator (or operating system) initiates the job. Other jobs in the same region must wait.

Once CICS is initialized, entering transaction id triggers the transaction to start.

Processing Mode

Single task single thread. Priority in job scheduling

Multi task multi thread. Priority processing.

End of job

Each job

Each transaction. Once CICS is terminated, no transactions can be entered.

Output

printed reports, output files. User must wait for batch jobs to produce reports (day, week, month)

Message terminals updated files, system Instant feed back

Resource Usage

Less

More

Example of application

Monthly sales report

Airline reservation system

WHAT IS CICS?

  • Customer Information Control System (CICS) was developed in 1960 by IBM
  • ONLINE CONTROL SYSTEM
  • General purpose data communication control system
  • Provides services to handle all the special requirements for online processing

Note : Role of CICS is to interface between application programs and the DB/DC control system.

CICS SERVICES & THE OPERATING SYSTEM

  • Requests for file I/P, O/P
  • Requests for database I/P, O/P
  • Requests for terminal I/P, O/P

CICS CONTROL PROGRAM AND TABLES

CICS CONTROL PROGRAM

  • CICS CONTROL PROGRAM (IBM SUPPLIED)
  • FCP (FILE CONTROL PROGRAM)
  • JCP (JOURNAL CONTROL PROGRAM)
  • KCP (TASK CONTROL PROGRAM)
  • PCP (PROGRAM CONTROL PROGRAM)
  • SCP (STORAGE CONTROL PROGRAM)
  • TCP (TERMINAL CONTROL PROGRAM)
  • TDP (TRANSIENT DATA PROGRAM)
  • TSP (TEMPORARY STORAGE PROGRAM)
    OTHERS

CICS CONTROL TABLES

  • CICS CONTROL TABLES (USER SPECIFIED)
  • FCT (FILE CONTROL TABLE)
  • JCT (JOURNAL CONTROL TABLE)
  • PCT (PROGRAM CONTROL TABLE)
  • PPT (PROCESSING PROGRAM TABLE)
  • TCT (TERMINAL CONTROL TABLE)
  • DCT (DESTINATION CONTROL TABLE)
  • TST (TEMPORARY STORAGE TABLE)

CICS START UP

  • CICS is submitted as a batch job.
  • CICS System Initialization program (SIP) is the main job step
  • SIP loads System Initialization Table (SIT)
  • SIP further loads all control programs and tables
    - Perform initial housekeeping tasks

CICS SHUTDOWN

  • Master terminal transaction is entered with shutdown option
  • CICS job produces various logs, statistics, dumps and other reports and ends
  • No transaction can be executed after that

ROLE OF CICS

  • MULTI TASKING
    • More than one task can be executed concurrently.
  • MULTI THREADING
    • Tasks share the same program under the multi tasking environment.
  • RE-ENTRANT PROGRAM
    • Program when does not modify itself in any way during execution.
  • QUASI RE-ENTRANT
    • Is a reentrant program under the CICS environment.

MAPS AND DISPLAYS

INTRODUCTION TO BMS

  • To make the application program device independent and format independent CICS provides Basic Mapping Support (BMS)
  • BMS is a standard facility, to deal with the formatted screen operations
  • Screen defined through BMS is called a "MAP"

PHYSICAL AND SYMBOLIC MAP

Physical Map

  • Primarily used by CICS
  • Ensures device independence in the application program
  • For input operations, it defines the maximal data length and starting position of each field to be read and allows BMS to interpret an input data stream
  • For output operations it defines starting position, length, field characteristics
  • (Attribute Bytes) and default data for each field, and allows BMS to construct an output data stream.
  • Physical map is a program in the form of Load module
  • Physical map is coded using BMS macros
  • BMS macros are assembled separately and link edited into the CICS load library

SYMBOLIC MAP

1. Ensures the device and format independence to the application programs

2. A layout change in the formatted screen can be done independent of the application program coding as long as field name and length remain the same

3. Symbolic map is included in the program by issuing a COBOL COPY statement

USING MAPS IN A PROGRAM

SYMBOLIC MAP GENERATION

  • Symbolic map is a copy library member
  • Included in application program for defining the screen fields.
  • BMS Macros are coded, assembled and catalogued into a COPY library

SYMBOLIC MAP SUFFIXES

L

Halfward binary
Contain the length of data entered by the terminal operator

F

One byte flag field

I

Contains the data entered by the operator

A

One byte field that contains Attribute byte

O

Contains data to be sent to terminal

SYMBOLIC MAP FORMAT

  • A 12 byte TIOA prefix is automatically provided.
  • When performing input functions fields suffixed with “L”, “F”, and “I” are meaningful.
  • When performing OUTPUT functions, the fields suffixed with “A” and “O” are meaningful. Contains the data to be sent to the terminal.

OUTPUT MAPPING

MAP ONLY
EXEC CICS SEND
MAP (“mapname1’)
MAPSET (‘mapset1’)
MAPONLY
END-EXEC

DATA ONLY
EXEC CICS SEND
MAP (‘mapname1’)
MAPSET (‘mapset1’)
DATA ONLY.
END-EXEC.

1. MAP ONLY option.

o Use the physical map only.

o Field headings, attribute bytes, and the location of where all information is to be placed is sent.

2. DATA ONLY

o Use the symbolic map only

o only the data in the symbolic map is sent to the screen.

3. Neither “ MAPONLY NOR DATAONLY"
EXEC CICS SEND
MAP (‘map-name1’)
MAPSET (‘mapset1’)
END-EXEC

o The physical map and the data from symbolic map is sent to the terminal.

Other options of SEND command.

  • ERASE: Current screen is erased before the map specified appears on the screen
  • ERASEAUP: erase all the unprotected fields.
  • FREEKB: to free the keyboard
  • ALARM: to make an alarms sound.
  • FRSET: to reset MDT to zero
  • CURSOR: to place the cursor in a specified field

CURSOR POSITIONING

  • Static positioning
    • If IC option is specified in the ATTRB field of DFHMDF macro the cursor will be placed at this field.
  • Dynamic / symbolic positioning.
    • Place (-1) into the field length field (“L” suffix). Cursor will be placed in the field.
  • Dynamic / Relative positioning.
    • Cursor (data-value) option is used.
    • Data-Value will have the value at which the cursor has to be positioned.
    • E.g.. EXEC CICS SEND
      MAP (…..)
      MAPSET (…..)
      CURSOR (100)
      ERASE
      END-EXEC.
  • MAPFAIL condition will caused in RECEIVE MAP command.
    • If the data to be mapped has a length of zero.
    • If the operator presses any key (clear, PA, PF, ENTER, Keys) without entering any data.

ACCESSING AND DISPLAYING MAP FIELDS

MAP STORAGE AREAS

  • Placing maps in the Program
    • Any of the three plans for redefinition of maps may be used with either of the 2 alternatives for placing maps in your program.
  • WORKING - STORAGE SECTION
    • Copying a symbolic description map structure here makes the area automatically available whenever the program is invoked.

  • LINKAGE SECTION
    • Copying a symbolic description map structure here does NOT mean the storage will be available. Some methods for providing storage are passing a COMMAREA, acquiring temporary storage with the SET option, or using a GET MAIN command.

SEND / RECEIVE

  • Sending from the Symbolic description map

SEND MAP (`MAP1')
MAPSET(`SET1')
MOVE `MAP1' TO MAPVAR
MOVE `SET1' TO SETVAR
SEND MAP (MAPVAR)
MAPSET(SETVAR)
FROM (MAP1O)

    • SEND MAP Coding Alternatives You can code the SEND MAP command to locate the symbolic description map in several ways:
      • Using constants in the name field for MAP and MAPSET(FROM is not required)
      • Using variables in the name field for MAP and MAPSET (This makes FROM a required parameter)
      • Using only the MAP parameter. In this case the name in the MAP option must be the MAPSET name.
  • RECEIVING into the symbolic description map

RECEIVE MAP(`MAP1')
MAPSET(`SET1') ... MAP1 I
Move `MAP1' to MAPVAR
Move `SET1' to SETVAR ..... MAP1 I
RECEIVE MAP (MAPVAR)
MAPSET(SETVAR)
INTO (MAP1 I)
Receive MAP (`SET1') ... SET1 I

    • RECEIVE MAP coding alternatives You can code the RECEIVE MAP command to locate the symbolic description map in several ways:
      • Using constants in the name field for map and mapset (INTO/SET is not required) This is the most commonly used format.
      • Using variables in the name field for MAP and MAPSET. This makes INTO (database) or SET a required parameter.
      • Using only the MAP parameter. In this case the name in the MAP option must be the MAPSET name.

Linkage Section.
01 DFHCOMMAREA
01 LST
02 PTR-2-LIST PIC S 9(8) COMP.
02 PTR-2-BMS PIC S 9(8) COMP.
RECEIVE MAP (`MAP1') MAPSET (`SET1')
SET (PTR-2-BMS) ..... MAP1 I

      • Using the SET option requests CICS to get the storage and return a pointer to it. The symbolic description map must be in the LINKAGE SECTION.

OUTBOUND FUNCTIONS

SEND

MAP (`MAPA') MAPSET (`SETA')

[ERASE/ ERASEAUP]
[FREEKB]
[ALARM]
[FRSET]
[PRINT]

ERASE

Erase Buffer, place cursor in upper left corner then write

ERASEAUP

Erase all the unprotected fields before the Write

FREEKB

Unlock Keyboard after the write

ALARM

Active alarm with the write

FRSET

Set all MDT currently on to off

PRINT

Start the 3270 print operation.

Control Functions:

  • Typically the first type of command in the program is a SEND MAP. Certain control functions may be included in that command.
  • ERASEAUP will clear out each field whose attribute is unprotected. It will NOT alter any attribute settings.
  • If you do not free the keyboard using FREEKB, the operator will have to press the RESET key before entering data.
  • If you code FRSET, all attribute bytes currently having Modified Data Tags (MDT) set on will be set off. Selective resetting of the MDT's must be done another way.
  • When sending data to a 3270 screen the actual printing from the buffer will occur when the PRINT function is requested.

Attributes :

  • The `A' suffixed field is an attribute field which controls the following:

PROTECTED/UNPROTECTED
ASKIP
NUM
MDT
Non Display (dark)DISPLAY (normal/bright)

  • If the color or highlighting of a field has to be changed, additional symbolic fields are needed which are called the EXTENDED ATTRIBUTES.

EXTENDED ATTRIBUTES

  • DSATTS (for symbolic map) and MAPATTS (for physical map) support the extended attribute characteristics
  • The MAPATTS allows you to set up the physical map with any of the characteristic(s) coded.
  • The DSATTS will create appropriate suffixed labels for the attribute characteristic(s) coded.

INBOUND FUNCTIONS - AID/CURSOR CONTROL

  • Attention Identifier (ID) and Cursor:
    • On a RECEIVE, CICS updates the EIB with the following information:
      • The screen cursor position relative to zero is placed is EIBCPOSN.
      • The name of the input key the terminal operator pressed is placed in the field EIBAID.

EIBAID/CURSOR

  • WORKING-STORAGE SECTION.
    COPY DFHAID.
    ......
    PROCEDURE DIVISION.
    IF EIBAID = DFHPF12 THEN
    ......
    IF EIBAID = DFHENTER THEN
    ......
    IF EIBCPOSN LESS THAN 80 THEN
    ......
  • When you first enter your program as a result of a transaction id, you can test EIBAID and/or EIBCPOSN. This may be done prior to issuing a RECEIVE command, if so chosen.

AID/CURSOR - SAMPLE CODING (CONTROL)

  • If the operator uses any PA key or presses the CLEAR key, no data is transmitted
  • EIBAID is useful when function keys are defined for the user.
  • for eg. PF12 may be the exit function
    PF3 may be an update function etc.
    Thus testing for the type of AID will alter the logic flow.
  • EIBCPOSN can be used to determine where the cursor was positioned on the screen. This information is especially useful with screens containing an action bar.

CURSLOC

Sample Map

MAPSETA DFHMSD TYPE=&SYSPARM, MODE= INOUT,
TERM=ALL, LANG=COBOL, TIOAPFX=YES,
STORAGE=AUTO
MAP1 DFHMDI SIZE=(24,80), LINE=1, COLUMN=1,
CURSLOC=YES
DFHMDF POS(2,1), LENGTH=4, INITIAL=`NAME',
ATTRIB=ASKIP
NAME DFHMDF POS(2,6),LENGTH=20,
ATTRB=(UNPROT, IC)
DFHMDF POS(2,27), LENGTH=1,
ATTRB=PROT

  • CURSLOC= YES allows you to determine after a RECEIVE MAP command, which map field had the cursor in it.
    CURSLOC=NO is the default.
  • CURSLOC=(NO/YES) may be coded on the DFHMSD or the DFHMDI macro. If coded on the DFHMSD macro, it will provide a default for all the maps in that mapset.
  • When CURSLOC=YES, BMS will set the `F' suffix field to X'02' indicating that field contained the cursor. If the cursor is in a field for which there is no symbolic label i.e. a DFHMDF with no label the program will not be notified.
  • Note : The `F' suffix field continues.
  • To be used to indicate the operator pressed the erase to end of fixed (EOF) key by being set to X'80'.
  • Therefore, if CURSLOC=YES it is possible to have both these conditions occur for the same field, in which case the `F' suffix field will contain a X'82'.

EDITING

  • Map field Definition PICIN/PICOUT
  • Built in function De-edit command.
  • When data is sent out via the `O' suffix fields or received into the `I' suffix fields you may want a definition other than PIC x. PICIN AND PICOUT allows the user to use other COBOL PICS such as $,Z etc.
  • If the date contains special characters, you may want to remove them using the BIF DEEDIT command.

PIC IN/PIC OUT

  • If PICIN/PICOUT is not coded in the macro, the pic generated is always PIC X (length of field)
  • By using PICIN/PICOUT BMS can be forced to generate the appropriate PIC.
  • PICIN tells BMS how to move data into the `I' suffix field.
  • PICOUT tells COBOL how to edit your data move to the `O' suffix field.

FIELD EDIT BUILT-IN FUNCTION

Amount

BIF

Amount

$5431.80

EDIT

00543180

EXEC CICS
BIF DEEDIT
FIELD (amount)
LENGTH (8)
END-EXEC.

  • BIF DEEDIT is used to remove the special characters from the input field.
  • The Amount field displayed has a dollar sign and a decimal point
  • By using BIF DEEDIT dollar sign and decimal point is removed. Thus the number can be used for arithmetic operations.
  • COBOL compiler requires LENGTH specification:
  • VS COBOL-II uses the implied length of the data-area used in the field parameter.

CICS PROGRAM COMPONENTS

OBJECTIVES

  • Structure of CICS Application Program
  • CICS Management Functions
  • Starting a Task
  • Conversational& Pseudo conversational transactions
  • CICS Program preparation
  • CICS Program testing & Debugging
  • CICS commands
  • Passing Data across tasks

STRUCTURE OF CICS APPLICATION PROGRAM

Identification Division
Program - ID required

  • Other comments as below, are optional but recommended.
    • Author
    • Date-Written
    • Date-compiled
    • Remarks

Environment Division

  • Only header is required

Other requirements:

  • COBOL statements and CICS commands should be coded
  • The following COBOL statements are prohibited.
  • ACCEPT, CURRENT-DATE, DATE, DAY, DISPLAY, EXHIBIT, STOP RUN, TRACE
  • Any I/O Statements(OPEN, CLOSE, READ, WRITE, REWRITE, DELETE, START)
  • REPORT WRITER feature
  • SORT feature
  • CALL statement is allowed if the called program does not issue any CICS commands or inhibited COBOL statements mentioned above.

TERMINATION STATEMENTS

Notes :This is not the way to terminate a CICS program. CICS has a command for that purpose. Nevertheless, COBOL and VS COBOL II have three statements to conclude programs.

  • Control must not be allowed to pass beyond the last statement of a CICS Program.
  • STOP RUN in COBOL uses operating system facilities, and therefore, is discouraged.
  • EXIT program is ignored if the program has not been called.
  • CICS RETURN COMMAND and/or GOBACK statement is recommended.

CICS MANAGEMENT FUNCTIONS

  • Transactions
  • Task
  • Program

Transactions

An exchange between a terminal and a data base representing an application process. For example, an inquiry or a deposit and balance update

Task

A specific instance of a transaction i.e. a unique unit of work.

Program

Prepared statements compiled or assembled into an executable module of machine instructions.

CONVERSATIONAL TRANSACTION

  • Program uses a pair of SEND and RECEIVE commands.
  • Program waits until the user responds.
  • Resources are held until the user responds.
  • Very inefficient way of conversing with the user.

PSEUDO CONVERSATIONAL TRANSACTION

  • The task is terminated after a message is sent with a linkage for the next task. CICS provides a facility (COMMAREA) to made it easier to accomplish this.
  • When the user completes response (by pressing enter) reset task is automatically initiated by CICS.
  • The task receives the message from the terminal & processes it.
  • This is a multitask operation from system's point of view.

PROGRAM PREPARATION

  • Running the DB2 precompiler first is the preferred method. DB2 precompiler precedes another process, binding, not mentioned here.
  • Output of the DB2 precompiler can serve as input to the translator.
  • Output of the translator will be input to the compiler.
  • Messages or warnings are provided on all the listings.
  • TRANSLATOR recognizes EXEC CICS and EXEC DLI statements. They are commented out and replaced with statements in the appropriate language. Here, COBOL MOVE instructions and a CALL are inserted and passed on to the COBOL compiler.
  • DB2 Precompiler is supplied by the relational data base managers, DB2 and SQL/DS. It recognizes EXEC SQL statements which it will comment out and replace with in our case. COBOL PERFORM and CALL statements.
  • Output of the transaction is i/p to the compiler
  • The o/p of the linkage editor is executable. The load module is placed in the CICS online program library.
  • Messages or warnings are provided on all the listings. The compiler listing is or limited use if the translator listing would not process all commands.

TESTING

CEMT set program (prg1) New comp
Or
CEMT S PR (prg1) N

  • After making changes to a program the new version replaces old version, but CICS which is currently executing has no way of knowing this automatically. The CICS processing program table PPT still points to the old-version.
  • To avoid testing with the old version, you must use the CICS-provided CEMT transaction to update the pointer to the program.

COMMON FORMAT

  • A CICS command consists of a keyword phrase, delimiter, function, options and their argument values.
  • Be careful about periods. Avoid them after END-EXEC. Where you don't really want them.
    For eg. within an If .... then ... else statement
  • The translator will place a period into the generated code if a period follows end-exec.

ARGUMENT VALUES

data - value

PIC S9(4) comp Halfword binary
PIC S9(8) comp Fullword binary
PIC X(15) character string constants permitted

data - area

COBOL data name
(Not a constant)
eg :-

01

Record-area.

05

Fld 1

05

Fld 2

name

COBOL data name Character string

label

Paragraph name

hhmmss

PIC S9(7) comp 3
Packed decimal

pointer-ref

BLL cell
Usage pointer

RECEIVE COMMAND

EXEC CICS RECEIVE
INTO (data area)
LENGTH(ml)
END-EXEC

  • RECEIVE command is used to receive incoming data from the terminal to which this CICS transaction is associated.
  • A receiving area must be defined in working storage section and has to be specified in the INTO parameter.
  • Length field must be defined in working storage section as a S9(4) comp. It has to be specified in length option.

SEND COMMAND

EXEC CICS SEND
FROM (data area)
LENGTH(ln)
END-EXEC

  • The data to be sent must be stored in working storage section, and this field name has to be specified in the FROM parameter.
  • Length must be specified the same as that of the Receive command.

EXCEPTIONAL CONDITIONS

  • RESP option
    • Define a full word binary field S9(8) comp in the working storage section as the response field.
    • Place RESP option with the response field in any CICS command.
    • After command execution, check the response code in the response field with DFHRESP (xxxx)where xxxx is
      • NORMAL for normal completion or Any exceptional condition

HANDLE CONDITION

  • Handle condition command is used to transfer control to the procedure label specified if the exceptional condition, specified occurs.
  • Remains active until the end of program or another handle condition request overrides it.

IGNORE CONDITION

  • Ignore condition command causes no action to be taken if the condition specified occurs in the programs.
  • Request by the IGNORE CONDITION command is valid until the subsequent HANDLE CONDITION command for the same condition.

NO HANDLE OPTION

  • If NOHANDLE option is specified in any CICS command, no action will be taken for any exceptional condition occurring during execution of this command.
    • Eg : EXEC CICS SEND
      From (...)
      Length (...)
      NOHANDLE
      END-EXEC

FORMATTING TIME AND DATE

  • ASKTIME Command
    • used to request the current date and time
    • EIBDATE and EIBTIME fields have the values at the task initiation time.
  • FORMAT EXEC CICS ASKTIME END-EXEC

FORMAT TIME COMMAND

  • Used to receive the information of data and time in various formats.
    • Format
      [YYDDD (data - area)]
      [YYMMDD (data - area)]
      [YYDDMM (data - area)]
      [MMDDYY (data - area)]
      [DDMMYY (data - area)]
      [DATESEP(data - value)]
      [DAY OF WEEK (data - area)]
      [DAY OF MONTH (data - area)]
      [MONTH OF YEAR (data - area)]
      [YEAR (data - area)]
      [TIME (data - area)]
      [TIMESEP (data - value)]
  • DATESEP represents data separator (default is "/").
  • TIMESEP represents time separator (default is ":").
  • The data area for the ABSTIME option of ASKTIME and FORMATTIME commands must be a 15-digit packed decimal data type.

DELAY COMMAND

  • used to delay the processing of a task for the specified time interval or until the specified time.
    FORMAT
    EXEC CICS DELAY
    INTERVAL (002000)
    TIME (152000)
    End - EXEC
  • Task will be suspended for 20 minutes if INTERVAL is specified or until 15:20:00 if TIME is specified.

COMMAREA

  • Passing data via the COMMAREA
  • pseudo conversational task to task
  • Linking program to program

PSEUDO CONVERSATIONAL

Pseudo conversational technique is uses the multiple transaction identifiers (pct entries) and multiple program (pct entries). It performs the terminal conversation in the following way:

A conversational program is logically and physically divided into separte programs after sending a message and before receving the message. For each separate program, a unique cics trasction identifier is assigned. before terminating the program, each program issues the RETURN command with the next transaction identifier which is associated with the next program, unless it is the least return to CICS itself. in this way, a series of terminal conversations can be carried out continuously.

PASSING DATA TO NEXT TASK

  • Notes :
    • The first time commarea is passed, it must begin as an area of storage in the working storage section of the program passing it.
    • A commarea parameter in the RETURN will pass the area to the program associated with the subsequent transaction. In this case, itself.
    • The subsequent program (in this case the same program) must define access to all the commarea that was passed to it.
  • PAYROLL as both the sender and the receiver of the COMMAREA needs the working storage definition to send and the linkage section DFHCOMMAREA to receive.
  • PAYROLL must therefore be able to distinguish between FIRST TIME into the program. When there is no COMMAREA and subsequent times in. Where one exists in the Linkage section. The EIB field, EIBCALEN indicates the length of the commarea.

EIBCALEN

  • First time into the program no commarea exists, therefore EIBCALEN = 0
  • While returning the control to CICS the working storage is loaded and this is sent via the commarea parameter in the RETURN Transid.
  • On subsequent entry, commarea exists and is automatically made addressable by CICS in the linkage section of DFHCOMMAREA

PASSING DATA USING LINK

  • To pass control from one program to another and then return to the original like executing a subroutine.
  • The link command passes control to another program defined in CICS PPT expecting that the program will return to the linking program instruction following the LINK command. This happens when the linked program issues a RETURN command.
  • Data may be passed using the commarea.
  • The commarea is shared between the two program regains control may changes made to the commarea by the linked program are accessible.
  • The two programs executive under the same task.
  • The working storage section for the linking program is retained. Working storage for the linked program is automatically released after its RETURN command is executed.
  • To pass control from one program to another and then return to the original like executing a subroutine.
  • The link command passes control to another program defined in CICS PPT expecting that the program will return to the linking program instruction following the LINK command. This happens when the linked program issues a RETURN command.

Reading External Data

Functional overview

  • DIRECT RETRIEVAL
    • VSAM DATA STRUCTURES
  • DIRECT RETRIEVAL
    • RELATIONAL TABLE ROW
  • BROWSE
    • VSAM DATA STRUCTURE
  • BROWSE
    • RELATIONAL TABLE ROWS
  • Entry for VSAM file has to be there in FCT (File Control Table)
  • Each entry contains all descriptive information for the file it represents. So, programmer need not define the physical organization and other attributes of the files.
    • The File parameter coded in the program must be the same as the file name in the FCT.
    • Interface between CICS and Relational Database is called CICS attachment Facility. Statement are coded in SQL language in the application program to Communicate data requests to the database.

TOPICS

  • DIRECT RETRIEVAL
    • VSAM FILE RECORD
    • RELATIONAL TABLE ROW
  • BROWSE
    • VSAM FILE RECORDS
    • SET OF RELATIONAL TABLE WORKS

VSAM DATA STRUCTURES

  • CICS uses the following VSAM structures
    • Key sequenced data set (KSDS)
    • Entry sequenced dataset (ESDS)
    • Relative record dataset (RRDS)

PROGRAM ORGANIZATION

  • File attributes are defined in the FCT for each file
  • Files are opened by CICS
    • Immediately after system initialization if specified in the FCT.
    • In response to a file access request from an application if the file is closed
    • In response to a master terminal CEMT request from an operation.
  • Application program is not responsible for open / close of files

RECORD IDENTIFICATION

  • RECORD KEY
  • RELATIVE BYTE ADDRESS
  • RELATIVE RECORD NUMBER
  • PARTIAL KEY
    • key of the record to be read is specified in the RIDFLD. for KSDS
    • Key specified can be a full key or partial key
    • If partial key, key length has to be provided
    • RBA (Relative Byte Address)
    • Can also be used instead of actual key value
  • For ESDS
    • RIDFLD contain a 4 byte RBA
  • For RRDS
    • RIDFLD contains 4 Byte binary relative record number.

RECORD KEY DEFINITION EXAMPLE

WORKING - STORAGE SECTION.
05 RECKEY PIC X(6).
PROCEDURE DIVISION.
MOVE VALUE TO RECKEY.

  • RIDFLD must be set to the value of the key of the record to be retrieved.
  • RIDFLD must be large enough to hold a full record key even when a partial key is used.

READ COMMAND

  • READ command with INTO Option. (FULL KEY)
    • Reads the record specified by the full key.
    • The data content of the record is moved into the specified data-area defined in the working storage section.
    • FORMAT
      EXEC CICS READ
      DATASET (name) | FILE (name)
      INTO (data-area) |SET(ptr-ref)
      RIDFLD (data-area)
      [ LENGTH (data-values) ]
      END - EXEC.
  • DATASET / FILE names the file.
  • It must be defined in FCT.
  • INTO names the field in the working storage section where the data has to be placed.
  • RIDFLD is the key field.
  • LENGTH is half word binary.
  • It indicates maximum length of the record to be read. It is optional.

EXCEPTIONAL CONDITIONS

  • DUPKEY : If duplicate record is found for the specified key.
  • NOTFND : If the record is not found for the key specified.
  • LENGER R LENGERR : The specified length (in LENGTH OPTION) is shorter than the actual record length.
  • NOTOPEN : When file specified is not open.

The exceptional condition can be trapped using RESP option in the READ command.

ADDRESSABILITY TECHNIQUES

EXEC CICS XCTL
PROGRAM (PROGRAM NAME)
RESP (EXCEPTION)
END-EXEC.
IF EXCEPTION = DFHRESP (PGMIDERR)

  • a module given control through the use of a CICS XCTL command will not return to the program that issued the XCTL.
  • The required. program name is character string constant (max 8 characters)
  • The PGMIDERR exception condition occurs when the name is not in the PPT.

LOGICAL LEVELS

  • The linked to program runs at a new logical level and returns to a logical level back to the linking program.
  • The linking program and its storage area remain available.

Notes :

  • To quit the repeated execution simply RETURN without the TRANSID option.
  • Any linked program could use the same COMMAREA of the parameters so indicated.
  • The transid & commarea option easy enough to use to make this method practical.

PROGRAMS TO PROGRAM TRANSITION

  • CICS LINK
  • CICS XCTL
  • COBOL CALL
  • Alternative to XCTL or LINK ? COBOL CALL·
  • COBOL CALL passes control to other programs.

PASSING DATA USING INPUT MSG

  • INPUT MSG & INPUT LEN PARAMETERS USED WITH XCTL OR LINK.
  • Receiver uses EXEC CICS RECEIVE command

PASSING DATA USING LINK
AREA1 PIC x (200) (prog1)
dotted
Linkage Section (prog2)
01 DFHCOMMAREA
05 AREA2 PIC X(200)

  • 1ST Program - COMMAREA - Length 100
  • Data violation as 2nd Program (receives) tries to move 200 char

PASSING A COMMAREA WITH XCTL

  • If data is to be passed to the XCTLed program, a COMMAREA can be used.
  • Data area is to be located in the Linkage Section of the receiving program.
  • COMMAREA used with RETURN, LINK & XCTL

ADDRESSABILITY

  • DFHCOMMAREA & DFHEIBLK : Addressable automatically by CICS
  • Dynamically acquired storage : Addressable by program
  • Not necessary to always do a EXEC CICS GETMAIN explicitly

CICS QUEUEING FACILITIES

  • Two facilities to store data that are temporary in nature.
  • This data is created or collected by one or more online transaction to be used later by the same transaction or by a different transaction or even later passed to a batch program.
    They are
    • Transient data Queue (TDQ)
    • Temporary storage Queue (TSQ).

TRANSIENT DATA QUEUE

  • They are identified by a 4 character ID called destination ID
  • Destination ID and other characteristics of TDQ are defined in the destination control table (DCT) by the system programmer.
    2 types of TDQ’s
    • Intra Partition TDQ
    • Extra Partition TDQ
  • Intra Partition TDQ - Processed only within the same CICS region
  • Extra Partition TDQ - Individual Sequential Files processed between the transaction of the CICS region and the system outside of the cics region.

INTRA PARTITION TDQ

All Intra partition TDQ are stored in only 1 physical file (VSAM)

  • Record from the queue can be returned sequentially.
  • Record can be written sequentially.
  • Records can be of variable length format
  • Several tasks can write to the same TDQ but only one task can read from TDQ.

Intra Partition TDQ is used in application such as

  • Interface among CICS transaction. Application program 1 TDQ Appl . Pgm 2 report
  • Automatic task Initiation (ATI)
  • Message routing
  • Message Broad cast.

EXTRA PARTITION TDQ

Extra partition TDQ is a separate physical file & may be a disk, tape or reporter.

  • DCT determines the initial open / close status of a file while the file can be opened or closed through the master terminal transaction during CICS session.
  • TDQ can be defined as an Input or output but not both.
  • Records are fixed, variable, blocked or unblocked.

TRANSIENT DATA OUTPUT

  • Appears only for Intra-partition TDQ.
  • Deletes all records associated with the named destination.
  • All associated storage is released.

EXCEPTIONAL CONDITIONS

1. Special handling required
LENGERR - length specified is greater than the maximum record length specified in DCT

2. Qzero - Destination empties or end of TDQ error
Qlderr - The dest ld specified cannot be found in DCT.

TEMPORARY STORAGE

  • TSQ is a queue of stored records.
  • Created & deleted dynamically by application program.
  • Used as a scratch pad
  • Queue ID is of length 1-8 bytes
  • TSQ is of variable length
  • Records can be stored in main or auxiliary storage
  • The records once written remains accessible until the
  • entire TSQ is deleted
  • Records can be read sequentially or directly
  • Records can be re-read & updated.

WRITEQ TS

  • To write or re-write a record in TSQ
    EXEC CICS WRITEQ TS
    QUEUE (NAME)
    LENGTH (DATA-VALUE)
    [ITEM (DATA-AREA)
    [REWRITE]
    [MAIN | AUXILIARY]
    END-EXEC.
  • ITEM - If this option is coded CICS write return the item number assigned to the record just written.
  • REWRITE - is used to rewrite the record identified by ITEM.
  • Main / Auxiliary - To specify the storage medium. Will be stored in main if auxiliary storage not supported.

READQ TS

  • Can be used to read records either sequentially or directly.Syntax
    EXEC CICS READQ TS
    QUEUE (NAME)
    INTO (DATA - AREA)
    LENGTH (DATA-VALUE)
    [ITEM (DATA-VALUE) | NEXT]
    [NUMREC (DATA-AREA)]
    END-EXEC.
  • NEXT - to retrieve the next - logical record in the TSQ. mutually exclusive to the item option
  • NUMREC - the data area is defined as PIC 9(4) comp. to find the Total no. of records in the TSQ.
  • Item - for direct access specify the item no of the record.

DELETEQ TS of TSQ

  • EXEC CICS
    DELETEQ TS
    QUEUE (NAME)
    END-EXEC.
  • All records is TSQ are deleted.
  • All associated storage is released.

EXCEPTIONAL CONDITIONS

  • Special handling required
    • Itemerr - Item number specified is not in the range of entry number assigned for the Queue.
    • Lengerr - Length specified is greater than the maximum record length.
  • error
    Q iderr - specified is Queue id not found.

TESTING & HANDLING EXCEPTIONS

COMMANDS FOR TESTING APPLICATION PROGRAMS

  • CECI (Command Level Interpreter) is a CICS - supplied transaction which performs syntax checking of a CICS command. If the syntax is satisfied, it will execute the command.
  • CEBR (Temporary Storage Browse) is a CICS - supplied transaction which browses Temporary Storage Queue (TSQ).
  • CEDF is a CICS - supplied transaction which monitors the execution of an application program as an interactive debugging aid.

APPLICATION PROGRAM SUPPORT

  • RESP and NOHANDLE
  • IGNORE CONDITION
  • HANDLE CONDITION
  • HANDLE AID
  • HANDLE ABEND

COMMAND LEVEL INTERPRETER

For invoking CECI, type CECI with the CICS command to be interpreted.

  • The first screen lists all the possible CICS commands.
  • Giving question mark (?) before the command requests a syntax check only. No execution.
    Ex. CECI SEND MAP (`SPOOMPO')
    MAPSET (`SPOOMSO')
    ERASE

BROWSING CICS QUEUES

  • CEBR can be invoked while you are already in the CEDF mode.
  • Press the PF5 key to display the working storage section.
  • Then, press PF12 key to invoke CEBR.
    CEBR allows to browse information in Temporary Storage (TS) queues.
  • Help (PF1) give you a list of CEBR commands on the screen.
  • TS queues are retained until purged.

EXCEPTION HANDLING
CICS to respond to exceptional conditions in one of three ways:

  • RESP option: - The RESP option can be specified in any CICS command. Its function is similar to the return code in the batch program.
    • Define a fullword binary field (S9(8)COMP) in the working storage section as a response field.
      • Place the RESP option with the response filed in a command.
      • After command execution, check the response code in the response field with DFHRESP (xxxx), where xxxx is the - NORMAL
        - Any exceptional condition
  • HANDLE CONDITION This command is used to transfer control to the procedure label specified if the exceptional condition specified occurs.
  • IGNORE CONDITION This command causes no action to be taken if the condition specified occurs in the program.
    EXEC CICS HANDLE CONDITION
    Condition (Label)
    [Condition (Label)]
    [Error (Label)]
    END-EXEC.
    or
    EXEC CICS IGNORE CONDITION
    Condition
    [Condition]
    END-EXEC.
  • ABEND CODE

If an exceptional condition occurs during execution of a CICS application program and if the program does not check the exceptional condition, CICS may continue executing the program or terminate abnormally the execution of the program, depending on the exceptional condition and the command involved.

OPTION FOR EXCEPTION HANDLING

  • CODE RESP keyword in commands: CHECK USER-SUPPLIED FIELD IN WORKING - STORAGE.
  • CODE NOHANDLE KEYWORD IN COMMANDS.
  • HANDLE CONDITION
    COMMANDS
  • IGNORE CONDITION
    SYSTEM DEFAULT -- ABEND

No comments: