Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


CBLDCLOG('PRINT ')

〈このページの構成〉

名称

メッセージログの出力

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCLOG' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01 一意名1.
   02 データ名A  PIC X(8) VALUE 'PRINT   '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名Z  PIC S9(9) COMP VALUE ZERO.
   02 データ名C  PIC X(12).
   02 データ名D  PIC X(3).
   02 FILLER    PIC X(1).
   02 データ名E  PIC S9(9) COMP.
01 一意名2.
   02 データ名F  PIC S9(9) COMP.
   02 データ名G  PIC X(n).
01 一意名3.
   02 データ名H  PIC S9(9) COMP VALUE ZERO.

機能

データ名Gに指定した文字列に,OpenTP1で行ヘッダ,OpenTP1識別子,日時,要求元ノード名,要求元プログラムID,メッセージIDを付けて,メッセージログファイルに出力します。

OpenTP1では,CBLDCLOG('PRINT ')で使うメッセージID用に,05000から06999までの範囲の番号を割り当てています。UAPから出力するメッセージIDの番号には,05000から06999までの範囲の値を付けてください。

障害が起こってUAPからメッセージログが出力できない場合でも,CBLDCLOG('PRINT ')がステータスコード「00000」で正常に終了することがあります。そのためメッセージログが抜ける場合がありますが,メッセージログの抜けはメッセージログファイル中のメッセージログ通番で確認できます。

一つのプロセスから複数回メッセージログを出力した場合は,メッセージログファイルへの出力順序は保証されます。ただし,複数のプロセスから別々にメッセージログを出力した場合は,出力順にメッセージログファイルに出力されない場合があります。

通信障害「01901」,およびログサービス未起動「01905」のエラーが起こった場合は,UAPから出力したメッセージをそのUAPプロセス上で編集して,標準エラー出力に出力します。このとき,メッセージの終わりには,次に示すエラー要因を示すコードを付けます。

E1,E2以外のエラーを検出した場合,OpenTP1はエラーの原因を示すメッセージログに CBLDCLOG('PRINT ')に指定したメッセージIDの番号を付けて,標準エラー出力に出力します。

UAPで値を設定するデータ領域

●データ名A

メッセージログの出力要求を示す要求コードを「VALUE 'PRINT△△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

メッセージログごとに付けられる識別子(メッセージID)を設定します。「KFCAn1n2n3n4n5−x」の形式(11文字)で,最後に空白文字を付けて設定します。UAPから出力する通番(n1n2n3n4n5の部分)には,05000から06999までの間の数値を設定します。

●データ名D

メッセージログを出力したUAPを識別する値(要求元プログラムID)を,ユーザ任意で設定します。英数字2文字で,最後は空白文字で終わらせて設定します。

●データ名E

UAPから出力したメッセージログをNETMの操作支援端末に出力する場合の,表示色を設定します。次のどれかを設定します。

VALUE '1' … 緑

VALUE '2' … 赤

VALUE '3' … 白

VALUE '4' … 青

VALUE '5' … 紫

VALUE '6' … 空色

VALUE '7' … 黄色

上記以外の数値や空白を設定した場合は,緑が仮定されます。

●データ名F

メッセージログファイルにメッセージログとして出力する文字列の長さを設定します。文字列の上限は各OSで次のとおりです。

  • Linux:444バイト

  • Linux以外のOS:222バイト

●データ名G

メッセージログファイルにメッセージログとして出力する文字列を設定します。

なお,データ名Fで設定した文字列の長さより前にヌル文字のデータがあると,そこまでの情報を文字列として扱います。

●データ名H

0を設定します。

OpenTP1で値を設定するデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

01900

データ名に設定した値が間違っています。

要求コード(データ名A)が間違っている場合も含みます。

01901

通信障害が発生したか,またはCBLDCRPC('OPEN ')が発行されていません。

01902

メモリが不足しました。

01904

システム定義が間違っています。

01905

メッセージログサービスが稼働していません。

01906

メッセージログサービスがメッセージログに付ける情報を取得したときに,障害が起こりました。

注意事項

ログ出力量が多い場合は,CBLDCLOG('PRINT ')のリターンが遅くなります。例えば,障害発生時にメッセージ出力量が激しく多くなると,トランザクション処理時間が延びてしまいます。これは,スローダウンの要因になりますので,注意してください。