COBOL 输入文件到输出文件 MAXCC(错误 return 代码)=0012
COBOL input file to output file MAXCC(Error return code)=0012
我一直在尝试读取我的输入并将其写入输出文件,但在代码中找不到任何错误。我提交的 JCL 很好,因为它是由我的大型机讲师编写的,所以我知道问题出在 COBOL 代码的某个地方......仔细检查了所有内容,试图在 class 中找到一些东西 - 毫无价值。 .. 行对齐、间距等我相信都可以。
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 的部分
有什么建议吗?
谢谢
P.S。我无法检查我的工作日志 - 我的大型机帐户或大型机本身有问题。这是我找不到问题的主要原因
好的 - 我 运行 在更改一些代码后成功完成了此操作。您确实需要对输出进行排序——您使用的是正确的 MSGCLASS 吗?检查 - 不要假设。
程序错误:
查看 PROGRAM-ID
查看记录长度并与您描述的文件记录长度进行比较
看看你在写什么
改进:
在任何文件操作后始终检查您的状态 - 打开读写关闭。
你的缩进不好。如果它在你的机器上,那么发帖时要多加小心。
输入文件和输出文件声明为 Fixed 且长度为 80。
但是输入和输出变量的长度都小于 80。它们在播放器详细信息中的长度为 27.So,输出详细信息添加长度为 80 - 27 = 53 的填充变量
还要确保输入和输出文件长度为 80。
我一直在尝试读取我的输入并将其写入输出文件,但在代码中找不到任何错误。我提交的 JCL 很好,因为它是由我的大型机讲师编写的,所以我知道问题出在 COBOL 代码的某个地方......仔细检查了所有内容,试图在 class 中找到一些东西 - 毫无价值。 .. 行对齐、间距等我相信都可以。
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 的部分
有什么建议吗? 谢谢
P.S。我无法检查我的工作日志 - 我的大型机帐户或大型机本身有问题。这是我找不到问题的主要原因
好的 - 我 运行 在更改一些代码后成功完成了此操作。您确实需要对输出进行排序——您使用的是正确的 MSGCLASS 吗?检查 - 不要假设。
程序错误: 查看 PROGRAM-ID 查看记录长度并与您描述的文件记录长度进行比较 看看你在写什么
改进: 在任何文件操作后始终检查您的状态 - 打开读写关闭。 你的缩进不好。如果它在你的机器上,那么发帖时要多加小心。
输入文件和输出文件声明为 Fixed 且长度为 80。
但是输入和输出变量的长度都小于 80。它们在播放器详细信息中的长度为 27.So,输出详细信息添加长度为 80 - 27 = 53 的填充变量
还要确保输入和输出文件长度为 80。