Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


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

すべてのメッセージログファイル切り替えに失敗しました。

注意事項

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

  2. CBLEELOG('PRINT ')で標準出力に非ASCII文字を含むメッセージを出力する場合,標準出力に複数の文字コードが混在する可能性があります。この場合は次のどちらかの方法で回避してください。

    • 出力メッセージをASCII文字だけにする

    • データ名Zに8を指定しない