FTN4,L
C 
C 
C     FLEXIBLE DISC BACKUP UTILITY
C 
C     NAME:   SAFD
C     SOURCE: 92064-18232 
C     RELOC:  92064-16086 
C     PROGMR: SL,JRS,JUF
C 
C 
C 
C 
C  **************************************************************** 
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS      * 
C  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
C  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
C  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
C  **************************************************************** 
C 
C 
      PROGRAM SAFD(3,89),92064-16086 REV.2001 790907
C 
      DIMENSION LU(5),IREG(2),IHEDD(33) 
      DIMENSION IBUF(3840),IBF(3712)
      INTEGER FIRST,LAST
C 
CCCCCCCCCCCC
      DIMENSION MEST(31),IHEAD(33),IH2(30),IH22(30) 
CCCCCCCCCCCCC 
      DIMENSION MESS1(18),MESS2(14),MESS3(17),MESS4(21) 
      DIMENSION MESS7(11),IPBUF(33),MESS19(16)
      DIMENSION MESS8(2),MESS9(11),MESS10(22),MESS11(22)
      DIMENSION MESS13(18),MESS14(6),MESS17(15),MESS18(12)
      DIMENSION MESS20(6),MESS15(22),MESS12(15),MESS16(15)
C 
CCCCCCCCCCCCCC
      EQUIVALENCE (ITPE,IHEAD),(ITRAK,IHEAD(2)) 
      EQUIVALENCE (ISEC,IHEAD(3)),(IH2,IHEAD(4))
      EQUIVALENCE (IH22,IHEDD(4)) 
CCCCCCCCCCCCCCC 
      EQUIVALENCE (IA,IREG),(IB,IREG(2)),(X,IREG) 
C 
C 
CCCCCCC 
      DATA MEST/2HEN,2HD ,2HOF,2H C,2HAR,2HTR,2HID,2HGE,2H O,2HR ,
     &          2HMA,2HG ,2HTA,2HPE,2H R,2HEA,2HCH,2HED,2H. ,2HIN,
     &          2HSE,2HRT,2H N,2HEW,2H T,2HAP,2HE ,2H(#,2H  ,2H  ,
     &          2H)./ 
      DATA MESS1/6412B,2HEN,2HTE,2HR ,2HCA,2HRT,2HRI,2HDG,2HE ,2HOR,
     &          2H M,2HAG,2H T,2HAP,2HE ,2HLU,2H: ,2H _/
      DATA MESS2/6412B,2HEN,2HTE,2HR ,2HFL,2HEX,2HIB,2HLE,2H D,2HIS,
     &            2HC ,2HLU,2H: ,2H _/
      DATA MESS3/6412B,2HER,2HRO,2HR ,2H- ,2HNO,2HT ,2HA ,2HFL,2HEX,
     &            2HIB,2HLE,2H D,2HIS,2HC ,2HLU,2H? / 
      DATA MESS4/6412B,2HER,2HRO,2HR ,2H- ,2HNO,2HT ,2HA ,2HCA,2HRT,
     &          2HRI,2HDG,2HE ,2HOR,2H M,2HAG,2H T,2HAP,2HE ,2HLU,
     &          2H? / 
      DATA MESS7/6412B,2HEN,2HTE,2HR ,2HTA,2HPE,2H H,2HEA,2HDE,2HR:,
     &            2H _/ 
      DATA MESS8/2HST,2HOP/ 
      DATA MESS9/6412B,2HFI,2HLE,2HS ,2HSA,2HVE,2HD ,2HON,2H T,2HAP,
     &            2HE / 
      DATA MESS10/2HFL,2HEX,2HIB,2HLE,2H D,2HIS,2HC ,2HSA,2HVE,2H O,
     &            2HR ,2HRE,2HST,2HOR,2HE?,2H (,2HSA,2H,R,2HE,,2HNO,
     &            2H):,2H _/
      DATA MESS11/2HER,2HRO,2HR ,2H- ,2HNO,2HT ,2HEN,2HOU,2HGH,2H T,
     &            2HRA,2HCK,2HS ,2HON,2H F,2HLE,2HXI,2HBL,2HE ,2HDI,
     &            2HSC,2H? /
      DATA MESS12/2HEN,2HTE,2HR ,2HMA,2HG ,2HTA,2HPE,2H F,2HIL,2HE ,
     &            2HNU,2HMB,2HER,2H: ,2H _/ 
      DATA MESS13/6412B,2HFI,2HLE,2HS ,2HRE,2HST,2HOR,2HED,2H O,2HN , 
     &            2HFL,2HEX,2HIB,2HLE,2H D,2HIS,2HC.,6412B/ 
      DATA MESS14/6412B,2HHE,2HAD,2HER,2H I,2HS:/ 
      DATA MESS15/2HER,2HRO,2HR ,2H- ,2HWR,2HON,2HG ,2HTA,2HPE,2H. ,
     &          2HIN,2HSE,2HRT,2H N,2HEW,2H T,2HAP,2HE ,2H(#,2H  ,
     &          2H  ,2H)./
      DATA MESS16/2HER,2HRO,2HR ,2H- ,2HNO,2HT ,2HA ,2HPO,2HSI,2HTI,
     &            2HVE,2H N,2HUM,2HBE,2HR?/ 
      DATA MESS17/2HER,2HRO,2HR ,2H- ,2HEO,2HT ,2H- ,2HFI,2HLE,2H N,
     &             2HOT,2H F,2HOU,2HND,2H? /
      DATA MESS18/6412B,2HTE,2HRM,2HIN,2HAT,2HE ,2H(Y,2HES,2H,N,2HO), 
     &            2H: ,2H _/
      DATA MESS19/2HTO,2H C,2HON,2HTI,2HNU,2HE ,2HHI,2HT ,2HAN,2HY ,
     &            2HKE,2HY/,2HRE,2HTU,2HRN,2H _/
      DATA MESS20/6412B,2HTA,2HPE,2H #,2H  ,2H  / 
