V3R6 以降の RPG IV の主な拡張機能は、データベース・ヌル値フィールドに対する新規サポートと、式の中間結果の精度をさらに厳密に制御する機能です。 それ以外の拡張機能としては、浮動小数点データ・タイプの追加や、null 文字で終了するストリングのサポートなどが含まれます。 これらの拡張機能によって、i5/OS オペレーティング・システムおよび ILE 言語間通信との統合について、RPG 製品がさらに改善されました。 これは、アプリケーションにおける柔軟性が大きく向上するということです。
以下は、これらの拡張機能 (いくつかの新しい組み込み関数と使用可能度の強化も含む) をリストしたものです。
この拡張機能によって、ヌル可能フィールドにヌル値があるかどうかをテストし、そのフィールドをヌル値に設定できるようにすることにより、ユーザーが、ヌル可能フィールドを含むデータベース・ファイルを処理できるようになります。
フリー・フォームで表現される仕様書における新しい制御仕様書キーワードおよび新しい命令コード・拡張によって、ユーザーが、中間結果の精度をより厳密に制御することができるようになります。
新しい浮動小数点データ・タイプには、他のデータ・タイプより広い範囲の値があります。 このデータ・タイプが追加されたことで、i5/OS データベースの統合が進み、ILE 環境内における言語間通信、特に C および C++ 言語との通信が向上されます。
NULL 文字で終了するストリングを新しくサポートすることにより、言語間通信が向上しました。このサポートにより、ユーザーは、null 文字で終了するストリングを定義、処理し、さらに null 文字で終了するストリングを待っているプロシージャーにパラメーターとして文字データを簡単に渡すことができるようになり、ひいては null 文字で終了するストリングを完全に制御できるようになりました。
フリー・フォームの式の機能が強化され、ポインターにオフセットを加えたり、ポインターからオフセットを引いたり、また、2 つのポインター間の差を求めることができるようになりました。
10 文字よりも長い名前が、RPG 言語に追加されました。 定義仕様書またはプロシージャー仕様書で定義されたものには長名を付けることができ、これらの名前は、記入項目の境界内に収まる位置であればどこでも使用することができます。 さらに、フリー・フォームの仕様書で参照される名前は、複数の行に連続する場合があります。
この言語に新しい組み込み関数がいくつか追加され、それにより、以下の言語機能が向上しました。
RPG IV は、条件付きコンパイルをサポートするように拡張されています。 このサポートには以下の内容が含まれます。
データ処理命令を向上するために、いくつかの拡張が行われました。 TIME 命令コードは、結果フィールド内の日付、時刻またはタイム・スタンプの各フィールドをサポートするように拡張されています。 文字フィールドとの間で日付または時刻を転送する場合には、区切り記号が必要です。UDATE および *DATE フィールドの転送には、形式コードを指定する必要はなくなりました。 日付フィールドは、定義仕様書のシステム (*SYS) またはジョブ (*JOB) の日付に初期設定することができます。
特定の文字変数を定義して、比較において代替照合順序が使用されないようにすることができます。
/COPY 指示のネストが可能になりました。すなわち、/COPY メンバーに 1 つ (または複数) の /COPY 指示を含めることができます。その指示には、さらに別の /COPY 指示などを含めることができます。
新しい記憶管理命令コードを使用して、記憶域の割り振り、再割り振り、および割り振り解除が動的に行えるようになりました。
記憶管理エラーを示すための状況コードが 2 つ (425 および 426) 追加されました。また、中間浮動結果が小さ過ぎることを示すための状況コード 104 も追加されています。
以下の表に、影響を受ける言語の部分別に、変更のあった言語要素と新しい言語要素を 要約します。
言語単位 | 要素 | 説明 |
---|---|---|
定義仕様書キーワード | ALIGN | 以前にサポートされている整数および符号なしの位置合わせに加え、浮動サブフィールドの位置合わせをするために、ALIGN が使用できるようになりました。 |
OPTIONS(*NOPASS *OMIT *VARSIZE *STRING) | *STRING オプションによって、NULL 文字で終了するストリングとして文字値を渡すことができます。 | |
レコード・アドレス・タイプ | F (浮動形式) | ファイル仕様書で使用可能なレコード・アドレス・タイプのリストに追加されました。 プログラム記述ファイルについての浮動処理をシグナルします。 |
内部データ・タイプ | F (浮動形式) | 定義仕様書で使用可能な内部データ・タイプのリストに追加されました。 浮動小数点独立フィールド、パラメーター、またはデータ構造サブフィールドを定義します。 |
データ形式 | F (浮動形式) | プログラム記述ファイルの入力仕様書および出力仕様書で使用可能なデータ形式のリストに追加されました。 |
言語単位 | 新規 | 説明 |
---|---|---|
制御仕様書キーワード | COPYNEST('1 〜 2048') | /COPY 指示のネストのための最大の深さを指定します。 |
EXPROPTS(*MAXDIGITS | *RESDECPOS) | 精度のタイプの式オプション (デフォルト値または「結果の小数点以下の桁数」精度規則) | |
FLTDIV{(*NO | *YES)} | 式の中のすべての除算命令が浮動小数点で計算されることを示します。 | |
定義仕様書キーワード | ALTSEQ(*NONE) | 代替照合順序が指定されている場合でも、文字比較に通常の照合順序を使用することを強制します。 |
組み込み関数 | %ABS | パラメーターとして指定されている数値式の絶対値を戻します。 |
%DEC & %DECH | 数値式の値を、パラメーターとして指定されている桁数および小数点以下の桁数を持つ 10 進 (パック) 形式に変換します。 %DECH は %DEC と同じですが、四捨五入が適用されます。 | |
%DECPOS | 数値変数または数値式の小数点以下の桁数を戻します。 戻される値は定数で、定数が予期されているところに使用されます。 | |
%EDITC | この関数は、編集コードに従って編集された数値を表す文字結果を戻します。 | |
%EDITFLT | 数値式の値を、浮動の文字外部表示表現に変換します。 | |
%EDITW | この関数は、編集ワードに従って編集された数値を表す文字結果を戻します。 | |
%FLOAT | 数値式の値を、浮動形式に変換します。 | |
%INT & %INTH | 数値式の値を、整数に変換します。10 進数はすべて %INT によって切り捨てられ、%INTH によって丸められます。 | |
%LEN | 変数式の数字または文字の数を戻します。 | |
%NULLIND | ヌル可能フィールドのヌル標識を照会または設定するために使用されます。 | |
%SCAN | ソース・ストリングの中の検索引数の 1 桁目、またはそれが見付からない場合には 0 を戻します。 | |
%STR | NULL 文字で終了するストリングを作成または使用するために使用します。このストリングは、C および C++ アプリケーションで非常に一般的に使用されています。 | |
%UNS & %UNSH | 数値式の値を符号なし形式に変換します。 10 進数はすべて %UNS によって 切り捨てられ、%UNSH によって丸められます。 | |
命令コード拡張 | N | DEALLOC が正常に行われた後、ポイントを *NULL に設定します。 |
M | デフォルトの精度規則 | |
R | 小数点以下の桁数が、結果の小数点以下の桁数より少ない中間値はなくなります ("結果の小数点以下の桁数" 精度の規則)。 | |
命令コード | ALLOC | 記憶域を動的に割り振るために使用します。 |
DEALLOC | 記憶域を動的に割り振り解除するために使用します。 | |
REALLOC | 記憶域を動的に再割り振りするために使用します。 |
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.