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 条记录满足备用键上的条件。 |