Você está na página 1de 60

Infosys ------------------------------------------------------------- CICS

Slides

CICS
Customer Information Control System

Infosys ------------------------------------------------------------- CICS

Slides

Objectives
Entry Criteria: Participants should have a through knowledge of RDBMS concepts like transactions, concurrency control, etc., & COBOL. Exit Criteria: Participants must know what is CICS, the need for CICS the screen layout, keys, etc. important CICS tables transactions and tasks starting and ending a transaction Conversational & Pseudoconversational Programming changing map attributes and positioning the cursor error handling in CICS programs complete BMS concepts methods of transferring control from one program to another methods of retaining data between two tasks and transferring data from one program to another File handling in CICS
2

Infosys ------------------------------------------------------------- CICS

Slides

References

CICS for microcomputers, Joseph J. Le Bert, McGraw-Hill Publishing Company CICS using COBOL, Andrew M. Suhy, Wadsworth Publishing Company IBM online manuals for CICS

Infosys ------------------------------------------------------------- CICS

Slides

Session Plan
------------------ session 1 --------------Introduction Special keys CICS Screen Starting a transaction Ending a CICS session Basic structure of a program COBOL commands not to be used CICS tables Conversational Programming Pseudo Conversational Programming Compiling a CICS program Running a CICS program Batch and Online programs Hello World program A conversational program A pseudo conversational program Application, Transaction, Program, Task ------------------ session 2 --------------Basic mapping support Physical map Symbolic map
4

Infosys ------------------------------------------------------------- CICS

Slides

Session Plan (Contd.)


Modified Data Tag FSET and FRSET Sending & Receiving a map ------------------ session 3 --------------Three ways to RETURN control to CICS Standard copy books Testing AID keys Changing field attributes Positioning the cursor Error handling in CICS Handling and Forcing ABEND Transferring control to another program RETURN, XCTL, LINK, START Transferring data to another program Accessing DB2 tables ------------------ session 4 --------------Temporary Storage Queues (TSQ) Transient Data Queues (TDQ) File Handling in CICS Summary

Infosys ------------------------------------------------------------- CICS

Slides

CICS is an online transactionprocessor that supports development of on-line applications. CICS as an operating system
- DB/DC - Scheduling of tasks

Operating System Batch Program 1 Batch Program 2

CICS

prog1

prog2

Batch program 4
6

Infosys ------------------------------------------------------------- CICS

Slides

Why is CICS not an operating system


- Host operating system (MVS) is still the final interface to the computer

What does CICS do ?


DB - Database/file access DC - communicating with the terminals (both remote and local) Scheduling of programs under CICS Multitasking - Running multiple programs concurrently, serving multiple users Intersystem communication

Infosys ------------------------------------------------------------- CICS

Slides

Why CICS ?

Why CICS

- MVS is purely batch (Batch and Online programs


Batch - runs only once from beginning to end of program. No user interaction. Online - needs user input in between execution

- To support applications needing up-to-the-minute data, you need to have online support) - Application development made easier as CICS handles the formatting and other components needed for online interface

Infosys ------------------------------------------------------------- CICS

Slides

TASK, PROGRAM & TRANSACTION


Program - set of instructions (Application - collection of programs that accomplish a group of functions) Transaction - Collection of logically-related programs that achieve a specific function
(ex. Railway reservation system Application Booking a ticket - transaction 1 transaction - 1 or more programs task - single execution of a transaction) LUW - Logical unit of work - either fully done or not done at all

Infosys ------------------------------------------------------------- CICS

Slides

AID keys
Enter Clear PF keys PA keys Other keys ALT, TAB, EOF (PF1 to PF24) (PA1 to PA3)

Screen format
1 2 3 ...
1 2 .. 24

...

80

total 1920 positions

Numbered from left to right


1,10=10 2,10=90 and so on.

10

Infosys ------------------------------------------------------------- CICS

Slides

Initiating a CICS transaction:


By typing a 4 letter Transaction Id on screen position (1,1).

Getting out of CICS:


Type CSSF at (1,1) and press Enter.

CICS commands are embedded in a host language (in general, COBOL) A CICS program must contain
LINKAGE SECTION 01 DFHCOMMAREA and EXEC CICS RETURN END-EXEC. PIC X(n).

