【问题标题】:CICS Transaction failed with abend U4038CICS 事务失败,异常终止 U4038
【发布时间】:2022-01-10 06:05:22
【问题描述】:

这是 CICS COBOL 程序:-

IDENTIFICATION DIVISION.            
PROGRAM-ID. ELECPRG.                
ENVIRONMENT DIVISION.               
INPUT-OUTPUT SECTION.               
  FILE-CONTROL.                     
    SELECT INFL ASSIGN TO INFLDD    
    ORGANIZATION IS LINE SEQUENTIAL 
    ACCESS MODE IS SEQUENTIAL       
    FILE STATUS IS FS.              
DATA DIVISION.                      
FILE SECTION.                       
FD INFL.                            
01 ELEC-REC.                        
    05 P-NUM PIC X(5).              
    05 FILLER PIC X(1).             
    05 C-NAME PIC X(10).            
         05 FILLER PIC X(1).                           
     05 C-UNIT PIC X(4).                           
 WORKING-STORAGE SECTION.                          
   COPY ELECMAP.                                   
   01 WS-MSG PIC X(20) VALUE 'BILL PROD DB UPDATE'.
   01 FS     PIC 9(2).                             
 PROCEDURE DIVISION.                               
 000-MAIN.                                         
     MOVE LOW-VALUES TO ELBILLI, ELBILLO           
     PERFORM 100-SEND-MAP.                         
     PERFORM 200-RECEIVE-MAP.                      
     PERFORM PROCESS-DATA.                         
     PERFORM FILE-FUNC.                            
     PERFORM 100-SEND-MAP.                         
     PERFORM 300-RETURN.                           
     STOP RUN.                                     
 100-SEND-MAP.                                     
     EXEC CICS         
     SEND                                 
     MAP('ELBILL') MAPSET('ELECMAP')      
     ERASE                                
     END-EXEC.                            
 200-RECEIVE-MAP.                         
     EXEC CICS                            
     RECEIVE                              
     MAP('ELBILL') MAPSET('ELECMAP')      
     END-EXEC.                            
 PROCESS-DATA.                            
     MOVE CUSNOI TO CUSNOO.               
     MOVE NAMEI TO NAMEO.                 
     MOVE UNITSI TO UNITSO.               
     MOVE UNITSI TO BILLO.                
     MOVE WS-MSG TO MSGO.                 
 FILE-FUNC.                               
     OPEN OUTPUT INFL.                    
     DISPLAY 'OPEN FILE STATUS IS' FS.   
     MOVE CUSNOI TO P-NUM.               
     MOVE NAMEI TO C-NAME.               
     MOVE UNITSI TO C-UNIT.              
     WRITE ELEC-REC.                     
     DISPLAY 'WRITE FILE STATUS IS' FS.  
     CLOSE INFL.                         
     DISPLAY 'CLOSE FILE STATUS IS' FS.  
 300-RETURN.                             
     EXEC CICS                           
     RETURN                              
     END-EXEC.             

我的编译 jcl :-

//CICSCOB JOB CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID,MSGLEVEL=(1,1)  
//PROCLIB JCLLIB ORDER=DFH320.CICS.SDFHPROC                     
//STEP01 EXEC PROC=DFHYITVL,                                    
//            INDEX='DFH320.CICS',                              
//            AD370HLQ='IGY410',                                
//            LE370HLQ='CEE',                                   
//            PROGLIB='DFH320.CICS.SDFHLOAD',                   
//            DSCTLIB='DFH320.CICS.SDFHMAC'                     
//TRN.SYSIN DD DISP=SHR,DSN=RAHUL.COBOL.PROGRAM(ELECPRG)        
//INFLDD DD DSN=RAHUL.CICS.OUTPUT,DISP=SHR                      
//LKED.SYSIN DD *                                               
       NAME ELECPRG(R)                                          
/*      
        

编译完成条件代码 = 0004 ,很少出现警告。 但是当我在 CICS 中执行事务时,它会以 CICS Transaction ELEC failed with abend U4038 结束。

我不明白这种异常终止的性质。我只想从我的 CICS 屏幕输入更新数据集 RAHUL.CICS.OUTPUT。提供了输出文件的位置。没有文件使用程序正常工作,不会发生异常结束。

【问题讨论】:

  • George 的 cmets 是正确的,您需要使用等效的 EXEC CICS READ 命令并通过文件控制表 (FCT) 条目定义您的文件。 ibm.com/docs/en/cics-ts/5.3?topic=summary-read 提供概述。另外,看起来您使用的是 CICS 3.2 吗?那是正确的版本吗?最后,U4038 是一个通用异常终止,应该有其他相关消息可以为您提供有关故障的更多细节。如果您再次遇到这种异常情况,这是供您将来参考。

标签: cobol mainframe jcl cics


【解决方案1】:

此程序是 COBOL 文件控制命令和 CICS SEND/RECEIVE MAP 命令的组合。 CICS 事务中不支持诸如 OPEN、READ、WRITE 和 CLOSE 之类的 COBOL 文件命令。 在 CICS 程序中,您必须使用此处记录的 CICS API https://www.ibm.com/docs/en/cics-ts/5.5?topic=programs-understanding-file-control

【讨论】:

  • 顺便说一句,2021 年 stackoverflow.com/questions/66970097/… 在这篇文章中提出并回答了一个非常相似的问题 - 规则没有改变
  • 嗨,乔治,谢谢。有没有其他方法可以从 cics 更新文件中的数据?
  • 不,您必须使用 CICS API
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2016-04-14
  • 2018-06-23
  • 2019-06-18
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多