XML GENERATE ステートメントは、データを XML 形式に変換します。
形式 1 >>-XML GENERATE--ID-1--FROM--ID-2--+---------------------+------> '-COUNT--+----+--ID-3-' '-IN-' >--+--------------------------------+---------------------------> '-+----+--EXCEPTION--命令ステートメント-1-' '-ON-' >--+-------------------------------------+--+---------+-------->< '-NOT--+----+--EXCEPTION--命令ステートメント-2-' '-END-XML-' '-ON-'
形式 2 >>-XML GENERATE--FILE-STREAM--+-----------+--ID-4--FROM--ID-2---> +-APPEND----+ '-OVERWRITE-' >--+---------------------+--------------------------------------> '-COUNT--+----+--ID-3-' '-IN-' >--+--------------------------------+---------------------------> '-+----+--EXCEPTION--命令ステートメント-1-' '-ON-' >--+-------------------------------------+--+---------+-------->< '-NOT--+----+--EXCEPTION--命令ステートメント-2-' '-END-XML-' '-ON-'
ID--1 が英数字グループ項目を参照する場合、ID-1 は、カテゴリー英数字の基本データ項目であるかのように取り扱われます。
ID-1 は、JUSTIFIED 文節で記述されてはなりません。また、関数 ID であってはなりません。ID-1 は、添え字を付けたり、参照変更できます。
ID-1 は、ID-2 または ID-3 とオーバーラップしないようにしてください。
ID-1 がカテゴリー英数字のデータ項目を参照する場合、生成された XML 文書は、PROCESS ステートメント CCSID オプション d で指定される CCSID でエンコードされます (ソース・コードのコンパイル時に有効な XML GENERATE 1 バイト・データ CCSID)。有効な CCSID が 65535 の場合、実行時のジョブのデフォルト CCSID が使用されます。
ID-1 がカテゴリー国別のデータ項目を参照する場合、生成された XML 文書は、UCS-2 でエンコードされます。PROCESS ステートメントの CCSID オプション d で国別 CCSID が指定されている場合、その CCSID が使用されます。
それ以外の場合には、NTLCCSID PROCESS オプションで指定されている CCSID が使用されます。
バイト・オーダー・マークは生成されません。
ID-1 は、生成された XML が以下の ID-2 からのデータを含む場合、カテゴリー国別のデータ項目を参照する必要があります。
ID-1 は、生成された XML 文書を十分に含むことができる大きさである必要があります。通常、これは ID-2 のサイズの 5 倍から 8 倍である必要があり、identifier-2 内の 1 つまたは複数のデータ名の長さによって異なります。 ID-1 の大きさが十分でない場合、XML GENERATE ステートメントの終了時にエラー状態が発生します。
ID-2 は、ID-1 または ID-3 とオーバーラップしてはいけません。
ID-2 は、RENAMES 節を指定してはいけません。
ID-2 で指定される以下のデータ項目は、XML GENERATE ステートメントによって無視されます。
上記の規則に応じて無視されない ID-2 によって指定されるすべてのデータ項目は、以下の条件を満たす必要があります。
例えば、次のようなデータ宣言を想定します。
01 STRUCT.
02 STAT PIC X(4).
02 IN-AREA PIC X(100).
02 OK-AREA REDEFINES IN-AREA.
03 FLAGS PIC X.
03 PIC X(3).
03 COUNTER USAGE COMP PIC S9(9).
03 ASFNPTR REDEFINES COUNTER USAGE PROCEDURE-POINTER.
03 UNREFERENCED PIC X(92).
02 NG-AREA1 REDEFINES IN-AREA.
03 FLAGS PIC X.
03 PIC X(3).
03 PTR USAGE POINTER.
03 ASNUM REDEFINES PTR USAGE COMP PIC S9(9).
03 PIC X(92).
02 NG-AREA2 REDEFINES IN-AREA.
03 FN-CODE PIC X.
03 UNREFERENCED PIC X(3).
03 QTYONHAND USAGE BINARY PIC 9(5).
03 DESC USAGE NATIONAL PIC N(40).
03 UNREFERENCED PIC X(12).
以下のデータ項目を ID-2 として指定できます。
以下のデータ項目は ID-2 として指定できません。
ID-3 は、ID-1 または ID-2 とオーバーラップしてはいけません。
APPEND 句も OVERWRITE 句も使用されない場合、XML ファイル・エンコード CCSID を使用して新規ファイルが作成され、変換された XML データはそのファイルに保管されます。プログラムの実行中に同じ名前を持つファイルが存在する場合、XML 生成は停止し、特殊レジスター XML-CODE にはこのエラーを表す例外コードが含まれます。
APPEND 句が使用されるとき、ファイルが XML ファイル・エンコード CCSID を持つ場合には、変換された XML データは既存のファイルに追加されます。これ以外の場合、XML 生成は停止し、特殊レジスター XML-CODE にはこのエラーを表す例外コードが含まれます。
ただし、PROCESS オプション XMLGEN(KEEPFILEOPEN) が指定されていて、IFS ファイルが現在開かれている場合、APPEND および OVERWRITE 句なしで XML GENERATE を指定することで、IFS ファイルを閉じることができます (エラーおよび例外コードは発行されません)。 
OVERWRITE 句が使用される場合、XML ファイル・エンコード CCSID を使用して既存のファイルは新規ファイルで置換されます。変換された XML データは新規ファイルに保管されます。
上述したエラーを除く他のすべてのファイル操作エラーは、ファイル操作エラー・メッセージを含むランタイム照会メッセージをトリガーします。操作を継続するために "G" で応答された場合は、特殊レジスター XML-CODE に例外コードが設定されます。
ON EXCEPTION 句が指定されている場合には、制御が 命令ステートメント-1 に転送されます。ON EXCEPTION 句が指定されて いない場合、NOT ON EXCEPTION 句は、存在したとしても無視され、制御は、XML GENERATE ステー トメントの終わりに転送されます。特殊レジスター XML-CODE には、例外コードが含まれます (「IBM Rational Development Studio for i: ILE COBOL プログラマーの手引き」の説明を参照)。
条件 XML GENERATE または XML PARSE ステートメントの有効範囲を以下を使用して終了することができます。
END-XML は、ON EXCEPTION または NOT ON EXCEPTION 句のいずれも指定し ていない XML GENERATE または XML PARSE ステートメントで使用することも可能です。