例 6 のプログラムの構造

以下の表は、XML 拡張文の実行に関連する COBOL 文を示しています。一部の COBOL 文 (ほとんどは DISPLAY 文) は省略されています。この例のソースは example06.cbl ファイルに含まれています。

初期化

COBOL 文

説明

XML INITIALIZE.

XML INITIALIZE 文 (パラメーターなし) を実行します。

If Not XML-OK Go To Z.

文が正常に終了しなかった場合は終了ロジックに移動します。

COBOL 文

説明

Perform 5 Times
 XML GET UNIQUEID
 Unique-Name
 If Not XML-OK Go To Z.

実行を繰り返して 5 つのファイルをエクスポートします。一意の識別子を生成します。文が正常に終了しなかった場合は終了ロジックに移動します。

Move Spaces to Unique-File-Name
 String "stamp/a" delimited by size
 Unique-Name delimited by SPACE
 ".xml" delimited by size
 into Unique-File-Name.

一意の識別子をパス名に変換します。

Move … To Time-Stamp.

Time-Stamp フィールドを設定します。

XML EXPORT FILE
 Time-Stamp
 Unique-File-Name
 "Time-Stamp".

データ項目のアドレス、XML ドキュメントのファイル名、および ModelFileName#DataFileName パラメーターの値を指定して XML EXPORT FILE 文を実行します。

If Not XML-OK Go To Z.
 End-Perform.

文が正常に終了しなかった場合は終了ロジックに移動します。

COBOL 文

説明

Perform Until 0 > 1

外側の実行ループです。Exit Performに到達するまで繰り返します。

Perform Compute-Curr-Time
 Compute Stop-Time
 = Curr-Time + 100

段落Compute-Curr-Time は、現在の時刻を受け取って整数値に変換します。Stop-Time は、現在の時刻の 1 秒後として計算されます。

Perform Until 0 > 1
 XML FIND FILE
 "stamp"
 Unique-File-Name
If XML-IsSuccess
 Exit Perform
End-If
If XML-IsDirectoryEmpty
 Perform Compute-Curr-Time
If Curr-Time > Stop-Time
 Exit Perform
End-If
 Call "CBL_THREAD_SLEEP" …
End-If
If Not XML-OK
 Go To Z
End-If
End-Perform

内側の実行ループです。Exit Performに到達するまで繰り返します。ディレクトリ名とファイル名を指定して XML FIND FILE を実行します。成功した場合は段落を終了します。ディレクトリが空だった場合は新たに現在の時刻を計算し、現在の時刻が停止時刻を超えていた場合は実行を終了します。超えていなかった場合は短い遅延を挿入します。文が正常に終了しなかった場合は終了ロジックに移動します。最後は内側の実行ループの終わりです。

If Curr-Time > Stop-Time
 Exit Perform
End-If

外側の実行ループを終了するかどうかを確認します。

XML IMPORT FILE
 Time-Stamp
 Unique-File-Name
 "Time-Stamp"
 If Not XML-OK Go To Z
 End-If

データ項目、ファイル名、および ModelFileName#DataFileName パラメーターの値を使用して、検出されたファイルをインポートします。文が正常に終了しなかった場合は終了ロジックに移動します。

XML REMOVE FILE
 Unique-File-Name
 If Not XML-OK Go To Z
 End-If

ファイルが処理された場合はそのファイルを削除し、処理されていない場合は再検索します。文が正常に終了しなかった場合は終了ロジックに移動します。

End-Perform

外側の実行ループの終わりです。

COBOL 文

説明

Z.

エラー状態の GO TO 文のターゲットとなる段落名です。

Copy "lixmltrm.cpy".

終了テスト ロジックをコピーします (「終了テスト ロジック」の表を参照)。

Stop Run.

COBOL プログラムを終了します。

Copy "lixmldsp.cpy".

状態表示ロジックをコピーします (「状態表示ロジック」の表を参照)。

このコードは、コピーブック lixmltrm.cpy に含まれています。

段落 Z の後に実行されるため、GO TO Z 文からすべてのエラー状態が取得されます。エラーがない場合は、実行がこれらの文に「フォール スルー」します。

COBOL 文

説明

Display "Status: " XML-Status.

最新の戻り状態の値を表示します (エラーがない場合は 0)。

Perform Display-Status.

再度Display-Status 段落を実行してエラー メッセージを表示します。

XML TERMINATE.

XML インターフェイスを終了します。

Perform Display-Status.

再び Display-Status 段落を実行して、XML TERMINATE 文で発生したエラーを表示します。

このコードは、コピーブック lixmldsp.cpy に含まれています。

このコードは終了テスト ロジックによって 2 回呼び出されます。1 回目は、存在するエラー状態を報告するため、2 回目は、XML TERMINATE 文のエラーを報告するため (発生した場合) です。エラーがない場合 (条件 XML-IsSuccess が true の場合) は、情報の表示は行われません。

COBOL 文

説明

Display-Status.

段落名です。

If Not XML-IsSuccess

XML-IsSuccess が true の場合は何も行われません。

 Perform With Test After
         Until XML-NoMore

表示する状態行がなくなるまで (XML-NoMore が true になるまで) 実行を続けます。

  XML GET STATUS-TEXT

XML インターフェイスから次の行の状態情報を取得します。

  Display XML-StatusText

取得した行を表示します。

 End-Perform

実行ループの終わりです。

End-If.

IF 文および段落の終わりです。