subroutine date_and_time (date, time, zone, values) character*8 date character*10 time character*5 zone integer*4 values(8)
これは、Fortran 90 のルーチン DATE_AND_TIME の Fortran 77 版であり、2000 年問題に対応しています。
DATE_AND_TIME サブルーチンは、リアルタイムクロックと日付からデータを返します。現地時間とともに、現地時間と世界標準時 (UTC) (グリニッジ平均時 (GMT) とも呼ばれる) との差が返されます。
DATE_AND_TIME サブルーチンでは、次の引数を使用できます。
文字型のスカラーである必要があります。完全な値を含めるには、8 文字以上の長さにする必要があります。これは出力引数であり、左端から 8 文字が形式 YYYYMMDD の値に設定されます。ここで、YYYY は 4 桁の年、MM はその年の月、DD はその月の日です。使用できる日付がない場合、date は空白に設定されます。
文字型のスカラーである必要があります。完全な値を含めるには、10 文字以上の長さにする必要があります。これは出力引数であり、左端から 10 文字が形式 hhmmss.sss の値に設定されます。ここで、hh は時間、mm はその時間の分、ss.sss はその分の秒とミリ秒です。使用できるクロックがない場合、time は空白に設定されます。
文字型のスカラーである必要があります。完全な値を含めるには、5 文字以上の長さにする必要があります。これは出力引数であり、左端から 5 文字が形式 +-hhmm の値に設定されます。ここで、hh と mm はそれぞれ、時間単位での UTC との時間差と分単位で表される時間の部分です。使用できるクロックがない場合、zone は空白に設定されます。(注意: 現地タイムゾーンはオペレーティングシステムまたは TZ 環境変数 (あるいはその両方) によって設定されます)。
基本整数型で、ランクが 1 である必要があります。これは出力引数であり、少なくとも 8 つの要素を持つ必要があります。values の戻り値は、次のとおりです。
戻り値
年 (つまり、1990)
月 (1-12)
日 (1-31)
UTC との時間差 (分単位)
時間 (0 - 23)
分 (0 - 59)
秒 (0 - 60)
ミリ秒 (0 - 999)
integer*4 date_time(8) character(len=10) big_ben(3) call date_and_time(big_ben(1), big_ben(2), big_ben(3), date_time) print *,'date_time array values:' print *,'year=',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 *,'hour of day=',date_time(5) print *,'minutes of hour=',date_time(6) print *,'seconds of minute=',date_time(7) print *,'milliseconds of second=',date_time(8) print *, 'DATE=',big_ben(1) print *, 'TIME=',big_ben(2) print *, 'ZONE=',big_ben(3) end
このプログラムが 1997 年 10 月 10 日に米国のカリフォルニアで実行された場合は、次のような出力が生成されます。
date_time array values: year= 1997 month_of_year= 10 day_of_month= 10 time difference in minutes= -420 hour of day= 16 minutes of hour= 35 seconds of minute= 37 milliseconds of second= 708 DATE=19971010 TIME=163537.708 ZONE=-0700
libfui.a
idate(3F)、ctime(3F)、fdate(3F)
FORTRAN 77 言語リファレンスマニュアル