V4R4 での変更点
V4R2 以降の RPG IV の主な拡張機能は、スレッド化された 環境内で ILE RPG モジュールを安全に実行するための サポート、新しい 3 桁および 20 桁の符号付きおよび符号なし数字データ・タイプ、 さらに新しい汎用文字セット バージョン 2 (UCS-2) データ・タイプのサポート と、UCS-2 フィールドと図形フィールドまたは 1 バイト文字フィールドとの間の 変換のサポートです。
以下に、これらの強化機能について説明します。
- Domino®
あるいは Java™
のように、スレッド化されたアプリケーションから ILE RPG プロシージャーを呼び出すためのサポート。
- 新しい制御仕様書キーワード THREAD(*SERIALIZE) は、マルチスレッド環境で実行 できるようになったモジュールを識別するものです。モジュール内のプロシージャーへ のアクセスは、順番に行われます。
- 新しい 1 バイトおよび 8 バイト数字データ・タイプのサポート。3I および
20I 符号付き整数。3 および 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 命令コードを使用すると、サブルーチン内の任意の地点から終了 できます。
- OVERLAY(名前:*NEXT) キーワードの新しい *NEXT パラメーター。これを使用すると、あるサ ブフィールドが、次の使用可能位置で別のサブフィールドをオーバーレイするよう指示 できます。
- SETLL 命令コードの新しい *START 値および *END 値は、ファイルの先頭または終端に位置付けます。
- 初期化演算および自由形式演算 (例えば、EVAL、IF など) で整数フィールドおよび符号 なし整数フィールドをもつ 16 進リテラルが使用可能。
- 新しい制御仕様書キーワード OPENOPT{(*NOINZOFL | *INZOFL)}。ファイルがオープンされたときにオーバーフロー標識を *OFF にリセットするかど うかを指示します。
- テラバイト・スペース内、つまり、1 つの割り振りで 16 メガバイトを超える連続する記憶域を許すメモリー・モデルでの ポインターの許容。
以下の表に、影響を受ける言語の部分別に、変更のあった言語要素と新しい言語要素を 要約します。
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 制御仕様書キーワード | 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 が追加されました。 |
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 制御仕様書キーワード | 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 | これを使用すると、サブルーチン内のどこからでも終了することができます。 |