V4R4 での変更点

V4R2 以降の RPG IV の主な拡張機能は、スレッド化された 環境内で ILE RPG モジュールを安全に実行するための サポート、新しい 3 桁および 20 桁の符号付きおよび符号なし数字データ・タイプ、 さらに新しい汎用文字セット バージョン 2 (UCS-2) データ・タイプのサポート と、UCS-2 フィールドと図形フィールドまたは 1 バイト文字フィールドとの間の 変換のサポートです。

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

このリリースでは、これ以外の拡張も行われています。次のような機能強化がなされました。

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

表 1. 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 が追加されました。
表 2. 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 これを使用すると、サブルーチン内のどこからでも終了することができます。