CICS Commands


Some Useful System Commands:


A brief introduction to CICS system tables and resources:


In the CICS region, all the resources (like files, transactions, TDQs, programs etc.) are defined in system tables like (PCT, PPT, FCT, etc.). We cannot execute any transaction without the transaction being predefined in PCT and the associated program that the transaction initiates in PPT. Similarly we cannot use any files, which have not been defined in the FCT. Similar is the case for all the resources. Of course exception being resources like TSQs. But CICS gives the user very much flexibility in the sense that the resources that are defined to CICS are all logical. All the physical allocations are to be done by the user, which will cater to his needs and application requirements.


For example, the definition of a file to CICS is done in terms of its DDNAME. The user can allocate any physical file, which contains the data that cater to his application/testing needs as long as the properties of the file (like Key length, Key offset, Rec Size, etc) are consistent with those defined to the CICS in FCT.


Similarly once a transaction and its associated program are defined to CICS, user can compile and create a load module of any program with the name defined and use the pre-defined transaction to execute the program. For example, in PCT and PPT the entries of transaction TRN1 and its associated program PGM1 are made. Now the user can compile some program XYZ with its name as PGM1 and use TRN1 to execute this program.


But before we proceed further it is very important to note that for us to use/access any of the resources that have been defined to CICS, they have to be enabled. And incase of resources like files, they have to be open. We have a Master Transaction CEMT to check the current status of a resource and also to change its current status as required by the user.



Type CEMT I and press enter. A lot of options will be shown to you. Out of these the options which will be of most concern to us are:

FIle, PROGram, TRAnsaction.


Now after I type the option you want along with the name of the resource you want to check. Note that it’s enough if we type the letters in capital case. Also we can directly inquire about a resource by directly typing the entire command

CEMT I option (resource name)


For example:

CEMT I FI (ddname) is same as CEMT I FILE (ddname)

Similarly, I PROG (program name); I TRA (transaction name) 


The logical name we specify can also be generic. Suppose if we type in

CEMT I FI (*) and press enter, it will show us the status of all the files that are defined in the region. If we want to limit our search then its better to give the entire resource name (if we know) or give a generic name by specifying the start of resource name followed ny an asterisks. Example:

CEMT I FI (TM*) will display the status of all files whose DDNAME start with TM. But make sure to give ‘*’. If not it will search only for the file whose name is ‘TM’.


Similarly we can inquire about PROG and TRA.


Now let us see some examples:

Example-1 FIle:






 Fil(FILENAME  ) Vsa Clo Ena Rea Upd Add Bro Del     Sha   

        Dsn( PHYSICAL.FILENAME                )

Vsa tells us that it is a VSAM file. (Not modifiable)

Clo tells us that the file is Closed.

            This can also be Ope meaning that the file is opened.

Ena tells us that the file is Enabled.

            This can also be Dis meaning that the file is disabled.

Rea tells us that we have access to read this file

Upd tells us that we have access to update this file

Add tells us that we have access to add new records to this file

Bro tells us that we have access to browse through the file.

Del tells us that we have access to delete the records in this file.

Sha tells us the disposition of the file.

            All the above 6 options are given while definition of the file to the region. Depending on the application these definitions may vary from file to file.


Dsn gives us the name of the physical file that is currently allocated to this region.

            We can allocate different files (of course only one at a time) provided the file we are allocating has properties in consistent with those defined in the region.


For us to access any file, it should be open and enabled. If we want to change any status then just go to that option and type the first letter. For example if we want to open the file just go to Clo and type O in the place of Clo. The status will change to Ope (open) provided the Physical file we mentioned in Dsn is existing and has consistent properties with those defined in the region.


When we want to allocate a different physical file then follow the below steps:

Change the status of the file to Clo and Disable the file. When you do this, check the message that pops up on to the right of the file name. It should be normal.

Once this is done, go to Dsn and type the name of the physical file name you want to allocate in place of the existing file name.


