FTN4 SUBROUTINE EOTRE(LU1,TAPE,HDR,TDCB,TDSZ,P5,IERR) +,92069-16198 REV.2013 790416 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-18198 C RELOC: 92069-16198 C C C****************************************************************: C C C******************************************************************* C EOTRE HANDLES AN EOT AFTER THE EVENT OCCURS. C IF AN ERROR OCCURS DURING EXECUTION OF EOTRE, IT RETURNS LEAVING C THE IERR UNTOUCHED. C IF EOTRE HANDLES THE EOT PROPERLY, IT SETS IERR=0 AND RETURNS. C C IF YOU'RE READING A TYPE 0 FILE POINTING TO A MAG TAPE DEVICE, EOTRE: C 1) CHECKS P5 AND IF P5=AB IT RETURNS LEAVING THE NEGATIVE IERR. C 2) IF P5 .NE. AB, EOTRE REQUESTS THAT A NEW TAPE BE MOUNTED. C 3) AFTER THE USER MOUNTS THE TAPE AND RESPONDS YES, EOTRE CHECKS C THE HEADER AT THE BEGINNING OF THE NEW TAPE. C 4) IF THE HEADER IS INCORRECT, EOTRE RETURNS LEAVING NEGATIVE IERR. C 5) IF THE HEADER IS CORRECT, EOTRE SETS IERR=0 AND RETURNS. C C NOTE THAT HDR(21) HOLDS THE NEXT REEL NUMBER ABOUT TO BE MOUNTED, C NOT THE REEL NUMBER THAT JUST FINISHED. C C*********************************************************************** C FORMAL PARAMETER DECLARATIONS. C INTEGER LU1,TAPE(1),HDR(1),TDCB(1),TDSZ,P5,IERR C****************************************************************** C LOCAL VARIABLES. C INTEGER TEMP(24) INTEGER RESPON DOUBLE PRECISION MESS1(3),MESS2(8) C*********************************************************** C MESSAGES. C DATA MESS1/6HEND OF,6H REEL ,6H000000/ DATA MESS2/6HMOUNT ,6HTAPE ,6H000000,6H000000, +6H ON LO,6HGICAL ,6HDEVICE,6H000000/ C**************************************************************** C ABORT IF THE STORAGE DEVICE IS A TYPE 3 FILE. C IF (TAPE(4) .NE. 1) CALL DBER2(LU1,7777,6HXXXXXX,6HEOTRE ,2HAB) C***************************************************************** C SET UP THE MESSAGES WITH THE PROPER VALUES. C CALL CNUMD(TAPE,MESS2(8)) CALL CNUMD(HDR(21)-1,MESS1(3)) CALL CNUMD(HDR(21),MESS2(4)) MESS2(3)=ROOT C****************************************************************** C REQUEST NEW TAPE BE MOUNTED. C 4000 CALL REIO(2,LU1,2H _,1) CALL REIO(2,LU1,MESS1,9) C**************************************************************** 4015 CALL REIO(2,LU1,2H _,1) CALL REIO(2,LU1,MESS2,24) CALL READY(LU1,RESPON,IERR) IF (IERR .LT. 0) GO TO 8000 C*************************************************************** C MAKE SURE TAPE IS READY AND ON-LINE. C CALL TLOCL(LU1,TAPE,IERR) IF (IERR .EQ. 0) GO TO 4100 GO TO 4015 C*************************************************************** C READ THE NEW REELHEADER. C 4100 CONTINUE CALL EREAD(TDCB,IERR,TEMP,24,LEN) CALL DBER2(LU1,IERR,TAPE,6HEOTRE ,2HXX) IF (IERR .LT. 0) RETURN C************************************************************* C CHECK THE NEW REELHEADER. C CALL CKTHD(LU1,HDR,TEMP,IERR) IF (IERR .LT. 0) GO TO 4015 RETURN C*************************************************************** C USER RESPONSE SAYS TO ABORT. C 8000 CALL REIO(2,LU1,25H ABORTING AT END OF TAPE.,-25) IERR=-236 CALL DBER2(LU1,IERR,6HXXXXXX,6HEOTRE ,2HXX) RETURN END