COBOL2002 XML連携機能ガイド
CBLXML-GET-NEXT-BEサービスルーチンは,入力または更新モードで開いたXMLドキュメントに対し,次に入力するBaseElement要素のXMLドキュメント上での位置情報を取得できます。位置情報は"/"文字を区切り文字としての階層で,ルート要素からBaseElement要素までを設定します。BaseElement要素が繰り返しである場合,繰り返し順序を示す"[番号]"が要素に付け加えられます。DTDで"*"または"+"によって繰り返しがあることが指定されている要素でも,XMLドキュメント中に1回しか現れない要素については,繰り返し順序を示す"[番号]"は付け加えられません。番号は1から開始し,2,147,483,647までです。番号の範囲を超えた場合は,保証しません。
/ルート要素/要素/BaseElement要素[番号]
引数のデータ型 | 指定 | 説明 |
---|---|---|
01 XML-POINTER USAGE POINTER. | ○ | XMLドキュメントのポインタを受け取るポインタ項目を指定する。 |
01 BE-LOCALE-BUFFER PIC X(n). | ○ | BaseElement要素の位置情報を受け取る領域を英数字項目で指定する。 |
01 BE-LOCALE-BUFFER-LENGTH PIC 9(9) COMP. | ○ | BaseElement要素の位置情報を受け取る領域の長さを4バイトの二進項目で指定する。 |
01 BE-LOCALE-LENGTH PIC 9(9) COMP. | △ | 受け取った位置情報の長さが設定される。この項目は4バイトの二進項目で指定する。 |
戻り値 | 内容 |
---|---|
3 | 次に入力するBaseElement要素がない。 |
2 | XMLドキュメントを開いていない状態で位置情報を取得した。または出力モードで開いたXMLドキュメントの位置情報を取得した。 |
1 | BaseElement要素の位置情報の長さが位置情報を受け取る領域の長さを超えた。 |
0 | 正常終了した。 |
-1 | CBLXML-GET-NEXT-BEサービスルーチンの引数の値が不正。 |
-2 | 操作を続けるためのメモリが不足した。 |
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE root [ <!ELEMENT root (group1 | group2 | group3)> <!ELEMENT group1 (item1)> <!ELEMENT group2 (item1)> <!ELEMENT item1 (#PCDATA)> <!ELEMENT group3 (item3)> <!ELEMENT item3 (#PCDATA)> ]> <root/>
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="item1"> <Item elemName="item1" size="10"/> </BaseElement> <BaseElement elemName="item3"> <Item elemName="item3" size="10"/> </BaseElement> </Interface>
01 item1 PIC X(10). 01 item3 PIC X(10).
<?xml version="1.0" encoding="Shift_JIS"?> <root> <group3> <item3>ABC</item3> </group3> </root>
: 01 CBLXML-RETURN-CODE PIC 9(9) COMP. 01 FILE-NAME PIC X(255). 01 XML-FILE-NAME USAGE POINTER. 01 XML-FILE-NAME-LENGTH PIC 9(9) COMP VALUE 255. 01 XML-MODE PIC X(16). 01 XML-POINTER USAGE POINTER. 01 BE-LOCALE-BUFFER PIC X(255). 01 BE-LOCALE-BUFFER-LENGTH PIC 9(9) COMP VALUE 255. 01 BE-LOCALE-LENGTH PIC 9(9) COMP VALUE 0. PROCEDURE DIVISION. START-MAIN. : * open MOVE 'R' TO XML-MODE. MOVE 'data.xml' TO FILE-NAME. MOVE 8 TO XML-FILE-NAME-LENGTH. COMPUTE XML-FILE-NAME = FUNCTION ADDR(FILE-NAME). CALL 'CBLXML-OP-EXAMPLE' USING XML-FILE-NAME XML-FILE-NAME-LENGTH XML-MODE XML-POINTER RETURNING CBLXML-RETURN-CODE. IF CBLXML-RETURN-CODE NOT = 0 THEN DISPLAY 'ERROR - CBLXML-OP-EXAMPLE, STATUS = ' CBLXML-RETURN-CODE END-IF. * read CALL 'CBLXML-GET-NEXT-BE' …1. USING XML-POINTER BE-LOCALE-BUFFER BE-LOCALE-BUFFER-LENGTH BE-LOCALE-LENGTH. IF RETURN-CODE = 0 THEN IF BE-LOCALE-BUFFER = '/root/group1/item1' OR BE-LOCALE-BUFFER = '/root/group2/item1' THEN CALL 'CBLXML-RD-EXAMPLE-item1' …2. USING XML-POINTER item1 RETURNING CBLXML-RETURN-CODE IF CBLXML-RETURN-CODE NOT = 0 THEN DISPLAY 'ERROR - READ item1, STATUS = ' CBLXML-RETURN-CODE END-IF DISPLAY 'BE-LOCALE-BUFFER = ' BE-LOCALE-BUFFER DISPLAY 'item1 = ' item1 ELSE IF BE-LOCALE-BUFFER = '/root/group3/item2' THEN CALL 'CBLXML-RD-EXAMPLE-item3 …3. USING XML-POINTER item3 RETURNING CBLXML-RETURN-CODE IF CBLXML-RETURN-CODE NOT = 0 THEN DISPLAY 'ERROR - READ item3, STATUS = ' CBLXML-RETURN-CODE END-IF DISPLAY 'BE-LOCALE-BUFFER = ' BE-LOCALE-BUFFER DISPLAY 'item3 = ' item3 END-IF END-IF. * close CALL 'CBLXML-CL-EXAMPLE' USING XML-POINTER RETURNING CBLXML-RETURN-CODE. IF CBLXML-RETURN-CODE NOT = 0 THEN DISPLAY 'ERROR - CBLXML-CL-EXAMPLE, STATUS = ' CBLXML-RETURN-CODE END-IF. :
All Rights Reserved. Copyright (C) 2003, 2016, Hitachi, Ltd.