FTN4,Q,T
C 
      PROGRAM READT (3,50),92067-16332 REV.2026 800522
C 
C 
C     NAME:   READT 
C     SOURCE: 92067-18332 
C     RELOC:  92067-16332 
C     PGMR:   R.D.
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 
C   CALLING SEQUENCE IS:
C 
C                  -LU    MAG   P 
C         RU,READT, OR , TAPE , OR , SIZE (# TRACKS),IH (INHIBIT REWIND)
C                  +CRN   LU    G 
C 
C  READT WILL MOUNT A CARTRIDGE FROM THE DISC POOL IF A CRN OR DISC 
C  LU ISN'T SPECIFIED. CARTRIDGE TYPE (PRIVATE OR GROUP) WILL DEFAULT 
C  TO WHAT'S FOUND IN THE HEADER. SIZE IS THE NUMBER OF DESIRED TRACKS, 
C  DEFAULT IS THE SIZE RETURNED FROM THE MOUNT ROUTINE. IH WILL INHIBIT 
C  THE REWIND OF THE MAG TAPE BEFORE AND AFTER THE RESTORE. 
C 
C 
C 
C 
C                        **** NOTE **** 
C 
C  IN CASES WHERE THE RATIO OF INTEGER VARIABLES ARE COMPUTED, EACH 
C  IS FLOATED BEFORE THE OPERATION. THIS IS DONE TO AVOID THE TRUNCATION
C  AFTER EACH INTEGER OPERATION WHICH NORMALLY OCCURS.
C 
C 
      IMPLICIT INTEGER(A-Z) 
      DOUBLE PRECISION TSEC(2)
      REAL T
      LOGICAL NAMR,IN 
      EXTERNAL MT1OK,FESSN,DCMC,NMCHK,VVALD,REDIR,REFMT,IDSGM 
      DIMENSION MBUFR(9),DLNTH(2),JBUF(8192)
      DIMENSION ILBUF(80),INAM1(10),INAM2(10),INAM3(10),INAM4(10) 
      DIMENSION INAM5(10) 
      DIMENSION MSCRN(21),MSDRT(23),MSBUF(3),IDENT(2),KBUFR(4)
      DIMENSION MS10(10),MS11(16),MS12(14)
      DIMENSION MDR1(24),MDR2(17),MDR3(26),MDR4(24),MR13(32)
      DIMENSION LUARY(2),MRR11(11),MRR12(16),MRR17(19)
      DIMENSION MRR1(13),MRR2(14),MRR3(11),MRR4(16),MRR5(12)
      DIMENSION MR15(17),MR14(24),ISTAT(256),MR16(22),MR17(26),MR18(20) 
      DIMENSION MRR6(13),MRR7(12),MRR8(12),MRR9(27),MRR10(22) 
      DIMENSION LU(5),IREG(2),DTYPE(3)
      DIMENSION IDISK(2),MESS8(7),MESLU(10),MSFMT(30) 
C 
C  COMMON BLOCK FOR SUBROUTINES VVALD, RESET, AND REFMT.
C 
      COMMON/COMRD/ ILU,ITAPE,NDIR,IDISC,MTLU,SIZE,IBUF(8193) 
C 
C 
      EQUIVALENCE (IBUF(1),ITRAK),(JBUF,IBUF(2))
      EQUIVALENCE (LUARY(1),MTLU),(MRR12(16),FLAG)
      EQUIVALENCE (IBUF(30),DTYPE)
      EQUIVALENCE (LU(3),INAM3(1))
C 
C 
      DATA ILNTH/8192/
      DATA JLNTH/8192/
      DATA MSBUF/2H  ,2H  ,2H  /
      DATA INSES/0/ 
      DATA MRR1/6412B,2HRE,2HAD,2H 0,2H01,2H  ,2HMA,2HG ,2HTA,2HPE, 
     &                2H D,2HOW,2HN / 
      DATA MRR2/6412B,2HRE,2HAD,2H 0,2H02,2H  ,2HBA,2HD ,2HTA,2HPE, 
     &                2H F,2HOR,2HMA,2HT /
      DATA MRR3/6412B,2HRE,2HAD,2H 0,2H03,2H  ,2HLU,2H L,2HOC,2HKE,2HD /
      DATA MRR4/6412B,2HRE,2HAD,2H 0,2H04,2H  ,2HIL,2HLE,2HGA,2HL , 
     &                2HMA,2HG ,2HTA,2HPE,2H L,2HU /
      DATA MRR5/6412B,2HRE,2HAD,2H 0,2H05,2H  ,2HMT,2H O,2HFF,2H L,2HIN,
     &                2HE / 
      DATA MRR6/6412B,2HRE,2HAD,2H 0,2H06,2H I,2HLL,2HEG,2HAL,
     &                2H D,2HIS,2HC ,2HLU/
      DATA MRR7/6412B,2HRE,2HAD,2H 0,2H07,2H  ,2HPA,2HRI,2HTY,2H E,2HRR,
     &                2HOR/ 
      DATA MRR8/6412B,2HRE,2HAD,2H 0,2H08,2H  ,2HEN,2HD ,2HOF,2H T,2HAP,
     &                2HE / 
      DATA MRR9/6412B,2HRE,2HAD,2H 0,2H09,2H F,2HIL,2HE ,2HOP,2HEN, 
     &               2H O,2HR ,2HRE,2HAD,2HT',2HS ,2HDI,2HSC,2H L,2HU , 
     &                2HLO,2HCK,2H R,2HEJ,2HEC,2HTE,2HD / 
      DATA MRR10/6412B,2HRE,2HAD,2H 0,2H10,2H  ,2HNO,2HN ,2HSE,2HSS,
     &                 2HIO,2HN:,2H L,2HU ,2HMU,2HST,2H B,2HE ,2HNE,
     &                 2HGA,2HTI,2HVE/
      DATA MRR11/6412B,2HRE,2HAD,2H 0,2H11,2H  ,2HSI,2HZE,2H E,2HRR,
     &                 2HOR/
      DATA MRR12/6412B,2HRE,2HAD,2H 0,2H12,2H  ,2HMO,2HUN,2HT ,2HER,
     &                 2HRO,2HR ,2HFM,2HGR,2H 0,2HXX/ 
C 
      DATA MESS8/2H/R,2HEA,2HDT,2H: ,2H S,2HTO,2HP /
      DATA MESLU/2HRE,2HST,2HOR,2HED,2H T,2HO , 
     &                 2HLU,2H  ,2H  ,2H  / 
      DATA MDR1/2HCR,2HN ,2H  ,2H  ,2H  ,2H W,2HAS,2H S,2HAV, 
     &               2HED,2H F,2HRO,2HM ,2HA ,2H  ,2H  ,2H  ,2H  ,
     &               2H T,2HRA,2HCK,2H D,2HIS,2HC / 
      DATA MDR2/2HLA,2HST,2H T,2HRA,2HCK,2H U,2HSE,2HD ,2HIS, 
     &               2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  / 
      DATA MDR3/2HRE,2HAD,2HT ,2HWO,2HUL,2HD ,2HLI,2HKE,2H T, 
     &               2HO ,2HRE,2HST,2HOR,2HE ,2H T,2HO ,2HA , 
     &               2H  ,2H  ,2H  ,2H T,2HRA,2HCK,2H D,2HIS,2HC /
      DATA MDR4/2HIS,2H I,2HT ,2HOK,2HAY,2H T,2HO ,2HMO,2HVE, 
     &               2H D,2HIR,2HEC,2HTO,2HRY,2H T,2HRA,2HCK, 
     &               2HS ,2H(Y,2HES,2H O,2HR ,2HNO,2H)?/
      DATA MR13/6412B,2HRE,2HAD,2H 0,2H13,2H  ,2HSP,2HEC,2HIF,2HIE, 
     &               2HD ,2HLU,2H O,2HR ,2HFR,2HEE,2H L,2HU ,2HNO,
     &               2HT ,2HBI,2HG ,2HEN,2HOU,2HGH,2H T,2HO ,2HMO,
     &               2HUN,2HT ,2HCR,2HN / 
      DATA MSCRN/2HCR,2HN ,2H  ,2H  ,2H  ,2H H,2HAS,2H B,2HEE,
     &               2HN ,2HCH,2HAN,2HGE,2HD ,2HTO,2H C,2HRN, 
     &               2H  ,2H  ,2H  ,2H  / 
      DATA MSDRT/6412B,2HDI,2HRE,2HCT,2HOR,2HY ,2HTR,2HAC,2HKS,2H M,
     &               2HOV,2HED,2H F,2HRO,2HM ,2H  ,2H  ,2H  , 
     &               2H T,2HO ,2H  ,2H  ,2H  /
      DATA MSFMT/6412B,2HTR,2HAC,2HKS,2H R,2HEF,2HOR,2HMA,2HTT,2HED,
     &          2H F,2HRO,2HM ,2H  ,2H  ,2H  ,2H S,2HEC,2H/T,2HRK,2H T, 
     &               2HO ,2H  ,2H  ,2H  ,2H S,2HEC,2H/T,2HRK,6412B/ 
      DATA MR14/6412B,2HDO,2H Y,2HOU,2H W,2HAN,2HT ,2HTO,2H O,
     &                2HVE,2HRL,2HAY,2H C,2HRN,2H  ,2H  ,2H  ,
     &                2H  ,2HON,2H L,2HU ,2H  ,2H  ,2H  / 
      DATA MR15/6412B,2HWI,2HTH,2H C,2HRN,2H  ,2H  ,2H  ,2H  ,2H  , 
     &               2H(Y,2HES,2H O,2HR ,2HNO,2H) ,20137B/
      DATA MR16/6412B,2HDU,2HPL,2HIC,2HAT,2HE ,2HCR,2HN ,2HLA,2HBE, 
     &                2HL ,2HOR,2H L,2HU ,2HAL,2HRE,2HAD,2HY ,2HMO, 
     &                2HUN,2HTE,2HD / 
      DATA MR17/6412B,2HRE,2HAD,2H 0,2H14,2H O,2HNL,2HY ,2HTH,2HE , 
     &                2HSY,2HS ,2HMN,2HGR,2H M,2HAY,2H R,2HES,2HTO, 
     &                2HRE,2H S,2HYS,2HTE,2HM ,2HDI,2HCS/ 
      DATA MR18/6412B,2HRE,2HAD,2H 0,2H17,2H I,2HLL,2HEG,2HAL,2H R, 
     &                2HES,2HTO,2HRE,2H T,2HO ,2HLU,2H 2,2H O,2HR ,2H3 /
      DATA MRR17/6412B,2H E,2HOF,2H E,2HNC,2HOU,
     &           2HNT,2HER,2HED,2H B,2HEF,2HOR,2HE ,2HDA,2HTA,2H T, 
     &           2HRA,2HCK,2HS /
      DATA MS10/2HDI,2HSC,2H A,2HLR,2HEA,2HDY,2H M,2HOU,2HNT,2HED/
      DATA MS11/2HDO,2H Y,2HOU,2H W,2HAN,2HT ,2HTO,2H O,2HVE,2HRL,
     &          2HAY,2H L,2HU ,2H  ,2H  ,2H  /
      DATA MS12/2HWI,2HTH,2H C,2HRN,2H  ,2H  ,2H  ,2H (,2HYE,2HS ,
     &          2HOR,2H N,2HO),2H  /
C 
C  INITIALIZE TAPE COUNT - THE NUMBER OF REELS
C 
      ITAPE=1 
C 
C  SET UP "ILU" AS TERMINAL LU
C 
      CALL EXEC(14,1,ILBUF,-80) 
      CALL ABREG(IA,IB) 
      IS=1
      ILU=LOGLU(ISES)+400B
C 
C  PARSE FIRST 2 PARTS OF COMMAND STRING (I.E. "RU,READT")
C 
      IF(NAMR(INAM1,ILBUF,IB,IS))1,1
1     IF(NAMR(INAM1,ILBUF,IB,IS))2,2
C 
C  NOW PARSE COMMAND STRING TO GET CRN,MTLU,....  ETC.
C 
2     IF(NAMR(INAM1,ILBUF,IB,IS))3,3
3     IF(NAMR(INAM2,ILBUF,IB,IS))4,4
4     IF(NAMR(INAM3,ILBUF,IB,IS))5,5
5     IF(NAMR(INAM4,ILBUF,IB,IS))6,6
6     IF(NAMR(INAM5,ILBUF,IB,IS))7,7
C 
7     ILU=LOGLU(ISES)+400B
C 
      IDISC=INAM1(1)
      MTLU=INAM2(1) 
      SIZE=INAM4(1) 
C 
C     CHECK WHETHER TO INHIBIT REWIND,  IF SO INHBT=-1,OTHERWISE INHBT>=0 
C 
      IF(INAM5.EQ.2HIH)INHBT=-1 
C 
C      PICK UP MAG TAPE LU, DEFAULT IS 8
C 
      IF (MTLU.EQ.0)MTLU=8
      MTLU=IABS(MTLU) 
C 
C       SIZE PARAMETER MUST BE POSITIVE 
C 
      IF(INAM4.LT.0)GO TO 885 
C 
C     SET ISYSV=-1 IF RESTORING LU 2
C 
      IF(IABS(IDISC).EQ.2)ISYSV=-1
C 
C     IF RESTORING AUX DISC THEN SET ISYSV=-2 
C 
C  PICK UP CONTENTS OF BASE PAGE WORD 1760B - # SEC/TRK ON LU 3.
C 
      IAUX=IXGET(1760B) 
C 
      IF((IAUX.NE.0).AND.(IABS(IDISC).EQ.3))ISYSV=-2
C 
C 
C  USE IGET TO GET CURRENT EXECUTING PROGRAM ADDRESS
C 
      IXEQT=IXGET(1717B)
C 
C  DETERMINE WHETHER OR NOT IN SESSION
C  OUT OF SESSION, -LU MUST BE SPECIFED 
C     ADSCB - ADDRESS OF SCB
C     INSES - =0 IF IN SESSION  =1 IF NOT 
C     SMID  - OFFSET TO USER ID WORD OF SCB 
C 
      CALL FESSN(ADSCB,INSES,SMID,SMDL) 
C 
C  GET USER AND GROUP ID'S FROM SCB 
C     USER ID IN FIRST WORD, GROUP ID IN SECOND WORD OF IDENT 
C 
      CALL ISMVE(ADSCB,SMID,IDENT,2)
C 
C 
C     CAN'T RESTORE SYS OR AUX DISC IF NOT SYS. MNGR. (ID=7777B)
C 
      IF((IABS(IDISC).EQ.2).AND.(IDENT.NE.7777B))GO TO 208
      IF(IAUX.EQ.0)GO TO 8
      IF((IABS(IDISC).EQ.3).AND.(IDENT.NE.7777B))GO TO 208
C 
C 
8     IF (INSES.EQ.0)GO TO 10 
      IF (IDISC.GE.0)GO TO 80 
C 
C  CHECK VALDITY OF LU - ISTAT IS EQT STATUS WORD 5.
C                        ISTA1 IS EQT STATUS WORD 4 (NOT USED)
C                        ISTA2 - SPECIFIES WHETHER DEVICE UP OR DOWN
C 
10    IF(LUARY.GT.64)GO TO 106
      CALL EXEC(13+100000B,MTLU,ISTAT,ISTA1,ISTA2)
      GO TO 106 
C 
C  MUST BE DRIVERS 23 OR 24 
C 
2666  IF(IAND(ISTAT,37400B)*2.EQ.23000B)GO TO 14
      IF(IAND(ISTAT,37400B)*2.EQ.24000B)GO TO 14
      GO TO 106 
C 
C  CHECK TO SEE IF LU AND EQT ARE UP
C 
14    IF(IAND(ISTAT,040000B).EQ.040000B)GO TO 100 
      IF(IAND(ISTA2,100000B).EQ.100000B)GO TO 100 
C 
C  LOCK MAG TAPE LU 
C 
      CALL LURQ(140001B,MTLU,1) 
      GO TO 106 
C 
C  IF A-REGISTER = 1, THEN ALREADY LOCKED.
C 
2333  CALL ABREG(IA,IB) 
      IF(IA.EQ.1)GO TO 104
C 
C  CHECK STATUS OF MAG TAPE UNIT
C   FLAG=1 IF OFLINE/BUSY; =4 IF EOT
C 
      CALL MT1OK(LUARY,FLAG)
      IF(FLAG.EQ.1)GO TO 200
      IF(FLAG.EQ.4)GO TO 206
C 
C  IF IDISC > 0, THEN CRN ## WAS SPECIFIED
C 
      IF(IDISC.GE.0)GO TO 28
C 
C  IF IDISC < -63, THEN ILLEGAL DISC LU 
C 
      IF(IDISC.LT.-63)GO TO 82
C 
C 
28    IF(INHBT)30,295,295 
C 
295   REWIND MTLU 
C 
C 
C 
C  GET HEADER FROM MAG TAPE 
C 
30    CALL EXEC(1+100000B,MTLU,IBUF,ILNTH+1)
      GO TO 81
3001  CALL ABREG(IA,IB) 
      IF(IAND(IA,2).EQ.2)GO TO 204
      HEDLNT=IB 
      IRMBR=0 
C 
C IF HEADER LENGTH NOT WHAT WAS EXPECTED - ERROR (BAD TAPE FORMAT)
C 
      IF((HEDLNT.LT.2).OR.(HEDLNT.GT.50))GO TO 81 
C 
C  CHECK FOR TYPE OF CARTRIDGE, I.E. PRIVATE OR GROUP 
C 
      IF(LU(3).EQ.0)GO TO 37
      TYPE=0
      IF((LU(3).EQ.2HG ).OR.(LU(3).EQ.2HGR))TYPE=1
      GO TO 39
37    TYPE=0
      IF(IBUF(29).EQ.2HGR)TYPE=1
C 
C  WRITE OUT HEADER 
C 
39    CALL EXEC(2,ILU,IBUF,31)
      IF(IDISC.GE.0)GO TO 44
C 
C  SET UP DISC LU FOR EXTENDED EXEC CALL
C 
      IDISK=-IDISC
C 
C  CHECK I/O STATUS OF DISC - ISTAT EQT STATUS WORD 5 
C 
      CALL EXEC(13+100000B,IDISK,ISTAT) 
      GO TO 82
2555  ITYPE=IAND(ISTAT,37400B)/256
C 
C  THIS LU OK IF DVR IS 30,31,32, OR 33 
C 
      IF((ITYPE.LE.27B).OR.(ITYPE.GE.34B))GO TO 82
C 
C  READ THE NEXT RECORD IF THE LAST WAS A HEADER (LENGTH <= 100). 
C 
44    CALL EXEC(1,MTLU,IBUF,ILNTH+1)
C 
C  THIS SHOULD BE THE FIRST DIRECTORY TRACK 
C  CHECK FOR END OF TAPE
C  A-REGISTER HAS EQT STATUS WORD FIVE
C 
      CALL ABREG(IA,IB) 
  
      IF((IAND(IA,00040B).NE.40B))GO TO 141 
      CALL EXEC(3,MTLU+500B)
      CALL EXEC(2,ILU,MRR8,12)
      CALL PTERR(MRR8(2),FLAG)
182   CALL EXEC(2,ILU,28HPLEASE MOUNT SUBSEQUENT TAPE,-28)
183   CALL EXEC(2,ILU,25HAFTER MOUNTING ENTER "GO",-25) 
      CALL REIO(1,ILU,INBF,1) 
      IF(INBF.EQ.2HAB)GO TO 91
      IF(INBF.NE.2HGO)GO TO 183 
C 
C  FIRST RECORD (ONE WORD) CONTAINS TAPE COUNT. MAKE SURE TAPE COUNT
C  IS WHAT'S EXPECTED.
C 
      ITAPE=ITAPE+1 
      CALL EXEC(1,MTLU,INBUF,1) 
      CALL ABREG(IA,IB) 
      IF(INBUF.NE.ITAPE)GO TO 190 
      GO TO 141 
C 
C  WRONG TAPE COUNT 
C  HE PROBABLY MOUNTED THE WRONG REEL, TELL HIM SO. 
C 
C 
190   CALL EXEC(2,ILU,MRR2,14)
      CALL PTERR(MRR2(2),FLAG)
      ITAPE=ITAPE-1 
      GO TO 182 
  
141   ISIZE=INAM4 
  
C 
C  JBUF(4) IS CRN FROM FILE DIRECTORY OF MAG TAPE.
C 
      IF(IDISC.EQ.JBUF(4).OR.IDISC.LE.0)GO TO 443 
C 
C  REPORT CHANGE OF CRN NUMBER
C  ALSO CHECK TO SEE IF NEW NUMBER IS REALLY ASCII
C  IF CRN IS LEGAL FILENAME THEN DON'T CONVERT
C 
      MSBUF=IDISC 
      MSCRN(19)=IDISC 
      CALL NMCHK(MSBUF) 
      CALL ABREG(IA,IB) 
      IF(IA.EQ.0)GO TO 440
      CALL CNUMD(IDISC,MSCRN(18)) 
  
440   MSBUF=JBUF(4) 
      MSCRN(3)=JBUF(4)
      CALL NMCHK(MSBUF) 
      CALL ABREG(IA,IB) 
      IF(IA.EQ.0)GO TO 449
      CALL CNUMD(JBUF(4),MSCRN(3))
C 
C  "CRN XXX HAS BEEN CHANGED TO CRN YYY". 
C 
449   CALL EXEC(2,ILU,MSCRN,21) 
443   IBTRK=0 
C 
C  GET CURRENT CARTRIDGE NUMBER 
C 
      IF(IDISC.GT.0)JBUF(4)=IDISC 
      IF(IDISC.NE.0)GO TO 447 
      IDISC=JBUF(4) 
      ICRN=JBUF(4)
      GO TO 650 
447   ICRN=0
      IF(IDISC.GT.0)GO TO 650 
      ICRN=JBUF(4)
C 
C  DISC LU SPECIFIED, MAKE SURE CRN OF MAG TAPE DOESN'T DUPLICATE A 
C  CRN NAME CURRENTLY MOUNTED ON ANOTHER CARTRIDGE. THAT IS SEARCH
C  CARTRIDGE LIST.
C 
C 
      CALL FSTAT(ISTAT,256,1,0) 
      I=3 
C 
C  SET IRMBR TO INDICATE DISC ALREADY MOUNTED 
C 
      IRMBR=-1
624   IF(ICRN.NE.ISTAT(I))GO TO 625 
      IF((-IDISC).NE.IAND(ISTAT(I-2),377B))GO TO 633
625   IF(ISTAT(I+2).EQ.0)GO TO 650
      I=I+4 
      GO TO 624 
C 
C  DISC LU IS CURRENTLY MOUNTED TO SOMEONE ELSE RETURN ERROR
C 
633   FLAG=12 
      GO TO 83
C 
C 
650   FLAG=0
      ITDSC=IDISC 
C 
C  MUST BE SYS MNGR TO RESTORE CRN 2
C 
C 
      IF((ICRN.EQ.2).AND.(IDENT.NE.7777B))GO TO 208 
C 
C     CHECK TO SEE IF AUX DISC EXISTS, IF IT DOES THEN CAN'T RESTORE IT.
C 
      IF(IAUX.EQ.0)GO TO 655
      IF((ICRN.EQ.3).AND.(IDENT.NE.7777B))GO TO 208 
C 
C 
C 
C 
C  REMEMBER SECTOR/TRK VALUE AND WORD/TRK VALUE OF MAG TAPE 
C  JBUF(7)=SECTOR/TRACK VALUE ON MAG TAPE 
C 
C 
655   ISCTR=JBUF(7) 
      ILNTH=JBUF(7)*64
C 
C  CALL MOUNT ROUTINE TO GET CARTRIDGE OR DISC LU 
C  (LAST PARAMETER IN CALL TO "DCMC" SPECIFIES SEC/TRK VALUE. BY NOT
C  REQUESTING A SPECIFIC SEC/TRK VALUE IT WILL DEFAULT TO THE FIRST 
C  AVAILABLE CARTRIDGE FROM THE DISC POOL). 
C 
C 
      CALL DCMC(FLAG,3,IDISC,TYPE,SIZE,0,0,ICRN,0,0)
C 
C  B-REGISTER CONTAINS DISC LU MOUNT OBTAINED 
C 
      CALL ABREG(IA,IDISC)
C 
C 
C 
      IF(ISYSV)660,670,670
C 
660   IF(ISYSV.EQ.-1)IDUM=IXGET(1757B)
      IF(ISYSV.EQ.-2)IDUM=IXGET(1760B)
C 
C     CHECK CONDITIONS FOR A LEGAL RESTORE
C     GET STARTING TRACK LOC OF FMP TRACKS
C     NOW COMPARE AGAINST NEW LOCATION
C     ALSO, NEW SEC/TRK MUST BE THE SAME
C 
C     CALL EXEC(1,-ITDSC,MBUFR,9) 
C     IF((MBUFR(5).LT.JBUF(5)).OR.(ISCTR.NE.IDUM))CALL EXEC(2,ILU,
C    & 16HILLEGAL RESTORE ,-8)
C 
C 
C 
C  IF FLAG(ERROR WORD) IS ZERO THEN PROCEED WITH RESTORATION
C  TO THE DESCRIBED DISC LU.
C  IF FLAG IS 12 THEN CARTRIDGE IS ALREADY MOUNTED, FIND
C  CRN NUMBER AND DISC LU FROM FSTAT AND PROMPT USER ON WHETHER 
C  TO PROCEED WITH RESTORING THE CARTRIDGE. 
C  REPORT ALL OTHER ERRORS AND RETURN 
C 
670   IF (FLAG.EQ.0)GO TO 434 
      IF(FLAG.NE.12)GO TO 83
      IF(ITDSC.LT.0)GO TO 500 
C 
C  A CARTRIDGE WAS SPECIFIED, SEARCH FSTAT FOR A MATCH
C  SET IRMBR TO INDICATE DISC WAS ALREADY MOUNTED 
C 
      J=1 
      IRMBR=-1
      CALL FSTAT(ISTAT,256,1,0) 
337   IF(JBUF(4).EQ.ISTAT(J+2))GO TO 338
      IF(ISTAT(J+4).EQ.0)GO TO 83 
      J=J+4 
      GO TO 337 
C 
C  FOUND IT 
C 
338   IF((ISTAT(J+3).EQ.7777B).AND.(IDENT.NE.7777B))GO TO 83
      IDISC=IAND(ISTAT(J),00377B) 
C 
C  DO IMPOSSIBLE READ OF DISC AND MAKE SURE IT HAS ENOUGH ROOM. 
C  JBUF(7) - SEC/TRK VALUE FROM MAG TAPE
C  IDUM - SEC/TRK VALUE OF DISC 
C     IBTRK = LAST TRACK OF DISC LU 
C     IDENT = TYPE (PRIVATE OR GROUP) 
C 
C 
      IBTRK=ISTAT(J+1)
      IDENT=ISTAT(J+3)
C 
C     IF RESOTRING LU 2 OR 3 GET LAST TRACK FROM CL.
C        DO NOT ALLOW MOVING THE FIRST FMP TRACK BACK.
C        E.G. FROM TRACK 100 TO TRACK 90. 
C        NOR ALLOW RESTORING TO A DIFFERENT SEC/TRK CARTRIDGE.
C 
C 
      IF(ISYSV.GE.0)GO TO 342 
      IBSZE=ISTAT(J+1)+1
      CALL EXEC(1,IDISC,MBUFR,9,ISTAT(J+1),0) 
      IF(JBUF(5).LT.MBUFR(5))GO TO 210
      IF(MBUFR(7).NE.IDUM)GO TO 210 
      GO TO 340 
C 
342   CALL EXEC(1,IDISC,IDUM,1,-1,0)
C 
C  ROOM ENOUGH? COMPARE # SECTORS NECESSARY (FROM MT) WITH
C  # SECTORS AVAILABLE (FROM DISC). 
C  JBUF(6) - NEXT AVAILABLE SECTOR (FROM MT)
C  JBUF(10) - NEXT AVAILABLE TRACK  " 
C  JBUF(9) - # DIRECTORY TRACKS (NEGATIVE)
C 
340   IF((FLOAT(JBUF(10)-JBUF(9))*ISCTR+JBUF(6)).GT.
     & FLOAT(IBTRK+1)*IDUM) GO TO 84
      ITDSC=IDISC 
C 
C 
C  DON'T CONVERT IF ASCII 
C 
      MSBUF=IDISC 
      MR14(25)=IDISC
      CALL NMCHK(MSBUF) 
      CALL ABREG(IA,IB) 
      IF(IA.EQ.0)GO TO 350
      MR14(24)=KCVT(IDISC)
  
350   MSBUF=(JBUF(4)) 
      MR14(16)=(JBUF(4))
      MR15(8)=(JBUF(4)) 
      CALL NMCHK(MSBUF) 
      CALL ABREG(IA,IB) 
      IF(IA.EQ.0)GO TO 355
      CALL CNUMD(JBUF(4),MR14(15))
      CALL CNUMD(JBUF(4),MR15(6)) 
C 
C     DO YOU WANT TO OVERLAY......? 
C 
355   CALL EXEC(2,ILU,MR16,22)
      CALL EXEC(2,ILU,MR14,24)
      CALL EXEC(2,ILU,MR15,17)
      CALL REIO(1,ILU,INBF,1) 
      IF(INBF.EQ.2HYE)GO TO 357 
      CALL EXEC(2,ILU,16HCRN NOT RESTORED,8)
      GO TO 91
357   IDISC=-IDISC
      I=J 
      GO TO 560 
C 
C  A DISC LU WAS SPECIFIED, SEARCH FSTAT FOR A MATCH
C 
500   CALL FSTAT(ISTAT,256,1,0) 
      I=1 
C 
C  SET IRMBR=-1 TO INDICATE DISC WAS MOUNTED ALREADY. 
C 
      IRMBR=-1
532   IF((-ITDSC).EQ.IAND(ISTAT(I),00377B))GO TO 538
      IF(ISTAT(I+4).EQ.0)GO TO 83 
      I=I+4 
      GO TO 532 
C 
C     ICRN = CARTRIDGE REFERENCE NUMBER 
C     IBTRK= LAST TRACK 
C     IDENT= TYPE CARTRIDGE (PRIVATE OR GROUP)
C 
538   IF((ISTAT(I+3).EQ.7777B).AND.(IDENT.NE.7777B))GO TO 83
      ICRN=ISTAT(I+2) 
      IBTRK=ISTAT(I+1)
      ITDSC=-ITDSC
      IDISC=-ITDSC
C 
C     IF RESTORING LU 2 OR 3 THEN GET LAST TRACK FROM CL
C     CAN'T MOVE STARTING FMP TRACKS BACK 
C       NOR CAN YOU RESTORE TO A CARTRDIGE WITH A DIFFERENT SEC/TRK VALUE.
C 
C 
C 
      IF(ISYSV.GE.0)GO TO 542 
      IBSZE=ISTAT(I+1)+1
      CALL EXEC(1,ITDSC,MBUFR,9,ISTAT(I+1),0) 
      IF(JBUF(5).LT.MBUFR(5))GO TO 210
      IF(MBUFR(7).NE.IDUM)GO TO 210 
      GO TO 539 
C 
C 
C 
542   CALL EXEC(1,ITDSC,IDUM,1,-1,0)
      CALL ABREG(IA,IBSZE)
C 
C  ROOM ENOUGH? CHECK # SECTORS NEEDED VS. # SECTORS AVAILABLE. 
C 
539   IF((FLOAT(JBUF(10)-JBUF(9))*ISCTR+JBUF(6)).GT.
     & FLOAT(IBTRK+1)*IDUM) GO TO 84
      IDENT=ISTAT(I+3)
      MS11(16)=KCVT(ITDSC)
      MSBUF=JBUF(4) 
      MS12(7)=JBUF(4) 
      CALL NMCHK(MSBUF) 
      CALL ABREG(IA,IB) 
      IF(IA.EQ.0)GO TO 540
      CALL CNUMD(JBUF(4),MS12(5)) 
C 
C  DISC CARTRIDGE ALREADY MOUNTED, ASK USER IF O.K. TO OVERLAY WITH 
C  WHAT'S ON TAPE.
C 
540   CALL EXEC(2,ILU,MS10,10)
      CALL EXEC(2,ILU,MS11,16)
      CALL EXEC(2,ILU,MS12,14)
      CALL REIO(1,ILU,INBF,1) 
      IF(INBF.EQ.2HYE)GO TO 560 
C 
      CALL EXEC(2,ILU,16HCRN NOT RESTORED,8)
      GO TO 91
C 
C  UPDATE SYSTEM CARTRIDGE LIST I.E. CALL D.RTR TO DO THE UPDATE
C  KBUFR CONTAINS 1. DISC LU 2.LAST FMP TRACK 3.CRN 4.ID
C 
560   CALL EXEC(2,ILU,18H/READT:  CONTINUE ,9)
      KBUFR(1)=ITDSC
      KBUFR(2)=IBTRK
      KBUFR(3)=JBUF(4)
      KBUFR(4)=IDENT
C 
C  CALL D.RTR 
C 
      CALL EXEC(23,6HD.RTR ,IXEQT,15,-ITDSC,0,0,KBUFR,4)
C 
C  CALL D.RTR TO LOCK DISC
C 
      CALL EXEC(23,6HD.RTR ,IXEQT,3,-ITDSC,0,0,0,0) 
C 
C  CHECK TO SEE IF LOCK WAS REJECTED
C 
      CALL RMPAR(LU)
C 
C     IF THE FIRST WORD IS NEGATIVE THEN LOCK WAS REJECTED. 
C 
      IF(LU.LT.0)GO TO 102
C 
C     IF NOT RESTORING SYS OR AUX DISCS THEN SKIP THIS. 
C 
      IF(ISYSV)788,434,434
C 
C     FIND OUT IF THERE ARE ANY ID SEG. POINTING TO FMP TRACKS
C     ON THE CARTRIDGE BEING RESTORED.
C 
C 
C     JBUF(5) IS THE FIRST AVAILABLE TRACK FOR FMP FILES
C 
C 
788   DISCL=IABS(ITDSC) 
C 
      IDISC=-ITDSC
C 
C 
      CALL IDSGM(DISCL,JBUF(5),ILU,IERR)
      IF(IERR)91,434,434
C 
C 
C  A CARTRIDGE OR DISC HAS BEEN FOUND RE-ADJUST TRACK SIZE
C  IF NECESSARY 
C 
434   IDISC=-IDISC
      IF(IBTRK.EQ.0)GO TO 437 
C 
C  DO AN IMPOSSIBLE READ TO GET SEC/TRACK VALUE OF DISC 
C  AND THEN DETERMINE IF THERE'S ENOUGH ROOM ON THE DISC. 
C  (OTHERWISE CAN'T RESTORE TO THAT LU) 
C 
C 
      IF(ISYSV)1110,430,430 
C 
430   CALL EXEC(1,IDISC,IDUM,1,-1,0)
      CALL ABREG(IA,IBSZE)
C 
C  ROOM ENOUGH? 
C  COMPARE # TRACKS USED ON MAG TAPE WITH # TRACKS AVAILABLE ON DISC. 
C  (SINCE THEY MAY HAVE DIFFERENT SEC/TRK VALUES, MUST USE RATIO).
C 
1110  IF((JBUF(10)*FLOAT(ISCTR)/FLOAT(IDUM)).GT.
     & ((IBTRK+(JBUF(9)+1))*FLOAT(ISCTR)/FLOAT(IDUM))) GOTO 84
      SIZE=IBTRK+1
C 
C  DO AN IMPOSSIBLE READ TO GET TRACK AND SECTOR
C  SIZE OF DISC LU
C 
C 
C 
C 
437   IF(ISYSV)4350,438,438 
C 
438   CALL EXEC(1,IDISC,IDUM,1,-1,0)
      CALL ABREG(IA,IBSZE)
4350  IF((IDUM.NE.ISCTR).OR.(IBSZE.GE.SIZE)) GOTO 445 
C 
C  IF CARTRIDGE CAN BE MOUNTED TO DIFFERENT SIZE
C  DISC ASK USER IF IT'S OKAY TO PROCEED
C 
      IF((FLOAT(JBUF(10)-JBUF(9))*ISCTR+JBUF(6)).GT.
     & FLOAT(IBSZE)*IDUM)GO TO 84 
      MSBUF=(JBUF(4)) 
      MDR1(3)=(JBUF(4)) 
      CALL NMCHK(MSBUF) 
      CALL ABREG(IA,IB) 
      IF(IA.EQ.0)GO TO 423
      CALL CNUMD(JBUF(4),MDR1(3)) 
  
423   ISIZE=JBUF(8)+1 
      CALL CNUMD(ISIZE,MDR1(15))
      CALL CNUMD(JBUF(10),MDR2(15)) 
      CALL CNUMD(IBSZE,MDR3(18))
      CALL REIO(2,ILU,MDR1,24)
      CALL REIO(2,ILU,MDR2,17)
      CALL REIO(2,ILU,MDR3,26)
      CALL REIO(2,ILU,MDR4,24)
      CALL REIO(1,ILU,MBUF,1) 
      IF(MBUF.NE.2HYE)GO TO 90
      SIZE=IBSZE
C 
C  IF SIZE OF CARTRIDGE IS NOT EQ TO SIZE SPECIFIED 
C  THEN TELL USER THE DIRECTORY TRACKS HAVE BEEN MOVED
C 
445   IF(SIZE.EQ.0)SIZE=IBSZE 
C 
C     MAKE SURE THERE'S ENOUGH ROOM 
C 
      IF((FLOAT(JBUF(10)-JBUF(9))*ISCTR+JBUF(6)).GT.
     & FLOAT(IBSZE)*IDUM) GO TO 84
      IF(JBUF(8)-JBUF(9).EQ.SIZE)GO TO 446
      CALL CNUMD((JBUF(8)-JBUF(9)-1),MSDRT(16)) 
      CALL CNUMD(SIZE-1,MSDRT(21))
      CALL EXEC(2,ILU,MSDRT,23) 
446   JBUF(8)=SIZE+JBUF(9)
C 
C  COMPUTE WORD/TRK VALUE OF DISC.
C 
      JLNTH=IDUM*64 
C 
C  SAVE LOWEST DIRECTORY TRACK AND TOTAL NUMBER OF DIRECTORY TRACKS.
C 
      LODIR=JBUF(8) 
      NDIR=-(JBUF(9)) 
C 
C  SEC/TRK SAME? IF NOT, GO RE-FORMAT BEFORE RESTORE. 
C 
      IF(ISCTR.NE.IDUM) GOTO 600
C 
C  NOW COPY DIRECTORY TRACKS. 
C 
C     INITIALIZE RELATIVE DIRECTORY SECTOR  (USED ONLY FOR  LU 2 OR 3)
C 
      JJ=0
C 
      DO 47 II=1,NDIR 
       N=9
C 
C  GET READY TO CLEAR OPEN FLAGS (4 ENTRIES/SECTOR).
C 
       DO 46 I=1,ISCTR*4
C 
C  IF THIS IS THE FIRST TIME THROUGH, SKIP. 
C 
        IF((II.EQ.1).AND.(N.EQ.9)) GOTO 455 
C 
C  NOW CLEAR 'EM OUT (OPEN FLAGS, THAT IS). 
C 
         DO 45 J=1,7
          JBUF(N+J)=0 
45       CONTINUE 
C 
C INCREMENT TO NEXT ENTRY (EACH ENTRY 16 WORDS).
C 
455      N=N+16 
46      CONTINUE
C 
C  WRITE DIRECTORY TRACK TO DISC
C 
C     IF RESTORING SYS OR AUXILARY DISC HAVE D.RTR RESTORE
C     DIRECTORY TRACKS. 
C 
C 
      IF(ISYSV)460,465,465
C 
C 
C     THIS CODE IS USED ONLY WHEN RESTORING LU 2 OR 3.
C     **********************************************
C     BB IS POINTER INTO JBUF ONLY 128 WORDS ARE WRITTEN AT A TIME
C     JJ IS THE RELATIVE DIRECTORY SECTOR E.G. 98 IS
C     SECTOR 2 OF THE SECOND DIR. TRACK ON A 96 SECTOR/TRK CRN. 
C     THIS IS USED ONLY WHEN RESTORING LU 2 OR LU 3.
C 
C 
460   BB=1
462   CALL EXEC(23,6HD.RTR ,IXEQT,9,IDISC,JJ,0,JBUF(BB),128)
      BB=(JJ+1)*14
      BB=BB-((BB/ISCTR)*ISCTR)
      BB=(BB*64)+1
      JJ=JJ+1 
      IF(JJ.EQ.((ISCTR*II)/2))GO TO 470 
      GO TO 462 
C 
C 
464   GO TO 470 
C 
C 
465    CALL EXEC(2+100000B,IDISC+74000B,JBUF,JLNTH,SIZE-II,0) 
C 
C     DO ANYTHING EXCEPT ABORT
C 
4666  GO TO 4655
4777  GO TO 4666
C 
C  MAKE SURE WRITE WAS O.K. 
C 
4655   CALL ABREG(IA,IB)
       CALL VVALD(IA,IB,-1,JLNTH,SIZE-II,0,0,FLAG,0)
C 
C  GET NEXT TRACK FROM MAG TAPE 
C 
470    IF(II.EQ.NDIR) GOTO 47 
       CALL EXEC(1,MTLU,IBUF,ILNTH+1) 
       CALL ABREG(IA,IB)
C 
C  MAKE SURE READ WAS O.K.
C      IERR - = 1 EOF - TROUBLE, WHERE ARE DATA TRACKS? 
C             =-1 ABORT 
C             =-2 PARITY ERROR
C 
       IERR=0 
       CALL VVALD(IA,IB,1,JLNTH,ITRAK,0,ILNTH,FLAG,IERR)
       IF(IERR.EQ.1) GOTO 201 
       IF(IERR.EQ.-1) GOTO 91 
       IF(IERR.EQ.-2) GOTO 204
47    CONTINUE
C 
C  NOW DO DATA TRACKS.
C 
48    CALL EXEC(1,MTLU,IBUF,ILNTH+1)
      CALL ABREG(IA,IB) 
C 
C  MAKE SURE READ WAS O.K.
C      IERR -  = 1  EOF (NORMAL TERMINATION)
C              =-1  ABORT 
C              =-2  PARITY ERROR
C 
      IERR=0
      CALL VVALD(IA,IB,1,JLNTH,ITRAK,0,ILNTH,FLAG,IERR) 
      IF(IERR.EQ.1) GOTO 203
      IF(IERR.EQ.-1) GOTO 91
      IF(IERR.EQ.-2) GOTO 204 
C 
C  READ WAS O.K. NOW WRITE TRACK TO DISC. 
C 
       CALL EXEC(2+100000B,IDISC+74000B,JBUF,JLNTH,ITRAK,0) 
C 
4790  GO TO 4800
4888  GO TO 4790
C  MAKE SURE WRITE WAS O.K. 
C 
4800  CALL ABREG(IA,IB) 
      CALL VVALD(IA,IB,-1,JLNTH,ITRAK,0,0,FLAG,0) 
      GOTO 48 
  
C 
C  MUST CHANGE THE FOLLOWING SO THAT FMGR WILL HAVE CORRECT INFO
C  AFTER THE REFORMATTING OCCURS: 
C     1) NEXT AVAILABLE TRACK AND SECTOR.   JBUF(10),JBUF(6)
C     2) SEC/TRK                            JBUF(7) 
C     3) FIRST AVIALABLE FMP TRACK          JBUF(5) 
C 
600   TSEC=FLOAT(JBUF(10))*FLOAT(ISCTR)+JBUF(6) 
      JBUF(10)=TSEC/IDUM
      JBUF(6)=TSEC-FLOAT(JBUF(10))*FLOAT(IDUM)
      JBUF(7)=IDUM
