我正在寻找一种纯粹的方式来访问时间信息。我考虑了标准编译器的内在函数和子例程(date_and_time
, cpu_time
, system_clock
, ltime
, ctime
, ...),格式对我来说并不重要。我也想过MPI函数,但它和内在函数一样,都有不纯的函数。
这是一个最小的例子:
elemental subroutine add(message, text)
! function add
IMPLICIT NONE
character(len=:),allocatable,intent(inout) :: message
character(len=*), intent(in) :: text
character(len=1), parameter :: nl=char(10)
character(10) :: time
! character(8) :: date
! time= 'hhmmss.sss'
call DATE_AND_TIME(time)
Message= Message//time////text//nl
end subroutine add
我得到一个逻辑错误:
Error: Subroutine call to intrinsic ‘date_and_time’ at (1) is not PURE
因此,如果存在一种纯粹的获取时间信息的方法,或者如果不可能纯粹拥有它(可能是因为它必须使用 cpu 信息,由于我不知道的原因,这可能是线程不安全的),我正在徘徊。
也许,一个子问题,是否有一种解决方案可以强制编译器考虑date_and_time
纯(或任何其他此类函数)?