11

Infosys ------------------------------------------------------------- CICS

Slides

All the CICS commands should be within


EXEC CICS .... .... END-EXEC.

COBOL programs under CICS should not have


ACCEPT, CLOSE, DELETE, DISPLAY, OPEN, READ, REPORT WRITER commands, REWRITE, SORT, WRITE, START and never use STOP RUN & GO BACK. All the files (dataset) are opened when CICS comes up and are closed when it goes down. No file-control section.

CICS maintains several tables for its use:


PCT, PPT, FCT, DCT, etc. First two are the most important ones.
12

Infosys ------------------------------------------------------------- CICS

Slides

PCT - Program Control Table


Contains the transaction ids and the corresponding program name. TransId is unique.

PPT - Processing Program Table


Contains entries such as Program Name, Language, Size, Main storage address (if it is loaded), Task Use Counter, Load library address, Whether main storage resident, etc.

FCT - File Control Table


All the files (datasets) used in the program are to be declared in FCT and they are opened and closed by CICS itself.

Conversational Programming
Once CICS starts execution of a program, it runs it till the completion of a program. (Wait periods -DC) All the normal programs other than in CICS environment we come across are conversational.
13

Infosys ------------------------------------------------------------- CICS

Slides

Pseudo Conversational Programming


It is a coding technique (responsibility of the programmer) which results in a program being loaded into main storage when required and released when it is not in use. For the user, its as though the program is fully conversational. It saves main memory usage. The programmer should code in a special way to achieve this. Highly used in CICS programming.

Compiling a CICS program


PreCompiler converts all the CICS commands into equivalent CALL statements in COBOL. It generates, in the Linkage Section, fields named DFHEIBLK, the Execute Interface Block (EIB), and DFHCOMMAREA, the 14 Communication Area.

Infosys ------------------------------------------------------------- CICS

Slides

Running a CICS program


Give a TRANSID for the program Enter the TRANSID and program name in PCT Refresh the PPT program address by CEMT SET PRO(progname) NEW Clear the screen Type the TRANSID at (1,1) , press Enter. PA keys, CLEAR - no transfer of data PF keys, ENTER - data gets transfered

15

Infosys ------------------------------------------------------------- CICS

Slides

Hello World program:


IDENTIFICATION DIVISION. PROGRAM-ID. FIRSTP. * Hello World program. TRNID is HWPG ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(11) VALUE HELLO WORLD. LINKAGE SECTION. 01 DFHCOMMAREA PIC X(01). PROCEDURE DIVISION. 000-MAIN. EXEC CICS SEND FROM (WS-MESSAGE) LENGTH (11) ERASE END-EXEC. EXEC CICS RETURN END-EXEC. 099-MAIN-EXIT. EXIT.
16

Infosys ------------------------------------------------------------- CICS

Slides

A Conversational program:
IDENTIFICATION DIVISION. PROGRAM-ID. CONV. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-PROMPT PIC X(07) VALUE NAME. 01 WS-INPUT PIC X(20). 01 WS-MESSAGE PIC X(10) VALUE HELLO MR.. 01 WS-LENGTH PIC S9(4) COMP VALUE +20. LINKAGE SECTION. 01 DFHCOMMAREA PIC X(01). PROCEDURE DIVISION. 000-MAIN. EXEC CICS SEND FROM (WS-PROMPT) LENGTH (7) ERASE END-EXEC.
17

Infosys ------------------------------------------------------------- CICS

Slides

EXEC CICS RECEIVE INTO (WS-INPUT) LENGTH (WS-LENGTH) END-EXEC. EXEC CICS SEND FROM (WS-MESSAGE) LENGTH (10) ERASE END-EXEC. EXEC CICS SEND FROM (WS-INPUT) LENGTH (20) END-EXEC. EXEC CICS RETURN END-EXEC. 099-MAIN-EXIT. EXIT.

18

Infosys ------------------------------------------------------------- CICS

Slides

A Pseudo Conversational program:


