Hitachi

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


ee_thd_gettime

〈このページの構成〉

名称

現在時刻の取得

形式

ANSI C,C++の形式

#include <eethd.h>
int ee_thd_gettime(EELONG form, EELONG figure, void *time, EELONG flags)

機能

現在時刻を取得します。

ee_thd_gettime関数で取得する時刻は,TP1/EEが管理している現在時刻,またはマシンの現在時刻になります。

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

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

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

●form

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

EETHD_BINARY

BINARY形式で取得します。

EETHD_DATE

DATE形式で取得します。

EETHD_BINARY_TEXT

BINARY_TEXT形式で取得します。

EETHD_DATE_TEXT

DATE_TEXT形式で取得します。

●figure

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

EETHD_FIG_SEC

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

EETHD_FIG_MICROSEC

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

●time

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

格納する領域に必要なサイズは,form,およびfigureに設定した値によって異なります。次の表に示すサイズの領域を設定してください。

表4‒11 格納領域に必要なサイズ(単位:バイト)

form指定値

figure指定値

EETHD_FIG_SEC

EETHD_FIG_MICROSEC

EETHD_BINARY

4※1

8※2

EETHD_DATE

6

9

EETHD_BINARY_TEXT

7

11

EETHD_DATE_TEXT

12

18

注※1

領域のアドレスは4バイトのバウンダリを保証してください。

注※2

領域のアドレスは8バイトのバウンダリを保証してください。

●flags

EENOFLAGSを設定します。

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

●time

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

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

  • BINARY形式・秒精度で取得する場合(formにEETHD_BINARY,figureにEETHD_FIG_SECを設定)

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

    [図データ]

    ssssssss

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

    単位は1/100秒です。

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

  • BINARY形式・マイクロ秒精度で取得する場合(formにEETHD_BINARY,figureにEETHD_FIG_MICROSECを設定)

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

    [図データ]

    ssssssssssssssss

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

    単位はマイクロ秒です。

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

  • DATE形式・秒精度で取得する場合(formにEETHD_DATE,figureにEETHD_FIG_SECを設定)

    図4‒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形式・マイクロ秒精度で取得する場合(formにEETHD_DATE,figureにEETHD_FIG_MICROSECを設定)

    図4‒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形式・秒精度で取得する場合(formにEETHD_BINARY_TEXT,figureにEETHD_FIG_SECを設定)

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

    [図データ]

    sssssss

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

    単位は1/100秒です。

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

  • BINARY_TEXT形式・マイクロ秒精度で取得する場合(formにEETHD_BINARY_TEXT,figureにEETHD_FIG_MICROSECを設定)

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

    [図データ]

    sssssssssss

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

    単位はマイクロ秒です。

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

  • DATE_TEXT形式・秒精度で取得する場合(formにEETHD_DATE_TEXT,figureにEETHD_FIG_SECを設定)

    図4‒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形式・マイクロ秒精度で取得する場合(formにEETHD_DATE_TEXT,figureにEETHD_FIG_MICROSECを設定)

    図4‒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」が設定されます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

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

EETHDER_ARGUMENT

引数に設定した値が間違っています。

EETHDER_CONDITION

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

EETHDER_GETFAILURE

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

EETHDER_LIMITS_OVER

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

EETHDER_UNRESOLVABLE

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

注意事項

リターン値がEE_OK以外の場合,timeの内容は参照できません。

figureにEETHD_FIG_MICROSECを指定した場合は,システムコールを使用してマシン時刻を取得します。そのため,figureにEETHD_FIG_MICROSECを指定したee_thd_gettime関数を多量に呼び出すと,性能が低下するおそれがあります。

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