1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
program arrays_08_size
integer :: y = 2
call temp(y)
contains
subroutine temp(x)
integer, intent(inout) :: x
logical :: keep(x)
integer :: result(x)
keep = [.true., .true.]
x = 1
result = trueloc(keep)
print * , result
if (any(result /= [1, 2])) error stop
end subroutine
function trueloc(x) result(loc)
logical, intent(in) :: x(:)
integer(4), allocatable :: loc(:)
integer :: i, j
allocate(loc(count(x)))
j = 1
do i = 1, size(x)
if( x(i) ) then
loc(j) = i
j = j + 1
end if
end do
end function trueloc
end program
|