XML 構文内の WRITE 文は、XML ドキュメントを入出力ストリームに書き込んだり、 XML 要素を XML ドキュメントのメモリ上の表現に追加したりします。
 
  形式
 
	  
	 

 
   
 
  構文規則
 
	 - record-name-1 は、データ部の XD レコード宣言で定義された 01 レベルの集団項目の名前です。
 
 
	 - data-name-1 は修飾が可能です。また、宣言に IDENTIFIED BY 句を含み、data-name-1 の XD レコード宣言に含まれるデータ項目を参照します。
 
 
 
   
 
  一般規則
 
	 - KEY IS 句のない WRITE 文は、指定したレコードを取り、新しい内部表現を作成し (存在しない場合)、その内部表現をストリームに書き込みます。
 
 
	 - XML ファイルが開かれた I-O である際に、次の条件を満たす場合、 
 
		  - 内部表現が READ 文で作成されている。
 
 
		  - 内部表現が WRITE、REWRITE、または DELETE KEY 文の組み合わせで変更されている。
 
 
		  - KEY IS 句のない WRITE 文が実行されている。
 
 
		
指定されたレコードの現在の内容は無視されます。代わりに、READ で設定され、WRITE、REWRITE、または DELETE KEY 文で変更された内部表現がストリームに書き込まれます。 
 
	 - WRITE KEY IS PLAIN-TEXT、data-name-2、または literal-1 は、XML ストリームに出力されるプレーン テキストを含む文字列値です。
 
 
	 - WRITE KEY IS PLAIN-TEXT は、「Content-type: text/xml」のような修飾です。
 
 
	 - 実際には、WRITE KEY IS 文ではストリーム入出力を行いません。
 
 
	 - AT END および INVALID KEY はサポートされていません。かわりに XML ファイル状態変数を使用します。
 
 
	 - WRITE KEY IS は、XML ドキュメントの内部表現に指定されたノードを、現在の位置の直後に追加します。指定されたノードについて、内包されるノードが必要な場合は、それらのノードも内部表現内に作成されます。
 
 
	 - ALL を指定すると、内包されるノードも XML ドキュメントの内部表現に追加されます。ALL を指定しない場合は、指定されたノードとその属性およびデータのみが追加されます。ストリーム入出力は行われません。
 
 
	 - WRITE KEY IS PROCESSING-INSTRUCTION は、XML 処理命令ノードを現在の位置の直後に追加します。シーケンシャル I/O を使用する際に、他の WRITE 文が KEY 句を使用しない場合、処理命令は、その実行順序に応じて XML レコードの前または後に記述されます。ランダム I/O の場合、次のような順序で、任意の既存ノードの前または後に処理命令を記述できます。
		
START  xml_file_record KEY IS xml_file_node
    IF write-after
       READ xml_file_record NEXT KEY IS xml_file_node
    END-IF
    WRITE  xml_file_record KEY IS PROCESSING-INSTRUCTION 'processing-id processing-data'
		この方法は、たとえばルートノードおよび処理命令「xml version="1.0"」を扱う場合に有用です。
	  
 
	 - WRITE KEY IS PROCESSING-INSTRUCTION を使用する場合には、 
 
		  - data-name-2 は、定義されたレベル 78 または単純なデータ名です。
 
 
		  - literal-1 は、XML 特有の処理命令を含む文字列値です。この文字列には、出力時に XML 区切り記号「<? 」および「?>」が付けられます。
 
 
		
	  
 
	 - WRITE KEY IS PLAIN-TEXT は、プレーン テキスト ノードを現在位置の直後に追加します。シーケンシャル I/O を使用する際に、他の WRITE 文が KEY 句を使用しない場合、プレーン テキストは、その実行順序に応じて XML レコードの前または後に記述されます。ランダム I/O の場合、次のような順序で、任意の既存ノードの前または後にプレーン テキストを記述できます。
		
START  xml_file_record KEY IS xml_file_node
    IF write-after
       READ xml_file_record NEXT KEY IS xml_file_node
    END-IF
    WRITE  xml_file_record KEY IS PLAIN-TEXT  'processing-id processing-data'
		この方法は、XML プログラムがプレーン テキスト データで XML レコードを装飾する必要がある場合、たとえば CGI コンテキストで動作する「Content-type: text/xml」を指定する場合に有用です。
	  
 
	 - XML ドキュメントの内部表現が WRITE KEY、REWRITE KEY、または DELETE KEY 文で変更され、その内部表現が CLOSE または READ (キーなし) 文でクリアされると、CLOSE または READ 文は、操作は正常終了したが書き込みは行われなかったことを示す -10 の状態を返します。