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 旧マスタ..