IDENTIFICATION DIVISION. PROGRAM-ID. PSCONV. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-PROMPT VALUE NAME. 01 WS-INPUT 01 WS-MESSAGE VALUE HELLO MR.. 01 WS-LENGTH VALUE +20. 01 WS-COMMAREA LINKAGE SECTION. 01 DFHCOMMAREA PIC X(01). PIC X(01). PIC S9(4) COMP PIC X(20). PIC X(10) PIC X(07)

19

Infosys ------------------------------------------------------------- CICS

Slides

PROCEDURE DIVISION. 000-MAIN. IF EIBCALEN = 0 PERFORM 100-INITIAL-ENTRY THRU 199-INITIAL-ENTRY-EXIT ELSE PERFORM 200-NEXT-ENTRY THRU 299-NEXT-ENTRY-EXIT END-IF. EXEC CICS RETURN TRANSID (EIBTRNID) COMMAREA (WS-COMMAREA) LENGTH (1) END-EXEC. 099-MAIN-EXIT. EXIT. *-------------------------------------------------100-INITIAL-ENTRY. EXEC CICS SEND FROM (WS-PROMPT) LENGTH (7) ERASE END-EXEC. 199-INITIAL-ENTRY-EXIT. EXIT.
20

Infosys ------------------------------------------------------------- CICS

Slides

200-NEXT-ENTRY. EXEC CICS RECEIVE INTO (WS-INPUT) LENGTH (WS-LENGTH) END-EXEC. EXEC CICS SEND FROM (WS-MESSAGE) LENGTH (10) ERASE END-EXEC. EXEC CICS SEND FROM (WS-INPUT) LENGTH (20) END-EXEC. EXEC CICS RETURN END-EXEC. 299-NEXT-ENTRY-EXIT. EXIT.
21

Infosys ------------------------------------------------------------- CICS

Slides

When CICS loads a program, it creates a task to run that program. For every task, CICS assigns values to EIB fields (which is put in the linkage section at pre compile).
01 DFHEIBLK. 02 EIBTIME 02 EIBDATE PIC S9(7) COMP-3. PIC S9(7) COMP-3.

02 EIBTRNID PIC X(4). 02 EIBTASKN PIC S9(7) COMP-3. 02 EIBTRMID PIC X(4). 02 EIBCPOSN PIC S9(4) COMP. 02 EIBCALEN PIC S9(4) COMP. 02 EIBAID etc.
22

PIC X.

Infosys ------------------------------------------------------------- CICS

Slides

Task:
a task is created for each executed transid. a task can consists of a single program or multiple programs. a task continues until a program returns control to CICS or until it issues a RETURN with a TRANSID in the pseudo conversational mode. CICS can handle several tasks at a time (multi tasking). several tasks can access the same code in main memory (multithreading) and hence CICS programs should be reentrant.

Though every task for the same program shares the object code, separate working storage, linkage section are created.

23

Infosys ------------------------------------------------------------- CICS

Slides

When a Transid is received by CICS, it checks if the associated program is already loaded. If so, it merely increases the usage counter by 1, else it loads the program into memory and make the counter 1. When a task gets completed, its counter is decremented by 1. When it becomes zero the program is unloaded (unless it is designated as main memory resident). One program can call other program. In conversational mode all these becomes a single task. In pseudo conversational mode each time the program is made active, a new task is created.

24

Infosys ------------------------------------------------------------- CICS

Slides

Basic Mapping Support


Map - description of the screen. In CICS, to transmit a formatted display,
a description of the screen is coded in a separate assembly language program called the Physical map or the mapset program and another in the COBOL source code called the Symbolic map.

Both the COBOL program and the mapset program have to be compiled before using a map. The physical map describes details of all the fields. The symbolic map describes details of all the variable fields.
25

Infosys ------------------------------------------------------------- CICS

Slides

The physical map contains:


size of the screen size, attributes, location of all fields and some system data.

The symbolic map contains:


some system data and all variable field declaration it does not include any details of constant fields.

CICS allows to send either of the maps or both using the send map command. This facility reduces the network traffic between the computer and the terminal and increases the speed of transmission.

26

Infosys ------------------------------------------------------------- CICS

Slides

Consider the following case:


INFOSYS EMPLOYEE DETAILS

EMPLOYEE NAME: ABCD EMPLOYEE NO. : 1111

F3 - EXIT

F4 - NEXT EMP

