COBOL中的IGZ0201W和IGZ0035S错误

COBOL中的IGZ0201W和IGZ0035S错误,cobol,mainframe,Cobol,Mainframe,我想从输入文件中读取帐户详细信息,如果余额超过8500000,则打印 代码显示以下错误: *----------------------- IDENTIFICATION DIVISION. *----------------------- PROGRAM-ID. TOPACCTS AUTHOR. Sohan Kundu. *-------------------- ENVIRONMEN

我想从输入文件中读取帐户详细信息,如果余额超过8500000,则打印

代码显示以下错误:

      *-----------------------
       IDENTIFICATION DIVISION.
      *-----------------------
       PROGRAM-ID.    TOPACCTS
       AUTHOR.        Sohan Kundu.
      *--------------------
       ENVIRONMENT DIVISION.
      *--------------------
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT PRINT-LINE ASSIGN TO PRTLINE.
           SELECT ACCT-REC   ASSIGN TO ACCTREC.
      *-------------
       DATA DIVISION.
      *-------------
       FILE SECTION.
       FD  PRINT-LINE RECORD CONTAINS 80 CHARACTERS RECORDING MODE F.
       01  PRINT-REC.
           05  FILLER         PIC X(01) VALUE SPACES.
           05  FIRST-NAME-O   PIC X(11).
           05  FILLER         PIC X(02) VALUE SPACES.
           05  LAST-NAME-O    PIC X(22).
           05  FILLER         PIC X(02) VALUE SPACES.
           05  ACCT-BALANCE-O PIC X(12).
           05  FILLER         PIC X(30) VALUE SPACES.
      *
       FD  ACCT-REC RECORD CONTAINS 80 CHARACTERS RECORDING MODE F.
       01  ACCT-FIELDS.
           05  FIRST-NAME         PIC X(11).
           05  LAST-NAME          PIC X(22).
           05  FILLER             PIC X(28).
           05  ACCT-BALANCE       PIC X(12).
           05  FILLER             PIC X(7).
      *
       WORKING-STORAGE SECTION.
       01  FLAGS.
           05 LASTREC          PIC X VALUE SPACE.
      *
       01  TOTAL-CLIENTS.
           05 FILLER              PIC X(14) VALUE
              '# OF RECORDS: '.
           05 CLIENTS             PIC 9(3) VALUE ZERO.
           05 FILLER              PIC X(63) VALUE SPACES.
      *
       01  HEADER-1.
           05  FILLER PIC X(30) VALUE 'REPORT FOR TOP ACCOUNT HOLDERS'.
           05  FILLER PIC X(50) VALUE SPACES.
      *
       01  HEADER-2.
           05  FILLER         PIC X(05) VALUE 'Year '.
           05  HDR-YR         PIC 9(04).
           05  FILLER         PIC X(02) VALUE SPACES.
           05  FILLER         PIC X(06) VALUE 'Month '.
           05  HDR-MO         PIC X(02).
           05  FILLER         PIC X(02) VALUE SPACES.
           05  FILLER         PIC X(04) VALUE 'Day '.
           05  HDR-DAY        PIC X(02).
           05  FILLER         PIC X(53) VALUE SPACES.
      *
       01  HEADER-3.
           05  FILLER         PIC X(11) VALUE 'First Name '.
           05  FILLER         PIC X(02) VALUE SPACES.
           05  FILLER         PIC X(10) VALUE 'Last Name '.
           05  FILLER         PIC X(14) VALUE SPACES.
           05  FILLER         PIC X(08) VALUE 'Balance '.
           05  FILLER         PIC X(35) VALUE SPACES.
      *
       01  HEADER-4.
           05  FILLER         PIC X(11) VALUE '-----------'.
           05  FILLER         PIC X(02) VALUE SPACES.
           05  FILLER         PIC X(10) VALUE '----------'.
           05  FILLER         PIC X(14) VALUE SPACES.
           05  FILLER         PIC X(08) VALUE '--------'.
           05  FILLER         PIC X(35) VALUE SPACES.
      *
       01 WS-CURRENT-DATE-DATA.
           05  WS-CURRENT-DATE.
               10  WS-CURRENT-YEAR         PIC 9(04).
               10  WS-CURRENT-MONTH        PIC 9(02).
               10  WS-CURRENT-DAY          PIC 9(02).
           05  WS-CURRENT-TIME.
               10  WS-CURRENT-HOURS        PIC 9(02).
               10  WS-CURRENT-MINUTE       PIC 9(02).
               10  WS-CURRENT-SECOND       PIC 9(02).
               10  WS-CURRENT-MILLISECONDS PIC 9(02).
      *
      *------------------
       PROCEDURE DIVISION.
      *------------------
       OPEN-FILES.
           OPEN INPUT  ACCT-REC.
           OPEN OUTPUT PRINT-LINE.
      *
       WRITE-HEADERS.
           MOVE FUNCTION CURRENT-DATE TO WS-CURRENT-DATE-DATA.
           MOVE WS-CURRENT-YEAR  TO HDR-YR.
           MOVE WS-CURRENT-MONTH TO HDR-MO.
           MOVE WS-CURRENT-DAY   TO HDR-DAY.
           WRITE PRINT-REC FROM HEADER-1.
           WRITE PRINT-REC FROM HEADER-2.
           MOVE SPACES TO PRINT-REC.
           WRITE PRINT-REC AFTER ADVANCING 1 LINES.
           WRITE PRINT-REC FROM HEADER-3.
           WRITE PRINT-REC FROM HEADER-4.
           MOVE SPACES TO PRINT-REC.
      *
       READ-NEXT-RECORD.
           PERFORM READ-RECORD
            PERFORM UNTIL LASTREC = 'Y'
            PERFORM IS-BALANCE-HIGH
            PERFORM READ-RECORD
            END-PERFORM
           .
      *
       CLOSE-STOP.
           WRITE PRINT-REC FROM TOTAL-CLIENTS.
           CLOSE ACCT-REC.
           CLOSE PRINT-LINE.
           STOP RUN.
      *
       READ-RECORD.
           READ ACCT-REC
           AT END MOVE 'Y' TO LASTREC
           END-READ.
      *
       IS-BALANCE-HIGH.
           IF FUNCTION NUMVAL-C(ACCT-BALANCE) > 8500000 THEN
              ADD 1 TO CLIENTS
              PERFORM WRITE-RECORD
           END-IF.
      *
       WRITE-RECORD.
           MOVE FIRST-NAME   TO  FIRST-NAME-O.
           MOVE LAST-NAME    TO  LAST-NAME-O.
           MOVE ACCT-BALANCE TO  ACCT-BALANCE-O.
           WRITE PRINT-REC.
      *

