RESP 和 RESP2 选项
您可以将 RESP 选项用于任意命令,以测试在该命令执行期间是否引发了某个条件。 当某个条件可能由于多个原因引发时,如果您已指定 RESP,那么可以通过一些命令,使用 RESP2 选项来精确确定出现该条件的原因。
- RESP (xxx)
- xxx 是用户定义的全字二进制数据区。 从命令返回时,它包含与可能引发的条件或正常返回 (即 xxx = DFHRESP (NORMAL)) 相对应的值。 您可以通过 DFHRESP 测试此值,如下所示:
EXEC CICS WRITEQ TS FROM(abc) QUEUE(qname) NOSUSPEND RESP(xxx) RESP2(yyy) . . IF xxx=DFHRESP(NOSPACE) THEN ...此格式的 DFHRESP 同时适用于 COBOL 和 PL/I。
以下示例是 C 中的类似测试:switch (xxx) { case DFHRESP(NORMAL) : break; case DFHRESP(INVREQ) : Invreq_Cond(); break; default : Errors(); }以下示例是汇编语言中的类似测试:CLC xxx,DFHRESP(NOSPACE)转换程序将此代码更改为:CLC xxx,=F'18'因为 RESP 的使用意味着 NOHANDLE ,所以在将 RESP 与 RECEIVE 命令配合使用时请小心。 NOHANDLE 覆盖了 HANDLE AID 和 HANDLE CONDITION 命令,结果将忽略 PF 键响应。
- RESP2 (yyy)
- yyy 是用户定义的全字二进制数据区。 从命令返回时,它包含进一步限定对特定命令的响应的值。 与 RESP 值不同, RESP2 值没有关联的符号名称,并且没有对应于 DFHRESP 的转换程序内置函数,因此您必须测试全字二进制值本身。