Now again change the status to Ope and Ena from Clo and Dis. If the file is existing and has consistent properties you will see the message as normal to your right. Else it will give a message OPEN/CLOSE FAILED. Note that even if the the file does not exist, the status can be changed to Ena from Dis but it will give an error when you are trying to open the file.


Also CICS won’t allow you to allocate a new physical file unless the status of the existing file is closed and disabled.


Example-2 PROGram:





 Prog(PROGNAME) Len(0000000000) Ass Pro Ena Pri     Ced

    Res(000) Use(0000000000) Any Cex Ful Qua           


Ass tells us that the program is written in Assembler. This can also be Cob (COBOL) or Pli.

Pro tells us that this is a program. This can also be Map (MAP/MAPSET)

Ena tells us that this program is enabled. This can also be Dis (Disabled)


For us to execute any program its status should be enabled.


If you want to see the detailed description, place your cursor on the resource name or its status fields and press Enter. You will be able to see the detailed descriptions for that resource. This is true for all resources.


Example-3 TRAnsaction:





 Tra(TRNX) Pri( 001 ) Pro(PROGNAME ) Tcl( DFHTCL00 ) Ena Sta

            Prf(DFHCICSA) Uda Bel Iso               Bac Wai

Pri tells us the priority of the transaction. Higher the value, least is the priority.

Pro tells us the name of the program that is associated with this transaction. i.e., when we trigger this transaction program PROGNAME will get executed.


Ena tell us that the status is enabled. This can also be disabled.


For us to run any transaction, the transaction, and the program associated with that transaction and all the resources likes files that the program uses should be enabled. Also the files should be open.



Another useful system transaction is CEBR. This is used to browse through the TSQ records.



CEBR TSQ-Name <Enter>

This will display all the records present in the TSQ.



Another system transaction that can prove handy is CECI. This is a command level interpreter. Using this transaction we can execute any CICS command with out having to write an entire program. Example:

I want to execute ASKTIME.


CECI <enter> This will display all the options commands we can execute. In this we can find an option ASKtime.


Type Ask and press Enter. The next screen that shows up is as follows:






Now enter ABSTIME as follows:

ASK ABSTIME and hit enter.


It will show the following screen:



 EXEC CICS  ASKtime Abstime()


Now again press enter. The command will get executed and result will be obtained.




 EXEC CICS  ASKtime Abstime( +003281070156140 )


CEDF: This is a diagnostic facility available in CICS which executes all CICS commands present in the program interactively showing the state of the program before and after the execution of the Command. But having XPEDITOR we don’t have to concern ourselves with this.

CESF: To logoff from the region.

EIB variables generally/frequently used


·         EIBTIME                  Time the task was started.

·         EIBDATE             Date the task was started.

·         EIBTASKN          Task number assigned to task by CICS.

·         EIBTRNID           Transaction ID

·         EIBTRMID          Terminal ID

·         EIBAID                Type of input operation performed on the terminal

·         EIBCPOSN          Position of cursor on the screen at the time of input

·         EIBCALEN          Length of the Communication area passed to an

       application program which is called by another application program.

·         EIBDS                  Name of the last dataset referenced

·         EIBFN                  Code representing function requested by the last CICS command

·         EIBRCODE         Response code for the last command processed


·         Exceptional Conditions.


·         Handle

·         Ignore

·         Nohandle


File Control Commands (RANDOM ACCESS)


                        + Read

                                    EXEC CICS READ



                                                LENGTH(length of record-layout)


                                                KEYLENGTH (length of key-field)





Default: EQUAL without GENRIC option

               GTEQ with GENERIC option

When using GENERIC, KEYLENGTH must be mentioned and in this case the length should be equal to the actual length of the key-part we are passing for generic read. When generic option is not used, KEYLENGTH is optional and if given should hold the length of the entire key.



+ Write

                              EXEC CICS WRITE

                                                DATASET (ddname)

                                                FROM (record-layout)


                                                KEYLENGTH(length of key-field)



MASSINSERT is very rarely used. Do not use this unless you know the complete implications of this option.


                        + Delete

                                    EXEC CICS DELETE



                                                KEYLENGTH(length of key-field)




