Abend ASRA。如何处理这个问题

时间:2012-04-21 07:42:25

标签: db2 call cobol cics

我的地图有两个输入字段,数据类型为X(6),9(8) 我将这两个值存储在我的cobol-cics程序中的以下变量中。

01 SCREEN-DATA.        
05 ACTNUM PIC X(6). 
05 AMOUNT PIC 9(8). 

现在我将这两个值传递给cobol-db2程序:

CALL UPDATEPROG USING ACTNUM,AMOUNT.

在我的更新计划中:

LINKAGE SECTION.                                                 
01 DEPOSITPARAMS.                                                
05 ACTNUM PIC X(6).                                           
05 AMOUNT PIC 9(8).                                           
PROCEDURE DIVISION USING DEPOSITPARAMS.                          
MOVE ACTNUM TO ACCOUNT-NUMBER.

其中ACCOUNT-NUMBER是我创建的表的主变量。 它运行程序很好,但在我的地图中,当我输入细节并按下回车时,我得到一个异常终止。当我给出一些静态值,如:MOVE 071250 to ACCOUNT-NUMBER。它工作正常,我能够更新,使用查询从表中检索值。这可能是导致此异常终止的原因。请帮我解决这个问题

这些是我在DCLGEN中创建的主变量

01  DCLACCOUNT-MASTER.                            
10 ACCOUNT-NUMBER       PIC X(6).                   
10 ACCOUNT-HOLDER       PIC X(20).                  
10 ACCOUNT-BALANCE      PIC S9(8)V9(2) USAGE COMP-3.
10 LAST-UPDT-DATE       PIC X(10).                  
10 OPENNING-DATE        PIC X(10).     

我做的另一个观察是,无论我在哪里使用ACTNUM变量,即连接部分变量。我正在异常

3 个答案:

答案 0 :(得分:4)

我猜您的异常代码是ASRA

查看核心转储,如果已使用TEST选项进行编译,则应该有一个格式化转储,显示工作存储,本地存储和链接部分变量及其值。我怀疑您的AMOUNT字段中包含非数字值。

在CICS中,写入CESE瞬态数据队列的核心转储,通常由CICS Systems Programmer映射到CICS区域的CEEMSG DD。在CEE3845上查找以找到核心转储的顶部,这是语言环境消息的消息ID,其中包含错误的详细描述并导致异常终止。

答案 1 :(得分:1)

验证您阅读地图的区域的COBOL定义是否与地图返回的区域实际匹配。我建议运行CEDF并仔细查看READ MAP在呼叫返回时填充的区域。我怀疑你会发现不匹配。

答案 2 :(得分:0)

在您的代码中,添加以下内容:

LINKAGE SECTION。
01 DEPOSITPARAMS。
    05 LINKAGE-REF S9(4)COMP-3。

05 ACTNUM PIC X(6)。
   05 AMOUNT PIC 9(8)。