C 
C     PICK UP STARTING TRACK LOCATION 
C 
      TEMP2=JBUF(5) 
C 
C  TELL USER THAT THE SEC/TRK VALUE OF THE NEW CARTRIDGE IS 
C  DIFFERENT AND THAT MT TRACKS MUST BE RE-FORMATTED BEFORE 
C  RESTORING. 
C 
      CALL CNUMD(ISCTR,MSFMT(14)) 
      CALL CNUMD(IDUM,MSFMT(23))
      CALL EXEC(2,ILU,MSFMT,30) 
C 
C  CALL SUBROUTINE TO REFORMAT AND RESTORE DIRECTORY TRACKS TO DISC.
C      IERR -  = 1  EOF - TROUBLE, WHERE ARE DATA TRACKS? 
C              =-1  ABORT 
C              =-2  PARITY ERROR
C 
      IERR=0
      CALL REDIR(ISCTR,IDUM,FLAG,IERR)
      IF(IERR.EQ.1) GOTO 201
      IF(IERR.EQ.-1) GOTO 91
      IF(IERR.EQ.-2) GOTO 204 
C 
C  EVERYTHING WENT O.K. NOW DO SAME FOR THE DATA TRACKS.
C     IERR -  = 1  EOF (NORMAL TERMINATION) 
C             =-1  ABORT
C             =-2  PARITY ERROR 
C 
      IERR=0
      CALL REFMT(ISCTR,IDUM,FLAG,IERR,TEMP2)
      IF(IERR.EQ.1) GOTO 203
      IF(IERR.EQ.-1) GOTO 91
      IF(IERR.EQ.-2) GOTO 204 