F4 INFOSYS EMPLOYEE DETAILS

EMPLOYEE NAME: EFGH EMPLOYEE NO. : 2222

F3 - EXIT

F4 - NEXT EMP

27

Infosys ------------------------------------------------------------- CICS

Slides

In the above map, all the fields in blue are constant fields, and all the fields in green are variable fields. Notice that when the user presses F4, the next employee details appear and at this time only the symbolic map need to be sent. In the above case the symbolic map will look like:
01 MY-FIRST-MAP. 05 FILLER 05 MP-NAME-L 05 MP-NAME-A 05 MP-NAME-D 05 MP-NO-L 05 MP-NO-A 05 MP-NO-D PIC X(12). PIC S9(4) COMP. PIC X. PIC X(4). PIC S9(4) COMP. PIC X. PIC X(4).
28

Infosys ------------------------------------------------------------- CICS

Slides

The physical map will be:


1 8910 1617 72

empdata DFHMSD TYPE=DSECT, CTRL=(FREEKB,FRSET), LANG=COBOL, MODE=INOUT, TERM=3270, TIOAPFX=YES empdata DFHMDI SIZE=(24,80), CTRL=(FREEKB) DFHMDF POS=(1,2), ATTRIB=(NORM,ASKIP), LENGTH=7, INITIAL=INFOSYS DFHMDF POS=(1,20), ATTRIB=(NORM,ASKIP), LENGTH=16, INITIAL=EMPL .... DFHMDF POS=(5,15), ATTRIB=(NORM,ASKIP), LENGTH=14, INITIAL=EMPL ....E: empname DFHMDF POS=(5,30), ATTRIB=(NORM,ASKIP), LENGTH=4 ..... ..... ..... ..... ..... ..... DFHMSD TYPE=FINAL END

x x x x x x x x x x x x x x x x x

29

Infosys ------------------------------------------------------------- CICS

Slides

TYPE = MAP/DSECT /&SYSPARM/FINAL CTRL = (FREEKB, FRSET/FSET, ALARM) MODE = INOUT/IN/OUT

SIZE = (lines,columns) LINE = line# COLUMN = column# POS = (line#,column#) / posn# LENGTH = number ATTRIB = (ASKIP/PROT/UNPROT, NUM, NORM/BRT/DRK, FSET, IC)

ASKIP - AutoSKIP, PROT - PROTected, UNPROT - UNPROTected. NORM - NORMal, BRT - BRighT, DRK - DaRK.

30

Infosys ------------------------------------------------------------- CICS

Slides

Modified Data Tag (MDT)


have two states FSET (on) and FRSET (off) while receiving map we get only those data from fields which have MDT on i.e., their attribute has value FSET. For any field touched by the user, CICS sets the MDT on.

Sending a map:
EXEC CICS SEND MAP (mapname) MAPSET (mapsetname) FROM (symbolic mapname) [MAPONLY/DATAONLY] [ERASE/ERASEAUP] [CURSOR] END-EXEC.
31

Infosys ------------------------------------------------------------- CICS

Slides

Program

BMS

Terminal

Const 1 Const 2 Var A Var B Var A Var B Const 3

Const 1 Const 2 Var A Var B Const 3

SEND MAP ... MAPONLY Program BMS Terminal

Const 1 Const 2 Var A Var B Var A Var B Const 3 SEND MAP ... DATAONLY

Const 1 Const 2 Var A Var B Const 3

32

Infosys ------------------------------------------------------------- CICS

Slides

Receiving a map:
EXEC CICS RECEIVE MAP (mapname) MAPSET (mapsetname) INTO (symbolic mapname) END-EXEC.

Three ways to return control back to CICS:


EXEC CICS RETURN END-EXEC. EXEC CICS RETURN TRANSID (transaction Id) END-EXEC. EXEC CICS RETURN TRANSID (transaction Id) COMMAREA (ws-commarea) LENGTH (LENGTH OF ws-commarea) END-EXEC.
33

Infosys ------------------------------------------------------------- CICS

Slides

Standard copy books used:


