以下の表は、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 文および段落の終わりです。 |