COBOL2002 XML連携機能ガイド


4.2.3 CBLXML-OB-Interfaceアクセスルーチン

CBLXML-OB-Interfaceアクセスルーチンは,バッファ(メモリ)上のXMLドキュメントを開くためのアクセスルーチンです。このアクセスルーチンで開いたXMLドキュメントは,CBLXML-RD-Interface-BaseElementアクセスルーチンやCBLXML-WR-Interface-BaseElementアクセスルーチンを使ってデータを読み書きできます。

形式
CALL 'CBLXML-OB-Interface'
                USING BUFFER
                      BUFFER-LENGTH
                      XML-MODE
                      XML-POINTER
                RETURNING CBLXML-RETURN-CODE.
引数

引数のデータ型

指定

説明

01 BUFFER

USAGE POINTER.

開くバッファを指すポインタを指定する。

01 BUFFER-LENGTH

PIC 9(9) COMP.

開くバッファの長さを指定する。

01 XML-MODE PIC X(16).

XMLドキュメントのアクセスモードを指定する。

01 XML-POINTER

USAGE POINTER.

アクセスモードに'E'を指定しない場合,開いたXMLドキュメントのポインタが返される。XMLドキュメントを開くことに失敗した場合,ポインタの値は保証しない。

アクセスモードに'E'を指定した場合,CBLXML-CREATE-XML-POINTERサービスルーチンで作成したXMLドキュメントのポインタを指定する。

01 CBLXML-RETURN-CODE

PIC 9(9) COMP.

ステータスが返される。詳細については,「7.3 XMLアクセスルーチンが返すステータス」を参照のこと。

(凡例)

○:アクセスルーチンの呼び出し時,値を設定しておく項目

△:アクセスルーチンの完了時,値が設定される項目

注※

指定できるアクセスモード文字列を示します。括弧内の文字は省略できます。また,順不同です。

  • R〔V〕〔N〕〔E〕

  • W〔E〕

  • U〔V〕〔N〕〔E〕

アクセスモード文字列と意味

文字列

意味

R

読み取りモード

W

書き込みモード

U

更新モード

V

妥当性チェックをする。妥当性チェック機能については,「7.2.8 入力XMLドキュメントの妥当性チェック機能」を参照のこと。

N

外部エンティティ参照を展開しない。

E

エラー情報取得機能や公開識別子を使用するために,サービスルーチンの設定を引き継ぐ。エラー情報取得機能や公開識別子については「9.3.2 エラー情報の取得」と「9.3.3 公開識別子が指定されたXMLドキュメント」を参照のこと。

規則
  • 引数XML-MODEには,1バイト目からアクセスモードを示す文字を指定し,残りの領域には空白を指定します。

  • XMLドキュメントを開くことに成功した場合,取得したXMLドキュメントのポインタを用いてCBLXML-CL-Interfaceアクセスルーチン,またはCBLXML-CN-InterfaceアクセスルーチンでXMLドキュメントを閉じなければなりません。

  • CBLXML-OB-Interfaceアクセスルーチンは,開こうとしているXMLドキュメントがすでに開かれているかどうかチェックしません。すでに開かれているXMLドキュメントに対してCBLXML-OB-Interfaceアクセスルーチンを実行すると,そのXMLドキュメントに対する新しいXMLドキュメントのポインタが返されます。

  • 読み取りモードまたは更新モードでは,アクセスモードに'V'と'N'を同時に指定できません。同時に指定したとき,あとに指定した文字列が有効となります。

  • アクセスモードに'N'を指定したとき,外部エンティティ参照の該当する個所にはテキストデータがないものとして解析します。

  • 環境変数CBLXML_PARSE_NOXXEに'YES'を指定した場合,アクセスモードに'V'を指定していても,入力XMLドキュメントの妥当性チェック機能は無効となります。詳細については,「付録E.4 使用できる解析モードによる動作の違い」を参照してください。

注意事項
  • CBLXML-OB-Interfaceアクセスルーチンでバッファ上のXMLドキュメントを開いた場合,実際に確保されているバッファ領域の大きさに関係なく,引数BUFFER-LENGTHに指定した長さの領域をバッファとみなして入出力します。引数BUFFER-LENGTHには,実際に確保したバッファ領域の大きさを超える長さを指定しないでください。

  • 書き込みモードや更新モードでXMLドキュメントを開く場合,引数BUFFER-LENGTHで指定する入出力領域の長さには,出力または更新後のXMLドキュメントを格納するのに十分な長さを指定してください。

  • 読み取りモードでXMLドキュメントを開く場合,引数BUFFER-LENGTHで指定した長さのバッファ全体をXMLドキュメントとみなして解析します。実際のXMLドキュメントの長さより大きな値を引数BUFFER-LENGTHに指定すると,実際のXMLドキュメントの処理時間に加え,実際のXMLドキュメントのあとを引数BUFFER-LENGTHで指定した長さまで解析するための処理時間が掛かります。引数BUFFER-LENGTHで指定する長さには,実際のXMLドキュメントの長さを指定するようにしてください。

  • CBLXML-OB-Interfaceアクセスルーチンが返すステータスが110の場合は,CBLXML-GET-ERRORサービスルーチンを使用して詳細なエラー情報を取得できます。詳細については,「9.3.2 エラー情報の取得」を参照してください。