READ

从文件读取记录。

READ

读取语法图跳过可视语法图READFILE( filename)UNCOMMITTEDCONSISTENTREPEATABLEUPDATETOKEN( data-area)INTO( data-area)SET( ptr-引用)RIDFLD( data-area)KEYLENGTH( data-value)GENERICSYSID( 系统名称)LENGTH( data-area)LENGTH( data-area)DEBKEYDEBRECRBARRNXRBAEQUALGTEQNOSUSPEND

条件: DISABLED , DUPKEY , FILENOTFOUND , ILLOGIC , INVREQ , IOERR , ISCINVREQ , ENGERR , LOADING , LOCKED , NOSPACE , NOTAUTH , NOTFND , NOTOPEN , RECORDBUSY 和 SYSIDERR

如果此命令所引用的文件是:
  • 定义为远程,该命令是通过 IPIC 连接提供到远程 CICS® 区域的功能。
  • 定义为本地 VSAM 或 RLS。
如果此命令所引用的文件是:
  • 定义为远程,并且该命令是通过非 IPIC 连接提供的功能。
  • 定义为共享数据表,耦合设施数据表或 BDAM 文件。

描述

READ 从本地或远程系统上的文件中读取记录。

对于 UPDATE 和非 UPDATE 命令,必须标识要由 RIDFLD 选项中指定的记录标识字段检索的记录。 当 READ UPDATE 命令完成时, RIDFLD 数据区立即可供应用程序复用。

数据表注意事项

当 READ 命令读取 CICS维护的数据表时,对 VSAM 的调用始终满足带有 UPDATE 或 RBA 的 READ 请求。 如果可能,对数据表的引用将满足既不是通用读也不是 READ UPDATE 的完整键读。 如果在表中找不到记录,那么将访问源数据集,除非已知表是完整的,即,源中的所有记录也存在于表中 (如果装入完成,并且没有任何记录被用户出口拒绝)。

如果对 CICS维护的数据表执行通用读取 (使用 GENERIC 选项) ,并且 CICS 由于在表中找不到记录而返回 NOTFND 条件,那么 CICS 将清除 INTO () 和 RIDFLD () 区域以确保不返回不正确的记录。 当 INTO () 和 RIDFLD () 区域在 NOTFND 条件下保持不变时,此行为会优化性能,但与 VSAM 文件的通用读取行为不同。 将 VSAM 文件转换为 CICS维护的数据表时,如果返回了 NOTFND 条件,并且清除了 INTO () 和 RIDFLD () 区域,那么确保执行数据通用读取的任何应用程序都将执行相应的操作。

当 READ 命令读取用户维护的数据表时,只有在装入完成后才会访问该数据表; 不会以任何方式更改 VSAM 文件。

当 READ 命令读取耦合设施数据表时,将仅访问该数据表,即使该表最初是从 VSAM 源数据集装入的。

如果使用 RLSACCESS (YES) 定义了引用用户维护或耦合设施数据表的文件,那么不支持特定于 RLS 的 API 选项 CONSISTENT , NOSUSPEND 和 REPETABLE。

读取以 RLS 方式访问的文件

以 RLS 方式访问文件时,非更新读请求可以指定下列其中一个读完整性选项: UNCOMMITTED , CONSISTENT 或REPE可用。

如果未指定任何这些关键字,那么 CICS 将使用在 FILE 资源定义的 READINTEG 参数上指定的值,缺省值为 UNCOMMITTED。

如果要使用 FILE 定义的 READINTEG 关键字中指定的读完整性级别,然后需要从使用本地文件更改为远程文件,或者如果更改远程文件的位置,请确保:
  • 远程文件拥有区域支持读完整性选项。
  • 远程系统中的 FILE 定义指定:
    • RLS 方式
    • 应用程序的正确读完整性值。

如果指定 UPDATE 关键字或 CONSISTENT 或可重复读完整性选项 (在 FILE 定义中显式或隐式) 的 READ 请求引用了具有保留锁定的记录,那么将返回 LOCKED 条件。 锁定记录的键不会返回到应用程序。 因此,如果应用程序在 READ 请求上指定 GTEQ 或 GENERIC ,那么无法确定锁定了哪个记录键。

