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に設定した値によって異なります。次の表に示すサイズの領域を設定してください。
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 |
●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を指定した場合の取得時刻とマシン時刻がずれていることがあります。