このドキュメントでは、次のトピックについて説明します。
日付と時間のシステム変数は、以下の場所で指定できます。
Natural が生成した日付と時間のシステム変数の内容は、変更できません。そのため、Natural プログラムでシステム変数に別の値を割り当てることはできません。
すべての日付システム変数には現在の日付が格納されます。日付のフォーマットは、以下に示すように日付変数ごとに異なります。
| 日付変数 | フォーマット/長さ | 日付フォーマット* |
|---|---|---|
| *DATD | A8 | DD.MM.YY |
| *DAT4D | A10 | DD.MM.YYYY |
| *DATE | A8 | DD/MM/YY |
| *DAT4E | A10 | DD/MM/YYYY |
| *DATG | A15 | DDmonthnameYYYY(グレゴリオ暦) |
| *DATI | A8 | YY-MM-DD |
| *DAT4I | A10 | YYYY-MM-DD |
| *DATJ | A5 | YYJJJ(ユリウス暦) |
| *DAT4J | A7 | YYYYJJJ(ユリウス暦) |
| *DATN | N8 | YYYYMMDD |
| *DATU | A8 | MM/DD/YY |
| *DAT4U | A10 | MM/DD/YYYY |
| *DATV | A11 | DD-MON-YYYY |
| *DATVS | A9 | DDMONYYYY |
| *DATX | D | 内部日付形式 |
* D = 日、J = ユリウス日、M = 月、Y = 年、MON = *DATG のように月名の先行 3 バイト
ランタイムに、時間システム変数の内容は、Natural プログラムで参照されるたびに改めて評価されます。時間のフォーマットは以下に示すように変数ごとに異なります。
| 時間変数 | フォーマット/長さ | 説明 |
|---|---|---|
| *TIMD (r) | N7 | 前の SETTIME ステートメントと組み合わせてだけ使用できます。
|
| *TIME | A10 | HH:II:SS.T(*)形式の時刻。 |
| *TIME-OUT | N5 | このシステム変数は Natural Security でだけ有効であり、現在のトランザクションが時間切れになるまでの残りの秒数を示します。
|
| *TIMESTMP | B8 |
マシン内部設置時計の値。 |
| *TIMN | N7 | HHIISST(*)形式の時刻。 |
| *TIMX | T | 内部時間形式の時刻。 |
* H = 時間、I = 分、S = 秒、T = 1/10 秒
** Example 'DATIVAR': Date and time system variables
************************************************************************
DEFINE DATA LOCAL
1 #DATE (D)
1 #TIME (T)
END-DEFINE
*
WRITE NOTITLE
'DATE IN FORMAT DD.MM.YYYY ' *DAT4D /
'DATE IN FORMAT DD/MM/YYYY ' *DAT4E /
'DATE IN FORMAT DD-MON-YYYY ' *DATV /
'DATE IN FORMAT DDMONYYYY ' *DATVS /
'DATE IN GREGORIAN FORM ' *DATG /
'DATE IN FORMAT YYYY-MM-DD ' *DAT4I /
'DATE IN FORMAT YYYYDDD ' *DAT4J /
'DATE IN FORMAT YYYYMMDD ' *DATN (AD=L) /
'DATE IN FORMAT MM/DD/YYYY ' *DAT4U /
'DATE IN INTERNAL FORMAT ' *DATX (DF=L) ///
'TIME IN FORMAT HH:II:SS.T ' *TIME /
'TIME IN FORMAT HHIISST ' *TIMN (AD=L) /
'TIME IN INTERNAL FORMAT ' *TIMX /
*
MOVE *DATX TO #DATE
ADD 14 TO #DATE
WRITE 'CURRENT DATE' *DATX (DF=L) 3X
'CURRENT DATE + 14 DAYS ' #DATE (DF=L)
*
MOVE *TIMX TO #TIME
ADD 100 TO #TIME
WRITE 'CURRENT TIME' *TIMX 5X
'CURRENT TIME + 10 SECONDS' #TIME
*
END
プログラム DATIVAR の出力:
DATE IN FORMAT DD.MM.YYYY 11.01.2005
DATE IN FORMAT DD/MM/YYYY 11/01/2005
DATE IN FORMAT DD-MON-YYYY 11-Jan-2005
DATE IN FORMAT DDMONYYYY 11Jan2005
DATE IN GREGORIAN FORM 11January 2005
DATE IN FORMAT YYYY-MM-DD 2005-01-11
DATE IN FORMAT YYYYDDD 2005011
DATE IN FORMAT YYYYMMDD 20050111
DATE IN FORMAT MM/DD/YYYY 01/11/2005
DATE IN INTERNAL FORMAT 2005-01-11
TIME IN FORMAT HH:II:SS.T 14:42:05.4
TIME IN FORMAT HHIISST 1442054
TIME IN INTERNAL FORMAT 14:42:05
CURRENT DATE 2005-01-11 CURRENT DATE + 14 DAYS 2005-01-25
CURRENT TIME 14:42:05 CURRENT TIME + 10 SECONDS 14:42:15