!
      PROGRAM P46
!
!     FACTORIAL N
!
      IMPLICIT NONE
      INTEGER :: I,N,FACT
!
!
      PRINT *, 'This is Program >> P46  - Factorial program'
!
!
!     Tell program where data for  READ *  is coming from
      OPEN(UNIT=5, FILE='P46.DAT')      ! UNIT=5 is the default input
!
      PRINT 1000
1000  FORMAT(' Factorial Program'/)
L1:   DO
         READ *,N
         IF(N  <  0) STOP  ! or EXIT in this case
!
         FACT=1
L2:      DO I=2,N
            FACT=FACT*I
         END DO L2
!
         PRINT 10,N,FACT
10       FORMAT(' Factorial',I3,' =',I8)
!
      END DO L1
      STOP
      END PROGRAM P46