01 BMSCOB-ATTRIBUTE-BYTES. 05 BMS-UNPROT-ALPH-BRT PIC X(1) VALUE IS 'H'. 05 BMS-UNPROT-NONDET-DRK PIC X(1) VALUE IS '<'. 05 BMS-PEN-NONDET-NORM PIC X(1) VALUE IS 'A'. 05 BMS-PEN-PROT-NORM PIC X(1) VALUE IS '/'. 05 BMS-AUTO-SKIP-FSET-NORM PIC X(1) VALUE IS '1'. 05 BMS-AUTO-SKIP-HGH PIC X(1) VALUE IS '8'. .... and so on.

34

Infosys ------------------------------------------------------------- CICS

Slides

01 DFHAID. 02 DFHNULL PIC X VALUE IS ' '. 02 DFHENTER PIC X VALUE IS QUOTE. 02 DFHCLEAR PIC X VALUE IS '_'. 02 DFHPEN PIC X VALUE IS '='. 02 DFHOPID PIC X VALUE IS 'W'. 02 DFHMSRE PIC X VALUE IS 'X'. 02 DFHSTRF PIC X VALUE IS 'h'. 02 DFHTRIG PIC X VALUE IS '"'. 02 DFHPA1 PIC X VALUE IS '%'. 02 DFHPA2 PIC X VALUE IS '>'. 02 DFHPA3 PIC X VALUE IS ','. 02 DFHPF1 PIC X VALUE IS '1'. 02 DFHPF2 PIC X VALUE IS '2'. 02 DFHPF3 PIC X VALUE IS '3'. 02 DFHPF4 PIC X VALUE IS '4'. 02 DFHPF5 PIC X VALUE IS '5'. 02 DFHPF6 PIC X VALUE IS '6'. 02 DFHPF7 PIC X VALUE IS '7'. 02 DFHPF8 PIC X VALUE IS '8'. 02 DFHPF9 PIC X VALUE IS '9'. 02 DFHPF10 PIC X VALUE IS ':'. 02 DFHPF11 PIC X VALUE IS '#'. 02 DFHPF12 PIC X VALUE IS '@'. 02 DFHPF13 PIC X VALUE IS 'A'. 02 DFHPF14 PIC X VALUE IS 'B'. 02 DFHPF15 PIC X VALUE IS 'C'.

35

Infosys ------------------------------------------------------------- CICS

Slides

Testing AID keys:


IF EIBAID = 1 .... by checking the character code of the key against the value of EIBAID IF EIBAID = DFHPF1 .... by including the copybook, instead of using the character value use meaningful names in the copy book. By using the following command EXEC CICS HANDLE AID PF1 (C100-HELP) PF2 (D100-PREVIOUS-SCRN) PF3 (X100-EXIT) ANYKEY (K100-INVALID-KEY) END-EXEC. Only 12 conditions at a time. It is a sticky command. i.e., it valid until redefined. ANYKEY does not include ENTER.

36

Infosys ------------------------------------------------------------- CICS

Slides

Changing the field attributes in the program:


For each symbolic field for which the attribute has to be changed, we need to define another field of data type PIC X just before that field. Usually, if the field is named VAR1 then this field is named VAR1-A for easier understanding. Then we can use MOVE UNPROT-FSET TO VAR1-A. or MOVE A TO VAR1-A. and so on before sending the map. The copy book COBBMS can be used for this purpose. This is used mainly for the subsequent sending of maps in case of errors in any of the fields.

37

Infosys ------------------------------------------------------------- CICS

Slides

Positioning the Cursor through the program:


For each symbolic field at which the cursor has to be placed, we need to define another field of data type PIC S9(4) COMP just before that field. Usually, if the field is named VAR1 then this field is named VAR1-L for easier understanding. Then we can use MOVE -1 TO VAR1-L.

before sending the map. This is used mainly for the subsequent sending of maps in case of errors in any of the fields. Normally, the cursor is placed at the first field which has error.

38

Infosys ------------------------------------------------------------- CICS

Slides

Error Handling in CICS programs:


By using the following command EXEC CICS HANDLE CONDITION ERROR (error-handling-routine) MAPFAIL (mapfail-routine) PGMIDERR (programid-err-routine) END-EXEC. If we use both HANDLE CONDITION and HANDLE AID, the later takes the priority. By using the RESP option EXEC CICS SEND MAP ( ) MAPSET ( ) .... RESP (ws-resp-code) END-EXEC. IF rsp-normal ... .... The copy book COBRSP can be used for this purpose.
39

