COBOL2002 XML連携機能ガイド


4.2.7 CBLXML-CN-Interfaceアクセスルーチン

CBLXML-CN-Interfaceアクセスルーチンは,書き込みモードで開いているXMLドキュメントを閉じ,出力したXMLドキュメント長を取得するためのアクセスルーチンです。

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

引数のデータ型

指定

説明

01 XML-POINTER

USAGE POINTER.

閉じるXMLドキュメントのポインタを指定する。CBLXML-OP-Interfaceアクセスルーチン,またはCBLXML-OB-InterfaceアクセスルーチンでXMLドキュメントを開いたときに取得したポインタを指定する。

01 XML-LENGTH

PIC 9(10) COMP.

出力したXMLドキュメントの長さが返される。

01 CBLXML-RETURN-CODE

PIC 9(9) COMP.

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

(凡例)

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

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

規則
  • CBLXML-CN-Interfaceアクセスルーチンが正常終了すると,XMLドキュメントが閉じられ,引数XML-LENGTHに出力したXMLドキュメントの長さが返されます。

  • 引数XML-POINTERには,CBLXML-OP-Interfaceアクセスルーチン,またはCBLXML-OB-InterfaceアクセスルーチンでXMLドキュメントを開いたときに取得したポインタを指定します。

  • 更新モードで開いたXMLドキュメントを更新しないでCBLXML-CN-Interfaceアクセスルーチンを呼び出した場合,CBLXML-CN-Interfaceアクセスルーチンは,XMLドキュメントが更新されていないことを示すステータス12(CBLXML-NO-UPDATE)を返します。その場合,XMLドキュメントの長さ(XML-LENGTH)には正常終了を示すステータス0(CBLXML-OK)が返ります。

  • 読み取りモードで開かれたXMLドキュメントをCBLXML-CN-Interfaceアクセスルーチンで閉じた場合,引数XML-LENGTHには正常終了を示すステータス0(CBLXML-OK)が返されます。このとき,CBLXML-CN-Interfaceアクセスルーチンは,ステータス9(CBLXML-NOT-WRITTEN)を返します。

  • CBLXML-WR-Interface-BaseElementアクセスルーチンやCBLXML-CN-Interfaceアクセスルーチンが回復可能エラー,または致命的エラーを返した場合,引数XML-LENGTHに返される値は不定となります。

  • ドキュメントを書き込みモードで開いている場合,CBLXML-CN-Interfaceは,XMLドキュメントを閉じる前に終了タグを出力します。このとき,次のように必要な要素が補完されます。

ドキュメント終了時の要素の補完
  • 最後に書き出されたBaseElement要素とドキュメントの終わりの間に,さらにBaseElement要素が必要なとき,CBLXML-CN-Interfaceアクセスルーチンは,ステータス118(CBLXML-CANT-END-DOC)を返します。このとき,XMLドキュメントは,不完全な状態となります。正しいXMLドキュメントを生成するためには,必要なBaseElement要素を出力する必要があります。

  • 最後に書き出されたBaseElement要素とドキュメントの終わりの間に,BaseElement要素に含まれない要素が必要なときは,その要素が空要素として出力されます。このとき,CBLXML-CN-Interfaceアクセスルーチンは,ステータス0(CBLXML-OK)を返します。

注意事項

XMLドキュメントの出力中にディスク容量の不足のエラーが発生したあと,そのXMLドキュメントを閉じた場合,CBLXML-CN-Interfaceアクセスルーチンで次に示すステータスを返します。

(UNIXの場合)

XMLアクセスルーチンに指定した引数に誤りがあることを示すステータス114(CBLXML-INVALID-PARAMS)を返します。

(Windowsの場合)

正常終了を示すステータス0(CBLXML-OK)を返します。