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 { : オプション } )
%XML 組み込み関数は、XML 文書を記述し、その文書の構文解析方法を制御するオプションを指定します。 xmldocument パラメーターには、文字または UCS-2 式を指定可能であり、その値には XML 文書、または XML 文書が含まれる IFS ファイルの名前を指定します。 xmldocument パラメーターの値がファイルの名前である場合は、"doc=file" オプションを指定する必要があります
%HANDLER (handlingProcedure : communicationArea )%HANDLER は、プロシージャーを識別して、イベントまたは一連のイベントを処理する場合に使用します。 %HANDLER は値を戻しません。 また、XML-SAX および XML-INTO の第 1 オペランドとしてのみ指定可能です。
第 1 オペランド handlingProcedure は、処理プロシージャーのプロトタイプを指定します。 戻り値およびプロトタイプによって指定されたパラメーターは、処理プロシージャーが必要とするパラメーターと一致している必要があります。 要件は、%HANDLER が指定されている命令によって決まります。
第 2 オペランド communicationArea は、処理プロシージャーのすべての呼び出しでパラメーターとして渡される変数を指定します。 オペランドは、参照によって渡されるプロトタイプ化されたパラメーター の検査で使用する規則と同じ規則に従って、処理プロシージャーの最初のプ ロトタイプ・パラメーターに完全に一致している必要があります。 通信域パラメーターには、配列やデータ構造など、任意のタイプを使用できます。
XML-SAX{ (e) } %HANDLER(eventHandler : commArea ) %XML(xmldocument { : saxOptions } );
XML-SAX は、%XML 組み込み関数により指定された XML 文書に対して SAX 構文解析を開始します。 XML-SAX 命令は、文書の構文解析を開始する XML パーサーを呼び出すことにより開始します。 要素の開始の検出、属性名の検出、および要素の終了の検出などのイベントがパーサーにより発見された場合、パーサーはそのイベントを記述したパラメーターで eventHandler を呼び出します。 commArea オペランドは、パラメーターとして eventHandler に渡される変数であり、XML-SAX 命令コードが処理プロシージャーと通信する方法を提供します。 eventHandler が戻ると、パーサーは次のイベントが検出されるまで構文解析を継続し、再度 eventHandler を呼び出します。
XML-INTO{ (EH) } 変数 %XML(xmlDoc { : オプション }); XML-INTO{ (EH) } %HANDLER(ハンドラー : commArea ) %XML(xmlDoc { : オプション });
XML-INTO は、以下の 2 つのいずれかの方法で XML 文書からデータを読み取ります。
さまざまなオプションを指定してこの命令を制御します。
第 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 構文解析を開始します。 |
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.