!
      PROGRAM P63
!
!     Multiple CALLs to a SUBROUTINE
!
      IMPLICIT NONE
      INTEGER :: I,J,M,N
!
      INTERFACE
      SUBROUTINE SWAP(I,J)
      IMPLICIT NONE
      INTEGER, INTENT(IN OUT) :: I,J
      END SUBROUTINE SWAP
      END INTERFACE
!
      PRINT *, 'This is Program >> P63  - Multiple subroutine CALLs'
!
!     Tell program where data for  READ *  is coming from
      OPEN(UNIT=5, FILE='P63.DAT')      ! UNIT=5 is the default input
!
      READ *,I,J
      PRINT *,I,J
      CALL SWAP(I,J)
      PRINT *,I,J
      PRINT *         ! Leave a blank line
      READ *,M,N
      PRINT *,M,N
      CALL SWAP(M,N)
      PRINT *,M,N
      PRINT *         ! Leave a blank line
      CALL SWAP(I,J)
      PRINT *,I,J
      STOP
      END PROGRAM P63
!
      SUBROUTINE SWAP(I,J)
!     This routine will interchange any 2 INTEGER numbers
      IMPLICIT NONE
      INTEGER, INTENT(IN OUT) :: I,J
      INTEGER :: K
      K=I
      I=J
      J=K
      RETURN
      END SUBROUTINE SWAP