LoginSignup
1
1

More than 1 year has passed since last update.

%TIMESTAMP追加機能(*UNIQUE 注意?

Last updated at Posted at 2022-12-14

%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」。

■ 複数回実行しても常に固有値部分が同じ
2022-11-27_160223.png

■ 異なるユーザー・ジョブで実行しても常に固有値部分が同じ
2022-11-27_161144.png

因みにマニュアルの例での出力も「000244」となっている

以下マニュアルより引用

最初のパラメーターが *UNIQUE の場合、%TIMESTAMP は現在のシステム・タイム・スタンプをマイクロ
秒単位の精度で戻します。 タイム・スタンプの小数部の最初の 6 桁には、タイム・スタンプのマイクロ秒
の部分が設定されます。 残りの 6 桁の小数秒に値に設定され、この値によって、結果として生成されるタ
イム・スタンプが固有になります。 ただし、その残りの 6 桁の小数秒によって、タイム・スタンプの精度
が上がることはありません。

dsply (%timestamp(*UNIQUE);
// It displays 2014-06-27-01.02.03.923481000244

これは、*UNIQUE」 に関しては、少し様子見ですね。時間がある時に、SWMA で聞いてみましょうかね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1