0

我有一个 cobol 批处理程序,它使用 CICS LINK 通过 EXCI 调用 CICS 程序。CICS 程序调用 Web 服务并将结果解析为一个副本,然后在 LINKAGE SECTION 的 commarea 中传回该副本。

一切似乎工作正常,批处理程序需要的数据在那里,但是当检查 EXCI 响应代码时,我有一个 ASRA 异常终止。CICS 日志报告以下内容

DFHAC2236 Transaction CSMI abend ASRA in program IOCCBR term RG1. Updates to local  recoverable
 resources will be backed out.

我总体上研究了 DFH*** 代码和 ASRA,但没有找到答案。转储不是公司的常见做法,但我确实有可用的异常终止助手。

EXEC CICS LINK PROGRAM('IOCCBR')    
  APPLID('PRODAOR1')                
  LENGTH(LENGTH OF WS-COMMAREA)     
  COMMAREA(WS-COMMAREA)             
  RETCODE(WS-EXCI-EXEC-RETURN-CODE) 
  SYNCONRETURN                      
END-EXEC.                           

任何想法将不胜感激。谢谢

4

2 回答 2

0

我相信您必须在 LINK 中同时指定 PROGRAM 和 TRANSID,并且必须将指定的 TRANSID 定义为 CICS 作为执行 DFHMIRS,PROGRAM 是您要执行的程序。

于 2013-08-21T16:53:04.843 回答
0

吸取的教训,批处理程序是由其他人编写的,批处理的逗号小于 cics 程序返回的值。

我的同事的 commarea 为 108,刚好可以传递字帖信息,我的 CICS 程序的 LINKAGE SECTION commarea 为 2750,因为我重用了另一个 EXCI/INVOKE WEBSERVICE 程序的代码。我相信这就是为什么它在返回时异常但数据在那里,我正确填写了 108 个字节,但它无法处理在他的 WS commarea 中插入的额外 2642 个字节

于 2013-08-21T20:02:40.693 回答