FTN4
      SUBROUTINE EOFWR(LU1,TAPE,HDR,TDCB,TDSZ,P5,IERR)
     +,92069-16195 REV.2013 800107
C 
C 
C*****************************************************************
C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS RESERVED.
C NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, REPRODUCED, OR
C TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR
C WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. 
C****************************************************************** 
C 
C 
C     SOURCE:    92069-18195
C     RELOC:     92069-16195
C 
C 
C****************************************************************:
C 
C 
C**************************************************************** 
C EOFWR HANDLES AN EOF ON A WRITE TO A TYPE 3 FILE. 
C EOFWR DOES THESE STEPS: 
C 1) CALLS ELOCF TO DETERMINE THE NEXT AVAILABLE RECORD (EOFWR
C    ASSUMES THAT ELOCF RETURNS THE NEXT AVAILABLE RECORD IF THE
C    LAST WRITE RETURNED AN ERROR I.E. THAT THE LAST THING EWRIT DOES 
C    IS UPDATE THE INFORMATION ON THE RECORD NUMBER). 
C 2) POSITIONS THE FILE TO THE NEXT AVAILABLE RECORD. 
C 3) WRITES AN EOF MARK IN THIS POSITION, AND CLOSES THE FILE.
C 4) PROMPTS THE USER FOR ANOTHER FILE NAME.
C 5) CREATES A NEW FILE WITH THE NAME AND CARTRIDGE SPECIFIED THAT
C    TAKES UP THE ENTIRE REST OF THE CARTRIDGE (A DIFFERENT CARTRIDGE 
C    THAN THE PREVIOUS ONE SINCE THERE'S NO ROOM LEFT ON THAT ONE.) 
C 6) OPENS THE FILE AND WRITES A TAPE HEADER INTO THE FILE. 
C*****************************************************************
      INTEGER LU1,TAPE(1),HDR(1),TDCB(1),TDSZ,P5,IERR 
C*****************************************************************
C LOCAL VARIABLES.
C 
      INTEGER IREC(2) 
      INTEGER FILE(20)
      DOUBLE PRECISION MESS1(6) 
      INTEGER MESS2(18) 
      EQUIVALENCE(MESS1,MESS2)
C****************************************************************** 
C DATA STATEMENTS 
      DATA MESS1/6H SAVE ,6HFILE  ,6H      ,6H  AS  ,6H      ,6H      / 
C****************************************************************** 
      IF (TAPE(4) .NE. 3) CALL DBER2(LU1,7777,6HXXXXXX,6HEOFWR ,2HXX) 
      IF (P5 .EQ. 2HAB) GO TO 9000
C*******************************************************************
C CALL ELOCF TO GET WHERE THE LAST WRITE WAS ATTEMPTED. 
C 
      CALL ELOCF(TDCB,IERR,IREC)
      CALL DBER2(LU1,IERR,TAPE,6HEOFWR ,2HXX) 
C*****************************************************************
C POSITION THE FILE TO WHERE THE WRITE SHOULD HAVE OCCURRED.
C 
      CALL RWNDF(TDCB,IERR) 
      CALL EPOSN(TDCB,IERR,IREC,1)
      CALL DBER2(LU1,IERR,TAPE,6HEOFWR ,2HXX) 
C************************************************************ 
C WRITE OUT AN EOF. 
C 
      CALL EWRIT(TDCB,IERR,IDUMMY,-1) 
      CALL DBER2(LU1,IERR,TAPE,6HEOFWR ,2HXX) 
      CALL POST(TDCB,IERR)
      CALL ECLOS(TDCB,IERR) 
      CALL DBER2(LU1,IERR,TAPE,6HEOFWR ,2HXX) 
      IF (IERR .LT. 0) RETURN 
C****************************************************************** 
C TELL USER TO REMEMBER THE OLD FILE. 
C 
      MESS2(7)=TAPE(1)
      MESS2(8)=TAPE(2)
      MESS2(9)=TAPE(3)
      MESS2(13)=HDR(9)
      MESS2(14)=HDR(10) 
      MESS2(15)=HDR(11) 
      CALL CNUMD(HDR(21),MESS2(16)) 
      CALL REIO(2,LU1,MESS1,18) 
C*******************************************************************
C REQUEST THE NEXT FILE NAME. 
C 
1000  CALL REIO(2,LU1,35H NEXT STORAGE FILE(AB TO ABORT) ? _,-35) 
      CALL REIO(1,LU1+400B,FILE,20) 
      CALL ABREG(IA,IB) 
      LNGTH2=2*IB 
      IF ((LNGTH2 .EQ. 2) .AND. (FILE(1) .EQ. 2HAB)) GO TO 9000 
      ISTRC1=1
      CALL PRAM(LU1,FILE,LNGTH2,ISTRC1,TAPE)
      IF (TAPE(4) .EQ. 3) GO TO 2000
      CALL REIO(2,LU1,28H PLEASE SPECIFY A FILE NAME.,-28)
      GO TO 1000
C************************************************************** 
C HAVE A GOOD FILE NAME. MAKE A NEW FILE AND OPEN IT. 
C 
2000  CONTINUE
      CALL NWFIL(LU1,IERR,TDCB,TDSZ,TAPE,DBLEI(-1),3,P5)
      IF (IERR .LT. 0) GO TO 1000 
      IOPTN=100B
      CALL OPENF(TDCB,IERR,TAPE,IOPTN,TAPE(5),TAPE(6),TDSZ) 
      IF (IERR .GT. 0) IERR=0 
      CALL DBER2(LU1,IERR,TAPE,6HEOFWR ,2HXX) 
      IF (IERR .LT. 0) GO TO 1000 
C***************************************************************
C WRITE OUT A TAPE HEADER ON THE NEW FILE.
C 
      HDR(21)=HDR(21)+1 
      CALL EWRIT(TDCB,IERR,HDR,24)
      CALL DBER2(LU1,IERR,TAPE,6HEOFWR ,2HXX) 
      RETURN
C*****************************************************************
C ABORT POINT.
C 
9000  CONTINUE
      IERR=-235 
      CALL REIO(2,LU1,25H ABORTING AT END OF FILE.,-25) 
      CALL DBER2(LU1,235,6HXXXXXX,6HEOFWR ,2HXX)
      RETURN
      END 
                                                                                                                                                  