在用于执行此程序的JCL(作为批处理作业)中,在带有
EXEC PGM=topacts
的步骤中,确保对输出文件
PRTLINE
使用DD卡,其外观类似于:

 IGZ0201W A file attribute mismatch was detected. File PRINT-LINE in program TOPACCTS had a record length of 81 and
          the file specified in the ASSIGN clause had a record length of 80.
 IGZ0035S There was an unsuccessful OPEN or CLOSE of file PRTLINE in program TOPACCTS at relative location X'1E8'.
          Neither FILE STATUS nor an ERROR declarative were specified. The status code was 39.
          From compile unit TOPACCTS at entry point TOPACCTS at compile unit offset +000001E8 at entry offset +000001E8
          at address 1B8001E8.

这样,您就可以避免状态代码“39”,这表示您的记录长度为80(如您的程序中所示,
包含80个字符)与您在JCL的DD卡中指定的内容不匹配。

您好,Sohan,欢迎使用SO!在您等待答案的同时(我将编辑您的问题的格式,您可能希望稍后查看编辑),您可以。您应该显示用于运行程序的JCL。消息表明,分配给DD PRTLINE的文件长度为81字节,而在程序中定义为80字节。书签此页面:打印文件通常定义为FBA,第一个字符为回车符控制字符。如果在前进后使用,则需要考虑前导的1字节回车符控制性格前进后删除或声明您的记录包含为81。@SimonSobisch您让它工作了吗?
//PRTLINE  DD DISP=(NEW,CATLG),DSN=YOUR.DSN.GOES.HERE,
//             UNIT=SYSDA,SPACE=(CYL,(5,5)),
//             RECFM=FB,LRECL=80