RPG

329. RPG Ⅲ から ILE-RPG への移行 (2)

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 ソースへ変換されるということである。

【例外1】シフト文字を含んでいる 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' を記述しなければならない。

【例外2】DEBUG 印刷出力

 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-仕様書までが フリー・フォーマットで
書かれていて固定式の表示はほとんど見当たらない。
現在ではいくら何でもやりすぎの感じがしている。