利用ジャーナルに項目属性表示が付加されている場合
利用ジャーナルは、以下の要素で構成されます。
レコード制御部
項目属性表示
項目有効表示
ジャーナル項目
システム取得項目
利用ジャーナルに項目属性表示が付加されている場合は、各項目の前に項目属性表示(3バイト)と項目有効表示(1バイト)が設定されます。
"図14.2 メッセージのデータ形式(利用ジャーナルに項目属性表示が付加されている場合)"に項目属性表示が付加されている利用ジャーナルのデータ形式を示します。
なお、ジャーナル・チェックポイントの情報もジャーナル項目として扱われ、取得定義でジャーナル・チェックポイントが定義されている場合だけ、利用ジャーナルにジャーナル・チェックポイントの項目が含まれます。
"図14.3 メッセージのデータ形式(ジャーナル・チェックポイント項目がある場合)"にジャーナル・チェックポイント項目がある利用ジャーナルのデータ形式を示します。
利用ジャーナルに項目属性表示が付加されていない場合
利用ジャーナルは、以下の要素で構成されます。
レコード制御部
項目有効表示
ジャーナル項目
システム取得項目
利用ジャーナルに項目属性表示が付加されていない場合は、各項目の前に項目有効表示(2バイト)が設定されます。
"図14.4 メッセージのデータ形式(利用ジャーナルに項目属性表示が付加されていない場合)"に項目属性表示が付加されていない利用ジャーナルのデータ形式を示します。
なお、ジャーナル・チェックポイントの情報もジャーナル項目として扱われ、取得定義でジャーナル・チェックポイントが定義されている場合だけ、利用ジャーナルにジャーナル・チェックポイントの項目が含まれます。
"図14.5 メッセージのデータ形式(ジャーナル・チェックポイント項目がある場合)"にジャーナル・チェックポイント項目がある利用ジャーナルのデータ形式を示します。
レコード長
利用ジャーナルの全体長が設定されます。
データ型はC言語の場合のlong、COBOL言語の場合のPIC 9(9) COMP-5に相当します。
レコード内有効項目数
利用ジャーナル内で項目有効表示が有効(X’0000’)である項目の数(システム取得項目の有効項目の数も含む)が設定されます。
データ型はC言語の場合のshort、COBOL言語の場合のPIC 9(4) COMP-5に相当します。
ジャーナル項目の属性を表示するタグが、各項目の前に付加されます。
項目属性表示は、ジャーナルヘッダの属性付加情報に"項目属性表示が付加されている(X’01’)"が設定されている場合に利用ジャーナルに設定されます。
項目属性表示は、ジャーナル項目のデータ型を表す属性コードと、属性コードに対する属性情報(長さ、精度、位取り)で構成されます。"図14.6 項目属性表示のデータ形式"に項目属性表示のデータ形式を示します。
"表14.4 属性コードの設定値(ユーザデータ)"および"表14.5 属性コードの設定値(ジャーナル・チェックポイントおよびシステム取得項目)"に項目属性表示の属性コードに設定される値を示します。
属性コード | 属性 | Symfoware/RDBの | Oracleの | SQL Serverの | 項目長 |
---|---|---|---|---|---|
X’01’ | 文字列 | CHARACTER(n) | CHAR(n) | CHAR(n) | n |
X’02’ | 可変長文字列 | CHARACTER VARYING(n) | VARCHAR2(n) | VARCHAR(n) | n + 2 |
X’03’ | 各国語文字列 | NATIONAL CHARACTER(n) | NCHAR(n) | NCHAR(n) | n × 2 |
X’04’ | 可変長各国語文字列 | NATIONAL CHARACTER VARYING(n) | NVARCHAR2(n) | NVARCHAR(n) | n × 2 + 2 |
X’11’ | 2進整数(2バイト) | SMALLINT | - | SMALLINT | 2 |
X’12’ | 2進整数(4バイト) | INTEGER | NUMBER(p) | INT | 4 |
X’13’ | 外部10進数 | NUMERIC(p,q) | NUMBER(p,q) | NUMERIC(p,q) | p(注1) |
X’14’ | 内部10進数 | DECIMAL(p,q) | - | DECIMAL(p,q) | p ÷ 2 + 1(注2) |
X’15’ | 単精度浮動小数点数 | REAL | - | REAL | 4 |
X’16’ | 倍精度浮動小数点数 | DOUBLE PRECISION | - | FLOAT(p) | 8 |
X’22’ | ユーザ定義バイナリ | BINARY(n) ‥ 取得定義の透過文字列型 | BINARY(n) ‥ 取得定義の透過文字列型 | BINARY(n) ‥ 取得定義の透過文字列型 | n |
X’23’ | 日時、時間隔 | TIMESTAMP, | DATE | DATE, | "表14.6 日時、時間隔の属性コードの設定値"を参照してください。 |
注1)配付定義のOutCodeキーワードにGS_KANAまたはGS_ASCII以外を指定した場合は1加算
注2)小数点以下は切り捨て
注3)サイズは1~32000バイト
属性コード | 属性 | データ | 項目長 |
---|---|---|---|
X’24’ | ジャーナル・チェックポイント名 | ジャーナル・チェックポイント名 | 32 |
X’81’~ | システム取得項目 | システム取得項目 | "表14.7 システム取得項目の属性コードの設定値"を参照してください。 |
属性コード | 属性 | 列データ型(注) | 項目長 |
---|---|---|---|
X’23’ | 日時 (文字列) | TIMESTAMP | 19 |
DATETIME | 19 | ||
DATETIME2 | 19 | ||
SMALLDATETIME | 19 | ||
DATE | 10(注1) | ||
TIME | 8 | ||
時間隔 (文字列) | INTERVAL YEAR(n) TO MONTH | n + 4(注2) | |
INTERVAL YEAR(n) | n + 1(注2) | ||
INTERVAL MONTH(n) | n + 1(注2) | ||
INTERVAL DAY(n) TO HOUR | n + 4(注2) | ||
INTERVAL DAY(n) TO MINUTE | n + 7(注2) | ||
INTERVAL DAY(n) TO SECOND | n + 10(注2) | ||
INTERVAL DAY(n) | n + 1(注2) | ||
INTERVAL HOUR(n) TO MINUTE | n + 4(注2) | ||
INTERVAL HOUR(n) TO SECOND | n + 7(注2) | ||
INTERVAL HOUR(n) | n + 1(注2) | ||
INTERVAL MINUTE(n) TO SECOND | n + 4(注2) | ||
INTERVAL MINUTE(n) | n + 1(注2) | ||
INTERVAL SECOND(n) | n + 1(注2) |
注1) OracleのDATE型を数値属性で扱う場合、サイズがOracleのものと異なります。詳細は付録B.2.2 Oracleと定義の対応関係 を参照してください。
注2) 時間隔先行フィールド精度(n)の指定できる範囲は1~9です。
項目 | 属性コード | 属性 | 項目長 |
---|---|---|---|
TJNLTIME(時刻) | X’81’ | 文字列 | 16 |
X’82’ | 2進整数(8バイト) | 8 | |
TJNLSTS(トランザクション状態) | X’83’ | 2進整数(2バイト) | 2 |
TJNLDBKIND(DB種別) | X’84’ | 2進整数(2バイト) | 2 |
TJNLDBOP(DB操作) | X’85’ | 2進整数(2バイト) | 2 |
TJNLSTORAGE(格納構造名) | X’86’ | 文字列 | 38(注) |
X’87’ | 文字列 | 38(注) |
注) ジャーナルヘッダのコード種別がUNICODE(X'30')の場合は72バイトになります。
利用ジャーナルに項目属性表示が付加されている場合
利用ジャーナルに項目属性表示が付加されている場合の項目有効表示は1バイトで設定されます。設定値は以下のとおりです。
X’00’:有効
X’FF’:無効
X’0F’:NULL値
X’F0’:欠損データ
利用ジャーナルに項目属性表示が付加されていない場合
利用ジャーナルに項目属性表示が付加されていない場合の項目有効表示は2バイトで設定されます。設定値は以下のとおりです。
X’0000’:有効
X’FFFF’:無効
X’00FF’:NULL値
X’FF00’:欠損データ
有効項目表示が無効、NULL値や欠損データの場合、項目の内容は不定になるため使用しないでください。なお、欠損データは、コード変換が正常に行われなかった場合に通知されます。欠損データについての詳細は"14.3.2 欠損データ"を参照してください。
ジャーナル取得対象として指定した列の更新データおよびジャーナル・チェックポイントの情報です。
取得定義にジャーナル・チェックポイントが定義されている場合は、ジャーナル項目の最後にジャーナル・チェックポイントの項目が付加されます。
利用ジャーナルがデータベースの更新情報である場合、更新されたテーブルの列にあたるジャーナル項目は、有効、NULL値、欠損データのいずれかの項目になります。また、更新されなかったテーブルの列にあたるジャーナル項目およびジャーナル・チェックポイントの情報は、無効項目となります。
利用ジャーナルがジャーナル・チェックポイントの場合、ジャーナル・チェックポイントの項目は有効項目となり、ジャーナル・チェックポイント名が左詰で設定されます。ジャーナル取得対象として指定した列の更新データの項目は、無効項目となります。
取得した利用ジャーナルに関する更新時間やトランザクション状態などの情報をシステムが設定します。これらの項目をシステム取得項目と呼びます。システム取得項目はジャーナル項目と同様の形式で取得されます。したがって、利用ジャーナルに項目属性表示が付加されている場合は各項目ごとに項目属性表示と項目有効表示のタグが付加されます。また、利用ジャーナルに項目属性表示が付加されていない場合は各項目ごとに項目有効表示のタグが付加されます。
システム取得項目と設定値の一覧を"表14.8 システム取得項目の設定値"に、利用ジャーナルがジャーナル・チェックポイントの場合に設定されるシステム取得項目を"表14.9 ジャーナル・チェックポイントのシステム取得項目"に示します。
項目 | データ型 | 通知内容および形式 | |
---|---|---|---|
C言語 | COBOL言語 | ||
char[38] | PIC X(38) | [Symfoware/RDBのジャーナルの場合] | |
格納構造名 | char[38] | PIC X(38) | [Symfoware/RDBのジャーナルの場合] |
時刻 | char[16] | PIC X(16) | データベース更新時刻 |
char[8] | PIC X(8) | トランザクションごとに割りふられる番号 | |
トランザクション状態 | short | PIC 9(2) COMP-5 | トランザクション状態 |
DB種別 | short | PIC 9(2) COMP-5 | ジャーナルの取得対象のデータベース種別 |
DB操作 | short | PIC 9(2) COMP-5 | UPDATE文に対するジャーナルの取得方法で、DELETEとINSERTの情報に分割して取得するように指定している場合 UPDATE文に対するジャーナルの取得方法で、UPDATEの情報として取得するように指定している場合 |
注1) トランザクション識別子に設定される値は文字列ではありませんので、コード変換を行わないでください。
注2) ジャーナルヘッダのコード種別がUNICODEの場合は72バイトになります。
システム取得項目は、取得定義に従って設定されます。ただし、配付定義で圧縮するように指定している場合は、以下のようになります。
すべてのシステム取得項目がレコード制御部とジャーナル項目の間に設定される
システム取得項目が無効であっても圧縮によって削除されない
圧縮についての詳細は、"14.2.2 圧縮"を参照してください。
なお、他システムで取得した利用ジャーナルに含まれるシステム取得項目に設定される値は、ジャーナル取得側のシステムのマニュアルを参照してください。