Infosys ------------------------------------------------------------- CICS

Slides

Copybook for response codes


01 RSP-CODE PIC S9(9) VALUE ZERO COMP SYNC. 88 RSP-ALLOCERR VALUE 85. 88 RSP-CBIDERR VALUE 62. 88 RSP-CCERROR VALUE 76. 88 RSP-DISABLED VALUE 84. 88 RSP-DSIDERR VALUE 12. 88 RSP-DSSTAT VALUE 46. 88 RSP-DUPKEY VALUE 15. 88 RSP-DUPREC VALUE 14. 88 RSP-END VALUE 83. 88 RSP-ENDDATA VALUE 29. .... and so on. -------------------------------------------------------------------

40

Infosys ------------------------------------------------------------- CICS

Slides

ABEND - ABnormalEND This could happen when any error occurs which is not taken care in the program. We can check the ABEND code and give meaningful messages to the user. EXEC CICS HANDLE ABEND PROGRAM (abend-program) END-EXEC. OR EXEC CICS HANDLE ABEND LABEL (module-name) END-EXEC.

Forcing an ABEND:
EXEC CICS ABEND ABCODE (ws-abend-code) END-EXEC.
41

Infosys ------------------------------------------------------------- CICS

Slides

Transferring control from one program to other:


EXEC CICS RETURN ... has already been seen. Normally used for pseudo conversation within a program. The calling program gets unloaded and only on pressing an AID key the called program gets loaded. Normally after sending a map this command is used by giving the TRANSID of the same program. EXEC CICS LINK PROGRAM (program-name) [COMMAREA (ws-commarea)] [LENGTH (ws-commarea-length)] END-EXEC. Equivalent to CALL statement. Control goes immediately to the called program and returns to the next instruction in the calling program.
42

Infosys ------------------------------------------------------------- CICS

Slides

EXEC CICS XCTL PROGRAM (program-name) [COMMAREA (ws-commarea)] [LENGTH (ws-commarea-length)] END-EXEC. Control goes to the called program and does not return back. EXEC CICS START [TRANSID (transactionId)] [INTERVAL (hhmmss) | TIME (hhmmss)] [TERMID (terminal-name)] [FROM (ws-data-area)] [LENGTH (ws-data-area-length)] END-EXEC. This command can start a transaction on another terminal at specified time or after a specified interval and can pass data to the called program. If the terminal is not specified, when the calling program issues an unconditional RETURN, this new transaction starts.
43

Infosys ------------------------------------------------------------- CICS

Slides

CICS

Level 0

Prog A ::::::: LINK ::::::: RETURN

Level 1

Prog B ::::::: XCTL ::::::: :::::::

Prog C ::::::: LINK ::::::: RETURN

Level 2

Level 3

Prog D ::::::: XCTL ::::::: :::::::

Prog E ::::::: LINK ::::::: RETURN

44

Infosys ------------------------------------------------------------- CICS

Slides

Other differences:
When RETURN is used the EIBTRNID will have the value specified in TRANSID option. When LINK and XCTL is used the EIBTRNID retains the old value. When START is used the EIBTRNID gets the new value. In CICS a task ends when the RETURN command is executed. A logical unit of work in CICS is a task. We can not have the called program as a pseudo conversational program only in LINK since, the moment the RETURN command is executed in called program, the control comes back to the calling program. In all the commands except START the calling task gets terminated at the time the command is executed where as START needs an unconditional RETURN.
45

Infosys ------------------------------------------------------------- CICS

Slides

Sending data to another program Using XCTL and LINK:


Sending Program ..... WORKING-STORAGE-SECTION. 01 WS-PASSDATA PIC X(25). PROCEDURE DIVISION. EXEC CICS XCTL/LINK PROGRAM (GETDATA) COMMAREA (WS-PASSDATA) LENGTH (25) END-EXEC. Receiving Program: ..... WORKING-STORAGE-SECTION. 01 WS-GETDATA PIC X(25). LINKAGE SECTION. 01 DFHCOMMAREA PIC X(25). PROCEDURE DIVISION. MOVE DFHCOMMAREA TO WS-GETDATA. ....... ....... ....... .......
46

