V4R4 での変更点
V4R2 以降の RPG IV の主な拡張機能は、スレッド化された 環境内で ILE RPG モジュールを安全に実行するための サポート、新しい 3 桁および 20 桁の符号付きおよび符号なし数字データ・タイプ、 さらに新しい汎用文字セット・バージョン 2 (UCS-2) データ・タイプのサポート と、UCS-2 フィールドと図形フィールドまたは 1 バイト文字フィールドとの間の 変換のサポートです。
以下は、これらの拡張機能をリストしたものです。
- Domino または Java™ など、スレッド化されたアプリケーションからの ILE RPG プロシージャー呼び出しのサポート。
- 新しい制御仕様書のキーワード THREAD(*SERIALIZE) は、マルチスレッド化された環境内 で実行できるようになっているモジュールを識別します。 モジュール内のプロシージャーへ のアクセスは、順番に行われます。
- 新しい 1 バイトおよび 8 バイトの数字データ・タイプ: 3I および 20I 符号付き
整数と、3U および 20U 符号なし整数。
- これらの新しい整数データ・タイプによって、整数値の範囲が広がり、それとともに整数計算のパフォーマンスが向上し、64 ビット AS/400 RISC 処理装置 を最大限活用できます。
- 新しい 3U タイプを使用すると、値によって渡された 1 バイト文字 (CHAR) の戻りの型とパラメーターを持つ、ILE C プロシージャーとの通信がより簡単にできるように なります。
- 新しい INTPREC 制御仕様書キーワードによって、式の中の整数および 符号なし 2 進算術演算の中間値に、20 桁の精度を指定できます。
- 整数の除算と剰余演算をサポートする組み込み関数 %DIV および %REM が追加さ れました。
- 新しい汎用文字セット バージョン 2 (UCS-2) つまり Unicode データ・タイプ のサポート
- UCS-2 (Unicode) 文字セットは、多数の書き込み言語の文字を コーディングできます。 このフィールドは、文字の長さが 2 バイトの文字フィールドです。
- Unicode のサポートを追加することによって、多国籍企業用に 1 つのアプリケーションを開発できるようになり、コード・ページ変換の必要性が最小限になりました。 Unicode を使用することにより、保全性を失わずに、複数のスクリプトでの文字の処理 が可能になります。
- MOVE 命令と MOVEL 命令の使用による、UCS-2 フィールドと図形文字フィールドまたは 1 バイト文字フィールドとの間の変換と、新しい %UCS2 組み込み関数および %GRAPH 組み込み関数のサポート。
- コード化文字セット ID (CCSID) の異なる UCS-2 フィールド間または図形フィールド間での、EVAL、MOVE、および MOVEL 命令を使用する変換と、新しい %UCS2 組み込み関数のサポート。
このリリースでは、これ以外の拡張も行われています。次のような機能強化がなされました。
- OPTION 制御仕様書キーワードおよび作成コマンドの新規パラメーター
- *SRCSTMT を指定すると、コンパイラー・リストでソース ID および SEU 順序番号からデバッグ用のステートメント番号を割り当てられます。 (ステートメント番号は、コンパイラー・リスト内のエラーを識別するためにデバッガーが使用し、また、実行時エラーが発生したステートメントを識別するためにも使用されます。) *NOSRCSTMT は、ステートメント番号がリストの行番号と関連付けられ、番号が順番に割り当てられるよう指定します。
- *NODEBUGIO によって、デバッグ・ビュー内の入力仕様と出力仕様の停止点を 生成しないように選択できるようになりました。このオプションを選択すると、デバッガーにおける READ ステートメントの STEP によって、入力仕様のステップを進むのではなく、次の計算に進みます。
- 次のような、INZ 定義仕様書キーワードの新しい特殊語
- INZ(*EXTDFT) によって、外部記述データ構造サブフィールドを初期化 するために、DDS 内のデフォルト値を使用できます。
- INZ(*USER) によって初期化された文字変数は、現行ユーザー・プロファイル の名前に初期化されます。
- 新しい %XFOOT 組み込み関数は、指定された配列式の全要素を合計します。
- 新しい EVALR 命令コードは、式を評価し、その結果を、固定長文字 または図形の結果に割り当てます。 この割り当てにより、データは、結果内で右寄せされま す。
- 新しい FOR 命令コードは、反復ループを実行し、初期値、増分値、および限界値 に自由形式の式が使用できるようにします。
- 新しい LEAVESR 命令コードを使用すると、サブルーチン内の任意の地点から終了 できます。
- 新しい *NEXT パラメーターを OVERLAY(name:*NEXT) キーワードで 使用すると、サブフィールドが、次に使用可能な位置で別のサブフィールドとオーバーレイ することを示します。
- SETLL 命令コードの新しい *START 値および *END 値は、ファイルの先頭または終端に位置付けます。
- 初期化演算および自由形式演算 (例えば、EVAL、IF など) で整数フィールドおよび符号 なし整数フィールドをもつ 16 進リテラルが使用可能。
- 新しい制御仕様書キーワード OPENOPT {(*NOINZOFL | *INZOFL) } 。ファイルがオープンされたときにオーバーフロー標識を *OFF にリセットするかど うかを指示します。
- テラバイト・スペース内、つまり、1 つの割り振りで 16 メガバイトを超える連続する記憶域を許すメモリー・モデルでの ポインターの許容。
次の表は、影響を受けた言語の部分に基づいて、変更された言語要素および新 しい言語要素を要約したものです。
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 制御仕様書キーワード | OPTION(* {NO }SRCSTMT) | *SRCSTMT を指定すると、デバッグ用のステートメント番号を生成する際にコンパイラーが SEU 順序番号およびソース ID を使用するよう要求できます。上記以外の場合、ステートメント番号が、そのリストの行番号と関連付けられ、 それらの番号は順次に割り当てられます。 |
| 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 桁目 (終了位置/長さ) | 3 桁および 20 桁が、I データ・タイプと U データ・タイプに使用できます。 | 1 バイトおよび 8 バイト の整数と符号なしデータ をサポートするために、内部データ・タイプに使用できる値のリストに追加 されました。 |
| 内部データ・タイプ | C (UCS-2 固定長形式または可変長形式) | 定義仕様書で使用可能な内部データ・タイプのリストに追加されました。 UCS-2 (Unicode) 文字セットは、多数の書き込み言語の文字を コーディングできます。 このフィールドは、文字の長さが 2 バイトの文字フィールドです。 |
| データ形式 | C (UCS-2 固定長形式または可変長形式) | UCS-2 形式が、プログラム記述ファイルの入力仕様書および出力仕様書で使用可能なデータ形式のリストに追加されました。 |
| コマンド・パラメーター | OPTION | CRTBNDRPG および CRTRPGMOD コマンドの OPTION パラメーターに *NOSRCSTMT、*SRCSTMT、 *NODEBUGIO、および *DEBUGIO が追加されました。 |
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 制御仕様書キーワード | 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 | 命令のグループを開始してそのグループを処理する回数を指示 します。初期値、増分値、限界値は、自由形式の式にすることができます。 | |
| ENDFOR | ENDFOR は、FOR 命令によって開始された命令のグループを終了します。 | |
| LEAVESR | サブルーチン内の任意の場所から終了するのに使用します。 |