V3R7 での変更点

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

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

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

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