⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rptdd705

📁 这是在大型机的环境下,利用cobol语言编写的银行报表系统开发的一个例子.其中还包含了JCL编译运行文件.
💻
📖 第 1 页 / 共 3 页
字号:
                 PIC X(22).
              05 FILLER                 PIC X(2) VALUE SPACE.
              05 HRD-L8-INVE-VOUCHER-NO PIC X(12).
              05 HRD-L8R-INVE-VOUCHER-NO REDEFINES
                 HRD-L8-INVE-VOUCHER-NO PIC X(12).
      *
      ******************************
      * SPECIAL CONSTANT           *
      ******************************
           03 HRD-REPORT-NAME.
              05 FILLER                 PIC X VALUE X'0E'.
              05 FILLER                 PIC X(2) VALUE X'5C74'.
              05 FILLER                 PIC X(2) VALUE X'4BAE'.
              05 FILLER                 PIC X(2) VALUE X'5C4A'.
              05 FILLER                 PIC X(2) VALUE X'4AE5'.
              05 FILLER                 PIC X(2) VALUE X'58A0'.
              05 FILLER                 PIC X(2) VALUE X'4BED'.
              05 FILLER                 PIC X(2) VALUE X'4985'.
              05 FILLER                 PIC X(2) VALUE X'4AF2'.
              05 FILLER                 PIC X(2) VALUE X'4BED'.
              05 FILLER                 PIC X(2) VALUE X'56E0'.
              05 FILLER                 PIC X(2) VALUE X'55BD'.
              05 FILLER                 PIC X(2) VALUE X'498E'.
              05 FILLER                 PIC X VALUE X'0F'.
           03 HRD-REPORT-NAME-LINE.
              05 FILLER                 PIC X(10) VALUE '=========='.
              05 FILLER                 PIC X(10) VALUE '=========='.
              05 FILLER                 PIC X(8) VALUE '========'.
           03 HRD-REPORT-ID.
              05 FILLER                 PIC X(7) VALUE 'DEPD705'.
           03 HRD-FREQUENCY.
              05 FILLER                 PIC X VALUE X'0E'.
              05 FILLER                 PIC X(2) VALUE X'54D4'.
              05 FILLER                 PIC X VALUE X'0F'.
      *
      ******************************
      * COMMON RTN VARIABLES       *
      ******************************
           03 HRD-CR-ERROR-TYPE         PIC X.
              88 HRD-CR-ERR-OPEN-FIN    VALUE '0'.
              88 HRD-CR-ERR-OPEN-FOUT   VALUE '1'.
              88 HRD-CR-ERR-READ-FIN    VALUE '2'.
              88 HRD-CR-ERR-WRITE-FOUT  VALUE '3'.
              88 HRD-CR-ERR-G-ARR-FULL  VALUE '4'.
              88 HRD-CR-ERR-CALL-JPRM   VALUE '5'.
              88 HRD-CR-ERR-CALL-RBDT   VALUE '6'.
           03 HRD-CR-BR                 PIC X(5).
           03 HRD-CR-BR-NAME            PIC X(60).
           03 HRD-CR-UPORG              PIC X(5).
           03 HRD-CR-AC-DATE            PIC X(8).
      *
      ******************************
       LINKAGE SECTION.
      ******************************
      *
      ******************************
      * JUSTIFY VARIABLES          *
      ******************************
       01  HRD-JUST-STR                 PIC X(999).
       01  FILLER REDEFINES HRD-JUST-STR.
           03 HRD-JUST-ARRAY OCCURS 999 PIC X.
      ******************************
       PROCEDURE DIVISION.
      ******************************
      *
       HRD-MAIN.
           PERFORM HRD-INIT THRU
                   HRD-INIT-EXIT
           PERFORM UNTIL HRD-EOF
               PERFORM HRD-GET-DATA THRU
                       HRD-GET-DATA-EXIT
               PERFORM HRD-PROCESS THRU
                       HRD-PROCESS-EXIT
           END-PERFORM
           IF  NOT HRD-EMPTY THEN
               MOVE 0                       TO HRD-KEY-BREAK
               PERFORM HRD-OUTPUT-TOTAL THRU
                       HRD-OUTPUT-TOTAL-EXIT
           END-IF
           PERFORM HRD-CLOSE THRU
                   HRD-CLOSE-EXIT
           .
       HRD-MAIN-EXIT.
           EXIT.
      *
       HRD-INIT.
           DISPLAY CUST-PGM-NAME ' PROCESS START.'
           PERFORM CR-GET-AC-DATE THRU
                   CR-GET-AC-DATE-EXIT
           MOVE -1                          TO HRD-LC
           SET  HRD-NEW-PAGE                TO TRUE
           SET  HRD-EMPTY                   TO TRUE
           MOVE 'N'                         TO HRD-BROKEN-DETAIL
           OPEN INPUT FIN
           EVALUATE WS-FIN-STS
           WHEN FSTS-NORMAL
               SET HRD-FIN-OPENED           TO TRUE
           WHEN OTHER
               SET  HRD-CR-ERR-OPEN-FIN     TO TRUE
               PERFORM CR-ERROR THRU
                       CR-ERROR-EXIT
           END-EVALUATE
           OPEN OUTPUT FOUT
           EVALUATE WS-FOUT-STS
           WHEN FSTS-NORMAL
               SET HRD-FOUT-OPENED          TO TRUE
           WHEN OTHER
               SET  HRD-CR-ERR-OPEN-FOUT    TO TRUE
               PERFORM CR-ERROR THRU
                       CR-ERROR-EXIT
           END-EVALUATE
           PERFORM CUST-INIT THRU
                   CUST-INIT-EXIT
           .
       HRD-INIT-EXIT.
           EXIT.
       HRD-GET-DATA.
           READ FIN NEXT
           EVALUATE WS-FIN-STS
           WHEN FSTS-NORMAL
               CONTINUE
           WHEN FSTS-ENDFILE
               SET HRD-EOF                  TO TRUE
           WHEN OTHER
               SET  HRD-CR-ERR-READ-FIN     TO TRUE
               PERFORM CR-ERROR THRU
                       CR-ERROR-EXIT
           END-EVALUATE
           MOVE FIN-BR                      TO HRD-NEXT-BR
           MOVE FIN-CCY-CODE                TO HRD-NEXT-CCY-CODE
           MOVE FIN-CUSVAA-NAME             TO HRD-NEXT-CUSVAA-NAME
           MOVE FIN-INVE-VOUCHER-NO         TO HRD-NEXT-INVE-VOUCHER-NO
           MOVE FIN-INVM-CURR-BAL           TO HRD-NEXT-INVM-CURR-BAL
           MOVE FIN-INVT-SEQUENCE-NO        TO
                HRD-NEXT-INVT-SEQUENCE-NO
           MOVE FIN-INVT-VOLUME-NO          TO HRD-NEXT-INVT-VOLUME-NO
           MOVE FIN-INVV-ACCT-NO            TO HRD-NEXT-INVV-ACCT-NO
           .
       HRD-GET-DATA-EXIT.
           EXIT.
      *
       HRD-PROCESS.
           IF  HRD-EOF THEN
               GO TO HRD-PROCESS-EXIT
           END-IF
           PERFORM HRD-GET-KEY-BREAK THRU
                   HRD-GET-KEY-BREAK-EXIT
           IF  HRD-KEY-BREAK NOT = 99 THEN
               IF  NOT HRD-EMPTY THEN
                   PERFORM HRD-OUTPUT-TOTAL THRU
                           HRD-OUTPUT-TOTAL-EXIT
               END-IF
               PERFORM HRD-COPY-DATA THRU
                       HRD-COPY-DATA-EXIT
               PERFORM HRD-OUTPUT-HEADER THRU
                       HRD-OUTPUT-HEADER-EXIT
           ELSE
               PERFORM HRD-COPY-DATA THRU
                       HRD-COPY-DATA-EXIT
           END-IF
           INITIALIZE HRD-EMPTY-FLG
           PERFORM HRD-OUTPUT-DATA THRU
                   HRD-OUTPUT-DATA-EXIT
           PERFORM HRD-ADD-SUM THRU
                   HRD-ADD-SUM-EXIT
           .
       HRD-PROCESS-EXIT.
           EXIT.
      *
       HRD-CLOSE.
           DISPLAY CUST-PGM-NAME ' END SUCCESSFULLY.'
           PERFORM CR-PGM-EXIT THRU
                   CR-PGM-EXIT-EXIT
           .
       HRD-CLOSE-EXIT.
           EXIT.
      *
       HRD-GET-KEY-BREAK.
           IF  HRD-EMPTY THEN
               MOVE 0                       TO HRD-KEY-BREAK
               GO TO HRD-GET-KEY-BREAK-EXIT
           END-IF
           IF  HRD-THIS-BR NOT = HRD-NEXT-BR THEN
               MOVE 0                       TO HRD-KEY-BREAK
               GO TO HRD-GET-KEY-BREAK-EXIT
           END-IF
           IF  HRD-THIS-CCY-CODE NOT = HRD-NEXT-CCY-CODE THEN
               MOVE 1                       TO HRD-KEY-BREAK
               GO TO HRD-GET-KEY-BREAK-EXIT
           END-IF
           MOVE 99                          TO HRD-KEY-BREAK
           .
       HRD-GET-KEY-BREAK-EXIT.
           EXIT.
      *
       HRD-COPY-DATA.
           MOVE HRD-THIS-BR                 TO HRD-LAST-BR
           MOVE HRD-NEXT-BR                 TO HRD-THIS-BR
           MOVE HRD-THIS-CCY-CODE           TO HRD-LAST-CCY-CODE
           MOVE HRD-NEXT-CCY-CODE           TO HRD-THIS-CCY-CODE
           MOVE HRD-THIS-CUSVAA-NAME        TO HRD-LAST-CUSVAA-NAME
           MOVE HRD-NEXT-CUSVAA-NAME        TO HRD-THIS-CUSVAA-NAME
           MOVE HRD-THIS-INVE-VOUCHER-NO    TO HRD-LAST-INVE-VOUCHER-NO
           MOVE HRD-NEXT-INVE-VOUCHER-NO    TO HRD-THIS-INVE-VOUCHER-NO
           MOVE HRD-THIS-INVM-CURR-BAL      TO HRD-LAST-INVM-CURR-BAL
           MOVE HRD-NEXT-INVM-CURR-BAL      TO HRD-THIS-INVM-CURR-BAL
           MOVE HRD-THIS-INVT-SEQUENCE-NO   TO
                HRD-LAST-INVT-SEQUENCE-NO
           MOVE HRD-NEXT-INVT-SEQUENCE-NO   TO
                HRD-THIS-INVT-SEQUENCE-NO
           MOVE HRD-THIS-INVT-VOLUME-NO     TO HRD-LAST-INVT-VOLUME-NO
           MOVE HRD-NEXT-INVT-VOLUME-NO     TO HRD-THIS-INVT-VOLUME-NO
           MOVE HRD-THIS-INVV-ACCT-NO       TO HRD-LAST-INVV-ACCT-NO
           MOVE HRD-NEXT-INVV-ACCT-NO       TO HRD-THIS-INVV-ACCT-NO
           .
       HRD-COPY-DATA-EXIT.
           EXIT.
      *
       HRD-ADD-SUM.
           .
       HRD-ADD-SUM-EXIT.
           EXIT.
      *
       HRD-OUTPUT-HEADER.
           IF  HRD-KEY-BREAK < 2 THEN
               PERFORM HRD-TURN-PAGE THRU
                       HRD-TURN-PAGE-EXIT
           END-IF
           IF  HRD-KEY-BREAK <= 0 THEN
               MOVE 1                       TO HRD-PAGE-NO-1
           END-IF
           IF  HRD-KEY-BREAK <= 1 THEN
               CONTINUE
           END-IF
           IF  HRD-KEY-BREAK = 0 THEN
               MOVE HRD-THIS-BR             TO HRD-CR-BR
               PERFORM CR-GET-BR-INFO THRU
                       CR-GET-BR-INFO-EXIT
           END-IF
           IF  HRD-KEY-BREAK <= 0 THEN
               MOVE HRD-THIS-BR             TO HRD-C-IDX-BR
               MOVE HRD-CR-UPORG            TO HRD-C-IDX-UPORG
               MOVE HRD-REPORT-ID           TO HRD-C-IDX-RPT-ID
               MOVE HRD-CR-AC-DATE          TO HRD-C-IDX-AC-DATE
               MOVE 1                       TO HRD-STICK
               MOVE 0                       TO HRD-FILLTO
               MOVE 0                       TO HRD-KEY-INDEX
               PERFORM CUST-EDIT-HEADER THRU
                       CUST-EDIT-HEADER-EXIT
               PERFORM HRD-CHECK-SUBTOTAL THRU
                       HRD-CHECK-SUBTOTAL-EXIT
               MOVE HRD-C-IDX-AC-DATE       TO HRD-L0-IDX-AC-DATE
               MOVE HRD-C-IDX-BR            TO HRD-L0-IDX-BR
               MOVE HRD-C-IDX-RPT-ID        TO HRD-L0-IDX-RPT-ID
               MOVE HRD-C-IDX-UPORG         TO HRD-L0-IDX-UPORG
               MOVE HRD-L0                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
           END-IF
           IF  HRD-KEY-BREAK <= 1 THEN
               MOVE HRD-REPORT-ID           TO HRD-C-RPT-ID
               MOVE HRD-REPORT-NAME         TO HRD-C-RPT-NAME
               MOVE HRD-REPORT-NAME-LINE    TO HRD-C-RPT-NAME-LINE
               MOVE HRD-CR-BR-NAME          TO HRD-C-BR-NAME
               MOVE HRD-CR-AC-DATE          TO HRD-C-AC-DATE
               MOVE HRD-THIS-CCY-CODE(4 :)  TO HRD-C-CCY
               MOVE HRD-PAGE-NO-1           TO HRD-C-PAGE
               MOVE 7                       TO HRD-STICK
               MOVE 0                       TO HRD-FILLTO
               MOVE 1                       TO HRD-KEY-INDEX
               PERFORM CUST-EDIT-HEADER THRU
                       CUST-EDIT-HEADER-EXIT
               PERFORM HRD-CHECK-SUBTOTAL THRU
                       HRD-CHECK-SUBTOTAL-EXIT
               MOVE HRD-THIS-BR             TO HRD-L1-BR
               MOVE HRD-C-RPT-ID            TO HRD-L1-RPT-ID
               MOVE HRD-L1                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
               MOVE HRD-C-RPT-NAME          TO HRD-L2-RPT-NAME
      *        CALL 'SCSSGADR' USING HRD-L2-RPT-NAME, HRD-JUST-ADDR
               MOVE LENGTH OF HRD-L2-RPT-NAME TO HRD-JUST-LEN
               PERFORM CR-CENTER-JUSTIFY THRU
                       CR-CENTER-JUSTIFY-EXIT
               MOVE HRD-L2                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
               MOVE HRD-C-RPT-NAME-LINE     TO HRD-L3-RPT-NAME-LINE
      *        CALL 'SCSSGADR' USING HRD-L3-RPT-NAME-LINE,
      *             HRD-JUST-ADDR
               MOVE LENGTH OF HRD-L3-RPT-NAME-LINE TO HRD-JUST-LEN
               PERFORM CR-CENTER-JUSTIFY THRU
                       CR-CENTER-JUSTIFY-EXIT
               MOVE HRD-L3                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
               MOVE HRD-C-AC-DATE           TO HRD-L5-AC-DATE
               MOVE HRD-C-BR-NAME           TO HRD-L5-BR-NAME
               MOVE HRD-C-CCY               TO HRD-L5-CCY
               MOVE HRD-C-PAGE              TO HRD-L5-PAGE
               MOVE HRD-L5                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
               MOVE HRD-L6                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
               MOVE HRD-L7                  TO FOUT-LINE
               PERFORM CR-WRITE-LINE THRU
                       CR-WRITE-LINE-EXIT
           END-IF
           .
       HRD-OUTPUT-HEADER-EXIT.
           EXIT.
      *
       HRD-OUTPUT-DATA.
           MOVE 'X'                         TO HRD-BROKEN-DETAIL
           MOVE 1                           TO HRD-STICK
           MOVE 0                           TO HRD-FILLTO
           PERFORM CUST-EDIT-DATA THRU
                   CUST-EDIT-DATA-EXIT
           PERFORM HRD-CHECK-SUBTOTAL THRU
                   HRD-CHECK-SUBTOTAL-EXIT
           MOVE HRD-THIS-CUSVAA-NAME        TO HRD-L8-CUSVAA-NAME
           MOVE HRD-THIS-INVE-VOUCHER-NO    TO HRD-L8-INVE-VOUCHER-NO
           MOVE HRD-THIS-INVM-CURR-BAL      TO HRD-L8-INVM-CURR-BAL
           MOVE HRD-THIS-INVT-SEQUENCE-NO   TO HRD-L8-INVT-SEQUENCE-NO
           MOVE HRD-THIS-INVT-VOLUME-NO     TO HRD-L8-INVT-VOLUME-NO
           MOVE HRD-THIS-INVV-ACCT-NO       TO HRD-L8-INVV-ACCT-NO
           MOVE HRD-L8                      TO FOUT-LINE
           PERFORM CR-WRITE-LINE THRU
                   CR-WRITE-LINE-EXIT
           MOVE 'N'                         TO HRD-BROKEN-DETAIL
           .
       HRD-OUTPUT-DATA-EXIT.
           EXIT.
      *
       HRD-OUTPUT-TOTAL.
           IF  HRD-KEY-BREAK <= 1 THEN
               MOVE 0                       TO HRD-STICK

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -