日時システム変数

このドキュメントでは、次のトピックについて説明します。


使用方法

日付と時間のシステム変数は、以下の場所で指定できます。

Natural が生成した日付と時間のシステム変数の内容は、変更できません。そのため、Natural プログラムでシステム変数に別の値を割り当てることはできません。

*DAT* - 日付システム変数

すべての日付システム変数には現在の日付が格納されます。日付のフォーマットは、以下に示すように日付変数ごとに異なります。

日付変数 フォーマット/長さ 日付フォーマット*
*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 バイト

*TIM* - 時間システム変数

ランタイムに、時間システム変数の内容は、Natural プログラムで参照されるたびに改めて評価されます。時間のフォーマットは以下に示すように変数ごとに異なります。

時間変数 フォーマット/長さ 説明
*TIMD (r) N7 前の SETTIME ステートメントと組み合わせてだけ使用できます。

SETTIME ステートメントが実行されてからの経過時間(HHIISST(*)形式)を持ちます。

(r)*TIMD の基準となる SETTIME ステートメントのステートメントラベルまたはソースコード行番号を参照します。

*TIME A10 HH:II:SS.T(*)形式の時刻。
*TIME-OUT N5 このシステム変数は Natural Security でだけ有効であり、現在のトランザクションが時間切れになるまでの残りの秒数を示します。

*TIME-OUT は、トランザクションモードに入る前は 0 です。更新や削除を行うために FINDREAD、または GET ステートメントでデータベースレコードを読み込むと、トランザクションモードに入ります。

*TIME-OUT は、END TRANSACTION または BACKOUT TRANSACTION ステートメントが実行されると 0 にリセットされます。

*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