ファイルが2本の場合比較するキーの値は (A < B) (A = B) (A > B) の3通りです。 どちらかが先にFILE-ENDになったら、キーの大小関係を保証するために High-Value を入れて制御します。 実は『併合処理』の場合もこのドライバの部分は共通で、機能の内容が変わるだけです。
***** 2本matching 突合処理のドライバ ***** [MATDV2] (20 F10) * [ データの社員cdに 重複・err がある場合も含む ] * * [ 制御を総てキー値 (high-value利用)で行う場合 ] * * ( ) 内に命令等を記述する procedure division. ********** [ 制御 - module ] ********** open input (f1) (f2) output (f3) perform f1-rtn thru f1-ex perform f2-rtn thru f2-ex * ***** [両方のデータが無くなるまで] ***** perform until (f1キー) = high-value and (f2キー) = high-value evaluate true when (f1キー < f2キー) perform s1-rtn thru s1-ex perform f1-rtn thru f1-ex when (f1キー = f2キー) perform s2-rtn thru s2-ex perform f2-rtn thru f2-ex when (f1キー > f2キー) perform s2-rtn thru s2-ex perform f2-rtn thru f2-ex end-evaluate end-perform close (f1) (f2) (f3) stop run. ********** [ 機能 - module ] ********** s1-rtn. (f1を書き出す). s1-ex. exit. s2-rtn. (f1キー = f2キー の時の処理). s2-ex. exit. s2-rtn. (f2 error の処理). s2-ex. exit. ********** [ 読込 - module ] ********** f1-rtn. read (f1) end move high-value to (f1キー) not end continue end-read. f1-ex. exit. f2-rtn. read (f2) end move high-value to (f2キー) not end continue end-read. f2-ex. exit.