Sun Studio 12: Fortran プログラミングガイド

7.7 時間と日付関数

時刻や CPU の経過時間を戻すライブラリ関数は、システムによって異なります。

次の表に、Fortran ライブラリでサポートされる時間関数を示します。

表 7–3 Sun Fortran 時間関数

名称 

機能 

マニュアルページ 

time

1970 年 1 月 1 日からの経過秒数を返す 

time(3F)

date

日付を文字列で返す 

date(3F)

fdate

現在の時刻と日付を文字列で返す 

fdate(3F)

idate

現在の月、日、年を整数配列で返す 

idate(3F)

itime

現在の時、分、秒を整数配列で返す 

itime(3F)

ctime

time 関数の返した時間を文字列に変換する

ctime(3F)

ltime

time 関数の返した時間を現地時刻に変換する

ltime(3F)

gmtime

time 関数の返した時間をグリニッジ標準時に変換する

gmtime(3F)

etime

シングルプロセッサ:プログラムの実行で経過したユーザー時間とシステム時間を返す。 複数のプロセッサ:実測時間を返す。

etime(3F)

dtime

最後に dtime を呼び出した時点から経過したユーザー時間とシステム時間を返す

dtime(3F)

date_and_time

日付と時刻を文字と数値で返す 

date_and_time(3F)

詳細は、『Fortran ライブラリ・リファレンス』、またはそれぞれの関数のマニュアルページを参照してください。次に、これら時間関数を使用した簡単な例を示します (TestTim.f)。


      subroutine startclock
      common / myclock / mytime
      integer mytime, time
      mytime = time()
      return
      end
      function wallclock()
      integer wallclock
      common / myclock / mytime
      integer mytime, time, newtime
      newtime = time()
      wallclock = newtime–  mytime
      mytime = newtime
      return
      end
      integer wallclock, elapsed
      character*24 greeting
      real dtime, timediff, timearray(2)
c      見出しを出力
      call fdate( greeting )
      print*,    " こんにちは。現在の時刻は: , 挨拶
      print*,    " 'sleep 4' に何秒かかるか見てみよう"
      call startclock
      call system( 'sleep 4' )
      elapsed = wallclock()
      print*, "sleep 4 の実行で経過した時間: ", elapsed," 秒"
c      ここで簡単な計算に必要な CPU 時間をテスト
      timediff = dtime( timearray )
      q = 0.01
      do 30 i = 1, 100000
            q = atan( q )
30      continue
      timediff = dtime( timearray )
      print*, "atan(q) 10 万回にかかった時間: ", timediff ," 秒"
      end

このプログラムを実行すると、次のような結果になります。


demo% TimeTest
       こんにちは。現在の時刻は: Thu Feb  8 15:33:36 2001
   'sleep 4' に何秒かかるか見てみよう
   sleep 4 の実行で経過した時間: 4 秒
   atan(q) 10 万回にかかった時間: 0.01 秒
demo%

次の表に示すルーチンは、VMS Fortran のシステムルーチン idatetime との互換機能を提供します。これらのルーチンを使用するときは、f95 のコマンド行で -lV77 オプションを指定する必要があります。この場合、標準の f95 バージョンの代わりに VMS バージョンの方が使用されることになります。

表 7–4 非標準 VMS Fortran システムルーチンの要約

名称 

定義 

呼び出し手順 

引数の型 

idate

日、月、年 (d,m,y) 形式の日付 

call idate( d, m, y )

integer

time

時分秒 (hhmmss) 形式の現在時刻

call time( t )

character*8


注 –

date(3F) ルーチンおよび idate(3F) ルーチンの VMS バージョンは年を示す場合に 2 桁の値しか返さないので、2000 年問題に対応していません。これらのルーチンから返される日付を差し引いて継続時間を計算するプログラムは、1999 年 12 月 31 日以降は正しく機能しなくなります。代わりに、Fortran 95 のルーチン date_and_time(3F) を使用してください。詳細は、『Fortran ライブラリ・リファレンス』を参照してください。