blob: b5d5c672f1df849472c1963b5e49e11a9f50daf4 [file] [log] [blame]
! { dg-do run }
! { dg-options "-ffixed-form -std=legacy" }
!
! Test DEC-style PARAMETER statements without parentheses in
! fixed form.
!
subroutine sub1(t, x, y)
implicit real(8) (A-H,O-Z)
parameter (pi_1 = 3.141592654d0, f_1 = 3.d08)
parameter pi_2 = 3.141592654d0, f_2 = 3.d08
! Note that if the parameter statements above are matched
! incorrectly as assignments, the below specification
! statements will be considered out-of-order and we see
! 'unexpected specification statement'. A PARAMETER
! statement should still be a specification statement.
real(8), intent(in) :: t
real(8), intent(out) :: x, y
real(8), volatile :: two
two = 2.0d0
x = two * pi_1 * f_1 * t
y = two * pi_2 * f_2 * t
return
end subroutine
subroutine sub2(t, x, y, z)
implicit none
real(8) :: pi_1, pi_2, f_1, f_2
parameter (pi_1 = 3.141592654d0, f_1 = 3.d08)
parameter pi_2 = 3.141592654d0, f_2 = 3.d08
real(8), parameter :: pi_3 = 3.141592654d0, f_3 = 3.d08
! Ditto sub1
real(8), intent(in) :: t
real(8), intent(out) :: x, y, z
real(8), volatile :: two
two = 2.0d0
x = two * pi_1 * f_1 * t
y = two * pi_2 * f_2 * t
z = two * pi_3 * f_3 * t
end subroutine
implicit none
real(8) :: x1, x2, y1, y2, z2
real(8), volatile :: t
t = 1.5e-6
call sub1(t, x1, y1)
call sub2(t, x2, y2, z2)
write(*,'(4D18.5)') t, x1, y1
write(*,'(4D18.5)') t, x2, y2, z2
if (x1 .ne. x2 .or. y1 .ne. y2
& .or. x1 .ne. y1 .or. x2 .ne. y2
& .or. y2 .ne. z2) then
STOP 1
endif
end