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)を返します。
(PCの場合)
正常終了を示すステータス0(CBLXML-OK)を返します。