処理パターン(2) マッチング

COBOL

処理パターン(2) マッチング

macOS 10.15.7 / cobc 3.2.0
マッチングは、複数ファイルのレコードを特定のキーで照合し、条件に従った操作を行う。

機能仕様

売上累積ファイルと売上トランザクションファイルを読み込み、顧客コードをキーにレコードの更新を行い、新しい売上累積ファイルに出力する。また、売上トランザクションレコードの顧客コードが既存の売上累積レコードにない場合は、そのレコードを新しい売上累積ファイルに追加する。
前提条件
売上累積ファイルは、同一の顧客コードを持つレコードは1件だけ、売上トランザクションファイルは、複数ある場合がある。いずれのファイルも顧客コードでソートされていること。
マッチング処理の基本
売上累積レコードと売上トランザクションレコードを同時に読み込む。顧客コード同士を比較し、条件に応じて次のレコードの読み込みを行う。
条件1
売上累積レコード = 売上トランザクション
次の売上累積レコードと売上トランザクションレコードを読み込む 
条件2
売上累積レコード < 売上トランザクション
次の売上累積レコードを読み込む
条件3
売上累積レコード > 売上トランザクション
次の売上トランザクションレコードを読み込む
マッチングの基本パターンは以上だが、各条件においてアプリケーションの要求に応じた処理を行う。例えば本例では次のようになる。
条件1のとき、売上トランザクションの金額を売上累積の金額に加算する
条件2のとき、売上累積レコードを売上累積ファイルに出力する
条件3のとき、売上トランザクションレコードを売上累積ファイルに出力する
この部分のバリエーションにより、ファイルのマージ、ファイルから特定のレコードを削除するといった処理が可能となる。

入出力構成図

[cob03_02.png]

処理前後のファイルの内容

[cob03_03.png]

プログラム構造図

[cob03_01.png]

ソースコード