Friday, September 21, 2007

CICS FAQ's

Q. What is the function of the CICS translator?
A. The CICS translator converts the EXEC CICS commands into call statements for a specific programming language. There are CICS translators for Assembler, COBOL, and PL/1.

Q. What does “Pseudo Conversational” mean?
A. The programming technique in which the task will not wait for the end-user replies on the terminal. Terminating the task every time the application needs a response from the user and specifying the next transaction to be started when the end user press any attention key (Enter, PF1 through PF24, PA1,PA2 and Clear) is pseudo-conversational processing.

Q. How can you start a CICS transaction other than by keying the Transaction ID at the terminal?
A. - By coding an EXEC CICS START in the application program
- By coding the trans id and a trigger level on the DCT table
- By coding the trans id in the EXEC CICS RETURN command
- By associating an attention key with the Program Control Table
- By embedding the TRANSID in the first four positions of a screen sent to the terminal.
- By using the Program List Table

Q. What is the purpose of the Program List Table?
A. The Program List Table records the set of applications programs that will be executed automatically at CICS start-up time.

Q. What are the differences between and EXEC CICS XCTL and an EXEC CICS START command?
A. The XCTL command transfer control to another application (having the same Transaction ID), while the START command initiates a new transaction ID (therefore a new task number). The XCTL continues task on the same terminal. START can initiate a task on another terminal.

Q. What are the differences between an EXEC CICS XCTL and an EXEC CICS LINK command?
A. The XCTL command transfer control to an application program at the same logical level (do not expect to control back), while the LINK command passes control to an application program at the next logical level and expects control back.

Q. What happens to resources supplied to a transaction when an XCTL command is executed?
A. With an XCTL, the working storage and the procedure division of the program issuing the XCTL are released. The I/O areas, the GETMAIN areas, and the chained Linkage Section areas (Commarea from a higher level) remain. All existing locks and queues also remain in effect. With a LINK, however, program storage is also saved, since the transaction expects to return and use it again.

Q. What CICS command do you need to obtain the user logon-id?
A. You must code EXEC CICS ASSIGN with the OPERID option.

Q. What is a resident program?
A. A program or map loaded into the CICS nucleus so that it is kept permanently in main storage and not deleted when CICS goes “Short On Storage”.

Q. What is some of the information available in the EIB area?
A. - The cursor position in the map
- Transaction ID
- Terminal ID
- Task Number
- Length of communication area
- Current date and time
- Attention identifier

Q. What information can be obtained from the EIBRCODE?
A. The EIBRCODE tells the application program if the last CICS command was executed successfully and, if not, why not.

Q. What is the effect of including the TRANSID in the EXEC CICS RETURN command?
A. The next time the end user presses an attention key, CICS will start the transaction specified in the TRANSID option.

Q. What is the function of the EXEC CICS HANDLE CONDITION command?
A. To specify the paragraph or program label to which control is to be passed if the “handle condition” occurs.

Q. How many conditions can you include in a single HANDLE CONDITION command?
A. No more than 16 in a single handle condition. If you need more, then you must code another HANDLE CONDITION command.

Q. What is the EXEC CICS HANDLE ABEND?
A. It allows the establishing of an exit so cleanup processing can be done in the event of abnormal task termination.

Q. What is the difference between EXEC CICS HANDLE CONDITION and an EXEC CICS IGNORE command?
A. A HANDLE CONDITION command creates a “go-to” environment. An IGNORE command does not create a go-to environment; instead, it gives control back to the next sequential instruction following the command causing the condition. They are opposites.
Q. What happens when a CICS command contains the NOHANDLE option?
A. No action is going to be taken for any exceptional conditional occurring during the execution of this command. The abnormal condition that occurred will be ignored even if an EXEC CICS HANDLE condition exist. It has the same effect as the EXEC CICS IGNORE condition except that it will not cancel the previous HANDLE CONDITION for any other command.

Q. What happens when a CICS command contains the RESP option?
A. No action is going to be taken for any exceptional condition occurring during the execution of this command. When an abnormal condition occurs, the CICS response code is field in the program work area and can be checked later (usually at the next sequential instruction).

Q. When a task suspends all the handle conditions via the PUSH command, how does the task reactivate all the handle conditions?
A. By coding an EXEC CICS POP HANDLE command.

Q. What is the difference between the INTO and the SET option in the EXEC CICS RECEIVE MAP command?
A. The INTO option moves the information in the TIOA into the reserved specified area, while the SET option simply returns the address of the TIOA to the specified BLL cell or “address-of” a linkage-section.

Q. What are the three ways available for a program to position the cursor on the screen?
A. 1. Static positioning. Code the insert cursor (IC) in the DFHMDF BMS macro.
2. Relative positioning. Code the CURSOR option with a value relative to zero(position 1,1 is zero) .
3. Symbolic positioning. Move high values or -1 to the field length in the symbolic map(and code CURSOR on the SEND command).

Q. What is Modified Data Tag?
A. The MDT is a 1-bit attribute character of a BMS field. When it is set on, CICS will transmit the data contained in the associated map field.

Q. Name three ways the Modified Data Tag can be set on?
A. The Modified Data Tag can be set on:
1. When the user enters data into the field.
2. When the application program moves DFHBMFSE to the attribute character.
3. By defining it in the BMS macro definition.

Q. What is a mapset?
A. A mapset is a collection of BMS maps link-edited together.

Q. What is the function of DFHMDF BMS macro?
A. The DFHMDF macro defines fields, literal, and characteristics of a field.
Q. What is the function of the Terminal Control Table(TCT)?
A. The TCT defines the characteristics of each terminal with which CICS can communicate.

Q. What does it mean when EIBCALEN is equal to zeros?
A. When the length of the communication area (EIBCALEN) is equal to zeros, it means that no data was passed to the application.

Q. How can the fact that EIBCALEN is equal to zeros be of use to an application programmer?
A. When working in a pseudo-conversational mode, EIBCALEN can be checked if it is equal to zero. A programmer can use this condition as a way of determining first time usage(of the program).

Q. Which CICS system program is responsible for handling automatic task initialization?
A. The Transient Data Program(TDP).

Q. What are the differences between Temporary Storage Queue (TSQ) and Transient Data Queue (TDQ).?
A. - Temporary Storage Queue names are dynamically defined in the application program, while TDQs must first be defined in the DCT (Destination Control Table).
- When a TDQ contains certain amount of records (Trigger level), a CICS transaction can be started automatically. This does not happen when using a TSQ.
TDQ(extra partition) may be used by batch application; TSQ cannot be accessed in batch. The Transient Data Queue is actually a QSAM file.
-You may update an existing item in a TSQ. A record in a TDQ cannot be
updated.
- Records in TSQ can be read randomly. The TDQ can be read only sequentially.
- Records in Temporary Storage can be read more than once, while records stored in Temporary Data Queues cannot. With TDQs it is “one read” only.

Q. In an on-line environment, how can you prevent more than one user from accessing the same Transient Data Queue at the same time?
A. By issuing an EXEC CICS ENQ against the resource. When processing is completed, a DEQ should be executed.

Q. When an application is invoked via the EXEC CICS START command with the from option, how does the application gain access to the common area?
A. An EXEC CICS RETRIEVE command will access the common area.

Q. The DFHCOMMAREA is used to pass information from one application to another. What are some other ways that this function can be accomplished?
A. You can also pass information in the following ways.
- By using a temporary storage queue
- By using an intrapartition TDQ
- By using the Task Work Area
- By using TCTUA
- Through a file

Q. How do you define Task Work Area?
A. By defining it on the PCT (the Program Control Table)

Q. What information do you get when an EXEC CICS STARTCODE is issued?
A. You will be able to determine if the application was started by (1) a transient data trigger level(QD), (2) a START command (S,SD), (3) user (U) or terminal input (TD), or (4) Distributed Program Link(D,DS).

Q. Which CICS command must be issued by the application program in order to gain access to the Common Work Area(CWA)?
A. EXEC CICS ADDRESS with CWA option.

Q. In which CICS table would you specify the length of the TASK WORK AREA (TWA)?
A. In the Program Control Table(PCT).

Q. What is a deadlock?
A. Deadlock (also known as a “deadly embrace”) occurs when a task is waiting for a resource held by another task which, in turn, is waiting for a resources held by the first task.

Q. Explain the term Transaction routing.
A. Transaction routing is a CICS mode of intercommunication which allows a terminal connected to local CICS to execute another transaction owned by a remote CICS.

Q. Explain the term Function Request Shipping?
A. Function request shipping is one of the CICS modes of intercommunication which allows an application program in a local CICS to access resources owned by a remote CICS.

Q,. Explain the term “MRO” (Multi Region Operation)?
A. MRO is the mechanism by which different CICS address spaces with in the same CPU can communicate and share resources.







The following is the check list to write a CICS online program:

1. If the program is main program (which has to be kicked off using a TRANSID) then the transaction id (TRANSID) has to defined in the Program Control Table(PCT). If the program is a called program (invoked by using XCTL or LINK command) then there is no need to define a transaction id in PCT.

2. Any program with CICS interface has to be defined in the Program Processing Table (PPT).

3. Files used in the program should be defined in the File Control Table. (FCT).

4. If the program is using Task Work Area then the TWA length has to be defined in the Program Control Table(PCT). This is done at the time of defining a transaction in PCT.

5. It is always better to code LINKAGE SECTION in the program.

6. Once the program coding is completed the component has to be made active. (Component status will be ACTIVE once it is compiled successfully).

7. Promote the package (means copying the load module from staging library to test library).

8. Once the program is successfully promoted to test region, NEW copy has to be issued. This can be done by using CEMT transaction. This is CEM1 for region 1 and CEM2 for region 2 and so on. The new copy is issued to reinitialize the Program Processing Table so that the new load module’s address is kept in the PPT.

9. Now the program is ready for testing.