CICS - 读取



READ 命令使用主键从文件读取数据。以下是 READ 命令的语法:

语法

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
END-EXEC.

下表列出了 READ 命令中使用的参数:

序号 参数及描述
1

FILE

文件名是要读取的文件的名称。这是标识文件 FCT 条目的 CICS 符号文件名。文件名最多可以包含 8 个字符,如果它们是文字,则应括在引号中。

2

INTO

数据区是要将记录读取到的变量,通常是工作存储中的结构。INTO 是 READ 命令使用的必要条件。

3

RIDFLD

它包含要读取的记录键的数据区的名称。

4

LENGTH

它指定可以读取到指定数据区的最大字符数。它必须是半字二进制值 (PIC S9(4) COMP)。READ 命令完成后,CICS 会将我们指定的最大值替换为记录的真实长度。出于这个原因,我们必须将 LENGTH 指定为数据区的名称而不是文字,并且如果我们在程序中多次使用 LENGTH,则必须重新初始化此数据区。较长的记录将引发错误条件。

5

KEYLENGTH

它指定键的长度。

示例

以下示例演示了如何从 'FL001' 文件读取记录,其中 Student-id 是主键:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. HELLO.                                               
DATA DIVISION. 
WORKING-STORAGE SECTION.
01 WS-STD-REC-LEN    PIC S9(4) COMP.
01 WS-STD-KEY-LEN    PIC S9(4) COMP.
01 WS-STD-REC-KEY    PIC 9(3).
01 WS-STD-REC        PIC X(70).
PROCEDURE DIVISION.
MOVE +70           TO WS-STD-REC-LEN.
MOVE ‘100’         TO WS-STD-REC-KEY.
MOVE 3             TO WS-STD-KEY-LEN.
EXEC CICS READ
   FILE ('FL001')
   INTO (WS-STD-REC)
   LENGTH (WS-STD-REC-LEN)
   RIDFLD (WS-STD-REC-KEY)
   KEYLENGTH (WS-STD-KEY-LEN)
END-EXEC.

读取命令选项

以下选项可与 READ 命令一起使用:

  • GENERIC - 当我们不知道完整的键值时使用。例如,我们想要一个主键以“10”开头,其余键可以是任何内容的记录。尽管键长度为 3 个字符,但我们只提到了 2 个。重要的是要提到键长度,它给出需要进行匹配的长度。满足条件的第一个记录将被选中。

  • UPDATE - 它指定我们打算在当前事务中更新记录。指定 UPDATE 会使您的事务对请求的记录拥有独占控制权。当我们想要重写记录时,应该使用它。

  • EQUAL - 它指定我们只想要键与 RIDFLD 指定的键完全匹配的记录。

  • GTEQ - 它指定我们想要键大于或等于指定键的第一个记录。

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
   GENERIC
   UPDATE
   EQUAL
   GTEQ
END-EXEC.

读取命令异常

下表显示了 READ 语句期间出现的异常列表:

序号 异常及描述
1

NOTOPEN

文件未打开。

2

NOTFND

正在搜索的记录在数据集中不存在。

3

FILENOTFOUND

FCT 中未创建文件条目。

4

LENGERR

命令中指定的长度与记录的实际长度不匹配。

5

NOTAUTH

如果用户没有足够的权限使用该文件。

6

DUPKEY

如果多个记录满足备用键上的条件。

cics_file_handling.htm
广告