5.2.1 XMLドキュメントの書き込みのコーディング例
メモリ上のXMLドキュメントへデータを書き込むプログラムのコーディング例を,次に示します。なお,このコーディング例が対象にしているDTD,DDFについては,「5.1.1 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.