C 
      CALL RMPAR(LU)
      IF(LU)1,2,32
1     STOP
2     LU=1
32    IF(LU.LE.63)33,1
33    ILU=LU+400B 
C 
CCCCCCCCCCCCCCCCCCCC
      JLNTH=3840
CCCCCCCCCCCCCCCCCCCC
C   GET SAVE OR RESTORE 
C 
5     CALL REIO(2,ILU,MESS10,22)
      X=REIO(1,ILU,IBUF,10) 
      IF(IBUF(1).EQ.2HSA)GO TO 15 
      IF(IBUF(1).NE.2HRE)GO TO 8000 
      GO TO 2000
C 
C  GET FLEXIBLE DISC LU 
15    CALL REIO(2,ILU,MESS2,14) 
      X=REIO(1,ILU,IBUF,10) 
      CALL PARSE(IBUF,IB*2,IPBUF) 
      IC=IPBUF(1) 
      IF(IC.NE.1)GO TO 18 
      IDISC=IPBUF(2)
      LASTTR=IPBUF(6) 
C 
16    CALL EXEC(13,IDISC,ISTAT) 
      ITYPE=IAND(ISTAT,37400B)/256
      IF(ITYPE.EQ.33B)GO TO 10
      IF(ITYPE.NE.32B)GO TO 18
      CALL EXEC(1,IDISC,IBUF,1,10000,0) 
      IF(IBUF(1).EQ.60)GO TO 10 
18    CALL REIO(2,ILU,MESS3,17) 
20    CALL REIO(2,ILU,MESS18,12)
      X=REIO(1,ILU,IBUF,2)
      IF(IBUF(1).EQ.2HNO)GO TO 15 
      IF(IBUF(1).NE.2HYE)GO TO 20 
      GO TO 8000
C 
C   GET CARTRIDGE OR MAG TAPE LU
C 
10    CALL REIO(2,ILU,MESS1,18) 
      X=REIO(1,ILU,IBUF,10) 
      CALL PARSE(IBUF,IB*2,IPBUF) 
      MTLU=IPBUF(2) 
      IC=IPBUF(1) 
      IF(IC.NE.1)GO TO 12 
C 
      CALL EXEC(13,MTLU,ISTAT,IX,ISUB)
      IF(IAND(ISTAT,37400B)*2.NE.5000B)GO TO 13 
      IF(IAND(ISUB,37B).EQ.1B)GO TO 14
      IF(IAND(ISUB,37B).EQ.2B)GO TO 14
