Fortran90以降の機能です。
忘れやすいので例によってサンプルプログラムにまとめました。
日付の取得にはdate_and_time関数を使用します。
program main implicit none integer date_time(8) character(len=10) sys_time(3) call date_and_time(sys_time(1), sys_time(2), sys_time(3), date_time) write(*,*) "date_and_time" write(*, '(a)') "<< argument 1-3 >>" write(*, '(a, 1x, a)') "year, month, date : ", sys_time(1) write(*, '(a, 1x, a)') "time : ", sys_time(2) write(*, '(a, 1x, a)') "time zone : ", sys_time(3) write(*,*) write(*, '(a)') "<< argument 4 array>>" write(*, '(a, 1x, i6)') "year : ", date_time(1) write(*, '(a, 1x, i6)') "month : ", date_time(2) write(*, '(a, 1x, i6)') "date : ", date_time(3) write(*, '(a, 1x, i6)') "time zone[min.] : ", date_time(4) write(*, '(a, 1x, i6)') "hour : ", date_time(5) write(*, '(a, 1x, i6)') "minute : ", date_time(6) write(*, '(a, 1x, i6)') "second : ", date_time(7) write(*, '(a, 1x, i6)') "milli second : ", date_time(8) end program main
実行結果
date_and_time << argument 1-3 >> year, month, date : 20140218 time : 155431.688 time zone : +0900 << argument 4 array>> year : 2014 month : 2 date : 18 time zone[min.] : 540 hour : 15 minute : 54 second : 31 milli second : 688
システム時間にはsystem_time関数を使用します。引数にする整数のバイト長で扱える範囲が変わることを知ったので、kind=4とkind=8の両方を比較しています。
kind=4だと、2日ほど計算が進むと一週しそう。
program main implicit none write(*,*) "system_clock function" write(*,*) "<< kind=4 >>" call print_time4() write(*,*) "<< kind=4 >>" call print_time8() contains subroutine print_time4() integer(kind=4) :: icount, icount_rate, icount_max call system_clock(COUNT=icount, COUNT_RATE=icount_rate, & & COUNT_MAX=icount_max) write(*, '(a, 1x, i20)') "icount ", icount write(*, '(a, 1x, i20)') "icount_rate ", icount_rate write(*, '(a, 1x, i20)') "icount_max ", icount_max end subroutine print_time4 subroutine print_time8() integer(kind=8) :: icount, icount_rate, icount_max call system_clock(COUNT=icount, COUNT_RATE=icount_rate, & & COUNT_MAX=icount_max) write(*, '(a, 1x, i20)') "icount ", icount write(*, '(a, 1x, i20)') "icount_rate ", icount_rate write(*, '(a, 1x, i20)') "icount_max ", icount_max end subroutine print_time8 end program main
結果
system_clock function << kind=4 >> icount 659766089 icount_rate 10000 icount_max 2147483647 << kind=4 >> icount 1392706756609384 icount_rate 1000000 icount_max 9223372036854775807