File: optional_05.f90

package info (click to toggle)
lfortran 0.59.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 56,736 kB
  • sloc: cpp: 168,052; f90: 74,272; python: 17,537; ansic: 7,705; yacc: 2,345; sh: 1,334; fortran: 895; makefile: 37; javascript: 15
file content (43 lines) | stat: -rw-r--r-- 958 bytes parent folder | download | duplicates (3)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
module optional_05_mod

logical :: opt_present, opt_alloc_present

contains

    subroutine opt(i)
    integer, optional, intent(in) :: i
    print *, 'Present in opt: ', present(i)
    opt_present = present(i)
    end subroutine opt 

    subroutine opt_alloc(i)
    integer, allocatable, optional, intent(in) :: i
    print *, 'Present in opt_alloc: ', present(i)
    opt_alloc_present = present(i)
    call opt(i)
    end subroutine opt_alloc 

end module


program optional_05
use optional_05_mod
integer, allocatable :: i
opt_present = .false.
opt_alloc_present = .false.

#ifndef __GFORTRAN__
call opt_alloc()
#endif
if (opt_alloc_present .neqv. .false.) error stop
if (opt_present .neqv. .false.) error stop

call opt_alloc(i)
if (opt_alloc_present .neqv. .true.) error stop
if (opt_present .neqv. .false.) error stop

allocate(i)
call opt_alloc(i)
if (opt_alloc_present .neqv. .true.) error stop
if (opt_present .neqv. .true.) error stop
end program