      ******************************************************************
      * PROGRAM-ID : MAIN00                                              *
      * 概  要     : 老舗菓子メーカー基幹システム 日次バッチ統括処理     *
      * 作成       : 1987-04-01 田中 一郎                                *
      * 履歴       : 2003-11-12 桜餅商品追加(SAKURA)                     *
      *            : 2011-02-28 消費税8%対応                             *
      *            : 2019-09-30 軽減税率対応(済) ※担当 退職              *
      *            : 以降の改修担当不明                                   *
      ******************************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID.    MAIN00.
       AUTHOR.        ICHIRO-TANAKA.
       INSTALLATION.  HONSHA-KEISAN-CENTER.
       DATE-WRITTEN.  1987-04-01.
       DATE-COMPILED. 2019-09-30.
       SECURITY.      KIKAN-NAIBU-ONLY.
      *
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. IBM-MAINFRAME.
       OBJECT-COMPUTER. IBM-MAINFRAME.
      *
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT BATCH-LOG     ASSIGN TO "BATCHLOG"
                                ORGANIZATION IS SEQUENTIAL.
      *
       DATA DIVISION.
       FILE SECTION.
       FD  BATCH-LOG
           RECORDING MODE IS F
           BLOCK CONTAINS 0 RECORDS.
       01  LOG-RECORD.
           05  LOG-DATE          PIC 9(8).
           05  LOG-TIME          PIC 9(6).
           05  LOG-PROGRAM       PIC X(8).
           05  LOG-STATUS        PIC X(4).
           05  LOG-MESSAGE       PIC X(80).
      *
       WORKING-STORAGE SECTION.
       01  WS-RUN-DATE.
           05  WS-YEAR           PIC 9(4).
           05  WS-MONTH          PIC 9(2).
           05  WS-DAY            PIC 9(2).
       01  WS-RUN-TIME.
           05  WS-HOUR           PIC 9(2).
           05  WS-MINUTE         PIC 9(2).
           05  WS-SECOND         PIC 9(2).
       01  WS-RETURN-CODE        PIC 9(2)   VALUE ZERO.
       01  WS-STEP-NAME          PIC X(8)   VALUE SPACES.
       01  WS-MESSAGE            PIC X(80)  VALUE SPACES.
       01  WS-EOJ-FLAG           PIC X(1)   VALUE "N".
           88  EOJ-YES                      VALUE "Y".
           88  EOJ-NO                       VALUE "N".
      *
       PROCEDURE DIVISION.
      *
       0000-MAIN-CONTROL.
           PERFORM 1000-INITIALIZE-BATCH
           PERFORM 2000-RUN-SALES-AGGREGATION
           PERFORM 3000-RUN-STOCK-UPDATE
           PERFORM 4000-RUN-PRODUCTION-PLAN
           PERFORM 9000-FINALIZE-BATCH
           STOP RUN.
      *
       1000-INITIALIZE-BATCH.
           ACCEPT WS-RUN-DATE FROM DATE YYYYMMDD
           ACCEPT WS-RUN-TIME FROM TIME
           MOVE "MAIN00 " TO WS-STEP-NAME
           MOVE "BATCH STARTED" TO WS-MESSAGE
           OPEN OUTPUT BATCH-LOG
           PERFORM 9500-WRITE-LOG.
      *
       2000-RUN-SALES-AGGREGATION.
           MOVE "SALES01" TO WS-STEP-NAME
           MOVE "店舗売上集計を起動" TO WS-MESSAGE
           PERFORM 9500-WRITE-LOG
           CALL "SALES01" USING WS-RUN-DATE WS-RETURN-CODE
           IF WS-RETURN-CODE NOT = 0
              MOVE "SALES01 異常終了" TO WS-MESSAGE
              PERFORM 9500-WRITE-LOG
              PERFORM 9900-ABEND
           END-IF.
      *
       3000-RUN-STOCK-UPDATE.
           MOVE "STOCK02" TO WS-STEP-NAME
           MOVE "在庫更新を起動" TO WS-MESSAGE
           PERFORM 9500-WRITE-LOG
           CALL "STOCK02" USING WS-RUN-DATE WS-RETURN-CODE
           IF WS-RETURN-CODE NOT = 0
              MOVE "STOCK02 異常終了" TO WS-MESSAGE
              PERFORM 9500-WRITE-LOG
              PERFORM 9900-ABEND
           END-IF.
      *
       4000-RUN-PRODUCTION-PLAN.
           MOVE "PROD03 " TO WS-STEP-NAME
           MOVE "翌日製造計画を起動" TO WS-MESSAGE
           PERFORM 9500-WRITE-LOG
           CALL "PROD03" USING WS-RUN-DATE WS-RETURN-CODE
           IF WS-RETURN-CODE NOT = 0
              MOVE "PROD03 異常終了" TO WS-MESSAGE
              PERFORM 9500-WRITE-LOG
              PERFORM 9900-ABEND
           END-IF.
      *
       9000-FINALIZE-BATCH.
           MOVE "MAIN00 " TO WS-STEP-NAME
           MOVE "BATCH FINISHED 正常終了" TO WS-MESSAGE
           PERFORM 9500-WRITE-LOG
           CLOSE BATCH-LOG.
      *
       9500-WRITE-LOG.
           MOVE WS-YEAR     TO LOG-DATE(1:4)
           MOVE WS-MONTH    TO LOG-DATE(5:2)
           MOVE WS-DAY      TO LOG-DATE(7:2)
           MOVE WS-HOUR     TO LOG-TIME(1:2)
           MOVE WS-MINUTE   TO LOG-TIME(3:2)
           MOVE WS-SECOND   TO LOG-TIME(5:2)
           MOVE WS-STEP-NAME TO LOG-PROGRAM
           MOVE "OK  "       TO LOG-STATUS
           MOVE WS-MESSAGE  TO LOG-MESSAGE
           WRITE LOG-RECORD.
      *
       9900-ABEND.
           MOVE "NG  " TO LOG-STATUS
           WRITE LOG-RECORD
           CLOSE BATCH-LOG
           MOVE 99 TO WS-RETURN-CODE
           STOP RUN.
      *
