- 締切済み
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の経験が少なく、アドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maiko0318
- ベストアンサー率21% (1483/6969)
お礼
早い回答ありがとうございます。 試してみます。