如果指定读完整性的请求是功能交付到不支持读完整性的 CICS 系列产品的成员,那么请求将失败:
  • 如果使用了 ISC 链接,那么请求将接收到 ATNI 异常终止。
  • 如果使用 MRO 链接,那么请求将接收到 AXF8 异常终止。

    AXF8 异常终止代码指示程序已尝试通过函数将指定文件控制选项的请求交付到不支持这些选项的远程 CICS 区域。

保留锁定和活动锁定

RECORDBUSY 指活动锁定, LOCKED 指保留锁定。

这些锁定会影响获取锁定的 READ 请求; 即,具有读完整性的更新请求和请求。 这些是下列项目符号中引用的 READ 请求的类型。 其他 READ 请求不受保留锁定或活动锁定的影响。
  • 对具有 保留 锁定的记录的 READ 请求始终被 LOCKED 响应拒绝。
  • 对具有 active 锁定的记录的 READ 请求等待释放锁定,除非指定了 NOSUSPEND 关键字,在这种情况下, CICS 将返回 RECORDBUSY 响应。

选项

CONSISTENT (仅限 RLS)
将使用 VSAM 共享锁定提供的读完整性级别来读取记录,该级别将持续请求的持续时间。
如果另一个任务正在修改记录,因此保留互斥锁定,那么 READ 请求将等待更新完成 (除非还指定了 NOSUSPEND) ,如下所示:
  • 对于针对不可恢复文件的 READ 请求,只要执行更新的任何 VSAM 请求完成, READ 就会完成。
  • 对于针对可恢复文件的 READ 请求,当更新任务完成其下一个同步点或回滚时, READ 请求将完成。
DEBKEY
(分块的 BDAM) 指定要通过键进行分块。 如果既未指定 DEBREC 也未指定 DEBKEY ,那么不会发生分块。
DEBREC
(分块 BDAM) 指定将通过相对记录 (相对于零) 进行分块。 如果既未指定 DEBREC 也未指定 DEBKEY ,那么不会发生分块。
等于
指定仅通过具有与 RIDFLD 选项中指定的键相同的键 (完整或通用) 的记录来满足搜索。
FILE (filename)
指定要访问的文件的名称。

如果指定了 SYSID ,那么假定此文件所引用的数据集位于远程系统上,而不考虑是否对 CICS定义了该名称。 否则,将使用资源定义来确定数据集是在本地系统上还是在远程系统上。

一般
(VSAM KSDS ,路径和数据表) 指定搜索键是通用键,其长度在 KEYLENGTH 选项中指定。 当找到的记录的起始字符 (通用键) 与指定的开始字符 (通用键) 相同时,将满足对记录的搜索。
GTEQ
(VSAM KSDS ,路径和数据表) 指定,如果搜索具有与 RIDFLD 选项中指定的键相同的键 (完整或通用) 的记录失败,那么将检索具有更大键的第一个记录。
INTO (data-area)
指定要将从数据集检索的记录写入其中的数据区。

指定 INTO 时,必须显式指定 LENGTH ,或者必须能够使用汇编语言中的 LENGTH 属性引用或者 PL/I 中的 STG 和 CSTG 作为 INTO 选项的缺省值。 必须在 C 中显式指定 LENGTH。

KEYLENGTH (data-value)
指定已在 RIDFLD 选项中指定的键的长度 (半字二进制) ,除非指定了 RBA 或 RRN ,在这种情况下, KEYLENGTH 值无效。 如果指定了 GENERIC ,那么必须指定此选项,并且每当指定密钥时都可以指定此选项。 但是,如果指定的长度与为数据集定义的长度不同,并且操作不是通用的,那么会发生 INVREQ 条件。

如果指定了 GENERIC 并且 KEYLENGTH 值不小于 VSAM 定义中指定的值,那么也会出现 INVREQ 条件。

如果将 KEYLENGTH (0) 与读取数据集中的第一条记录的对象配合使用,那么还必须指定 GTEQ 选项。 如果显式指定了 EQUAL ,或者缺省情况下使用 KEYLENGTH (0) 指定了 EQUAL ,那么 READ 的结果不可预测。

