完成一个交易所需要的数据处理代码可以不必完全写在一个程序里,跟去其逻辑内容分解成若干部分,每一部分写在一个程序里面,在交易里根据需要调用各个程序,这样做既可以减少程序复杂度,又有利于程序复用。CICS中调用程序有两种方式:LINK和XCTL
使用 XCTL 命令调用程序时,两程序仍然处于同一个任务之下。并且,同样也可通过 COMMAREA 在两程序间传递参数。以下为在程序 PGMC 中,通过 XCTL 调用程序 PGMD 的部分代码:
IDENTIFICATION DIVISION.
PROGRAM-ID. PGMC.
……
PROCEDURE DIVISION.
……
EXEC CICS LINK PROGRAM(‘PGMD’)
COMMAREA(COMSTART)
LENGTH(20)
END-EXEC
……
同时需要注意的是,此时被调用程序 PGMD 通过 RETURN 命令将直接返回到 CICS 系统中。也就是说,使用 XCTL 命令调用程序时,将不改变 CICS 当前执行的逻辑层次。图 为 XCTL 命令下 CICS 的逻辑层次关系。
使用 LINK 命令调用程序时,两程序将位于一个任务之下。同时,通过 LINK 命令中的选项 COMMAREA 可以实现在调用过程中的参数传递。例如,在以下程序 PGMA 中,将通过 LINK 命令调用程序 PGMB 。
IDENTIFICATION DIVISION.
PROGRAM-ID. PGMA.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COMSTART.
05 STATUS-I PIC X.
05 DATA-I PIC X(19).
……
*
PROCEDURE DIVISION.
……
EXEC CICS LINK PROGRAM(‘PGMB’)
COMMAREA(COMSTART)
LENGTH(20)
END-EXEC
……
GOBACK.
需要注意的是,被调用的程序 PGMB 通过 RETURN 命令将返回到程序 PGMA 中。因此,通过 LINK 命令进行程序调用时,将改变 CICS 当前执行的逻辑层次。图 反映了使用 LINK 命令时 CICS 中不同逻辑层次之间的关系。