%TIMESTAMP追加機能。 V7R5 又は PTF適用済み V7R3以上 で使用可能。
機能追加は以下
- マイクロ秒精度を戻す
- ユニーク・タイムスタンプを戻す。※注意?
以下は、使用例
QII0150R.rpgle
D*- ---<< 変数定義 >>-----*
D TS1 S 26Z
D TS2 S 32A
D MSG S 40A
C*- ***************************************************************
C*- * メインロジック **
C*- ***************************************************************
C*- V7R5よりマイクロ秒で取得される
C EVAL TS1 = %TIMESTAMP()
C EVAL MSG = ' マイクロ秒 '
C + %CHAR(TS1)
C MSG DSPLY
C*
C*- ユニーク・タイムスタンプ取得
C EVAL TS2 = %CHAR(
C %TIMESTAMP(*UNIQUE)
C )
C EVAL MSG = 'U-TS.'
C + %CHAR(TS2)
C MSG DSPLY
C*
C SETON LR
C RETURN
本当にユニーク・タイムスタンプ?
但し、現時点で上記を実行すると、「本当にユニーク・タイムスタンプ?」 と疑問が湧く。なぜなら以下が実行結果のスクリーンショットだからだ。ユニークになる筈の下6桁は常に「000244」。
因みにマニュアルの例での出力も「000244」となっている
以下マニュアルより引用
最初のパラメーターが *UNIQUE の場合、%TIMESTAMP は現在のシステム・タイム・スタンプをマイクロ
秒単位の精度で戻します。 タイム・スタンプの小数部の最初の 6 桁には、タイム・スタンプのマイクロ秒
の部分が設定されます。 残りの 6 桁の小数秒に値に設定され、この値によって、結果として生成されるタ
イム・スタンプが固有になります。 ただし、その残りの 6 桁の小数秒によって、タイム・スタンプの精度
が上がることはありません。
dsply (%timestamp(*UNIQUE);
// It displays 2014-06-27-01.02.03.923481000244
これは、*「UNIQUE」 に関しては、少し様子見ですね。時間がある時に、SWMA で聞いてみましょうかね。