RPG の「219. ILE-RPG の正しいコンパイルの方法」でも説明したように
省略値のいうとおりにコンパイルしたのでは活動化グループが *NEW
ではなく
*DFTACTGRP
、つまり QILE
という名前の活動化グループとなってしまい、
同じジョブで複数回、実行されたときに前の変数値の前残りが発生してしまって
予測できない障害を発生する可能性がある。
これは IBM が旧リリースでは CRTBNDRPG
や CRTBNDCL
も *NEW
でコンパイルするようにしていたのを
あるとき突然、*DFTACTGRP
に省略値を変更してしまったのである。
このことは米国ユーザーではよく知られており、一般的には *NEW
に変更してコンパイルすることが
公然の事実としてよく知られている。
日本国内ではまだ知らない人も多いかも知れないので
CRTBNDCL コンパイラーについてここで説明することとする。
CRTBNDCL
コマンドの実行においては「省略時の活動化グループ」(→OS のリリースによっては
IBM の翻訳ミスで活動化グループを活性化グループとなっている場合もある。) を *YES
から *NO
に変更して
活動化グループ・パラメーターを QILE
から *NEW
に変更する。
バインド CL PGM の作成 (CRTBNDCL) 選択項目を入力して,実行キーを押してください。 プログラム . . . . . . . . . . > GETPTFCL 名前 ライブラリー . . . . . . . . . . . > SPOOLWTR 名前 , *CURLIB ソース・ファイル . . . . . . . > QCLLESRC 名前 ライブラリー . . . . . . . . . . . > R610SRC 名前 , *LIBL, *CURLIB ソース・メンバー . . . . . . . *PGM 名前 , *PGM テキスト ' 記述 ' . . . . . . . *SRCMBRTXT 省略時の活動化グループ . . . . > *NO *YES, *NO 活動化グループ . . . . . . . . > *NEW 名前 , *STGMDL, *NEW, *CALLER ストレージ・モデル . . . . . . *SNGLVL *SNGLVL, *TERASPACE 追加のパラメーター 権限 . . . . . . . . . . . . . > *ALL 名前 , *LIBCRTAUT, *CHANGE...
※ CRTBNDCL は使用する機会は少ないかも知れない。
CRTBNDCL
は SEU のソース・タイプ CLLE をコンパイルするコマンドである。
もちろん CRTCLMOD + CRTPGM
でもかまわないのであるが、これらをひとつでコンパイルできる
コマンドである。
CRTBNDCL
は、サービス・プログラムのバインドを指定することはできないが
IBM 提供のサービス・プログラムはサービス・プログラムやバインド・ディリクトリーの指定なしに
バインドすることができる。
従ってこのようなときには CRTCLMOD+ CRTPGM
よりも CRTBNDCL
によってコンパイルすることが多い。