C 
C  ERRORS 
C 
C  NON-SESSION: LU MUST BE NEGATIVE 
C 
80    CALL EXEC(2,ILU,MRR10,22) 
      CALL PTERR(MRR10(2),FLAG) 
      GO TO 91
C 
C  BAD TAPE FORMAT
C 
81    CALL EXEC(2,ILU,MRR2,14)
      CALL PTERR(MRR2(2),FLAG)
      GO TO 91
C 
C  ILLEGAL DISC LU
C 
82    CALL EXEC(2,ILU,MRR6,13)
      CALL PTERR(MRR6(2),FLAG)
      GO TO 91
C 
C  SPECIFIED DISC LU MOUNTED TO SOMEONE ELSE OR CRN ALREADY EXISTS. 
C 
83    IF(FLAG.GE.0)GO TO 835
      FLAG=-FLAG
      MRR12(15)=2H-0
835   MRR12(16)=KCVT(FLAG)
      CALL EXEC(2,ILU,MRR12,16) 
      CALL PTERR(MRR12(2),FLAG) 
      IF(IRMBR) 91,90,90
C 
C  SPECIFIED LU OR FREE LU IS NOT BIG ENOUGH TO RESTORE CRN 
C 
84    CALL EXEC(2,ILU,MR13,32)
      CALL PTERR(MR13(2),FLAG)
      IF(IRMBR)91,90,90 
