このルーチンは年を示す場合に 2 桁の値しか返さないので、「2000 年には無効」 になります。このルーチンの出力を使用して日付間の差を計算するプログラムは、1999 年 12 月 31 日以降は正しく機能しなくなります。この date() ルーチンを使用しているプログラムは、ルーチンの初期呼び出し時に実行時警告メッセージを表示してユーザーに警告します。このルーチンの代わりに呼び出すことのできるルーチンとして、date_and_time() を参照してください。
サブルーチンは、次のように呼び出します。
call date( c ) |
|||
c |
CHARACTER*9 |
出力 |
変数、配列、配列要素、あるいは部分列 |
戻される文字列 c の形式は、dd-mmm-yy です。 ここで、dd は 2 桁の数値で表した日、mmm は 3 文字に省略した英語の月名、yy は 2 桁の数値で表した年 (2000 年には対応していない) です。
例: date:
demo% cat dat1.f * dat1.f -- 日付を文字列として取得 character c*9 call date ( c ) write(*,"(' 本日の日付は、', A9 )" ) c end demo% f95 dat1.f demo% a.out Computing time differences using the 2 digit year from subroutine date is not safe after year 2000. 本日の日付は、9-Jan-02 demo% |
idate() および date_and_time() も参照してください。
これは、Fortran 95 組み込みルーチンで、2000 年以降も有効です。
date_and_time サブルーチンはリアルタイムクロックと日付のデータを返します。現地時間のほかに、現地時間と世界標準時 (UTC: Universal Coordinated Time) (グリニッジ平均時 (GMT: Greenwich Mean Time) とも呼ぶ) の時差も返します。
date_and_time() サブルーチンは、次のように呼び出します。
call date_and_time( date , time, zone, values ) |
|||
date |
CHARACTER*8 |
出力 |
日付。 書式は CCYYMMDD。 CCYY は 4 桁の年、MM は 2 桁の月、DD は 2 桁の日。例: 19980709 |
time |
CHARACTER*10 |
出力 |
現在の時刻。書式は hhmmss.sss。hh は時、mm は分、ss.sss は秒とミリ秒 |
zone |
CHARACTER*5 |
出力 |
UTC を使用した場合の時差。 時分で示す。 書式は hhmm |
values |
INTEGER*4 VALUES(8) |
出力 |
次に説明する 8 要素の整数配列 |
INTEGER*4 values に返される 8 つの値は次のとおりです。
VALUES(1) |
4 桁の整数の年。たとえば、1998。 |
VALUES(2) |
1 〜 12 の整数の月。 |
VALUES(3) |
1 〜 31 の整数の日。 |
VALUES(4) |
UTC を使用した場合の時差 (分)。 |
VALUES(5) |
1 〜 23 の整数の時。 |
VALUES(6) |
1 〜 59 の整数の分。 |
VALUES(7) |
0 〜 60 の整数の秒。 |
VALUES(8) |
0 〜 999 の範囲のミリ秒。 |
date_and_time の使用例
demo% cat dtm.f integer date_time(8) character*10 b(3) call date_and_time(b(1), b(2), b(3), date_time) print *,'date_time 配列の値' print *,'年=',date_time(1) print *,'month_of_year=',date_time(2) print *,'day_of_month=',date_time(3) print *,'時差 (分)time difference in minutes=',date_time(4) print *,'時=',date_time(5) print *,'分=',date_time(6) print *,'秒=',date_time(7) print *,'ミリ秒=',date_time(8) print *, 'DATE=',b(1) print *, 'TIME=',b(2) print *, 'ZONE=',b(3) end |
2000 年 2 月 16 日にカリフォルニアで実行した場合の出力は次のとおりです。
date_time 配列の値: 年= 2000 month_of_year= 2 day_of_month= 16 時差 (分)= -420 時= 11 分= 49 秒= 29 ミリ秒= 236 DATE=20000216 TIME=114929.236 ZONE=-0700 |