If we have already issued a READ with UPDATE and then want to delete the record, then DO NOT mention RIDFLD and KEYLENGTH. We mention RIDFLD only if we want to delete the record directly with out issuing a READ with UPDATE.


GENERIC – We cannot use this option when we issue a READ with UPDATE command. If we want to use GENERIC then we should directly issue the DELETE command. And the rules of RIDFLS and KEYLENGTH are same as for READ. If we use this option, all the records whose key start with that mentioned in RLDFLD gets deleted.

            When this option is used, if we specify NUMREC then after the command is executed, data-area will hold the value of number of records that have been deleted.


                        + Rewrite

                                    EXEC CICS REWRITE

                                                DATASET (ddname)

                                                FROM (record-layout)

                                                Length (length of record-layout)


We issue this command only after a successful READ with UPDATE command.


                        + Unlock

                                    EXEC CICS UNLOCK

                                                            DATASET (ddname)


When a READ with UPDATE is issued the records gets locked. This lock gets released only when a REWRITE or DELETE is issued. (Of course the lock gets released even when the task completes). But after we issue a READ with UPDATE, if we feel the record needs no update then we can release the lock over the record by issuing this command.



File Control Commands (SEQUENTIAL ACCESS)


                                    EXEC CICS STARTBR

                                                DATASET (ddname)

                                                RIDFLD (record-layout)

                                                KEYLENGTH (length of record-layout)



                                                REQID (data-value)


The use of GENERIC and the command defaults are same as for READ. We use REQID when we are having multiple browses on the same file in the same program to distinguish between each of them.




                                    DATASET (ddname)

                                    INTO (record-layout)

                                    LENGTH (length of record-layout)

                                    RIDFLD (key-field)

                                    KEYLENGTH (length of key-field)

                                    REQID (data-value)


After the command is issued, Key-field will hold the key of the record which has been read.




                                    DATASET (ddname)

                                    INTO (record-layout)

                                    LENGTH (length of record-layout)

                                    RIDFLD (key-field)

                                    KEYLENGTH (length of key-field)

                                    REQID (data-value)


All the options are same for READPREV as are for READNEXT

Points to be noted:

  1. We cannot issue a READPREV immediately after we issue a STARTBR with GENERIC option.
  2. If we issue a READPREV after a READNEXT has been issued, the same record will be read.



                                    EXEC CICS ENDBR

                                                            DATASET (ddname)

                                                            REQID (data-value)


If we do not do a ENDBR CICS does it for us as soon as the task terminates.



                                                EXEC CICS RESETBR

                                                            DATASET (ddname)

                                                            RIDFLD (key-field)  

                                                            KEYLENGTH (length of key-field)

                                                            REQID (data-value)




If we want to do a STARTBR with doing an ENDBR then we use RESETBR.




                                    EXEC CICS WRITEQ TS

                                                QUEUE (Queue-name)         

                                                FROM (Queue-record-layout)

                                                LENGTH (length of Queue-record-layout)

                                                ITEM (data-area)




The queue-record-layout does not include the Queue-Name and Item-nbr in it.

We mention REWRITE when we want to rewrite an existing TSQ record. There is no READ with UPDATE command for TSQ as is for files.



                                    EXEC CICS DELETEQ TS

                                                QUEUE (Queue-name)




                                    EXEC CICS READQ TS

                                                QUEUE (Queue-name)

                                                INTO (record-layout)

                                                LENGTH (length of record-layout)

                                                ITEM (data-value)/NEXT


We can read the TSQ records sequentially, by mentioning NEXT instead of ITEM option. It will start reading from 1st record.

We can read the TSQ records randomly, by mentioning the item number of the record we want to read against the ITEM option.

We can combine both of above, first READQ TS with ITEM option followed by READQ TS with NEXT option to achieve dynamic read of records

------------------------------------------------------------------------------------------------------------------ END -------------------------------------------------------------------------------------------------------------------------------------