C 
C  MAG TAPE DOWN
C 
100   CALL EXEC(2,ILU,MRR1,13)
      CALL PTERR(MRR1(2),FLAG)
      GO TO 92
C 
C  DISC LU LOCKED 
C 
102   CALL EXEC(2,ILU,MRR9,27)
      CALL PTERR(MRR9(2),FLAG)
      GO TO 91
C 
C  LU LOCKED
C 
104   CALL EXEC(2,ILU,MRR3,11)
      CALL PTERR(MRR3(2),FLAG)
      GO TO 95
C 
C  ILLEGAL MAG TAPE LU
C 
106   CALL EXEC(2,ILU,MRR4,16)
      CALL PTERR(MRR4(2),FLAG)
      GO TO 94
C 
C  MAG TAPE OFFLINE 
C 
200   CALL EXEC(2,ILU,MRR5,12)
      CALL PTERR(MRR5(2),FLAG)
      GO TO 92
C 
C  EOF FOUND BEFORE DATA TRACKS 
C 
201   CALL EXEC(2,ILU,MRR17,19) 
C 
C  NORMAL TERMINATION - EVERYTHING HAS BEEN RESTORED. 
C 
203   CALL CNUMD(IDISC,MESLU(8))
      CALL EXEC(2,ILU,MESLU,10) 
      GOTO 91 
