Saturday, November 2, 2013

CICS Interview Questions 5


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)  Explain how to handle exceptional conditions in CICS.
A)    An  abnormal  situation  during  execution  of  a  CICS  command is called   an exceptional  condition".     
  There are various   ways  to  handle  these  exception  conditions:
1. Handle Condition Command: It is used to transfer control to the procedure label specified if   the exceptional   condition specified  occurs.
2. Ignore Condition Command: It causes no action to be taken if the condition specified occurs in the program. That is control will be returned to the next instruction following the command  which encountered  the  exceptional  condition.
3. No Handle Option: This option can be specified in any CICS command and it will  cause no
action to be  taken  for  any   exceptional   condition   occurring   during   execution  of  this  command.
4. RESP Option: This option can   be    specified  in  any  CICS  command. If the RESP option is specified in a  command, CICS places a response code at  a  completion of the command.  The
application program can check this code, then proceed to the next processing.

Handle condition:
Invalid handling of  CICS  error condition within the program causing the looping.  Here is one example, most program have EXEC CICS HANDLE CONDTION ERROR(label) or  EXEC  CICS HANDLE ABEND LABEL(label) to  trap  any  error condition or  abend.  This  type  of  coding  is usually acceptable if  they handle  the error / abend correctly in  their  handling paragraph.   However,  the  program  often  cause another error or abend  within  the handling routine.  In that case, looping or sos will occur.  I strong recommend that  the   following statement should  be included in  their  ERROR handling paragraph.                         
                              
EXEC CICS HANDLE CONDTION ERROR END-EXEC. It means that from  now on, CICS will handle all the errors and will not go back to error handling routine .For HANDLE ABEND, code EXEC CICS HANDLE ABEND CANCEL instead. Please check the application program reference manual for further explanation of these two commands. Besides, not  only these two HANDLE will cause the program, other  type of error handle might cause loop too.   So  code  the HANDLE command carefully.  It  is  a good program practice to deactivate  the  error  handling  by  EXEC  CICS  HANDLE  CONDITION condition END-EXEC. Once you know that the program won't need it anymore.         

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

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 CONDTION 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)    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)    Explain re-entrancy as applies to CICS.
A)     Reentrant   program  is   a  program  which  does  not  modify itself  so  that  it  can   reenter to itself  and continue  processing   after   an   interruption   by  the  operating  system which, during   the   interruption, executes other   OS  tasks  including    OS    tasks    of   the    same     program.    It   is   also  called  a "reenterable"  program  or"serially  reusable"  program.

A quasi-reentrant program is a reentrant program under the CICS environment.  That   is,   the  quasi-reentrant  program is a CICS program which does not modify itself. That way it can reenter to itself and continue   processing after an interruption by CICS which,  during  the  interruption, executes other  tasks  including  CICS  tasks  of  the  same  program. In  order  to  maintain  the  quasi-reentrancy,  a  CICS  application  program  must  follow  the  following  convention:

Constants in Working Storage:  The quasi-reentrant program defines only constants in its ordinary data area (e.g. working Storage Section ). These constants will never be modified and shared  by  the tasks.

Variable in Dynamic  Working  Storage: The quasi reentrant  program acquires a unique storage area (called Dynamic Working  Storage --DWS) dynamically  for  each  task by issuing  the  CICS  macro equivalent  GETMAIN.  All variables  will be placed in  this DWS for each task. All counters  would   have  to be initialized  after the DWS has been  acquired.

Restriction on Program  Alteration:  The  program must   not   alter   the   program  itself.  If  it  alters  a CICS macro  or  command,   it   must  restore  the  alteration   before   the   subsequent  CICS  macro  or command.

Q)    What are the CICS commands available for program control?
A)     The  following  commands  are  available  for  the  Program  Conrol services:
1.       LINK: To pass control  to  another  program  at  the   lower  level,  expecting  to  be  returned.
2.       XCTL:          To pass control to another  program  at the same  level,  not expecting  to be returned.
3.       RETURN:     To return   to    the    next   higher-level program  or  CICS.
4.       LOAD:          To  load  a  program.
5.       RELEASE:  To  release  a  program.