1! { dg-do run } 2! { dg-options "-ffree-form -std=legacy" } 3! 4! Test DEC-style PARAMETER statements without parentheses in free form. 5! 6 7subroutine sub1(t, x, y) 8 implicit real(8) (A-H,O-Z) 9 parameter (pi_1 = 3.141592654d0, f_1 = 3.d08) 10 parameter pi_2 = 3.141592654d0, f_2 = 3.d08 ! legacy PARAMETER 11 ! Note that if the parameter statements above are matched 12 ! incorrectly as assignments, the below specification 13 ! statements will be considered out-of-order and we see 14 ! 'unexpected specification statement'. A PARAMETER 15 ! statement should still be a specification statement. 16 17 real(8), intent(in) :: t 18 real(8), intent(out) :: x, y 19 20 real(8), volatile :: two 21 two = 2.0d0 22 x = two * pi_1 * f_1 * t 23 y = two * pi_2 * f_2 * t 24 return 25end subroutine 26 27subroutine sub2(t, x, y, z) 28 implicit none 29 real(8) :: pi_1, pi_2, f_1, f_2 30 parameter (pi_1 = 3.141592654d0, f_1 = 3.d08) 31 parameter pi_2 = 3.141592654d0, f_2 = 3.d08 ! legacy PARAMETER 32 real(8), parameter :: pi_3 = 3.141592654d0, f_3 = 3.d08 33 ! Ditto sub1 34 35 real(8), intent(in) :: t 36 real(8), intent(out) :: x, y, z 37 38 real(8), volatile :: two 39 two = 2.0d0 40 x = two * pi_1 * f_1 * t 41 y = two * pi_2 * f_2 * t 42 z = two * pi_3 * f_3 * t 43end subroutine 44 45implicit none 46real(8) :: x1, x2, y1, y2, z2 47real(8), volatile :: t 48t = 1.5e-6 49 50call sub1(t, x1, y1) 51call sub2(t, x2, y2, z2) 52 53write(*,'(4D18.5)') t, x1, y1 54write(*,'(4D18.5)') t, x2, y2, z2 55 56if (x1 .ne. x2 .or. y1 .ne. y2 & 57 .or. x1 .ne. y1 .or. x2 .ne. y2 & 58 .or. y2 .ne. z2) then 59 STOP 1 60endif 61 62end 63