C 
C  PARITY ERROR 
C 
204   CALL EXEC(2,ILU,MRR7,12)
      CALL PTERR(MRR7(2),FLAG)
      GO TO 91
C 
C  END OF TAPE
C 
206   CALL EXEC(2,ILU,MRR8,12)
      CALL PTERR(MRR8(2),FLAG)
      GO TO 92
C 
C  CAN'T RESTORE LU 2 
C 
208   CALL EXEC(2,ILU,MR17,26)
      CALL PTERR(MR17(2),FLAG)
      GO TO 91
C 
C     ILLEGAL RESTORE TO LU 2 OR 3. 
C 
210   CALL EXEC(2,ILU,MR18,20)
      CALL PTERR(MR18(2),FLAG)
      GO TO 91
C 
C  SIZE ERROR (# OF TRACKS REQUESTED IS TO SMALL TO RESTORE TO )
C 
885   CALL EXEC(2,ILU,MRR11,11) 
      CALL PTERR(MRR11(2),FLAG) 
      GO TO 91
C 
C  UNLOCK AND DISMOUNT DISC LU. 
C 
90    CALL DCMC(FLAG,2,-IDISC,2HRR) 
C 
C  INHIBIT REWIND? IF (INHBT)YES,NO,NO
C 
91    IF(INHBT)92,911,911 
911   CALL EXEC(3,MTLU+500B)
C 
C  UNLOCK DISC
C 
92    CALL EXEC(23,6HD.RTR ,IXEQT,5,-ITDSC,0,0,0,0) 
C 
C  UNLOCK MAG TAPE UNIT 
C 
94    CALL LURQ(40000B,MTLU,1)
      GO TO 93
95    CONTINUE
C 
C  REPORT /READT: STOP
C 
93    CALL EXEC(2,ILU,MESS8,7)
  
      END 
      END$
                                                                                                    