文件 资源定义
FILE 资源定义文件的物理和操作特性。
- 直接访问数据集中的记录
- 访问从数据集中加载的数据表中的记录
- 访问耦合设备数据表中没有数据集的记录(因为在 CFDT 文件定义中指定了 LOAD(NO))。
- VSAM 文件(包括引用 CICS维护、用户维护和耦合设施数据表的文件,以及引用 VSAM 数据集的文件)
- 远程 VSAM 文件
- 远程 BDAM 文件
- 由 LSRPOOL 资源定义的 VSAM 本地共享资源 (LSR) 池
要让活动的 CICS 系统使用该文件,其定义必须已安装到系统中。 CICS文件控制在需要访问文件时使用已安装的定义来查找文件、计算使用文件的任务数、捕获处理统计信息并维护其他文件控制信息。
有关使用 CEMT 和 CEDA 安装 FILE 资源定义的信息,请参阅 安装 FILE 资源定义。 有关使用 BAS 的信息,请参阅 使用 BAS FILE 资源定义。
CICS捆绑包中的 FILE 资源
您可以使用 CICS bundle 创建、编辑和安装 FILE 资源定义。 如果以这种方式创建 FILE 资源,就可以使用 CICS 捆绑程序来管理该资源的生命周期。
- VSAM 文件(包括引用 CICS 维护的、用户维护的文件和耦合设施数据表,以及引用 VSAM 数据集的文件)
- 远程 VSAM 文件
- 远程 BDAM 文件
动态生成的 FILE 资源的初始状态来自定义该资源的捆绑包的初始状态。 因此,无法定义 STATUS 为 UNENABLED 的 FILE 资源来禁止应用程序隐式打开文件。
您可以使用 EXEC CICS INQUIRE FILE 或 CEMT INQUIRE FILE 命令查询由 CICS bundle 动态生成的 FILE 资源。
您不能针对由 CICS bundle 动态生成的 FILE 资源发出 DISCARD 命令。 您必须丢弃 CICS 包,然后 CICS 将操作应用到 FILE 资源。
要修改定义并安装在 CICS 捆绑程序中的 FILE 资源的属性,请使用 CICS Explorer® 中的资源编辑器修改 CICS 捆绑程序中的定义,并安装新版本的 CICS 捆绑程序或与其一起部署的应用程序。 您可以使用 SET FILE 命令更改动态生成资源的属性,但这些更改不会编目,也不会在 CICS 暖重启时恢复。
要更改定义并安装在 CICS 捆绑程序中的 FILE 资源的状态,请更改 CICS 捆绑程序或与之一起部署的应用程序的状态。 如果您在禁用定义了 FILE 资源的 CICS bundle 时遇到问题,如果需要执行此操作,可以在动态生成的资源上使用 EXEC CICS SET FILE 或 CEMT SET FILE 命令。 按照 诊断应用程序错误中的故障排除步骤诊断问题并采取适当措施。
有关在 CICS 捆绑中定义资源的详细信息,请参阅 定义 CICS 捆绑。
语法
属性
- ADD( { 否 | 是 } )
- 指定是否将记录添加到文件。
- BACKUPTYPE({静态| 动态})
- 可以将 CICS VSAM 文件定义为在打开供更新时进行备份。 如果文件是用 RLSACCESS(YES) 定义的,或者恢复选项是在 ICF 目录中定义的,则不使用此属性。 要强制 CICS 使用此属性而不是目录中的恢复选项,请将 NONRLSRECOV 系统初始化参数设置为 FILEDEF。 对于以 RLS 模式访问的文件,必须在 ICF 目录中的数据集定义上指定备份类型。
对于耦合设施数据表,将忽略该属性;如果在 ICF 目录中为与该表关联的源数据集定义了任何恢复属性,那么也会忽略这些属性。 CFDT 不符合 "开放中备份"(BWO)的条件。
可能的值包括:- DYNAMIC
- 指定 DYNAMIC 和 RECOVERY 属性 ALL,可使文件在开放更新时符合备份条件。
- 静态
- 打开更新时,文件不符合备份条件。
- BROWSE( { 否 | 是 } )
- 指定是否能从文件连续检索记录。
- CFDTPOOL( cfdtpool )
- 指定耦合设备数据表池的名称,其中包含此文件定义的表。 如果指定 TABLE(CF),则必须使用此属性。可接受的字符:
A-Z 0-9 $ @ #
有效字符在代码页 IBM® -037 显示时列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
除非使用 CREATE 命令,否则输入的任何小写字符都会转换为大写。
耦合设施数据表可(出于会计、安全、管理等目的)分成 CFDT 组(池)。 所有耦合设施数据表池的名称在系统池内必须是唯一的,但可以与其他类型池(如 TS 数据共享池)的名称相同。
要打开引用耦合设备数据表的文件,必须在发出打开请求的 z/OS® 系统中运行名为池的耦合设备数据表服务器。 如果所需服务器尚未启动,文件打开请求将失败。
注意: CFDTPOOL 属性仅对 CFDT 有意义。 您可以为未定义为 TABLE(CF) 的文件指定池名称,但 CICS 会忽略它。 如果更改文件定义以引用耦合设备数据表,CFDTPOOL 名称将生效。 - DATABUFFERS( { 2 | 值 } )
- 指定用于数据的缓冲区数量。 使用 2(缺省值)到 32767 范围内的值。 可以指定的最小值比 STRINGS 属性中定义的字符串数多一个。
- DELETE( { 否 | 是 } )
- 指定是否可从文件删除记录。
- DESCRIPTION(文本)
- 您可以提供在此字段中定义的资源的描述。 描述文本的长度最多可以为 58 个字符。 您可以使用的字符没有任何限制。 但是,如果使用括号,请确保对于每个左括号都有一个匹配的右括号。 如果使用 CREATE 命令,那么对于文本中的每个单撇号,将编码两个撇号。
- DISPOSITION( { 分享 | 旧 } )
- 指定该文件的处理方式。
- OLD
- 相当于 JCL 中的 DISP=OLD 参数。
- 分享
- 相当于 JCL 中的 DISP=SHR 参数。
- DSNAME( dsname )
- 指定该文件要使用的数据集名称(操作系统已知)。 DSNAME 可以是 1 到 44 个字符,符合z/OS数据集名称规则(请参阅《z/OS MVSJCL 参考》中的DSNAME 参数)。
在打开文件时,如果该文件不存在 JCL 语句,则在打开之前使用该 DSNAME 对文件进行动态分配。 如果文件定义指向数据表(CICS、USER 或 CF),则 DSNAME 必须是 VSAM 基本 KSDS 的 DSNAME。 它不能是路径或备用索引数据集。
在 CICS 启动 JCL 中为该文件的 DD 语句指定的 DSNAME 优先于在该文件定义中指定的 DSNAME。- 耦合设施数据表
- 如果文件定义指定了 LOAD(YES),且尚未打开,则 DSNAME 将指定从中加载表的源数据集名称。 或者,也可以在 CICS 启动 JCL 的 DD 语句中指定源数据集。 指定的数据集必须是 VSAM 基础 KSDS。
如果存在与源数据集关联的路径或备用索引,那么通过文件进行的任何更新都不会反映在源数据集或其关联的备用索引中。 加载完成后,耦合设备数据表完全独立于源数据集。
如果希望通过打开由不同文件定义指定的另一个文件来启动表格加载,请省略此属性。 在这种情况下,还要确保在 CICS JCL 中的 DD 语句中没有指定文件名。 在启动 CFDT 加载之前,打开文件的尝试都会失败。 有关从数据集加载耦合设施数据表的更多信息,请参阅 耦合设施数据表。
如果指定了 LOAD(NO),则该属性不是必需的,会被忽略。
- DSNSHARING( { 所有请求 | 修改请求 } )
- 指定是否将 VSAM 数据集名称共享用于 VSAM 文件。 可能的值包括:
- ALLREQS
- 数据集名称共享是在打开文件时在 ACB 中设置的,因此用于所有文件请求。
- MODIFYREQS
- 只有当对文件设置了 DELETE、ADD 或 UPDATE 操作时,才会在打开文件时在 ACB 中设置数据集名称共享。
- FILE(名称)
- 指定文件名。 该名称的最大长度为 8 个字符。可接受的字符:名称不得以数字字符开头。
A-Z 0-9 $ @ #
当代码页为 IBM-037时,有效字符将按其呈现方式列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
除非使用 CREATE 命令,否则输入的任何小写字符都会转换为大写。
- FWDRECOVLOG( { 无 | 期刊 } )
- 指定与用于前向恢复的 z/OS 系统日志记录器日志流相对应的日志。对于耦合设施数据表,将忽略该属性;如果在 ICF 目录中为与该表关联的源数据集定义了任何恢复属性,那么也会忽略这些属性。 CFDT 不可正向恢复。
- 否
- 此文件不需要前向恢复日志记录。
- 期刊
- 标识 CICS 用于前向恢复日志的日志的编号。 CICS 日志名称的形式为 DFHJnn 其中 nn 的范围为 01 到 99。 用于前向恢复的后续映像将写入与日志名称 DFHJnn 相对应的 z/OS 日志流中。注意: 在 CICS 事务服务器 for z/OS 中,DFHJ01 不是系统日志。CICS 仅在满足以下条件时使用该属性:
- 指定了 RECOVERY(ALL)。
- 指定了 RLSACCESS(NO)。
- ICF 目录中没有定义恢复属性。
如果在相应数据集的 ICF 目录条目中定义了文件的恢复属性,CICS 将始终使用 ICF 目录的恢复属性,而忽略 FILE 资源中的恢复属性。 要强制 CICS 使用 FILE 资源属性而不是目录中的恢复选项,请将 NONRLSRECOV 系统初始化参数设置为 FILEDEF。 使用 IDCAMS ALTER 命令可以更改 ICF 目录中定义的恢复属性。 当数据集的 ACB 打开时,不会阻止该操作。 不过,如果更改恢复属性,请注意可能对数据完整性造成的影响。
CICS会在数据集打开请求序列中的第一个 "打开-更新 "请求上从 ICF 目录中获取数据集恢复属性的副本。 这意味着单个 CICS 区域不会受到恢复属性更新的影响。 但是,如果在 RLS 模式下打开数据集,并修改 ICF 目录上的属性,第二个 CICS 区域可能会打开同一数据集进行更新,并复制不同的属性集,从而危及数据完整性。
如果必须更改 ICF 目录中定义的恢复属性(例如更改前向恢复日志流名称),请在进行任何更改之前静 止数据集。 这将确保在您更改并取消数据集之前,数据集无法在 RLS 模式下使用。
- GROUP( 组名 )
- 每个资源定义都必须具有 GROUP 名称。 资源定义成为组的成员,并在安装组时安装在 CICS 系统中。可接受的字符:
A-Z 0-9 $ @ #
当代码页为 IBM-037时,有效字符将按其呈现方式列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
输入的任何小写字符都将转换为大写。
GROUP 名称的长度最多可以为 8 个字符。 小写字符被视为大写字符。
- INDEXBUFFERS( { 1 | 数字 } )
- 指定索引使用的缓冲区数量。 使用 1 到 32767 范围内的值。 您可以指定的最小值是 STRINGS 属性中定义的字符串数量。
- JNLADD( { 无 | 之前 | 之后 | 全部 } )
- 指定希望在 JOURNAL 属性指定的日记账上记录的添加操作。 可能的值为:
- AFTER
- 在 VSAM I/O 操作之后,将文件控制写入操作添加到日志中。
- ALL
- 在 VSAM I/O 操作完成之前和之后,将文件控制写入操作添加到日志中。
- BEFORE
- 在 VSAM I/O 操作之前,将文件控制写入操作添加到日志中。
- 无
- 请勿在日志中添加写入操作。
- JNLREAD( { 无 | 仅更新 | 只读 | 全部 } )
- 指定希望在 JOURNAL 属性指定的日志上记录的读取操作。 可能的值为:
- ALL
- 将所有读取操作添加到日志中。
- 无
- 请勿在日志中添加读取操作。
- readOnly
- 在日志中只添加只读操作(不添加读取更新操作)。
- 仅更新
- 日志中只添加 READ UPDATE 操作(而非只读操作)。
- JNLSYNCREAD( { 否 | 是 } )
- 指定要同步还是异步写自动日志记录,该记录是针对 READ 操作而写入 JOURNAL 指定的日志的。
- JNLSYNCWRITE( { 是 | 否 } )
- 指定要同步还是异步写自动日志记录,该记录是针对 WRITE 操作而写入 JOURNAL 指定的日志的。
- JNLUPDATE( { 否 | 是 } )
- 指定是否要将 REWRITE 和 DELETE 操作记录在 JOURNAL 属性指定的日志上。
- JOURNAL( { 无 | 期刊 } )
- 指定是否要自动对该文件进行日志记录。 记录的数据采用 VSAM 记录格式,并且用于用户控制的日志记录。
记录的数据可通过 JNLADD、JNLREAD、JNLSYNCREAD、JNLSYNCWRITE 和 JNLUPDATE 属性进行识别。
对于 CICS维护的数据表,仅对产生 VSAM I/O 请求的请求执行日志处理。
对于用户维护的数据表或耦合设备数据表,任何文件控制操作都不执行日志记录。 不过,虽然不支持这些表的自动日志记录,但如果指定了日志编号,CICS 在打开文件时会尝试打开指定日志的日志流。
注意:根据 RECOVERY 和 FWDRECOVLOG 属性的指定,自动日志记录与记录到系统和前向恢复日志无关。可能的值包括:- 否
- 该文件不会自动日志化。
- 号
- 标识 CICS 要用于自动日志的日志的编号。 CICS 日志名称的形式为 DFHJnn ,其中 nn 的范围为 01 到 99。注意: 在 CICS 事务服务器 for z/OS 中,DFHJ01 不是系统日志。
- KEYLENGTH( 价值 )
- 指定远程文件和使用 LOAD(NO) 指定的耦合设备数据表中记录逻辑键的长度(以字节为单位)。
如果未在此定义 KEYLENGTH,那么必须在引用该文件的应用程序中的文件控制命令上指定该 KEYLENGTH 选项。 如果 KEYLENGTH 未在此处定义,也未在应用程序中指定,且按键长度超过 4 个字符,则默认值为 4。
- 远程文件
- 密钥长度范围为 1 到 255。
- 耦合设施数据表
- 密钥长度范围为 1 到 16。 只有在指定 LOAD(NO) 时才需要密钥长度。您可以选择为使用 LOAD(YES) 指定的耦合设备数据表指定键长,在这种情况下,您应该注意以下几点:
- 键长可从 ICF 目录中加载表的数据集条目中获取。 如果指定了密钥长度,该密钥长度必须与源数据集的密钥长度一致,否则打开文件的尝试将失败并显示错误信息。
- 如果在打开文件时,CICS发现 CFDT 已经创建,并且键长与加载数据集时使用的键长不同,则打开失败。
如果为一个非远程文件或未引用 CFDT 的文件指定了键长,除非该文件被重新定义为远程文件或引用 CFDT,否则该键长不会产生任何影响。 但请注意,如果指定了键长度,INQUIRE FILE 命令返回的值如下:- 如果文件已打开,CICS 将返回从 VSAM 获取的值,该值可能与文件定义中指定的值不同。
- 如果文件已关闭,CICS 将返回文件定义中指定的值。
在引用同一耦合设备数据表的所有文件定义中,该属性的值在整个系统中必须相同。
- LOAD( { 否 | 是 } )
- 指定首次打开耦合设备数据表时是否从源数据集加载。
- 否
- 这意味着耦合设备数据表不需要从源数据集加载;它一打开就能被应用程序完全使用。 表由使用它的应用程序加载,这是耦合设备数据表的默认方法。
- YES
- 这意味着耦合设施数据表必须从源数据集加载后才能完全使用;使用耦合设施数据表的应用程序依赖于它包含源数据集的记录。 在访问数据之前,无需完成加载。
该属性仅对使用 TABLE(CF) 属性定义的文件有效。 您可以为未定义为 TABLE(CF) 的文件指定 LOAD 属性,但 CICS 会忽略它。 (CICS维护的表和用户维护的表总是从源数据集自动加载) 如果更改文件定义以引用耦合设备数据表,LOAD 属性就会生效。
确保在引用同一耦合设备数据表的所有文件定义中,该属性的值在整个系统中都相同。
有关使用此属性的更多信息,请参阅 耦合设施数据表。
- LSRPOOLID( { 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 无 } )
- 该属性已过时,但仍受支持,用于提供与 CICS 较早发行版的兼容性。
现有定义中为 LSRPOOLID 指定的值将转移到新选项 LSRPOOLNUM 中。
- LSRPOOLNUM( { 1 | 数字 | 无 } )
- 指定本地共享资源池的身份。 LSRPOOLNUM 的默认值为 1,除非为 NSRGROUP 属性指定了一个值,在这种情况下 LSRPOOLNUM 的默认值为 NONE。
- NONE
- 指定与此文件相关的数据集使用 VSAM 非共享资源 (NSR)。
不能为 CICS 共享数据表(CICS 或用户维护)指定 NONE,因为这些类型的数据表必须使用 LSR 池。 但这一限制不适用于耦合设备数据表,因为耦合设备数据表可以指定为 "无"。
使用事务隔离的事务不支持 VSAM 非共享资源 (NSR)。 在定义访问使用 NSR 的 VSAM 文件的事务时,请指定 ISOLATE(NO)。 您还可以将文件请求发送到远程区域。 执行请求的 DFHMIRS 程序的 EXECKEY 定义为 CICS 。 无论事务隔离是否激活,CICS 密钥程序都可以读写其自身任务和所有其他任务的 CICS 密钥和用户密钥存储。
- 编号
- 标识与此文件相关的 VSAM 数据集所使用的 VSAM 共享资源池的编号。 值的范围必须是 1 到 255。 将数据集定义为使用 VSAM 本地共享资源(LSR)。 在与分配的 LRPOOLNUM 值相对应的 LSRPOOL 资源定义中明确定义缓冲区、字符串和其他资源。
默认情况下,如果文件定义指定了 RLSACCESS(YES),当 CICS 打开文件时,LSRPOOLNUM 值将被忽略。 但是,如果将指定 LSR 池的文件定义从 RLSACCESS(NO)更改为 RLSACCESS(YES),建议保留 LSRPOOLNUM 值。 LSRPOOLNUM 可确保在文件从 RLS 模式切换到 LSR 模式的任何时候,文件都能正确引用 LSR 池。
- MAXNUMRECS( { 无限制 | 数字 } )
- 指定数据表中可容纳的最大记录(条目)数。 使用该属性可防止交易失控:
- 如果表是耦合设施数据表,服务器池中的所有存储空间
- 如果表是 CICS 或用户维护的表,z/OS 数据空间中的所有存储空间。
该属性仅对 TABLE 属性为 CICS、USER 或 CF 的文件有意义。 您可以为使用 TABLE(NO) 定义的文件指定 MAXNUMRECS,但没有任何作用。 如果更改文件定义以引用数据表,MAXNUMRECS 值就会生效。- 不计成本
- 表中可存储的记录数没有用户指定的限制。 CICS 将最大全字值限制为 2,147,483,647。
- 编号
- 指定表中允许的最大记录数,范围为 1 到 99999999。 如果要为可恢复耦合设备数据表设置限制,请指定一个比表中预计包含的最大记录数多 5%到 10%的值。 这样可以在内部创建更多记录,用于处理可恢复请求。 为内部处理留出的余量取决于耦合设备数据表的使用水平和使用性质。 这种内部处理的一个效果是,在向可恢复耦合设备数据表发出 WRITE 或 REWRITE 请求时,可能会出现 RESP2 为 102 的 NOSPACE 条件,而该表的记录数显然少于为其指定的 MAXNUMRECS 限制。
- NSRGROUP( 组 )
- 指定一个符号名称(最多 8 个字符),用于将引用同一 VSAM 基础数据集的文件定义分组。 该值纯粹是象征性的,无需引用任何特定的文件定义。 所有必须分组的文件定义必须具有相同的名称。 为确保正确处理,您不必指定该属性,但如果不提供该属性,系统性能可能会下降。可接受的字符:
A-Z 0-9 $ @ #
当代码页为 IBM-037时,有效字符将按其呈现方式列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
除非使用 CREATE 命令,否则输入的任何小写字符都会转换为大写。
NSRGROUP 属性仅对引用使用 VSAM 非共享资源的数据集的文件有效。 不得为数据表编码 NSRGROUP 属性。 它与 VSAM 的数据集名称共享概念有关,VSAM 会为与同一基础数据集相关的所有文件所需的字符串和缓冲区创建一个控制块结构。
打开此类文件组的第一个成员时,必须向 VSAM 指定要为组中所有文件条目分配的字符串总数(使用访问控制块中的 BSTRNO 值)。 无论打开的第一个文件是与路径还是基础数据集相关联,VSAM 控制块结构都会在此时建立。 此时,BSTRNO 的值是通过将具有相同 NSRGROUP 属性的所有文件定义中的 STRINGS 值相加计算得出的。 打开组中的第一个文件后,添加到组中的任何新文件都不会影响已构建的 VSAM 控制块结构。 只有关闭所有针对基础群集打开的文件,然后重新打开,情况才会发生变化。
CICS 强制将数据集名称共享作为所有 VSAM 文件的默认设置。 如果文件在 DSNSHARING=MODIFYREQS 时打开进行只读处理,则数据集名称共享不起作用。 不过,DSNSHARING=MODIFYREQS 的文件仍然有助于 BSTRNO 的计算。
如果文件使用的是 VSAM 非共享资源,而您没有提供 NSRGROUP 属性,则在构建 VSAM 控制块结构时可能会出现字符串不足的情况,无法进行后续处理。 此时,VSAM 会调用动态字符串添加功能,根据需要为字符串提供额外的控制块。 不过,这种机制效率不高,额外的存储空间要到 CICS 运行结束时才会释放。
对于指定使用 VSAM 本地共享资源的文件(LSRPOOLNUM=n,n 的范围为 1 - 255),NSRGROUP 没有任何作用。
图 1 显示了一个示例,说明如何为 VSAM 基本数据集和备用索引路径指定所需的文件控制定义。图 1。 VSAM 基础数据集和备用索引路径定义。 CEDA DEFINE FILE(VSAM10B) GROUP(xxxxxx) DSNAME(DTGCAT.VSAM10B) DISPOSITION(SHARE) ADD(YES) BROWSE(YES) DELETE(YES) READ(YES) UPDATE(NO) RECORDFORMAT(F) STRINGS(8) LSRPOOLNUM(NONE) RECOVERY(NONE) NSRGROUP(GROUP1) INDEXBUFFERS(8) DATABUFFERS(9) CEDA DEFINE FILE(VSAM10P) GROUP(xxxxxx) DSNAME(DTGCAT.VSAM10P) LSRPOOLNUM(NONE) DISPOSITION(SHARE) STRINGS(5) NSRGROUP(GROUP1) BROWSE(YES) DELETE(NO) READ(YES) ADD(NO) UPDATE(NO) RECORDFORMAT(F) RECOVERY(NONE) INDEXBUFFERS(5) DATABUFFERS(6) - OPENTIME( { FIRSTREF | 启动 } )
- 指定何时打开文件。 可能的值为:
- 前言
- 在使用以下方法之一请求打开文件之前,文件一直处于关闭状态:
- 主要终端命令
- 应用程序中的 EXEC CICS SET FILE OPEN 命令
- 隐式开放
- STARTUP
- 文件在 CICS 初始化后由自动启动的 CICS 事务 (CSFU) 立即打开,除非文件的状态是 UNENABLED,此时文件仍处于关闭状态。
- READ( { 是 | 否 } )
- 指定该文件上的记录是否可读。
- READINTEG( { 未承诺 | 一致 | 可重复 } )
- 指定使用 RLSACCESS(YES) 定义的文件所需的读取完整性级别。 读取完整性不适用于非 RLS 访问模式文件、CICS 共享数据表或耦合设施数据表。
您可以使用 READINTEG 为文件设置默认的读取完整性级别。 如果程序没有在 READ、READNEXT 或 READPREV 命令中指定 API 读取完整性选项 UNCOMMITTED、CONSISTENT 或 REPEATABLE,则会使用默认的读取完整性级别。 但是,如果应用程序明确使用其中一个属性来指定读取完整性,则 API 选项会覆盖 READINTEG 属性上指定的任何值。
注意:您只能在 CICS 文件控制 API 命令或 CICS 文件资源定义中指定读取完整性选项。 对于由 CICS 打开的文件,不能在 DD 语句中使用等效参数。您可以在文件资源定义中指定 CONSISTENT 或 REPEATABLE,这样,在 API 提供这些选项之前编写的程序就可以使用读取完整性,而无需修改这些程序。 不过,如果这样做,请注意强制执行一致或可重复读取可能会带来意想不到的死锁。 程序还可能遇到 LOCKED(锁定)条件。
- 一致(consistent)
- 记录的读取具有一致的读取完整性。 如果记录正在被另一个事务修改,则 READ 请求要等到更新完成,更新的时间取决于数据集是可恢复的还是不可恢复的:
- 对于可恢复数据集,当更新事务完成下一个同步点或回滚时,READ 请求即完成。
- 对于无法恢复的数据集,只要执行更新的 VSAM 请求完成,READ 就会完成。
CONSISTENT 仅在同时指定 RLSACCESS(YES) 时有效--如果为非 RLS 文件指定 CONSISTENT,资源定义将被拒绝,并显示错误。
- 可重复
- 记录的读取具有可重复读取的完整性。 如果记录正在被另一个事务修改,则 READ 请求要等到更新完成,更新的时间取决于数据集是可恢复的还是不可恢复的:
- 对于可恢复数据集,当更新事务完成下一个同步点或回滚时,READ 请求即完成。
- 对于无法恢复的数据集,只要执行更新的 VSAM 请求完成,READ 就会完成。
读取完成后,共享锁一直保持到同步点。 这就保证了在任务发出进一步读取请求时,工作单元内读取的任何记录都不会被修改。 NOTFND 等错误响应可能无法重复。
REPEATABLE 仅在同时指定 RLSACCESS(YES) 时有效--如果为非 RLS 文件指定 REPEATABLE,资源定义将被拒绝,并显示错误。
- 未提交
- 读取记录时没有读取完整性。 CICS 获取 VSAM 已知的记录当前值。 不会将该读取请求与同一记录的任何并发更新活动序列化。 返回的记录可能是另一个事务更新的版本,但尚未提交,如果更新随后被退回,该记录可能会发生变化。注:
- UNCOMMITTED 的完整性级别与那些不支持 READINTEG 属性的 CICS 发行版提供的级别相同。
- 对于任何类型的数据表,请指定 UNCOMMITTED。 如果为文件指定了 RLSACCESS(YES),则允许使用 UNCOMMITTED 以外的任何值,但如果同时指定了 TABLE(CF)、TABLE(CICS)或 TABLE(USER),则该值将被忽略。
- RECORDFORMAT( { V | F } )
- 指定文件中记录的格式。
- F
- 记录长度固定。 对于 VSAM 文件,只有当 VSAM 访问方法服务定义指定了固定大小的记录(即平均大小等于最大大小),且文件中的所有记录都是固定大小时,才指定此项。
对于用户维护的数据表和耦合设施数据表,F 无效
- V
- 记录长度可变。 所有用户维护数据表和耦合设备数据表必须指定为可变长度。 否则,CICS 将返回一条错误信息,说明 RECORDFORMAT(F) 与 TABLE(CF) 或 TABLE(USER) 选项冲突并被忽略。
- RECORDSIZE( 数量 )
- 指定远程文件或耦合设备数据表中记录的最大长度(以字节为单位)。 指定的大小范围可以为 1 到 32767。
- 仅适用于耦合设施数据表
- 如果表格的文件定义指定了 LOAD(NO),则必须使用此值。如果指定了 LOAD(YES),也可以指定该属性(例如,为了方便在 LOAD(NO) 和 LOAD(YES) 之间切换文件定义)。 但是,如果指定 LOAD(YES),记录大小值必须与源数据集的记录大小值一致,否则 CICS 将无法打开表。 在三种情况下,CICS 可能会因为 LOAD(YES) 的记录大小不正确而检测到错误:
- 在打开表之前,CICS 会验证要加载耦合设备数据表的数据集的 VSAM 定义记录大小是否与文件定义中的大小(如果有)相同。 如果记录大小不同,CICS 将返回错误信息 DFHFC7081 。
- 文件定义的记录大小(如果已指定)与 VSAM 为数据集定义的记录大小相同,但在打开表时,CICS 发现表已加载了记录大小不同的数据。 这可能是因为数据是从与此文件定义指定的数据集不同的数据集加载的。 在这种情况下,CICS返回错误信息DFHFC7082。
- 正在打开的表的文件定义指定了记录大小,但没有指定数据集名称,因为该表是通过打开另一个文件加载的。 如果已创建表格,则打开指定不同记录大小的文件失败,显示信息 DFHFC7083。
为避免出现这些错误,请确保在引用同一耦合设备数据表的所有文件定义中,该属性的值在整个系统中都是相同的,或者在指定 LOAD(YES) 的文件中完全省略该属性。
如果为一个非远程文件或未引用 CFDT 的文件指定记录大小,除非该文件被重新定义为远程文件或引用耦合设备数据表,否则不会有任何影响。 但请注意,如果指定了记录大小,INQUIRE FILE 命令返回的值如下:- 如果文件已打开,CICS 将返回从 VSAM 获取的值,该值可能与文件定义中指定的值不同。
- 如果文件已关闭,CICS 将返回文件定义中指定的值。
注意:对于耦合设施数据表,如果能将记录大小控制在 63 字节或更小,那么由于耦合设施中记录的保存方式,性能将得到显著提高。
- RECOVERY( { 无 | 仅退出 | 全部 } )
- 指定文件所需的恢复类型。
如果文件是用 RLSACCESS(YES) 定义的,或者恢复选项是在 ICF 目录中定义的,则不使用此属性。 如果在 ICF 目录中定义了 LOG,CICS 会忽略 RECOVERY 选项,并从 ICF 目录中获取 LOG 值,即使是用 RLSACCESS(NO) 定义的文件也是如此。 如果在 ICF 目录中指定了 LOG(ALL),CICS 也会从 ICF 目录中获取 LOGSTREAMID 和 BWO 值。 要强制 CICS 使用此属性而不是目录中的恢复选项,请将 NONRLSRECOV 系统初始化参数设置为 FILEDEF。
对于以 RLS 模式访问的文件,必须通过 ICF 目录中的数据集定义来指定恢复参数。 有关详细信息,请参阅 将文件定义为可恢复资源)
对于使用源数据集定义的耦合设施数据表和用户维护表,ICF 目录中的任何恢复属性都会被忽略。 恢复属性是文件的属性,而不是相关数据集的属性。
对于耦合设施数据表,恢复属性必须在整个系统中引用同一耦合设施数据表的所有文件定义中相同。
- ALL
- 耦合设备数据表除外,它们自行管理恢复,不使用日志管理器或恢复管理器的服务、 在系统日志中记录图像之前,以及在 FWDRECOVLOG 属性指定的日志中记录图像之后。
写入 FWDRECOVLOG 的记录与可能设置的任何自动日志选项无关。
RECOVERY=ALL 与 FWDRECOVLOG 一起提供了一种将前向恢复实用程序的需求与自动日志记录的需求分开的方法。 FWDRECOVLOG 会记录自动日志无法提供的其他信息。 RECOVERY=ALL 加 FWDRECOVLOG 是提供前向恢复支持的首选方式。
使用 JREQ=(WU,WN) 和 JID=FCT 宏设置的现有前向恢复实用程序仍可通过这些设置使用。 与这些自动日志设置相对应的 RDO 设置是 JNLADD=BEFORE、JNLUPDATE=YES 和 JOURNAL 属性。
对于CICS维护的数据表,数据表及其源数据集将一起记录、日志和恢复。
对于用户维护的表,指定 ALL 与指定 BACKOUTONLY 的效果相同:只提供动态退出。 用户维护的表不支持前向恢复。
对于耦合设备数据表,不能指定 "全部"。
注意:为 VSAM ESDS 文件指定 ALL 时,CICS 无法执行 ADD 的后退。 为应对这种情况,代码用户应退出 XFCLDEL,以避免文件因错误而关闭。 - 返回
- 除耦合设施数据表外(耦合设施数据表自行管理恢复,不使用日志管理器或恢复管理器的服务),图像会在系统日志中记录。
对于 CICS 维护的数据表,BACKOUTONLY 指定数据表及其源数据集可恢复。 它们都会同步更新,并在必要时同步恢复。
对于用户维护的表,BACKOUTONLY 仅指定动态退出。 不写入日志记录,因此紧急重启时无法恢复。
对于耦合设备数据表,只有在使用 UPDATEMODEL(LOCKING) 定义耦合设备数据表时,才允许使用 BACKOUTONLY。 不能为 UPDATEMODEL(CONTENTION) 指定此属性。 指定 BACKOUTONLY 意味着耦合设备数据表是可 UOW 恢复的。 这意味着,如果工作单元发生故障,或者 CICS 或 CFDT 服务器在工作单元飞行过程中发生故障,或者 z/OS 发生故障,在工作单元内对 CFDT 所做的更新将被退回。
注意:如果为 VSAM ESDS 文件指定了 BACKOUTONLY,CICS 将无法执行 ADD 的回退。 为应对这种情况,代码用户应退出 XFCLDEL,以避免文件因错误而关闭。 - 无
- 该文件没有恢复日志。
- REMOTENAME(文件)
- 如果文件位于远程系统上,那么指定该文件在所在系统或区域中使用的名称。 该名称的最大长度为 8 个字符。 如果未指定 REMOTENAME,则使用 FILE 属性中给出的名称。可接受的字符:
A-Z 0-9 $ @ #
当代码页为 IBM-037时,有效字符将按其呈现方式列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
除非使用 CREATE 命令,否则输入的任何小写字符都会转换为大写。
如果指定远程名称,CICSPlex® SM 将文件分配给相关系统时会使用该名称。 如果指定了远程系统但没有指定远程名称,则目标系统和相关系统都会使用本地名称(即该文件定义的名称)。
- REMOTESYSTEM(连接)
- 指定文件所在远程系统的连接名称。
对于 IPIC 连接,REMOTESYSTEM 指定正在使用和获取的 IPCONN 定义中 IPCONN 名称的前 4 个字符。
对于 MRO 和 APPC 连接,REMOTESYSTEM 在连接定义中指定连接名称。
如果指定 REMOTESYSTEM,还可以提供 REMOTENAME,指定远程系统中的文件名。可接受的字符:A-Z 0-9 $ @ #
当代码页为 IBM-037时,有效字符将按其呈现方式列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
除非使用 CREATE 命令,否则输入的任何小写字符都会转换为大写。
注意: 如果将资源定义从 RLSACCESS(NO)修改为 RLSACCESS(YES),则必须删除远程系统名称。 否则,CICS 将继续运行船舶文件请求。 - RESSECNUM
- 该属性已过时,但仍受支持,用于提供与 CICS 较早发行版的兼容性。 有关更多信息,请参阅 过时属性。
- RLSACCESS( { 否 | 是 } )
- 指定 CICS 是否以 RLS 模式打开文件。
- 否
- 文件不能在 RLS 模式下打开。 如果指定 RLSACCESS(NO),或将其设为默认值,CICS 将根据 LSRPOOLNUM 属性以 LSR 或 NSR 访问模式打开文件。 如果同时指定 LSRPOOLNUM(NONE),则访问模式为 NSR;如果指定 LSRPOOLNUM(编号),则访问模式为 LSR。
- YES
- 文件将以 RLS 模式打开。 如果指定了 RLSACCESS(YES),它将优先于 LSRPOOLNUM 属性,后者在打开 FILE 时将被忽略。
指定 RLSACCESS(YES) 会改变 FILE 定义中定义的某些其他属性的效果,如 Table 1 所示。
表 1. RLSACCESS(YES) 对其他 FILE 属性的影响 属性 RLSACCESS(YES) 的效果 PASSWORD 被忽视。 LSRPOOLNUM 被忽视。 DSNSHARING 被忽视。 STRINGS 忽略;RLS 访问模式文件始终有 1024 个字符串。 remotesystem
remotename
recordsize
keylength这些属性的含义不变。 不过,本地和远程的双重 FILE 定义对于 RLS 访问模式文件来说价值不大。 使用 RLS 时,可能会有多个文件所有区域 (FOR),而不是一个,本地 CICS 区域可以选择多个 FOR。 数据库缓冲区
索引缓冲区被忽视。 TABLE 不允许使用 TABLE(CICS);如果指定,将发出错误消息。 允许使用 TABLE(USER) 或 TABLE(CF)。 在 RLS 模式下访问源数据集(如果有的话)以加载数据表,然后请求直接使用数据表服务访问数据表。 RECOVERY 被忽视。 恢复属性是从 RLS 文件的 ICF 目录中获取的。 FWDRCOVLOG 被忽视。 前向恢复日志流名称是从 RLS 文件的 ICF 目录中获取的。 BACKUPTYPE 被忽视。 备份类型由 RLS 的 DFSMSdss 备份实用程序决定。 注:- 只要文件是在 RLS 模式下打开的,就会忽略为 PASSWORD、LSRPOOLNUM、DSNSHARING、STRINGS、DATABUFFERS 和 INDEXBUFFERS 指定的任何值,如 表 1 所述。 但是,如果使用 CEMT 或 EXEC CICS SET FILE 命令将 RLSACCESS 的值从 "是 "改为 "否",这些值将不再被忽略,并且 CICS 将在关闭文件并以非 RLS 模式重新打开文件时使用这些值。
- CICS 总是从文件资源定义中获取 RLS 访问模式,因此无法使用 DD 语句上的 RLS=NRI 或 RLS=CR 参数覆盖该模式。
- STATUS( { 已启用 | 已禁用 | 未启用 } )
- 指定使用 START=COLD 或 START=INITIAL 进行 CICS 初始化后文件的初始状态。 您可以通过主终端交易 CEMT 更改已关闭文件的状态。 重新启动 CICS 后,文件的状态(ENABLED、DISABLED 或 UNENABLED)将恢复到上次关机时的状态。
- DISABLED
- 命令级应用程序对该文件的任何请求都会将 DISABLED 条件传递给程序。
- 已启用
- 允许对该文件进行正常处理。
- UNENABLED
- 这样可以防止应用程序通过隐式打开方式打开文件。 按此方式访问文件都会遇到 NOTOPEN 情况。 相比较而言,打开文件的明确请求(例如,CEMT 或 EXEC CICS SET FILE OPEN 命令)会在尝试打开文件之前,将状态更改为 ENABLED。
对于由 CICS bundle 动态生成的 FILE 资源,该属性将被忽略。 FILE 资源的初始状态来自定义该资源的捆绑包的初始状态。
- STRINGS( { 1 | 值 } )
- 指定可对文件处理的并发请求数,范围在 1 到 255 之间。 当请求数达到此值时,CICS 会排队等待其他请求,直到其中一个活动请求终止。 这既适用于使用共享资源的文件,也适用于不使用共享资源的文件。 请注意,如果文件定义指定了 RLSACCESS(YES),则 STRINGS 值将被忽略;使用 RLS 模式访问时,将始终获得 1024 个字符串。对于使用本地共享资源的文件,VSAM 不会使用该编号。 CICS使用它,不仅如此处所述,还用于计算缓冲池定义中的默认值。注:
- 在选择 STRINGS 值时,请注意 CICS 会保留指定字符串数的一部分(20%),供只读请求使用
- 为 ESDS 选择 STRINGS 值时,请考虑以下几点:
- 如果 ESDS 用作 "仅添加 "文件(即仅在写模式下使用),则必须使用 1 的字符串编号。 任何大于 1 的字符串数字都会严重影响性能,因为当多个任务同时尝试向 ESDS 写入数据时,会发生排他性控制冲突。
- 如果一个 ESDS 同时用于写入和读取,写入占 80% 的活动,那么最好定义两个文件定义--一个文件用于写入,另一个用于读取。
- 对于用户维护的数据表和耦合设施数据表,STRINGS 值不限制表的并发请求数。 不过,在加载用户维护的表时,该值确实会限制并发请求的数量。
- 对于 CICS 维护的数据表,STRINGS 值限制了更新表的并发请求数。 它不限制并发只读请求的数量。
- TABLE( { 否 | CICS | 用户 | CF } )
- 指定所需的数据表类型。
- CF
- 耦合设施数据表 (CFDT)。 它仍然独立于源数据集,如果有源数据集的话,表的更改不会反映在相应的源数据集中。 对于 CFDT 而言,源数据集是可选项,由文件定义中的 LOAD(YES) 指定。如果指定 CF,请同时指定:
- CFDTPOOL,提供表格所在的耦合设备池名称
- LOAD,用于指定是否从源数据集加载表(或默认为 "否")
- UPDATEMODEL 用于指定表格使用 CONTENTION 还是 LOCKING 更新模式(或者默认为 LOCKING)
- RECORDFORMAT 为 V(或默认为 V)
- MAXNUMRECS 的值。
耦合设备数据表需要耦合设备数据表服务器。 有关如何启动耦合设备数据表服务器的信息,请参阅 设置和运行耦合设备数据表服务器。
- CICS
- 由 CICS 维护的数据表。 这将自动反映源数据集中对表格所做的所有修改。 如果指定 CICS,还应指定:
- LSRPOOLNUM 值为 1 至 255
- MAXNUMRECS 的值。
- 否
- 不需要数据表。
- USER
- 用户维护的表格。 它仍然独立于源数据集,用户维护表的更改不会反映在相应的源数据集中。 如果指定 USER,请同时指定:
- LSRPOOLNUM 值为 1 至 255
- RECORDFORMAT 为 VARIABLE(或默认为 VARIABLE)
- MAXNUMRECS 的值。
- TABLENAME( cfdt )
- 指定通过此文件定义访问的耦合设备数据表的名称。 该名称的最大长度为 8 个字符。可接受的字符:
A-Z 0-9 $ @ #
当代码页为 IBM-037时,有效字符将按其呈现方式列出。 如果使用不同的 EBCDIC 代码页,请注意 变体角色 中记录的变体字符。
除非使用 CREATE 命令,否则输入的任何小写字符都会转换为大写。
如果在指定 TABLE(CF) 时省略此属性,则默认使用为 FILE 指定的名称。 要使 CICS 区域共享耦合设备数据表,安装在每个区域的文件定义必须指定相同的 CFDTPOOL 名称和 TABLENAME(或在不使用 TABLENAME 时指定 FILE 名称)。 TABLENAME 只需在其库中是唯一的。
请注意,表名不仅是表的标识符,还在安全检查中用作资源名称。
该属性仅对使用 TABLE(CF) 属性定义的文件有效。 您可以为文件指定未定义为 TABLE(CF) 的表名,但 CICS 会忽略它。 如果更改文件定义以引用耦合设备数据表,则 TABLENAME 属性生效。
- UPDATE( { 否 | 是 } )
- 指定该文件上的记录是否可更新。
- UPDATEMODEL({LOCKING|CONTENTION})
- 指定耦合设备数据表使用的更新模型类型。
- Locking
- 指定使用锁定模型更新 CFDT。 这意味着记录在被读取更新时会被锁定,在更新请求完成之前,其他工作单元无法更改记录。 对于可恢复表,更新请求在同步点完成。 对于不可恢复的表,更新请求在 REWRITE、DELETE 或 UNLOCK 命令完成时完成。 对于指定 TABLE(CF) 的文件,LOCKING 是默认设置。 利用 LOCKING 模型,CFDT 可定义为
- 不可恢复,这意味着如果某个工作单元失败,CFDT 更新不会后退,并且锁仅在请求持续时间内保持。 通过指定 RECOVERY(NONE),可以指定 CFDT 不可恢复。
- 可恢复,或 UOW-可恢复,这意味着如果工作单元发生故障,或如果 CICS 或 CFDT 服务器在工作单元飞行过程中发生故障,或如果 z/OS 发生故障,在工作单元内对 CFDT 所做的更新将被退回。 您可以通过指定 RECOVERY(BACKOUTONLY) 来指定 CFDT 是可恢复的。
使用锁定模型的可恢复 CFDT 类似于可恢复文件或数据集,只是它不会在其所在的耦合设施发生故障后继续存在。 耦合设备数据表没有前向恢复功能。
- CONTENTION
- 指定使用竞争模型更新 CFDT。 这意味着记录在被读取更新时不会被锁定。 如果记录在读取更新后被其他任务更改或删除,则在随后的 REWRITE 或 DELETE 中会返回错误信息。 CFDT 必须是不可恢复的(RECOVERY(NONE)),也就是说,如果工作单元发生故障,更新不会被退回。
在引用同一耦合设备数据表的所有文件定义中,该属性的值在整个系统中必须相同。
该属性仅对使用 TABLE(CF) 属性定义的文件有效。 您可以为未定义为 TABLE(CF) 的文件指定更新模型,但 CICS 会忽略它。 如果更改文件定义以引用耦合设备数据表,则 UPDATEMODEL 属性生效。
