XMLドキュメントへデータを書き込むには,次のような手順のCOBOLプログラムを作成します。
メモリ上のXMLドキュメントへデータを書き込むプログラムのコーディング例を,次に示します。なお,このコーディング例が対象にしているDTD,DDFについては,「5.1(a) DTD,DDFの例」を参照してください。
IDENTIFICATION DIVISION.
PROGRAM-ID. WRITESAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY 'subprog-COPY.cbl'.
01 BUFFER USAGE POINTER VALUE NULL.
01 BUFFER-DATA PIC X(500).
01 BUFFER-LENGTH PIC 9(9) COMP VALUE 500.
01 BUFFER-MODE PIC X(16).
01 XML-POINTER USAGE POINTER.
01 XML-ERROR-CODE PIC 9(9) COMP VALUE 0.
PROCEDURE DIVISION.
* プログラム開始
DISPLAY ' COBOL Data Types - WRITE'.
* XMLドキュメントを入力するための
* オープンモードを'WRITE'に設定
MOVE 'W' TO BUFFER-MODE.
* XMLドキュメントを開く
PERFORM OPEN-BUFFER.
* row要素の値を初期化
MOVE SPACES TO ROW.
DISPLAY ' ***** Write 1st Row *****'.
MOVE 'John Smith' TO FULL-NAME.
MOVE 20 TO AGE.
MOVE 'Irvine' TO CITY.
* row要素の値をXMLドキュメントに出力する
PERFORM WRITE-BUFFER.
DISPLAY ' ***** Write 2nd ROW *****'.
MOVE 'Jane Doe' TO FULL-NAME.
MOVE 30 TO AGE.
MOVE 'Los Angeles' TO CITY.
* row要素の値をXMLドキュメントに出力する
PERFORM WRITE-BUFFER.
DISPLAY ' ***** Write 3rd ROW *****'.
MOVE 'Tim Johnson' TO FULL-NAME.
MOVE 100 TO AGE.
MOVE 'San Diego' TO CITY.
* row要素の値をXMLドキュメントに出力する
PERFORM WRITE-BUFFER.
* XMLドキュメントを閉じる
PERFORM CLOSE-BUFFER.
STOP RUN.
* XMLアクセスルーチン(メモリ空間を開く)
OPEN-BUFFER.
COMPUTE BUFFER = FUNCTION ADDR(BUFFER-DATA).
CALL 'CBLXML-OB-EXAMPLE'
USING BUFFER BUFFER-LENGTH
BUFFER-MODE XML-POINTER
RETURNING XML-ERROR-CODE.
IF XML-ERROR-CODE NOT EQUAL 0
MOVE XML-ERROR-CODE TO RETURN-CODE
DISPLAY
'Failed to open XML document (open) - Error '
XML-ERROR-CODE
GO TO ENDOFPROGRAM
END-IF.
* XMLアクセスルーチン(出力する)
WRITE-BUFFER.
CALL 'CBLXML-WR-EXAMPLE-row'
USING XML-POINTER ROW
RETURNING XML-ERROR-CODE.
IF XML-ERROR-CODE NOT EQUAL 0
MOVE XML-ERROR-CODE TO RETURN-CODE
DISPLAY
'Failed write base element - Error '
XML-ERROR-CODE
GO TO ENDOFPROGRAM
END-IF.
* XMLアクセスルーチン(閉じる)
CLOSE-BUFFER.
CALL 'CBLXML-CL-EXAMPLE'
USING XML-POINTER
RETURNING XML-ERROR-CODE.
IF XML-ERROR-CODE NOT EQUAL 0
MOVE XML-ERROR-CODE TO RETURN-CODE
DISPLAY
'Failed to close XML document - Error '
XML-ERROR-CODE
GO TO ENDOFPROGRAM
END-IF.
ENDOFPROGRAM.
STOP RUN.
END PROGRAM WRITESAMPLE.