Hitachi

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


CBLEETHD('GETTIME ')

〈このページの構成〉

名称

現在時刻の取得

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETHD' USING 一意名1 一意名2

DATA DIVISIONの指定

01 一意名1.
  02 データ名A  PIC X(8) VALUE 'GETTIME '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  PIC S9(9) COMP.
  02 データ名E  PIC S9(9) COMP.
  02 データ名F  ADDRESS.

機能

現在時刻を取得します。

CBLEETHD('GETTIME ')で取得する時刻は,TP1/EEが管理している現在時刻,またはマシンの現在時刻になります。

TP1/EEが管理している現在時刻は,プロセス関連定義のclock_time_intervalオペランドの指定値の間隔で更新し,60秒ごとにマシン時刻と同期を取ります。マシン時刻との同期の際には,時刻の進みが発生することがあります。また,時刻の同期に失敗した場合,および同期時点でのマシン時刻との誤差が大きい場合はメッセージが出力されます。

取得時刻のタイムゾーンは,TP1/Server Baseのユーザサービス定義に指定したTZ環境変数に依存します。

UAPで値を設定するデータ領域

●データ名A

現在時刻取得要求を示す要求コードを「VALUE 'GETTIME△'」と設定します。

●データ名C

0を設定します。

●データ名D

時刻の取得形式を設定します。

1

BINARY形式で取得します。

2

DATE形式で取得します。

16

BINARY_TEXT形式で取得します。

32

DATE_TEXT形式で取得します。

●データ名E

取得時刻の精度を設定します。

1

秒精度で取得します。この値を設定した場合は,TP1/EEが管理している現在時刻を取得します。

2

マイクロ秒精度で取得します。

この値を設定した場合は,システムコールを使用してマシンの現在時刻を取得します。

●データ名F

取得した時刻を格納する領域のアドレスを設定します。

格納する領域に必要なPICTURE句は,データ名D,およびデータ名Eに設定した値によって異なります。次の表に示すサイズの領域を設定してください。

表5‒11 格納領域のPICTURE句

データ名D指定値

データ名E指定値

1(秒精度)

2(マイクロ秒精度)

1(BINARY形式)

PIC 9(9) SYNC COMP

PIC 9(18) SYNC COMP

2(DATE形式)

PIC X(6)

PIC X(9)

16(BINARY_TEXT形式)

PIC X(7)

PIC X(11)

32(DATE_TEXT形式)

PIC X(12)

PIC X(18)

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

●データ名F

取得した時刻が設定されます。

