CL

69. CRTCLPGM ではなく CRTBNDCL でコンパイルを

CLPのコンパイルは圧倒的に CRTCLPGM コマンドによってコンパイルされていると思われるが
CRTCLPGM によってコンパイルされて作成された *PGMDSPPGM コマンドによって表示すると
次のようにプログラム・タイプが 「OPM」 ( = Original Program Model ) と表示される。

プログラム・タイプ(OPM)

次に全く同じプログラムを同じソースを使って CRTBNDCL コマンドを使ってコンパイルすることもできる。
このときは作成された *PGM のプログラム・タイプは 「ILE」 ( = Integlated Language Enviroment ) となる。

プログラム・タイプ(ILE)

何がちがうのだろうか ?
CRTCLPGMRTVCLSRC 可能 = *YES (これが省略値) でコンパイルした場合は
RTVCLSRC コマンドによって元の CLPソースを抽出することができるが、CRTBNDCL でコンパイルされた
*PGM は、そのようなデコンパイルはできない。
では CRTCLPGM のほうが良いのかというとそうではない。
最も大きな違いはマルチスレッド環境下における動作である。

の違いが明確にある。
今のジョブは意図的に環境を変えない限りは、マルチスレッド: *NO として動作している。
しかし、一般的な他のOSプラットフォームと比べてみるとマルチスレッドが使えない、シングル・タスクの
環境自体がオールド・スタイルすぎるのである。
将来を見据えるのであれば CLP のコンパイルはこれからは CRTCLPGM ではなく、CRTBNDCL によって
コンパイルすべきではないだろうか ?