!
      PROGRAM P81
!
!     Shows use of passing data via COMMON
!
      IMPLICIT NONE
      REAL :: X,Y(10),START,STEP
      INTEGER :: K
!
      INTERFACE
      SUBROUTINE CALC(K,X,Y)
      IMPLICIT NONE
      REAL, INTENT(IN OUT) :: X,Y(:)
      INTEGER, INTENT(IN OUT) :: K
      END SUBROUTINE CALC
      END INTERFACE
!
      PRINT *, 'This is Program >> P81  - SUBROUTINE'
!
      START=0.0
      STEP=0.1
      X=START
!
      PRINT 16,START,STEP
16    FORMAT(' INITIAL VALUE =',F5.2/  &
             ' INCREMENT     =',F5.2/)
!
L1:   DO K=1,10
         CALL CALC(K,X,Y)
         PRINT 17,X,Y(K)  ! Y values are stored and
         X=X+STEP
      END DO L1           ! could be used again
17    FORMAT(2F10.4)
      STOP
      END PROGRAM P81
!
      SUBROUTINE CALC(K,X,Y)
      IMPLICIT NONE
      REAL, INTENT(IN OUT) :: X,Y(:)
      INTEGER, INTENT(IN OUT) :: K     
      REAL :: SD,PI,U,C,GAUSS
      U=0.0
      SD=1.0
      PI=3.14159
      C=1.0/(SD*SQRT(2.0*PI))
      GAUSS=C*EXP(-(X-U)**2/(2.0*SD**2))
      Y(K)=GAUSS
      RETURN
      END SUBROUTINE CALC
!     