1! Program to test static variable initialization
2! returns the parameter from the previous invocation, or 42 on the first call.
3function test (parm)
4   implicit none
5   integer test, parm
6   integer :: val = 42
7
8   test = val
9   val = parm
10end function
11
12program intializer
13   implicit none
14   integer test
15   character(11) :: c = "Hello World"
16   character(15) :: d = "Teststring"
17   integer, dimension(3) :: a = 1
18
19   if (any (a .ne. 1)) STOP 1
20   if (test(11) .ne. 42) STOP 2
21   ! The second call should return
22   if (test(0) .ne. 11) STOP 3
23
24   if (c .ne. "Hello World") STOP 4
25   if (d .ne. "Teststring") STOP 5
26end program
27