FTN4,Q,C
      PROGRAM START (3,99),92425-16047 REV.2001 791127
C     NAME:START
C   SOURCE: 92425-18047 
C    RELOC: 92425-1X047 
C     PRGM: DICK LAMPMAN
************************************************************************* 
C    (C) *OPYRIGHT HEWLETT-PACKARD *OMPANY 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 WRITTED *ONSENT OF HEWLETT-PACKARD *OMPANY.               * 
************************************************************************* 
C 
C-------------------------------------------------------------
C 
C     USES THE FOLLOWING SUBROUTINES: 
C          DATE     SCAN      CLOSE 
C          TIMEX    RMPAR     EXEC
C          TABS     MESSS 
C          ATACH    OPEN
C          ASCII    READF 
C          INTV     JDRTP 
C 
C 
C 
C     THIS ROUTINE  OPENS THE WELCOM FILE AND LOOKS 
C FOR RECORDS BEGINNING WITH ':* #' . THE FOUR NUMBERS FOLLOWING
C REPRESENT: (1) THE STATION NUMBER; (2) THE LU OF THE DEVICE; (3)
C THE UNIT NUMBER; AND (4) THE DEVICE TYPE.  THESE ARE THEN STORED
C IN THE DRTXX WHICH IS MEMORY RESIDENT. THIS ROUTINE ALSO USE TO 
C PROMPT THE OPERATOR FOR THE DATE AND TIME TO INITIALIZE THE RTE CLOCK.
C 
C   USE ROUINTES
C      ISN    TO RETURN TERMINAL SESSION LU.
C      LUDV   TO GET THE LU OF A PARTICULAR DEVICE
C      LU2ST  IF YOU HAVE AN LU AND WANT IT'S STATION ((SYS) LU.
C             THIS ROUTINE IS GOOD ONLY FOR PROGRAMS NOT RUNNING
C             UNDER A SESSION.
C 
C 
C     FORMAT OF TEMPORARY DATA STORAGE BUFFERS
C     IDRT1 (I)   Y YYY YYY YEE EEE EEE 
C                 Y = SYSTEM LU 
C                 E = SESSION LU
C     IDRT2 (I)   R RRD DDD DDD DDU UUU 
C                 R = RESERVED
C                 D = DEVICE TYPE 
C                 U = UNIT
C     IDRT3 (I)   R RRR RRR RCC CCC CCC 
C                 R = RESERVED
C                 C = CLUSTER NUMBER
C 
C 
C 
      DIMENSION  IDCB(150)
      DIMENSION  IDCNT (255),IDRT1(512),IDRT2(512),IDRT3(512) 
      DIMENSION NAME3(3), IPARM(5), NAME5(3) ,NSLC (3)
      DIMENSION NAME4(3), IBUF(50), IDSEG(30), LU6SW(4) 
      DIMENSION ITOKN(30), ISTR1(9), NAME6(3) 
      DIMENSION NAME7(3), ICOMA(2), IHR(5), MIN(5), IYR(5)
      DIMENSION IDAYR(5), MON(5), MONDA(12), ISTAT(128) 
      DIMENSION ISTNS(20) 
C 
      DIMENSION IH1(6), IH2(5), IH3(15), IH4(15)
      DIMENSION ICH1(11),ICH2(5)
      DIMENSION ISL1(7) 
      DIMENSION IT0(6)
      DIMENSION IT1(8),IT2(8),IT3(4),IT4(6),IT5(9),IT6(8),IT7(12) 
      DIMENSION IXER (5)
      DIMENSION IT8(6),IT9(4),IT10(2) 
      DIMENSION IE1(23),IE2(12),IE3(12),IE4(21),IE5(18),IE6(20) 
      DIMENSION IE7(19),IE8(26) 
C 
      DATA NAME4 / 2HWE, 2HLC, 2HOM / ,NSLC / 2H/S, 2HLC, 2H   /
      DATA ICOMA / 1, 2H,   / 
      DATA MONDA / 0, 31, 59 ,90, 120, 151, 181, 212, 
     X             243, 273, 304, 334 / 
      DATA ISTNS/0,0,-1,1,-1,2,-1,3,-1,4,-1,5,-1,6,-1,7/