Infosys ------------------------------------------------------------- CICS

Slides

Sending data to another program Using START:


Sending Program: .....
WORKING-STORAGE-SECTION. 01 WS-PASSDATA PIC X(25). PROCEDURE DIVISION. EXEC CICS START TRANSID (GDTA) FROM (WS-PASSDATA) LENGTH (25) END-EXEC. EXEC CICS RETURN END-EXEC.

Receiving Program (TranId GDTA): .....


WORKING-STORAGE-SECTION. 01 WS-GETDATA PIC X(25). * LINKAGE SECTION. * 01 DFHCOMMAREA PIC X(25). PROCEDURE DIVISION. EXEC CICS RETRIEVE INTO (WS-GETDATA) LENGTH (25) END-EXEC.

....... .......

....... .......
47

Infosys ------------------------------------------------------------- CICS

Slides

Return

DFHCA WS 1 Prog A

AID key pressed

DFHCA WS 1 Prog A

XCTL, LINK

DFHCA WS 2 Prog B

Move

common memory START DFHCA WS 1 Prog A DFHCA WS 2 Prog B 48 Retrieve

Infosys ------------------------------------------------------------- CICS

Slides

Temporary Storage Queues -TSQ:


Most common way to retain data between tasks is by using DFHCOMMAREA and TSQ TSQ is a common storage available to all programs. TSQs are sharable across tasks. i.e., a TSQ defined by one program can be modified or deleted by other tasks (may be of the same program or of a different one) which are in the same CICS partition. TSQs are accessed by its name which can be upto 8 characters. Maximum size of a TSQ and DFHCOMMAREA is 32K. DFHCOMMAREA is created for each program but TSQs exist in a common place in the partition.

49

Infosys ------------------------------------------------------------- CICS

Slides

Writing a TSQ:
EXEC CICS WRITEQ TS QUEUE (queue-name) FROM (ws-data-area) LENGTH (ws-data-area-length) [ITEM (item-no)] [REWRITE] [MAIN / AUXILIARY] END-EXEC. Writing a queue which does not exist creates a queue. Queue name is normally prefixed with the 4 char terminalid (EIBTRMID) for uniqueness. Item specifies which record being written. Leaving this out writes at the end. Rewrite is used for updating a pre read item. TSQs are by default on secondary storage to save memory.
50

Infosys ------------------------------------------------------------- CICS

Slides

Reading a TSQ:
EXEC CICS READQ TS QUEUE (queue-name) INTO (ws-data-area) LENGTH (ws-data-area-length) [ITEM (item-no)] [NEXT] END-EXEC. If both ITEM and NEXT are not specified, by default it is taken as next.

Deleting a TSQ:
EXEC CICS DELETEQ TS QUEUE (queue-name) END-EXEC. Notice that deletion of one particular record is not possible from a TSQ. Also, queue created by one task can be deleted by other if it knows the name of the queue.
51

Infosys ------------------------------------------------------------- CICS

Slides

A program to write a TSQ:


..... ..... ..... WORKING-STORAGE-SECTION. 01 WS-DATA PIC X(07) VALUE INFOSYS. 01 WS-QNAME PIC X(07) VALUE MYQUEUE. 01 WS-QLENGTH PIC S9(4) COMP VALUE +7. PROCEDURE DIVISION. 000-MAIN. EXEC CICS WRITEQ TS QUEUE (WS-QNAME) FROM (WS-DATA) LENGTH (WS-QLENGTH) END-EXEC. EXEC CICS XCTL PROGRAM (READTSQ) END-EXEC. Instead of declaring WS-QLENGTH we could have used LENGTH (LENGTH OF WS-DATA).
52

Infosys ------------------------------------------------------------- CICS

Slides

A program to read a TSQ:


