CBLEELOG('PRINT ')
- 〈このページの構成〉
形式
PROCEDURE DIVISIONの指定
CALL 'CBLEELOG' 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. 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に設定した文字列に,行ヘッダ,メッセージID,および要求元プログラムIDを付けて,メッセージログファイル,syslog,標準出力に出力します。メッセージログファイルの行ヘッダは,プロセスID,メッセージ通番,サービス名,中央処理通番,年月日,時刻です。syslogの行ヘッダは定義で設定します。syslog出力は,データ名Zに設定した出力レベルが定義に指定した出力レベルと同じか高い場合です。データ名Zに出力レベルを設定しなかった場合の出力レベルは,1です。
標準出力への出力有無は,次の表のようになります。定義:log_usermsg_consoleにallを指定している場合,データ名Zに設定する標準出力への出力有の設定に関係なく,標準出力へ出力します。
定義: log_msg_console |
定義: log_usermsg_console |
API:データ名Z 標準出力への出力有の設定 |
標準出力への出力有無 |
---|---|---|---|
Y(デフォルト) |
all |
有り |
○ |
無し(デフォルト) |
○ |
||
api(デフォルト) |
有り |
○ |
|
無し(デフォルト) |
× |
||
N |
− |
− |
× |
TP1/EEでは,CBLEELOG('PRINT ')で使うメッセージID用に,05000から06999までの範囲の番号を割り当てています。UAPから出力するメッセージIDの番号には,05000から06999までの範囲の値を付けてください。
メッセージテキストに復改文字「\n」を含むメッセージログは,次のように扱います。
メッセージの出力先 |
復改文字「¥n」の扱い |
---|---|
メッセージログファイル |
空白に置き換えて1行で出力する |
syslog |
空白に置き換えて1行で出力する |
標準出力 |
そのまま出力する(「\n」で改行する) |
障害が発生してUAPからメッセージログが出力できない場合でも,CBLEELOG('PRINT ')がステータスコード「00000」で正常に終了することがあります。そのため,メッセージログが抜ける場合があります。メッセージログの抜けは,メッセージログに付けるメッセージログ通番で確認できます。
一つのスレッドからCBLEELOG('PRINT ')を呼び出した場合,メッセージログファイルへの出力順序は保証されます。複数のスレッドから別々にCBLEELOG('PRINT ')を呼び出した場合は,呼び出した順にメッセージログファイルに出力されないことがあります。
エラーを検出した場合,エラーの原因を示すメッセージログにCBLEELOG('PRINT ')に指定したメッセージを付けて,標準エラー出力に出力します。
UAPで値を設定するデータ領域
●データ名A
メッセージログの出力を示す要求コードを「VALUE 'PRINT△△△'」と設定します。
●データ名Z
syslog出力レベルと標準出力への出力フラグを設定します。
- syslog出力レベルだけを設定する場合
-
syslog出力レベルを表す次のフラグを設定します。
- 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が最も低くなります。データ名Zに設定した出力レベルがメッセージログ関連定義のlog_syslog_outオペランドに指定した出力レベルと同じか高い場合,syslogにメッセージログが出力されます。データ名Zに出力レベルを設定しなかった場合の出力レベルは1です。
- syslog出力レベルと標準出力への出力フラグを設定する場合
-
syslog出力レベルフラグとの論理和で設定します。
- 8
-
メッセージを標準出力に出力します。
●データ名C
メッセージログごとに付ける識別子(メッセージID)を設定します。「KFSBnnnnn-x」の形式(11文字)で,末尾に空白を付けてください。
TP1/EEでは,CBLEELOG('PRINT ')で使うメッセージIDの通番(nnnnnの部分)用に,05000〜06999の範囲の番号を割り当てています。UAPから出力するメッセージIDの通番は,05000〜06999の範囲の値にしてください。
●データ名D
CBLEELOG('PRINT ')を呼び出したUAPを識別する任意の値(要求元プログラムID)を設定します。英数字2文字で,末尾に空白を付けてください。
●データ名F
メッセージログファイルにメッセージログとして出力する文字列の長さを設定します(単位:バイト)。222までの値を指定してください。
●データ名G
メッセージログファイルにメッセージログとして出力したい任意の文字列を設定します。最大222バイトで,末尾に空白を付けてください。
文字列に改行「\n」が含まれる場合,1行で出力されます。
●データ名H
0を設定します。
TP1/EEから値が返されるデータ領域
●データ名B
ステータスコードが,5けたの数字で返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
00001 |
TP1/EEの環境下にありません。 |
00004 |
UOCから発行しているため,この機能は使用できません。 |
01900 |
データ名に設定した値が間違っています。要求コード(データ名A)が間違っている場合も含みます。 |
01907 |
メッセージログ機能内の排他設定に失敗しました。 |
01908 |
メッセージログ機能内の排他解除に失敗しました。 |
01914 |
メッセージの組み立てに失敗しました。 |
01915 |
メッセージを出力できる状態にありません。 |
01916 |
syslog出力に失敗しました。 |
01918 |
標準エラー出力に失敗しました。 |
01919 |
メッセージログファイルへの出力に失敗しました。 |
01920 |
すべてのメッセージログファイル切り替えに失敗しました。 |
注意事項
-
ログ出力量が多い場合は,CBLEELOG('PRINT ')のリターンが遅くなります。例えば,障害発生時にメッセージ出力量が著しく多くなると,トランザクション処理時間が長くなります。これはスローダウンの要因になるので,注意してください。
-
CBLEELOG('PRINT ')で標準出力に非ASCII文字を含むメッセージを出力する場合,標準出力に複数の文字コードが混在する可能性があります。この場合は次のどちらかの方法で回避してください。
-
出力メッセージをASCII文字だけにする
-
データ名Zに8を指定しない
-