C 
      DATA IH1/   5 ,2H:S ,2HV, ,2H4, ,2H4, ,2HIH  /
      DATA IH2/   4 ,2H:C ,2HA, ,2H2, ,2H0 /
      DATA IH3/   5 ,2H:C ,2HA, ,2H6: ,2HP, ,2H0  / 
      DATA IH4/  14 ,2H:D ,2HP, ,2HSE ,2HLE ,2HCT ,2HED , 
     C2H C ,2HLU ,2HST, 2HER, 2H I ,2HS  ,2H,1 ,2HG  /
      DATA ICH1/   9,2H:I ,2HF, ,2H1G ,2H,N ,2HE, ,2H00 ,2H0, , 
     C2H+0 ,2H00 /
      DATA ICH2/   4,2H:C ,2HA, ,2H2, ,2H1G/
      DATA ISL1/   6,2H:S ,2HL, ,2H00 ,2H00 ,2H,0 ,2H00  /
      DATA IT0/    5,2H:C ,2HA, ,2H1: ,2HP, ,2H0  / 
      DATA IT1/    7,2H:I ,2HF, ,2H6P ,2H,E ,2HQ, ,2H0, ,2H+3 / 
      DATA IT2/    7,2H:D ,2HP, ,2HER ,2HRO ,2HR ,2H/S ,2HLC /
      DATA IT3/    3,2H:? ,2H?, ,2H6P / 
      DATA IT4/    5,2H:C ,2HA, ,2H1: ,2HP, ,2H-1 / 
      DATA IT5/    8,2H:I ,2HF, ,2H1G ,2H,E ,2HQ, ,2H2G ,2H,+ ,2H3  / 
      DATA IT6/    7,2H:D ,2HP, ,2HER ,2HRO ,2HR  ,2H/S ,2HLC / 
      DATA IT7/   11,2H:D ,2HP, ,2HCL ,2HUS ,2HTE ,2HR  ,2HNO , 
     C2HT  ,2HFO ,2HUN ,2HD / 
      DATA IT8/    5,2H:C ,2HA, ,2H1: ,2HP, ,2H-2/
      DATA IT9/    3,2H:S ,2HV, ,2H4G / 
      DATA IT10/   1,2H:: / 
C 
      DATA IE1/    22,2H *,2H**,2H C,2HON,2HVE,2HRS,2HIO,2HN ,
     C2HER,2HRO,2HR ,2HIN,2H S,2HET,2HTI,2HNG,2H D
     C,2HRT,2HXX,2H T,2HAB,2HLE / 
      DATA IE2/    11,2H D,2HRT,2HXX,2H O,2HVE,2HRF,2HLO,2HW
     C,2HER,2HRO,2HR /
      DATA IE3/    10,2H D,2HRT,2HXX,2H A,2HCC,2HES,2HS , 
     C 2HER,2HRO,2HR  / 
      DATA IE4/    19,2H *,2H**,2H S,2HTA,2HRT,2H E,2HRR,2HOR,2H. , 
     C2HOU ,2HT ,2HOF ,2H R,2HAN,2HGE,2H V,2HAL,2HUE ,2H.  /
      DATA IE5/    17,2H *,2H**,2H F,2HMG,2HR ,2HER,2HRO,2HR
     C,2H-0,2H00,2H0. 
     C,2HNA,2HMR,2H =,2H /,2HSL,2HC  /
      DATA IE6/    18,2H *,2H**,2H T,2HOO,2H M,2HAN,2HY ,2HDE 
     C,2HVI,2HCE,2HS ,2HIN,2H C,2HLU,2HST,2HER
     C,2H00,2H00 /
      DATA IE7/    18,2H *,2H**,2H F,2HMG,2HR ,2HER,2HRO,2HR
     C,2H-0,2H00,2H0. 
     C,2HNA,2HMR,2H =,2H W,2HEL,2HCO,2HM /
      DATA IE8/    25,2H *,2H** ,2HST ,2HAR ,2HT ,2HER,2HRO,2HR  ,
     C 2HCO,2HRR,2HUP,2HT ,2HCO,2HNF,2HIG,2HUR,2HAT,2HIO,2HN ,
     C 2HTA,2HBL,2HE ,2HIN,2H S,2HAM/ 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
      CALL RMPAR(IPARM) 
      LUOP = IPARM(1) 
      IF (LUOP .EQ. 0) LUOP = 1 
      ICRNS = IPARM (3) 
      IF (ICRNS.EQ.0) ICRNS = -2
