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…通信障害のためメッセージログファイルに出力できなかったメッセージを示します。
- (例)
-
KFCA05201-I SPP1:サービス要求を受け取りました。(E1)
KFCA05410-I SPP1:更新処理を開始します。(E2)
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 ')のリターンが遅くなります。例えば,障害発生時にメッセージ出力量が激しく多くなると,トランザクション処理時間が延びてしまいます。これは,スローダウンの要因になりますので,注意してください。