V5R4 で ILE RPG に対して加えられた機能拡張について、以下にリストし て記載します。
EVAL-CORR {(EH) } ds1 = ds2
新規の命令コード EVAL-CORR は、ソースのデータ構造のサブフィールドからターゲットのデータ構造のサブフィールドにデータおよびヌル標識を代入します。 代入されるサブフィールドは、両方のデータ構造に同じ名前および互換データ・タイプがあるサブフィールドです。
例えば、データ構造 DS1 に文字サブフィールド A、B、および C があり、データ構造 DS2 に文字サブフィールド B、C、および D がある場合、 ステートメント EVAL-CORR DS1 = DS2; は、サブフィールド DS2.B および DS2.C から DS1.B および DS1.C にデータを代入します。 EVAL-CORR 命令が反映されたターゲットのデータ構造内のヌル値可能サブフィールドでは、 ソースのデータ構造のサブフィールドのヌル標識からヌル標識が代入されるか、ソースのサブフィールドがヌル値可能でない場合は *OFF に設定されます。
// DS1 subfields DS2 subfields
// s1 character s1 packed
// s2 character s2 character
// s3 numeric
// s4 date s4 date
// s5 character
EVAL-CORR ds1 = ds2;
// This EVAL-CORR operation is equivalent to the following EVAL operations
// EVAL ds1.s2 = ds2.s2
// EVAL ds1.s4 = ds2.s4
// Other subfields either appear in only one data structure (S3 and S5)
// or have incompatible types (S1).
EVAL-CORR により、外部記述ファイルおよびレコード様式への入出力操作に対する結果のデータ構造の使用が容易になり、 レコード様式のレイアウトが異なる場合やサブフィールドのタイプが多少異なる場合における、さまざまなレコード様式のデータ構造間のデータの自動転送が可能になります。
%XML (xmldocument { : options } )
%XML 組み込み関数は、XML 文書を記述し、その文書の構文解析方法を制御するオプションを指定します。 xmldocument パラメーターには、文字または UCS-2 式を指定可能であり、その値には XML 文書、または XML 文書が含まれる IFS ファイルの名前を指定できます。 xmldocument パラメーターの値がファイルの名前である場合は、"doc=file" オプションを指定する必要があります。
%HANDLER (handlingProcedure : communicationArea )
%HANDLER は、1 つのイベントまたは一連のイベントを処理するプロシージャーを識別するために使用します。%HANDLER は値を戻しません。
また、XML-SAX および XML-INTO の第 1 オペランドとしてのみ指定できます。
第 1 オペランド handlingProcedure は、処理プロシージャーのプロトタイプを指定します。 プロトタイプによって指定された戻り値およびパラメーターは、 処理プロシージャーが必要とするパラメーターと一致している必要があります。 要件は、%HANDLER が指定されている命令によって決まります。
第 2 オペランド communicationArea は、処理プロシージャーのすべての呼び出しでパラメーターとして渡される変数を指定します。 オペランドは、参照によって渡されるプロトタイプ・パラメーターの検査で使用する規則と同じ規則に従って、 処理プロシージャーの最初のプロトタイプ・パラメーターに完全に一致してい る必要があります。 通信域パラメーターには、配列やデータ構造など、任意のタイプを使用できます。
XML-SAX { (e) } %HANDLER(eventHandler : commArea ) %XML(xmldoc { : options } );
XML-SAX は、%XML 組み込み関数により指定された XML 文書に対して SAX 構文解析を開始します。 XML-SAX 命令は、文書の構文解析を開始する XML パーサーを呼び出すことにより開始します。 要素の開始の検出、属性名の検出、および要素の終了の検出などのイベントがパーサーにより発見された場合、パーサーはそのイベントを記述したパラメーターで eventHandler を呼び出します。 commArea オペランドは、パラメーターとして eventHandler に渡される変数であり、XML-SAX 命令コードが処理プロシージャーと通信する方法を提供します。 eventHandler が戻ると、パーサーは次のイベントが検出されるまで構文解析を継続し、再度 eventHandler を呼び出します。
XML-INTO { (EH) } variable %XML(xmlDoc { : options });
XML-INTO { (EH) } %HANDLER(handler : commArea ) %XML(xmlDoc { : options });
第 1 オペランドには、構文解析されるデータのターゲットを指定します。 変数名または % HANDLER 組み込み関数を含むことができます。
第 2 オペランドには、XML 文書のソースを指定する %XML 組み込み関数、およびその文書の構文解析方法を制御する任意のオプションを指定します。 XML データ、または XML データのロケーションを使用できます。 doc オプションは、このオペランドで何を指定したかを示すために使用します。
// Data structure "copyInfo" has two subfields, "from"
// and "to". Each of these subfields has two subfields
// "name" and "lib".
// File cpyA.xml contains the following XML document
// <copyinfo>
// <from><name>MASTFILE</name><lib>CUSTLIB</lib></from>
// <to><name>MYFILE</name><lib>*LIBL</lib>
// <copyinfo>
xml-into copyInfo %XML('cpyA.xml' : 'doc=file');
// After the XML-INTO operation, the following
// copyInfo.from .name = 'MASTFILE ' .lib = 'CUSTLIB '
// copyInfo.to .name = 'MYFILE ' .lib = '*LIBL '
PREFIX('' : number_of_characters)
ファイル仕様書および定義仕様書で PREFIX キーワードの最初のパラメーターとして空の文字リテラル
(間に何も文字を入れずに 2 つの単一引用符を指定したもの) が指定された場合、指定された数の文字がフィールド名から削除されます。
例えば、ファイルにフィールド XRNAME、XRIDNUM、および XRAMOUNT がある場合、ファイル仕様書に PREFIX('':2) を指定すると、内部フィールド名は NAME、IDNUM、および AMOUNT になります。2 つのファイルがあり、そのファイルにファイル固有の接頭部以外が同じ名前であるサブフィールドがある場合、この機能を使用して、それらのファイルで定義された外部記述データ構造のサブフィールドの名前から接頭部を削除できます。 これにより、EVAL-CORR を使用して、あるデータ構造から別のデータ構造へ、同一の名前のサブフィールドを代入できます。 例えば、ファイル FILE1 にフィールド F1NAME があり、ファイル FILE2 にフィールド F2NAME があり、さらに FILE1 の外部記述データ構造 DS1 および FILE2 の DS2 に対して PREFIX('':2) が指定された場合、サブフィールド F1NAME および F2NAME は両方とも NAME になります。 データ構造 DS1 および DS2 の間の EVAL-CORR 命令は、NAME サブフィールドを代入します。
DEBUG { ( *INPUT *DUMP *XMLSAX *NO *YES ) }
DEBUG キーワードにより、モジュールに生成されるデバッグ補助が決定されます。
*NO および *YES
が既存の値です。*INPUT、*DUMP および *XMLSAX によって *YES よりも細分性が提供されます。
入力仕様内にあるが、モジュール内の他の場所では使用されていないフィールド
は、入力操作中にプログラム・フィールドに読み込まれます。 
===> EVAL _QRNU_NULL_DS
> EVAL _QRNU_NULL_DS1
_QRNU_NULL_DS1.FLD1 = '1'
_QRNU_NULL_DS1.FLD2 = '0'
_QRNU_NULL_DS1.SUB.FLD3 = '1'
===> EVAL _QRNU_NULL_DS.FLD2
_QRNU_NULL_DS1.FLD2 = '0'
===> EVAL _QRNU_NULL_DS.FLD2 = '1'
===> EVAL DSARR(1).FLD2
DSARR(1).FLD2 = 'abcde'
===> EVAL _QRNU_NULL_DSARR(1).FLD2
_QRNU_NULL_DSARR(1).FLD2 = '0'
この動作の変更は、V5R2M0 (SI13932) および V5R3M0 (SI14185) のリリースの PTF で使用可能です。
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 制御仕様書キーワード | DEBUG(*INPUT|*DUMP *XMLSAX|*NO|*YES) | 新規パラメーター *INPUT、*DUMP、および *XMLSAX により、デバッグ補助のオプションが追加されました。 |
| ファイル仕様書のキーワード | PREFIX('':2) | PREFIX キーワードの最初のパラメーターとして空のリテラルを指定可能であり、名前の先頭から文字を削除できます。 |
| 定義仕様書キーワード | OPTIONS(*NULLIND) | ヌル標識がパラメーター付きで渡されることを示します。 |
| PREFIX('':2) | PREFIX キーワードの最初のパラメーターとして空のリテラルを指定可能であり、名前の先頭から文字を削除できます。 |
| 言語単位 | 要素 | 説明 |
|---|---|---|
| 組み込み関数 | %HANDLER(プロトタイプ: パラメーター) | イベントの処理プロシージャーを指定します。 |
| %XML(文書 {:オプション }) | XML 文書、およびその構文解析方法を制御するオプションを指定します。 | |
| 命令コード | EVAL-CORR | ソースのデータ構造のサブフィールドからターゲットのデータ構造のサブフィールドにデータおよびヌル標識を代入します。 |
| XML-INTO | XML 文書からプログラム変数に直接データを読み取ります。 | |
| XML-SAX | XML 文書の SAX 構文解析を開始します。 |