..... ..... ..... WORKING-STORAGE-SECTION. 01 WS-DATA PIC X(07). 01 WS-QNAME PIC X(07) VALUE MYQUEUE. 01 WS-QLENGTH PIC S9(4) COMP VALUE +7. PROCEDURE DIVISION. 000-MAIN. EXEC CICS READQ TS QUEUE (WS-QNAME) INTO (WS-DATA) LENGTH (WS-QLENGTH) END-EXEC. EXEC CICS SEND FROM (WS-DATA) LENGTH (7) ERASE END-EXEC. EXEC CICS DELETEQ TS QUEUE (WS-QNAME) END-EXEC. EXEC CICS RETURN END-EXEC.
53

Infosys ------------------------------------------------------------- CICS

Slides

Transient Data Queues - TDQ:


Another way of sharing data. Like TSQs, TDQs can be accessed by all programs. Unlike TSQs, TDQs are to be defined by the systems programmer in the CICS table Destination Control Table. Unlike TSQs, TDQ read is sequential. Unlike TSQs, TDQ read is destructive. i.e., when a record is read, it is deleted from the queue. Whenever a record is written to a TDQ, it is placed at the end. Whenever a record is read from a TDQ, it is read from the beginning. When the queue is empty the condition QZERO occurs. There is no command to delete a record.
54

Infosys ------------------------------------------------------------- CICS

Slides

TDQ commands:
EXEC CICS WRITEQ TD QUEUE (queue-name) FROM (ws-data) LENGTH (ws-data-length) END-EXEC. EXEC CICS READQ TD QUEUE (queue-name) INTO (ws-data) LENGTH (ws-data-length) END-EXEC. EXEC CICS DELETEQ TD QUEUE (queue-name) END-EXEC. Giving TD is a must, TS is default if not given.

55

Infosys ------------------------------------------------------------- CICS

Slides

Two kinds of TDQs: Intra partition and extra partition. Intra Partition data queues share data for tasks within a CICS partition. Extra Partition data queues share data outside a CICS partition. Both types use identical commands. TDQs are normally not used. For list processing, we always use TSQs. DFHCOMMAREA is generally used for retaining data in pseudo conversational mode.

56

Infosys ------------------------------------------------------------- CICS

Slides

File Handling in CICS:


Reading a dataset.
EXEC CICS READ DATASET (filename) INTO (ws-data-area) RIDFLD (keyfield-name) [UPDATE] END-EXEC.

Writing a dataset.
EXEC CICS WRITE DATASET (filename) FROM (ws-data-area) RIDFLD (keyfield-name) END-EXEC.

Updating a dataset.
EXEC CICS REWRITE DATASET (filename) FROM (ws-data-area) END-EXEC.

Writing a dataset.
EXEC CICS DELETE DATASET (filename) [RIDFLD (keyfield-name)] END-EXEC. 57

Infosys ------------------------------------------------------------- CICS

Slides

Dataset Browsing commands:


Starting browse EXEC CICS STARTBR DATASET (filename) RIDFLD (keyfield) END-EXEC. Ending browse EXEC CICS STARTBR DATASET (filename) END-EXEC. Reading next item while browsing EXEC CICS READNEXT DATASET (filename) INTO (ws-record) [LENGTH (ws-record-length) [RIDFLD (keyfield)] END-EXEC. Reading previous item EXEC CICS READPREV DATASET (filename) INTO (ws-record) [LENGTH (ws-record-length) [RIDFLD (keyfield)] END-EXEC.
58

Infosys ------------------------------------------------------------- CICS

Slides

Committing all the updations:


In CICS programs COMMIT is not normally used. Instead the following command does both database and dataset updations permanent. EXEC CICS SYNCPOINT END-EXEC. CICS issues a SYNCPOINT if a task completes successfully. We can issue more than one SYNCPOINT command within a task. If a task gets ABENDed, system rolls back all the work done upto previous syncpoint. It is always good to keep a transactions as small as possible. Always issue a SYNCPOINT before transferring control to another program.
59

Infosys ------------------------------------------------------------- CICS

Slides

Summary
In this course we have seen
what is CICS, the need for CICS the screen layout, keys, etc. batch and online programs important CICS tables transactions and tasks starting and ending a transaction Conversational & Pseudoconversational Programming changing map attributes and positioning the cursor error handling in CICS programs CICS commands complete BMS concepts methods of transferring control from one program to another methods of retaining data between two tasks and transferring data from one program to another File handling in CICS

60

Você também pode gostar