对于远程文件,可以在 FILE 定义中指定 KEYLENGTH 值。 如果未在其中定义 KEYLENGTH ,并且未在应用程序中指定 KEYLENGTH ,并且键的长度超过 4 个字符,那么缺省值为 4。

LENGTH (数据区)
指定要放置记录的数据区的长度 (作为半字二进制值)。 当 READ 命令完成时, LENGTH 参数包含记录的实际长度。

如果指定了 SYSID ,那么必须指定此选项。

如果文件位于远程系统上,那么无需在此处设置 LENGTH 参数,但必须在文件资源定义中设置 LENGTH 参数。

如果文件位于本地系统上,那么必须使用 INTO 选项为可变长度记录设置 LENGTH 参数,但不能为固定长度记录设置 LENGTH 参数。 但是,最好指定固定长度记录的长度,因为:
  • 这将导致检查正在读取的记录对于可用数据区的长度是否不太长。
  • 将固定长度的记录读入比所访问的记录长的区域时,如果指定了 LENGTH 选项,那么会针对 COBOL , C , PL/I 和汇编语言应用程序提出 LENGERR 条件。 如果未显式指定 LENGTH 选项,那么如果可以从数据区推断长度,那么将返回 LENGERR 条件。 如果指定的长度超过文件记录长度,那么 CICS 将使用较长的长度进行移动。 如果应用程序中的目标区域不够大,那么存储将覆盖到目标区域之外。

如果指定 SET 选项,那么不需要指定 LENGTH 选项。

当读取到比正在读取的记录更长的目标数据区时,目标数据区的内容 (从检索的记录的末尾到目标数据区的末尾) 是不可预测的。

如果指定 INTO 选项,那么 LENGTH 自变量必须是指定程序接受的最大记录的数据区。 如果检索到的记录比 LENGTH 选项中指定的值长,那么会将该记录截断为指定的值,并出现 LENGERR 条件。 在这种情况下, LENGTH 数据区设置为截断前记录的长度。

请注意,如果未指定长度,那么针对本地 CICS 系统上定义的文件中的可变长度记录发出的文件控制命令将失败,并带有 LENGERR 条件。 但是,如果对远程系统上定义的文件发出同一命令,那么该命令不会失败。

NOSUSPEND (仅限 RLS)
如果记录被 VSAM 锁定并具有活动锁定 (包括由于死锁而锁定的记录) ,那么请求不会等待。
注: 在 CICS 返回 RECORDBUSY 响应之前,指定 NOSUSPEND 等待至少 1 秒的请求。
RBA
(VSAM KSDS 或 ESDS 基本数据集,或者仅 CICS维护的数据表,而不是路径) 指定 RIDFLD 选项中指定的记录标识字段包含相对字节地址。 仅当从 ESDS 库中读取记录或从 KSDS 库中读取记录并使用相对字节地址 (而不是键) 来标识记录时,才应使用此选项。
不能将 RBA 用于:
  • 用户维护的数据表
  • 耦合设施数据表
  • 以 RLS 访问方式打开的任何 KSDS 文件
  • 使用扩展寻址的 KSDS 文件
此外,建议不要将 RBA 用于存放超过 4GB的 ESDS 文件。 (请改为使用 XRBA。)
可重复 (仅限 RLS)
将使用 VSAM 共享锁定提供的读完整性级别来读取记录,该级别将持续发出读请求的工作单元的持续时间。
如果另一个任务正在修改记录,因此保留互斥锁定,那么 READ 请求将等待更新完成 (除非还指定了 NOSUSPEND) ,如下所示:
  • 对于可恢复文件,当更新事务完成其下一个同步点或回滚时, READ 请求将完成。
  • 对于不可恢复文件,只要执行更新的 VSAM 请求完成, READ 就会完成。

READ 请求完成后,记录将保持锁定于发出 READ 的任务。 其他任务可能继续读取记录,但在发出 READ 的任务执行其下一个同步点或回滚之前,不允许其他任务更新记录。

RIDFLD (数据区)
指定记录标识字段。 内容可以是键,相对字节地址或相对记录号 (对于 VSAM 数据集) ,也可以是块引用,物理键和去块参数 (对于 BDAM 数据集)。 对于相对字节地址或相对记录号,此字段的格式必须是全字二进制。 对于相对字节地址, RIDFLD 值可以大于或等于零。 对于相对记录号, RIDFLD 值必须大于或等于 1 ,即使指定了 GTEQ 选项也是如此。

有关定义记录标识字段的更多信息,请参阅 标识 BDAM 记录标识 VSAM 记录

命令完成后, RIDFLD 数据区立即可供应用程序复用,即使指定了 UPDATE 也是如此。

确保 RIDFLD 值指定的变量不短于此命令中指定的 KEYLENGTH ,或者如果未指定 KEYLENGTH ,那么确保您正在读取的文件的键长度; 否则,结果不可预测。

RRN
(VSAM RRDS) 指定 RIDFLD 选项中指定的记录标识字段包含相对记录号。 此选项仅应与引用相对记录数据集的文件配合使用。
SET (ptr-ref)
指示 CICS 将提供在其中读取记录的缓冲区,并指定要包含检索到的记录的地址的指针引用。

如果 DUPKEY 条件在汇编语言中出现,那么尚未设置指定的寄存器。 可以从 DFHEITP1装入指定的寄存器。

指针引用一直有效,直到同一文件的下一个 READ 命令或相应的 REWRITE , DELETE 或 UNLOCK 命令或 SYNCPOINT (如果是 READ UPDATE SET) 完成为止。 如果要保留指针所寻址的字段中的数据,那么应将其移动到您自己的区域。

如果 DATALOCATION (ANY) 与应用程序相关联,那么数据的地址可以高于或低于 16 MB 界线。

如果 DATALOCATION (BELOW) 与应用程序相关联,那么数据的地址低于 16 MB 线。

如果为正在执行的事务指定了 TASKDATAKEY (USER) ,那么返回的数据在用户键中; 否则,返回的数据在 CICS-key 中。

SYSID (systemname)
指定要将请求定向到的系统的名称。

如果指定 SYSID 并同时省略 RBA 和 RRN ,那么还必须指定 LENGTH 和 KEYLENGTH; 在资源定义中找不到它们。

TOKEN (数据区)
指定此 READ UPDATE 请求的唯一标识作为全字二进制值。 这是文件控制返回给请求任务的输出值,用于将后续 REWRITE 或 DELETE (或 UNLOCK) 请求与此 READ UPDATE 请求上返回的记录相关联。

可以交付 TOKEN 函数。 但是,如果指定 TOKEN 的请求是传递给无法识别此关键字的 CICS 系列产品的成员的函数,那么请求将失败。

注: 如果指定 TOKEN ,那么意味着更新。
已落实
在没有读完整性的情况下读取记录。

返回 VSAM 已知的记录的当前值。 不会尝试将此读请求与同一记录的任何并发更新活动一起序列化。 记录可能正在由另一个任务更新,如果该更新随后回退,那么记录数据可能会稍后更改。

UPDATE
指定要获取记录以进行更新或 (对于 VSAM 和数据表) 删除。 如果省略此选项,那么将采用只读操作。
UPDATE 保证读完整性。 用于确保数据完整性的机制取决于文件资源的类型:
  • 对于以 RLS 方式访问的 VSAM 文件,要更新的记录被 SMSVSAM 服务器锁定。
  • 对于以非 RLS 方式访问的 VSAM 文件,要更新的记录由 CICS 锁定,此外,包含该记录的控制时间间隔由 VSAM 进行互斥控制。
  • 对于以非 RLS 方式访问的 VSAM 文件和日志 (UNDO) , CICS 会保持记录锁定,直到任务同步点为止。
  • 对于 BDAM 文件,要更新的记录由 BDAM 独占控制。
  • 对于用户维护的数据表,要更新的记录由 CICS锁定。
  • 对于 CICS维护的数据表,要更新的记录由 CICS 锁定,此外,包含该记录的控制时间间隔由 VSAM 独占控制。 需要 VSAM 控制时间间隔锁定,因为对数据表的更改反映在以非 RLS 方式访问的源数据集中。
  • 对于使用锁定模型的耦合设施数据表,要更新的记录由耦合设施数据表服务器锁定。
  • 对于使用争用模型的耦合设施数据表,不会锁定记录,从而使多个任务能够读取记录以进行更新。 如果一个任务为更新而读取的记录被另一个任务更改,那么当它发出 REWRITE 或 DELETE 命令时,将通过 CHANGED 异常条件来通知第一个任务。 如果一个任务为更新而读取的记录被另一个任务删除,那么当它发出 REWRITE 或 DELETE 命令时, NOTFND 条件将通知第一个任务。

如果另一个任务针对同一记录发出了 READ REPE致请求,那么将发出 READ UPDATE 请求以等待该任务到达 SYNCPOINT (除非您发出 NOSUSPEND)。

XRBA
指定 RIDFLD 选项中指定的记录标识字段包含扩展的相对字节地址。 从 ESDS 扩展寻址数据集读取记录时,应使用此选项。

XRBA 无法访问 KSDS 数据集。

条件

84 已禁用
RESP2 值:
50
文件已禁用,因为它最初定义为已禁用,但此后未启用。

文件已被禁用,因为它已被 SET FILE 或 CEMT SET FILE 命令禁用。

缺省操作: 异常终止任务。

15 个 DUPKEY
RESP2 值: (VSAM)
140
通过具有 NONUNIQUEKEY 属性的备用索引检索记录,后跟具有相同键的另一备用索引记录

在汇编语言中,如果正在使用 SET 选项,那么指定的寄存器尚未设置,但可以从 DFHEITP1装入。

缺省操作: 异常终止任务。

12 个 FILENOTFOUND
RESP2 值:
1
FILE 选项中提供的文件名未定义到 CICS。

缺省操作: 异常终止任务。

21 ILLOGIC
RESP2 值: (VSAM)
110
发生不在其他某个 CICS 响应类别中的 VSAM 错误。

请参阅 EXEC 接口块中的 EIBRCODE; 有关详细信息,请参阅 EIB 字段

对于用户维护的数据表,当 CICS 尝试从源数据集中检索记录时,仅对装入期间的非 UPDATE READ 发生此情况。

缺省操作: 异常终止任务。

16 INVREQ
RESP2 值:
20
根据资源定义,不允许 READ。

根据资源定义,对不允许更新操作的文件发出带有 UPDATE 选项的 READ 命令。

25
指定了 KEYLENGTH 和 GENERIC 选项,并且在 KEYLENGTH 选项中指定的长度大于或等于完整键的长度。
26 日
指定了 KEYLENGTH 选项 (但未指定 GENERIC 选项) ,并且指定的长度不等于为此文件引用的数据集定义的长度。
28 日
在不带 TOKEN 的 READ UPDATE 命令之后,对同一文件发出了另一个不带 TOKEN 的 READ UPDATE ,但未指定中间的 REWRITE , DELETE 和 UNLOCK 或 SYNCPOINT 命令。 在某些情况下,尽管第一个 READ UPDATE 不成功 (例如,因为它已超时) ,但可能会引发此情况。
40
发生 BDAM 密钥转换错误。
42
指定了 KEYLENGTH 和 GENERIC 选项,并且在 KEYLENGTH 选项中指定的长度小于零。
44
该命令不符合用户维护或耦合设施数据表的 READ 格式; 例如,如果指定了 RBA。
51
以 RLS 方式访问的 KSDS 文件的 READ 指定 RBA 关键字。 RLS 方式不支持对 KSDS 数据集的相对字节地址访问。
52
在对非 RLS 方式文件或对使用 RLSACCESS (YES) 指定的数据表的 READ 请求上指定了 CONSISTENT。 如果文件引用数据表,那么不允许 CONSISTENT ,即使文件定义指定了 RLSACCESS (YES) 也是如此。
53
在对非 RLS 方式文件或对使用 RLSACCESS (YES) 指定的数据表的 READ 请求上指定了 REPETABLE。 如果文件引用数据表,那么不允许重复,即使文件定义指定了 RLSACCESS (YES) 也是如此。
55
在对非 RLS 方式文件或对使用 RLSACCESS (YES) 指定的数据表的 READ 请求上指定 NOSUSPEND。 如果文件引用数据表,那么不允许 NOSUSPEND ,即使文件定义指定了 RLSACCESS (YES) 也是如此。
56
尝试更新可恢复耦合设施数据表失败,因为当前工作单元已更新 1024 个可恢复耦合设施数据表。 您不能在工作单元中更新超过 1024 个可恢复耦合设施数据表。
57
尝试更新文件失败,因为关联的 VSAM 数据集的 AVAILABILITY 状态为 RREPL ,这将不允许更新操作 (来自复制程序的操作除外)。
59
指定了 XRBA ,但数据集不是扩展 ESDS。

缺省操作: 异常终止任务。

17 IOERR
RESP2 值:
120
READ 操作期间发生 I/O 错误。 I/O 错误是 CICS 条件未涵盖的任何异常事件。

对于 VSAM 文件, IOERR 通常指示硬件错误。

对于用户维护的数据表,当 CICS 尝试从源数据集中检索记录时,仅对装入期间的非 UPDATE READ 发生此情况。

对于耦合设施数据表, IOERR 指示从耦合设施访问返回的响应不正确。

EXEC 接口块中提供了更多信息; 有关详细信息,请参阅 EIB 字段

缺省操作: 异常终止任务。

54 ISCINVREQ
RESP2 值:
70
远程系统指示不符合已知条件的故障。

缺省操作: 异常终止任务。

22 LENGERR
RESP2 值:
10
对于具有可变长度记录的文件或具有可变长度或未定义格式记录的 BDAM 文件,未在 READ 命令上指定 LENGTH 选项或 SET 选项。
11
使用指定的 INTO 选项读取的记录长度超过 LENGTH 选项中指定的值; 记录被截断,并且 LENGTH 选项中提供的数据区设置为记录的实际长度。
13
为具有固定长度记录的文件指定了不正确的长度。

缺省操作: 异常终止任务。

94 个 LOADING
RESP2 值:
104
无法满足请求,因为该请求是针对仍在装入的数据表发出的。 由于下列原因之一,可以提出该条件:
  • READ 指定尚未装入到耦合设施数据表中的记录。 仅当所请求的键在已装入的记录的范围内时,才能在 CFDT 正在装入时读取或修改记录。

    对于在装入期间发生故障的耦合设施数据表,也可以返回 LOADING 响应。 有关在耦合设施数据表的装入失败时发生的情况的更多信息,请参阅 数据表管理出口 XDTRD , XDTAD 和 XDTLC 中对 XDTLC 全局用户出口的描述。

  • READ 指定用户维护的数据表的 UPDATE 选项。 在装入期间无法修改用户维护的数据表。
  • READ 指定用户维护的数据表的 GENERIC 或 GTEQ 选项。 装入 UMT 时,只能将读请求与精确键配合使用。

如果应用程序持续或过于频繁地迂到 LOADING 条件,请检查这是否不是由引用相同数据集的冲突文件定义引起的。

缺省操作: 异常终止任务。

100 个已锁定
RESP2 值:
106
An attempt is being made to read a record either specifying the UPDATE keyword, or specifying (explicitly or implicitly) CONSISTENT or REPEATABLE, but the record is locked by a retained lock (see 保留锁定和活动锁定).

如果正在读取的记录被保留锁定,那么对使用锁定模型的可恢复 CFDT 的 READ UPDATE 请求也可能发生 LOCKED 条件。 请参阅 耦合设施数据表保留锁定 ,以获取有关调查耦合设施数据表中记录的保留锁定的信息。

缺省操作: 使用代码 AEX8异常终止任务。

