PRO COBOLでFETCH時に値を変換する
PRO COBOLでoracleデータを読み込むプログラムを変更しようとしています。
元のプログラムは、
-----------------------------
WORKING-STORAGE SECTION.
EXEC SQL
DECLARE table10c CURSOR FOR
SELECT table10.item11,
table10.item12
FROM table10,table20
WHERE table10.item13 = table20.item23
END-EXEC
---
PROCEDURE DIVISION.
EXEC SQL
FETCH table10c
INTO file-item11, ←出力ファイルの項目1
file-item12 ←出力ファイルの項目2
END-EXEC.
-----------------------------
となっていて、item13 と等しい値が table20.item23 にある場合
item11 と item12 の値を順次、ファイルに出力しています。
今回、仕様を変更し、item11の値を変換してファイルに
出力しようとしています。
変換する値は、テーブル:henkan に登録しています。
項目1:old-item ・・・table10.item11にセットしている値
項目2:new-item ・・・file-item11にセットしたい値
WHERE句の条件は、そのままです。
(WHERE table10.item13 = table20.item23)
但し、item11の値は全て変換するわけではなく、
テーブル:henkan に一致するレコードが有る場合のみ
つまり table10.item11 = henkan.old-item の場合のみ
file-item11 に henkan.new-item の値を出力し、
それ以外の場合には、table10.item11 の値をセットします。
この変更を極力少ないロジックの改修で済ませたく
基本的には 「DECLARE table10c CURSOR」句の変更と
したいです。
「SELECT table10.item11,」の項目を変数にして
変換した場合は、henkan.new-item の値をセットし
変換しない場合には、table10.item11 の値をセットできれば
良いのではないかと思っていますが具体的な方法が判りません。
同様の変更を(出力条件等の異なる)複数のプログラムに
行うつもりで「PROCEDURE DIVISION」は、複雑になっているため
変更は最小限としたいです。
PRO COBOLの経験が少なく、アドバイスをお願いします。