RECEIVE
接收来自已完成的异步请求的输出。
警告系统命令功能强大,可提供有关系统状态的信息,并允许对系统进行更改。 系统命令只能由授权应用程序和用户使用。
通过指定 XCMD 系统初始化参数并确保事务的命令安全检查处于激活状态(在 TRANSACTION 资源定义中指定 CMDSEC(YES) 或在 CMDSEC 系统初始化参数中指定 ALWAYS),激活命令安全检查。
描述
此命令接收与处理线程关联的已完成异步请求的输出。
- 如果先前发出了 LISTEN 命令或其中一个带有 NOWAIT 选项的命令,那么可能会产生异步输出:
- GET
- PERFORM OBJECT
- PERFORM SET
- REFRESH
- SET
- 要确定是否有任何要接收的异步输出,请发出 ADDRESS 命令并在发出 RECEIVE 命令之前检查 SENTINEL 值。
- API 处理线程一次最多可以有 256 个未完成的已完成异步请求。 如果不定期发出 RECEIVE 命令,并且处理线程达到其最大值 256 ,那么将废弃异步请求并且不会对其进行处理。 有关异步处理的完整描述,请参阅 CICSPlex SM API 概述。
相关命令
- ADDRESS
- GET
- LISTEN
- PERFORM OBJECT
- PERFORM SET
- REFRESH
- SET
选项
- DELAY(数据值)
- 指定发出 RECEIVE 命令时,如果没有可用的输出,那么处理将等待的秒数。 在指定的秒数结束时,控制将返回到处理线程,无论是否有任何输出变为可用。 如果在延迟期间输出变为可用,那么控制将返回到处理线程。 如果输出立即可用,那么没有延迟; 控制会立即返回到处理线程。
DELAY 必须指定非零值。 如果要确保程序从不进入等待,请使用 IMMEDIATE 选项而不是 DELAY。
- IMMEDIATE
- 立即将控制权返回给处理线程,无论是否有任何输出可用。
- INTO(数据区)
- 标识用于接收异步输出的缓冲区 (如果有任何可用于此线程的缓冲区)。 此缓冲区的长度必须足以容纳正在接收的所有输出。返回的输出可以是:
- 表示先前 LISTEN 命令中指定的事件的资源表记录
- ASYNCREQ 资源表记录表示异步 GET, PERFORM, REFRESH或 SET 请求的完成。
- LENGTH(数据引用)
- 指定 INTO 缓冲区长度的全字值。
操作完成后,此字段将设置为 INTO 缓冲区中返回的数据的实际长度。 如果由于缓冲区不够长而无法完成操作,那么此字段将设置为所需的长度。
- OBJECT(数据引用)
- 指定用于接收资源表名称的变量 (如果输出可用于此线程)。
- REASON(数据引用)
- 指定变量以接收此命令返回的全字原因值。
- RESPONSE(数据引用)
- 指定一个变量以接收此命令返回的全字响应值。
- 主题 (cpsm-令牌)
- 标识要用于此操作的 API 线程。 标识线程的 cpsm-token 值由 CONNECT 命令返回。
- WAIT
- 等待异步输出变为可用,然后再将控制权返回给处理线程。注: WAIT 选项无限期地等待异步输出。 在发出 RECEIVE之前,请确保通过发出 ADDRESS 命令来验证是否存在未完成的异步请求。
- TOKEN(数据引用)
- 指定一个变量以接收与异步输出关联的用户定义的令牌。 此值是您在生成输出的 GET, LISTEN, PERFORM, REFRESH 或 SET 命令上定义的令牌。
条件
以下是可由 RECEIVE 命令返回的 RESPONSE 值的列表。 每个 RESPONSE 的描述都包含关联的 REASON 值的列表 (如果适用)。
- 1024 正常
- 该命令已成功完成处理。
- 1027 无数据
- 没有要接收的数据。
- 1028 无效参数
- 检测到无效参数。 将返回无效的参数作为原因值:
- 1280 线程
- 1281 对象
- 1285 长度
- 1291 延迟
- 1298 INTO
- 1306 令牌
请检查命令描述以获取有效的参数语法。
- 1029 失败
- 由于下列其中一个原因,该命令失败:
- 1331 异常终止
- 命令处理异常结束。
- 1359 异常
- 命令处理迂到异常情况。
- 1030 发生了错误
- 由于下列其中一个原因,发生了环境错误:
- 1321 社会资源
- CMAS 拥有的必需资源不可用。
- 1357 无存储器
- 应用程序存根程序无法在正在运行处理线程的地址空间中获取必需的存储器。
- 1358 无服务
- 应用程序存根程序无法装入 API 服务模块。
- 1033 服务器 GONE
- 处理线程所连接的 CMAS 不再处于活动状态。
- 1034 不可用
- 由于下列其中一个原因,发生了不可用的情况:
- 1334 CPSMAPI
- 处理线程所连接的 CMAS 不可用于 API 处理。
- 1340 APITASK
- API 控制子任务未处于活动状态。
- 1035 版本 INVL
- 由于下列其中一个原因,发生了版本冲突:
- 1335 不支持
- 不支持用于此命令的应用程序存根程序的版本。
- 1336 notvsnconn
- 用于此命令的应用程序存根程序的版本与用于 CONNECT 命令的版本不同。
- 1037 警告
- 由于以下原因,该命令已完成处理,但有警告:
- 1344 areatoosmall
- INTO 缓冲区的长度不足以保存请求的记录数和可用记录数。