C     CLEAR EXIT ERROR FLAG 
      IXER = 0
      ICRNW = IPARM (4) 
      IF (ICRNW.EQ.0) ICRNW = -2
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
C* #C********************************************************************** 
C* #C     FOLLOWING CODE WAS SUPPRESSED AS PART OF UPGRADE
C* #C      FROM RTE IVA TO RTE IVB. 
C* #C 
C* #C     GET TIME SET UP 
C* #C 
C* #      WRITE (LUOP, 1003)
C* #1003  FORMAT ("BY ENTERING DATE AS MO/DA/YR #_")
C* #      READ (LUOP, 1002) (IBUF(J), J = 2,10) 
C* #      IBUF(1) = 8 
C* #      NTOKN = 0 
C* #      CALL SCAN (IBUF, MON, NTOKN, IQT) 
C* #      CALL SCAN (IBUF, ITOKN, NTOKN, IQT) 
C* #      CALL SCAN (IBUF, IDAYR, NTOKN, IQT) 
C* #      CALL SCAN (IBUF, ITOKN, NTOKN, IQT) 
C* #      CALL SCAN (IBUF, IYR,   NTOKN, IQT) 
C* #      WRITE (LUOP, 1001)
C* #1001  FORMAT ("AND ENTERING TIME AS HR:MM (24-HOUR CLOCK) #_")
C* #      READ (LUOP, 1002) (IBUF(I), I=2,10) 
C* #1002  FORMAT (10A2) 
C* #      IBUF(1) = 5 
C* #      NTOKN = 0 
C* #      CALL SCAN (IBUF, IHR, NTOKN, IQT) 
C* #      CALL SCAN (IBUF, ITOKN, NTOKN, IQT) 
C* #      CALL SCAN (IBUF, MIN, NTOKN, IQT) 
C* #      IDCB(1) = 5 
C* #      IDCB(2) = 2HTM
C* #      IDCB(3) = 2H,1
C* #      IDCB(4) = 2H9 
C* #      M = INTV(MON, IERR) 
C* #      IDAY = INTV (IDAYR) 
C* #      IXX = MONDA(M) + IDAY 
C* #      JYR = INTV (IYR, IERR)
C* #      ILPYR = JYR - 4 * (JYR / 4) 
C* #      IF ((ILPYR .EQ. 0) .AND. (M .GT. 2)) IXX = IXX + 1
C* #      CALL ASCII (IDAYR, IXX) 
C* #      CALL ATACH (IDCB, IYR)
C* #      CALL ATACH (IDCB, ICOMA)
C* #      CALL ATACH (IDCB, IDAYR)
C* #      CALL ATACH (IDCB, ICOMA)
C* #      CALL ATACH (IDCB, IHR)
C* #      CALL ATACH (IDCB, ICOMA)
C* #      CALL ATACH (IDCB, MIN)
C* #      I = MESSS (IDCB(2), IDCB(1))
C* #      IBUF(1) = 0 
C* #      CALL DATE (IBUF)
C* #      CALL TIMEX(ITOKN) 
C* #      CALL TABS (IBUF, 20)
C* #      CALL ATACH (IBUF, ITOKN)
C* #      WRITE (LUOP, 1004) (IBUF(J), J=2,18)
C* #1004  FORMAT ("SYSTEM DATE AND TIME ARE ",20A2) 
C* #
C* #C****************************************************************** 
C 
C 
C 
C     CLEAR CONFIGURATION TABLES AND DRTXX. 
C 
C 
100   CONTINUE
C     GET TERMINAL TABLE LENGTH AND INVALIDATE THE DRTXX TABLE. 
      INDRT = 1 
      CALL JDRTG (INDRT,J)
