基于CICS的COBOL程序最基本的功能便是输入和输出。在CICS中,输入是通过RECEIVE命令实现的,而输出则是通过SEND命令实现的。下面分别予以讲解。
1.使用RECEIVE命令进行输入
使用RECEIVE命令进行输入时,关键需要指定输入的存储位置以及输入数据的长度。例如,以下代码将通过终端接受输入数据,并存放在变量INAREA中:
IDENTIFICATION DIVISION.
PROGRAM-ID. INPGM.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INFLDS.
05 INLEN PIC S9(4) USAGE IS COMP.
01 INAREA.
05 DATA-1 PIC X(5).
05 FILLER PIC XX.
05 DATA-2 PIC X(5).
……
*
PROCEDURE DIVISION.
MOVE 12 TO INLEN.
EXEC CICS RECEIVE INTO(INAREA)
LENGTH(INLEN)
END-EXEC.
……
EXEC CICS RETURN END-EXEC.
GOBACK.
以上RECEIVE命令中,LENGTH选项用于指定所接受数据的最大长度。当输入数据长度小于该长度时,CICS将接受输入数据的实际长度;当输入数据长度大于该长度时,CICS将会产生一个异常。
在VS COBOL Ⅱ中,LENGTH选项则不用指定。VS COBOLⅡ中有一个专门的地址寄存器,CICS将根据该寄存器判断接受数据的长度。
2.使用SEND命令进行输出
同RECEIVE命令类似,使用SEND命令进行输出关键需要指定输出数据的存储位置,以及数据长度。例如,以下代码将输出一段“HELLO WORLD”字符:
IDENTIFICATION DIVISION.
PROGRAM-ID. OUTPGM.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
……
01 MSG PIC X(80).
*
PROCEDURE DIVISION.
……
MOVE ‘HELLO WORLD’ TO MSG.
EXEC CICS SEND FROM(MSG)
LENGTH(20)
END-EXEC.
……
EXEC CICS RETURN END-EXEC.
GOBACK.
需要注意的是,使用SEND命令进行输出时,LENGTH选项中应该为实际数据,而并非变量。这点和RECEIVE命令是有所不同的。此外,输出数据的起始位置在默认情况下,将为当前光标在屏幕中的位置。关于CICS屏幕中的光标,将在后面详细讲解到。