Enterprise IT Consultant Views on Technologies and Trends

Jan 3 2011   2:31AM GMT

Static / Dynamic Linking in CICS



Posted by: Sasirekha R
Tags:
CICS
IBM
linking
Mainframe
performance

Static / Dynamic Linking in CICS

In CICS there are three ways of transferring control to a subprogram:

1. Using EXEC CICS LINK Command

2. Using Static COBOL call

3. Using Dynamic COBOL call

The format of the LINK command in the calling program is:

EXEC CICS LINK PROGRAM(‘subpgname’)  or  EXEC CICS LINK PROGRAM(name)

Link command is always dynamic, irrespective of whether the subprogram name is explicitly given or as a variable with the subprogram name as the value.

The subprogram that is invoked using LINK can either be local or remote and must be defined using RDO (Resource Definition Online).

Static and dynamic COBOL call is similar to that of normal COBOL programs. The dynamically called subprogram must be defined in the CSD (CICS system definition dataset).

If the called subprogram has CICS commands, then it has be translated by CICS. The CICS translator inserts DFHEIBLK and DFHCOMMAREA into the LINKAGE SECTION and also adds them as the first two parameters in the PROCEDURE DIVISION. In such cases the calling program should use the following syntax:

CALL ‘PROG’  USING DFHEIBLK  DFHCOMMAREA  PARM1  PARM2           (or)

CALL PROGID USING DFHEIBLK  DFHCOMMAREA  PARM1  PARM2

The CICS translator forces the compiler options of: RES, RENT, NODYNAM, and LIB which cannot be overridden.

In case of LINK, each time the subprogram is linked to, a new initialized copy of its working storage is provided and the run unit is reinitialized which can cause performance degradation in some cases. In case of dynamic call, the new initialized copy of the working storage is provided on the first entry to the called subprogram. For subsequent calls the same working storage is provided in its last-used state which can result in better performance than the corresponding LINK

The following are the factors to be considered with respect to the application programs:

  • Presence of CICS statements in the subprogram would necessitate the use of CICS translator. CICS translator in turn will affect how the program is called (DFHEIBLK & DFHCOMMAREA).
  • In case of COBOL call, the subprogram should return control to the calling program either by using GOBACK or EXIT-PROGRAM. In case of LINK, the subprogram should return control to the calling program either by using GOBACK or EXEC CICS RETURN.
  • The error condition raised in case of failure in calling the subprogram is different. If the subprogram is unknown/unavailable then LINK fails with PGMIDERR condition. In case of dynamic call, if the subprogram cannot be loaded or not available, then it results in COBOL abend.
  • It is understood that in ABACUS, the online programs use dynamic linking and then do a CANCEL after invoking the subprogram. Hence this approach may not have give any performance benefit over the LINK option. Also it is to be noted, to avoid CANCEL (and therefore the re-initialization) the programs should have been coded such that it would not have adverse effect.

More detailed information with sample code refer: http://cicswiki.org/cicswiki1/index.php?title=CALL_vs._LINK#Advantages_of_using_a_LINK.

 Comment on this Post

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to: