用户维护共享数据表或耦合设施数据表的应用编程
CICS®将用户维护的共享数据表或耦合设备数据表及其源数据集作为独立实体处理。 iWhen加载完成后,所有访问文件名的文件控制命令只在数据表上执行。 如果用户维护的共享数据表或耦合设备数据表无法满足请求,CICS不会访问源数据集(就像访问CICS共享数据表一样)。 CICS会返回异常情况响应。
您可以使用数据表服务中的用户出口仅将需要访问的记录放入数据表中; 对于未装入的记录,不可能访问源数据集。 您还可以使用用户出口 XDTRD 在装入记录时对其进行修改 (例如,仅通过选择其字段的子集)。
打开数据表时位于源数据集中的记录可能不在数据表中,因为在装入期间未复制这些记录。 这可能是由于用户出口 XDTRD 的禁止,或者异常事件 (例如,数据表变满)。
用户维护的共享数据表或耦合设施数据表不支持某些应用程序编程请求。 例如,不支持使用带有不精确键的 UPDATE 选项的读请求。 此外,有些例外条件是用户维护的共享数据表或耦合设施数据表所独有的。 您可能需要更改现有应用程序以遵守可以使用哪些命令和选项的限制,或者处理 CICS 返回的异常条件。
以下命令不受支持; 它们返回 INVREQ 条件以及 EIBRESP2 字段中的值 44:
- 带有 RBA 选项的命令
- 带有 MASSINSERT 选项的 WRITE 命令
共享数据表支持以下命令(使用跨内存服务进行远程访问):
- 不带 RBA 选项或 UPDATE 选项的 READ 命令。 如果该记录在数据表中不存在,那么将返回 NOTFND 条件。
- STARTBR , RESETBR , READNEXT 和 READPREV 命令没有 RBA 选项。
- ENDBR 命令。
共享数据表支持以下命令(远程请求使用函数运送):
- 不带 RBA 或 MASSINSERT 选项的 WRITE 命令。 将记录添加到数据表中 (如果 XDTAD 用户出口未禁止该记录)。在以下情况下将返回 NOSPACE 条件:
- 没有足够的数据存储空间将记录添加到共享数据表中。
- 耦合设备数据表池空间不足,无法存储记录。
- 数据表已包含在文件定义中指定的最大记录数。
如果用户出口 XDTAD 禁止将记录添加到数据表,那么将返回消零条件。
- 不带 RBA 选项的 REWRITE 命令。 将在数据表中更新记录。 如果更新记录的存储空间不足,则返回 NOSPACE 条件。 如果没有足够的可用空间,那么 CICS 将发出消息 DFHFC0432 。
- 不带 RBA 选项的 DELETE 命令。 将从数据表中删除记录。 如果该记录在数据表中不存在,那么将返回 NOTFND 条件。 如果数据表可恢复并且没有足够的虚拟存储器用于 CICS 写入的有关已删除记录的信息,那么将返回 NOSPACE 条件。
在加载过程中使用用户维护的共享数据表或耦合设施数据表
在加载用户维护的共享数据表时,只能使用带有精确键的非更新读取请求。 如果已装入记录,那么将以正常方式处理请求。 如果尚未装入该记录,那么将从源数据集读取该记录并将其提交至用户出口 XDTRD (如果已激活):
- 如果 XDTRD 未对其进行抑制,那么会将该记录添加到数据表并返回到应用程序。
- 如果它被 XDTRD 抑制,那么将返回 NOTFND 条件。
如果装入已完成,那么将对其他有效的请求返回 LOADING 条件。