File: arrays_08_size.f90

package info (click to toggle)
lfortran 0.58.0-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 54,512 kB
  • sloc: cpp: 162,179; f90: 68,251; python: 17,476; ansic: 6,278; yacc: 2,334; sh: 1,317; fortran: 892; makefile: 33; javascript: 15
file content (30 lines) | stat: -rw-r--r-- 711 bytes parent folder | download
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