IDENTIFICATION DIVISION.

PROGRAM-ID.MATHING001.

*

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT 旧マスタル

  ASSIGN TO OLDMST。。。。。。。ファイル識別子 実際のファイルの対応は

  ORGANIZATION IS

  LINE SEQUENTIAL.

SELECT トランザクション

   ASSIGN TO TRN

   ORGANIZATION IS

   LINE SEQUENTIAL.

SELECT 新マスタ

   ASSIGN TO NEWMST

   ORGANIZATION IS

   LINE SEQUENTIAL.

*

DATA DIVISION.

FILE SECTION.

FD 旧マスタ.

01 旧マスタレコード.

 03 旧マスターキー       PIC X(??).

 03 データ              PIC X(??).

FD トランザクション.

01 トランザクションレコード.

 03 トランザクションキー    PIC X(??).

 03 変更区分          PIC X(1).

 03 データ              PIC X(??).

FD 新マスタ.

01 新マスタレコード.

 03 新マスターキー    PIC X(??).

 03 データ           PIC X(??).

WORKING-STORAGE SECTION.

01 MST-KEY PIC X(??).
01 TRN-KEY PIC X(??).

*

PROCEDURE DIVISION.

  PERFORM 初期処理.

  PERFORM 主処理

      UNTIL MST-KEY AND TRN-KEY = HIGH-VALUE.

  PERFORM 終了処理.

  EXIT PROGRAM.

初期処理 SECTION.

  OPEN INPUT  旧マスタ.

  OPEN INPUT  トランザクション.

  OPEN OUTPUT 新マスタ.

  PERFORM 旧マスタ読込.

  PERFORM トランザクション読込

旧マスタ読込 SECTION.

  READ 旧マスタ

   AT END

    MOVE HIGH-VALUE TO   MST-KEY.

    NOT AT END

     MOVE 旧マスタキー TO MST-KEY

   END-READ. 

トランザクション読込 SECTION.

  READ トランザクション

   AT END

    MOVE HIGH-VALUE TO   TRN-KEY.

    NOT AT END

     MOVE トランザクションキー TO TRN-KEY

   END-READ. 

.

主処理 SECTION.

  IF MST-KEY = TRN-KEY

    IF 変更区分 = 1(削除)

      CONTINUE                                      。。。。。削除(新マスタに出力しない)

    ELSE

      MOVE トランザクションデータ  TO 新マスタデータ              。。。。。。変更する項目のみ転送

      WRITE 新マスタ                                  。。。。。。変更

    END-IF.

      PERFORM 旧マスタ読込

      PERFORM トランザクション読込

  ELSE

    IF MST-KEY < TRN-KEY

      MOVE 旧マスタレコード TO 新マスタレコード

      WRITE 新マスタ                       。。。。。。マスタのコピー

     PERFORM 旧マスタ読込

    ELSE

      MOVE トランザクションレコード TO 新マスタレコード

       WRITE 新マスタ                    。。。。。。追加

      PERFORM トランザクション読込

    END-IF.

終了処理 SECTION.

  CLOSE 旧マスタ.

  CLOSE トランザクション.

  CLOSE 旧マスタ..