C     SERIOUS ERROR IF PROBLEM OCCURS ON FIRST DRTXX LOCATION 
      CALL ABREG (IA,IB)
      IF (IB.NE.0) GOTO 8029
      CALL JDRTP (INDRT,0)
C 
C 
101   CONTINUE
C     CLEAR THE CONFIGURATION TABLES. 
      INDRT = INDRT + 2 
      J = J - 2 
      IF (J.LT.0) GOTO 104
      CALL JDRTG (INDRT,IFCLS)
      IF (IFCLS.EQ.0) GOTO 101
      IBUF = IFCLS
C 
102   ICL = IAND (IBUF(1),17777B) 
      LEN = 2 
      CALL EXEC (21,ICL,IBUF,LEN) 
      IF (IBUF(1).NE.IFCLS) GOTO 102
      IF (IBUF(1).EQ.0 .OR. LEN.EQ.0) GOTO 8080 
      GOTO 101
C 
104   CONTINUE
      INDRT = 0 
105   INDRT = INDRT + 1 
      CALL JDRTP (INDRT,0)
      CALL ABREG(IA,IB) 
      IF (IB.EQ.0) GOTO 105 
C 
C     SET THE DRTXX INDEX TO FIRST LOCATION FOR TERMINAL DATA.
      INDRT = 2 
C 
C     PROCESS WELCOM FILE 
C 
200   CALL OPEN (IDCB, IERR, NAME4, 1,0,ICRNW)
      IF (IERR .LT. 0) GO TO 8070 
      ILCNT = 1 
C 
4000  CONTINUE
C     RETURN HERE IF ERROR FOUND IN LINE. 
      ILCNT = ILCNT - 1 
C 
C     SEARCH FOR NEXT CONFIGURATION LINE IN WELCOM
4001  CALL READF (IDCB, IERR, IBUF(2), 50, LEN) 
C     END OF WELCOM?
      IF (LEN .LT. 0) GO TO 4099
      IBUF(1) = 2 * LEN 
      IF (IBUF(2) .NE. 2H:*) GO TO 4001 
      IF (LEN .LT. 2) GO TO 4001
      IF (IBUF(3) .EQ. 2H #) GO TO 250
      GO TO 4001
C 
C*********************************************************************
250   CONTINUE
C     INCREMENT LINE COUNT
      ILCNT = ILCNT + 1 
C     SCAN FOR <CLSTR> <SYS> <SES> <UNIT#> <DEV TYPE> 
C 
C     CLSTR 
C 
      NTOKN = 5 
      CALL SCAN (IBUF, ITOKN, NTOKN, IQT) 
      ICCLS = INTV(ITOKN, IERR) 
      IF (IERR .NE. 0) GO TO 800
      IF(ICCLS.GT.255.OR.ICCLS.LT.1) GOTO 8030
C 
      IDRT3(ILCNT) = ICCLS
C 
C     SYSTEM LU 
C 
      CALL SCAN (IBUF,ITOKN,NTOKN,IQT)
      ISYSL = INTV (ITOKN,IERR) 
      IF (IERR.NE.0) GOTO 800 
      IF (ISYSL.GT.255.OR.ISYSL.LT.1) GOTO 8030 
C 
C     SESSION LU
C 
C 
      CALL SCAN (IBUF,ITOKN,NTOKN,IQT)
      ISESL = INTV (ITOKN,IERR) 
      IF (IERR.NE.0) GOTO 800 
      IF (ISESL.GT. 63.OR.ISESL.LT.1) GOTO 8030 
C 
      IDRT1 (ILCNT) = ISYSL*400B + ISESL
C 
C     UNIT
C 
      CALL SCAN (IBUF,ITOKN,NTOKN,IQT)
      IUNIT = INTV (ITOKN,IERR) 
      IF (IERR.NE.0) GOTO 800 
      IF (IUNIT.GT.15.OR.IUNIT.LT.1) GOTO 8030
C 
C     DEVICE TYPE 
C 
      CALL SCAN (IBUF,ITOKN,NTOKN,IQT)
      IDVT = INTV (ITOKN,IERR)
      IF (IERR.NE.0) GOTO 800 
      IF (IDVT.GT.511.OR.IDVT.LT.1) GOTO 8030 
C 
      IDRT2 (ILCNT) = IDVT * 20B + IUNIT
C 
C     INCREMENT TERMINAL COUNT IF SESSION TERMINAL. 
      IF (IDVT.NE.1 .OR. IUNIT.NE.1 .OR. ISESL.NE.1) GOTO 4025
      ITCNT = ITCNT+1 
C 
C     SET TERMINAL SYSTEM LU IN DRTXX.
C         TERMINAL CLUSTER NUMBER IS PUT IN BY ANOTHER PROGRAM. 
      CALL JDRTP (INDRT,ISYSL)
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C     CLEAR TERMINALS STARTING CLASS NUMBER.
      CALL JDRTP (INDRT,0)
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C     TERMINAL TABLE LENGTH IN DRTXX IS NOT PUT IN DRTXX UNTIL
C      ALL OTHER DATA HAS BEEN PUT IN. TERMINAL TABLE LENGTH
C      SERVES AS FLAG THAT TABLE IS INVALID.
       GOTO 4030
C 
4025  CONTINUE
C     INCREMENT DEVICE COUNT FOR CLUSTER IF NOT SESSION TERMINAL. 
      IDCNT (ICCLS) = IDCNT (ICCLS) + 1 
C 
4030  CONTINUE
C     GOTO NEXT LINE
      GOTO 4001 
C 
C*******************************************************************
 4099 CONTINUE
C 
C     RELEASE WELCOM FILE 
      CALL CLOSE (IDCB,IERR)
      IF (IERR.LT.0) GOTO 8030
********************************************************************* 
C 
C     PREPARE /SLC. 
      CALL PURGE (IDCB,IERR,NSLC,2HRT,ICRNS   ) 
      IF (IERR.NE.0 .AND. IERR.NE.-6) GOTO 8060 
      CALL CREAT (IDCB,IERR,NSLC,24,4,2HRT,ICRNS) 
      IF (IERR.LT.0) GOTO 8060
C 
C******************************************************************** 
C 
C     PUT HEADER IN /SLC
C 
      CALL WRITF (IDCB,IERR,IH1(2),IH1       )
      IF (IERR.LT.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IH2(2),IH2       )
      IF (IERR.LT.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IH3(2),IH3       )
      IF (IERR.LT.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IH4(2),IH4       )
      IF (IERR.LT.0) GOTO 8060
C 
C******************************************************************** 
C     INITIALIZE CURRENT CLUSTER NUMBER.
      ICCLS  = 0
C     LOCATE THE NEXT CLUSTER TO GO INTO /SLC AND DRTXX.
 5005 CONTINUE
      ICCLS = ICCLS + 1 
C     CHECK IF ALL CLUSTERS HAVE BEEN SCANNED.
      IF (ICCLS.GT.255 ) GOTO 6700
C     IS THIS CLUSTER USED? 
      ILCLS = IDCNT (ICCLS) 
      IF (ILCLS .NE.0) GOTO 5010
      GOTO 5005 
 5010 CONTINUE
C     THIS CLUSTER IS USED. 
C     PUT CLUSTER PARAMETERS IN DRTXX.
      CALL JDRTP (INDRT,ICCLS)
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C 
      J = 2 * ILCLS 
      CALL JDRTP (INDRT,J)
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C 
C     PUT CLUSTER HEADER IN COMMAND FILE. 
C      IN THE FIRST HEADER PUT THE CLUSTER NUMBER AND 
C       THE NUMBER OF LINES TO NEXT CLUSTER.
       ICH1 ( 7) = 2H00 + 246*(ICCLS/100) + ICCLS/10
       ICH1 ( 8) = 2H0, + 256 * (ICCLS - 10*(ICCLS/10) )
C      REJECT LENGTH IF NOT VALID.
       IF (ILCLS.GT.63) GOTO 8170 
      ILTGO = ILCLS + 1 
      ICH1 ( 9) = 2H+0 + ILTGO/100
      ICH1 (10) = 2H00 + ILTGO + 246*(ILTGO/10) 
     C-2560*(ILTGO/100) 
      CALL WRITF (IDCB,IERR,ICH1(2),ICH1) 
      IF (IERR.LT.0) GOTO 8060
      ILTGO = ILTGO -1
C 
      CALL WRITF (IDCB,IERR,ICH2(2),ICH2) 
      IF (IERR.LT.0) GOTO 8060
      ILTGO = ILTGO - 1 
C 
C******************************************************************** 
C 
C     NOW PUT THE DATA FOR ALL DEVICES OF THE CURRENT CLUSTER 
C      INTO /SLC AND DRTXX. 
      ICCNT = 0 
C 
6000  CONTINUE
      ICCNT = ICCNT + 1 
C     GO TO END OF CLUSTER PROCESSING IF AT END OF DEVICES. 
      IF (ICCNT.GT.ILCNT) GOTO 6500 
C 
C     IS CURRENT DEVICE IN CURRENT CLUSTER? 
      IF (IAND(IDRT3(ICCNT),377B).NE.ICCLS) GOTO 6000 
C 
C 
C     DO NOT STORE ANY DATA FOR SESSION TERMINALS.
      IF(IDRT2(ICCNT).EQ.21B.AND.IAND(IDRT1(ICCNT),377B).EQ.1)GOTO6000
C 
C     PUT DEVICE TYPE AND UNIT INTO DRTXX 
      CALL JDRTP (INDRT,IDRT2(ICCNT)) 
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C 
C     PUT SESSION LU INTO DRTXX.
      CALL JDRTP (INDRT,IDRT1(ICCNT) )
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C 
C     PUT SL COMMAND INTO /SLC. 
      ISYSL = IDRT1(ICCNT)
      ISESL = IAND (ISYSL,377B) 
      ISYSL = ISYSL / 400B
C 
      ISL1(4) = 2H00 + ISESL/100
      ISL1(5) = 2H00 + ISESL + 246*(ISESL/10) - 2560*(ISESL/100)
C 
      ISL1(6) = 2H,0 + ISYSL/100
      ISL1(7) = 2H00 + ISYSL + 246*(ISYSL/10) - 2560*(ISYSL/100)
C 
      CALL WRITF (IDCB,IERR,ISL1(2),ISL1) 
      IF (IERR.NE.0) GOTO 8060
      ILTGO = ILTGO - 1 
C 
C     GO BACK AND SEARCH FOR NEXT DEVIC.
      GO TO 6000
C 
C************************************************************** 
6500  CONTINUE
C     PUT END OF CLUSTER DATA INTO /SLC AND DRTCXX
C 
C      AT THIS TIME THERE IS NO END OF CLUSTER DATA.
      GOTO 5005 
C 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
6700  CONTINUE
C 
C     END OF CLUSTERS. PUT FINAL DATA IN /SLC AND DRTXX.
C 
C     FIRST FINISH /SLC BEFORE VALIDATING DRTXX 
      CALL WRITF (IDCB,IERR,IT0(2),IT0) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT1(2),IT1) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT2(2),IT2) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT3(2),IT3) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT4(2),IT4) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT5(2),IT5) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT6(2),IT6) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT7(2),IT7) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT8(2),IT8) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT9(2),IT9) 
      IF (IERR.NE.0) GOTO 8060
      CALL WRITF (IDCB,IERR,IT10(2),IT10) 
      IF (IERR.NE.0) GOTO 8060
