I found that gfortran is missing the KIND optional argument in some
of the transformational intrinsics. Also a couple of usages of KIND
were not do***ented, and gfortran does not yet accept f2008 usage for
the SIZE intrinsic.
C:\gfortran\james\intrinsics\func1>type kind.f90
program test
implicit none
integer, parameter :: ck = kind('A')
integer, parameter :: ik = selected_int_kind(18)
integer i
real x
integer array(1)
i = 42
x = 3.14
array = 13
write(*,*) achar(i,kind=ck) ! KIND works but is not do***ented
write(*,*) char(i,kind=ck) ! KIND works but is not do***ented
write(*,*) maxloc(array,kind=ik) ! Consistent with f2003 usage
write(*,*) minloc(array,kind=ik) ! Consistent with f2003 usage
write(*,*) nint(x,kind=ik) ! KIND works but is not do***ented
write(*,*) shape(array,kind=ik) ! Consistent with f2003 usage
write(*,*) size(ik) ! Consistent with f2008 usage
end program test
C:\gfortran\james\intrinsics\func1>gfortran kind.f90 -okind
kind.f90:15.13:
write(*,*) maxloc(array,kind=ik) ! Consistent with f2003 usage
1
Error: Can't find keyword named 'kind' in call to 'maxloc' at (1)
kind.f90:16.13:
write(*,*) minloc(array,kind=ik) ! Consistent with f2003 usage
1
Error: Can't find keyword named 'kind' in call to 'minloc' at (1)
kind.f90:18.13:
write(*,*) shape(array,kind=ik) ! Consistent with f2003 usage
1
Error: Too many arguments in call to 'shape' at (1)
kind.f90:19.19:
write(*,*) size(ik) ! Consistent with f2008 usage
1
Error: 'array' argument of 'size' intrinsic at (1) must be an array
--
write(*,*) transfer((/17.392111325966148d0,6.5794487871554595D-85, &
6.0134700243160014d-154/),(/'x'/)); end


|