COBOL输入文件输出文件MAXCC(错误返回码)= 0012

时间:2017-05-17 10:09:59

标签: cobol mainframe zos jcl

我一直在尝试阅读我的输入并将其写入输出文件,但无法在代码中发现任何错误。我提交的JCL是好的,因为它是由我的大型机讲师写的,所以我知道问题出在COBOL代码的某个地方......仔细检查了一切,试图在课堂上找到他的东西 - 毫无价值......线路对齐,间距等都可以。我相信。

IDENTIFICATION DIVISION.                    
PROGRAM-ID.  NAME.                          
AUTHOR.  MYNAME.                        

ENVIRONMENT DIVISION.                       
INPUT-OUTPUT SECTION.                       
FILE-CONTROL.                               
        SELECT INPUT10 ASSIGN TO INPUTFIL.  
        SELECT OUTPUT10 ASSIGN TO OUTFIL.   


DATA DIVISION.                              
FILE SECTION.                               
FD INPUT10                                  
        BLOCK CONTAINS 0 RECORDS            
        RECORDING MODE IS F                 
        RECORD CONTAINS 80 CHARACTERS.      
01 PLAYER-DETAILS.                          
   03  PLAYER-ID       PIC 9(07).           
   03  PLAYER-NAME.                         
       05  NAME        PIC X(08).           
       05  INITIALS    PIC A(02).           
   03  PLAYER-BDAY     PIC 9(08).           
   03  PLAYER-NR       PIC 9(02).           

FD OUTPUT10                                 
        BLOCK CONTAINS 0 RECORDS            
        RECORDING MODE IS F                 
        RECORD CONTAINS 80 CHARACTERS.      
01 OUTPUT-DETAILS.                          
   03  OUTPUT-ID       PIC 9(07).           
   03  OUTPUT-NAME.                         
       05  O-NAME      PIC X(08).           
       05  O-INITIALS  PIC A(02).           
   03  OUTPUT-BDAY     PIC 9(08).               
   03  OUTPUT-NR       PIC 9(02).               
WORKING-STORAGE SECTION.                        
01  WS-INDICATORS.                              
 10  WS-EOF-IND        PIC X(01) VALUE 'N'.     
     88  WS-END-OF-FILE          VALUE 'Y'.     

PROCEDURE DIVISION.                             
MAINFLOW.                                       
    OPEN INPUT INPUT10                          
    OPEN OUTPUT OUTPUT10                        
    READ INPUT10                                
       AT END SET WS-END-OF-FILE TO TRUE        
    END-READ                                    
    PERFORM UNTIL WS-END-OF-FILE                
    MOVE PLAYER-ID TO OUTPUT-ID                 
    MOVE NAME TO O-NAME                         
    MOVE INITIALS TO O-INITIALS                 
    MOVE PLAYER-BDAY TO OUTPUT-BDAY             
    MOVE PLAYER-NR TO OUTPUT-NR                 
    READ INPUT10                                
       AT END SET WS-END-OF-FILE TO TRUE        
    END-READ                                    
    WRITE OUTPUT10                              
    END-WRITE                                   
    END-PERFORM                                 
    CLOSE INPUT10                               
    CLOSE OUTPUT10                              
    STOP RUN.    

这是JCL的代码

//useridX JOB ,                                                    
//         MSGCLASS=H,                                              
//         MSGLEVEL=(1,1),                                          
//         CLASS=A,                                                 
//         REGION=0M,                                               
//         NOTIFY=&SYSUID                                           
//COBOL1 EXEC IGYWCLG,REGION=50M,                                   
// PARM.COBOL='TEST,RENT,APOST,OBJECT,NODYNAM,LIB,SIZE(1048376)'    
//COBOL.STEPLIB DD DSN=IGY420.SIGYCOMP,                             
// DISP=SHR                                                         
//COBOL.SYSIN DD DISP=SHR,DSN=userid.KURS.COBOL(PROG2)             
//GO.INPUTFIL DD DISP=SHR,DSN=userid.KURS.PLAYERS                  
//GO.OUTFIL   DD DISP=SHR,DSN=userid.KURS.REPORT                   

它适用于其他学生,所以我很确定maxcc = 12的原因是COBOL&#39>

有什么建议吗? 感谢。

P.S。我无法检查我的作业日志 - 我的大型机帐户或大型机本身出了问题。这是我无法找到问题的主要原因

2 个答案:

答案 0 :(得分:0)

好的 - 我在一些代码更改后成功运行了这个。您确实需要对输出进行排序 - 您使用的是正确的MSGCLASS吗?检查 - 不要假设。

程序错误: 看一下PROGRAM-ID 查看记录长度,并与描述文件记录长度的内容进行比较 看看你在写什么。

改进: 在任何文件操作后始终检查您的状态 - 打开READ WRITE CLOSE。 你的缩进不好。如果它在您的机器上,那么在发布时要更加小心。

答案 1 :(得分:0)

输入文件和输出文件声明为Fixed,长度为80。

但是输入和输出变量的长度都小于80.它们的长度为27.所以在播放器细节和输出细节中添加填充变量,长度为80 - 27 = 53

还要确保输入和输出文件长度为80。