CICS - READ 命令

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

语法

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

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

Sr.No 参数和说明
1

FILE

文件名是我们要读取的文件的名称。这是 CICS 符号文件名,用于标识文件的 FCT 条目。文件名最多可以有 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 命令选项

以下选项可与 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 命令异常

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

Sr.No 异常 &描述
1

NOTOPEN

文件未打开。

2

NOTFND

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

3

FILENOTFOUND

FCT 中未输入文件。

4

LENGERR

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

5

NOTAUTH

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

6

DUPKEY

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

cics_file_handling.html