1.3.5 メッセージログの出力(CBLEELOG)
(1) CBLEELOG('PRINTU ')
- 名称
-
ユーザメッセージログの出力
- 形式
-
PROCEDURE DIVISIONの指定
CALL 'CBLEELOG' USING 一意名1 一意名2 一意名3 DATA DIVISIONの指定 01 一意名1. 02 データ名A PIC X(8) VALUE 'PRINTU '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名Y PIC S9(9) COMP. 02 データ名Z PIC S9(9) COMP. 02 データ名C PIC X(12). 02 データ名D PIC X(3). 01 一意名2. 02 データ名F PIC 9(9) COMP. 02 データ名G PIC X(n). 01 一意名3. 02 データ名H PIC S9(9) COMP VALUE ZERO.
- 機能
-
データ名Gに指定した文字列に,TP1/EEで行ヘッダ,メッセージID,要求元プログラムIDを付けて,メッセージログファイル,標準出力,syslogに出力します。メッセージログファイルの行ヘッダは,プロセスID,メッセージ通番,サービス名称,中央処理通番,年月日,時刻です。標準出力,syslogの行ヘッダは定義で設定します。syslog出力は,データ名Zに設定した出力レベルが定義に指定した出力レベルと同じか高い場合です。データ名Zに出力レベルを設定しなかった場合の出力レベルは,1です。
メッセージテキストに復改文字「\n」を含むメッセージログは,メッセージログファイル,syslogへの出力時,1行で出力されます。標準出力への出力時は,復改文字「\n」はそのまま出力されます。
障害が起こってUAPからメッセージログが出力できない場合でも,CBLEELOG('PRINTU ')がステータスコード「00000」で正常に終了することがあります。そのためメッセージログが抜ける場合がありますが,メッセージログの抜けはメッセージログに付けるメッセージログ通番で確認できます。
1つのスレッドから複数回CBLEELOG('PRINTU ')を呼び出した場合は,メッセージログファイルへの出力順序は保証されます。ただし,複数のスレッドから別々にCBLEELOG('PRINTU ')を呼び出した場合は,呼び出した順にメッセージログファイルに出力されない場合があります。
エラーを検出した場合,TP1/EEはエラーの原因を示すメッセージログにCBLEELOG('PRINTU ')に指定したメッセージを付けて,標準エラー出力に出力します。
UAPで値を設定するデータ領域
- データ名A
-
メッセージログの出力要求を示す要求コードを「VALUE 'PRINTU△△'」と設定します。
- データ名Y
-
値
意味
0
メッセージを標準出力に出力しません。
1
メッセージを標準出力に出力します。
- データ名Z
-
値
意味
0
なし。syslog出力レベルはデフォルトの1になります。
1
syslog出力レベルを1にします。
2
syslog出力レベルを2にします。
3
syslog出力レベルを3にします。
4
syslog出力レベルを4にします。
5
syslog出力レベルを5にします。
6
syslog出力レベルを6にします。
7
メッセージをsyslogに出力しません。
syslog出力レベルは,1が最も高く,6が最も低くなります。
- データ名C
-
メッセージログごとに付けられる識別子(メッセージID)を設定します。1〜11バイトの文字列を指定します。最後は空白文字で終わらせて設定します。
TP1/EEや他製品と重複した識別子を指定しないでください。
- データ名D
-
メッセージログを出力したUAPを識別する値(要求元プログラムID)を,ユーザ任意で設定します。英数字2文字で,最後は空白文字で終わらせて設定します。
- データ名F
-
メッセージログファイルにメッセージログとして出力する文字列の長さを設定します。最大800バイト設定できます。
- データ名G
-
メッセージログファイルにメッセージログとして出力する文字列を設定します。
- データ名H
-
0を設定します。
TP1/EEから値が返されるデータ領域
- データ名B
-
ステータスコードが,5桁の数字で返されます。
- ステータスコード
-
ステータスコード
意味
00000
正常に終了しました。
00001
TP1/EEの環境下にありません。
00004
UOCから発行しているため,本機能は使用できません。
01900
データ名に設定した値が間違っています。
要求コード(データ名A)が間違っている場合も含みます。
01907
メッセージログ機能内の排他設定に失敗しました。
01908
メッセージログ機能内の排他解除に失敗しました。
01914
メッセージの組み立てに失敗しました。
01915
メッセージの出力できる状態にありません。
TP1/FSPの環境下にありません。
01918
標準エラー出力に失敗しました。
01919
ログファイルへの出力に失敗しました。
01920
すべてのログファイル切り替えに失敗しました。
01916
syslog出力に失敗しました。
- 注意事項
-
-
ログ出力量が多い場合は,CBLEELOG('PRINTU ')のリターンが遅くなります。例えば,障害発生時にメッセージ出力量が非常に多くなると,トランザクション処理時間が延びてしまいます。
これは,スローダウンの要因になりますので,注意してください。
-
環境変数LANGにOS設定値と異なる言語種別を指定し,CBLEELOG('PRINTU ')でsyslogに非ASCII文字を含むメッセージを出力する場合,syslogに複数の文字コードが混在するおそれがあります。この場合は次の方法で回避してください。
・出力メッセージをASCII文字だけにする。
・データ名Zに7を指定する。
・拡張SYSLOGを使用し,log_hsyslog_cmodeオペランドにSJISを指定する(出力メッセージがシフトJISかつOSの言語設定がUTF-8の場合だけ)。
-
(2) CBLEELOG('DCTMSG ')
- 名称
-
メッセージの出力抑止
- 形式
-
PROCEDURE DIVISIONの指定
CALL 'CBLEELOG' USING 一意名1 DATA DIVISIONの指定 01 一意名1. 02 データ名A PIC X(8) VALUE 'DCTMSG '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名Z PIC S9(9) COMP VALUE ZERO. 02 データ名C PIC X(10).
- 機能
-
データ名Cで指定したメッセージIDのメッセージの出力を抑止します。
抑止対象としたメッセージは,メッセージログファイル,標準出力(標準エラー出力),syslogへの出力を行いません。
UAPで値を設定するデータ領域
- データ名A
-
メッセージログの出力要求を示す要求コードを「VALUE 'DCTMSG△△'」と設定します。
- データ名Z
-
0を設定します。
- データ名C
-
抑止対象のメッセージIDを設定します。「KFSBn1n2n3n4n5」の形式(9文字)で,最後は空白文字で終わらせて設定します。TP1/EEが出力するメッセージIDを設定します。
CBLEELOG('PRINTU ')で指定するメッセージは抑止対象にはなりません。また,システムで出力する一部のメッセージ,コマンドプロセスで出力するメッセージは抑止対象とはなりません。
TP1/EEから値が返されるデータ領域
- データ名B
-
ステータスコードが,5桁の数字で返されます。
- ステータスコード
-
ステータスコード
意味
00000
正常に終了しました。
00001
TP1/EEの環境下にありません。
00004
UOCから発行しているため,本機能は使用できません。
01900
データ名に設定した値が間違っています。
抑止対象にできないメッセージIDを指定しています。
要求コード(データ名A)が間違っている場合も含みます。
01915
発行条件が不正です。
TP1/FSPの環境下にありません。
メッセージ出力抑止機能が有効になっていません。
- 注意事項
-
-
メッセージの出力抑止状態は,システム再開始後引き継がれません。必要に応じてメッセージの抑止を再設定してください。
-
(3) CBLEELOG('ACTMSG ')
- 名称
-
メッセージの出力抑止解除
- 形式
-
PROCEDURE DIVISIONの指定
CALL 'CBLEELOG' USING 一意名1 DATA DIVISIONの指定 01 一意名1. 02 データ名A PIC X(8) VALUE 'ACTMSG '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名Z PIC S9(9) COMP VALUE ZERO. 02 データ名C PIC X(10).
- 機能
-
データ名Cで指定したメッセージID,またはすべてのメッセージの出力抑止を解除します。
UAPで値を設定するデータ領域
- データ名A
-
メッセージログの出力要求を示す要求コードを「VALUE 'ACTMSG△△'」と設定します。
- データ名Z
-
0を設定します。
- データ名C
-
抑止解除対象のメッセージIDを設定します。設定方法は「(2) CBLEELOG('DCTMSG ')」を参照してください。
すべてのメッセージの出力抑止を解除する場合,メッセージIDを指定しないでください(先頭を空白文字にします)。
TP1/EEから値が返されるデータ領域
- データ名B
-
ステータスコードが,5桁の数字で返されます。
- ステータスコード
-
ステータスコード
意味
00000
正常に終了しました。
00001
TP1/EEの環境下にありません。
00004
UOCから発行しているため,本機能は使用できません。
01900
データ名に設定した値が間違っています。
抑止解除対象にできないメッセージIDを指定しています。
要求コード(データ名A)が間違っている場合も含みます。
01915
発行条件が不正です。
TP1/FSPの環境下にありません。
メッセージ出力抑止機能が有効になっていません。