検証⑥の続きです。
これまで①~⑥では、下記のように修正する変数名を明示指定して修正をさせていたました。この意味でストリングサーチして置換する、という作業をさせていたと理解しています。
今回は、RPG(ILE RPG、RPGⅢ)の修正条件をより業務寄りで記述して試してみたいと思います。
テスト1 : '消費税率を修正する' のように指定してみる
今回は以下のように指定してみました。
命令:RPGのソースを読み込んで指示通りにプログラムを修正する。
例:以下のRPGから消費税計算を探し出し、消費税を1.05に修正する。
消費税は変数=KEISUで与えられている。
テスト結果
下記のように消費税率の変数として指定したKEISUを探し出し正しく修正されました。
テスト2 : 消費税の変数名を2つ指定してみる。
下記のように変更したい変数を2つ指定してみました。うち1つ(ZEI)は実際にはプログラムソース上で使われていないものです。(棚卸ツールなどで消費税の計算フィールド名が全てわかっている、という状況を想定したケース)
例に以下を指定
消費税は変数=KEISU、または変数=ZEI で与えられている。
結果は省略しますが、テスト1と同様に正しく修正されました。
テスト3 : テスト2の例を変更してみる。
下記のように例で指示した変数名2つの順番を入れ替えてみました。
すると、、変数名もKEISUからZEIに置換されてしまいました・・
指示文が適切でないようです・・
テスト4 : テスト3の変数名2つの例への入力値を修正
guriguriさんコメントのリンクと下記の記事を参考に修正してみました。
https://qiita.com/yanagih/items/3d1b081f46799072df80
下記のように入力と出力の例に入力してみました。
※ZEIとKEISUを1行目・2行目逆にしても同じ結果になりました。
結果、正常にKEISUが修正されました!
他のパターンもいろいろ試してみたいと思います。
使用したRPGソース(RPGⅢ)当シリーズ⑤で使用したソースと同一です。
H Y
F* IPH110 *
FIPH110S CF E WORKSTN
FTOKMSL01IF E K DISK
C DO *HIVAL
C*PANEL01の表示
C EXFMTPANEL01
C *IN03 IFEQ '1'
C SETON LR
C RETRN
C END
C*得意先マスターの読み取り
C S1TOKB CHAINTOKMSL01 30
C *IN30 IFEQ '0'
C*画面フィールドセット
C MOVELTKNAKJ S2NAKJ
C MOVELTKADR1 S2ADR1
C MOVELTKADR2 S2ADR2
C MOVELTKTIKU S2TIKU
C MOVELTKPOST S2POST
C MOVELTKGEND S2GEND
C MOVELTKUZAN S2UZAN
C*係数計算
C KEISU MULT 1.10 KEISU
C TKGEND MULT KEISU TKGEND
C*
C*差額計算
C TKGEND SUB TKUZAN S2GAKU
C*
C*PANEL02の表示
C SETOF 30
C WRITEPANEL01
C EXFMTPANEL02
C *IN03 IFEQ '1'
C SETON LR
C RETRN
C ENDIF
C*
C ENDIF
C ENDDO