基本となるファイルのキーはユニーク(重複しない)として、データの2本にそれぞれキーの重複・分散がある場合、考え方に2通りあります。1つの考え方は、データの重複があるので、キーが変わるまで同じファイルを読み続ける、もう1つは、ある条件で1件単位に処理をした後、そのファイルだけ読んでまた比較判定をするという方法です。両方検討した結果、1件単位の処理の方が簡潔なアルゴリズムになると考えて作成しました。
***** 3本matching 突合処理のドライバ ***** [MATDV3] (20 f10) * [ データの社員cdに 重複・分散・err がある場合 ] * * [ 制御を総てキー値 (high-value利用)で行う場合 ] * * ( ) 内に命令等を記述する procedure division. ********** ( driver - module ) ********** open input (f1) (f2) (f3) output (f4) perform f1-rtn thru f1-ex perform f2-rtn thru f2-ex perform f3-rtn thru f3-ex perform until (f1キー = high-value) and (f2キー = high-value) and (f3キー = high-value) evaluate true when (f1キー < f2キー) and (f1キー < f3キー) perform s1-rtn thru s1-ex perform f1-rtn thru f1-ex when (f1キー > f2キー) perform e2-rtn thru e2-ex perform f2-rtn thru f2-ex when (f1キー > f3キー) perform e3-rtn thru e3-ex perform f3-rtn thru f3-ex when (f1キー = f2キー) perform s2-rtn thru s2-ex perform f2-rtn thru f2-ex when (f1キー = f3キー) perform s3-rtn thru s3-ex perform f3-rtn thru f3-ex end-evaluate end-perform close (f1) (f2) (f3) (f4) stop run. ********** ( process - module ) ********** s1-rtn. (f1 を書き出す). s1-ex. exit. s2-rtn. (f1キー = f2キー の時の処理). s2-ex. exit. s3-rtn. (f1キー = f3キー の時の処理). s3-ex. exit. ********** ( error - module ) ********** e2-rtn. (f2 が error の時の処理). e2-ex. exit. e3-rtn. (f3 が error の時の処理). e3-ex. exit. ********** ( read - 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. f3-rtn. read (f3) end move high-value to (f3キー) not end continue end-read. f3-ex. exit.