RETURN
返回程序控制。
描述
RETURN 将控制权从应用程序返回到下一个更高逻辑级别的应用程序,或者返回到 CICS ®。
返回通信区 (COMMAREA) 时, LENGTH 选项指定要传递的数据的长度。 要传递的 LENGTH 值不得大于 COMMAREA 选项中指定的数据区的长度。 如果是,那么结果不可预测,并且可能导致 LENGERR 条件,如 将数据传递到其他程序中有关将数据传递到其他程序的部分中所述。
COMMAREA 长度的有效范围是 0 到 32 763 字节。 如果提供的长度超出此范围,那么将发生 LENGERR 条件。
仅当 RETURN 命令将控制权返回给 CICS 时,才能使用 COMMAREA , IMMEDIATE 和 CHANNEL 选项; 否则,将发生 INVREQ 情况。
在 RETURN TRANSID 命令上不进行资源安全性检查。 但是,当 CICS 连接返回的事务时,事务安全性检查仍可用。
选项
- CHANNEL (名称)
- 指定要提供给下一个接收控制的程序的通道的名称 (1-16 个字符)。 The acceptable characters are A-Z a-z 0-9 $ @ # / % & ? ! : | " = ¬ , ; < > . - and _. Leading and embedded blank characters are not permitted. 如果提供的名称少于 16 个字符,那么将使用最多 16 个字符的尾部空格来填充该名称。 如果通道不存在,那么将创建该通道。 此新通道将保留在作用域中,直到链接级别发生更改为止。 有关通道作用域的更多信息,请参阅 通道作用域。
通道名称始终采用 EBCDIC。 上面列出的通道名称所允许的字符集包括在所有 EBCDIC 代码页中不具有相同表示的一些字符。 We therefore recommend that, if a channel is to be shipped between regions (that is, if the transaction named on the TRANSID option is remote), the characters used in naming it should be restricted to A-Z 阿兹 0-9 & : = , ; < > . - and _.
可以指定通道名称 DFHTRANSACTION 以使用事务通道。 当链路级别发生更改时,事务通道不会超出作用域: 在事务中始终可访问该通道。 有关更多信息,请参阅 通道和容器。
发出 RETURN 命令的程序可以执行下列其中一项操作:- 已通过一个或多个 PUT CONTAINER CHANNEL 命令创建通道
- 按名称指定其当前通道
- 命名不存在的通道,在这种情况下,将创建新的空通道
此选项仅在程序在最高逻辑级别 (即,将控制权返回给 CICS 的程序) 发出的 RETURN 命令上有效。
- COMMAREA (数据区)
- 指定要提供给接收控制的下一个程序的通信区域。 在 COBOL 接收程序中,必须为此数据区指定名称 DFHCOMMAREA。 请参阅 跨事务共享数据 ,以获取有关 CICS COMMAREA 的更多信息。 因为在下一个程序启动之前会释放数据区,所以会创建数据区的副本并传递指向该副本的指针。
将指定的通信区域传递到在终端上运行的下一个程序。 要确保将通信区域传递到正确的程序,请包含 IMMEDIATE 选项。
此选项仅在程序在最高逻辑级别 (即,将控制权返回给 CICS 的程序) 发出的 RETURN 命令上有效。
- 结束活动
- 此选项供实施 CICS 业务事务服务 (BTS) 活动的程序使用。 它指定当前活动正在完成,并且不会重新激活。
如果活动的事件池中没有用户事件,那么活动将正常完成。
如果活动的事件池中存在用户事件 (已触发或未触发):- 如果一个或多个事件是活动完成事件,那么该活动将异常终止。 尝试强制活动在处理其一个或多个子活动之前完成是程序逻辑错误。
- 如果没有任何事件是活动完成事件,那么将删除这些事件并正常完成活动。
有关一般 BTS 和 ENDACTIVITY 选项的信息,请参阅 活动完成。
在 CICS BTS 环境外部将忽略此选项。
- IMMEDIATE
- 确保将 TRANSID 选项中指定的事务作为下一个事务连接,而不考虑 ATI 为此终端排队的任何其他事务。 下一个事务立即启动,并对操作员显示为已由终端数据启动。 如果终端正在使用支架协议,那么终端也将被保持在支架中。 此选项仅在由最高逻辑级别的程序 (即向 CICS 返回控制权的程序) 发出的 RETURN 命令上有效。
请注意,在多区域环境中,使用 IMMEDIATE 不会影响事务定义,因为仍在终端拥有区域 (TOR) 中找到此定义。
- INPUTMSG (数据区)
- 指定要传递到另一个事务 (由 TRANSID 选项标识) 或多程序事务中的调用程序的数据。 当您可能想要修改初始输入时,还可以在从用户编写的动态事务路由程序向 CICS 返回控制权时使用 INPUTMSG。
在所有情况下, INPUTMSG 数据区中的数据将传递到第一个程序以在 RETURN 之后发出 RECEIVE 命令。
有关使用 INPUTMSG 的更多信息和插图,请参阅 INPUTMSG 。
- INPUTMSGLEN (data-value)
- 指定要与 INPUTMSG 配合使用的半字二进制值。
- LENGTH (data-value)
- 指定半字二进制值,该值是 COMMAREA 的长度 (以字节计)。 有关安全上限的描述,请参阅 CICS 命令中的 LENGTH 选项。
- TRANSID (名称)
- 指定要与从与发出 RETURN 命令的任务相关联的终端输入的下一条输入消息一起使用的事务标识 (1-4 个字符)。 指定的名称必须已定义为 CICS 的事务。
如果为在使用永久事务标识定义的终端上运行的程序指定了 TRANSID ,那么将启动该终端的永久事务,而不是在 RETURN 上指定的事务。
如果指定二进制零的 TRANSID ,那么可从终端的后续输入确定要与终端关联的下一个程序的事务标识。 如果未对下一个事务进行编码以处理 COMMAREA ,或者如果它接收到不适用于它的 COMMAREA ,那么发出带有 TRANSID 二进制零和 COMMAREA 的 RETURN 可能会导致不可预测的结果。
如果在未处于最高级别的程序上指定 TRANSID ,并且在最终 RETURN 上的 COMMIT , INPUTMSG 或 CHANNEL 上存在后续错误,那么将清除 TRANSID。
在事务异常终止时,还会清除下一个事务标识。
如果使用此选项指定了 IMMEDIATE ,那么控制权将传递到 TRANSID 选项中指定的事务,优先于 ATI 排队的任何事务。
如果未使用此选项指定 IMMEDIATE ,那么 ATI 启动的同名事务将排队到终端,这将使此选项无效。
如果发出 RETURN 命令的事务未与终端关联,或与 APPC 逻辑单元关联,那么此选项无效。
条件
- 122 CHANNELERR
- RESP2 值:
- 1
- CHANNEL 选项上指定的名称包含非法字符或字符组合。
- 16 INVREQ
- RESP2 值:
- 1
- 在未与终端关联的程序中发出带有 TRANSID 选项的 RETURN 命令。
- 2
- 带有 通道, COMMIT 或 IMMEDIATE 选项的 RETURN 命令由不在最高逻辑级别的程序发出。
- 4
- 在与 APPC 逻辑单元相关联的程序中发出带有 TRANSID 选项的 RETURN 命令。
- 8
- 对未与终端关联的程序或与 APPC 逻辑单元或 IRC 会话关联的程序发出带有 INPUTMSG 选项的 RETURN 命令。
- 30
- PG 域未初始化。 在第一阶段 PLT 程序中的 EXEC RETURN 语句上不允许使用参数。
- 200
- 由 DPL 调用的程序发出带有 INPUTMSG 选项的 RETURN 命令。
- 203
- 指定了 CHANNEL 选项,但返回控制的远程区域不支持通道。
缺省操作: 异常终止任务。
- 22 LENGERR
- RESP2 值:
- 11
- COMMAREA 长度小于 0 或大于 32763。
- 26 日
- 传递的 COMMAREA ADDRESS 为零,但 commarea 长度为非零。
- 27 日
- INPUTMSG LENGTH 小于 0 或大于 32767。
缺省操作: 异常终止任务。
