CVTRPGSRC CVTPRT( *NO ) LOGFILE( *NONE ) コマンドを使えば
RPG Ⅲ から ILE-RPG へ RPG ソースを移行することができると
「297. CVTRPGSRC コマンドの使い方」で紹介した。
ILE-RPG でどのように書けばよいのかまだ不安な方であっても
CVTRPGSRC コマンドを使えば ILE-RPG ソースを生成することができる。
ILE-RPG ではどのように記述すればよいかわからない場合でも
一部だけでも RPG Ⅲ で記述したソースを CVTRPGSRC コマンドで変換すれば
ILE-RPG ソースにバグなく変換されるので ILE-RPG ソースの書き方を学習する
ことができる。
それでは CVTRPGSRC はすべての RPG Ⅲ ソースに対応しているのかというと
そうではない。
現在、わかっているだけで2つの例外がある。
逆に言えば2つの例外以外であれば正しく ILE-RPG ソースへ変換されるということである。
C MOVE ' ' OEOF 2 C MOVELOEOF OE 1 C MOVE OEOF OF 1
このような例はよく見られるのだが
C MOVE X'0E0F' OEOF 2 C MOVEL OEOF OE 1 C MOVE OEOF OF 1
のように X'0E0F' を記述しなければならない。
H 1 Y/ ANS001 FQPRINT O F 132 OF LPRINTER : C 'DEBUG' DEBUGQPRINT
H-仕様書のデバッグ欄に 1 を記述して演算仕様書で DEBUG 命令を記述すると
印刷ファイル: QPRINT にディバッグ情報が出力される、という
ディバッグの方法であるが、これはサポートされていない。
H-仕様書のディバッグ欄は ILE ではないし、 演算の DEBUG 命令も ILE-RPG では
存在しないのでコンパイル・エラーとなってしまう。
この二つだけが CVTRPGSRC で変換することができない例外である。
ただし CVTRPGSRC は ILE-RPG には変換するがフリー・フォーマットには
変換しない。
最近の IBM マニュアルの記述はサンプル・ソースがほとんどがフリー・フォーマットで
書かれており 演算命令だけでなく H-仕様書や F-仕様書までが フリー・フォーマットで
書かれていて固定式の表示はほとんど見当たらない。
現在ではいくら何でもやりすぎの感じがしている。