GET64 CONTAINER
将数据从指定的通道容器检索到 64 位存储器中。 此命令仅供在非语言环境 (LE) AMODE(64) 汇编语言应用程序中使用。 不支持 CICS ® 业务事务服务 (BTS) 容器。
请参阅 汇编程序语言编程限制和要求。
描述
GET64 CONTAINER 将与指定通道容器关联的数据读取到 64 位存储器中。
保存数据的容器由名称以及作为其容器的通道 (即 拥有
数据的通道) 标识。 可以通过指定 CHANNEL 选项来显式地标识拥有容器的通道,也可以通过省略 CHANNEL 选项来隐式地标识该通道。 省略此选项时,将隐含当前通道。
选项
- BYTEOFFSET (data-value)
- 指定返回的数据在其中开始的偏移量 (以字节为单位)。 对于 CHAR 容器, BYTEOFFSET 值用作所请求代码页中数据的偏移量。 如果使用具有多字节字符的代码页,那么根据您指定的 BYTEOFFSET 值,返回的数据可能在开头和/或结尾具有部分字符。 在这种情况下,应用程序必须能够处理和解释返回的数据。 如果指定的值小于零,那么假定为零。
- CCSID (data-area)
- 返回包含 CONVERTST (NOCONVERT) 选项返回的数据的编码字符集标识 (CCSID) 的全字。 可以使用此选项来检索 DATATYPE 为 CHAR 的容器,而不转换数据。 如果为容器指定了 DATATYPE BIT ,那么此值为零。
- CHANNEL (data-value)
- 指定拥有容器的通道的名称 (1-16 个字符)。 您可以指定通道名称 DFHTRANSACTION 以使用事务通道。
- CONTAINER (data-value)
- 指定保存要检索的数据的容器的名称 (1-16 个字符)。
- CONVERTST (cvda)
- 指定所需的数据转换状态。
- 无转换
- 将检索容器数据而不进行转换。 如果使用 WEB RECEIVE 命令将 HTTP 主体存储在容器中,并且需要从该容器中检索未转换的主体,那么必须使用 NOCONVERT 选项。
- FLENGTH (data-area)
- 作为输入字段, FLENGTH 以全字二进制值的形式指定要读取的数据的长度。 作为输出字段, FLENGTH 返回容器中数据的长度。 FLENGTH 是输入或输出字段,具体取决于您指定的 BYTEOFFSET , INTO , SET 或 NODATA 选项。
- 指定了 BYTEOFFSET 选项
- FLENGTH 既是输入字段又是输出字段。
在 输入上, FLENGTH 指定程序接受的数据的最大长度。 返回的数据从 BYTEOFFSET 值指定的偏移量开始。 如果指定的值小于零,那么假定为零。
在 输出 (即,完成检索操作时) 上, CICS 将数据区设置为返回数据的长度。 返回的最大长度等于容器中数据的长度减去 BYTEOFFSET 值。
- 指定了 INTO 选项
- FLENGTH 既是输入字段又是输出字段。
在 输入上, FLENGTH 指定程序接受的数据的最大长度。 如果指定的值小于零,那么假定为零。 如果数据的长度超过指定的值,那么会将数据截断为该值,并且会出现 LENGERR 条件。 如果数据长度小于指定值,那么将复制数据,但不会执行任何填充。
如果长度可以由编译器从 INTO 变量生成,那么不需要指定 FLENGTH。 如果同时指定 INTO 和 FLENGTH ,那么 FLENGTH 指定程序接受的数据的最大长度。
在 输出 上 (即,完成检索操作时) , CICS 会将数据区 (如果指定) 设置为容器中数据的实际长度。 如果容器包含已从一个 CCSID 转换为另一个 CCSID 的字符数据,那么这是转换后数据的长度。
- 指定了 SET 或 NODATA 选项
- FLENGTH 是仅输出字段。 它必须存在并且必须指定为数据区。
完成检索操作后,会将数据区设置为容器中数据的实际长度。 如果容器包含已从一个 CCSID 转换为另一个 CCSID 的字符数据,那么这是转换后数据的长度。
- INTO (data-area64)
- 指定要将检索到的数据放入其中的 64 位数据区。 data-area64 是指由 64 位指针引用并且可以位于 64 位 (高于条形) 存储器中的区域。
- INTOCCSID (data-value)
- 指定将容器中的字符数据转换为全字二进制数的编码字符集标识 (CCSID)。 如果您希望为代码页指定 IANA 名称,或者如果您希望将 CCSID 指定为字母数字字符,请改为使用 INTOCODEPAGE 选项。
对于 CICS Transaction Server for z/OS®应用程序, CCSID 通常是 EBCDIC CCSID。 但是,如果您希望检索 ASCII 数据而不将其自动转换为 EBCDIC ,那么可以指定 ASCII CCSID。
如果未指定 INTOCCSID 和 INTOCODEPAGE ,那么转换的值缺省为区域的 CCSID。 在 LOCALCCSID 系统初始化参数上指定区域的缺省 CCSID。
只能转换字符数据,仅当在用于将数据放在容器中的 PUT CONTAINER 或 PUT64 CONTAINER 命令上指定了 CHAR 的 DATATYPE 时,才可以转换字符数据。 如果在 PUT CONTAINER 或 PUT64 CONTAINER 命令上指定了 FROMCCSID 或 FROMCODEPAGE ,那么表示 DATATYPE 为 CHAR。
有关使用通道进行数据转换的更多信息,请参阅 使用通道进行数据转换。
有关 CCSID 的说明,请参阅 准备使用通道进行代码页转换。
- INTOCODEPAGE (data-value)
- 指定 IANA 注册的字母数字字符集名称或编码字符集标识 (CCSID) ,用于将容器中的字符数据转换为的代码页,最多使用 40 个字母数字字符,包括相应的标点符号。 如果您希望使用 HTTP 请求的 Content-Type 头中指定的 IANA 注册字符集名称,请使用此选项而不是 CCSID 选项。 CICS 将 IANA 名称转换为 CCSID ,并且后续数据转换过程完全相同。 如果您更希望以字母数字字符 (而不是全字二进制数) 指定 CCSID ,那么也请使用此选项。
如果存在代码页的 IANA 名称,并且 CICS 支持使用该名称,那么该名称将与 CCSID 一起列出。 有关更多信息,请参阅 准备使用通道进行代码页转换。
- NODATA
- 指定不检索任何数据。 使用此选项可发现容器中数据的长度 (以 FLENGTH 格式返回)。
如果进行数据转换,那么字符数据的长度可能会更改。 因此,如果要将字符数据转换为任何 CCSID 而不是此区域的 CCSID,那么当您指定 NODATA 时,还应该指定 INTOCCSID。 这将确保在 FLENGTH 中返回正确的已转换数据长度。
- SET (ptr-ref64)
- 指定返回检索数据的 64 位地址的 64 位指针引用。 此指针始终引用 64 位 (高于条形) 存储器。CICS 将维护数据区,直到发生以下任何情况为止:
- 对于同一通道中的同一容器,可访问此存储器的任何程序都会发出带有 SET 选项的后续 GET CONTAINER 或 GET64 CONTAINER 命令。
- 容器由 DELETE CONTAINER 命令删除。
- 容器由 MOVE CONTAINER 命令移动。
- 通道超出程序作用域。
- 通道以及其中的容器将由 DELETE CHANNEL 命令删除。
请勿发出 FREEMAIN64 命令以释放此存储器。
如果应用程序需要保留数据,那么应将其移动到自己的存储器中。
条件
- 123 CCSIDERR
- RESP2 值:
- 1
- 在 INTOCCSID 选项上指定的 CCSID 超出有效 CCSID 值的范围。
- 2
- 在 INTOCCSID 选项上指定的 CCSID 和容器的 CCSID 是不受支持的组合。 (容器的 CCSID 是在构建容器时使用 FROMCODEPAGE 或 FROMCCSID 或缺省值指定的值。)
- 3
- 已创建数据类型为 BIT 的数据。 无法进行代码页转换。 返回数据时未进行任何代码页转换。
- 4
- 无法转换一个或多个字符。 在转换后的数据中,字符已被空格替换。
- 5
- 在容器的代码页转换中发生内部错误。
- 122 CHANNELERR
- RESP2 值:
- 2
- 找不到在 CHANNEL 选项上指定的通道。
- 125 CODEPAGEERR
- RESP2 值:
- 1
- 不支持在 INTOCODEPAGE 选项上指定的代码页。
- 2
- 在 INTOCODEPAGE 选项上指定的代码页与通道的代码页是不受支持的组合。
- 3
- 数据是使用数据类型 BIT 创建的。 无法进行代码页转换。 返回数据时未进行任何代码页转换。
- 4
- 无法转换一个或多个字符。 在转换后的数据中,字符已被空格替换。
- 5
- 在容器的代码页转换中发生内部错误。
- 110 CONTAINERERR
- RESP2 值:
- 10
- 找不到 CONTAINER 选项上指定的容器。
- 16 INVREQ
- RESP2 值:
- 2
- 指定了 INTOCCSID 选项,但未指定 CHANNEL 选项,并且没有当前通道 (因为发出该命令的程序未传递一个)。 INTOCCSID 仅在指定 (显式或隐式) 通道的 GET64 CONTAINER 命令上有效。
- 4
- 未指定 CHANNEL 选项,并且没有当前通道 (因为发出该命令的程序未传递一个)。
- 5
- CONVERTST cvda 值无效。
- 22 LENGERR
- RESP2 值:
- 11
- 程序区域的长度比容器中数据的长度短。 当面积较小时,数据将被截断以适应其中。
- 12 个月
- 偏移量大于或等于容器的长度。