C 
C     CLOSE /SLC
      CALL CLOSE (IDCB,IERR)
      IF (IERR.NE.0) GOTO 8060
C 
C     NOW PUT END OF DATA FLAG IN DRTXX 
      CALL JDRTP (INDRT,0)
      CALL ABREG (IA,IB)
      IF (IB.NE.0) GOTO 8010
      INDRT = INDRT + 1 
C 
C     NOW VALIDATE DRTXX
      I = 2*ITCNT 
      CALL JDRTP (1,I)
      CALL ABREG(IA,IB) 
      IF (IB.NE.0) GOTO 8010
C 
C     ALL DONE. 
      GOTO 900
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
C 
C     ERROR REPORTING STARTS HERE.
C 
800   CONTINUE
      IXER = -1 
      CALL REIO (2,LUOP,IE1(2),IE1) 
      CALL REIO (2,LUOP,IBUF(2),LEN)
      GO TO 4000
C 
C     TROUBLE STORING MORE THAN ONE ENTRY IN DRTXX. 
8010  CONTINUE
      IXER = -2 
      CALL REIO (2,LUOP,IE2(2),IE2) 
C     CALL CLOSE (IDCB) 
      GOTO 900
C 
C 
8029  CONTINUE
      IXER = -3 
C     FIRST ATTEMPT TO ACCESS DRTXX FAILED. 
      CALL REIO (2,LUOP,IE3(2),IE3) 
      GOTO 900
