针对用户维护的数据表的应用程序编程
CICS® 将用户维护的数据表及其源数据集作为单独的实体进行处理。 装入完成后,仅对数据表执行访问文件名的所有文件控制命令。
如果无法从用户维护的数据表满足请求,那么 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 条件。