FTN4 SUBROUTINE TAPEW(LU1,TAPE,BUFR,BUF1,IERR) +,92069-16193 REV.2013 790413 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-18193 C RELOC: 92069-16193 C C C****************************************************************: C C C******************************************************************** C TAPEW WRITES DATA TO TAPE FROM BUFR. TAPEW ASSUMES THAT TDCB C (IN NAMED COMMON) IS OPEN TO TAPE AS A TYPE 0 FILE IF TAPE IS A MAG C TAPE LU, OR AS A TYPE 1 FILE IF TAPE IS A DISC FILE. C C TAPEW CHECKS FOR AN EOF AT THE END OF EACH WRITE, AND PROMPTS THE C USER TO MOUNT A NEW TAPE AT EOT, OR ABORTS AT THE END OF A TYPE 1 C FILE. C IF AN EOT OCCURS, THE RECORD IS WRITTEN ON THIS TAPE, NOT THE C NEW TAPE. THEN TAPEW WRITES AN EOF ON THE TAPE AND CALLS EOTWR C TO PROMPT FOR A NEW TAPE. C********************************************************************* C NAMED COMMON DECLARATIONS C INTEGER HDR(24),TDCB(144),TDSZ,P5(6) COMMON/TPHDR/HDR,TDCB,TDSZ,P5 C******************************************************************** C FORMAL PARAMETERS. C INTEGER LU1,TAPE(1),BUFR(1),BUF1,IERR C****************************************************************** C INTEGER BUFL BUFL=BUF1 C********************************************************************* C BRANCH TO 5000 IF THE USER SET THE BREAK BIT. C IF (IFBRK(IDUMY)) 5000,300 C********************************************************************* C FOR A 0-LENGTH RECORD TO A TAPE LU, HAVE TO WRITE AN EOF(LENGTH -1) C 300 IF ((BUFL .EQ. 0) .AND. (TAPE(4) .EQ. 1)) BUFL=-1 C***************************************************************** C WRITE BUFR TO TAPE USING TDCB. C CALL EWRIT(TDCB,IERR,BUFR,BUFL) C******************************************************** C TRAP OUT AN EOF ON A TYPE 3 FILE. C IF (IERR .EQ. -33) GO TO 4000 CALL DBER2(LU1,IERR,TAPE,6HTAPEW ,2HXX) IF (TAPE(4) .NE. 1) RETURN C***************************************************************** C SPECIAL CHECK FOR AN EOT ON THE TAPE DEVICE. C 2000 IA=IEOT(TAPE) IF (IA .GE. 0) RETURN C************************************************************ C END OF TAPE ON A TAPE DEVICE. C WRITE EOF ON THIS TAPE(THE RECORD HAS BEEN WRITTEN OVER THE EOT MARK). C CALL EOTWR TO REQUEST NEW TAPE. C RETURN,KNOWING THAT THE NEW TAPE IS READY FOR NEXT WRITE. C CONTINUE CALL EWRIT(TDCB,IERR,IDUMY,-1) CALL DBER2(LU1,IERR,TAPE,6HTAPEW ,2HXX) IF (IERR .LT. 0) RETURN CALL EOTWR(LU1,TAPE,HDR,TDCB,TDSZ,P5,IERR) RETURN C********************************************************* C TRAP FOR THE EOF ON A TYPE 3 FILE. C PERFORM THESE STEPS: C 1) CALL EOFWR TO CLOSE THE CURRENT FILE, THEN REQUEST AND OPEN C THE NEW FILE, WRITE A TAPE HEADER. C 2) GO TO THE TOP TO WRITE THE DATA RECORD INTO THE NEW FILE. C 4000 CONTINUE IF (TAPE(4) .NE. 3) CALL DBER2(LU1,7777,6HXXXXXX,6HTAPEW ,2HAB) CALL EOFWR(LU1,TAPE,HDR,TDCB,TDSZ,P5,IERR) IF (IERR .NE. 0) RETURN GO TO 300 C****************************************************************** C USER SET THE BREAK BIT. C 5000 CALL DBER2(LU1,247,6HXXXXXX,6HTAPEW ,2HXX) IERR=-247 RETURN END