V4R4 での変更点

V4R2 以降 RPG IV に施された機能強化の主だったものとして、スレッド環境で ILE RPG モジュールを安全に実行するためのサポート、3 桁および 20 桁の符号付き および符号なしの新しい数字データ・タイプ、新しい汎用文字セット・バージョン 2 (UCS-2) データ・タイプおよび UCS-2 フィールドとグラフィックまたは単一バイト文字 フィールド間の変換についてのサポートが挙げられます。

以下に、これらの強化機能について説明します。

このリリースについては、この他にも、次のような機能強化がなされました。

以下の表に、影響を受ける言語の部分別に、変更のあった言語要素と新しい言語要素を 要約します。

表 9. V4R2 以降変更された言語要素
言語単位 要素 説明
制御仕様書キーワード OPTION(*{NO}SRCSTMT) *SRCSTMT は、デバッグのためにステートメント番号を生成する際にコンパイラーが SEU 順序番号およびソース ID を使用するよう要求できるようにします。 *NOSRCSTMT の場 合は、ステートメント番号はリストの行番号と関連付けられ、数字が順番に割り当てられ ます。
OPTION(*{NO}DEBUGIO) *{NO}DEBUGIO は、入出力仕様書について停止点を生成するかどうか を決定します。
定義仕様書キーワード INZ(*EXTDFT) 外部記述データ構造サブフィールドが、DDS 内で指定されているデフォルト値に初期設定できるようになりました。
INZ(*USER) いずれの文字フィールドまたはサブフィールドも、現行ユーザー・プロファイル の名前に初期設定できます。
OVERLAY(名前:*NEXT) 特殊値 *NEXT は、サブフィールドをオーバーレイされたフィールド内の次に使用可能な 位置に配置することを指示します。
OPTIONS(*NOPASS *OMIT *VARSIZE *STRING *RIGHTADJ) 関数プロトタイプ内の値または固定情報パラメーターに指定された新しい OPTIONS(*RIGHTADJ) は、パラメーターとして渡された文字、図形、または UCS-2 値は、プロシージャー呼び出しで渡される前に右寄せすることを示します。
定義仕様書 33 〜 39 桁目 (終了位置 / 長さ) データ・タイプ I および U について許されている 3 桁および 20 桁 1 バイトおよび 8 バイトの整数符号なしデータをサポートするために、内部データ・タイプに使用できる値のリストに追加されました。
内部データ・タイプ C (UCS-2 固定長形式または可変長形式) 定義仕様書で使用可能な内部データ・タイプのリストに追加されました。 UCS-2 (Unicode) 文字セットは、多くの作成言語について文字をエンコードす ることができます。このフィールドは、文字の長さが 2 バイトの文字フィールドです。
データ形式 C (UCS-2 固定長形式または可変長形式) UCS-2 形式が、プログラム記述ファイルの入力仕様書および出力仕様書で使用可能なデータ形式のリストに追加されました。
コマンド・パラメーター OPTION CRTBNDRPG および CRTRPGMOD コマンドの OPTION パラメーターに *NOSRCSTMT、*SRCSTMT、 *NODEBUGIO、および *DEBUGIO が追加されました。
表 10. V4R2 以降の新規言語要素
言語単位 要素 説明
制御仕様書キーワード CCSID(*GRAPH: *IGNORE | *SRC | 番号) モジュールについてデフォルトのグラフィック CCSID を設定します。この設定値は、リ テラル、コンパイル時刻データ、およびプログラムで記述された入出力フィールドなら びに定義に使用されます。デフォルトは *IGNORE です。
CCSID(*UCS2: 番号) モジュールについてデフォルトの UCS-2 CCSID を設定します。この設定値は、リ テラル、コンパイル時刻データ、およびプログラムで記述された入出力フィールドなら びに定義に使用されます。デフォルトは 13488 です。
INTPREC(10 | 20) 式の 2 進算術演算に整数の符号なし中間値の 10 進精度を指定します。デフォルトであ る INTPREC(10) は、10 桁の精度が使用されることを示します。
OPENOPT{(*NOINZOFL | *INZOFL)} ファイルがオープンされたときにオーバーフロー標識を *OFF にリセットするかど うかを指示します。
THREAD(*SERIALIZE) モジュールがマルチスレッド化環境で実行できるようにすることを指示します。モジュ ール内のプロシージャーへのアクセスは、順番に行われます。
定義仕様書キーワード CCSID(番号 | *DFT) 定義についてグラフィックおよび UCS-2 CCSID を設定します。
組み込み関数 %DIV(n:m) 2 つのオペランド n と m で整数の割り算を実行します。その結果は、n/m の整数部分に なります。これらのオペランドは、小数点以下の桁数がない (ゼロ) 数値でなければなりません。
%GRAPH(文字式 | 図形式 | UCS2 式 {:ccsid}) 単一バイト文字、グラフィック、または UCS-2 データからグラフィック・データに変換 します。
%REM(n:m) 2 つのオペランド n と m に対して整数剰余命令を実行しますが、この結果は n/m の剰 余です。オペランドは、小数点以下の桁数がゼロの数値でなければなりません。
%UCS2(文字式 | 図形式 | UCS2 式 {:ccsid}) 単一バイト文字、グラフィック、または UCS-2 データから UCS-2 データに変換します。
%XFOOT(配列式) 指定された数値配列式内の全要素の合計を求めます。
命令コード EVALR 形式 result=expression の割り当てステートメントを評価します。結果は、右揃えされ ます。
FOR 1 つの命令グループを開始し、そのグループが処理される回数を指示します。初期値、増 分値、および限界値は、自由形式の式でかまいません。
ENDFOR ENDFOR は、FOR 命令で開始された命令グループを終了します。
LEAVESR これを使用すると、サブルーチン内のどこからでも終了することができます。