精通COBOL--16.3.2 使用CICS进行输入输出

  基于CICSCOBOL程序最基本的功能便是输入和输出。在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屏幕中的光标,将在后面详细讲解到。

你可能感兴趣的:(精通COBOL--16.3.2 使用CICS进行输入输出)