C 
8030  CONTINUE
      IXER = -4 
C     OUT OF RANGE VALUE. 
      CALL REIO (2,LUOP,IE4(2),IE4) 
      CALL REIO (2,LUOP,IBUF(2),LEN)
      GOTO 4000 
C 
8060  CONTINUE
      IXER     = -5 
      IXER (2) = IERR 
C     FMGR ERROR ON FILE /SLC 
      J = 2H+0
      IF (IERR.GE.0) GOTO 8061
      IERR = -IERR
      J = 2H-0
8061  CONTINUE
      I = IERR/1000 
      IE5(10) = J + I 
      J = IERR - I*1000 
      IE5(11) = 2H00 + 246*(J/100) + J/10 
      IE5(12) = 2H0. + 256 * ( J - 10*(J/10) )
      CALL REIO (2,LUOP,IE5(2),IE5) 
      CALL CLOSE (IDCB) 
      GOTO 900
C 
8070  CONTINUE
      IXER     = -5 
      IXER (2) = IERR 
C     FMGR ERROR ON FILE WELCOM.
      J = 2H+0
      IF (IERR.GE.0) GOTO 8071
      IERR = -IERR
      J = 2H-0
8071  CONTINUE
      I = IERR/1000 
      IE7(10) = J + I 
      J = IERR - I*1000 
      IE7(11) = 2H00 + 246*(J/100) + J/10 
      IE7(12) = 2H0. + 256 * ( J - 10*(J/10) )
      CALL REIO (2,LUOP,IE7(2),IE7) 
      CALL CLOSE (IDCB) 
      GOTO 900
C 
8080  CONTINUE
C     ERROR IN RELEASING CLASS I/O BUFFERS AND NUMBERS. 
      CALL REIO (2,LUOP,IE8(2),IE8) 
      IXER = -7 
C     CONTINUE TO TRY TO RELEASE REMAINING BUFFERS. 
      GOTO 101
C 
8170  CONTINUE
      IXER  = -6
C     NUMBER OF DEVICES EXCEEDS LIMIT.
      CALL REIO (2,LUOP,IE6(2),IE6) 
C 
C     DONE
C 
900   CONTINUE
      CALL PRTN (IXER)
      IF (IXER.NE.0) CALL JDRTP(1,0)
      CALL EXEC(6)
      END 
      END$
                                                                                                                                                                                                                    