MF 

MF XML 構文 - WRITE 文

XML 構文での WRITE 文は、XML ドキュメントを I/O ストリームに書き込んだり、 XML 要素を XML ドキュメントのメモリ上の表現に追加します。

形式

構文規則
  1. record-name-1 は、データ部で XD レコード宣言で定義された 01 レベルの集団項目の名前です。
  2. data-name-1 iは、IDENTIFIED BY 句で宣言され record-name-1 内で定義されたデータ項目です。
一般規則
  1. KEY IS 句のない WRITE 文は、指定したレコードを取り出し、新しい内部表現 (存在しない場合に) を作成し、その内部表現をストリームに書き込みます。
  2. XML ファイルが開かれた I-O の場合、次の条件が満足されれば、
    • 内部表現が READ 文で作成されている
    • 内部表現が WRITE、REWRITE や DELETE KEY 文の組み合わせで変更されている
    • KEY IS 句のない WRITE 文が実行されている
    指定されたレコードの現在の内容は無視されます。その代わりに、READ で設定され WRITE、REWRITE や DELETE KEY 文で変更された内部表現がストリームに書き込まれます。
  3. WRITE KEY IS PLAIN-TEXT、data-name-2 や literal-1 は、XML ストリームへの出力される平文テキストを含んだ文字列値です。
  4. WRITE KEY IS PLAIN-TEXT は、「Content-type: text/xml」のような修飾です。
  5. ストリーム I/O は WRITE KEY IS 文では実際には実行されません。
  6. AT END と INVALID KEY はサポートされていません。 その代わりに XML ファイル状態変数を使用します。
一般規則
  1. WRITE KEY IS は、XML ドキュメントの内部表現に指定されたノードを、現在の位置の直後に追加します。 指定されたノードにノードが必要であれば、それは内部表現にも作成されます。
  2. ALL が指定されると、内包されるノードも XML ドキュメントの内部表現に追加されます。 ALL が指定されなければ、指定されたノードとその属性、データが追加されます。 ストリーム I/O は実行されません。
  3. 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"' を扱う場合に、この方法が有用です。
  4. WRITE KEY IS PROCESSING-INSTRUCTION を使用する場合、
    • data-name-2 は、定義されたレベル 78 か単純なデータ名です。
    • literal-1 は、XML 特有の処理命令を含む文字列値です。 出力時には、この文字列は XML 区切り記号 '<?'と'?>' が付けられます。
  5. 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" を指定する場合に有効です。
  6. XML ドキュメントの内部表現が WRITE KEY、REWRITE KEY や DELETE KEY 文で変更され、その内部表現が CLOSE や READ (キーなし) 文でクリアされると、CLOSE や READ 文は、操作は正常終了したが書き込みは行われなかったことを示す -10 の状態を返却します。