12    CALL REIO(2,ILU,MESS4,21) 
22    CALL REIO(2,ILU,MESS18,12)
      X=REIO(1,ILU,IBUF,2)
      IF(IBUF(1).EQ.2HNO)GO TO 10 
      IF(IBUF(1).NE.2HYE)GO TO 22 
      GO TO 8000
13    IF(IAND(ISTAT,37400B).NE.11400B)GO TO 12
C 
C   FIND PLACE ON TAPE TO BEGIN THE SAVE
7     CALL REIO(2,ILU,MESS12,15)
      X=REIO(1,ILU,IBUF,-10)
      CALL PARSE(IBUF,IB,IPBUF) 
      IC=IPBUF(1) 
      INUM=IPBUF(2) 
      IF(INUM.LE.0)GO TO 4
      IF(IC.EQ.1)GO TO 6
4     CALL REIO(2,ILU,MESS16,15)
      GO TO 7 
6     X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 6 
8     IF(INUM.EQ.1)GO TO 14 
      REWIND MTLU 
19    X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 19
      DO 9 I=2,INUM 
      X=EXEC(3,MTLU+1300B)
3     X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 3 
      ISTAT=IAND(IA,40B)
      IF(ISTAT.EQ.0)GO TO 9 
      CALL REIO(2,ILU,MESS17,15)
      GO TO 7 
9     CONTINUE
      GO TO 17
14    REWIND MTLU 
C 
17    X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 17
C 
30    DO 31 I=1,30
       IH2(I)=2H
31    CONTINUE
C 
      CALL REIO(2,ILU,MESS7,11) 
      CALL REIO(1,ILU,IH2 ,30)
C 
C 
C    HAVE ALL LU'S, NOW GO COPY THE DISC... 
C       COPY ALL DIRECTORY TRACKS FIRST, FOLLOWED BY
C       ALL TRACKS USED BY FMP  (UN-USED TRACKS WON'T BE COPIED)
C 
      X=EXEC(1,IDISC,IBUF,128,10000,0)
      ITRAK=IB-1
      IF(LASTTR.NE.0)ITRAK=LASTTR 
      CALL EXEC(1,IDISC,IBUF,JLNTH,ITRAK,0) 
      FIRST=IBUF(5) 
      LAST=IBUF(10) 
      IF(LAST.EQ.LASTTR)LAST=LAST-1 
      LOWDIR=IBUF(8)
C 
C  WRITE TAPE HEADER
C 
CCCCCCCCCCCCCCCCCC
      ITPE=1
      ISEC=0
      CALL EXEC(2,MTLU+100B,IHEAD,33) 
CCCCCCCCCCCCCCCCCC
C 
C  GO WRITE TRACK TO TAPE 
C 
      ASSIGN 42 TO JJ 
C 
      GO TO 1000
C 
C   READ A TRACK
C 
40    CALL EXEC(1,IDISC,IBUF,JLNTH,ITRAK,0) 
C 
C 
C  GO WRITE THE TRACK TO TAPE 
C 
      GO TO 1000
42    IF(ITRAK.EQ.LOWDIR)GO TO 45 
      ITRAK=ITRAK-1 
      GO TO 40
C 
45    ASSIGN 49 TO JJ 
      DO 49 ITRAK=FIRST,LAST
       CALL EXEC(1,IDISC,IBUF,JLNTH,ITRAK,0)
      GO TO 1000
49    CONTINUE
C 
      GO TO 90
C 
C   THIS ROUTINE RETURNS TO JJ
C 
1000  ICOUN=1 
      DO 1500 ISEC=0,58,2 
C 
C 
C    THIS SECTION DOES A DYNAMIC STATUS CHECK ON THE CARTRIDGE
C    TAPE LOOKING FOR EOT CONDITION. IF FOUND, A MESSAGE IS ISSUED
C    TO INFORM THE OPERATOR, AND THE PROGRAM IS SUSPENDED.
C 
C 
1001  X= EXEC(3,MTLU+600B)
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)  GOTO 1001 
      ISTAT=IAND(IA,40B)
      IF (ISTAT.EQ.0) GO TO 1050