取得形式のイメージを,次に示します。

  • BINARY形式・秒精度で取得する場合(データ名Dに1,データ名Eに1を設定)

    図5‒1 BINARY形式・秒精度の現在時刻表示

    [図データ]

    ssssssss

    当日の00:00:00からの通算時刻です。0〜8640000がホストバイトオーダの符号なし整数で設定されます。

    単位は1/100秒です。

    (例)通算時刻が01:23:45の場合,「0007AAE4」が設定されます。

  • BINARY形式・マイクロ秒精度で取得する場合(データ名Dに1,データ名Eに2を設定)

    図5‒2 BINARY形式・マイクロ秒精度の現在時刻表示

    [図データ]

    ssssssssssssssss

    当日の00:00:00からの通算時刻です。0〜86400999999がホストバイトオーダの符号なし整数で設定されます。

    単位はマイクロ秒です。

    (例)通算時刻が01:23:45.567890の場合,「000000012B8C1492」が設定されます。

  • DATE形式・秒精度で取得する場合(データ名Dに2,データ名Eに1を設定)

    図5‒3 DATE形式・秒精度の現在時刻表示

    [図データ]

    次の各値が10進数パック形式で設定されます。

    • YY:当日の西暦年下2けた(00〜99)

    • MM:当日の月(01〜12)

    • DD:当日の日(01〜31)

    • hh:当日0時からの通算時(00〜23)

    • mm:分(00〜59)

    • ss:秒(00〜60)

    (例)時刻が2010/12/31 23:59:59の場合,「101231235959」が設定されます。

  • DATE形式・マイクロ秒精度で取得する場合(データ名Dに2,データ名Eに2を設定)

    図5‒4 DATE形式・マイクロ秒精度の現在時刻表示

    [図データ]

    次の各値が10進数パック形式で設定されます。

    • YY:当日の西暦年下2けた(00〜99)

    • MM:当日の月(01〜12)

    • DD:当日の日(01〜31)

    • hh:当日0時からの通算時(00〜23)

    • mm:分(00〜59)

    • ssssssss:マイクロ秒(00000000〜60999999)

    (例)時刻が2010/12/31 23:59:59.999999の場合,「101231235959999999」が設定されます。

  • BINARY_TEXT形式・秒精度で取得する場合(データ名Dに16,データ名Eに1を設定)

    図5‒5 BINARY_TEXT形式・秒精度の現在時刻表示

    [図データ]

    sssssss

    当日の00:00:00からの通算時刻です。0000000〜8640000が10進数の文字列で設定されます。下2けたは常に「00」となります。

    単位は1/100秒です。

    (例)通算時刻が01:23:45の場合,「0502500」が設定されます。

  • BINARY_TEXT形式・マイクロ秒精度で取得する場合(データ名Dに16,データ名Eに2を設定)

    図5‒6 BINARY_TEXT形式・マイクロ秒精度の現在時刻表示

    [図データ]

    sssssssssss

    当日の00:00:00からの通算時刻です。00000000000〜86400999999が10進数の文字列で設定されます。

    単位はマイクロ秒です。

    (例)通算時刻が01:23:45.567890の場合,「05025567890」が設定されます。

  • DATE_TEXT形式・秒精度で取得する場合(データ名Dに32,データ名Eに1を設定)

    図5‒7 DATE_TEXT形式・秒精度の現在時刻表示

    [図データ]

    次の各値が10進数の文字列で設定されます。

    • YY:当日の西暦年下2けた(00〜99)

    • MM:当日の月(01〜12)

    • DD:当日の日(01〜31)

    • hh:当日0時からの通算時(00〜23)

    • mm:分(00〜59)

    • ss:秒(00〜60)

    (例)時刻が2010/12/31 23:59:59の場合,「101231235959」が設定されます。

  • DATE_TEXT形式・マイクロ秒精度で取得する場合(データ名Dに32,データ名Eに2を設定)

    図5‒8 DATE_TEXT形式・マイクロ秒精度の現在時刻表示

    [図データ]

    次の各値が10進数の文字列で設定されます。

    • YY:当日の西暦年下2けた(00〜99)

    • MM:当日の月(01〜12)

    • DD:当日の日(01〜31)

    • hh:当日0時からの通算時(00〜23)

    • mm:分(00〜59)

    • ssssssss:マイクロ秒(00000000〜60999999)

    (例)時刻が2010/12/31 23:59:59.999999の場合,「101231235959999999」が設定されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

05301

データ名に設定した値が間違っています。

要求コード(データ名A)が間違っている場合も含みます。

05302

関数の呼び出し条件が不正です。

05304

取得した時刻が,TP1/EE内で制御可能な上限値を超過しました。

05319

時刻取得に失敗しました。

05399

その他のエラーが発生しました。

注意事項

ステータスコードが00000以外の場合,データ名Fは参照できません。

データ名Eに2を指定した場合は,システムコールを使用してマシン時刻を取得します。そのため,データ名Eに2を指定したCBLEETHD('GETTIME ')を多量に呼び出すと,性能が低下するおそれがあります。

KFSB45310-EまたはKFSB45311-Wメッセージが出力された前後の60秒間では,データ名Eに1を指定した場合の取得時刻とマシン時刻がずれていることがあります。