18 次 NOSPACE
RESP2 值:
100
直接访问设备上没有可用于将记录添加到数据集的空间。 对于对 RLS 文件的 READ 请求,如果对同一 RLS 文件的先前 WRITE 请求发出了相同的错误,那么可能会发生此错误。
70 NOTAUTH
RESP2 值:
101
对 FILE (filename) 执行资源安全性检查失败。

缺省操作: 异常终止任务。

13 NOTFND
RESP2 值:
80
尝试根据提供的搜索参数检索记录失败。 对于数据表,如果尝试读取记录失败,那么会发生此情况,因为数据表中没有具有指定键的条目。 这并不意味着源数据集中没有这样的记录 (如果表是从一个表创建的); 可能是这样的记录存在,但在初始装入期间被用户出口 XDTRD 拒绝,或者随后被从数据表中删除。 对于远程文件,如果在未在应用程序或文件定义中指定密钥长度的情况下尝试读取记录,并且实际密钥的长度超过 4 个字符,那么会发生此情况。
81
指定了 XRBA ,并且 RIDFLD 的值大于 4 GB ,但数据集不是扩展 ESDS。

缺省操作: 异常终止任务。

19 NOTOPEN
RESP2 值:
60
由于下列其中一个原因,将返回 NOTOPEN (RESP2 60):
  • 请求的文件为 CLOSED 和 UNENABLED。 在接收到针对 OPEN ENABLED 文件的 CLOSE 请求并且该文件不再使用后,将达到 CLOSED , UNENABLED 状态。 还可以通过在 FILE 资源定义上指定 STATUS (UNENABLED) 和 OPENTIME (FIRSTREF) ,使 CLOSED , UNENABLED 成为初始状态。 (对于 BDAM 文件,使用 DFHFCT TYPE=FILE 的 FILSTAT 参数。)
  • 请求的文件是 OPEN ,正在由其他事务使用,但已接收到针对该文件的 CLOSE 请求。
  • 对因 SET DSNAME QUIESCED 或 IMMQUIESED 命令而停顿或正在停顿的数据集发出 READ 命令。
  • 请求的文件为 CLOSED 和 ENABLED ,因此 CICS 已尝试在执行请求的过程中打开该文件。 由于某种原因,此文件打开失败。 您应该检查控制台以获取说明打开文件失败原因的消息。

如果对 CLOSED , DISABLED 文件发出请求,那么不会发生此情况。 在这种情况下,将出现 DISABLED 条件。

缺省操作: 异常终止任务。

101 记录 DBUSY
RESP2 值:
107
指定了 NOSUSPEND 关键字,记录被活动锁定 (请参阅 保留锁定和活动锁定)。

缺省操作: 使用代码 AEX9异常终止任务。

53 个 SYSIDERR
RESP2 值:
130
SYSID 选项指定的名称既不是本地系统,也不是由 CONNECTION 或 IPCONN 定义定义的远程系统。 当到远程系统的链接已知但不可用时,也会发生 SYSIDERR。 对于 IPCONN ,如果链路已知,但本地或远程系统不支持使用 IP 互连交付的功能的文件控制命令,那么将发生 SYSIDERR。
131
对于耦合设施数据表,与耦合设施数据表服务器的连接已失败。 这可能是因为服务器本身已发生故障,或者服务器可用,但 CICS 未能连接到该服务器。
132
将对不再存在的耦合设施数据表发出 READ ,这可能是因为耦合设施发生故障,在这种情况下,耦合设施数据表服务器也会发生故障。 请参阅 设置和运行耦合设施数据表服务器 ,以获取有关重新启动耦合设施数据表服务器和重新装入表的信息。

缺省操作: 异常终止任务。

示例

以下示例显示如何将记录从名为 MAIN 的文件读取到指定的数据区中:
EXEC CICS READ
     INTO(RECORD)
     FILE('MAIN')
     RIDFLD(ACCTNO)
以下示例显示如何使用通用键并指定更大或相等的键搜索从 VSAM 文件中读取要更新的记录。
EXEC CICS READ
     INTO(RECORD)
     LENGTH(RECLEN)
     FILE('MASTVSAM')
     RIDFLD(ACCTNO)
     KEYLENGTH(4)
     GENERIC
     GTEQ
     UPDATE