C 
C   WE MUST HAVE REACHED EOT
C 
C   TELL THE OPERATOR ABOUT IT
C 
      ITPE=ITPE+1 
      MEST(29)=KCVT(ITPE) 
      CALL EXEC(2,ILU,MEST,31)
      CALL EXEC(2,ILU,MESS19,16)
      CALL EXEC(1,ILU,IREG,2) 
C 
C  WRITE A HEADER ON THE NEW TAPE 
C 
C 
C 
      REWIND MTLU 
C 
1042  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 1042
      CALL EXEC(2,MTLU+100B,IHEAD,33) 
C 
C 
C THIS SECTION TRANSFERS 1 TRACK FROM IBUF TO CARTRIDGE TAPE
C 128 WORDS AT A TIME.
C 
1050  X=EXEC(2,MTLU+100B,IBUF(ICOUN),128) 
      ICOUN=ICOUN+128 
C 
1500  CONTINUE
      GOTO JJ 
C 
C 
C 
C 
90    ENDFILE MTLU
      ENDFILE MTLU
C 
C  END:   REWIND TAPE 
C 
99     REWIND MTLU
      CALL REIO(2,ILU,MESS9,11) 
C 
      GO TO 5 
C 
C  RESTORE FLEXIBLE DISC
C 
C   ENTER FLEXIBLE DISC LU
C 
2000  CALL REIO(2,ILU,MESS2,14) 
      X=REIO(1,ILU,IBUF,10) 
      CALL PARSE(IBUF,IB*2,IPBUF) 
      IC=IPBUF(1) 
      IF(IC.NE.1)GO TO 2008 
      IDISC=IPBUF(2)
      LASTTR=IPBUF(6) 
C 
C  CHECK TO MAKE SURE ITS A FLEXIBLE DISC 
2005  CALL EXEC(13,IDISC,ISTAT) 
      ITYPE=IAND(ISTAT,37400B)/256
      IF(ITYPE.EQ.33B)GO TO 2004
      IF(ITYPE.NE.32B)GO TO 2008
      CALL EXEC(1,IDISC,IBUF,1,10000,0) 
      IF(IBUF(1).EQ.60)GO TO 2004 
2008  CALL REIO(2,ILU,MESS3,17) 
2021  CALL REIO(2,ILU,MESS18,12)
      X=REIO(1,ILU,IBUF,2)
      IF(IBUF(1).EQ.2HNO)GO TO 2000 
      IF(IBUF(1).NE.2HYE)GO TO 2021 
      GO TO 8000
C 
C 
C  GET CARTRIDGE OR MAG TAPE LU 
C 
2004  CALL REIO(2,ILU,MESS1,18) 
      X=REIO(1,ILU,IBUF,10) 
      CALL PARSE(IBUF,IB*2,IPBUF) 
      IC=IPBUF(1) 
      IF(IC.NE.1)GO TO 2001 
      MTLU=IPBUF(2) 
C 
C  CHECK TO MAKE SURE ITS A CARTRIDGE OR MAG TAPE 
5000  CALL EXEC(13,MTLU,ISTAT,IX,ISUB)
      IF(IAND(ISTAT,37400B)*2.NE.5000B)GO TO 2002 
C  CHECK FOR SUBCHANNEL (LEFT OR RIGHT CARTRIDGE) 
      IF(IAND(ISUB,37B).EQ.1B)GO TO 2003
      IF(IAND(ISUB,37B).EQ.2B)GO TO 2003
2001  CALL REIO(2,ILU,MESS4,21) 
2023  CALL REIO(2,ILU,MESS18,12)
      X=REIO(1,ILU,IBUF,2)
      IF(IBUF(1).EQ.2HNO)GO TO 2004 
      IF(IBUF(1).NE.2HYE)GO TO 2023 
      GO TO 8000
2002  IF(IAND(ISTAT,37400B).NE.11400B)GO TO 2001
C 
C  FIND PLACE ON TAPE TO BEGIN RESTORE
2012  CALL REIO(2,ILU,MESS12,15)
      X=REIO(1,ILU,IBUF,-10)
      CALL PARSE(IBUF,IB,IPBUF) 
      IC=IPBUF(1) 
      INUM=IPBUF(2) 
C 
      IF(INUM.LE.0)GO TO 1999 
      IF(IC.EQ.1)GO TO 2006 
