V3R7 での変更点

V3R6 以降の RPG IV の主な拡張機能は、データベース・ヌル値フィールドに対する新規サポートと、式の中間結果の精度をさらに厳密に制御する機能です。 それ以外の拡張機能としては、浮動小数点データ・タイプの追加 や、ヌル文字で終了するストリングのサポートなどが含まれます。 これらの拡張機能によって、i5/OS オペレーティング・システム および ILE 言語間通信との統合に関して、RPG 製品が さらに改善されました。これは、アプリケーション開発における柔軟性が大きく向上する ということです。

以下は、これらの拡張機能 (いくつかの新しい組み込み関数と使用可能度の強化 も含む) をリストしたものです。

次の表は、影響を受けた言語の部分に基づいて、変更された言語要素および新 しい言語要素を要約したものです。

表 13. V3R6 以降に変更された言語要素
言語単位 要素 説明
定義仕様書キーワード ALIGN 以前にサポートされている整数および符号なしの位置合わせに 加え、浮動サブフィールドの位置合わせをするために、ALIGN が 使用できるようになりました。
OPTIONS(*NOPASS *OMIT *VARSIZE *STRING) *STRING オプションによって、ヌル文字で終了するストリング として文字値を渡すことができます。
レコード・アドレス・タイプ F (浮動形式) ファイル仕様書で使用可能なレコード・アドレス・タイプ のリストに追加されました。 プログラム記述ファイルについての浮動処理をシグナルします。
内部データ・タイプ F (浮動形式) 定義仕様書で使用可能な内部データ・タイプのリストに追加されました。 浮動小数点独立フィールド、パラメーター、または データ構造サブフィールドを定義します。
データ形式 F (浮動形式) プログラム記述ファイルの入力仕様書 および出力仕様書で 使用可能なデータ形式のリストに追加されました。
表 14. V3R6 以降の新しい言語要素
言語単位 新規 説明
制御仕様書キーワード 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 ヌル文字で終了するストリングを作成または使用するために 使用します。このストリングは、C および C++ アプリケーションで 非常に一般的に使用されています。
%UNS & %UNSH 数値式の値を符号なし形式に変換します。 10 進数はすべて %UNS によって 切り捨てられ、%UNSH によって丸められ ます。
命令コード拡張 N DEALLOC が正常に行われた後、 ポイントを *NULL に設定します。
M デフォルトの精度規則
R 小数点以下の桁数が、結果の小数点以下の桁数より少ない中間値は なくなります ("結果の小数点以下の桁数" 精度の規則)。
命令コード ALLOC 記憶域を動的に割り振るために使用します。
DEALLOC 記憶域を動的に割り振り解除するために使用します。
REALLOC 記憶域を動的に再割り振りするために使用します。