V5R2 における ILE RPG の拡張機能について、以下に記載します。
組み込み関数 %DEC、%DECH、%INT、%INTH、%UNS、%UNSH、 および %FLOAT が拡張され、文字パラメーターが使用できるようになりました。 例えば、%DEC('-12345.67' : 7 : 2) は、数値 -12345.67 を戻します。
%BITAND、%BITOR、%BITXOR、および %BITNOT で、RPG 式内での直接ビット操作が認められるようになりました。
データ構造定義が拡張され、 データ構造の配列、および LIKEDS で定義されたデータ構造のサブフィールド (これ自体もデータ構造です) が使用できるようになりました。こ のため、配列の配列や、構造の副配列を含む構造の配列といった複雑な構造をコーディングできるようになりました。
例: family(f).child(i).hobbyInfo.pets(p).type = 'dog'; family(f).child(i).hobbyInfo.pets(p).name = 'Spot';
さらに、データ構造は、新しい LIKEREC キーワードを使用して、レコード様式と同じに定義できます。
外部記述データ構造は、プログラマーが選択した入力フィールド、出力フィールド、 両方のフィールド、キー・フィールド、またはすべてのフィールドを保持できます。 現在のところ、外部記述データ構造は入力フィールドのみを保持できます。
プログラマーは、次の 2 つの新しい方法で、/FREE 演算におけるキー付き入出力命令の検索引数を指定できます。
例: D custkeyDS e ds extname(custfile:*key) /free CHAIN (keyA : keyB : key3) custrec; CHAIN %KDS(custkeyDS) custrec;
外部記述ファイルに入出力操作を使うときに、結果フィールドにデータ構造を指定できるようになりました。 これは、 V5R2 より以前は、プログラム記述ファイルでのみ使用できました。 データ構造を使用することで、ファイル内にフィールドが多数ある場合にパフォーマンスを向上させることができます。
UPDATE 操作により、更新するフィールドのリストを指定できるようになりました。V5R2 より前のバージョンでは、これは、例外出力を使用することによってのみ指定できました。
例: update record %fields(salary:status).
パック形式の数値データとゾーン形式の数値データでは、最大 31 の桁数と小数点以下の桁数がサポートされます。 これは、DDS でサポートされる最大長です。V5R2 より以前は、桁数と小数点以下の桁数は 30 桁までサポートされていました。
FEOD 命令が拡張され、この命令は負荷の高いディスクへの書き出しを強制せず、単にブロック化されているバッファーを ローカルに書き出せばよいことを指定する拡張 N をサポートするようになりました。
DTAARA キーワードが拡張され、データ域の名前とライブラリーが実行時に判別できるようになりました。
新しい割り当て演算子 +=、-=、*=、/=、**= によって、変数の古い値に基づいて、より簡潔にその変数を変更できるようになりました。
例: totals(current_customer) += count;
このステートメントは、"totals(current_customer)" を 2 度のコーディングを必要としないで、現在 "totals(current_customer)" にある値に "count" を追加します。
ILE RPG コンパイラーは、メイン・ソース・ファイルと /COPY ファイルの両方を IFS からコンパイルできます。/COPY 指示および /INCLUDE 指示が拡張され、 IFS ファイル名がサポートされるようになりました。
ILE RPG コンパイラーは、PCML を含む IFS ファイルを生成し、パラメーターを プログラム (CRTBNDRPG) またはエクスポートされたプロシージャー (CRTRPGMOD) に表します。
言語単位 | 要素 | 説明 |
---|---|---|
組み込み関数 | %DEC(式) | 文字タイプのパラメーターを使用できるようになりました。 |
%DECH(式) | ||
%FLOAT(式) | ||
%INT(式) | ||
%INTH(式) | ||
%UNS(式) | ||
%UNSH(式) | ||
定義仕様書キーワード | DTAARA({*VAR:}データ域名) | データ域名は、名前、'LIBRARY/NAME' を指定する文字リテラル、または実行時に実際のデータ域を判別する文字変数にすることができます。 |
DIM | データ構造仕様書に使用できます。 | |
LIKEDS | サブフィールド仕様書に使用できます。 | |
) | オプションの「タイプ」パラメーターは、外部記述データ構造のどのタイプのフィールドを抽出するかを制御します。 | |
定義仕様書 | 長さと小数部の桁数入力 | パック・フィールドおよびゾーン・フィールドでは、長さおよび小数点以下の桁数として 31 桁まで指定できます。 |
命令コード | CHAIN, DELETE, READE, READPE, SETGT, SETLL | 自由形式演算において、演算項目 1 をキー値のリストにすることができます。 |
CHAIN, READ, READC, READE, READP, READPE, UPDATE, WRITE | 外部記述ファイルまたはレコード様式で使用される場合、データ構造を結果フィールドに指定できます。 | |
UPDATE | 自由形式演算において、最後の引数に更新されるフィールドのリストを入れることができます。 | |
FEOD | 命令拡張 N を使用できます。これは、書き出されていないバッファーをデータベースが使用できるようにする必要があるが、 必ずしもディスクに書き出す必要がないことを指定します。 | |
演算仕様書 | 長さと小数部の桁数入力 | パック・フィールドおよびゾーン・フィールドでは、長さおよび小数点以下の桁数として 31 桁まで指定できます。 |
言語単位 | 要素 | 説明 |
---|---|---|
式 | 代入演算子 += -= *= /= **= | これらの割り当て演算子を使用する場合、演算のターゲットも演算の第 1 オペランドになります。 |
制御仕様書キーワード | DECPREC(30|31) | %EDITC および %EDITW などの場合に、提示する 10 進数の中間の値の精度を制御します。 |
定義仕様書キーワード | サブフィールドがレコード様式と同じであるデータ構造を定義します。 | |
組み込み関数 | %BITAND(expression : expression) | オペランドの対応するビットが両方ともオンである場合、ビットがオンである結果を戻します。 |
%BITNOT(式) | ビットが引数内のビットの逆である結果を戻します。 | |
%BITOR(expression : expression) | オペランド内の対応するビットのいずれかがオンである場合、ビットがオンである結果を戻します。 | |
%BITXOR(expression : expression) | オペランド内の対応するビットのちょうど 1 つがオンである場合、ビットがオンである結果を戻します。 | |
%FIELDS(名前{:名前...}) | 自由形式の UPDATE で、更新するフィールドを指定する場合に使用。 | |
%KDS(data structure) | 自由形式のキー順命令コード CHAIN、SETLL、 SETGT、READE、および READPE で使用し、操作のキーがデータ構造内に存在することを指定します。 |
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.