1999  CALL REIO(2,ILU,MESS16,15)
      GO TO 2012
2006  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 2006
2013  IF(INUM.EQ.1)GO TO 2003 
      REWIND MTLU 
2009  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 2009
      DO 2014 I=2,INUM
      X=EXEC(3,MTLU+1300B)
4050  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 4050
      ISTAT=IAND(IA,40B)
      IF(ISTAT.EQ.0)GO TO 2014
      CALL REIO(2,ILU,MESS17,15)
      GO TO 2012
2014  CONTINUE
      GO TO 2007
2003  REWIND MTLU 
C 
C ENTER FLEXIBLE DISC LU
2007  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 2007
C 
C  INITIALIZE IHEAD TO ZERO 
2010  DO 2011 I=1,30
      IH2(I)=2H 
2011  CONTINUE
C 
C  READ THE FIRST TAPES HEADER AND PUT IN  IHEAD. 
4000  CALL EXEC(1,MTLU+100B,IHEAD,33) 
      CALL REIO(2,ILU,MESS14,6) 
      CALL REIO(2,ILU,IHEAD(4),30)
      MESS20(5)=KCVT(IHEAD(1))
      CALL REIO(2,ILU,MESS20,6) 
4005  CALL EXEC(2,ILU,MESS18,12)
      X=EXEC(1,ILU,IBUF,1)
      IF(IBUF(1).EQ.2HYE)GO TO 8000 
      IF(IBUF(1).NE.2HNO)GO TO 4005 
      IF(IHEAD.EQ.1)GO TO 2030
      ITPE=1
      MESS15(20)=KCVT(ITPE) 
      CALL REIO(2,ILU,MESS15,22)
      CALL EXEC(2,ILU,MESS19,16)
      CALL EXEC(1,ILU,IREG,2) 
C 
      REWIND MTLU 
4001  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 4001
      GO TO 5000
C 
C PROMPT LAST TRACK# ON DISC TO BE RESTORED 
C 
2030  X=EXEC(1,IDISC,IBUF,128,10000,0)
      ITRAK=IB-1
      IF(LASTTR.NE.0)ITRAK=LASTTR 
      DO 2015 I=1,3840,128
      CALL EXEC(1,MTLU+100B,IBUF(I),128)
2015  CONTINUE
C 
C IDIR GETS # OF DIRECTORY TRACKS 
C LOWDIR GETS LOWEST DIRECTORY TRACK
C MAX GETS LAST TRACK# ON TAPE TO BE RESTORED 
C 
      IDIR=IBUF(9)
      LOWDIR=IBUF(8)
      MAX=LOWDIR-IDIR-1 
C 
C CHECK TO SEE IF DISC CAN HOLD FILES ON TAPE 
C 
      IF(MAX.LT.ITRAK)ITRAK=MAX 
      IF(MAX.EQ.ITRAK)GO TO 2020
      CALL EXEC(2,ILU,MESS11,22)
      GO TO 8000
C 
C FIRST GETS FIRST AVAILABLE TRACK FOR FMP
C LAST GETS AVAILABLE FMP TRACKS ON TAPE
C 
2020  FIRST=IBUF(5) 
      LAST=IBUF(10) 
C 
      ASSIGN 2042 TO JJ 
      ASSIGN 2062 TO KK 
C 
      GO TO KK
C 
2040  DO 2041 I=1,3840,128
      CALL EXEC(1,MTLU+100B,IBUF(I),128)
C 
C  CHECK FOR END OF TAPE
C 
3000  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 3000
      ISTAT=IAND(IA,40B)
      IF(ISTAT.EQ.0)GO TO 2041
      ITPE=ITPE+1 
3001  MEST(29)=KCVT(ITPE) 
      CALL EXEC(2,ILU,MEST,31)
      CALL EXEC(2,ILU,MESS19,16)
      CALL EXEC(1,ILU,IREG,2) 
C 
2098  REWIND MTLU 
2029  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 2029
C 
      DO 3002 J=1,30
      IH22(J)=2H
3002  CONTINUE
C 
C PRINT OUT HEADER
      CALL EXEC(1,MTLU+100B,IHEDD,33) 
      CALL REIO(2,ILU,MESS14,6) 
      CALL REIO(2,ILU,IHEDD(4),30)
      MESS20(5)=KCVT(IHEDD(1))
      CALL EXEC(2,ILU,MESS20,6) 
C 
C  CHECK TO SEE IF HEADERS MATCH
      DO 3003 K=4,33
      IF(IHEDD(K).NE.IHEAD(K))GO TO 3004
3003  CONTINUE
C 
C  CHECK FOR THE RIGHT TAPE 
      IF(ITPE.EQ.IHEDD)GO TO 2039 
3004  MESS15(20)=KCVT(ITPE) 
      CALL REIO(2,ILU,MESS15,22)
      CALL EXEC(2,ILU,MESS19,16)
      CALL EXEC(1,ILU,IREG,2) 
      GO TO 2098
C 
2039  ITRAK=IHEDD(2)
      ISEC=IHEDD(3) 
2041  CONTINUE
      GO TO KK
C 
C DECREMENT THE TRACK NUMBER
2042  IF(ITRAK.EQ.LOWDIR)GO TO 2045 
      ITRAK=ITRAK-1 
      GO TO 2040
C 
C FROM FIRST TO LAST TRACK FILL UP BUFFER ONE TRACK AT A TIME.
2045  ASSIGN 2049 TO JJ 
      ASSIGN 2060 TO KK 
      IF(FIRST.NE.0)ASSIGN 2062 TO KK 
      IF(ITYPE.EQ.32B)ASSIGN 2062 TO KK 
      DO 2049 ITRAK=FIRST,LAST
      DO 2048 I=1,3840,128
      CALL EXEC(1,MTLU+100B,IBUF(I),128)
C 
C  CHECK FOR END OF TAPE
2047  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 2047
      ISTAT=IAND(IA,40B)
      IF(ISTAT.EQ.0)GO TO 2048
      ITPE=ITPE+1 
2051  MEST(29)=KCVT(ITPE) 
      CALL EXEC(2,ILU,MEST,31)
      CALL EXEC(2,ILU,MESS19,16)
      CALL EXEC(1,ILU,IREG,2) 
C 
2052  REWIND MTLU 
2056  X=EXEC(3,MTLU+600B) 
      ISTAT=IAND(IA,1)
      IF(ISTAT.EQ.1)GO TO 2056
C 
      DO 2053 J=1,30
      IH22(J)=2H
2053  CONTINUE
C 
C  PRINT OUT HEADER 
      CALL EXEC(1,MTLU+100B,IHEDD,33) 
      CALL REIO(2,ILU,MESS14,6) 
      CALL REIO(2,ILU,IHEDD(4),30)
      MESS20(5)=KCVT(IHEDD(1))
      CALL EXEC(2,ILU,MESS20,6) 
C 
C  CHECK TO SEE IF HEADERS MATCH
      DO 2054 K=4,33
      IF(IHEDD(K).NE.IHEAD(K))GO TO 2055
2054  CONTINUE
C 
C  CHECK TO SEE IF RIGHT TAPE 
      IF(ITPE.EQ.IHEDD)GO TO 2048 
2055  MESS15(20)=KCVT(ITPE) 
      CALL REIO(2,ILU,MESS15,22)
      CALL EXEC(2,ILU,MESS19,16)
      CALL EXEC(1,ILU,IREG,2) 
C 
      GO TO 2052
2048  CONTINUE
      GO TO KK
2049  CONTINUE
      GO TO 2099
C 
C ELIMINATE THE FIRST SECTOR IN THE FIRST TRACK 
2060  K=1 
      DO 2061 J=129,3840
      IBF(K)=IBUF(J)
      K=K+1 
2061  CONTINUE
C 
C WRITE ONTO DISC 
      CALL EXEC(2,IDISC,IBF,3712,ITRAK,2) 
      ASSIGN 2062 TO KK 
      GO TO JJ
C 
2062  CALL EXEC(2,IDISC,IBUF,JLNTH,ITRAK,0) 
      GO TO JJ
C 
C 
2099  REWIND MTLU 
C 
C FILES RESTORED TO FLEXIBLE DISC 
      CALL REIO(2,ILU,MESS13,18)
      GO TO 5 
8000  CALL EXEC(2,ILU,MESS8,2)
      END 
      END$
                                                                                                                                                                                            