Trailing-Edge
-
PDP-10 Archives
-
decuslib20-07
-
decus/20-0170/froff.for
There is 1 other file named froff.for in the archive.  Click here to see a list.
      BLOCK DATA
  C     RENBR(RNOBLK/DECISION TREE FOR COMMAND RECOGNITION)
 C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
  C     THE VARIABLE NAMED LTRTAB CONTAINS THE TAB CHARACTER.
    C     THIS   VARIABLE   IS   DEFINED  IN  FROFF  USING  THE
    C     DECSYSTEM10/20  OCTAL  NOTATION,   A   DOUBLE   QUOTE
    C     FOLLOWED  BY  THE  12 CHARACTER NUMBER, SINCE THE TAB
    C     CHARACTER IS CONVERTED BY SOME VIDEO EDITORS  TO  THE
    C     CORRESPONDING  NUMBER  OF SPACES.  LTRTAB CAN INSTEAD
    C     BY DEFINED AS A SINGLE SPACE, EITHER 1H  OR  ' ',  ON
    C     SYSTEMS  WHICH  DO  NOT  SUPPORT  THE  TAB CHARACTER.
    C     LTRTAB IS DEFINED USING OCTAL NOTATION IN:
C      1.  THIS BLOCK DATA ROUTINE
    C      2.  THE ROUTINES NAMED REFLAG AND REPART OF THE
    C          DECSYSTEM10 USER INTERFACE
 C      3.  THE ROUTINE NAMED RNOASK OF THE GENERAL USER
   C          INTERFACE
   C     THE ESCAPE CHARACTER  USED  TO  CONTROL  THE  DIABLO,
    C     XEROX AND SPINWRITER TERMINALS IS DEFINED USING OCTAL
    C     NOTATION IN THE ROUTINE NAMED RNOLIN.
C
  C     THE DECISION TREE WHICH IS DEFINED BY THIS BLOCK DATA
    C     ROUTINE IS USED BY THE RUNOFF PROGRAM FOR RECOGNIZING
    C     COMMANDS.   THIS  DECISION  TREE  WAS PRODUCED BY THE
    C     KEYWRD PROGRAM WHICH WAS  WRITTEN BY THE SAME AUTHOR.
    C     THE 6 MAIN  ARRAYS IN THE KEYWRD PROGRAM MUST EACH BE
    C     DIMENSIONED TO 1800.  ABOUT 40 CPU MINUTES ARE NEEDED
    C     TO CONSTRUCT THIS PARSER.
  C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     ARRAYS USED IN DATA STATEMENTS TO CONSTRUCT KMDARG AND
   C     KMDBRK ARRAYS
          DIMENSION IAR001(100),IAR101(100),IAR201(50)
         DIMENSION IBR001(100),IBR101(100),IBR201(50)
         EQUIVALENCE (KMDARG(1),IAR001(1)),(KMDARG(101),IAR101(1)),
         1(KMDARG(201),IAR201(1))
          EQUIVALENCE (KMDBRK(1),IBR001(1)),(KMDBRK(101),IBR101(1)),
         1(KMDBRK(201),IBR201(1))
    C
  C     ARRAY CONTAINING CHARACTERS IN ORDER IN WHICH THESE
 C     ARE TO BE SORTED IN INDEX.  THIS ARRAY IS DIMENSIONED
    C     AT KNTFXD.
        DIMENSION LTRFXD(10)
        EQUIVALENCE (LTRCOD(1),LTRFXD(1))
    C
  C     COMMAND 1 IS FOR ALL AMBIGUOUS ABBREVIATIONS OF WHICH
    C     LEFT CHARACTERS HAVE BEEN DEFINED AS ANOTHER COMMAND
C     ***** INSERT KEYWRD OUTPUT HERE *****
C     2 B
    C     2 BL
   C     2 BLA
  C     2 BLAN
 C     2 BLANK
C     3 BR
   C     3 BREAK
C     4 C
    C     4 CE
   C     4 CEN
  C     4 CENT
 C     4 CENTE
C     4 CENTR
C     4 CENTER
    C     4 CENTRE
    C     WHEN THERE WAS AN .END FIELD COMMAND, EVEN PUTTING
  C     EFI IN EXPLICITLY HERE DID NOT CAUSE IT TO BE KNOWN
 C     5 END FILE
  C     6 F
    C     6 FI
   C     6 FIL
  C     6 FILL
 C     7 FL
   C     7 FLA
  C     7 FLAG
 C     7 FLAGS
C     7 FLAGS ALL
 C     8 FLAGS C
   C     8 FLAGS CAPITALIZE
    C     9 T
    C     9 TITLE
C     10 FLAGS CONTROL
 C     11 FLAGS LOWER CASE
   C     12 FLAGS QUOTE
   C     13 FLAGS SPACE
   C     14 FLAGS UPPER CASE
   C     15 ST
  C     15 SUBTITLE
 C     15 ST
  C     16 I
   C     16 IN
  C     16 IND
 C     16 INDE
C     16 INDEN
    C     16 INDENT
   C     17 INPUT WIDTH
   C     18 PG
  C     18 PAG
 C     18 PAGE
C     19 J
   C     19 JUSTIFY
  C     20 LEFT MARGIN
   C     21 TP
  C     21 TEST PG
  C     21 TEST PAGE
C     NOTE THAT .LO SELECTS .LOOP COMMAND
  C     22 LOWER CASE
    C     23 NO F
C     23 NO FILL
  C     24 NO FL
    C     24 NO FLA
   C     24 NO FLAG
  C     24 NO FLAGS
 C     24 NO FLAGS ALL
  C     25 NO FLAGS C
    C     25 NO FLAGS CAPITALIZE
C     26 NU
  C     26 NUM
 C     26 NUMB
C     26 NUMBE
    C     26 NUMBER
   C     26 NM
  C     26 NM PG
    C     26 NUMBER PG
C     26 NM PAGE
  C     26 NUMBER PAGE
   C     27 NO FLAGS CONTROL
   C     28 NO FLAGS LOWER CASE
C     29 NO FLAGS QUOTE
C     30 NO FLAGS SPACE
C     31 NO FLAGS UPPER CASE
C     32 NJ
  C     32 NO JUSTIFY
    C     INCLUDING EXPLICIT REFERENCE TO .NONUMBER CAUSES
    C     .NONUMBER FOOTNOTES NOT TO BE RECOGNIZED.
 C     33 NO N
C     33 NO NU
    C     33 NO NUM
   C     33 NO NUMB
  C     33 NO NUMBE
 C     33 NO NUMBER
C     33 NO NM
    C     FOLLOWING PREVENTS CONFLICT WITH .OMIT PAGE
    C     34 O
   C     34 OF
  C     34 OFF
 C     34 OFFS
C     34 OFFSE
    C     34 OFFSET
   C     35 HD
  C     35 H
   C     35 HE
  C     35 HEA
 C     35 HEAD
C     35 HEADE
    C     35 HEADER
   C     35 HEADERS
  C     35 HEADERS ON
    C     35 HEADI
    C     35 HEADIN
   C     35 HEADING
  C     35 HEADINGS
 C     35 HEADINGS ON
   C     36 P
   C     NOTE THAT PA IS ABBREVIATION FOR PAGING
   C     36 PARAGRAPH
C     37 NO HD
    C     37 NO HEADERS
    C     37 NO HEADINGS
   C     38 PS
  C     38 PG SIZE
  C     38 PAGE SIZE
C     38 PAPER SIZE
    C     38 PG LENGTH
C     38 PAGE LENGTH
   C     39 RE
  C     39 RES
 C     39 RESE
C     39 RESET
    C     40 RIGHT MARGIN
  C     41 S
   C     41 SK
  C     41 SKI
 C     41 SKIP
C     42 SP
  C     42 SPA
 C     42 SPAC
C     42 SPACI
    C     42 SPACIN
   C     42 SPACING
  C     43 CARRIAGE
 C     44 UPPER CASE
    C     45 FN
  C     45 FO
  C     45 FOO
 C     45 FOOT
C     45 FOOTN
    C     45 FOOTNO
   C     45 FOOTNOT
  C     45 FOOTNOTE
 C     45 FOOTNOTES
C     46 E F
 C     46 EN F
C     46 END F
    C     46 E FN
C     46 EN FN
    C     46 END FN
   C     46 EF
  C     46 ENF
 C     46 ENDF
C     46 EFN
 C     46 ENFN
C     46 ENDFN
    C     46 END FOOTNOTES
 C     47 FLAGS COMMENT
 C     48 FLAGS END COMMAND
  C     49 FN HEADER
C     49 FOOTNOTES HEADER
   C     50 NO FLAGS COMMENT
   C     51 NO FLAGS END COMMAND
    C     52 NO FN HEADER
  C     52 NO FOOTNOTES HEADER
C     53 CH
  C     53 CHAPTER
  C     54 SX
  C     54 SUBINDEX
 C     54 X
   C     54 INDEX
    C     .DX COULD BE .DISPLAY X OR .DISABLE X
C     55 DX
  C     55 DO X
C     55 DO I
C     55 DO IN
    C     55 DO IND
   C     55 DO INDE
  C     55 DO INDEX
 C     56 AX
  C     56 APPENDIX
 C     57 DISPLAY CH
    C     57 DISPLAY CHAPTER
    C     58 DISPLAY NM
    C     58 DISPLAY NUMBER
C     58 DISPLAY PG
    C     58 DISPLAY PAGE
  C     59 NMCH
C     59 NM CH
    C     59 NM CHAPTER
    C     59 NUMBER CH
C     59 NUMBER CHAPTER
C     60 DISPLAY AX
    C     60 DISPLAY APPENDIX
   C     61 NMAX
C     61 NM AX
    C     61 NM APPENDIX
   C     61 NUMBER AX
C     61 NUMBER APPENDIX
    C     62 NO OFFSET
C     FOLLOWING PREVENTS CONFLICT WITH .LOWER CASE
   C     63 LO
  C     63 LOOP
C     64 END LOOP
 C     65 SPLICE
   C     66 END SPLICE
    C     67 SIMULATE SPLICE
    C     68 LS
  C     68 LI
  C     68 LIS
 C     68 LIST
C     69 LE
  C     69 LS ELEMENTS
   C     69 LIST ELEMENTS
 C     70 ELS
 C     70 END LS
   C     70 END LIST
 C     71 NM LS
    C     71 NM LIST
  C     71 NUMBER LST
    C     71 NUMBER LIST
   C     71 NM ELEMENTS
   C     71 NUMBER ELEMENTS
    C     FOLLOWING PREVENTS CONFLICT WITH .DEBUG
   C     72 DE
  C     FOLLOWING PREVENTS CONFLICT WITH .DISPLAY LEVELS
    C     72 DISPLAY LE
    C     72 DISPLAY LIST ELEMENTS
   C     72 DISPLAY LS ELEMENTS
C     72 DISPLAY ELEMENTS
   C     73 COMMENT
  C     74 COLLECT FN
    C     74 COLLECT FOOTNOTES
  C     .DFN COULD BE .DISPLAY FOOT NOTE
C     IN AN EARLIER VERSION OF THIS PROGRAM IN WHICH
 C     THE ABBREVIATION FN OF FOOTNOTE WAS OBTAINED BY
C     SEPARATING THE WORDS FOOT AND NOTE, THE FOLLOWING
   C     SEQUENCE OF DEFINITIONS SERVED TO PREVENT .DFN
 C     FROM BEING RECOGNIZED AS DISPLAY FOOTNOTE
 C     *    75 DO F
C     *    75 DO FO
    C     *    75 DO FOO
   C     *    75 DO FOOT
  C     *    75 DO FOOT N
C     *    75 DO FOOT NO
    C     *    75 DO FOOT NOT
   C     *    75 DO FOOT NOTE
  C     *    75 DO FOOT NOTES
 C     *    169 DISPLAY FOOT NOTES
C     AN EXTREME AMOUNT OF TROUBLE WAS ENCOUNTERED WHEN
   C     I CHOSE TO HAVE FN AND FOOTNOTE APPEAR EXPLICITY,
   C     RATHER THAN HAVE THE WORDS FOOT AND NOTE SEPARATE.
  C     THE ONLY METHOD THAT I FOUND TO WORK WAS TO HAVE
    C     THE F AND N IN DISPLAY FN BE SEPARATED INTO 2 WORDS
 C     AS IN THE FOLLOWING
   C     *    75 DO FN
    C     *    75 DO FOOTNOTES
  C     *    169 DISPLAY F N
  C     *    169 DISPLAY FOOTNOTES
 C     75 DO FN
    C     75 DO FOOTNOTES
  C     76 FLAGS END FN
  C     76 FLAGS END FOOTNOTES
C     77 NO FLAGS END FN
    C     77 NO FLAGS END FOOTNOTES
  C     78 FLAGS UNDERLINE
    C     78 FLAGS UL
 C     79 NO FLAGS UNDERLINE
 C     79 NO FLAGS UL
   C     FOLLOWING PREVENTS CONFLICT WITH .APPENDIX
C     80 AP
  C     80 AUTO PARAGRAPH
C     FOLLOWING PREVENTS CONFLICT WITH .NUMBER APPENDIX
   C     81 NO AP
    C     81 NO AUTO PARAGRAPH
  C     NOTE THAT IFN IS ABBREVIATION FOR INDENT FOOTNOTES
  C     82 IMMEDIATE FN
  C     82 IMMEDIATE FOOTNOTES
C     83 SPACE FN
 C     83 SPACE FOOTNOTES
    C     84 INDENT LEVELS
 C     84 INDENT LV
C     85 LT
  C     85 LITERAL
  C     86 EL
  C     86 END LT
   C     86 END LITERAL
   C     87 RESET ALL
C     TS COULD ALSO SELECT TEST SPACING
    C     88 TAB S
    C     88 TAB STOPS
C     89 HL
  C     89 HD LEVEL
 C     89 HEADER L
 C     89 HEADER LEVEL
  C     90 NM LEVELS
C     90 NM LV
    C     90 NUMBER LEVELS
 C     90 NUMBER LV
C     91 STYLE HD
 C     91 STYLE HEADERS LEVELS
    C     91 STYLE LEVELS
  C     92 DISPLAY HEADERS LEVELS
  C     92 DISPLAY LEVELS
C     93 SPACE LEVELS
  C     93 SPACE HEADERS LEVELS
    C     94 PRINT FN
 C     94 PRINT FOOTNOTES
    C     95 NT
  C     95 NOTE
C     96 END NT
   C     96 EN
  C     96 END NOTE
 C     97 SPACE NT
 C     97 SPACE NOTES
   C     98 DEBUG
    C     99 TEST SPACE
    C     99 TEST SPACING
  C     100 EB BAR
  C     100 ENABLE BAR
   C     101 BEGIN B
 C     101 BEGIN BAR
    C     .EB COULD ALSO BE .ENABLE BAR
   C     102 EB
 C     102 END B
   C     102 END BA
  C     102 END BAR
 C     103 DB BAR
  C     103 DISABAR
 C     103 DISABLE BAR
  C     104 FLAGS TEXT
   C     105 NO FLAGS TEXT
C     106 FG
 C     106 FIG
C     106 FIGU
    C     106 FIGUR
   C     106 FIGURE
  C     107 FLAGS X
 C     107 FLAGS INDEX
  C     108 NO FLAGS X
   C     108 NO FLAGS INDEX
    C     109 SD
 C     109 STANDARD
C     110 FG DEFERRED
  C     110 FIGURE DEFERRED
   C     111 R
  C     111 RI
 C     111 RIG
C     111 RIGH
    C     111 RIGHT
   C     112 LEFT NO FILL
 C     113 CENTER NO FILL
    C     113 CENTRE NO FILL
    C     114 RIGHT NO FILL
C     115 LAST FORM
    C     116 FT
 C     116 FIRST TITLE
  C     DEFINING THE .SPG COMMAND TO  MEAN  .SUBPAGE  TOOK  A
    C     GREAT  DEAL  OF  FIDDLING.   THIS WAS DUE TO THE FACT
    C     THAT .SPG COULD ALSO MEAN .SHOW PAGE OR  .SKIP  PAGE.
    C     ALL  OF  MY  ATTEMPTS TO DEFINE .SUBPAGE WITH ENTRIES
    C     SIMILAR TO
  C          117 SPG
C          117 SUB PG
  C          117 SUB PAGE
C     RESULTED IN .SPG BEING RECOGNIZED AS .SPACING.  SINCE
    C     .SUBPAGE IS A SINGLE WORD, AND WOULD NEVER BE WRITTEN
    C     AS 2 WORDS, THE SOLUTION TO THIS  WAS  TO  WRITE  OUT
    C     EACH ABBREVIATION, AND THEN TO DECOUPLE THE RIGHT END
    C     OF EACH OF THESE ABBREVIATIONS FROM  THE  .SHOW  PAGE
    C     AND  .SKIP  PAGE COMMANDS BY ADDING AN EXTRA S TO THE
    C     END OF THE .SUBPAGE ABBREVIATIONS.  TO MARK  .SPG  AS
    C     BEING ENOUGH, RATHER THAN .SPGS WHICH THE USERS WOULD
    C     NEVER BE TOLD ABOUT, I PUT IN EXTRA ENTRIES ALSO  FOR
    C     THE  ABBREVIATIONS  WITHOUT  THE FINAL LETTER S.  THE
    C     .SPAG ENTRY WAS  PUT  IN  SINCE  THIS  SHOULD  BE  AN
    C     ABBREIVATION IF .SPAGE IS ALLOWED.
   C     117 SPG
C     117 SUPG
    C     117 SUBPG
   C     117 SPAG
    C     117 SPAGE
   C     117 SUPAGE
  C     117 SUBPAGE
 C     117 SPGS
    C     117 SUPGS
   C     117 SUBPGS
  C     117 SPAGES
  C     117 SUPAGES
 C     117 SUBPAGES
C     118 ES
 C     118 END SPG
 C     118 END SUBPAGE
  C     119 NM SPG
  C     119 NUMBER SPG
   C     119 NM SUBPAGE
   C     119 NUMBER SUBPAGE
    C     120 SPACE CH
C     120 SPACE CHAPTERS
    C     FOLLOWING PREVENTS CONFLICT WITH .SPACE X
 C     121 SPAX
    C     121 SPACE AX
C     121 SPACE APPENDIXES
  C     122 FIRST FORM FEED
   C     123 DISPLAY SECTION
   C     124 DISPLAY SPG
  C     124 DISPLAY SUBPAGE
   C     125 PR
 C     125 PERIOD
  C     126 NPR
C     126 NO PR
   C     126 NO PERIOD
    C     127 PA
 C     127 PAGING
  C     AN ENTRY OF .NPA HERE DID NOT WORK (BUG?)
 C     128 NO PA
   C     128 NO PAG
  C     128 NO PAGI
 C     128 NO PAGIN
C     128 NO PAGING
    C     129 FLAGS SX
C     129 FLAGS SUBINDEX
    C     130 NO FLAGS SX
  C     130 NO FLAGS SUBINDEX
 C     131 Y
  C     131 ENTRY
   C     132 PX
 C     132 PRINT X
 C     132 PRINT INDEX
  C     133 DISPLAY X
    C     133 DISPLAY INDEX
C     134 SPACE X
 C     134 SPACE INDEX
  C     135 FORCE PG
C     135 FORCE PAGE
   C     135 FP
 C     135 FPG
C     135 FPA
C     135 FPAG
    C     135 FPAGE
   C     135 F P
C     135 F PG
    C     135 F PA
    C     135 F PAG
   C     135 F PAGE
  C     136 SHOW PG
 C     136 SHOW PAGE
    C     137 OMIT PG
 C     137 OMIT PAGE
    C     138 FLAGS PG
C     138 FLAGS PAGE
   C     139 NO FLAGS PG
  C     139 NO FLAGS PAGE
C     140 LEFT PAGE
    C     140 LEFT PG
 C     141 RIGHT PAGE
   C     141 RIGHT PG
C     142 LEFT TOP TITLE
    C     143 RIGHT TOP TITLE
   C     144 LEFT TOP SUBTITLE
 C     144 LEFT TOP ST
  C     145 RIGHT TOP SUBTITLE
C     145 RIGHT TOP ST
 C     146 TOP TITLE
    C     147 TOP SUBTITLE
 C     147 TOP ST
  C     TST COULD ALSO BE TAB STOPS
C     147 TOP S T
 C     147 TOP ST
  C     148 LEFT BOTTOM TITLE
 C     149 RIGHT BOTTOM TITLE
C     150 LEFT BOTTOM SUBTITLE
   C     150 LEFT BOTTOM ST
    C     151 RIGHT BOTTOM SUBTITLE
  C     151 RIGHT BOTTOM ST
   C     152 BOTTOM TITLE
 C     153 BOTTOM SUBTITLE
   C     153 BOTTOM ST
    C     154 SPACE TOP
    C     155 SPACE BOTTOM
 C     156 ENABLE INDEX
 C     156 ENABLE X
C     156 EIX
C     .DIX COULD BE .DISPLAY X
   C     157 DIX
C     157 DISX
    C     157 DISABLE INDEX
C     157 DISABLE X
    C     158 RULE
    C     159 TERMINAL
C     160 TELL
    C     160 TE
 C     160 TEL
C     160 TL
 C     161 SKIP LEFT PAGE
    C     161 SKIP LEFT PG
 C     162 SKIP RIGHT PAGE
   C     162 SKIP RIGHT PG
C     163 SKIP PAGE
    C     163 SKIP PG
 C     164 FLAGS TABS
   C     165 NO FLAGS TABS
C     .N FOOT NOTES   COULD BE   .NO FOOT NOTES HEADER
    C     166 NUMBER FN
    C     166 NUMBER FOOTNOTES
  C     166 NM FN
   C     166 NM FOOTNOTES
 C     167 NO NUMBER FN
 C     167 NO NM FN
C     167 NO NUMBER FOOTNOTES
    C     167 NO NM FOOTNOTES
   C     PREVENT CONFLICT WITH .IMMEDIATE FOOTNOTES AND IF NOT
    C     168 IFN
C     168 INDENT FN
    C     168 INDENT FOOTNOTES
  C     169 DISPLAY F N
  C     169 DISPLAY FOOTNOTES
 C     170 DISPLAY R
    C     170 DISPLAY RE
   C     170 DISPLAY REF
  C     170 DISPLAY REFE
 C     170 DISPLAY REFER
C     170 DISPLAY REFERE
    C     170 DISPLAY REFEREN
   C     170 DISPLAY REFERENC
  C     170 DISPLAY REFERENCE
 C     170 DISPLAY REFERENCES
C     171 JO
 C     171 JOIN
    C     172 INDENT LISTS
 C     172 INDENT LS
    C     172 INDENT ELEMENTS
   C     173 OPEN SPLICE
  C     174 FN RULE
 C     174 FOOTNOTES RULE
    C     175 INITIAL PAGE
 C     175 INITIAL PG
   C     176 NO TITLE
C     177 NO ST
   C     177 NO SUBTITLE
  C     177 NO ST
   C     178 OFFSET LEFT PAGES
 C     178 OFFSET LEFT PG
    C     179 OFFSET RIGHT PAGES
C     179 OFFSET RIGHT PG
   C     180 U
  C     180 UL
 C     180 UNDERLINE
    C     181 LV
 C     181 LEVELS
  C     182 UNDERLINE SPACES
  C     182 UL SPACES
    C     .NULS COULD BE AN ABBREVIATION FOR .NUMBER LIST
C     WHICH ORIGINALLY HAD THE ALIAS .NUMBER LS
 C     TO REMOVE THIS CONFLICT, THE KEYWRD INPUT WAS
  C     CHANGED SO .NUMBER LS BECAME .NUMBER LST
  C     WITH THIS CHANGE, .NUMBER LS IS STILL RECOGNIZED
    C     AS .NUMBER LIST, BUT .NULS IS RECOGNIZED
  C     AS .NO UNDER LINE SPACE
    C     183 NULS
    C     183 NO UNDERLINE SPACES
    C     183 NO UL SPACES
 C     184 INDENT NOTES
 C     184 INDENT NT
    C     184 INT
C     185 LEFT EDGE
    C     185 LED
C     185 LEDG
    C     185 LEDGE
   C     186 RIGHT EDGE
   C     187 END OBJECT
   C     188 LETTER
  C     188 LTR
C     189 NO LEFT PAGES
C     189 NO LEFT PG
   C     190 NO RIGHT PAGES
    C     190 NO RIGHT PG
  C     191 MOVABLE FIGURE
    C     191 MOVABLE FG
   C     192 MOVABLE PAGES
C     192 MOVABLE PG
   C     193 FLAGS HALF UP
C     194 NO FLAGS HALF UP
  C     195 FLAGS HALF DOWN
   C     196 NO FLAGS HALF DOWN
C     197 STYLE INDEX
  C     197 STYLE X
 C     198 BOLD
    C     199 FLAGS BOLD
   C     200 NO FLAGS BOLD
C     201 SEQUENCE
C     202 SECTION
 C     202 SE
 C     203 NUMBER SECTION
    C     203 NM SECTION
   C     204 BULLET
  C     205 IGNORE SPLICE
C     206 VERSION
 C     207 IF
 C     208 IF NOT
  C     209 END IF
  C     210 ELSE
    C     211 FLAGS OVER STRIKE
 C     212 NO FLAGS OVER STRIKE
   C     213 BACKGROUND
   C     213 BG
 C     214 OUTLINE
 C     214 OL
 C     217 SQUEEZE
 C     218 FLAGS LETTER
 C     218 FLAGS LTR
    C     219 NO FLAGS LETTER
   C     219 NO FLAGS LTR
 C     220 PG WIDTH
C     220 PAGE WIDTH
   C     221 FACING PAGE
  C     221 FACING PG
    C
  C     FINAL STORAGE USED=1226, MOST USED=15075, LIMIT=18600
    C
  C     CHECKSUMS 2701,6822,1125, 123,6246
   C     DIMENSION MCHPNT(1226)
      DIMENSION MCHPN1(83),MCHP84(79),MCH163(79),
         1MCH242(78),MCH320(79),MCH399(76),MCH475(81),
        2MCH556(81),MCH637(95),MCH732(87),MCH819(82),
        3MCH901(85),MCH986(79),MC1065(83),MC1148(79)
          EQUIVALENCE (MCHPN1(1),MCHPNT(1)),
        1(MCHP84(1),MCHPNT(84)),(MCH163(1),MCHPNT(163)),
     2(MCH242(1),MCHPNT(242)),(MCH320(1),MCHPNT(320)),
         3(MCH399(1),MCHPNT(399)),(MCH475(1),MCHPNT(475)),
         4(MCH556(1),MCHPNT(556)),(MCH637(1),MCHPNT(637)),
         5(MCH732(1),MCHPNT(732)),(MCH819(1),MCHPNT(819)),
         6(MCH901(1),MCHPNT(901)),(MCH986(1),MCHPNT(986)),
         7(MC1065(1),MCHPNT(1065)),(MC1148(1),MCHPNT(1148))
   C     DIMENSION NOTPNT(1226)
      DIMENSION NOTPN1(86),NOTP87(80),NOT167(86),
         1NOT253(83),NOT336(82),NOT418(81),NOT499(81),
        2NOT580(84),NOT664(85),NOT749(87),NOT836(82),
        3NOT918(81),NOT999(84),NO1083(82),NO1165(62)
          EQUIVALENCE (NOTPN1(1),NOTPNT(1)),
        1(NOTP87(1),NOTPNT(87)),(NOT167(1),NOTPNT(167)),
     2(NOT253(1),NOTPNT(253)),(NOT336(1),NOTPNT(336)),
         3(NOT418(1),NOTPNT(418)),(NOT499(1),NOTPNT(499)),
         4(NOT580(1),NOTPNT(580)),(NOT664(1),NOTPNT(664)),
         5(NOT749(1),NOTPNT(749)),(NOT836(1),NOTPNT(836)),
         6(NOT918(1),NOTPNT(918)),(NOT999(1),NOTPNT(999)),
         7(NO1083(1),NOTPNT(1083)),(NO1165(1),NOTPNT(1165))
         DATA KNTPNT,KNTXTR/ 1226,    0/
       DATA MCHPN1/1229,98163,98794,69335,98788,68712,98793,
         12463,261361,261362,261363,261364,261365,261366,
     2262056,123944,123945,123946,123947,123969,261351,
        32477,2478,2479,2454,1254,243996,1256,1257,1258,1270,
     4187764,187731,3716,3717,3718,3681,250347,250348,
         5251116,123969,124657,188697,187694,4954,52808,52809,
     652810,53589,4959,4960,4961,4962,4976,4964,4976,65089,
         765669,1287,90859,90860,90861,90862,91202,90261,91809,
         891809,139608,1297,126452,127111,126571,88418,120321,
     9121427,88985,1305,67564,67606,1308,1309,1310,127111/
      DATA MCHP84/1312,1315,74221,73620,126571,193751,
         1192639,1319,1320,1321,1322,74220,73746,70069,88984,
      2207498,113986,164303,1370,71318,72338,208748,1395,
       3163191,192639,73746,126571,70069,88984,207498,113986,
         41112,1344,93036,67604,67605,67606,67607,67485,67485,
     567485,73746,74221,73620,126571,70069,70070,70577,
        688984,1361,92025,1096,207363,113986,67624,67625,
         767626,68600,1370,88488,88985,114004,88491,88492,
         888494,88494,88984,71318,71166,71320,71321,71892,
         972338,208748,208749,208750,208751,208752,208753/
          DATA MCH163/208754,208755,208756,208590,1395,151743,
     1153329,152765,1399,125327,125884,122890,56654,191589,
         2256443,192525,105702,1447,79668,86073,257670,117977,
     31413,1414,1415,1416,122890,730,192524,1420,56654,
        4125349,125350,125154,56654,256642,256443,1446,118018,
         5229677,1460,56654,160943,161522,144994,1461,125364,
      6125884,56654,7327,56442,57538,1443,256443,192525,
        71446,220,86907,106005,79668,85890,105522,118018,
         8118540,229677,229678,229679,229680,230466,1460,234,
      9144786,82119,145403,191412,7601,271407,271408,271409/
          DATA MCH242/271410,272300,9745,130313,7609,130310,
       1130311,130312,130313,135282,7615,7362,132402,1483,
       21484,1486,135282,150017,143522,8851,8852,8853,8854,
      39549,244852,10123,1545,1497,1558,132401,1568,259630,
     4170498,15470,1581,1505,201986,128368,55504,55497,
        555498,55499,55500,55501,55502,55503,55504,60798,
         6213850,165937,165938,166778,214690,259631,60798,
         7166817,213850,259634,165946,165947,165994,142690,
        89549,244852,10123,10499,1536,58359,12964,135282,
         9135283,135284,135285,135286,135298,1545,319,320/
          DATA MCH320/59597,94263,150017,150018,150019,150020,
     1150021,150022,1050,1557,331,332,333,239982,237952,
       260837,239982,237149,236811,132401,1568,268210,14225,
     3268216,14706,259630,1574,348,349,169326,15470,213850,
         4214690,1581,16702,159036,158283,1585,201986,128368,
      5143523,1589,95706,96470,18382,18387,131289,43313,
        643314,109585,43316,43317,43318,43319,43320,43330,
        743322,43323,43324,43330,109585,109585,109586,109587,
     8110359,44169,20019,254377,206527,1096,255607,256233,
     9251928,251929,251930,252527,101011,101012,101013/
         DATA MCH399/101014,101015,101016,101017,101018,1011,
     120038,20039,20040,20041,20045,66258,211684,206567,
       2211684,207147,1666,226784,215143,215144,215145,
     3215146,215858,256233,21283,215898,214725,21286,21310,
         4225768,211684,206567,206136,1666,226784,215897,
     5211684,1664,100614,1666,104178,211485,211689,211044,
     6103068,1672,446,447,226985,225768,215897,252670,
         721778,23766,210271,211041,24094,1684,141563,141564,
      8141565,141615,85125,227458,227459,226995,1693,1694,
      91695,1724,85304,231147,1744,231149,231406,177208/
         DATA MCH475/1190,223207,1723,227945,83916,83917,
         183926,104778,484,1155,77787,78442,28199,28203,83926,
     285303,104787,1744,230676,222087,1723,1724,1725,1726,
     31727,1728,185016,184553,184050,182786,28203,1734,
        4228168,85304,141615,141616,142190,25492,138381,
     5172952,1743,517,518,177654,177208,176688,175424,1750,
         61751,1752,1753,1754,1755,1756,234887,234357,234889,
      7234890,234891,235568,236459,1764,40044,32441,75447,
      873029,75447,73029,87757,204693,1773,111540,87908,
        987117,1777,117116,116565,99940,99941,100021,100015/
       DATA MCH556/28778,28869,30098,64476,64365,64470,
         1260858,64479,46170,40044,232769,41288,76879,1797,
        2157627,157869,155496,234000,218145,155412,117142,
        3217143,32481,225121,111540,87908,225124,225755,
     4110430,32488,32489,32490,32491,75447,73029,87757,
        5204693,1833,33074,1823,249903,147194,225375,75447,
       6601,623,73029,87757,204693,1833,111540,87908,88134,
      7110430,33074,1839,249903,1841,225756,146013,146630,
      8618,828,1847,100008,100021,75470,624,625,626,1115,
       9100015,629,630,633,74847,100020,634,888,73029,73030/
      DATA MCH637/73031,725,87757,641,642,643,644,645,1217,
         128868,28869,29377,30098,30099,30100,30101,30408,
         2246079,31357,1925,1885,1936,133628,1950,260857,
     3171725,1899,1892,1893,667,668,669,670,671,672,64479,
     4260858,64479,714,260861,30408,246079,680,1050,31357,
     531358,684,685,686,687,917,1916,62040,691,692,1017,
       633823,695,696,1156,1925,1926,1927,63278,702,703,704,
     7705,1050,95490,1935,1936,1937,1938,241209,239179,
        864518,715,726,241209,718,1224,238758,238038,133628,
      91950,269437,725,726,730,35084,1205,269443,0,35565/
        DATA MCH732/260857,734,735,736,737,738,739,740,1211,
     1171295,171296,171297,170553,36329,747,748,1211,1977,
     237561,1138,160263,754,1112,159510,1984,203213,1217,
      3129595,1017,1989,96933,97697,765,766,862,39241,39246,
         4132516,46170,45399,46172,46173,46174,46491,46176,
        546177,46616,40044,40045,782,783,784,785,0,2014,788,
      6232776,111550,87908,88134,87910,87117,110430,232778,
     741288,41294,41290,41291,41292,41293,41294,205920,
        876879,76880,76881,76882,1017,2037,157867,157868,
         931902,157870,157871,157056,155496,31902,154602/
      DATA MCH819/234000,2048,249903,975,147194,217179,
        12053,827,146841,1173,218369,217142,225373,225382,
        2225375,225376,225377,225378,225379,225380,225381,
        3225382,225754,42561,42562,42563,42564,42565,42566,
       4219272,220503,263429,219273,219281,168953,169231,
        5213127,169272,213129,213265,168099,263439,263440,863,
         6864,1211,219272,867,873,169271,220503,871,872,873,
       7874,875,876,1216,213406,45051,156709,22967,22984,
        8157009,47510,47511,47512,47543,45060,889,890,891,892,
         9922,154269,895,896,1050,22984,47539,47543,270859/
         DATA MCH901/154277,2130,2131,2132,116349,163076,
         147534,47669,161964,116349,163076,47539,47540,47541,
      247547,47543,1043,270859,920,921,922,0,161964,137122,
     348779,229395,48781,48782,48783,107709,137129,137130,
     4137131,137132,2163,2168,195058,107709,2167,2168,2169,
         52170,2171,2172,186243,186224,185277,184013,229172,
       61173,50032,953,954,955,1224,140835,958,959,960,1156,
     7174179,2190,964,965,178881,0,178883,177915,1186,
         8176651,51279,133743,248828,248829,1222,247604,247605,
         9247606,247765,167853,111657,1103,167856,168005,1109/
      DATA MCH986/83196,83197,83198,83199,83200,83201,994,
     11113,1135,51303,51304,51305,198546,198547,198679,
        2201173,199903,52538,52539,52540,2234,149496,191266,
      3148327,102852,0,115213,165530,115220,120035,1125,0,
      452553,52554,165532,51534,144626,148467,149539,144628,
         580782,115221,149496,149540,191266,148327,102935,
         6115213,165530,115220,120143,190098,164418,267299,
        7267300,267301,267302,1211,19450,134789,134790,134791,
         8134792,134793,0,190099,2280,2281,2282,112758,242831,
     9112766,241719,2287,2288,67370,144624,19595,144624/
        DATA MC1065/144625,144626,144628,144628,143559,66258,
         1149539,149540,149541,149542,149543,149544,149545,
        2149683,148467,191266,191267,191268,191269,191270,0,
      3148327,148328,148329,148330,148331,148332,1217,
     4102935,101841,1096,1097,1098,1099,1125,2328,111657,
      51103,1104,1105,1106,1107,1108,1109,1110,1120,1112,
       61113,1114,1115,0,2344,1118,198679,1120,1121,1217,
        7198719,120143,120144,1216,119019,1172,199903,199904,
     8199905,199906,1133,1172,83344,1136,1137,1138,1211,
       9190098,1141,0,0,12187,109121,109122,109123,109159/
        DATA MC1148/197469,197470,196320,196245,196246,
     1196247,196248,1156,0,2385,2386,26939,122634,122649,
      212234,196320,2392,2393,181536,180369,26936,26940,
        325767,26939,1173,1211,109151,122649,122650,122651,
       4121473,122653,1181,0,181552,109160,109193,181555,
        51187,1190,180369,180332,1191,1192,1211,222054,222072,
         62423,2424,2425,2426,2427,2428,2429,222072,55192,1205,
         71206,1207,1209,55197,1210,1211,0,224527,1214,1215,
       81216,1217,0,253981,253982,253983,253984,1223,1224,0,
     966258,160737/
          DATA NOTPN1/-1235,19637,1231,19632,25773,29455,
     1-19632,-2499,1243,3681,13497,8589,22086,18405,25767,
     26156,8609,11063,17198,-2454,8611,14750,1227,17178,
       313497,18439,14752,24583,24572,18437,15983,-23357,
        425509,22124,6135,1227,13497,25808,14724,14724,-2497,
     51227,-23357,-24540,-3750,1277,22086,22086,11043,6192,
         617246,24608,6190,22154,22154,6203,9875,1227,18472,
       714789,15128,6539,4085,24944,16017,-7362,-7430,-17178,
         8-5079,2527,1299,-2454,6212,2530,25767,14724,11159,
       917258,5060,23421,1318,2540,1311,14812,6223,19719/
         DATA NOTP87/29536,-2543,-11133,-29448,19740,14820,
       11322,30771,-1324,-1324,-3779,-6234,-7462,-9917,
     2-11145,-14827,-17282,-19737,-22192,-23420,-29448,
        329557,-1337,-2565,-3793,-6248,-7476,-9931,-11185,
        418529,-7480,-11166,17178,4908,6135,29448,-29448,
         529573,-1355,19759,29448,-2583,-3813,9816,1227,-6268,
     6-7499,17313,18541,-17178,-9954,-11185,17178,4908,
        76135,-14875,6281,14869,26994,11192,23463,24690,23463,
         8-6135,-17334,16104,25767,15951,2454,-19789,-22253,
       96135,7362,6135,22086,6135,17178,3681,6135,23313/
          DATA NOT167/-24455,6304,19802,25767,-6373,2629,1401,
     1-2454,7538,11222,7540,18293,14908,11224,18587,23537,
     26135,17385,1419,2643,14913,6324,-2645,1227,-11280,
       35112,7556,-2651,1227,22086,-7560,-11243,7362,-14925,
     4-17380,-18608,-23313,7567,24749,22086,23522,19868,
       5-2665,1227,-7577,11256,17392,18405,-11261,7579,17178,
         6-14949,11265,23534,24540,18628,23537,24540,-17405,
       719422,-18637,2454,12270,6135,3681,-23550,19868,8824,
     814724,25767,-29448,-7729,1472,3925,12176,18311,9722,
     915857,8835,11304,8841,26018,22337,6386,-4908,14978/
       DATA NOT253/14724,17433,22344,23572,24799,-5167,
         1-7622,-24540,15004,1492,8854,23578,-1493,-2721,-3949,
         2-6404,-10087,1560,-11315,-14997,-18679,-19907,-21135,
         3-23590,-24901,1506,6135,17459,18705,18696,24829,
         417467,18694,24829,6424,23602,-10106,-22086,22381,
        53975,7268,26900,27290,-10113,-19930,-22385,-23313,
       619935,2408,8589,24844,-1532,-2760,-3992,1535,18405,
      716261,17178,-5225,6135,7362,6135,22086,22086,-6457,
      817498,5228,-4002,-7362,-7691,18731,22412,16277,-7362,
         96135,6135,-10155,1562,15057,7695,-5242,-25767,6471/
       DATA NOT336/-5245,-25767,19632,-11383,-15069,6477,
       118748,24884,-3681,-18751,-19982,2408,8589,6135,
     2-21210,-22439,25767,-23670,19987,26123,29448,-24901,
     31586,6495,11043,-26133,15087,17542,19997,-3681,
     4-29448,-10202,5278,-14724,6515,1608,5289,6511,22467,
     523694,11424,17563,8974,23698,15105,-15109,6135,26994,
         66135,-18405,-11495,7754,17567,18795,-17178,18405,
        78985,18172,19399,23080,16356,16355,6539,5312,11447,
      81631,24944,6539,-7362,17613,5325,6548,17588,24951,
       929859,-6547,-7777,-6549,-7777,-15140,-17178,11465/
        DATA NOT418/25673,12176,2360,15857,18828,20060,1652,
     19015,26218,24991,24969,-6565,-7794,18273,-15157,
         2-17612,-20083,-6571,-7800,18273,-15168,6575,11485,
       323313,23756,26994,-17627,18853,24540,6135,24540,
         4-20082,-23764,-28221,-12726,18860,11043,25767,-15246,
         51688,23773,25000,-7362,6614,5373,8589,6135,7831,
         625017,-2932,18906,15194,25016,18877,25014,7325,
     7-23788,-24540,27471,-2932,-6647,11528,23795,25030,
       825030,6135,22086,18894,18892,28709,-3681,23804,-6135,
         925034,18898,22605,27489,-2959,18907,25041,25042/
          DATA NOT499/18907,16453,-23817,-23817,25509,-24540,
      1-4187,-6644,5416,14724,-7874,18405,22086,-16464,
         2-17692,-20147,-24540,18924,20151,-23834,-23834,25509,
         3-24540,-16487,18934,27523,1756,2983,15253,6664,-7897,
         49120,11043,8589,25767,22086,-19632,-18020,12808,
         516500,1767,4222,-1769,-4224,-6679,-7907,-15318,6682,
     611591,23922,18980,25092,7325,-1783,20187,1227,26397,
     7-7926,11601,15283,17738,19082,18967,27557,-10552,
        8-10381,-12836,-15291,-17746,-18974,-20205,1799,8589,
     96953,-22660,-24143,20208,25118,11043,26386,15309/
         DATA NOT580/6716,11625,23897,20425,27835,16549,3043,
     16724,22675,-1817,-4272,-6727,-7955,-15318,-20227,
        2-23313,6732,20248,17777,-1829,20747,19632,-4284,
         3-6739,-7967,-15334,6742,11651,23922,26994,-20243,
        4-23313,6748,20248,1842,8589,25767,2454,19632,-1862,
      520259,1849,19632,6135,17178,4908,11043,26398,25170,
      619035,-19632,30080,-19632,1227,22086,-4320,9816,1227,
         719632,-6781,14724,6135,15951,6135,17178,24540,-8132,
     811692,15836,15387,1880,9242,23966,-1881,-3109,-4337,
     9-6792,-10475,1938,-11703,-15385,-19067,-20377,17842/
      DATA NOT664/19082,19078,25212,17850,19077,25212,6807,
         123985,-9816,27668,-10492,6135,-23313,-1905,-3135,
        218405,14724,-4378,1915,19632,11043,24540,1227,14724,
     318405,16644,15951,6135,17178,17178,24540,22086,18405,
         4-6842,17878,5608,-4387,18405,15951,15951,1227,17178,
     5-7362,-10537,1940,15435,8073,-5620,-25767,6851,1227,
     64908,-5627,18405,28221,-25767,19632,-11765,-15456,
       76862,24540,24540,6135,19134,29428,25271,22086,-3681,
     8-19146,27730,6871,22822,-23313,24540,22086,11043,
        913497,-20377,2408,8589,6135,-21608,25767,18405,24540/
          DATA NOT749/-24069,20384,1227,26522,2454,11043,29448,
         1-25301,1986,2454,6135,29448,-26536,15487,17945,4908,
     26135,22086,20400,-3681,-29448,-10595,5680,6135,1227,
     34908,6911,11043,17178,8589,-13056,25767,23313,24540,
     411043,7362,30675,-15520,6925,8151,27789,11835,23313,
     524107,24540,27789,-19632,-17982,16749,26570,16754,
       63257,6938,22889,-7362,-19214,7362,7362,23313,6135,
       7-20451,2043,8589,6948,11043,17178,8589,6952,9407,
        822086,-22906,-24143,6958,3681,20456,25365,25767,2454,
         920461,1227,24540,-25371,-25767,15557,18019,5749,6976/
          DATA NOT836/22927,15565,11884,18019,6976,-23313,
         1-19283,8212,8210,24161,6983,25388,-15573,-22086,
         215577,6987,-19632,16806,12176,20492,2084,6994,18172,
     39583,26632,24540,14724,11043,17178,-15592,7009,8236,
     4-20501,-22963,11917,9463,10690,25414,-19632,2408,
        58589,-23313,-20556,2120,9472,7017,11941,20519,7021,
      622972,-23313,22984,1227,8589,22086,1227,19632,7032,
      722086,11043,18405,9490,-15623,-24213,-28221,22993,
       811948,18083,25445,-8268,-11966,24222,11043,30358,
        9-8273,-11955,-15640,6135,17178,8589,-24231,11043/
         DATA NOT918/-29144,11043,4908,24540,9816,-29448,
         1-23057,7066,5835,24243,7065,25470,-1227,11980,9528,
      210755,25479,-3403,19350,26705,-2166,-3403,19351,
         325485,25486,19351,16897,-24261,-24261,25509,-24540,
      4-7086,4908,-16907,1227,22086,8589,11043,-18139,19363,
         5-7362,11043,14724,-20594,-24540,19372,20599,-24283,
      625509,-24283,25509,25767,-24540,-24456,5881,7115,
        74657,24540,20859,25767,6135,17178,10802,5890,7118,
       819390,29354,-15857,12038,16944,26761,15718,2221,
         925534,7129,18172,-23313,14500,12041,20630,-15725/
         DATA NOT999/7268,8495,-20634,-22086,20671,2252,4703,
     17153,-2235,-3463,-4691,-8374,18273,-10829,-12057,
        2-15739,-18215,19422,24540,12067,17178,5929,8589,9612,
         330472,-2257,9615,15752,7272,-2257,20747,-3485,-4713,
     4-8395,-10850,-12078,-15760,-18215,-25578,-29448,
         521903,25767,6135,6135,31902,25599,2278,17178,4908,
       61227,22086,4908,19457,31730,15779,7190,-10872,-12100,
         7-15782,-29448,26837,3518,12105,20695,24540,19632,
        82295,8589,6135,8589,23313,30519,-2307,20711,19632,
       96135,17178,4908,11043,29448,29448,-3540,18405,24540/
      DATA NO1083/24540,18405,15951,-4774,9816,1227,19632,
     124540,6135,22086,-8462,18273,18405,18405,24540,17178,
         218405,-10927,6010,7243,2335,6016,7243,23194,24421,
       3-14724,6135,26994,-12159,17178,4908,6135,29448,
     4-15847,7257,8481,28116,6135,14724,-19632,-18305,
         519531,24540,24540,-20760,-23220,12176,9722,10949,
        625673,-19632,-24452,19632,14724,11043,3681,-25682,
       718405,19632,-29448,-25733,2375,3600,-23313,24540,
        87297,15875,14724,23243,15951,11043,17178,1227,14724,
     924472,25699,-20792,-23313,19632,12206,15888,19573/
        DATA NO1165/20798,-24502,25725,20803,2397,8589,
     1-20806,2408,8589,-24502,20814,1227,3681,7314,11043,
      217178,8589,25725,18405,19632,26955,2454,24540,-24540,
         3-24540,11043,24540,14724,-26985,15919,18381,6120,
        47347,23298,15936,12255,18390,7347,20840,20839,7342,
      523293,-3681,-4893,1227,23313,6135,-23313,19632,1227,
     63681,6135,23313,-28219,6135,22086,23313,11043,18405,
     717178,-30674,-30675/
  C     ***** INSERT KEYWRD OUTPUT HERE *****
C
  C     KMDARG = SPECIFIES THE TYPE OF ARGUMENT LIST FOR EACH
    C              COMMAND.   FOR  EACH  TYPE, THE NBEGIN ARRAY
    C              POINTS TO THE START  OF  THE  ARGUMENT  LIST
    C              DESCRIPTION IN THE NARGMT ARRAY.
 C            = 0, NO ARGUMENTS ALLOWED.
    C            = 1, 2 OR  3,  THIS  NUMBER  OF  INTEGERS  CAN
    C              APPEAR IN ARGUMENT LIST.
    C            = 4, TEXT  STRING  EXTENDING  THROUGH  END  OF
    C              LINE.
   C            = 5, NOT USED
  C            = 6, SINGLE CHARACTER.
   C            = 7, DISPLAY TYPE (D, O, H, RU,  RL,  RM,  LU,
    C              LL, OR LM).
  C            = 8, CHARACTER, DISPLAY TYPE, CHARACTER.
C            = 9, NUMBER, MULTIPLE CHARACTERS.
  C            = 10, UNQUOTED TEXT STRING REGARDLESS OF
C                  IF FLAG TEXT COMMAND HAS BEEN ISSUED
   C            = 11, ALLOW UP TO 32 INTEGERS
 C            = 12, ALLOW NUMBER THEN TEXT THROUGH END OF
  C              LINE.
   C            = 13, ALLOW UP TO 6 NUMBERS.
  C            = 14, ALLOW UP TO 6 DISPLAY TYPES.
 C            = 15, ALLOW UP TO 4 NUMBERS.
  C            = 16, ALLOW UP TO 3 QUOTED TEXT STRINGS
 C            = 17, CHARACTER, DISPLAY TYPE, CHARACTER, NUMBER
  C            = 18, QUOTED TEXT STRING, NUMBER, NUMBER
C            = 19, QUOTED TEXT STRING
 C     NBEGIN = SPECIFIES   START   IN   NARGMT   ARRAY   OF
    C              DESCRIPTION OF EACH TYPE OF ARGUMENT LIST.
 C     NARGMT = SPECIFIES TYPE OF ARGUMENTS ALLOWED FOR EACH
    C              ARGUMENT LIST TYPE.  IF THIS ARGUMENT TYPE
 C              IS TO BE REPEATED, THEN HUNDREDS DIGITS
    C              SPECIFIES NUMBER OF TIMES.
  C            = 0, END OF DESCRIPTION OF ARGUMENT LIST.   NO
    C              ADDITIONAL ARGUMENTS ALLOWED.
    C            = 1, INTEGER ARGUMENT.
   C            = 2, SINGLE CHARACTER ARGUMENT.
    C            = 3, DISPLAY TYPE ARGUMENT.
   C            = 4, MULTIPLE CHARACTER QUOTED TEXT STRING IF
C              FLAGS TEXT COMMAND IS ACTIVE, OR TEXT STRING
    C              EXTENDING THROUGH END OF LINE OTHERWISE.
   C            = 5, UNQUOTED TEXT STRING REGARDLESS OF
 C              IF FLAG TEXT COMMAND HAS BEEN ISSUED
  C            = 6, QUOTED TEXT STRING REGARDLESS OF
   C              IF FLAG TEXT COMMAND HAS BEEN ISSUED
  C
        DATA IAR001/  0,  1,  0,  2,  0,  0,  0,  6,  4,  6,
     1              6,  6,  6,  6,  4,  1,  1,  0,  0,  1,
     2              1,  0,  2,  0,  0,  1,  0,  0,  0,  0,
     3              0,  0,  0,  1,  0,  3,  0,  2,  0,  1,
     4              1,  1,  6,  0,  1,  0,  6,  6,  4,  0,
     5              0,  0,  4,  4,  4,  4,  7,  7,  1,  7,
     6              1,  0,  1,  0,  1,  0,  0,  9,  0,  0,
     7              2,  8, 10,  0,  0,  6,  0,  6,  0,  3,
     8              0,  0,  3,  1,  2,  0,  0, 11, 12, 13,
     9             15, 14,  2,  0,  4,  0,  3, 10,  1,  0/
      DATA IAR101/  0,  0,  0,  6,  0,  1,  6,  0,  1,  1,
     1              2,  2,  2,  2,  0,  0,  0,  0,  1,  3,
     2              3,  0,  0,  7,  0,  0,  0,  0,  6,  0,
     3              4,  4,  7, 15,  0,  0,  0,  6,  0,  0,
     4              0, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     5             16, 16, 16,  3,  1,  0,  0, 18,  1,  4,
     6              0,  0,  1,  0,  0,  1,  0,  1, 17, 17,
     7              0,  1,  0,  6,  0,  0,  0,  1,  1,  0,
     8             12,  0,  0,  3, 18, 18,  0, 18,  0,  0,
     9              1,  1,  6,  0,  6,  0,  2,  0,  0,  0/
      DATA IAR201/ 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     1              0,  0, 18, 18,  0,  3, 11,  6,  0,  1,
     2              0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     3              0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     4              0,  0,  0,  0,  0,  0,  0,  0,  0,  0/
C
        DATA NBEGIN/  1,  3, 20,  5,  4,  7,  9, 11, 15, 18,
     1             22, 24, 27, 29, 31, 33, 35, 40, 43/
          DATA NARGMT/101,  0,201,  0,  4,  0,  2,  0,  3,  0,
     1              2,  3,  2,  0,  1,  6,  0,  5,  0,301,
     2             0,3201,  0,  1,  4,  0,601,  0,603,  0,
     3            401,  0,306,  0,  2,  3,  2,  1,  0,  6,
     4           1001,  0,  6,  0/
    C
  C     KMDBRK = SELECTS THE SEQUENCE OF OPERATIONS TO BE
   C              APPLIED BEFORE RNOSET IS CALLED TO TURN ON
 C              THE SWITCHES FOR THE COMMAND.  KMDBRK IS A
 C              POINTER INTO THE NXTPNT ARRAY, WHICH IN TURN
    C              POINTS TO THE FIRST LOCATION IN THE NXTCMD
 C              ARRAY DESCRIBING WHAT IS TO BE DONE.
  C            = 0, APPLY COMMAND WITHOUT BREAKING TEXT.
    C            = 1, BREAK TEXT WITHOUT GENERATING SHADOW.
   C              APPLY NEW COMMAND.
C            = 2 (CHAPTER, APPENDIX, FORCE PAGE COMMANDS).
C              BREAK TEXT.
  C              APPLY END NOTE COMMAND.
C              APPLY END FOOTNOTE COMMAND.
 C              DUMP  FOOTNOTES  UNLESS  THESE   ARE   BEING
    C              DEFERRED.
    C              PRINT BOTTOM OF PAGE
   C              APPLY NEW COMMAND.
C            = 3 (DO FOOTNOTE, DO INDEX COMMANDS)
    C              BREAK TEXT.
  C              APPLY END NOTE COMMAND.
C              APPLY END FOOTNOTE COMMAND.
 C              TURN OFF DEFERRED FOOTNOTES.
C              DUMP FOOTNOTES INCLUDING  THOSE  WHICH  WERE
    C              DEFERRED.
    C              PRINT BOTTOM OF PAGE
   C              TURN DEFERRING OF FOOTNOTES BACK ON  IF  WAS
    C              ON BEFORE.
   C              APPLY NEW COMMAND.
C            = 4, (RESTORE, RESTORE ALL, END OF FILE
 C              COMMANDS)
    C              SAME AS KMDBRK=3, EXCEPT THAT A DO INDEX IS
C              PERFORMED.
   C            = 5, (THE VARIOUS PAGE COMMANDS
    C              BREAK TEXT
   C              WRITE OUT FOOTNOTES ON CURRENT PAGE IF ANY
 C            = 6, (PRINT FOOTNOTE, PRINT INDEX COMMAND)
   C              SAME AS KMDBRK=3, EXCEPT THAT BOTTOM OF PAGE
    C              IS NOT PRINTED AFTERWARDS.
  C            = 7, (FOOTNOTE)
C              LOGIC TO INSERT FOOTNOTE NUMBER INTO TEXT
  C            = 8, (END LITERAL)
  C              BREAK TEXT GENERATING REST OF SHADOW IF CHANGING
C              BACK TO FILL MODE.
C              APPLY NEW COMMAND.
C            = 9, (END FOOTNOTE)
 C              BREAK TEXT
   C              APPLY END NOTE COMMAND
 C            = 12, (FILL, VARIOUS SHADOWS, END SHADOW)
    C              BREAK TEXT GENERATING REST OF SHADOW.
 C              APPLY NEW COMMAND.
C
        DATA IBR001/  0,  1,  1,  1,  4, 12,  0,  0,  0,  0,
     1              0,  0,  0,  0,  0,  1,  0,  5,  1,  1,
     2              1,  0,  1,  0,  0,  0,  0,  0,  0,  0,
     3              0,  1,  0,  1,  0,  1,  0,  1,  4,  1,
     4              1,  1,  0,  0,  7,  9,  0,  0,  0,  0,
     5              0,  0,  2,  0,  3,  2,  1,  1,  0,  1,
     6              0,  1,  0,  0,  0,  0,  0,  1,  1,  1,
     7              0,  1,  0,  0,  3,  0,  0,  0,  0,  0,
     8              0,  0,  0,  0,  1,  8,  4,  0,  1,  0,
     9              0,  0,  0,  6,  1,  1,  0,  0,  1,  0/
      DATA IBR101/  0,  0,  0,  0,  0,  1,  0,  0,  1,  1,
     1              1,  1,  1,  1,  1,  0,  5,  5,  0,  0,
     2              0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     3              0,  6,  0,  0,  2,  0,  0,  0,  0,  5,
     4              5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     5              0,  0,  0,  0,  0,  0,  0, 11,  0,  0,
     6              5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
     7              0,  0,  0,  0,  5,  0,  0,  1,  1,  0,
     8              1,  0,  0,  0, 12, 12, 12,  1,  0,  0,
     9             10,  0,  0,  0,  0,  0,  0,  0,  0,  0/
      DATA IBR201/  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     1              0,  0, 12, 12,  0,  0,  0,  0,  0,  1,
     2              5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     3              0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     4              0,  0,  0,  0,  0,  0,  0,  0,  0,  0/
C
        DATA NXTPNT/1,3,11,24,38,43,51,57,62,65,69,75/
 C
  C     NXTCMD = -4, FORCE PAGE
    C            = -3, PAGE
C            = -2, WRITE ALL FOOTNOTES TO THE DOCUMENT FILE
    C              UNLESS THE FOOTNOTES ARE BEING DEFERRED.
   C            = -1,  WRITE  CURRENT  LINE  OF  TEXT  TO  THE
    C              DOCUMENT FILE OR CURRENT LINE OF FOOTNOTE TO
    C              THE SCRATCH FILE.  EQUIVALENT  TO  A  .BREAK
    C              COMMAND.
C            = 0, CALL RNOSET TO TURN ON THE SWITCHES FOR
 C              THE CURRENT COMMAND.  NO FURTHER OPERATIONS
C              ARE TO BE PERFORMED FOR THE CURRENT COMMAND.
    C            = GREATER THAN ZERO BUT LESS THAN 501, SET THE
    C              SWITCHES INDICATED BY THE COMMAND HAVING THE
    C              VALUE INDICATED BY THIS VALUE IN THE  NXTCMD
    C              ARRAY.
  C            = 501, TURN OFF  DEFERRED  FOOTNOTES  SO  THAT
    C              THESE CAN BE GENERATED.
C            = 502, TURN DEFERRED FOOTNOTES BACK ON IF THEY
    C              WERE ON BEFORE THE 501 COMMAND WAS GIVEN.
  C            = 504, SIMULATE DO INDEX COMMAND WITHOUT ANY
 C              ARGUMENTS.  USED INSTEAD OF DO INDEX COMMAND
    C              DIRECTLY SINCE PREVIOUS COMMAND MIGHT HAVE
 C              LEFT ARGUMENTS LYING AROUND.
C            = 510, FOR THE VARIOUS PAGE COMMANDS, INSERT
 C              ALL MOVABLE PAGES NOT YET APPLIED.
    C
        DATA NXTCMD/
     1-6,0,
       2-1,96,46,-1,-2,-3,-4,0,
         3-1,96,46,-1,-2,-3,-4,501,-2,-3,-4,502,0,
       4-1,96,46,-1,-2,-3,-4,501,-2,-3,-4,502,504,0,
        5-1,-3,510,0,0,
        6-1,96,46,-1,501,-2,502,0,
       7505,-1,506,-5,507,0,
       8513,-6,0,-1,0,
        9-1,96,0,
         1508,-3,509,0,
         2-1,511,-5,512,-1,0,
        3-1,0,
       40,0,0,0,0/
  C
        DATA LTRABC /1HA,1HB,1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,
         1 1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,1HU,1HV,1HW,
         2 1HX,1HY,1HZ/
          DATA LWRABC /1Ha,1Hb,1Hc,1Hd,1He,1Hf,1Hg,1Hh,1Hi,1Hj,
         1 1Hk,1Hl,1Hm,1Hn,1Ho,1Hp,1Hq,1Hr,1Hs,1Ht,1Hu,1Hv,1Hw,
         2 1Hx,1Hy,1Hz/
          DATA LTRDGT /1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9/
          DATA LTRMNS,LTRPLS/1H-,1H+/
      DATA LTRSPA,LTRTAB/1H ,"045004020100/
      DATA LTRCOM,LTRRUL,LTRBAR/1H,,1H_,1H|/
          DATA LTRFLG/1H;,1H<,1H.,1H$,1H\,1H_,1H!,1H#,1H^,1H&,
     11H!,1H',1H>,1H>,1H>,1H|,1H/,1H>/
      DATA LTRPAG/1HP,1Ha,1Hg,1He,1H /
      DATA LTRIND/1HI,1HN,1HD,1HE,1HX/
      DATA LWRIND/1HI,1Hn,1Hd,1He,1Hx/
      DATA LTRCPT/1HC,1HH,1HA,1HP,1HT,1HE,1HR,1H /
         DATA LWRCHA/1HC,1Hh,1Ha,1Hp,1Ht,1He,1Hr,1H /
         DATA LTRAPP/1HA,1HP,1HP,1HE,1HN,1HD,1HI,1HX,1H /
          DATA LWRAPP/1HA,1Hp,1Hp,1He,1Hn,1Hd,1Hi,1Hx,1H /
          DATA LTRTYP/1HD,1HO,1HH,1HR,1HL,1HU,1HL,1HM/
         DATA LWRTYP/1Hd,1Ho,1Hh,1Hr,1Hl,1Hu,1Hl,1Hm/
         DATA LTRFXD/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9/
      DATA KNTFXD/10/
  C
  C     2 SPACES ARE NEEDED TO RIGHT OF FOLLOWING IN FILL
   C     MODE.  THESE VARIABLES ARE NOT REFERENCED OTHERWISE.
      DATA LTRTWO/1H:,1H!,1H.,1H?/
    C
  C     ARRAY DIMENSIONS
 C     LMTBGN = DIMENSION  OF  LTRBGN  AND  MSKBGN   ARRAYS.
    C              THESE  HOLD  THE  LINE OF TEXT READ FROM THE
    C              INPUT FILE.
  C     LMTFNR = DIMENSION OF MSKFNR ARRAY.  THIS  HOLDS  THE
    C              FOOTNOTE HEADER.
  C     LMTMID = DIMENSION  OF  LTRMID,  MSKMID,  LTRFTN  AND
    C              MSKFTN  ARRAYS.   LTRMID  AND  MSKMID HOLD A
    C              LINE OF TEXT AS IT IS  BEING  FORMATTED  FOR
    C              OUTPUT.  LTRFTN AND MSKFTN HOLD THE CONTENTS
    C              OF  THE  LTRMID   AND   MSKMID   ARRAYS   IF
    C              CONSTRUCTION  OF  AN  OUTPUT  LINE  MUST  BE
    C              INTERRUPTED TO ALLOW THE SPECIFICATION OF  A
    C              FOOTNOTE.
    C     LMTTTL = DIMENSION OF MSKTTL ARRAY.  THIS  HOLDS  THE
    C              PAGE TITLE.
  C     LMTWRK = DIMENSION OF LTRWRK ARRAY.  THIS IS USED FOR
    C              TEMPORARY  CONSTRUCTION  OF  LINES OF OUTPUT
    C              TEXT.
   C     LMTUNT = DIMENSION OF NXTUNT ARRAY.  THIS  HOLDS  THE
    C              AVAILABLE   UNIT  NUMBERS  FOR  READING  AND
    C              WRITING SCRATCH FILES.
 C     LMTLST = DIMENSION OF LSTVAL, LSTSKP, LSTTYP, LSTMRG,
    C              LSTRIT,  LSTSPC,  LTROPN  AND LTRCLS ARRAYS.
    C              THESE ARE USED FOR STORIGN INFORMATION ABOUT
    C              EMBEDDED LISTS.
   C     LMTTAB = DIMENSION OF LOCTAB ARRAY.  THIS  HOLDS  THE
    C              TAB  STOPS.   SINCE THE TAB COMMAND ALSO HAS
    C              THE  MOST  ARGUMENTS,  THIS  IS   ALSO   THE
    C              DIMENSION  OF NVALUE AND NMINUS IN WHICH THE
    C              ARGUMENTS OF A COMMAND ARE RETURNED.
  C     LMTLVL = DIMENSION  OF  NUMLVL  AND  KNDLVL   ARRAYS.
    C              THESE STORE INFORMATION ABOUT HEADER LEVELS.
    C     LMTCOD = DIMENSION OF LTRCOD ARRAY.  THIS  HOLDS  THE
    C              VARIOUS  CHARACTERS WHICH MUST BE REFERENCED
    C              BY CODE BUT WHICH ARE OUTSIDE ALPHABET.
    C     LMTNDX = DIMENSION OF NUMNDX ARRAY.  THIS  HOLDS  THE
    C              CODES FOR LETTERS IN AN INDEX REFERENCE.
   C     LMTCHA = DIMENSION OF MSKCHA  ARRAY.   THIS  HOLDS  A
    C              CHAPTER OR APPENDIX TITLE.
  C     LMTSHD = DIMENSION OF LTRSHD ARRAY.   THIS  HOLDS  THE
   C              LETTERS  USED  TO  DARKEN BACKGROUND GIVEN BY
   C              THE SHADOW COMMAND.
    C     LMTEDT = DIMENSION OF MAGEDT ARRAY.  THIS HOLDS THE
 C              EDITING INSTRUCTION FOR MAGNIFIED LETTERS.
 C     LMTBIG = DIMENSION OF LTRBIG ARRAY.  THIS HOLD THE
  C              LETTERS USED TO DARKEN MAGNIFIED LETTERS.
  C
        DATA LMTBGN,LMTFNR,LMTMID,LMTTTL,LMTWRK,
       1LMTUNT,LMTLST,LMTTAB,LMTLVL,LMTCOD,LMTNDX,LMTCHA,LMTSHD,
      2LMTEDT,LMTBIG/
        3300,200,200,450,200,4,10,32,6,70,300,200,50,50,50/
  C
  C     DEFINE DEVICE UNIT NUMBERS
       DATA IDISK,JDISK,ITTY,JTTY/
     11,20,5,5/
         DATA NXTUNT/21,22,23,24/
         END
          BLOCK DATA
  CRENBR(RENBRSTART)(RNOFNT/BIG LETTER FONTS FOR FROFF)
      COMMON/RNOTWE/LTRFNT( 204)
       COMMON/RNOTHI/LOCKED,KNTFNT,ICLMNS( 204),
      1ILIMIT(   3),ILINES(   3),IMAXMM(   3),
        2ICOMMN(   3),IPACKD(1428)
  C     DIMENSION LTRFNT(204)
       DIMENSION LTRFN1(100),LTR101(100),LTR201(  4)
  C     DIMENSION ILINES(3)
         DIMENSION ILINE1(3)
   C     DIMENSION ILIMIT(3)
         DIMENSION ILIMI1(3)
   C     DIMENSION IMAXMM(3)
         DIMENSION IMAXM1(3)
   C     DIMENSION ICOMMN(3)
         DIMENSION ICOMM1(3)
   C     DIMENSION ICLMNS(204)
       DIMENSION ICLMN1(204)
 C     DIMENSION IPACKD(1428)
      DIMENSION IPACK1(185),IPA186(197),IPA383(139),
      1IPA522(163),IPA685(177),IPA862(126),IPA988(141),
         2IP1129(163),IP1292(137)
          EQUIVALENCE (LTRFN1(1),LTRFNT(  1)),
      1            (LTR101(1),LTRFNT(101)),
      2            (LTR201(1),LTRFNT(201))
        EQUIVALENCE (ILINE1(1),ILINES(1))
          EQUIVALENCE (ILIMI1(1),ILIMIT(1))
          EQUIVALENCE (IMAXM1(1),IMAXMM(1))
          EQUIVALENCE (ICOMM1(1),ICOMMN(1))
          EQUIVALENCE (ICLMN1(1),ICLMNS(1))
          EQUIVALENCE (IPACK1(1),IPACKD(1)),
        1(IPA186(1),IPACKD(186)),(IPA383(1),IPACKD(383)),
         2(IPA522(1),IPACKD(522)),(IPA685(1),IPACKD(685)),
         3(IPA862(1),IPACKD(862)),(IPA988(1),IPACKD(988)),
         4(IP1129(1),IPACKD(1129)),(IP1292(1),IPACKD(1292))
         DATA LTRFN1/1HA,1HB,1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,
     1            1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,
     2            1HU,1HV,1HW,1HX,1HY,1HZ,1H0,1H1,1H2,1H3,
     3            1H4,1H5,1H6,1H7,1H8,1H9,1H!,1H@,1H#,1H$,
     4            1H%,1H^,1H&,1H*,1H(,1H),1H-,1H_,1H[,1H],
     5            1H+,1H=,1H\,1H|,1H`,1H~,1H:,1H;,1H",1H',
     6            1H{,1H},1H.,1H,,1H/,1H?,1H<,1H>,1HA,1HB,
     7            1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,1HK,1HL,
     8            1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,1HU,1HV,
     9            1HW,1HX,1HY,1HZ,1H0,1H1,1H2,1H3,1H4,1H5/
      DATA LTR101/1H6,1H7,1H8,1H9,1H!,1H@,1H#,1H$,1H%,1H^,
     1            1H&,1H*,1H(,1H),1H-,1H_,1H[,1H],1H+,1H=,
     2            1H\,1H|,1H`,1H~,1H:,1H;,1H",1H',1H{,1H},
     3            1H.,1H,,1H/,1H?,1H<,1H>,1HA,1HB,1HC,1HD,
     4            1HE,1HF,1HG,1HH,1HI,1HJ,1HK,1HL,1HM,1HN,
     5            1HO,1HP,1HQ,1HR,1HS,1HT,1HU,1HV,1HW,1HX,
     6            1HY,1HZ,1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,
     7            1H8,1H9,1H!,1H@,1H#,1H$,1H%,1H^,1H&,1H*,
     8            1H(,1H),1H-,1H_,1H[,1H],1H+,1H=,1H\,1H|,
     9            1H`,1H~,1H:,1H;,1H",1H',1H{,1H},1H.,1H,/
      DATA LTR201/1H/,1H?,1H<,1H>/
          DATA ILINE1/5,7,9/
          DATA ILIMI1/68,136,204/
          DATA IMAXM1/5,10,12/
        DATA ICOMM1/5,8,10/
         DATA ICLMN1/5,5,5,5,5,5,5,5,3,5,5,5,5,5,5,5,5,5,5,5,
     15,5,5,5,5,5,5,3,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,3,3,
     25,5,3,3,5,5,5,1,2,5,2,2,5,2,3,3,2,2,5,5,2,2,8,8,8,8,
     38,8,8,8,6,8,8,8,10,8,8,8,8,8,8,8,8,8,10,8,8,8,8,6,8,
     48,8,8,8,8,8,8,2,8,8,8,8,8,8,8,5,5,8,8,5,5,8,8,8,2,3,
     58,2,3,8,3,6,6,2,3,8,8,6,6,10,10,10,10,10,10,10,10,6,
     610,10,10,12,10,10,10,10,10,10,10,10,10,12,10,10,10,
      710,6,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,
     86,6,10,10,6,6,10,10,10,2,4,10,4,4,10,4,7,7,4,4,10,10,
         98,8/
         DATA IPACK1/4,10,17,31,17,30,17,30,17,30,15,16,16,16,
         115,30,17,17,17,30,31,16,30,16,31,31,16,30,16,16,15,
      216,19,17,15,17,17,31,17,17,7,2,2,2,7,1,1,1,17,14,17,
     318,28,18,17,16,16,16,16,31,17,27,21,17,17,17,25,21,
      419,17,14,17,17,17,14,30,17,30,16,16,14,17,21,18,13,
      530,17,30,18,17,15,16,14,1,30,31,4,4,4,4,17,17,17,17,
     614,17,17,17,10,4,17,17,21,27,17,17,10,4,10,17,17,10,
     74,4,4,31,2,4,8,31,14,17,17,17,14,6,2,2,2,7,30,1,14,
      816,31,30,1,6,1,30,3,5,9,31,1,31,16,30,1,30,4,8,30,17,
         914,31,1,2,4,4,14,17,14,17,14,14,17,15,2,4,1,1,1,0,1/
      DATA IPA186/14,19,19,16,14,10,31,10,31,10,15,20,14,5,
         130,25,26,4,11,19,4,10,17,0,0,28,8,21,18,13,0,14,31,
      214,0,3,4,4,4,3,6,1,1,1,6,0,0,31,0,0,0,0,0,0,31,7,4,4,
         34,7,7,1,1,1,7,0,4,31,4,0,0,31,0,31,0,16,8,4,2,1,1,1,
     41,1,1,3,2,0,0,0,13,22,0,0,0,3,0,0,0,3,3,0,0,3,1,27,9,
         50,0,0,3,1,0,0,0,3,2,6,2,3,6,2,3,2,6,0,0,0,3,3,0,0,0,
     63,1,1,2,4,8,16,30,1,6,0,4,0,1,2,1,0,0,2,1,2,0,24,60,
     7102,195,255,195,195,252,195,195,252,195,195,252,31,
      896,192,192,192,96,31,248,198,195,195,195,198,248,255,
         9192,192,252,192,192,255,255,192,192,252,192,192,192/
      DATA IPA383/31,96,192,207,195,99,31,195,195,195,255,
     1195,195,195,63,12,12,12,12,12,63,3,3,3,3,195,102,60,
     2198,204,216,248,236,198,195,192,192,192,192,192,192,
     3255,771,903,975,891,819,771,771,195,227,243,219,207,
     4199,195,60,102,195,195,195,102,60,252,195,195,252,
       5192,192,192,60,102,195,195,205,102,59,252,195,195,
       6252,204,198,195,63,192,192,60,3,3,252,255,24,24,24,
      724,24,24,195,195,195,195,195,102,60,195,195,195,195,
     8102,60,24,771,771,819,891,975,903,771,195,102,60,24,
     960,102,195,195,102,60,24,24,24,24,255,6,12,24,48,96/
      DATA IPA522/255,60,102,195,195,195,102,60,12,60,12,
      112,12,12,63,252,3,3,60,192,192,255,252,3,3,28,3,3,
       2252,15,27,51,99,255,3,3,255,192,192,252,3,3,252,12,
      324,48,124,195,195,60,255,3,6,12,24,24,24,60,195,195,
     460,195,195,60,60,195,195,62,12,24,48,3,3,3,3,0,3,3,
      560,102,207,207,198,96,62,102,255,102,102,102,255,102,
         624,127,216,126,27,254,24,227,230,12,24,48,103,199,24,
         760,102,195,0,0,0,56,108,56,120,207,206,123,0,102,60,
     8255,60,102,0,7,12,24,24,24,12,7,28,6,3,3,3,6,28,0,0,
     90,255,0,0,0,0,0,0,0,0,0,255,31,24,24,24,24,24,31,31/
      DATA IPA685/3,3,3,3,3,31,0,24,24,255,24,24,0,0,0,255,
         10,255,0,0,192,96,48,24,12,6,3,3,3,3,3,3,3,3,7,6,3,0,
     20,0,0,51,204,0,0,0,0,0,3,3,0,0,0,3,3,3,3,0,0,7,3,6,
      3231,99,198,0,0,0,0,7,3,6,0,0,0,0,7,12,12,56,12,12,7,
     456,12,12,7,12,12,56,0,0,0,0,0,3,3,0,0,0,0,7,3,6,3,6,
     512,24,48,96,192,252,3,3,28,0,24,24,0,3,12,48,12,3,0,
     60,48,12,3,12,48,0,48,120,204,390,771,771,1023,771,
       7771,1016,774,771,774,1016,774,771,774,1016,127,384,
      8768,768,768,768,768,384,127,1016,774,771,771,771,771,
         9771,774,1016,1023,768,768,768,1016,768,768,768,1023/
      DATA IPA862/1023,768,768,768,1016,768,768,768,768,
       1127,384,768,768,799,771,771,387,127,771,771,771,771,
     21023,771,771,771,771,63,12,12,12,12,12,12,12,63,3,3,
     33,3,3,771,771,390,120,780,792,816,864,1008,920,780,
      4774,771,768,768,768,768,768,768,768,768,1023,3075,
       53591,3855,3483,3315,3171,3075,3075,3075,771,899,963,
     6867,819,795,783,775,771,120,390,771,771,771,771,771,
     7390,120,1016,774,771,774,1016,768,768,768,768,120,
       8390,771,771,771,819,793,396,102,1016,774,771,774,
        91016,792,780,774,771,127,384,768,384,120,6,3,6,1016/
      DATA IPA988/1023,48,48,48,48,48,48,48,48,771,771,771,
         1771,771,771,771,390,120,771,771,771,771,771,390,204,
     2120,48,3075,3075,3075,3171,3315,3483,3855,3591,3075,
     3771,390,204,120,48,120,204,390,771,771,390,204,120,
      448,48,48,48,48,1023,6,12,24,48,96,192,384,1023,120,
      5390,771,771,771,771,771,390,120,12,60,12,12,12,12,12,
         612,63,1016,6,3,6,120,384,768,768,1023,1016,6,3,6,120,
         76,3,6,1016,31,51,99,195,387,1023,3,3,3,1023,768,768,
     81016,6,3,3,6,1016,24,48,96,192,504,774,771,390,120,
      91023,3,6,12,24,48,48,48,48,120,390,771,390,120,390/
       DATA IP1129/771,390,120,120,390,771,387,126,12,24,48,
         196,6,6,6,6,6,0,6,15,6,120,390,771,799,819,819,798,
       2384,126,204,204,1023,204,204,204,1023,204,204,48,48,
     3511,816,510,51,1022,48,48,451,870,460,24,48,96,206,
      4411,782,48,120,204,390,771,0,0,0,0,240,408,408,240,
      5432,795,780,798,227,0,390,204,120,1023,120,204,390,0,
         67,24,48,48,48,48,48,24,7,56,6,3,3,3,3,3,6,56,0,0,0,0,
         71023,0,0,0,0,0,0,0,0,0,0,0,0,1023,63,48,48,48,48,48,
     848,48,63,63,3,3,3,3,3,3,3,63,0,48,48,48,1023,48,48,
      948,0,0,0,1023,0,0,0,1023,0,0,768,384,192,96,48,24,12/
          DATA IP1292/6,3,3,3,3,3,3,3,3,3,3,7,15,12,6,0,0,0,0,
     10,483,798,0,0,0,0,0,0,0,6,15,6,0,0,0,6,15,6,6,15,6,0,
         20,14,15,3,6,910,975,195,390,0,0,0,0,0,14,15,3,6,0,0,
     30,0,0,15,24,24,24,112,24,24,24,15,120,12,12,12,7,12,
     412,12,120,0,0,0,0,0,0,6,15,6,0,0,0,0,0,14,15,3,6,3,6,
         512,24,48,96,192,384,768,1016,6,3,6,120,0,96,240,96,0,
         63,12,48,192,48,12,3,0,0,192,48,12,3,12,48,192,0/
          DATA KNTFNT,LOCKED/  3,999/
      END
    C     RENBR(FROFF/MACHINE INDEPENDENT RUNOFF SIMULATOR)
   C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
  C     THIS MAIN PROGRAM ALLOWS FROFF TO BE LOADED AS 3
    C     OVERLAYS, THE FIRST CONTAINING THE USER INTERACTION,
C     THE SECOND CONTAINING ALL FEATURES EXCEPT FOR THE
   C     CONSTRUCTION OF INDEX, AND THE THIRD CONTAINING THE
 C     INDEX CONSTRUCTION.
   C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     FORCE RETENSION OF VARIABLES AND ARRAYS NEEDED FOR
  C     PARSING THE USER COMMAND EVEN IF OVERLAY THE PARSER
       CALL RNOCMN
 C
  C     INITIALIZE THE USER COMMAND PARSER AND ALL STORAGE
        LEVEL0=5
    C
  C     PERFORM INFREQUENT OPERATIONS
       1 CALL RNOODD
       IF(LEVEL0.EQ.0)GO TO 4
      IF(LEVEL0.EQ.1)GO TO 2
      IF(LEVEL0.NE.5)GO TO 3
C
  C     TTYSIM = (CALLED ONLY IF THE OUTPUT IS TO BE  TO  THE
    C              DISK) TTYSIM SPECIFIES THAT THE CHARACTER IN
    C              COLUMN 1 IS TO BE CONVERTED DIRECTLY TO  THE
    C              APPROPRIATE CONTROL CHARACTER.  IF TTYSIM IS
    C              CONVERTED TO A DUMMY ROUTINE, THEN THE FIRST
    C              CHARACTER  ON  THE  FIRST  LINE OF THE FIRST
    C              PAGE WILL BE  A  PLUS  SIGN  AND  THE  FIRST
    C              CHARACTER ON THE FIRST LINE OF ALL FOLLOWING
    C              PAGES WILL BE  THE  DIGIT  ONE.   ALL  OTHER
    C              LINES   WILL   BEGIN   WITH  SPACES.   THESE
    C              CHARACTERS   SHOULD   GIVE   THE   FOLLOWING
    C              CARRIAGE MOTIONS.
 C                   PLUS GIVES NO CARRIAGE MOTION
    C                   SPACE GIVES SINGLE LINE ADVANCE
  C                   ONE GIVES FORM FEED
    C     TTYSET = (CALLED ONLY IF THE OUTPUT IS TO BE  TO  THE
    C              TERMINAL)   TTYSET   CHANGES   THE  TERMINAL
    C              CHARACTERISTICS TO ALLOW THE TERMINAL TO ACT
    C              AS  AN  OUTPUT  TYPEWRITER.   THE  FOLLOWING
    C              TERMINAL CHARACTERISTICS ARE SET.
C                   NO CHECKING OF LINE WIDTH
   C                   NO CHECKING OF PAGE LENGTH
  C                   NO PAUSING AT TOP OF PAGE
   C                   LOWER CASE LETTERS
C                   HARDWARE FORM FEEDS
    C                   NO HARDWARE TABS
  C                   REFUSING OF ALL SYSTEM MESSAGES
  C              THESE CHARACTERISTICS WILL HAVE TO BE SET AT
    C              THE  MONITOR LEVEL IF TTYSET IS REPLACE BY A
    C              DUMMY ROUTINE.
    C
      2 IF(ITRMNL.EQ.0)CALL TTYSIM(JDISK)
          IF(ITRMNL.NE.0)CALL TTYSET
 C
  C     PERFORM ALL BUT MOST INFREQUENT OPERATIONS
    3 CALL RNOALL
       GO TO 1
C
  C     LEAVE IS AN ASSEMBLY LANGUAGE ROUTINE FOR THE DECSYSTEM10
C     AND DECSYSTEM20 WHICH EXITS WITHOUT TYPING THE STATISTICS
C     WHICH FORTRAN USUALLY PRODUCES ON THESE COMPUTERS.  THE
  C     LEAVE ROUTINE CAN BE SIMULATED BY A SIMPLE FORTRAN ROUTINE
    C     CONTAINING EITHER JUST A RETURN OR JUST A STOP STATEMENT.
    4 CALL LEAVE
        STOP
         END
          SUBROUTINE RNOODD
C     RENBR(/ALL INFREQUENTLY PERFORMED OPERATIONS)
  C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
  C     THIS MAIN PROGRAM ALLOWS FROFF TO BE LOADED AS 3
    C     OVERLAYS, THE FIRST CONTAINING THE USER INTERACTION,
C     THE SECOND CONTAINING ALL FEATURES EXCEPT FOR THE
   C     CONSTRUCTION OF INDEX, AND THE THIRD CONTAINING THE
 C     INDEX CONSTRUCTION.
   C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     LEVEL0 DETERMINES WHY THIS ROUTINE WAS CALLED
        GO TO(2,8,12,11,1,9,13),LEVEL0
  C
  C     FIRST TIME CALLED, USER HAS NOT YET BEEN ASKED ANYTHING
  C     GET UNIQUE NUMBER TO USE IN CONSTRUCTING FILE NAMES
     1 CALL RNONAM(IDFILE)
         MASTER=0
          GO TO 10
    C
  C     ALL FILES IN PREVIOUS REQUEST HAVE BEEN PROCESSED
       2 MASTER=1
          CALL RNOEND(2,IDISK,JDISK)
       IF(ITRMNL.LE.0)GO TO 4
      IF(KNTSHO.NE.0)READ(JTTY,3)I
        3 FORMAT(1A1)
     4 IF(KNTSHO.GT.0)GO TO 6
      WRITE(ITTY,5)
        5 FORMAT(12H Pages: NONE)
          GO TO 10
        6 WRITE(ITTY,7)KNTSHO
       7 FORMAT(7H Pages:,I5)
        GO TO 10
    C
  C     DETERMINE AVAILABLE UNIT NUMBER FOR SPLICE FILE
    8 CALL RNOFIL(4,4,NDISK,NXTUNT,LMTUNT,ITTY,JTTY,
      1IDFILE)
      MASTER=2
          GO TO 10
    C
  C     FILE PROCESSED, BUT ANOTHER MAY STILL CONTINUE THIS
     9 MASTER=3
          CALL RNOEND(1,IDISK,JDISK)
 C
  C     ASK USER FOR NAME OF NEXT FILE
     10 CALL RNOASK(MASTER,ITTY,JTTY,IDISK,JDISK,NDISK,JOFFST,
        1ITRMNL,JTRMNL,IRANGE,JRANGE,KRANGE)
  C     MASTER = -1, NOT FIRST TIME RNOASK CALLED, BUT USER
 C              HAS SPECIFIED THAT ANOTHER FILE BE PROCESSED
    C            = 0, FIRST TIME RNOASK WAS CALLED
  C            = 1, MASTER WAS INPUT SET TO 1, AND NO
  C              FILES WERE SPECIFIED BY USER.
    C            = 2, SPLICE FILE OPENED
        IF(LEVEL0.EQ.2)GO TO 61
          IF(LEVEL0.EQ.6)GO TO 61
          IF(MASTER.EQ.1)GO TO 60
    C
  C     CALL RNONEW TO INITIALIZE OR TO RESET VARIABLES
C     MASTER = 0, PREPARE FOR FIRST INPUT FILE.
 C              INITIALIZE EVERYTHING INCLUDING SORTED
C              ALPHABETS
    C            = -1, PREPARE FOR 2ND OR FOLLOWING INPUT FILE.
    C              INITIALIZE EVERYTHING EXCEPT ALPHABETS
C              WHICH ARE NEVER CHANGED DURING EXECUTION.
  C              DISCARD REST OF CURRENT INPUT LINE
    C            = 1, .RESET ALL COMMAND.
 C              INITIALIZE EVERYTHING EXCEPT ALPHABETS
C              AND WHETHER NEXT PAGE IS FIRST OUTPUT PAGE
 C              AND WHETHER DEBUG SWITCH IS ON.
  C            = 2, .RESET COMMAND.
C              INITIALIZE EVERYTHING EXCEPT ALPHABETS.
    C              RETAIN THE REST OF CURRENT INPUT LINE
 C              AND LOOP VALUES AND SPLICE FILE.
    11 CALL RNONEW
       GO TO 61
    C
  C     CONSTRUCT THE INDEX
      12 CALL RNONDX
       GO TO 61
    C
  C     STORE LETTERS TO BE MAGNIFIED
      13 IF(MAGNFY.GT.0)GO TO 18
          MAGSAV=ISPACE
          ISPACE=0
          KNTBIG=NGLBIG
          MAGNFY=1
          IF(INIMAG.LT.0)INIMAG=1
          LNGBGN=LNGBGN-KPYBGN
        KPYMID=KPYBGN
          KPYBGN=0
       14 IF(KPYBGN.GE.LNGBGN)GO TO 17
          KPYBGN=KPYBGN+1
        KPYMID=KPYMID+1
        LTRNOW=LTRBGN(KPYMID)
       DO 15 I=1,26
      IF(LTRNOW.NE.LWRABC(I))GO TO 15
       LTRNOW=LTRABC(I)
       GO TO 16
       15 CONTINUE
       16 LTRBGN(KPYBGN)=LTRNOW
       MSKBGN(KPYBGN)=MSKBGN(KPYMID)
         GO TO 14
       17 KPYMID=0
          LNGMID=0
          MAGLIN=1
          GO TO 19
    C
  C     ALLOW FOR SHADOWS BELOW LETTERS
    18 MAGLIN=MAGNFY
          IF(MAGSHD.EQ.0)GO TO 19
          IF(MAGLIN.LE.MAGHIH)GO TO 19
          MAGLIN=(2*MAGHIH)-MAGNFY+1
 C
  C     CONSTRUCT MAGNIFIED LETTERS
   19 LNGMID=0
          CALL RNOBIG(MAGFNT,MAGLIN,-1,0,MAGSPC,
         11,0,LTRBGN,1,LNGBGN,0,LMTMID,
        2LMTMID,LTRMID,LNGMID,MAGHIH,MAGOVR,MSKBGN,MRKMAG,
        3LTRMAG)
C     SUBROUTINE RNOBIG(MAGFNT,MAGLIN,JSTIFY,IFILL ,MAGSPC,
    C    1    MOVE  ,ISPACE,LTRBGN,MAGBGN,LNGBGN,LFTCOL,IWIDTH,
    C    2    LMTMID,LTRMID,LNGMID,MAGMAX,MAGOVR,MSKBGN,MRKMAG,
    C    3    LTRMAG)
 C
  C     EDIT THE MAGNIFIED TEXT
          IF(KNTEDT.LE.0)GO TO 25
          I=1
          J=1
          K=0
       20 IF(I.GT.KNTEDT)GO TO 21
          IF(MAGEDT(I).GE.J)GO TO 21
       I=I+1
        GO TO 20
       21 IF(J.GT.LNGMID)GO TO 24
          IF(I.GT.KNTEDT)GO TO 23
          IF(J.NE.MAGEDT(I))GO TO 23
       IF(I.GE.KNTEDT)GO TO 22
          L=MAGEDT(I+1)
          IF(L.GE.0)GO TO 22
          J=J-L
        I=I+2
        GO TO 20
       22 I=I+1
        J=J+1
        GO TO 20
       23 K=K+1
        LTRMID(K)=LTRMID(J)
         J=J+1
        GO TO 20
       24 LNGMID=K
       25 CONTINUE
    C
  C     JUSTIFY THE MAGNIFIED TEXT
       NEEDED=MRGLFT
          IF(JFILL.EQ.0)GO TO 31
      GO TO(26,27,28,29,30,28),JFILL
  C     CENTER COMMAND
      26 IF(KCENTR.LE.0)NEEDED=((MRGFAR+ICENTR-LNGMID)/2)
          IF(KCENTR.GT.0)NEEDED=((ICENTR-LNGMID)/2)
       GO TO 31
    C     RIGHT COMMAND
       27 NEEDED=MRGRIT-LNGMID-ICENTR
      GO TO 31
    C     FLUSH LEFT COMMAND
       28 IF(KCENTR.LE.0)NEEDED=MRGLFT+ICENTR
        IF(KCENTR.GT.0)NEEDED=ICENTR
          GO TO 31
    C     MIDDLE COMMAND
      29 IF(KCENTR.LE.0)NEEDED=MRGLFT+
        1((MRGRIT-MRGLFT-LNGMID)/2)+ICENTR
          IF(KCENTR.GT.0)NEEDED=ICENTR-(LNGMID/2)
         GO TO 31
    C     FLUSH RIGHT COMMAND
      30 IF(KCENTR.LE.0)NEEDED=MRGRIT-LNGMID+ICENTR
      IF(KCENTR.GT.0)NEEDED=ICENTR-LNGMID
     31 IF(NEEDED.LT.0)NEEDED=0
    C
  C     ADJUST POSITION OF SHADOW
        KOLUMN=0
          IF(MAGSHD.EQ.0)GO TO 32
          IF(MAGNFY.LE.MAGHIH)GO TO 32
          KOLUMN=MAGNFY-MAGHIH
        IF(MAGSHD.EQ.1)KOLUMN=-KOLUMN
         IF(MAGSHD.EQ.3)KOLUMN=-KOLUMN+1
       IF(MAGSHD.EQ.4)KOLUMN=KOLUMN-1
        NEEDED=NEEDED+KOLUMN
     32 CONTINUE
    C
  C     BRANCH TO SHADOW CONSTRUCTION CODE
         IF(MAGSHD.EQ.0)GO TO 46
          IF(MAGNFY.LE.MAGHIH)GO TO 46
          IF(MAGSHD.LE.2)GO TO 46
          IF(LNGMID.LE.0)GO TO 46
          IF(MAGSHD.EQ.4)GO TO 39
    C
  C     REVERSE SHADOW CAST TO LEFT
      I=0
       33 I=I+1
        IF(I.GT.LNGMID)GO TO 34
          IF(LTRMID(I).EQ.LTRSPA)GO TO 33
       LTRNOW=LTRMID(I)
       GO TO 36
       34 I=0
       35 I=I+1
        IF(I.GT.LNGBGN)GO TO 46
          IF(LTRBGN(I).EQ.LTRSPA)GO TO 35
       LTRNOW=LTRBGN(I)
       GO TO 36
       36 I=LNGMID+1
     37 I=I-1
        IF(I.LE.0)GO TO 46
          IF(LTRMID(I).EQ.LTRSPA)GO TO 38
       LTRNOW=LTRMID(I)
       LTRMID(I)=LTRSPA
       GO TO 37
       38 LTRMID(I)=LTRNOW
       GO TO 37
    C
  C     REVERSE SHADOW CAST TO RIGHT
       39 I=LNGMID+1
     40 I=I-1
        IF(I.LE.0)GO TO 41
          IF(LTRMID(I).EQ.LTRSPA)GO TO 40
       LTRNOW=LTRMID(I)
       GO TO 43
       41 I=LNGBGN+1
     42 I=I-1
        IF(I.LE.0)GO TO 46
          IF(LTRBGN(I).EQ.LTRSPA)GO TO 42
       LTRNOW=LTRBGN(I)
       GO TO 43
       43 I=0
       44 I=I+1
        IF(I.GT.LNGMID)GO TO 46
          IF(LTRMID(I).EQ.LTRSPA)GO TO 45
       LTRNOW=LTRMID(I)
       LTRMID(I)=LTRSPA
       GO TO 44
       45 LTRMID(I)=LTRNOW
       GO TO 44
       46 CONTINUE
    C
  C     CHANGE PRINTING CHARACTERS TO REPEATED PHRASE
        IF(LNGBIG.LE.0)GO TO 51
          IF(LNGMID.LE.0)GO TO 51
          I=NGLBIG
          IF(I.LE.(-LNGBIG))I=0
       IF(I.GE.LNGBIG)I=0
          IF(KOLUMN.LT.0)I=I+1
        IF(KOLUMN.GT.0)I=I-1
        KNTBIG=KNTBIG-I
        IF(I.GT.0)GO TO 47
          IF(KNTBIG.GE.LNGBIG)KNTBIG=KNTBIG-LNGBIG
        GO TO 48
       47 IF(KNTBIG.LT.0)KNTBIG=KNTBIG+LNGBIG
     48 KOLUMN=KNTBIG
          DO 50 I=1,LNGMID
       KOLUMN=KOLUMN+1
        IF(KOLUMN.GT.LNGBIG)KOLUMN=1
          IF(LTRMID(I).EQ.LTRSPA)GO TO 50
       IF(INIMAG.LE.0)GO TO 49
          INIMAG=-1
         KNTBIG=KNTBIG-KOLUMN+1
      IF(KNTBIG.LT.0)KNTBIG=KNTBIG+LNGBIG
        KOLUMN=1
       49 LTRMID(I)=LTRBIG(KOLUMN)
      50 CONTINUE
       51 CONTINUE
    C
  C     SHIFT LETTERING TO LEFT
          IF(NEEDED.GE.0)GO TO 54
          I=0
          J=-NEEDED
      52 IF(J.GE.LNGMID)GO TO 53
          I=I+1
        J=J+1
        LTRMID(I)=LTRMID(J)
         MSKMID(I)=0
       GO TO 52
       53 LNGMID=I
          GO TO 57
    C
  C     SHIFT LETTERING TO RIGHT
      54 I=LNGMID+NEEDED
        J=LNGMID
          IF(I.GT.LMTMID)I=LMTMID
          LNGMID=I
       55 IF(J.LE.0)GO TO 56
          LTRMID(I)=LTRMID(J)
         MSKMID(I)=0
       I=I-1
        J=J-1
        GO TO 55
       56 IF(I.LE.0)GO TO 57
          LTRMID(I)=LTRSPA
       MSKMID(I)=0
       I=I-1
        GO TO 56
       57 CONTINUE
    C
  C     PREPARE FOR NEXT LINE TO BE MAGNIFIED
      KPYMID=LNGMID
          KPYBGN=-1
         MAGNFY=MAGNFY+1
        IF(MAGSHD.NE.0)GO TO 58
          IF(MAGNFY.LE.MAGHIH)GO TO 61
          GO TO 59
       58 IF(MAGNFY.LE.(2*MAGHIH))GO TO 61
   59 KPYBGN=LNGBGN
          MAGNFY=0
          KNTEDT=0
          GO TO 61
    C
  C     FIRST FILE HAS BEEN COMPLETELY PROCESSED AND THE
    C     USER HAS NOT SPECIFIED A SECOND FILE TO PROCESS
   60 LEVEL0=0
       61 RETURN
       END
          SUBROUTINE RNONEW
C     RENBR(/RETURN CONDITIONS TO ORIGINAL SETTINGS)
 C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
        IF(MASTER.NE.0)GO TO 7
C
  C     SORT LOWER CASE  LETTERS  INTO  INCREASING  NUMERICAL
    C     ORDER,   KEEPING   UPPER   CASE   LETTERS   PARALLEL.
    C     RESULTING SORTED ARRAYS ARE USED IN A TERNARY SEARCH.
          DO 1 I=1,26
       LTRONL(I)=LTRABC(I)
       1 LWRONL(I)=LWRABC(I)
         DO 3 I=1,25
       J=I
          LTRNOW=LWRONL(I)
       DO 2 K=I,26
       IF(LTRNOW.LE.LWRONL(K))GO TO 2
        J=K
          LTRNOW=LWRONL(K)
     2 CONTINUE
          LWRONL(J)=LWRONL(I)
         LWRONL(I)=LTRNOW
       LTRNOW=LTRONL(J)
       LTRONL(J)=LTRONL(I)
       3 LTRONL(I)=LTRNOW
 C
  C     SORT UPPER CASE  LETTERS  INTO  INCREASING  NUMERICAL
    C     ORDER,   KEEPING   LOWER   CASE   LETTERS   PARALLEL.
    C     RESULTING SORTED ARRAYS ARE USED IN A TERNARY SEARCH.
          DO 4 I=1,26
       LTRONU(I)=LTRABC(I)
       4 LWRONU(I)=LWRABC(I)
         DO 6 I=1,25
       J=I
          LTRNOW=LTRONU(I)
       DO 5 K=I,26
       IF(LTRNOW.LE.LTRONU(K))GO TO 5
        J=K
          LTRNOW=LTRONU(K)
     5 CONTINUE
          LTRONU(J)=LTRONU(I)
         LTRONU(I)=LTRNOW
       LTRNOW=LWRONU(J)
       LWRONU(J)=LWRONU(I)
       6 LWRONU(I)=LTRNOW
       IBYTE=KNTPNT+1
   C
  C     ********************************
C     *                              *
C     *  PREPARE FOR NEW INPUT FILE  *
C     *                              *
C     ********************************
C
      7 IF(MASTER.GT.1)GO TO 9
      IF(MASTER.GT.0)GO TO 8
      KNTPAG=0
          KNTSHO=0
        8 KNTRST=0
          KNTLIN=0
          LNGBGN=0
          KPYBGN=0
          MAXBGN=132
        LMTKAS=132
        IFLOOP=0
          IFSPLC=0
          KNDSPL=0
          INIFRM=0
          IF(ITRMNL.NE.0)INIFRM=1
          IF(IRANGE.LE.0)IRANGE=1
          IWIZRD=0
          JSKIP=0
      KNTCOD=KNTFXD
          LSTFRM=ITRMNL
          IFHALF=0
          KRANGE=1
          IF(IRANGE.GT.JRANGE)KRANGE=-1
         KMPPAG=-1
         KTRMNL=JTRMNL
    C
  C     ***************************************************
 C     *                                                 *
 C     *  REDEFINE CONDITIONS WHICH COMMANDS CAN CHANGE  *
 C     *                                                 *
 C     ***************************************************
 C
      9 ITLNXT=0
          ITLALL=0
          ITLSPA=0
          ITLLIN=0
          LCLSUP=0
          LOKSUP=0
    C
  C     NEW PAGE
          MAXLIN=58
         LNGPAG=58
         LNGBOT=0
          LOCPAG=0
          NEWPAG=-1
         NULTTL=-1
         KNDLIN=0
          ISKIP=-1
    C
  C     .PAGING
      IFPAGE=-1
   C
  C     INDICATE THAT NO TOP OF PAGE YET GENERATED
      KNTTOP=0
    C
  C     .DISPLAY APPENDIX LU
        KNDAPP=7
    C
  C     .DISPLAY CHAPTER D
          KNDCHA=1
    C
  C     .DISPLAY NUMBER D
      KNDPAG=1
          NOWPHW=KNDPAG
    C
  C     .DISPLAY SUBPAGE LU
         KNDSUB=7
          NOWSPH=KNDSUB
    C
  C     NO ACTIVE SUBPAGE
      ISUBPG=-2
   C
  C     .SPACE INDEX 0,4,2,2
        NDXONE=0
          NDXTWO=4
          NDXTHR=2
          NDXFOU=2
    C
  C     .DISPLAY INDEX D
       NDXHOW=1
    C
  C     .ENABLE INDEX
          IFINDX=1
    C
  C     .NO UNDERLINE SPACE
         IULSPC=1
    C
  C     .END FOOT NOTE
         IFNOTE=0
          IFNOPN=0
          JFNOPN=0
          IFNRIT=0
          IFNRED=0
          JFNRIT=0
          JFNRED=0
          IFNTTL=0
          IFNRDY=0
          IFNHAV=0
          IFORMR=0
    C
  C     .END NOTE
         INNOTE=0
    C
  C     .NO FOOT NOTE HEADER
        IFNGAP=0
          LNGFNR=0
    C
  C     .SPACE FOOT NOTE 1,0,0
      KFNGAP=1
          JFNGAP=0
          LFNGAP=0
          MFNGAP=KFNGAP
          NFNGAP=JFNGAP
    C
  C     SPACE NOTES 2,1,2
      NOTONE=2
          NOTTWO=1
          NOTTHR=2
    C
  C     INDENT NOTES 0,4,-4
         INTIND=0
          INTLFT=4
          INTRIT=-4
   C
  C     .NUMBER 1
         NXTPAG=1
          NOWPAG=NXTPAG
          IFNUMB=1
    C
  C     .NUMBER SUBPAGE 1
      NXTSUB=1
    C
  C     NO SUBPAGE ACTIVE
      NOWSUB=0
    C
  C     NO SHADOW TRANSFORM COMMAND ACTIVE
         KNDTRN=0
          LNGTRN=0
          LSTTRN=0
          NSKIP=0
C
  C     NO CHAPTER ACTIVE
      JSECTN=0
          NOWSEC=0
          NOWSHW=0
    C
  C     HEADER
       IFHEAD=1
    C
  C     .SHOW PAGE
        IPGSHO=1
    C
  C     NO ACTIVE COMMAND
      KOMAND=0
    C
  C     .INPUT WIDTH 132
       LNGSRC=132
  C     NOTE THAT LNGSPL=132 IS SET IN RNOSET
C
  C     .UPPER CASE
       KASLCL=0
          KASALL=0
    C
  C     .INDENT 0
         INDENT=0
    C
  C     .INDENT FOOTNOTES 0
         INDFTN=0
    C
  C     .FILL
        JFILL=0
      IFFILL=0
          ICENTR=0
          JCENTR=0
          KCENTR=0
          KLMFIL=ICENTR
          KLMMNS=KCENTR
    C
  C     .PARAGRAPH 5,1,2
       NOWIND=5
          NOWSKP=1
          NOWTST=3
    C
  C     PARAGRAPH SPECIFICATIONS INSIDE NOTE
       NOTIND=NOWIND
          NOTSKP=NOWSKP
          NOTTST=NOWTST
    C
  C     .NO AUTO PARAGRAPH
          IFAUTO=0
    C
  C     .OFFSET 0
         NOWOFF=JOFFST
          IOFFST=JOFFST
    C
  C     .OFFSET LEFT 0
         LFTOFF=JOFFST
          LFTBAS=JOFFST
    C
  C     .OFFSET RIGHT 0
        IRTOFF=JOFFST
          IRTBAS=JOFFST
    C
  C     .LEFT MARGIN 0
         NOWLFT=0
          MRGLFT=NOWLFT
    C
  C     .RIGHT MARGIN 60
       NOWRIT=60
         MRGFAR=NOWRIT
          MRGRIT=NOWRIT
    C
  C     NO ACTIVE HEADER LEVELS
          NXTHDR=0
          KSKIP=0
      KNTLVL=0
          NXTLVL=0
          DO 10 I=1,LMTLVL
       KNDLVL(I)=1
       NUMLVL(I)=0
    10 CONTINUE
          NUMLVL(1)=1
 C
  C     .SPACE LEVELS 3,1
      LEVEL1=3
          LEVEL3=1
    C
  C     .INDENT LEVELS 0
       LEVEL4=0
    C
  C     .STYLE HEADERS 3,1,6,1
      IRUNIN=3
          KAPITL=1
          INITAL=6
          MINLVL=2
    C
  C     .STYLE INDEX -1,1
      KNDNDX=-1
         KAPNDX=1
    C
  C     .TAB STOPS 8,16,24,32 ...
        MAXTAB=LMTTAB
          DO 11 I=1,MAXTAB
       LOCTAB(I)=8*I
       11 CONTINUE
    C
  C     .SPACING 1
        ISPACE=0
    C
  C     .DISABLE BAR
      MRKBAR=0
          NOWBAR=0
          LCLBAR=0
          INIBAR=0
          IFABAR=0
    C
  C     .PERIOD
      IPEROD=1
    C
  C     .JUSTIFY
          JSTIFY=1
          IREVRS=1
    C
  C     .CARRIAGE
         LTR1ST=LTRSPA
    C
  C     SET INITIAL FLAGS
      LTRSEM=LTRFLG(1)
       LTRLES=LTRFLG(2)
       LTRDOT=LTRFLG(3)
       LTRDOL=LTRFLG(4)
       LTRBAC=LTRFLG(5)
       LTRUND=LTRFLG(6)
       LTREXC=LTRFLG(7)
       LTRNUM=LTRFLG(8)
       LTRCAR=LTRFLG(9)
       LTRAMP=LTRFLG(10)
      LTREFN=LTRFLG(11)
      LTRTXT=LTRFLG(12)
      LTRNDX=LTRFLG(13)
      LTRSBX=LTRFLG(14)
      LTRPUT=LTRFLG(15)
      LTRSUP=LTRFLG(16)
      LTRSUB=LTRFLG(17)
      LTRMAG=LTRFLG(18)
      MRKSEM=1
          MRKLES=0
          MRKDOT=1
          MRKDOL=0
          MRKBAC=1
          MRKUND=1
          MRKEXC=1
          MRKNUM=1
          MRKCAR=1
          MRKAMP=1
          MRKEFN=1
          MRKTXT=0
          MRKNDX=0
          MRKSBX=1
          MRKTTL=1
          MRKSUP=0
          MRKSUB=0
          MRKMAG=1
          IFFLAG=1
    C
  C     NO .MAGNIFY COMMAND IS ACTIVE
         MAGNFY=0
    C
  C     NO .EDIT MAGNIFY COMMAND IS ACTIVE
         KNTEDT=0
    C
  C     SET DEFAULTS TO .MAGNIFY '',1,1,0,0,0
      LNGBIG=0
          MAGFNT=1
          MAGSPC=1
          MAGSHD=0
          NGLBIG=0
          INIMAG=0
    C
  C     NO .LIST COMMAND IS ACTIVE
       IFLIST=0
          MSTLST=0
          LSTELM=0
          NOWLST=NOWSKP
    C
  C     NO .SPLICE COMMAND IS ACTIVE
          IF(IFSPLC.GT.0)IFSPLC=-1
   C
  C     NO .FIGURE COMMAND IS ACTIVE
          LINFIG=0
    C
  C     .NO .FIGURE DEFERRED COMMAND IS ACTIVE
          NXTFIG=0
    C     NO DEFER FIGURE COMMAND IS ACTIVE
          JDFRFG=0
          KDFRFG=0
    C
  C     NO DEFER PAGE COMMAND IS ACTIVE
       IDFRPG=0
          JDFRPG=0
    C
  C     .SPACE APPENDIX 9,1,3
       INIAPP=9
          MIDAPP=1
          LSTAPP=3
    C
  C     .SPACE CHAPTER 9,1,3
        INICHA=9
          MIDCHA=1
          LSTCHA=3
    C
  C     INDICATE THAT IN NEITHER CHAPTER NOR APPENDIX
        NEWCHA=0
          ISECTN=0
    C
  C     INITIAL CHAPTER COUNT
       ICHAPT=1
    C
  C     INITIAL APPENDIX COUNT
      IAPNDX=1
    C
  C     SET CONDITIONS AT START OF FIRST FOOTNOTE
       IFNNLF=NOWLFT
          IFNMLF=MRGLFT
          IFNOFF=IOFFST
          IFNNRT=NOWRIT
          IFNMFR=MRGFAR
          IFNMRT=MRGRIT
          IFNFIL=IFFILL
          ISKFTN=0
          IFNISP=ISPACE
          IFNNOF=NOWOFF
          IFNIFA=IFABAR
          IFNLOF=LFTOFF
          IFNROF=IRTOFF
          IFNLBS=LFTBAS
          IFNRBS=IRTBAS
          IFNNT1=NOTONE
          IFNNT2=NOTTWO
          IFNNT3=NOTTHR
          IFNJST=JSTIFY
          IFNIBR=INIBAR
          IFNMBR=MRKBAR
          IFNNBR=NOWBAR
          IFNLBR=LCLBAR
          IFNICN=ICENTR
          IFNJFL=JFILL
      IFNJCN=JCENTR
          IFNKCN=KCENTR
          IFNPRD=IPEROD
          IFNKLM=KLMFIL
          IFNMNS=KLMMNS
          IFNPIN=NOWIND
          IFNPSK=NOWSKP
          IFNPTS=NOWTST
          IFNIIN=INTIND
          IFNILF=INTLFT
          IFNIRT=INTRIT
          IFNNIN=NOTIND
          IFNNTT=NOTTST
          IFNNSK=NOTSKP
          IFNULS=IULSPC
          IFNATO=0
          IFNIND=0
          IFNIDF=NXTFIG
          IFNJDF=JDFRFG
          IFNKDF=KDFRFG
    C
  C     NO .COLLECT FOOTNOTE COMMAND IS ACTIVE
          IDEFER=0
    C
  C     NO AUTO FOOTNOTE NUMBERING
       KNTFTN=1
          NUMFTN=0
    C
  C     .DISPLAY REFERENCES [,D,],0
      LTRREF(1)=1H[
          LTRREF(2)=1H]
          MRKREF=1
          IFNREF=0
    C
  C     .DISPLAY FOOTNOTES [,D,],0
       LTRREF(3)=1H[
          LTRREF(4)=1H]
          MRKFTN=1
          IFNNUM=0
    C
  C     NO .DEBUG COMMAND IS ACTIVE
      IDEBUG=0
    C
  C     NO INDEX FILE IS OPEN
       NDXOPN=0
          NDXKNT=0
          NDXMAK=0
    C
  C     INDICATE THAT OUTPUT BUFFER IS EMPTY
       LNGMID=0
          KPYMID=0
    C
  C     NO .NO SPACE COMMAND ACTIVE
      KONECT=0
    C
  C     .SPACE TOP 0,2,3
       MRGTOP=0
          IGAPHI=2
          MINTOP=3
          LNGTOP=MINTOP
          ITTLHI=MRGTOP
          ISUBHI=0
    C
  C     .SPACE BOTTOM 1
        IGAPLO=1
    C
  C     TOP AND BOTTOM TITLE COMMANDS INACTIVE
          J=1
          DO 12 I=1,2
       LSTTTL(J)=1
       LSTTTL(J+1)=1
          LSTTTL(J+2)=0
          LSTTTL(J+3)=0
          LSTTTL(J+4)=1
          J=J+5
     12 CONTINUE
          DO 13 I=3,16
      LSTTTL(J)=0
       LSTTTL(J+1)=0
          LSTTTL(J+2)=-1
         LSTTTL(J+3)=-1
         LSTTTL(J+4)=-1
         J=J+5
     13 CONTINUE
          DO 14 I=1,16
      KNDTTL(I)=0
    14 CONTINUE
          MSKTTL(1)=-1
      ITTLLO=-1
         ISUBLO=-1
         LNGTTL=1
          KNDLFT=1
          KNDRIT=1
          IFLSUB=0
          IFRSUB=0
          LRADJS=0
          LRFORC=-1
         LFTRIT=0
          RETURN
       END
          SUBROUTINE RNONDX
C     RENBR(/CONSTRUCT INDEX)
    C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
        DIMENSION IHEADR(8),JHEADR(8),KHEADR(8),ILETTR(300)
 C
        IF(KOMAND.EQ.132)GO TO 3
         IF(KOMAND.EQ.55)GO TO 2
          IF(KOMAND.NE.504)GO TO 122
 C
  C     ENTRY IF SIMULATING DO INDEX COMMAND
     1 IVALUE=0
          IMINUS=0
          NVALUE(1)=0
       NMINUS(1)=0
       KNTARG=0
    C
  C     ENTRY FOR DO INDEX COMMAND
     2 IF(NDXKNT.LE.0)GO TO 122
         I=NDXHOW
          NDXHOW=KNDPAG
          KNDPAG=I
          NEWPAG=NULTTL
          NDXMAK=NXTPAG
          NXTPAG=1
          LRADJS=LFTRIT+NOWSUB
        IF(ISUBPG.LT.0)GO TO 4
      ISUBPG=ISUBPG-2
        NXTSUB=1
          GO TO 4
C
  C     ENTRY FOR PRINT INDEX COMMAND
       3 IF(NDXKNT.LE.0)GO TO 122
   C
  C     CONVERT TITLE LINE TO UPPER CASE
    4 IF(KNTARG.LE.0)GO TO 11
          IF(NMINUS(KNTARG).LE.0)GO TO 11
       IF(INITAL.LT.0)GO TO 11
          I=NVALUE(KNTARG)
       N=I+NMINUS(KNTARG)-1
        K=0
        5 MSKBIT=MSKBGN(I)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 6
      K=0
          GO TO 10
        6 IF(K.EQ.0)GO TO 7
      IF(KAPITL.LT.0)GO TO 10
        7 MSKBIT=MSKBGN(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 9
      LTRNOW=LTRBGN(I)
       DO 8 M=1,26
       IF(LTRNOW.NE.LWRABC(M))GO TO 8
        LTRBGN(I)=LTRABC(M)
         GO TO 9
    8 CONTINUE
        9 K=1
       10 I=I+1
        IF(I.LE.N)GO TO 5
C
  C     TEST IF ALREAY BEYOND RANGE OF DESIRED PAGES
      11 IF(KRANGE.LT.0)GO TO 12
          IF(KNTPAG.LT.JRANGE)GO TO 13
          IF(NDXMAK.NE.0)GO TO 12
          IF(NEWPAG.NE.0)GO TO 12
          IF(KNTTOP.LT.0)GO TO 12
          IF(IFPAGE.LE.0)GO TO 13
          I=((NOWTST-1)*ISPACE)+NOWTST
          IF(NMINUS(1).GT.0)I=I+1+NDXTWO
        IF(ISKIP.GE.0)I=I+ISKIP+NDXTHR
        IF((LOCPAG+I).GT.LNGPAG)GO TO 12
      GO TO 13
    C
  C     DELETE INDEX FILE IF ALREADY BEYOND PAGE RANGE
    12 CALL RNOFIL(5,3,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
   C
  C     INSURE THAT CANNOT PUT ANYTHING ELSE ON LAST PAGE
         CALL RNOBOT
       CALL RNOTOP
       GO TO 121
   C
  C     CLOSE INDEX FILE, KEEPING IT FOR SORTING
     13 CALL RNOFIL(5,2,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
   C
  C     *****************************************************
    C     *                                                   *
    C     *  SPLIT FILE INTO 2 FILES CONTAINING SORTED PAIRS  *
    C     *                                                   *
    C     *****************************************************
    C
        ICOUNT=NDXKNT
       14 CALL RNOFIL(5,4,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         JCOUNT=0
          KCOUNT=0
       15 IF(ICOUNT.LE.0)GO TO 28
          ICOUNT=ICOUNT-1
        READ(NDXDSK,16)IHEADR
    16 FORMAT(8I5)
       ILNGTH=IHEADR(8)
       READ(NDXDSK,17)(ILETTR(I),I=1,ILNGTH)
   17 FORMAT(24I3)
   18 IF(ICOUNT.LE.0)GO TO 21
          ICOUNT=ICOUNT-1
        READ(NDXDSK,16)JHEADR
       JLNGTH=JHEADR(8)
       READ(NDXDSK,17)(NUMNDX(I),I=1,JLNGTH)
      CALL RNOCMP(NUMNDX,ILNGTH,ILETTR,JLNGTH,LMTNDX,
     1IDIFFR)
      IF(IDIFFR.LT.0)GO TO 19
          IF(IDIFFR.GT.0)GO TO 20
          IF(IHEADR(1).LT.JHEADR(1))GO TO 19
         IF(IHEADR(1).GT.JHEADR(1))GO TO 20
         NDXKNT=NDXKNT-1
        GO TO 18
    C     FIRST LINE LOWEST IN ALPHABET
      19 IFIRST=-1
         GO TO 22
    C     FIRST LINE HIGHEST IN ALPHABET
     20 IFIRST=1
          GO TO 22
    C     ONLY 1 LINE LEFT IN FILE
      21 IFIRST=0
       22 CONTINUE
    C
  C     WRITE SORTED PAIR OF LINES TO OUTPUT FILE
       IF(JCOUNT.GT.KCOUNT)GO TO 25
          IF(JCOUNT.GT.0)GO TO 23
          CALL RNOFIL(1,1,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       23 IF(IFIRST.GT.0)GO TO 24
          WRITE(KDISK,16)IHEADR
       WRITE(KDISK,17)(ILETTR(I),I=1,ILNGTH)
      JCOUNT=JCOUNT+1
        IF(IFIRST.EQ.0)GO TO 15
       24 WRITE(KDISK,16)JHEADR
       WRITE(KDISK,17)(NUMNDX(I),I=1,JLNGTH)
      JCOUNT=JCOUNT+1
        IF(IFIRST.LE.0)GO TO 15
          WRITE(KDISK,16)IHEADR
       WRITE(KDISK,17)(ILETTR(I),I=1,ILNGTH)
      JCOUNT=JCOUNT+1
        GO TO 15
       25 IF(KCOUNT.GT.0)GO TO 26
          CALL RNOFIL(2,1,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       26 IF(IFIRST.GT.0)GO TO 27
          WRITE(LDISK,16)IHEADR
       WRITE(LDISK,17)(ILETTR(I),I=1,ILNGTH)
      KCOUNT=KCOUNT+1
        IF(IFIRST.EQ.0)GO TO 15
       27 WRITE(LDISK,16)JHEADR
       WRITE(LDISK,17)(NUMNDX(I),I=1,JLNGTH)
      KCOUNT=KCOUNT+1
        IF(IFIRST.LE.0)GO TO 15
          WRITE(LDISK,16)IHEADR
       WRITE(LDISK,17)(ILETTR(I),I=1,ILNGTH)
      KCOUNT=KCOUNT+1
        GO TO 15
    C
  C     STEP 2, MERGE THE 2 FILES WITH SORTED REGIONS
     28 IF(KCOUNT.LE.0)GO TO 51
          CALL RNOFIL(5,6,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,2,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,2,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
    C
  C     ***********************************************
C     *                                             *
C     *  READ SPLIT FILES AND WRITE COMPOSITE FILE  *
C     *                                             *
C     ***********************************************
C
        NDXSIZ=2
          ICOUNT=0
       29 CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,4,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,4,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       30 JCONTN=NDXSIZ
          IF(JCONTN.GT.JCOUNT)JCONTN=JCOUNT
          KCONTN=NDXSIZ
          IF(KCONTN.GT.KCOUNT)KCONTN=KCOUNT
          IF(JCONTN.LE.0)GO TO 31
          JCONTN=JCONTN-1
        JCOUNT=JCOUNT-1
        READ(KDISK,16)IHEADR
        ILNGTH=IHEADR(8)
       READ(KDISK,17)(ILETTR(I),I=1,ILNGTH)
       GO TO 35
       31 ILNGTH=0
          GO TO 35
       32 IF(ILNGTH.LE.0)GO TO 34
          IF(JLNGTH.LE.0)GO TO 33
          CALL RNOCMP(NUMNDX,ILNGTH,ILETTR,JLNGTH,LMTNDX,
     1IDIFFR)
      IF(IDIFFR.LT.0)GO TO 33
          IF(IDIFFR.GT.0)GO TO 34
          IF(IHEADR(1).LT.JHEADR(1))GO TO 33
         IF(IHEADR(1).GT.JHEADR(1))GO TO 34
   C
  C     COPY ITEM FROM FIRST FILE INTO COMPOSITE IF LOWEST
     33 ICOUNT=ICOUNT+1
        WRITE(NDXDSK,16)IHEADR
      WRITE(NDXDSK,17)(ILETTR(I),I=1,ILNGTH)
          IF(JCONTN.LE.0)GO TO 36
          JCONTN=JCONTN-1
        JCOUNT=JCOUNT-1
        READ(KDISK,16)IHEADR
        ILNGTH=IHEADR(8)
       READ(KDISK,17)(ILETTR(I),I=1,ILNGTH)
       GO TO 32
    C
  C     COPY ITEM FROM SECOND FILE INTO COMPOSITE IF LOWEST
    34 ICOUNT=ICOUNT+1
        WRITE(NDXDSK,16)JHEADR
      WRITE(NDXDSK,17)(NUMNDX(I),I=1,JLNGTH)
       35 IF(KCONTN.LE.0)GO TO 37
          KCONTN=KCONTN-1
        KCOUNT=KCOUNT-1
        READ(LDISK,16)JHEADR
        JLNGTH=JHEADR(8)
       READ(LDISK,17)(NUMNDX(I),I=1,JLNGTH)
       GO TO 32
       36 ILNGTH=0
          IF(JLNGTH.GT.0)GO TO 34
          GO TO 38
       37 JLNGTH=0
          IF(ILNGTH.GT.0)GO TO 33
       38 IF((JCOUNT+KCOUNT).GT.0)GO TO 30
      CALL RNOFIL(5,2,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,6,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,6,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
    C
  C
  C     ***************************************************
 C     *                                                 *
 C     *  READ COMPOSITE FILE AND WRITE THE SPLIT FILES  *
 C     *                                                 *
 C     ***************************************************
 C
        NDXSIZ=2*NDXSIZ
        IF(ICOUNT.LE.NDXSIZ)GO TO 44
          CALL RNOFIL(5,4,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,1,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,1,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       39 IF(ICOUNT.LE.0)GO TO 43
          IF(JCOUNT.GT.KCOUNT)GO TO 41
          JCONTN=NDXSIZ
          IF(JCONTN.GT.ICOUNT)JCONTN=ICOUNT
       40 READ(NDXDSK,16)IHEADR
       ILNGTH=IHEADR(8)
       READ(NDXDSK,17)(ILETTR(I),I=1,ILNGTH)
      WRITE(KDISK,16)IHEADR
       WRITE(KDISK,17)(ILETTR(I),I=1,ILNGTH)
      JCONTN=JCONTN-1
        JCOUNT=JCOUNT+1
        ICOUNT=ICOUNT-1
        IF(JCONTN.GT.0)GO TO 40
          GO TO 39
       41 KCONTN=NDXSIZ
          IF(KCONTN.GT.ICOUNT)KCONTN=ICOUNT
       42 READ(NDXDSK,16)IHEADR
       ILNGTH=IHEADR(8)
       READ(NDXDSK,17)(ILETTR(I),I=1,ILNGTH)
      WRITE(LDISK,16)IHEADR
       WRITE(LDISK,17)(ILETTR(I),I=1,ILNGTH)
      KCONTN=KCONTN-1
        KCOUNT=KCOUNT+1
        ICOUNT=ICOUNT-1
        IF(KCONTN.GT.0)GO TO 42
          GO TO 39
       43 CALL RNOFIL(5,6,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,2,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,2,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          GO TO 29
    C
  C     ***********************************************
C     *                                             *
C     *  CULL OUT DUPLICATE ENTRIES IN SORTED FILE  *
C     *                                             *
C     ***********************************************
C
     44 CALL RNOFIL(5,4,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,1,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       45 IF(ICOUNT.LE.0)GO TO 51
          ICOUNT=ICOUNT-1
        READ(NDXDSK,16)IHEADR
       ILNGTH=IHEADR(8)
       READ(NDXDSK,17)(ILETTR(I),I=1,ILNGTH)
      IF(JCOUNT.EQ.0)GO TO 48
          DO 46 I=1,8
       IF(IHEADR(I).NE.JHEADR(I))GO TO 48
      46 CONTINUE
          DO 47 I=1,ILNGTH
       IF(ILETTR(I).NE.NUMNDX(I))GO TO 48
      47 CONTINUE
          GO TO 45
       48 DO 49 I=1,8
       JHEADR(I)=IHEADR(I)
      49 CONTINUE
          DO 50 I=1,ILNGTH
       NUMNDX(I)=ILETTR(I)
      50 CONTINUE
          JCOUNT=JCOUNT+1
        WRITE(KDISK,16)IHEADR
       WRITE(KDISK,17)(ILETTR(I),I=1,ILNGTH)
      GO TO 45
    C
  C     ALL THROUGH SORTING
      51 CALL RNOFIL(5,6,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
         CALL RNOFIL(1,2,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
    C
  C     *************************
  C     *                       *
  C     *  CONSTRUCT THE INDEX  *
  C     *                       *
  C     *************************
  C
        CALL RNOFIL(1,4,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          ILNGTH=0
          IFBACK=-1
         NDXTTL=-1
         IF(NDXMAK.NE.0)GO TO 101
         IF(NEWPAG.NE.0)GO TO 101
         IF(KNTTOP.LT.0)GO TO 101
         IF(ISKIP.GE.0)ISKIP=ISKIP+NDXTHR
      I=((NOWTST-1)*ISPACE)+NOWTST
          IF(NMINUS(1).GT.0)I=I+1+NDXTWO
        IF(ISKIP.GT.0)I=I+ISKIP
          IF(IFPAGE.LE.0)GO TO 52
          IF((LOCPAG+I).GT.LNGPAG)GO TO 101
       52 IF(NDXMAK.NE.0)ISKIP=NDXONE
      NDXTTL=0
          IF(KNTARG.LE.0)GO TO 60
          IF(NMINUS(1).LE.0)GO TO 60
    53 IF(ISKIP.LE.0)GO TO 54
      KNDOUT=3
          CALL RNOLIN
       ISKIP=ISKIP-1
          GO TO 53
       54 NEEDED=((MRGFAR-NMINUS(1))/2)
         LNGWRK=0
          IF(NEEDED.LE.0)GO TO 56
          DO 55 I=1,NEEDED
       IF(LNGWRK.GE.LMTWRK)GO TO 58
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
       MSKWRK(LNGWRK)=0
    55 CONTINUE
       56 I=NVALUE(1)
       J=I+NMINUS(1)-1
        DO 57 K=I,J
       IF(LNGWRK.GE.LMTWRK)GO TO 58
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRBGN(K)
         MSKWRK(LNGWRK)=MSKBGN(K)
      57 CONTINUE
       58 KNDOUT=4
          CALL RNOLIN
    59 IF(IFPAGE.LT.0)IFPAGE=1
          ISKIP=NDXTWO
   60 IF(IFPAGE.LE.0)GO TO 61
          IF((LOCPAG+ISKIP).GE.LNGPAG)GO TO 101
   61 NDXTTL=1
       62 JCOUNT=JCOUNT-1
        IF(JCOUNT.LT.0)GO TO 70
          READ(KDISK,16)JHEADR
        IF(JHEADR(6).EQ.0)JHEADR(7)=0
         JLNGTH=JHEADR(8)
       READ(KDISK,17)(NUMNDX(I),I=1,JLNGTH)
       IF(ILNGTH.EQ.0)GO TO 95
          IF(ILNGTH.NE.JLNGTH)GO TO 70
          IF(IHEADR(1).EQ.0)GO TO 70
       DO 63 I=1,ILNGTH
       IF(ILETTR(I).NE.NUMNDX(I))GO TO 70
      63 CONTINUE
          IF((IHEADR(1)+NDXSAM+1).NE.JHEADR(1))GO TO 71
        IF(IHEADR(2).NE.JHEADR(2))GO TO 71
         IF(IHEADR(3).NE.JHEADR(3))GO TO 71
         IF(IHEADR(5).NE.JHEADR(5))GO TO 71
         IF(IHEADR(7).NE.JHEADR(7))GO TO 71
         IF(IHEADR(7).EQ.0)GO TO 64
       IF(IHEADR(4).NE.JHEADR(4))GO TO 71
         IF((IHEADR(6)+NDXSAM+1).NE.JHEADR(6))GO TO 71
        GO TO 65
       64 IF((IHEADR(4)+NDXSAM+1).NE.JHEADR(4))GO TO 71
     65 NDXSAM=NDXSAM+1
        GO TO 62
       66 IF(IHEADR(7).EQ.0)GO TO 67
       IHEADR(6)=IHEADR(6)+NDXSAM
       GO TO 68
       67 IHEADR(4)=IHEADR(4)+NDXSAM
    68 NDXSAM=-NDXSAM
         IF(IHEADR(3).EQ.0)GO TO 69
       IF((LNGWRK+4).GT.LMTWRK)GO TO 84
      LNGWRK=LNGWRK+4
        LTRWRK(LNGWRK-3)=LTRSPA
          LTRWRK(LNGWRK-2)=1Ht
        LTRWRK(LNGWRK-1)=1Ho
        LTRWRK(LNGWRK)=LTRSPA
       GO TO 74
       69 IF(LNGWRK.GE.LMTWRK)GO TO 84
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=1H-
          GO TO 74
       70 NDXNEW=1
       71 IF(IHEADR(1).EQ.0)GO TO 77
       IF(NDXLIN.EQ.0)GO TO 73
          IF(LNGWRK.GE.LMTWRK)GO TO 82
          IF(LNGWRK.LT.MRGRIT)GO TO 72
          IF(NDXLIN.GT.1)GO TO 82
          IF(NDXSHO.NE.0)GO TO 82
       72 LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=1H,
          NDXLST=LNGWRK
          NDXINI=NDXLST
          IF(IFPAGE.LT.0)IFPAGE=1
          IF(LNGWRK.GE.LMTWRK)GO TO 84
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
    73 NDXLIN=NDXLIN+1
     74 IF(IHEADR(3).LE.0)GO TO 75
       KONTRL=IHEADR(3)
       NUMBER=IHEADR(2)
       NDXTST=LNGWRK
          CALL RNONUM(KONTRL,NUMBER,LTRWRK,LNGWRK,LMTWRK)
      IF(LNGWRK.LE.NDXTST)GO TO 84
          IF(LNGWRK.GE.LMTWRK)GO TO 84
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=1H-
       75 IF(IHEADR(5).LE.0)GO TO 76
       KONTRL=IHEADR(5)
       NUMBER=IHEADR(4)
       NDXTST=LNGWRK
          CALL RNONUM(KONTRL,NUMBER,LTRWRK,LNGWRK,LMTWRK)
      IF(LNGWRK.LE.NDXTST)GO TO 84
       76 IF(IHEADR(7).LE.0)GO TO 77
       KONTRL=IHEADR(7)
       NUMBER=IHEADR(6)
       NDXTST=LNGWRK
          CALL RNONUM(KONTRL,NUMBER,LTRWRK,LNGWRK,LMTWRK)
      IF(LNGWRK.LE.NDXTST)GO TO 84
       77 IF(NDXSAM.GT.0)GO TO 66
          IF(LNGWRK.LE.MRGRIT)GO TO 78
          IF(NDXLIN.GT.1)GO TO 88
          IF(NDXSHO.NE.0)GO TO 88
       78 IF(NDXRTN.GT.0)GO TO 80
          NDXINI=LNGWRK
          NDXRNG=NDXSAM
          DO 79 I=1,8
       KHEADR(I)=IHEADR(I)
      79 CONTINUE
          GO TO 85
       80 NDXINI=LNGWRK
          NDXSAM=NDXRNG
          DO 81 I=1,8
       IHEADR(I)=KHEADR(I)
      81 CONTINUE
          NDXRTN=0
          GO TO 71
    C
  C     LINE OVERFLOWS WHEN ADD COMMA TO RIGHT OF NUMBER
    C     SO MUST REGENERATE BOTH OLD AND NEW NUMBERS LATER
      82 NDXINI=NDXLST
          J=NDXSAM
          NDXSAM=NDXRNG
          NDXRNG=J
          DO 83 I=1,8
       J=IHEADR(I)
       IHEADR(I)=KHEADR(I)
         KHEADR(I)=J
    83 CONTINUE
          LNGWRK=NDXINI
          NDXRTN=1
          GO TO 97
    C
  C     LINE OVERFLOWS WHEN CONSTRUCTING A NUMBER
 C     SO IT IS THIS NUMBER WHICH MUST BE REGNERATED LATER
    84 IF(NDXLIN.GT.1)GO TO 88
          IF(NDXSHO.NE.0)GO TO 88
       85 DO 86 I=1,8
       IHEADR(I)=JHEADR(I)
      86 CONTINUE
          NDXSAM=0
          IF(NDXNEW.LE.0)GO TO 62
          IF(IFPAGE.LT.0)IFPAGE=1
          NDXRTN=-1
         GO TO 97
       87 IF(JCOUNT.LT.0)GO TO 119
         NDXLIN=0
          NDXNEW=0
          IF(IFPAGE.LE.0)GO TO 103
         IF((LOCPAG+ISKIP).GE.LNGPAG)GO TO 99
       GO TO 103
      88 LNGWRK=NDXINI
          NDXRTN=0
          GO TO 97
       89 NDXSHO=0
          MRKRIT=0
          NDXLIN=0
          IF(NDXSAM.GE.0)GO TO 91
          NDXSAM=-NDXSAM
         IF(IHEADR(7).EQ.0)GO TO 90
       IHEADR(6)=IHEADR(6)-NDXSAM
       GO TO 91
       90 IHEADR(4)=IHEADR(4)-NDXSAM
    91 IF(IFPAGE.LE.0)GO TO 92
          IF((LOCPAG+ISKIP).GE.LNGPAG)GO TO 100
   92 IF(ISKIP.LE.0)GO TO 93
      KNDOUT=3
          CALL RNOLIN
       ISKIP=ISKIP-1
          GO TO 92
       93 LNGWRK=0
          IF(NDXLMT.LE.0)GO TO 71
          DO 94 I=1,NDXLMT
       IF(LNGWRK.GE.LMTWRK)GO TO 71
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
    94 CONTINUE
          GO TO 71
       95 DO 96 I=1,8
       IHEADR(I)=JHEADR(I)
      96 CONTINUE
          NDXLIN=0
          NDXSAM=0
          NDXNEW=0
          GO TO 103
   C
  C     OUTPUT SINGLE LINE OF INDEX
   97 IF(MRKRIT.GE.LNGWRK)GO TO 98
          MRKRIT=MRKRIT+1
        MSKWRK(MRKRIT)=0
       GO TO 97
       98 KNDOUT=4
          CALL RNOLIN
 C
  C     UNDERSCORES WERE GENERATED AT THIS POINT IN AN
 C     EARLIER VERSION OF THIS ROUTINE.  THE FOLLOWING
C     VARIABLES WERE KEPT AROUND FOR THIS PURPOSE.
   C
  C     NDXSHO = 0, CURRENT LINE CONTAINS NUMBERS ONLY.
C            = 1, CURRENT LINE CONTAINS INDEXED PHRASE
    C     NDXLFT = LOCATION TO LEFT OF THAT IN ILETTR ARRAY
   C              FROM WHICH FIRST LETTER IN CURRENT LINE
    C              WAS OBTAINED.
C     ILNGTH = FINAL LOCATION IN ILETTR ARRAY FROM WHICH
  C              LETTERS IN CURRENT LINE WERE OBTAINED.
C     NDXXTR = NUMBER OF LEADING SPACES BEFORE THE
   C              COPIED LETTERS.
   C
        ISKIP=ISPACE
      IF(IFMORE.GT.0)GO TO 113
         IF(NDXRTN.LT.0)GO TO 87
          GO TO 89
    C
  C     GENERATE TITLES AT TOP OF PAGE
     99 ILNGTH=0
          GO TO 101
     100 IFBACK=0
      101 CALL RNOBOT
       CALL RNOTOP
       IF(KRANGE.LT.0)GO TO 119
   C
  C     GENERATE DEFERRED PAGE
      IDFRPG=IDFRPG+JDFRPG
        JDFRPG=0
          IF(IDFRPG.LE.0)GO TO 102
         IDFRPG=IDFRPG-1
        GO TO 101
     102 NEWCHA=0
          ISKIP=0
      IF(NDXTTL.LT.0)GO TO 52
          IF(NDXTTL.EQ.0)GO TO 61
    C
  C     COPY NAME OF ITEM TO BE INDEXED INTO OUTPUT LINE
      103 CALL RNOCHR(MRGLFT,IFBACK,IFMORE,ILETTR,ILNGTH,
     1    NUMNDX,JLNGTH,IDIFFR,NDXLFT,NDXXTR,JDIFFR)
       I=(IFMORE*(ISPACE+1))+ISKIP
      IF(IDIFFR.NE.0)I=I+1
        IF(IFPAGE.LE.0)GO TO 104
         IF((LOCPAG+I).GE.LNGPAG)GO TO 99
  104 IF(IDIFFR.EQ.0)GO TO 105
         ISKIP=ISKIP+1
          IF(IFPAGE.LE.0)GO TO 105
         IF((LOCPAG+ISKIP).GE.LNGPAG)GO TO 99
 C
  C     INSERT SPACES BEFORE THE NEW INDEX ENTRY
    105 IF(ISKIP.LE.0)GO TO 106
          KNDOUT=3
          CALL RNOLIN
       ISKIP=ISKIP-1
          GO TO 105
   C
  C     COPY THE NEW INDEX ENTRY INTO LTRWRK AND MSKWRK ARRAYS
     106 NDXLMT=NDXXTR
          LNGWRK=0
      107 IF(NDXXTR.LE.0)GO TO 108
         IF(LNGWRK.GE.LMTWRK)GO TO 108
         NDXXTR=NDXXTR-1
        LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
       MSKWRK(LNGWRK)=0
       GO TO 107
     108 IF(NDXLFT.GE.ILNGTH)GO TO 112
         IF(LNGWRK.GE.LMTWRK)GO TO 112
         NDXLFT=NDXLFT+1
        MASKED=ILETTR(NDXLFT)
       IF(MASKED.LT.0)GO TO 112
         LNGWRK=LNGWRK+1
        KODE=MASKED/2
          MASKED=MASKED-(2*KODE)
      MSKBIT=0
          IF(MASKED.NE.0)CALL RNOPAK(2,MSKBIT)
       MSKWRK(LNGWRK)=MSKBIT
       IF(KODE.GT.0)GO TO 109
      LTRWRK(LNGWRK)=LTRSPA
       GO TO 108
     109 IF(KODE.GT.53)GO TO 111
          I=KODE/2
          IF(KODE.NE.(2*I))GO TO 110
       LTRWRK(LNGWRK)=LTRABC(I)
         GO TO 108
     110 LTRWRK(LNGWRK)=LWRABC(I)
         GO TO 108
     111 LTRWRK(LNGWRK)=LTRCOD(KODE-53)
        GO TO 108
     112 CONTINUE
          MRKRIT=LNGWRK
          NDXSHO=1
          IF(IFMORE.EQ.0)GO TO 114
         GO TO 97
      113 IF(IFPAGE.LE.0)GO TO 103
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 103
      GO TO 101
   C
  C     CONSTRUCT LINE OF DOTS TO RIGHT OF NAME OF ITEM
  114 JDIFFR=IHEADR(1)
       IF(JDIFFR.EQ.0)GO TO 62
          NDXLST=LNGWRK
          NDXINI=NDXLST
          IF(KNDNDX.GE.0)GO TO 117
         NDXLMT=MRGLFT+((MRGRIT-MRGLFT)/2)
          I=LNGWRK-NDXLMT
        J=I/2
        NDXODD=I-(2*J)
         NDXEND=NDXLMT
          IF(NDXEND.LT.(LNGWRK+2))NDXEND=LNGWRK+2
         IF(NDXEND.GT.LMTWRK)NDXEND=LMTWRK
          IF(LNGWRK.GE.NDXEND)GO TO 118
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
       IF(NDXODD.NE.0)GO TO 116
     115 IF(LNGWRK.GE.NDXEND)GO TO 118
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
   116 IF(LNGWRK.GE.NDXEND)GO TO 118
         IF(LNGWRK.GE.NDXLMT)GO TO 115
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=1H.
          GO TO 115
   C
  C     INSERT SINGLE COMMA TO RIGHT OF WORD OR PHRASE
   117 NDXLMT=NDXLMT+4
        IF(LNGWRK.GE.LMTWRK)GO TO 118
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=1H,
          IF(LNGWRK.GE.LMTWRK)GO TO 118
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
   118 IF(IFBACK.LT.0)GO TO 62
          IFBACK=-1
         GO TO 71
    C
  C     DELETE THE SORTED FILE OF INDEX ENTRIES WHEN ALL DONE
      119 CALL RNOFIL(1,6,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          IF(NDXMAK.NE.0)GO TO 120
         ISKIP=ISKIP+NDXFOU
          GO TO 121
     120 CALL RNOBOT
   121 NDXKNT=0
          IF(NDXMAK.EQ.0)GO TO 122
   C
  C     RESTORE PAGE NUMBERS AFTER DO INDEX COMMAND
          NOWPAG=NDXMAK
          NXTPAG=NDXMAK
          NDXMAK=0
          I=NDXHOW
          NDXHOW=KNDPAG
          KNDPAG=I
          NOWPHW=KNDPAG
          LRADJS=NXTPAG+1-LFTRIT
  122 RETURN
 C     NDXLIN = NUMBER OF NUMBERS OR RANGES ON THE CURRENT
 C              LINE
    C     NDXSHO = 0, WHILE CONSTRUCTING A LINE OF NUMBERS
    C              WITHOUT A LEADING WORD
 C            = 1, WHILE CONSTRUCTING A LINE OF NUMBERS
    C              WHICH HAS THE WROD INDEXED ON SAME LINE
          END
          SUBROUTINE RNOBIG(MAGFNT,MAGLIN,JSTIFY,IFILL ,MAGSPC,
         1    MOVE  ,ISPACE,LTRBGN,MAGBGN,LNGBGN,LFTCOL,IWIDTH,
         2    LMTMID,LTRMID,LNGMID,MAGHIH,MAGOVR,MSKBGN,MRKMAG,
         3    LTRMAG)
 C     RENBR(/CONSTRUCT LARGE MULTI-LINE LETTERING)
   C
  C     DONALD BARTH, CHEMISTRY DEPT., HARVARD UNIVERSITY
   C     DEVELOPED AT AIKEN COMPUTER LABORATORY
    C
  C     DDDDD         AAA TTTTTTTT EEEEEEEE XX    XX TTTTTTTT
    C     DD   DD      AAAA    TT    EE        XX  XX     TT
  C     DD    DD    AA AA    TT    EE         XXXX      TT
  C     DD    DD   AA  AA    TT    EEEEE       XX       TT
  C     DD    DD  AAAAAAA    TT    EE         XXXX      TT
  C     DD   DD  AA    AA    TT    EE        XX  XX     TT
  C     DDDDD   AA     AA    TT    EEEEEEEE XX    XX    TT
  C
  C     ROUTINE TO  PRODUCE MULTIPLE  LINE PRINTED  LETTERING
    C     SIMILAR TO THAT USED FOR THE ABOVE TITLE.
 C
  C     THIS ROUTINE  MUST BE  USED  WITH A  BLOCK  DATA FONT
    C     CREATED BY THE PROGRAM DAFONT.
  C
  C     MAGFNT = NUMBER SELECTING DESIRED FONT.  MAGFNT = 3
 C              WOULD SELECT THIRD FONT OF ALL THOSE WHICH
 C              ARE LOADED.
  C     MAGLIN = THE LINE WITHIN  THE  LETTER  REPRESENTATION
    C              WHICH   IS   TO   BE   PLACED  INTO  LTRMID.
    C              CHARACTERS ARE A TOTAL OF IHIGH LINES  HIGH.
    C              TO   PRINT   A  LETTER  OR  LETTERS,  IT  IS
    C              NECESSARY TO CALL DATEXT  IHIGH  TIMES  WITH
    C              LINE   VALUES  1  THROUGH  IHIGH,  WITH  THE
    C              CALLING PROGRAM PRINTING LTRMID ARRAY  AFTER
    C              EACH  RETURN  FROM  DATEXT.  THIS ALLOWS THE
    C              INSERTION OF THE  CONSTRUCTED  LETTERS  INTO
    C              OTHER TEXT OR OTHER FORMS.
  C            = 0, REPRESENT HIGHEST  VALUED  LINE.   MAGLIN
    C              MUST BE SET TO  MAGHIH-1 BEFORE THIS ROUTINE
    C              IS AGAIN CALLED.
  C     JSTIFY = -1, LEFT JUSTIFY THE  LETTER REPRESENTATIONS
    C              IN A FIELD OF WIDTH IWIDTH.
 C            = 0, CENTER  THE LETTER  REPRESENTATIONS  IN A
    C              FIELD OF WIDTH IWIDTH.
 C            = 1, RIGHT JUSTIFY  THE LETTER REPRESENTATIONS
    C              IN A FIELD OF WIDTH IWIDTH.
 C     IFILL  = 0, IF  LEFT  JUSITIFYING  OR  CENTERING  THE
    C              LETTERING, DO NOT FILL THE UNUSED PORTION OF
    C              THE FIELD  RIGHT  OF LETTER  REPRESENTATIONS
    C              WITH SPACES. LNGMID WILL BE LEFT POINTING TO
    C              RIGHT END OF RIGHTMOST LETTER REPESENTATION.
    C            = 1, IF LEFT JUSIFYING OR CENTERING THE LETTER
    C              REPRESENTATIONS,  DO FILL THE UNUSED PORTION
    C              OF  FIELD  RIGHT  OF LETTER  REPRESENTATIONS
    C              WITH SPACES.  LNGMID  WILL BE  LEFT POINTING
    C              LFTCOL+IWIDTH.
    C     MAGSPC = THE NUMBER OF SPACE (BLANK) CHARACTERS TO BE
    C              INSERTED BETWEEN REPRESENTED CHARACTERS
    C     MOVE   = -2, CHARACTERS WHICH  ARE NARROWER THAN  THE
    C              WIDEST CHARACTER  ARE CENTERED  WITHIN WIDTH
    C              OF WIDEST CHARACTER.  NO WHITE SPACE ADJUST-
    C              MENT OF  POSITIONS  IS TO BE  MADE.   SPACES
    C              WILL ALSO BE WIDTH OF THE WIDEST CHARACTER.
C            = -1, CHARACTERS WHICH  ARE NARROWER THAN MOST
    C              COMMON WIDTH  WILL BE CENTERED  WITHIN  MOST
    C              COMMON WIDTH.   NO WHITE SPACE ADJUSTMENT OF
    C              POSITIONS  IS TO  BE MADE.  SPACES WILL ALSO
    C              BE WIDTH WHICH IS MOST COMMON.
   C            = 0, NORMAL INTER-CHARACTER SPACING IS ACCEPT-
    C              ABLE WITHOUT WHITE SPACE ADJUSTMENT.
  C            = 1, ADJUST SPACE BETWEEN CHARACTERS TO EQUAL-
    C              IZE WHITE SPACES.
 C     ISPACE = -1, REPRESENT  BOTH INITIAL AND FINAL SPACES
    C              IN LTRBGN ARRAY.
  C            = 0, REPRESENT INITIAL SPACES IN LTRBGN ARRAY.
    C              SUPPRESS FINAL SPACES IN LTRBGN ARRAY.
C            = 1, SUPPRESS BOTH INITIAL AND FINAL SPACES IN
    C              LTRBGN ARRAY.
C     LTRBGN = ARRAY CONTAINING LETTERS TO BE  REPRESENTED,
    C              1 LETTER PER WORD, AS READ BY MULTIPLE OF A1
    C              FORMAT.  SINCE  THE  LETTERING  PRODUCED  BY
    C              THIS  ROUTINE IS LARGE, TERMINAL SPACES  ARE
    C              IGNORED UNLESS  ISPACE=-1.  NOTE THAT LNGMID
    C              EQUALS LFTCOL IF LTRBGN CONTAINS ONLY SPACES
    C              AND ISPACE IS GREATER THAN OR EQUAL TO ZERO,
    C              AND IFILL IS EQUAL TO ZERO.
 C     MAGBGN = SEQUENCE NUMBER WITHIN LTRBGN ARRAY OF FIRST
    C              LETTER   TO  BE  REPRESENTED  (THIS  IS  THE
    C              SUBSCRIPT OF THE LTRBGN  ARRAY AT WHICH  THE
    C              FIRST LETTER IS TO BE FOUND)
C     LNGBGN = SEQUENCE NUMBER WITHIN LTRBGN ARRAY OF FINAL
    C              LETTER   TO  BE  REPRESENTED  (THIS  IS  THE
    C              SUBSCRIPT OF THE LTRBGN ARRAY AT  WHICH  THE
    C              FINAL LETTER IS TO BE FOUND)
C     LFTCOL = SUBSCRIPT OF OUTPUT BUFFER ARRAY LOCATION TO
    C              LEFT OF 1ST LOCATION INTO WHICH THIS ROUTINE
    C              CAN PLACE REPRESENTATION OF CONTENTS OF  THE
    C              LTRBGN ARRAY.
C     IWIDTH = THE WIDTH OF THE FIELD INTO WHICH THE LETTER
    C              REPRESENTATIONS CAN BE PLACED.   THE MAXIMUM
    C              VALUE WITH WHICH LNGMID CAN THEN BE RETURNED
    C              IS LFTCOL+IWIDTH OR LMTMID, WHICHEVER IS THE
    C              SMALLER.
C     LMTMID = MAXIMUM SUBSCRIPT OF  LTRMID  ARRAY LOCATION
    C              INTO WHICH  CAN BE PLACED  REPRESENTATION
  C              OF CONTENTS OF LTRBGN ARRAY.
C
  C     THE FOLLOWING ARGUMENTS ARE USED FOR OUTPUT.
   C
  C     LTRMID = THE ARRAY INTO WHICH IS  TO  BE  PLACED  THE
    C              REPRESENTATION OF THE LETTERS IN LTRBGN.
   C     LNGMID = RETURNED BY DATEXT CONTAINING THE NEW NUMBER
    C              OF LOCATIONS IN USE  AFTER  THE  LETTERS  IN
    C              LTRBGN HAVE BEEN REPRESENTED IN LTRMID.
    C     MAGHIH = RETURNED CONTAINING THE  MAXIMUM VALUE WHICH
    C              MAGLIN CAN  ATTAIN (IHIGH). THIS WILL DEPEND
    C              ON WHICH  FONT HAS  BEEN LOADED.   MAGHIH IS
    C              RETURNED AS ZERO IF FONT HAS NOT BEEN LOADED
    C     MAGOVR = RETURNED CONTAINING THE SUBSCRIPT WITHIN THE
    C              LTRBGN ARRAY OF  FIRST  LETTER WHICH WAS NOT
    C              REPRESENTED.   IF ALL LETTERS REQUESTED WERE
    C              REPRESENTED THEN MAGOVR WILL EQUAL LNGBGN+1.
    C              IF NOT ALL LETTERS COULD BE  REPRESENTED DUE
    C              TO THE VALUE OF IWIDTH BEING TOO SMALL, THEN
    C              MAGOVR WILL POINT TO THE FIRST  LETTER WHICH
    C              WOULD NOT FIT.
    C
        COMMON/RNOTWE/LTRFNT( 204)
       COMMON/RNOTHI/LOCKED,KNTFNT,ICLMNS( 204),
      1ILIMIT(   3),ILINES(   3),IMAXMM(   3),
        2ICOMMN(   3),IPACKD(1428)
  C
        DIMENSION LTRBGN(LNGBGN),LTRMID(LMTMID),
       1MSKBGN(LNGBGN),LTRDGT(10),LTRMOD(10)
       DATA LTRMOD/1HA,1HE,1HF,1HH,1HL,1HN,1HU,1HV,1HW,1H=/
      DATA LTRDGT/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9/
      DATA LTRSPA/1H /
 C
        MAGOVR=MAGBGN
          LNGMID=LFTCOL
          IF(LOCKED.NE.999)GO TO 64
        NEWFNT=MAGFNT
          IF(NEWFNT.LE.0)NEWFNT=1
          IF(NEWFNT.GT.KNTFNT)NEWFNT=KNTFNT
          MAXFNT=ILIMIT(NEWFNT)
       IHIGH=ILINES(NEWFNT)
        IWIDE=ICOMMN(NEWFNT)
        JWIDE=IMAXMM(NEWFNT)
        INIFNT=0
          IBELOW=0
          IF(NEWFNT.LE.1)GO TO 2
      INIFNT=ILIMIT(NEWFNT-1)
          I=0
          J=0
        1 I=I+1
        IF(I.GE.NEWFNT)GO TO 2
      IBELOW=IBELOW+(ILINES(I)*(ILIMIT(I)-J))
         J=ILIMIT(I)
       GO TO 1
    2 MAGHIH=IHIGH
      NOWLIN=MAGLIN
          IF(NOWLIN.LE.0)NOWLIN=IHIGH
      IF(NOWLIN.GT.IHIGH)GO TO 65
      IUSED=LFTCOL
      IWHITE=MOVE
       KWIDE=IWIDE
       IF(IWHITE.LE.-2)KWIDE=JWIDE
      JSPACE=MAGSPC
          IF(JSPACE.LT.0)JSPACE=0
          LAST=0
       KSPACE=0
          NEED=0
       MAXKNT=IUSED+IWIDTH
         IF(MAXKNT.GT.LMTMID)MAXKNT=LMTMID
          IFCASE=1
          NOWVRT=1
          NOWHRZ=1
          KASATO=0
          LWIDE=KWIDE
       NOWTST=0
          GO TO 5
C
  C     FIND OUT IF CAN REPRESENT THE LETTER
     3 KSPACE=JSPACE
          LAST=MATCH
        LSTVRT=NOWVRT
          LSTHRZ=NOWHRZ
          LSTLNG=NOWLNG
        4 MAGOVR=MAGOVR+1
      5 IF(MAGOVR.GT.LNGBGN)GO TO 60
          LTRNOW=LTRBGN(MAGOVR)
       IF(LTRNOW.EQ.LTRSPA)GO TO 9
      IF(MRKMAG.LE.0)GO TO 6
      IF(LTRNOW.NE.LTRMAG)GO TO 6
      MSKBIT=MSKBGN(MAGOVR)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 15
        6 MATCH=INIFNT
      KNTKAS=0
        7 MATCH=MATCH+1
          IF(MATCH.GT.MAXFNT)GO TO 8
       IF(LTRNOW.NE.LTRFNT(MATCH))GO TO 7
         KNTKAS=KNTKAS+1
        IF(KNTKAS.GE.IFCASE)GO TO 29
          LSTKAS=MATCH
      GO TO 7
    8 IF(KNTKAS.GT.0)GO TO 28
          GO TO 10
    C
  C     REPRESENT SPACE OR UNKNOWN CHARACTER
     9 IF(KASATO.GE.0)GO TO 10
          KASATO=-KASATO
         IFCASE=KASATO-IFCASE
     10 IF(ISPACE.LE.0)GO TO 11
          IF(LAST.EQ.0)GO TO 4
     11 KSPACE=KSPACE+LWIDE
         IF(ISPACE.GE.0)GO TO 14
          I=KSPACE
          IF(IWHITE.LE.0)GO TO 12
          IF(LAST.NE.0)I=I-JSPACE
       12 IF((IUSED+I).GT.MAXKNT)GO TO 60
    13 IF(I.LE.0)GO TO 14
          I=I-1
        KSPACE=KSPACE-1
        IUSED=IUSED+1
          LTRMID(IUSED)=LTRSPA
        GO TO 13
       14 IF(IWHITE.LE.0)KSPACE=KSPACE+JSPACE
        GO TO 4
C
  C     DOLLAR CONTROL CHARACTER FOUND
     15 MAGOVR=MAGOVR+1
        IF(MAGOVR.GT.LNGBGN)GO TO 60
          LTRNOW=LTRBGN(MAGOVR)
       IF(LTRNOW.EQ.LTRMAG)GO TO 6
      DO 16 I=1,10
      IF(LTRNOW.NE.LTRMOD(I))GO TO 16
       GO TO(22,25,21,20,27,23,26,19,24,18),I
       16 CONTINUE
          DO 17 I=2,10
      IF(LTRNOW.NE.LTRDGT(I))GO TO 17
       IFCASE=I-1
        KASATO=0
          GO TO 4
   17 CONTINUE
          GO TO 4
   18 NOWVRT=1
          NOWHRZ=1
          IFCASE=1
          KASATO=0
          LWIDE=KWIDE
       IWHITE=MOVE
       GO TO 4
   19 NOWVRT=-1
         GO TO 4
   20 NOWHRZ=-1
         GO TO 4
   21 IF(IWHITE.GT.0)IWHITE=0
          GO TO 4
   22 IF(IWHITE.EQ.0)IWHITE=1
          GO TO 4
   23 LWIDE=KWIDE/2
          GO TO 4
   24 LWIDE=(3*KWIDE)/2
      GO TO 4
   25 IF(KASATO.LT.0)IFCASE=-KASATO-IFCASE
       KASATO=0
          GO TO 4
   26 IF(KASATO.EQ.0)KASATO=(4*((IFCASE+1)/2))-1
      IF(KASATO.GT.0)GO TO 4
      KASATO=-KASATO
         IFCASE=KASATO-IFCASE
        GO TO 4
   27 IF(KASATO.LT.0)GO TO 4
      IF(KASATO.EQ.0)KASATO=(4*((IFCASE+1)/2))-1
      IFCASE=KASATO-IFCASE
        KASATO=-KASATO
         GO TO 4
C
  C     PREPARE TO PLOT CHARACTER
     28 MATCH=LSTKAS
   29 IF(KASATO.LE.0)GO TO 30
          IFCASE=KASATO-IFCASE
        KASATO=-KASATO
      30 NOWLNG=ICLMNS(MATCH)
  C
  C     DETERMINE OPTIMUM SPACING
  C
  C     SKIP AROUND THIS CODE IF NORMAL
 C     INTER-CHARACTER SPACING IS ACCEPTABLE
C     WITHOUT WHITE AREA ADJUSTMENT.
  C     THE CALCULATIONS ARE DESIGNED TO PRODUCE
  C     DISTANCES OF THE SORT
 C
  C                  4
   C                  34
  C                  234
 C                  1234
C                  01234
    C                 X01234
    C                  01234
    C                  1234
C                  234
 C                  34
  C                  4
   C
  C     THE FIRST LOOP CATCHES THE MOST COMMON CASE OF
 C     2 CHARACTERS TOUCHING ON THE SAME LINE.  THE
   C     SECOND LONGER LOOP CATCHES THIS CASE AND ALL
   C     OTHERS AND COULD BE USED BY ITSELF.
        IF(IWHITE.LT.0)GO TO 49
          IF(JSPACE.EQ.0)GO TO 50
          LSTTST=NOWTST
          NOWTST=2**(NOWLNG-1)
        IF(LAST.EQ.0)GO TO 50
       IF(IWHITE.EQ.0)GO TO 50
          MIN=JSPACE
        ISTART=(IHIGH*(LAST-1-INIFNT))+IBELOW
      JSTART=(IHIGH*(MATCH-1-INIFNT))+IBELOW
          IF(LSTVRT.EQ.NOWVRT)GO TO 31
          LSTVRT=-1
         ISTART=ISTART+IHIGH+1
       GO TO 32
       31 LSTVRT=1
       32 IINDEX=ISTART
          JINDEX=JSTART
          DO 36 I=1,IHIGH
        IINDEX=IINDEX+LSTVRT
        JINDEX=JINDEX+1
        K=IPACKD(IINDEX)
       IF(LSTHRZ.LT.0)GO TO 33
          IF(K.EQ.(2*(K/2)))GO TO 36
       GO TO 34
       33 IF(K.LT.LSTTST)GO TO 36
       34 K=IPACKD(JINDEX)
       IF(NOWHRZ.GT.0)GO TO 35
          IF(K.EQ.(2*(K/2)))GO TO 36
       GO TO 50
       35 IF(K.GE.NOWTST)GO TO 50
       36 CONTINUE
          DO 48 I=1,IHIGH
        ISTART=ISTART+LSTVRT
        K=IPACKD(ISTART)
       IF(K.EQ.0)GO TO 48
          IF(LSTHRZ.GT.0)GO TO 38
          IDIST=LSTLNG
   37 K=K/2
        IDIST=IDIST-1
          IF(K.NE.0)GO TO 37
          GO TO 40
       38 IDIST=0
   39 L=K/2
        IF((L+L).NE.K)GO TO 40
      K=L
          IDIST=IDIST+1
          GO TO 39
       40 N=JSTART
          DO 47 J=1,IHIGH
        N=N+1
        K=IPACKD(N)
       IF(K.EQ.0)GO TO 47
          IF(NOWHRZ.GT.0)GO TO 42
          JDIST=IDIST
    41 L=K/2
        IF((L+L).NE.K)GO TO 44
      K=L
          JDIST=JDIST+1
          GO TO 41
       42 JDIST=IDIST+NOWLNG
       43 K=K/2
        JDIST=JDIST-1
          IF(K.NE.0)GO TO 43
       44 IF(I.GT.J)GO TO 45
          IF(I.EQ.J)GO TO 46
          JDIST=JDIST+J-I-1
      GO TO 46
       45 JDIST=JDIST+I-J-1
   46 IF(MIN.LE.JDIST)GO TO 47
         IF(JDIST.LE.0)GO TO 50
      MIN=JDIST
      47 CONTINUE
       48 CONTINUE
          KSPACE=KSPACE-MIN
      GO TO 50
    C
  C     ADJUST CENTERING OF NARROW CHARACTERS IF NEEDED
   49 IF(NOWLNG.GE.KWIDE)GO TO 50
      IF((IUSED+KSPACE+KWIDE).GT.MAXKNT)GO TO 60
      NEED=(KWIDE-NOWLNG)/2
       KSPACE=KSPACE+NEED
          NEED=KWIDE-NEED-NOWLNG
C
  C     CONSTRUCT LETTER
    50 IF((IUSED+KSPACE+NOWLNG).GT.MAXKNT)GO TO 60
       51 IF(KSPACE.LE.0)GO TO 52
          KSPACE=KSPACE-1
        IUSED=IUSED+1
          LTRMID(IUSED)=LTRSPA
        GO TO 51
       52 I=(IHIGH*(MATCH-1-INIFNT))+NOWLIN+IBELOW
        IF(NOWVRT.LT.0)I=I+IHIGH-NOWLIN-NOWLIN+1
        I=IPACKD(I)
       LIMIT=NOWLNG
      IF(NOWHRZ.LT.0)GO TO 56
          IUSED=IUSED+NOWLNG
          J=IUSED
   53 IF(LIMIT.LE.0)GO TO 59
      LIMIT=LIMIT-1
          K=I/2
        IF((K+K).EQ.I)GO TO 54
      LTRMID(J)=LTRNOW
       GO TO 55
       54 LTRMID(J)=LTRSPA
    55 J=J-1
        I=K
          GO TO 53
       56 IF(LIMIT.LE.0)GO TO 59
      LIMIT=LIMIT-1
          IUSED=IUSED+1
          K=I/2
        IF((K+K).EQ.I)GO TO 57
      LTRMID(IUSED)=LTRNOW
        GO TO 58
       57 LTRMID(IUSED)=LTRSPA
     58 I=K
          GO TO 56
       59 IF(NEED.LE.0)GO TO 3
        NEED=NEED-1
       IUSED=IUSED+1
          LTRMID(IUSED)=LTRSPA
        GO TO 59
    C
  C     ALL LETTERS REPRESENTED, JUSTIFY AND FILL
    60 NEED=0
       IF(JSTIFY.GE.0)NEED=MAXKNT-IUSED
      IF(JSTIFY.EQ.0)NEED=NEED/2
       NEED=IUSED+NEED
        INIKNT=LNGMID
          LNGMID=NEED
       IF(IFILL.GT.0)LNGMID=MAXKNT
      I=LNGMID
       61 IF(I.LE.NEED)GO TO 62
       LTRMID(I)=LTRSPA
       I=I-1
        GO TO 61
       62 IF(IUSED.LE.INIKNT)GO TO 63
      LTRMID(I)=LTRMID(IUSED)
          I=I-1
        IUSED=IUSED-1
          GO TO 62
       63 IF(I.LE.INIKNT)GO TO 65
          LTRMID(I)=LTRSPA
       I=I-1
        GO TO 63
    C
  C     RETURN TO CALLING PROGRAM
     64 MAGHIH=0
       65 RETURN
       END
          SUBROUTINE RNOALL
C     RENBR(/ALL FROFF FEATURES EXCEPT INDEX CONSTRUCTION)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     CHECK IF JUST COMPLETED AN INDEX
      IF(LEVEL0.EQ.3)GO TO 16
          IF(LEVEL0.EQ.7)GO TO 2
      IF(LEVEL0.NE.6)GO TO 1
      IF(MASTER.EQ.3)GO TO 8
C
  C     GET NEXT COMMAND OR NEXT LINE OF TEXT
C     MASTER = LT.7, GET NEXT COMMAND OR NEW LINE OF TEXT
 C            = 7 THROUGH 9, GET REST OF TEXTUAL ARGUMENT OF
    C              COMMAND
 C            = 7, GET REST OF AN UNQUOTED STRING INCLUDING
C              PERIODS BUT NOT SEMICOLONS
  C            = 8, GET REST OF AN UNQUOTED STRING INCLUDING
C              ALL CHARACTERS
    C            = 9, GET REST OF A QUOTED TEXT STRING FOR
    C              WHICH THE FINAL DELIMITER CHARACTER HAS NOT
C              BEEN FOUND.  CHARACTERS ARE PROCESSED UP TO
C              THE NEXT PERIOD OR SEMICOLON AT A ZERO
C              DELIMITER COUNT.
      1 MASTER=0
        2 CALL RNOGET
 C     MASTER = 0, TEXT RETURNED
  C            = 1, END OF FILE READ
    C            = 2, DOT COMMAND FOUND OR REST OF TEXTUAL
    C              ARGUMENT OF SUCH A COMMAND FOUND
       IF(MASTER.LE.0)GO TO 13
          IF(MASTER.EQ.11)GO TO 12
         IF(MASTER.EQ.12)GO TO 22
         IF(MASTER.GE.6)GO TO 7
      GO TO(3,7,4,5,6),MASTER
        3 KOMAND=5
          GO TO 23
        4 KOMAND=46
         GO TO 8
    5 KOMAND=36
         IVALUE=0
          IMINUS=0
          KNTARG=0
          GO TO 8
    6 KOMAND=503
        MAJOR=0
      GO TO 15
    C
  C     IDENTIFY DOT COMMAND AND EVALUATE ITS ARGUMENTS
C     MASTER = INPUT VALUE IS IGNORED
     7 CALL RNOHOW
 C     MASTER = 0, TREAT COMAND AS LITERAL LINE OF TEXT
    C            = 1, LEGAL COMMAND
  C            = 7 THRU 9, NEED REST OF TEXTUAL ARGUMENT OF
 C              COMMAND
 C            = 6, ILLEGAL COMMAND OR ILLEGAL ARGUMENT
      IF(MASTER.GE.6)GO TO 2
      IF(MASTER.EQ.0)GO TO 2
      IF(KOMAND.EQ.5)GO TO 23
    C
  C     SIMULATE COMMANDS REQUIRED BY OTHERS
     8 MAJOR=KMDBRK(KOMAND)
        IF(MAJOR.EQ.0)GO TO 11
      MAJOR=NXTPNT(MAJOR)
         NXTONE=KOMAND
          IF(KOMAND.NE.5)GO TO 9
      IF(KNDFIL.GT.0)GO TO 11
        9 KOMAND=NXTCMD(MAJOR)
        MAJOR=MAJOR+1
          IF(KOMAND.EQ.0)GO TO 10
          IF(KOMAND.GT.0)GO TO 15
          MASTER=-KOMAND
         GO TO 13
       10 KOMAND=NXTONE
          MAJOR=0
      GO TO 15
       11 MAJOR=0
      GO TO 15
       12 MASTER=1
       13 CALL RNOPUT
 C     MASTER = RETURNED UNCHANGED
      IF(MASTER.EQ.0)GO TO 2
      IF(MASTER.LT.0)GO TO 14
          IF(MASTER.NE.1)GO TO 9
      IF(NSKIP.NE.0)GO TO 14
      IF(MAGNFY.GT.0)GO TO 14
          IF(LSTTRN.NE.0)GO TO 14
          GO TO 9
   14 MASTER=11
         GO TO 2
C
  C     APPLY DOT COMMAND
C     MASTER = NOT USED, AND RETURNED UNCHANGED
 C     KOMAND = 55, DO INDEX COMMAND
   C            = 132 PRINT INDEX COMMAND
C            = 504, SIMULATE DO INDEX COMMAND
      15 IF(KOMAND.EQ.55)GO TO 20
         IF(KOMAND.EQ.132)GO TO 20
        IF(KOMAND.EQ.504)GO TO 20
        CALL RNOSET
 C     KOMAND = 5, END OF FILE COMMAND OR REAL END OF FILE
 C            = 39, RESET COMMAND
 C            = 65, SPLICE COMMAND
C            = 87, RESET ALL COMMAND
        IF(KOMAND.EQ.65)GO TO 21
      16 IF(MAJOR.GT.0)GO TO 9
       IF(KOMAND.EQ.39)GO TO 18
         IF(KOMAND.EQ.87)GO TO 17
         IF(KOMAND.EQ.503)GO TO 2
         IF(KOMAND.NE.5)GO TO 1
C
  C     CLOSE OUTPUT FILES WHEN DONE
          LEVEL0=1
          GO TO 24
    C
  C     CALL RNONEW TO INITIALIZE OR RESET VARIABLES
      17 MASTER=1
          GO TO 19
       18 MASTER=2
       19 LEVEL0=4
          GO TO 24
    C
  C     CONSTRUCT INDEX
     20 LEVEL0=3
          GO TO 24
    C
  C     OPEN SPLICE FILE
    21 LEVEL0=2
          GO TO 24
    C
  C     CONSTRUCT LINE OF LARGE LETTERING
       22 LEVEL0=7
          GO TO 24
    C
  C     TEST IF NEED ANOTHER FILE ON END OF FILE
     23 IF(KNDFIL.GT.0)GO TO 8
      LEVEL0=6
    C
  C     RETURN TO MAIN PROGRAM
   24 RETURN
       END
          SUBROUTINE RNOGET
C     RENBR(/READ INPUT AND CONSTRUCT LINE OF OUTPUT TEXT)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     GET WORD WHICH OVERFLOWED LINE WHEN .NO SPACE GIVEN
       IF(KONECT.GE.0)GO TO 5
      IF(LNGMID.GT.0)GO TO 5
      IF(ISKIP.LE.0)GO TO 1
       IF(IFPAGE.LE.0)GO TO 430
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 430
      IF(NEWPAG.EQ.0)NEWPAG=1
          ISKIP=-1
        1 KONECT=1
        2 IF(LNGFTN.GT.LMTMID)LNGFTN=LMTMID
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
          LNGMID=0
          KNTSPC=0
          NEEDED=MRGLFT
          IF(NEEDED.GT.(LMTMID-LNGFTN))NEEDED=LMTMID-LNGFTN
         IF(NEEDED.LE.0)GO TO 4
      DO 3 I=1,NEEDED
        LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=LTRSPA
     3 CONTINUE
        4 LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRFTN(LNGFTN)
         MSKMID(LNGMID)=MSKFTN(LNGFTN)
         LNGFTN=LNGFTN-1
        IF(LNGFTN.GT.0)GO TO 4
C
      5 IF(MASTER.GT.6)GO TO 46
          MASTER=0
          KASFLG=0
          IF(LINFIG.EQ.0)GO TO 8
      IF(JFILL.EQ.0)GO TO 6
       IF(KNDTRN.EQ.0)GO TO 6
      GO TO(340,8,8,229,8,8,263,8,8),KNDTRN
    6 IF(ISKIP.GT.0)GO TO 430
          IF(IFNOTE.NE.0)GO TO 7
      INIBAR=NOWBAR
          GO TO 430
       7 IF(NOWBAR.NE.0)IFABAR=NOWBAR
          GO TO 430
       8 IF(JSKIP.EQ.0)GO TO 13
      GO TO(140,393,414,142,10,415,421,173,141),JSKIP
    9 IF(JSKIP.EQ.0)GO TO 13
      IF(KPYBGN.LT.LNGBGN)GO TO 142
         LNGBGN=KPYKAS
          ISTART=KPYKAS
          KPYBGN=LNGBGN
          IF(KNTLVL.LT.IRUNIN)GO TO 413
         JSKIP=0
      KSKIP=1
      IF((LNGMID+2).LE.MRGRIT)GO TO 12
      JSKIP=5
      GO TO 185
      10 JSKIP=0
      NEEDED=MRGLFT+1
        IF(NEEDED.GT.LMTMID)NEEDED=LMTMID
          DO 11 I=1,NEEDED
       LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRSPA
       MSKMID(LNGMID)=0
    11 CONTINUE
          LTRMID(LNGMID)='-'
          KNTSPC=0
          GO TO 13
       12 LNGMID=LNGMID+1
        LTRMID(LNGMID)=' '
          MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       MSKMID(LNGMID)=MSKBIT
       LNGMID=LNGMID+1
        LTRMID(LNGMID)='-'
          MSKMID(LNGMID)=0
       KNTSPC=KNTSPC+1
     13 IF(KPYBGN.LT.LNGBGN)GO TO 142
         IF(LMTKAS.LT.MAXBGN)GO TO 45
          IF(IFSPLC.LE.0)GO TO 18
    C
  C     READ LINE OF INPUT FROM SPLICE FILE
        KNDFIL=1
          MAXBGN=LNGSPL
          IF(KRANGE.LT.0)GO TO 426
         IF(IWIZRD.EQ.0)READ(NDISK,20,END=426)(LTRBGN(I),I=1,MAXBGN)
         IF(IWIZRD.NE.0)READ(IDISK,20,END=426)(LTRBGN(I),I=1,MAXBGN)
         IF(LINSPL.GT.0)GO TO 17
          LSNSPL=0
          DO 15 I=1,5
       LTRNOW=LTRBGN(I)
       DO 14 J=1,10
      IF(LTRNOW.EQ.LTRDGT(J))GO TO 15
    14 CONTINUE
          GO TO 17
       15 CONTINUE
          LTRNOW=LTRBGN(6)
       IF(LTRNOW.EQ.LTRSPA)GO TO 17
          IF(LTRNOW.NE.LTRTAB)GO TO 17
    D     WRITE(ITTY,16)
   D  16 FORMAT(' Splice file is line sequence numbered')
          LSNSPL=6
          LNGSPL=LNGSPL+LSNSPL
        IF(LNGSPL.GT.LMTBGN)LNGSPL=LMTBGN
       17 LINSPL=LINSPL+1
        KNTSPL=KNTSPL+1
        IF(KNTSPL.EQ.MAXSPL)IFSPLC=-1
         LNGBGN=LSNSPL
          GO TO 29
    C
  C     READ LINE OF INPUT FROM SCRATCH FILE USED FOR LOOP
     18 IF(IFLOOP.GE.0)GO TO 21
          KNDFIL=-1
         IF(KNDSPL.NE.0)GO TO 26
          IF(IFLOOP.EQ.-1)CALL RNOFIL(3,4,MDISK,NXTUNT,LMTUNT,
     1ITTY,JTTY,IDFILE)
      IFLOOP=-2
         READ(MDISK,19)MAXBGN
     19 FORMAT(1I3)
       IF(MAXBGN.GT.0)READ(MDISK,20)(LTRBGN(I),I=1,MAXBGN)
    20 FORMAT(300A1)
          LNGBGN=0
          GO TO 44
    C
  C     READ LINE OF INPUT FROM PRIMARY SOURCE FILE
       21 KNDFIL=0
          IF(KNDSPL.NE.0)GO TO 26
          MAXBGN=LNGSRC
          IF(KRANGE.LT.0)GO TO 426
         READ(IDISK,20,END=426)(LTRBGN(I),I=1,MAXBGN)
         IF(KNTLIN.GT.0)GO TO 25
          LSNSRC=0
          DO 23 I=1,5
       LTRNOW=LTRBGN(I)
       DO 22 J=1,10
      IF(LTRNOW.EQ.LTRDGT(J))GO TO 23
    22 CONTINUE
          GO TO 25
       23 CONTINUE
          LTRNOW=LTRBGN(6)
       IF(LTRNOW.EQ.LTRSPA)GO TO 25
          IF(LTRNOW.NE.LTRTAB)GO TO 25
    D     WRITE(ITTY,24)
   D  24 FORMAT(' Input file is line sequence numbered')
      LSNSRC=6
          LNGSRC=LNGSRC+LSNSRC
        IF(LNGSRC.GT.LMTBGN)LNGSRC=LMTBGN
       25 KNTLIN=KNTLIN+1
        LNGBGN=LSNSRC
          GO TO 29
    C
  C     RESTORE REST OF LINE RIGHT OF .SPLICE FROM PRIMARY INPUT
    26 DO 27 I=1,LSTSPL
       LTRBGN(I)=LTRSPL(I)
      27 CONTINUE
          MAXBGN=LSTSPL
          LNGBGN=LSNSRC
          IF(KNDSPL.GE.0)GO TO 28
          KNDSPL=0
          KPYBGN=LSNSRC
          KPYKAS=LSNSRC
          LMTKAS=LSNSRC+1
        GO TO 140
      28 KNDSPL=0
          GO TO 44
    C
  C     FIND RIGHTMOST PRINTING CHARACTER READ FROM INPUT FILE
      29 J=MAXBGN
       30 IF(LTRBGN(MAXBGN).EQ.LTRSPA)GO TO 31
       IF(LTRBGN(MAXBGN).NE.LTRTAB)GO TO 32
    31 MAXBGN=MAXBGN-1
        IF(MAXBGN.GT.LNGBGN)GO TO 30
       32 IF(MAXBGN.LE.(J-5))GO TO 43
      IF(MAXBGN.LE.LNGBGN)GO TO 43
          IF(KNDFIL.GT.0)GO TO 36
          IF(IDEBUG.NE.0)GO TO 35
          IF(LSNSRC.EQ.0)WRITE(ITTY,33)KNTLIN
        IF(LSNSRC.GT.0)WRITE(ITTY,34)(LTRBGN(I),I=1,5)
    33 FORMAT(6H Line ,1I5,18H probably too long)
   34 FORMAT(6H Line ,5A1,18H probably too long)
      GO TO 39
       35 IF(LSNSRC.EQ.0)WRITE(JDISK,33)KNTLIN
       IF(LSNSRC.GT.0)WRITE(JDISK,34)(LTRBGN(I),I=1,5)
      GO TO 42
       36 IF(IDEBUG.NE.0)GO TO 41
          IF(LSNSPL.EQ.0)WRITE(ITTY,37)LINSPL
        IF(LSNSPL.GT.0)WRITE(ITTY,38)(LTRBGN(I),I=1,5)
    37 FORMAT(13H Splice line ,1I5,18H probably too long)
     38 FORMAT(13H Splice line ,5A1,18H probably too long)
     39 J=LNGBGN+1
        WRITE(ITTY,40)(LTRBGN(I),I=J,MAXBGN)
    40 FORMAT(3X,300A1)
       GO TO 43
       41 IF(LSNSPL.EQ.0)WRITE(JDISK,37)LINSPL
       IF(LSNSPL.GT.0)WRITE(JDISK,38)(LTRBGN(I),I=1,5)
   42 J=LNGBGN+1
        WRITE(JDISK,40)(LTRBGN(I),I=J,MAXBGN)
C
  C     COPY LINE TO SCRATCH FILE IF IN RANGE OF LOOP COMMAND
       43 IF(KNDFIL.NE.0)GO TO 44
          IF(IFLOOP.LE.0)GO TO 44
          IF(IFLOOP.EQ.1)CALL RNOFIL(3,1,MDISK,NXTUNT,LMTUNT,
      1ITTY,JTTY,IDFILE)
      IFLOOP=2
          J=MAXBGN-LNGBGN
        WRITE(MDISK,19)J
       J=LNGBGN+1
        IF(MAXBGN.GT.LNGBGN)WRITE(MDISK,20)(LTRBGN(I),I=J,MAXBGN)
C
  C     SET POINTERS TO START OF LINE JUST READ IN
   44 LMTKAS=LNGBGN
          KPYKAS=LNGBGN
          NOTSEM=LNGBGN
          KPYPRT=LNGBGN
          KPYBGN=LNGBGN
       45 ISTART=KPYKAS+1
        KOMENT=0
          GO TO 47
    C
  C     GET REST OF TEXTUAL ARGUMENT OF DOT COMMAND
       46 IF(MASTER.EQ.11)GO TO 217
        IF(MASTER.EQ.12)GO TO 214
        IF(MASTER.EQ.10)MASTER=0
         I=ITLALL
          ITLALL=INIALL
          INIALL=I
          I=ITLLIN
          ITLLIN=INILIN
          INILIN=I
          I=ITLNXT
          ITLNXT=ININXT
          ININXT=I
          I=ITLSPA
          ITLSPA=INISPA
          INISPA=I
          I=LOKSUP
          LOKSUP=INIHIA
          INIHIA=I
          I=LCLSUP
          LCLSUP=INIHIB
          INIHIB=I
    C
  C     GET NEXT CHARACTER FROM LINE READ FROM INPUT FILE
   C     KOMENT = -1, IN COMMAND
    C            = 0, NOT IN COMMAND, OR EXTENDING REST OF TEXTUAL
 C              OF PREVIOUSLY FOUND COMMAND
 C            = 1, IN COMMENT FOLLOWING COMMAND
     47 LMTKAS=LMTKAS+1
        IF(LMTKAS.GT.MAXBGN)GO TO 137
         LTRNOW=LTRBGN(LMTKAS)
       IF(KOMENT.EQ.0)GO TO 54
          IF(IQUOTE.NE.0)GO TO 53
          IF(MRKSEM.LE.0)GO TO 48
          IF(LTRNOW.EQ.LTRSEM)GO TO 131
      48 IF(KOMENT.GT.0)GO TO 54
          IF(LTRNOW.EQ.LTRDOT)GO TO 130
      49 IF(MRKEXC.LE.0)GO TO 50
          IF(LTRNOW.EQ.LTREXC)GO TO 51
       50 IF(IFENCE.EQ.0)GO TO 54
          IF(LTRNOW.EQ.LTRFNC)GO TO 52
          GO TO 54
       51 KOMENT=1
          GO TO 86
       52 IQUOTE=1
          GO TO 86
       53 IF(LTRNOW.NE.LTRTXT)GO TO 54
          IQUOTE=0
          GO TO 86
       54 IF(JFILL.EQ.6)GO TO 86
   55 IF(LTRNOW.EQ.LTRSPA)GO TO 100
         IF(LTRNOW.EQ.LTRTAB)GO TO 98
          IF(MRKNUM.LE.0)GO TO 56
          IF(LTRNOW.EQ.LTRNUM)GO TO 106
      56 IF(MRKUND.LE.0)GO TO 57
          IF(LTRNOW.EQ.LTRUND)GO TO 107
      57 IF(MRKCAR.LE.0)GO TO 58
          IF(LTRNOW.EQ.LTRCAR)GO TO 115
      58 IF(MRKBAC.LE.0)GO TO 59
          IF(LTRNOW.EQ.LTRBAC)GO TO 123
      59 IF(MRKLES.LE.0)GO TO 60
          IF(LTRNOW.EQ.LTRLES)GO TO 94
       60 IF(MRKAMP.LE.0)GO TO 61
          IF(LTRNOW.EQ.LTRAMP)GO TO 95
       61 IF(MRKSUP.LE.0)GO TO 62
          IF(LTRNOW.EQ.LTRSUP)GO TO 96
       62 IF(MRKSUB.LE.0)GO TO 63
          IF(LTRNOW.EQ.LTRSUB)GO TO 97
       63 IF(KASLCL.LT.0)GO TO 64
          IF(KASLCL.GT.0)GO TO 75
    C     KASFLG = 0, NOT IN LESS THAN WORD CAPITALIZATION
    C            = 1, IN RANGE OF LESS THAN WORD CAPITALIZATION
          IF(KASFLG.NE.0)GO TO 75
          IF(KASALL.EQ.0)GO TO 86
    C
  C     ATTEMPT TO CONVERT TO LOWER CASE
C     THIS IS A TERNARY SEARCH TAKING ADVANTAGE OF THE SIZE
    C     OF  ALPHABET BEING NEARLY 3**3.  THE 3RD OF THE ARRAY
    C     CONTAINING THE DESIRED LETTER  IS  FIRST FOUND,  THEN
    C     THE  3RD  OF  THIS  3RD,  AND  FINALLY  EACH  OF  THE
    C     REMAINING 3  LETTERS  ARE  TESTED  INDIVIDUALLY.   TO
    C     PREVENT  TESTING  AGAINST  THE 27TH LETTER WHICH DOES
    C     NOT EXIST, UPPER 3RD  IS  TAKEN  AS  UPPER  9  SORTED
    C     LETTERS,  RATHER THAN FROM 19TH THROUGH 27TH LETTERS,
    C     SO  LTRONU(18)  IS  TESTED  AGAINST IN UPPER 3RD EVEN
    C     THOUGH LETTER BEING MATCHED HAS ALREADY BEEN FOUND TO
    C     BE LARGER THAN THIS.
     64 IF(LTRNOW.GT.LTRONU(18))GO TO 66
      IF(LTRNOW.GT.LTRONU(9))GO TO 65
       IF(LTRNOW.LT.LTRONU(1))GO TO 86
       NXTLST=3
          GO TO 67
       65 NXTLST=12
         GO TO 67
       66 IF(LTRNOW.GT.LTRONU(26))GO TO 86
      NXTLST=20
      67 IF(LTRNOW.LE.LTRONU(NXTLST))GO TO 68
       NXTLST=NXTLST+3
        IF(LTRNOW.GT.LTRONU(NXTLST))NXTLST=NXTLST+3
       68 IF(LTRNOW.EQ.LTRONU(NXTLST))GO TO 69
       NXTLST=NXTLST-1
        IF(LTRNOW.EQ.LTRONU(NXTLST))GO TO 69
       NXTLST=NXTLST-1
        IF(LTRNOW.NE.LTRONU(NXTLST))GO TO 86
    69 KPYKAS=KPYKAS+1
        NOTSEM=KPYKAS
          IF(KOMENT.LE.0)LNGBGN=KPYKAS
          KPYPRT=KPYKAS
          LTRBGN(KPYKAS)=LWRONU(NXTLST)
         MSKBIT=0
          IF(ITLNXT.NE.ITLALL)CALL RNOPAK(2,MSKBIT)
       IF(KASLCL.NE.0)CALL RNOPAK(3,MSKBIT)
       IF(LCLSUP.NE.0)GO TO 70
          IF(LOKSUP.EQ.0)GO TO 74
          IF(LOKSUP.LT.0)GO TO 73
          GO TO 71
       70 IF(LCLSUP.LT.0)GO TO 72
          LCLSUP=LCLSUP-1
     71 CALL RNOPAK(4,MSKBIT)
       GO TO 74
       72 LCLSUP=LCLSUP+1
     73 CALL RNOPAK(5,MSKBIT)
    74 MSKBGN(KPYKAS)=MSKBIT
       IF(ITLNXT.GT.0)ITLNXT=ITLNXT-1
        KASLCL=0
          GO TO 47
    C
  C     ATTEMPT TO CONVERT TO UPPER CASE
   75 IF(LTRNOW.GT.LWRONL(18))GO TO 77
      IF(LTRNOW.GT.LWRONL(9))GO TO 76
       IF(LTRNOW.LT.LWRONL(1))GO TO 86
       NXTLST=3
          GO TO 78
       76 NXTLST=12
         GO TO 78
       77 IF(LTRNOW.GT.LWRONL(26))GO TO 86
      NXTLST=20
      78 IF(LTRNOW.LE.LWRONL(NXTLST))GO TO 79
       NXTLST=NXTLST+3
        IF(LTRNOW.GT.LWRONL(NXTLST))NXTLST=NXTLST+3
       79 IF(LTRNOW.EQ.LWRONL(NXTLST))GO TO 80
       NXTLST=NXTLST-1
        IF(LTRNOW.EQ.LWRONL(NXTLST))GO TO 80
       NXTLST=NXTLST-1
        IF(LTRNOW.NE.LWRONL(NXTLST))GO TO 86
    80 KPYKAS=KPYKAS+1
        NOTSEM=KPYKAS
          IF(KOMENT.LE.0)LNGBGN=KPYKAS
          KPYPRT=KPYKAS
          LTRBGN(KPYKAS)=LTRONL(NXTLST)
         MSKBIT=0
          IF(ITLNXT.NE.ITLALL)CALL RNOPAK(2,MSKBIT)
       IF(KASLCL.NE.0)CALL RNOPAK(3,MSKBIT)
       IF(LCLSUP.NE.0)GO TO 81
          IF(LOKSUP.EQ.0)GO TO 85
          IF(LOKSUP.LT.0)GO TO 84
          GO TO 82
       81 IF(LCLSUP.LT.0)GO TO 83
          LCLSUP=LCLSUP-1
     82 CALL RNOPAK(4,MSKBIT)
       GO TO 85
       83 LCLSUP=LCLSUP+1
     84 CALL RNOPAK(5,MSKBIT)
    85 MSKBGN(KPYKAS)=MSKBIT
       IF(ITLNXT.GT.0)ITLNXT=ITLNXT-1
        KASLCL=0
          GO TO 47
    C
  C     MAINTAIN CASE OF PRINTING CHARACTER
     86 IF(KPYKAS.GE.ISTART)GO TO 88
          IF(LTRNOW.NE.LTRDOT)GO TO 87
          KOMENT=-1
         IQUOTE=0
          IFENCE=0
          ININXT=ITLNXT
          INIALL=ITLALL
          INILIN=ITLLIN
          INISPA=ITLSPA
          INIHIA=LOKSUP
          INIHIB=LCLSUP
          IF(MRKDOT.LE.0)GO TO 88
          IF(JFILL.EQ.6)GO TO 88
      ITLNXT=0
          ITLALL=0
          ITLSPA=0
          LOKSUP=0
          LCLSUP=0
          GO TO 88
       87 IF(IFNOTE.EQ.0)GO TO 88
          IF(MRKEFN.LE.0)GO TO 88
          IF(LTRNOW.NE.LTREFN)GO TO 88
          IF(JFILL.EQ.6)GO TO 88
      MASTER=3
          GO TO 139
      88 KPYKAS=KPYKAS+1
        NOTSEM=KPYKAS
          IF(KOMENT.LE.0)LNGBGN=KPYKAS
          KPYPRT=KPYKAS
          LTRBGN(KPYKAS)=LTRNOW
       MSKBIT=0
          IF(ITLNXT.NE.ITLALL)CALL RNOPAK(2,MSKBIT)
       IF(KASLCL.NE.0)CALL RNOPAK(3,MSKBIT)
       IF(LCLSUP.NE.0)GO TO 89
          IF(LOKSUP.EQ.0)GO TO 93
          IF(LOKSUP.LT.0)GO TO 92
          GO TO 90
       89 IF(LCLSUP.LT.0)GO TO 91
          LCLSUP=LCLSUP-1
     90 CALL RNOPAK(4,MSKBIT)
       GO TO 93
       91 LCLSUP=LCLSUP+1
     92 CALL RNOPAK(5,MSKBIT)
    93 MSKBGN(KPYKAS)=MSKBIT
       IF(ITLNXT.GT.0)ITLNXT=ITLNXT-1
        KASLCL=0
          GO TO 47
    C
  C     LESS THAN SIGN MAY INDICATE FLAGGED UPPER CASE
    94 KASFLG=1-KASFLG
        GO TO 47
    C
  C     AMPERSAND INDICATES NEXT CHARACTER TO BE UNDERLINED
    95 ITLNXT=ITLNXT+1
        IF(LMTKAS.GE.MAXBGN)GO TO 100
         GO TO 47
    C
  C     VERTICAL BAR INDICATES NEXT CHARACTER IS SUPERSCRIPT
   96 LCLSUP=LCLSUP+1
        IF(LMTKAS.GE.MAXBGN)GO TO 100
         GO TO 47
    C
  C     SLASH INDICATES NEXT CHARACTER IS SUBSCRIPT
       97 LCLSUP=LCLSUP-1
        IF(LMTKAS.GE.MAXBGN)GO TO 100
         GO TO 47
    C
  C     SPACE, OR CONVERT TAB TO SPACE
     98 IF(MASTER.GT.0)GO TO 100
         IF(KOMENT.NE.0)GO TO 100
         IF(MAGNFY.NE.0)GO TO 100
         IF(JFILL.EQ.0)GO TO 99
      IF(JFILL.NE.3)GO TO 100
       99 KASFLG=0
          KASLCL=0
          IF(JFILL.NE.0)GO TO 88
  100 IF(KPYKAS.GE.ISTART)GO TO 102
         IF(IFNOTE.NE.0)GO TO 101
         IF(KONECT.EQ.0)GO TO 101
   C     KONECT=0
          GO TO 102
     101 IF(IFAUTO.EQ.1)IFAUTO=-1
     102 KASFLG=0
          KASLCL=0
          IF(ITLNXT.LE.0)GO TO 103
         IF(KPYBGN.GE.KPYKAS)GO TO 103
         MSKBIT=MSKBGN(KPYKAS)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 103
         IF(MASTER.GT.0)GO TO 103
         IF(KOMENT.NE.0)GO TO 103
         IF(MAGNFY.NE.0)GO TO 103
         IF(JFILL.NE.0)GO TO 103
          MSKBIT=MSKBGN(KPYKAS)
       CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 104
         IF(LMTKAS.GT.MAXBGN)GO TO 138
         GO TO 47
      103 KPYKAS=KPYKAS+1
        LTRBGN(KPYKAS)=LTRSPA
       IF(ITLNXT.GT.0)GO TO 104
         IF(ITLALL.EQ.IULSPC)GO TO 105
         MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       MSKBGN(KPYKAS)=MSKBIT
       GO TO 47
      104 ITLNXT=ITLNXT-1
    105 MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       CALL RNOPAK(2,MSKBIT)
       MSKBGN(KPYKAS)=MSKBIT
       IF(KOMENT.LE.0)LNGBGN=KPYKAS
          KPYPRT=KPYKAS
          GO TO 47
    C
  C     TREAT NUMBER SIGN LIKE UNDERSCORE AND SPACE
      106 LTRBGN(LMTKAS)=LTRSPA
       GO TO 108
   C
  C     MAINTAIN CHARACTER FOLLOWING UNDERSCORE
     107 LMTKAS=LMTKAS+1
    108 KASLCL=0
          KPYKAS=KPYKAS+1
        NOTSEM=KPYKAS
          IF(KOMENT.LE.0)LNGBGN=KPYKAS
          KPYPRT=KPYKAS
          MSKBIT=0
          CALL RNOPAK(3,MSKBIT)
       IF(ITLNXT.NE.ITLALL)CALL RNOPAK(2,MSKBIT)
       IF(LCLSUP.NE.0)GO TO 109
         IF(LOKSUP.EQ.0)GO TO 113
         IF(LOKSUP.LT.0)GO TO 112
         GO TO 110
     109 IF(LCLSUP.LT.0)GO TO 111
         LCLSUP=LCLSUP-1
    110 CALL RNOPAK(4,MSKBIT)
       GO TO 113
     111 LCLSUP=LCLSUP+1
    112 CALL RNOPAK(5,MSKBIT)
   113 MSKBGN(KPYKAS)=MSKBIT
       IF(ITLNXT.GT.0)ITLNXT=ITLNXT-1
        IF(LMTKAS.GT.MAXBGN)GO TO 114
         LTRBGN(KPYKAS)=LTRBGN(LMTKAS)
         GO TO 47
      114 LTRBGN(KPYKAS)=LTRSPA
       GO TO 137
   C
  C     NEXT CHARACTER IS TO BE UPPER CASE
     115 IF(LMTKAS.GE.MAXBGN)GO TO 122
         IF(MRKAMP.LE.0)GO TO 116
         IF(LTRBGN(LMTKAS+1).EQ.LTRAMP)GO TO 119
     116 IF(MRKSUP.LE.0)GO TO 117
         IF(LTRBGN(LMTKAS+1).EQ.LTRSUP)GO TO 120
     117 IF(MRKSUB.LE.0)GO TO 118
         IF(LTRBGN(LMTKAS+1).EQ.LTRSUB)GO TO 121
     118 IF(LTRBGN(LMTKAS+1).NE.LTRCAR)GO TO 122
         LMTKAS=LMTKAS+1
        KASALL=0
          KASLCL=0
          GO TO 47
      119 ITLALL=-1
         LMTKAS=LMTKAS+1
        GO TO 47
      120 LOKSUP=1
          LMTKAS=LMTKAS+1
        GO TO 47
      121 LOKSUP=-1
         LMTKAS=LMTKAS+1
        GO TO 47
      122 KASLCL=1
          GO TO 47
    C
  C     NEXT CHARACTER IS TO BE LOWER CASE
     123 IF(LMTKAS.GE.MAXBGN)GO TO 129
         IF(MRKAMP.LE.0)GO TO 124
         IF(LTRBGN(LMTKAS+1).EQ.LTRAMP)GO TO 127
     124 IF(MRKSUP.LE.0)GO TO 125
         IF(LTRBGN(LMTKAS+1).EQ.LTRSUP)GO TO 128
     125 IF(MRKSUB.LE.0)GO TO 126
         IF(LTRBGN(LMTKAS+1).EQ.LTRSUB)GO TO 128
     126 IF(LTRBGN(LMTKAS+1).NE.LTRBAC)GO TO 129
         LMTKAS=LMTKAS+1
        KASALL=1
          KASLCL=0
          GO TO 47
      127 ITLALL=0
          LMTKAS=LMTKAS+1
        GO TO 47
      128 LOKSUP=0
          LMTKAS=LMTKAS+1
        GO TO 47
      129 KASLCL=-1
         GO TO 47
    C
  C     DOT FOLLOWING DOT COMMAND
    130 LMTKAS=LMTKAS-1
        GO TO 139
   C
  C     SEMICOLON FOLLOWING DOT COMMAND
   131 KPYKAS=KPYKAS+1
        KPYPRT=KPYKAS
          LTRBGN(KPYKAS)=LTRNOW
       MSKBIT=0
          IF(ITLNXT.NE.ITLALL)CALL RNOPAK(2,MSKBIT)
       IF(LCLSUP.NE.0)GO TO 132
         IF(LOKSUP.EQ.0)GO TO 136
         IF(LOKSUP.LT.0)GO TO 135
         GO TO 133
     132 IF(LCLSUP.LT.0)GO TO 134
         LCLSUP=LCLSUP-1
    133 CALL RNOPAK(4,MSKBIT)
       GO TO 136
     134 LCLSUP=LCLSUP+1
    135 CALL RNOPAK(5,MSKBIT)
   136 MSKBGN(KPYKAS)=MSKBIT
       IF(ITLNXT.GT.0)ITLNXT=ITLNXT-1
        IF(LMTKAS.EQ.MAXBGN)JSKIP=1
      GO TO 139
   C
  C     ALL CHARACTERS ON LINE HAVE BEEN CONVERTED
  137 IF(ITLNXT.GT.0)GO TO 100
     138 KASFLG=0
      139 KASLCL=0
          GO TO 141
   C
  C     ***************************************************
 C     *                                                 *
 C     *  2ND PASS, WRAP AND JUSTIFY LTRBGN INTO LTRMID  *
 C     *                                                 *
 C     ***************************************************
 C
  C     CONTINUE WITH TEXT AFTER SEMICOLON AFTER COMMAND
      140 JSKIP=0
      KOMENT=0
          ISTART=KPYKAS+1
  C
  C     BRANCH IF COMMAND OR IF IN NOFILL MODE
      141 IF(ITLLIN.EQ.0)GO TO 142
         ITLLIN=0
          ITLALL=0
      142 IF(MASTER.GT.0)GO TO 427
         IF(KOMENT.NE.0)GO TO 425
         IF(IFNOTE.NE.0)GO TO 146
         IF(KNDTRN.EQ.0)GO TO 144
         IF(LINFIG.GT.0)GO TO 143
         IF(ISKIP.LE.0)GO TO 146
      143 IF(LSTTRN.NE.0)GO TO 220
         IF(MAGNFY.NE.0)GO TO 220
         IF(JFILL.NE.0)GO TO 220
      144 IF(ISKIP.LE.0)GO TO 146
      145 IF(IFPAGE.LE.0)GO TO 422
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 422
      IF(NEWPAG.EQ.0)NEWPAG=1
          ISKIP=-1
      146 IF(NXTHDR.NE.0)GO TO 392
         IF(MAGNFY.NE.0)GO TO 213
         IF(JFILL.NE.0)GO TO 191
          IF(KPYBGN.LT.LNGBGN)GO TO 148
         IF(IFNOTE.NE.0)GO TO 147
         IF(KONECT.EQ.0)GO TO 147
         KONECT=0
          GO TO 150
     147 IF(IFAUTO.EQ.1)IFAUTO=-1
         GO TO 150
     148 IF(IFAUTO.EQ.0)GO TO 150
         IF(IFAUTO.GT.0)GO TO 149
         MASTER=4
          GO TO 430
     149 IFAUTO=1
    C
  C     INSERT NEXT WORD INTO LTRMID ARRAY
     150 KPYBGN=KPYBGN+1
        IF(KPYBGN.GT.LNGBGN)GO TO 184
         MSKBIT=MSKBGN(KPYBGN)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 151
         MSKBIT=MSKBGN(KPYBGN)
       CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.NE.0)ITLSPA=1
          GO TO 150
     151 KPYBGN=KPYBGN-1
        MAXWRD=KPYBGN
          LENGTH=0
          LCLNDX=0
      152 MAXWRD=MAXWRD+1
        IF(MAXWRD.GT.LNGBGN)GO TO 154
         MSKBIT=MSKBGN(MAXWRD)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 154
         IF(MRKNDX.LE.0)GO TO 153
         IF(LTRBGN(MAXWRD).NE.LTRNDX)GO TO 153
      MSKBIT=MSKBGN(MAXWRD)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 153
         LCLNDX=LCLNDX+1
        GO TO 152
     153 LENGTH=LENGTH+1
        GO TO 152
     154 IF(LENGTH.GT.0)GO TO 155
         KPYBGN=KPYBGN+LCLNDX
        GO TO 9
  155 IF(LNGMID.LE.0)GO TO 166
         IF(IFNOTE.NE.0)GO TO 156
         IF(KONECT.GT.0)GO TO 160
     156 NEEDED=1
          IF(IPEROD.EQ.0)GO TO 158
         MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 158
         LTRNOW=LTRMID(LNGMID)
       DO 157 I=1,4
      IF(LTRNOW.NE.LTRTWO(I))GO TO 157
      NEEDED=2
          GO TO 158
     157 CONTINUE
      158 IF((LNGMID+NEEDED+LENGTH).GT.MRGRIT)GO TO 185
        DO 159 I=1,NEEDED
      LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRSPA
       MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       IF(ITLSPA.GT.0)CALL RNOPAK(2,MSKBIT)
       MSKMID(LNGMID)=MSKBIT
   159 CONTINUE
          ITLSPA=0
          KNTSPC=KNTSPC+1
        GO TO 169
     160 IF(KNTSPC.LE.0)GO TO 165
         IF((LNGMID+LENGTH).LE.MRGRIT)GO TO 165
          LNGFTN=0
      161 IF(LNGMID.LE.0)GO TO 164
         MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 162
         LNGFTN=LNGFTN+1
        LTRFTN(LNGFTN)=LTRMID(LNGMID)
         MSKFTN(LNGFTN)=MSKMID(LNGMID)
         LNGMID=LNGMID-1
        GO TO 161
     162 LNGMID=LNGMID-1
        IF(LNGMID.LE.0)GO TO 163
         MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 162
     163 KONECT=-1
         KNTSPC=KNTSPC-1
        GO TO 185
     164 LNGMID=LNGFTN
      165 KONECT=0
          ITLSPA=0
          GO TO 169
     166 IF(LENGTH.GT.LMTMID)LENGTH=LMTMID
          KNTSPC=0
          IF(IFNOTE.LT.0)GO TO 369
         IF(IFLIST.LE.0)GO TO 167
         IF(LSTELM.GT.0)GO TO 369
     167 NEEDED=MRGLFT+INDENT
        INDENT=0
          IF(NEEDED.GT.(LMTMID-LENGTH))NEEDED=LMTMID-LENGTH
         IF(NEEDED.LE.0)GO TO 169
         DO 168 I=1,NEEDED
      LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=LTRSPA
   168 CONTINUE
      169 IF(NOWBAR.NE.0)IFABAR=NOWBAR
          LCLNDX=0
          DO 172 I=1,LENGTH
  170 KPYBGN=KPYBGN+1
        IF(MRKNDX.LE.0)GO TO 171
         IF(LTRBGN(KPYBGN).NE.LTRNDX)GO TO 171
      MSKBIT=MSKBGN(KPYBGN)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 171
         LCLNDX=LCLNDX+1
        GO TO 170
     171 LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRBGN(KPYBGN)
         MSKMID(LNGMID)=MSKBGN(KPYBGN)
     172 CONTINUE
          KSKIP=1
      ININDX=JSKIP
  173 IF(LCLNDX.EQ.0)GO TO 182
         IVALUE=KPYBGN-LENGTH-LCLNDX+1
         IMINUS=0
      174 IF(LTRBGN(IVALUE).NE.LTRNDX)GO TO 175
      MSKBIT=MSKBGN(IVALUE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 175
         LCLNDX=LCLNDX-1
        GO TO 176
     175 IVALUE=IVALUE+1
        LENGTH=LENGTH-1
        GO TO 174
     176 IVALUE=IVALUE+1
        KVALUE=IVALUE
          IF(LENGTH.LE.0)GO TO 182
     177 MSKBIT=MSKBGN(KVALUE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 179
         MSKBIT=MSKBGN(KVALUE)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 178
         IF(LTRBGN(KVALUE).NE.LTRNDX)GO TO 179
      LCLNDX=LCLNDX-1
    178 IF(IMINUS.EQ.0)GO TO 173
         GO TO 181
     179 IMINUS=IMINUS+1
        LENGTH=LENGTH-1
    180 KVALUE=KVALUE+1
        IF(LENGTH.GT.0)GO TO 177
     181 NVALUE(1)=IVALUE
       NMINUS(1)=IMINUS
       MASTER=5
          JSKIP=8
      GO TO 430
     182 JSKIP=ININDX
      IF(KPYBGN.LT.LNGBGN)GO TO 183
         IF(ITLALL.EQ.IULSPC)ITLSPA=1
      183 GO TO 9
  184 IF(ITLALL.EQ.IULSPC)ITLSPA=1
          GO TO 9
C
  C     JUSTIFY TEXT WHEN LINE OVERFLOWS
  185 IREVRS=-IREVRS
         IF(LNGMID.GE.MRGRIT)GO TO 429
         IF(KNTSPC.LE.0)GO TO 429
         IF(JSTIFY.EQ.0)GO TO 429
         IGROUP=(MRGRIT-LNGMID)/KNTSPC
         JGROUP=MRGRIT-LNGMID-(KNTSPC*IGROUP)
       IF(IREVRS.GT.0)JGROUP=JGROUP-KNTSPC-1
      J=MRGRIT
      186 MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 189
         JGROUP=JGROUP+IREVRS
        NEEDED=IGROUP
          IF(JGROUP.GE.0)NEEDED=IGROUP+1
        IF(NEEDED.LE.0)GO TO 188
         DO 187 I=1,NEEDED
      LTRMID(J)=LTRSPA
       MSKMID(J)=MSKMID(LNGMID)
         J=J-1
    187 CONTINUE
          IF(J.LE.LNGMID)GO TO 190
     188 LTRMID(J)=LTRMID(LNGMID)
         MSKMID(J)=MSKMID(LNGMID)
         J=J-1
        LNGMID=LNGMID-1
        MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 188
     189 LTRMID(J)=LTRMID(LNGMID)
         MSKMID(J)=MSKMID(LNGMID)
         J=J-1
        LNGMID=LNGMID-1
        GO TO 186
     190 LNGMID=MRGRIT
          GO TO 429
   C
  C     DIRECT COPY OF CHARACTERS IN NOFILL MODE
    191 JSKIP=0
      IF(IFAUTO.NE.0)IFAUTO=1
          IF(KONECT.NE.0)GO TO 201
         IF(LNGMID.GT.0)GO TO 428
         IF(NOWBAR.NE.0)IFABAR=NOWBAR
          IF(LNGBGN.LT.ISTART)GO TO 209
         KPYMID=0
          IF(IFNOTE.LT.0)GO TO 368
         IF(IFLIST.LE.0)GO TO 192
         IF(LSTELM.GT.0)GO TO 368
     192 NEEDED=MRGLFT
          IF(JFILL.EQ.0)GO TO 199
          GO TO(193,194,195,196,197,195),JFILL
 C     CENTER COMMAND
     193 IF(KCENTR.LE.0)NEEDED=((MRGFAR+ICENTR-LNGBGN+ISTART-1)/2)
      IF(KCENTR.GT.0)NEEDED=((ICENTR-LNGBGN+ISTART-1)/2)
        GO TO 198
   C     RIGHT COMMAND
      194 NEEDED=MRGRIT-LNGBGN+ISTART-1-ICENTR
       GO TO 198
   C     FLUSH LEFT COMMAND
      195 IF(KCENTR.LE.0)NEEDED=MRGLFT+ICENTR
        IF(KCENTR.GT.0)NEEDED=ICENTR
          GO TO 198
   C     MIDDLE COMMAND
     196 IF(KCENTR.LE.0)NEEDED=MRGLFT+
        1((MRGRIT-MRGLFT-LNGBGN+ISTART-1)/2)+ICENTR
      IF(KCENTR.GT.0)NEEDED=ICENTR
         1-((LNGBGN-ISTART+1)/2)
      GO TO 198
   C     FLUSH RIGHT COMMAND
     197 IF(KCENTR.LE.0)NEEDED=MRGRIT-LNGBGN+ISTART-1+ICENTR
       IF(KCENTR.GT.0)NEEDED=ICENTR-LNGBGN+ISTART-1
     198 CONTINUE
      199 NEEDED=NEEDED+INDENT
        INDENT=0
          IF(NEEDED.LE.0)GO TO 202
         DO 200 I=1,NEEDED
      IF(KPYMID.GE.LMTMID)GO TO 202
         KPYMID=KPYMID+1
        MSKMID(KPYMID)=0
       LTRMID(KPYMID)=LTRSPA
   200 CONTINUE
          GO TO 202
     201 KONECT=0
          IF(LNGBGN.LT.ISTART)GO TO 209
         KPYMID=LNGMID
      202 LCLNDX=0
          LENGTH=LNGBGN-KPYBGN
    203 IF(KPYBGN.GE.LNGBGN)GO TO 209
         IF(KPYMID.GE.LMTMID)GO TO 209
         KPYBGN=KPYBGN+1
        MSKBIT=MSKBGN(KPYBGN)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 204
         IF(LTRBGN(KPYBGN).EQ.LTRSPA)GO TO 204
      IF(LTRBGN(KPYBGN).EQ.LTRTAB)GO TO 206
      IF(MRKNDX.LE.0)GO TO 204
         IF(JFILL.EQ.6)GO TO 204
          IF(LTRBGN(KPYBGN).NE.LTRNDX)GO TO 204
      LCLNDX=LCLNDX+1
        GO TO 203
     204 KPYMID=KPYMID+1
        LTRMID(KPYMID)=LTRBGN(KPYBGN)
         MSKMID(KPYMID)=MSKBGN(KPYBGN)
         MSKBIT=MSKBGN(KPYBGN)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 205
         MSKBIT=MSKBGN(KPYBGN)
       CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 203
     205 LNGMID=KPYMID
          GO TO 203
     206 KPYMID=KPYMID+1
        J=KPYMID
          DO 207 I=1,MAXTAB
      IF(LOCTAB(I).LT.J)GO TO 207
      J=LOCTAB(I)-J
          GO TO 208
     207 CONTINUE
          J=0
      208 LTRMID(KPYMID)=LTRSPA
       MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       MSKMID(KPYMID)=MSKBIT
       J=J-1
        IF(J.LT.0)GO TO 202
         IF(KPYMID.GE.LMTMID)GO TO 209
         KPYMID=KPYMID+1
        GO TO 208
     209 IF(JFILL.EQ.0)GO TO 210
          JCENTR=JCENTR-1
        IF(JCENTR.LT.0)GO TO 210
         IF(JCENTR.GT.0)GO TO 210
         JFILL=IFFILL
      ICENTR=KLMFIL
          KCENTR=KLMMNS
          IF(JFILL.NE.0)GO TO 210
          IF(KNDTRN.NE.0)GO TO 219
     210 IF(LNGMID.LE.0)GO TO 212
         IF(LCLNDX.NE.0)GO TO 211
         IF(KNDTRN.NE.0)GO TO 222
         IF(JFILL.EQ.6)GO TO 430
          IF(JFILL.EQ.0)GO TO 430
          GO TO 9
  211 IF(JFILL.NE.0)GO TO 173
          JSKIP=8
      GO TO 430
     212 IF(KNDTRN.NE.0)GO TO 222
         GO TO 423
   C
  C     PREPARE TO CONSTRUCT MAGNIFIED LETTERS
      213 MASTER=12
         GO TO 430
   C
  C     RETURN AFTER HAVING CONSTRUCTED MAGNIFIED LETTERS
     214 MASTER=0
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
          IF(MAGNFY.NE.0)GO TO 216
         ISPACE=MAGSAV
          IF(JFILL.EQ.0)GO TO 215
          JCENTR=JCENTR-1
        IF(JCENTR.LT.0)GO TO 216
         IF(JCENTR.GT.0)GO TO 216
         JFILL=IFFILL
      ICENTR=KLMFIL
          KCENTR=KLMMNS
          IF(JFILL.NE.0)GO TO 216
      215 IF(KNDTRN.NE.0)GO TO 219
     216 IF(KNDTRN.NE.0)GO TO 222
         GO TO 430
   C
  C     CONSTRUCT REST OF BACKGROUND OR EDGE BEFORE END COVER
      217 LNGMID=0
          IF(NSKIP.EQ.0)GO TO 219
          NSKIP=NSKIP-1
          ISKIP=NSKIP
       IF(NSKIP.GT.0)GO TO 221
          MASTER=0
          NSKIP=0
      GO TO 223
     218 KNDTRN=0
          LSTTRN=0
          ISKIP=NXTSKP
      IF(KOMAND.GE.0)GO TO 142
         MASTER=11
         GO TO 430
     219 GO TO(335,335,335,224,224,224,258,258,258),KNDTRN
     220 GO TO(337,338,145,226,227,145,260,261,145),KNDTRN
     221 GO TO(339,339,339,228,228,228,262,262,262),KNDTRN
     222 GO TO(340,340,340,229,229,229,263,263,263),KNDTRN
     223 GO TO(346,142,218,233,142,218,267,142,218),KNDTRN
   C
  C     *********************************************
  C     *                                           *
  C     *  CONSTRUCT LEFT OR RIGHT EDGES OF OBJECT  *
  C     *                                           *
  C     *********************************************
  C
  C     CONSTRUCT REST OF EDGE IF CHANGING FILL CONDITIONS
    224 IF(KNDTRN.NE.5)GO TO 225
         NSKIP=LNGTRN
      IF(NSKIP.LT.0)NSKIP=-NSKIP
       I=ISKIP
      IF(MASTER.NE.11)I=ISPACE
         NXTSKP=0
          IF(I.GT.NSKIP)NXTSKP=I-NSKIP
          IF(MASTER.NE.11)NSKIP=NSKIP+1
         NSKIP=NSKIP+LINFIG
          LINFIG=0
          ISKIP=0
      MASTER=-1
         KNDTRN=6
          IF(NSKIP.GT.0)GO TO 236
          ISKIP=NXTSKP
  225 MASTER=11
         KNDTRN=0
          GO TO 430
   C
  C     SKIP LINES ABOVE CONSTRUCTED EDGE
      226 IF(ISKIP.GT.0)GO TO 422
          ISKIP=0
      IF(LINFIG.LE.0)GO TO 146
         LNGMID=0
          GO TO 229
   C
  C     SKIP LINES WHILE MAKING EDGE
      227 LNGMID=0
          NSKIP=ISKIP
       ISKIP=0
      IF(LINFIG.GT.0)NSKIP=NSKIP+LINFIG
          LINFIG=0
          MASTER=-1
         GO TO 236
   C
  C     NSKIP IS ALREADY GREATER THAN ZERO
     228 LNGMID=0
          MASTER=-1
         GO TO 236
   C
  C     PREPARE FOR TOP OF CONSTRUCTION
   229 IF(KNDTRN.NE.4)GO TO 236
         IF(LINFIG.LT.0)LINFIG=-LINFIG
         IF(ISKIP.LE.0)GO TO 230
          LINFIG=-LINFIG
         GO TO 422
     230 ISKIP=0
      LSTTRN=-1
         IF(LINFIG.LE.0)GO TO 235
         NSKIP=LINFIG-1
         LINFIG=0
          IF(NSKIP.LE.0)GO TO 235
          MASTER=-1
         IF(LNGMID.LE.0)GO TO 232
         LSTTRN=LNGMID
          LNGMID=0
          DO 231 I=1,LSTTRN
      LTRFTN(I)=LTRMID(I)
         MSKFTN(I)=MSKMID(I)
     231 CONTINUE
      232 GO TO 422
   C
  C     NSKIP INITIAL LINES COMPLETED
     233 NSKIP=0
      LNGMID=0
          IF(LSTTRN.LE.0)GO TO 235
         LNGMID=LSTTRN
          DO 234 I=1,LNGMID
      LTRMID(I)=LTRFTN(I)
         MSKMID(I)=MSKFTN(I)
     234 CONTINUE
      235 KNDTRN=5
          LSTTRN=-1
         MASTER=0
    C
  C     FILL IN GAPS IN LEFT EDGE OF DIAGONAL LINE
  236 IF(LNGTRN.GT.0)GO TO 242
         I=2
      237 I=I+1
        IF((I-2).GT.LSTTRN)GO TO 240
          IF(I.GT.LNGMID)GO TO 240
         MSKBIT=MSKMID(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 238
         IF(LTRMID(I).EQ.LTRSPA)GO TO 237
  238 IF((I-1).GT.LSTTRN)GO TO 239
          IF(MSKFTN(I-1).EQ.(-LNGTRN))GO TO 237
  239 IF(MSKFTN(I-2).NE.(-LNGTRN))GO TO 237
      MSKFTN(I-1)=-1
         LTRFTN(I-1)=LTRFTN(I-2)
          IF((I-1).GT.LSTTRN)LSTTRN=I-1
         GO TO 237
     240 CONTINUE
          I=0
      241 I=I+1
        IF(I.GT.LSTTRN)GO TO 247
         IF(MSKFTN(I).LT.0)MSKFTN(I)=-LNGTRN
        GO TO 241
   C
  C     FILL IN GAPS IN RIGHT EDGE OF DIAGONAL LINE
      242 I=LSTTRN-1
        IF(I.GT.LNGMID)I=LNGMID+1
    243 I=I-1
        IF(I.LE.0)GO TO 245
         MSKBIT=MSKMID(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 244
         IF(LTRMID(I).EQ.LTRSPA)GO TO 243
  244 IF(MSKFTN(I+1).EQ.LNGTRN)GO TO 243
         IF(MSKFTN(I+2).NE.LNGTRN)GO TO 243
         MSKFTN(I+1)=-1
         LTRFTN(I+1)=LTRFTN(I+2)
          GO TO 243
     245 CONTINUE
          I=0
      246 I=I+1
        IF(I.GT.LSTTRN)GO TO 247
         IF(MSKFTN(I).LT.0)MSKFTN(I)=LNGTRN
         GO TO 246
     247 CONTINUE
    C
  C     NEW PRINTING CHARACTERS CANCEL EDGE OF HIGHER LINE
        I=0
          J=0
      248 I=I+1
        J=J+1
        IF(J.GT.LNGMID)GO TO 251
         IF(I.LE.LSTTRN)GO TO 249
         LSTTRN=I
          MSKFTN(LSTTRN)=0
   249 MSKBIT=MSKMID(J)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 250
         IF(LTRMID(J).EQ.LTRSPA)GO TO 248
  250 LTRFTN(I)=LTRMID(J)
         MSKFTN(I)=-1
      GO TO 248
     251 CONTINUE
    C
  C     COPY REMAINING SHADOW FROM HIGHER LINE
      252 I=0
          J=0
          LNGMID=0
      253 I=I+1
        J=J+1
        IF(J.GT.LMTMID)GO TO 254
         IF(I.GT.LSTTRN)GO TO 254
         LTRMID(J)=LTRSPA
       MSKMID(J)=0
       IF(MSKFTN(I).LE.0)GO TO 253
      MSKFTN(I)=MSKFTN(I)-1
       LTRMID(J)=LTRFTN(I)
         LNGMID=J
          GO TO 253
   C
  C     STORE SHADOW CAST BY CURRENT LINE TOWARD LOWER LEFT
   254 CONTINUE
          IF(LNGTRN.GT.0)GO TO 256
         I=1
          J=LSTTRN
          LSTTRN=0
      255 I=I+1
        IF(I.GT.J)GO TO 328
         IF(MSKFTN(I).EQ.0)GO TO 255
      IF(MSKFTN(I).LT.0)MSKFTN(I)=-LNGTRN
        LSTTRN=I-1
        MSKFTN(I-1)=MSKFTN(I)
       LTRFTN(I-1)=LTRFTN(I)
       MSKFTN(I)=0
       LTRFTN(I)=LTRSPA
       GO TO 255
   C
  C     STORE SHADOW CAST BY CURRENT LINE TOWARD LOWER RIGHT
  256 I=LSTTRN+1
        IF(I.GT.LMTMID)I=LMTMID
          LSTTRN=0
      257 I=I-1
        IF(I.LE.0)GO TO 328
         IF(MSKFTN(I).EQ.0)GO TO 257
      IF(MSKFTN(I).LT.0)MSKFTN(I)=LNGTRN
         IF(LSTTRN.EQ.0)LSTTRN=I+1
        MSKFTN(I+1)=MSKFTN(I)
       LTRFTN(I+1)=LTRFTN(I)
       MSKFTN(I)=0
       LTRFTN(I)=LTRSPA
       GO TO 257
   C
  C     ************************************
 C     *                                  *
 C     *  CONSTRUCT BORDER AROUND OBJECT  *
 C     *                                  *
 C     ************************************
 C
  C     CONSTRUCT REST OF BORDER IF CHANGING FILL CONDITIONS
  258 IF(KNDTRN.NE.8)GO TO 259
         NSKIP=IBORDR
      I=ISKIP
      IF(MASTER.NE.11)I=ISPACE
         NXTSKP=0
          IF(I.GT.NSKIP)NXTSKP=I-NSKIP
          NSKIP=NSKIP+NSKIP
      IF(MASTER.NE.11)NSKIP=NSKIP+1
         NSKIP=NSKIP+LINFIG
          LINFIG=0
          ISKIP=0
      MASTER=-1
         KNDTRN=9
          IF(NSKIP.GT.0)GO TO 270
          ISKIP=NXTSKP
  259 MASTER=11
         KNDTRN=0
          GO TO 430
   C
  C     SKIP LINES ABOVE CONSTRUCTED BORDER
    260 IF(ISKIP.GT.IBORDR)GO TO 422
          ISKIP=0
      IF(LINFIG.LE.0)GO TO 146
         LNGMID=0
          GO TO 263
   C
  C     SKIP LINES WHILE DOING BORDER
     261 LNGMID=0
          NSKIP=ISKIP
       IF(LINFIG.GT.0)NSKIP=NSKIP+LINFIG
          LINFIG=0
          ISKIP=0
      MASTER=-1
         GO TO 270
   C
  C     NSKIP IS ALREADY GREATER THAN ZERO
     262 LNGMID=0
          MASTER=-1
         GO TO 270
   C
  C     TOP OF BORDER
      263 IF(KNDTRN.NE.7)GO TO 270
         IF(LINFIG.LT.0)LINFIG=-LINFIG
         IF(ISKIP.LE.0)GO TO 264
          LINFIG=-LINFIG
         GO TO 422
     264 ISKIP=0
      LSTTRN=-1
         IF(LINFIG.LE.0)GO TO 269
         NSKIP=LINFIG-1
         LINFIG=0
          IF(NSKIP.LE.0)GO TO 269
          MASTER=-1
         IF(LNGMID.LE.0)GO TO 266
         LSTTRN=LNGMID
          LNGMID=0
          DO 265 I=1,LSTTRN
      LTRFTN(I)=LTRMID(I)
         MSKFTN(I)=MSKMID(I)
     265 CONTINUE
      266 GO TO 422
   C
  C     NSKIP INITIAL LINES COMPLETED
     267 NSKIP=0
      LNGMID=0
          IF(LSTTRN.LE.0)GO TO 269
         LNGMID=LSTTRN
          DO 268 I=1,LNGMID
      LTRMID(I)=LTRFTN(I)
         MSKMID(I)=MSKFTN(I)
     268 CONTINUE
      269 KNDTRN=8
          LSTTRN=-1
         MASTER=0
    C
  C     TEMPORARILY STORE CURRENT LINE FOR BORDER CONSTRUCTION
     270 LNGWRK=0
          IF(LNGMID.GT.LMTWRK)LNGMID=LMTWRK
          IF(LNGMID.LE.0)GO TO 275
         DO 274 KOLUMN=1,LNGMID
      IF(LTRMID(KOLUMN).NE.LTRSPA)GO TO 271
      IF(MSKMID(KOLUMN).EQ.0)GO TO 273
      MSKBIT=MSKMID(KOLUMN)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 273
     271 LNGWRK=KOLUMN
          MSKWRK(KOLUMN)=IBORDR+IBORDR
          LTRWRK(KOLUMN)=LTRMID(KOLUMN)
         IF(KOLUMN.GT.LSTTRN)GO TO 274
         IF(MSKFTN(KOLUMN).LE.-3)GO TO 274
          IF(MSKFTN(KOLUMN).LT.0)GO TO 272
      IF(MSKFTN(KOLUMN).LE.(IBORDR+1))GO TO 274
       MSKWRK(KOLUMN)=IBORDR+1-MSKFTN(KOLUMN)
          GO TO 274
     272 MSKWRK(KOLUMN)=MSKFTN(KOLUMN)
         GO TO 274
     273 MSKWRK(KOLUMN)=0
   274 CONTINUE
          LNGMID=0
      275 CONTINUE
    C
  C     CONSTRUCT THE NEW BORDER LINE
         LIMIT=LNGWRK+LNGTRN
         IF(LIMIT.LT.(LSTTRN+LNGTRN))LIMIT=LSTTRN+LNGTRN
      IF(LIMIT.GT.LMTMID)LIMIT=LMTMID
       IF(LIMIT.LE.0)GO TO 303
          DO 302 KOLUMN=1,LIMIT
       IF(KOLUMN.GT.LSTTRN)GO TO 277
         IF(MSKFTN(KOLUMN).LE.-3)GO TO 276
          IF(MSKFTN(KOLUMN).LT.0)GO TO 288
  276 IF(MSKFTN(KOLUMN).EQ.(1+IBORDR))GO TO 288
   277 CONTINUE
    C
  C     CHECK IF POINT IS ON EDGE OF OBJECT
        N=1+LNGTRN
        L=1+LNGTRN
        IF(JBORDR.GE.2)GO TO 279
         IF(IBORDR.GT.1)GO TO 278
         IF(LNGTRN.LE.1)GO TO 279
     278 L=L-1
    279 INNER=KOLUMN
      K=0
          KBORDR=0
          DO 286 M=1,N
  280 INNER=KOLUMN+K
         IF(INNER.LE.0)GO TO 285
          IF(INNER.GT.LSTTRN)GO TO 283
          IF(MSKFTN(INNER).LE.-3)GO TO 283
      IF(MSKFTN(INNER).EQ.0)GO TO 283
       I=0
          IF(MSKFTN(INNER).LT.0)GO TO 281
       I=MSKFTN(INNER)-IBORDR-1
         IF(I.LT.0)I=-I
         IF(JBORDR.GE.2)GO TO 281
         IF(I.NE.IBORDR)GO TO 281
         IF(M.GT.L)GO TO 283
     281 IF(KBORDR.EQ.0)GO TO 282
         IF(KBORDR.LE.(I+M))GO TO 283
      282 KBORDR=I+M
        LTRNOW=LTRFTN(INNER)
    283 IF(M.GT.L)GO TO 285
         IF(KBORDR.EQ.0)GO TO 284
         IF(M.GE.(KBORDR-IBORDR))GO TO 285
      284 CONTINUE
          IF(INNER.GT.LNGWRK)GO TO 285
          IF(MSKWRK(INNER).EQ.0)GO TO 285
       LTRNOW=LTRWRK(INNER)
        KBORDR=IBORDR+M
    285 K=-K
         IF(K.LT.0)GO TO 280
         K=K+1
    286 CONTINUE
          IF(KBORDR.NE.0)GO TO 289
   C
  C     INDICATE THAT POINT IS NOT NOW IN EDGE OF OBJECT
      287 IF(KOLUMN.GT.LSTTRN)GO TO 288
         IF(MSKFTN(KOLUMN).EQ.-3)MSKFTN(KOLUMN)=-4
   288 LTRMID(KOLUMN)=LTRSPA
       MSKMID(KOLUMN)=0
       GO TO 302
   C
  C     CHECK TO SEE IF ARE WITHIN AN INVERTED CUP
  289 MSKMID(KOLUMN)=0
       LTRMID(KOLUMN)=LTRNOW
       LTRFTN(KOLUMN)=LTRNOW
       IF(LNGMID.LE.0)GO TO 297
         IF(JBORDR.EQ.0)GO TO 297
         IF(JBORDR.EQ.2)GO TO 297
         IF((LNGMID+1).GE.KOLUMN)GO TO 297
          INDEX=LNGMID
  290 LNGMID=LNGMID+1
        IF(LNGMID.GE.KOLUMN)GO TO 291
         IF(LNGMID.GT.LSTTRN)GO TO 297
         IF(MSKFTN(LNGMID).LE.-3)GO TO 290
          GO TO 297
   C
  C     FILL IN WIDTH OF INVERTED CUP
     291 J=INDEX
  292 J=J+1
        IF(J.GE.KOLUMN)GO TO 293
         MSKFTN(J)=-3
      LTRMID(J)=LTRFTN(J)
         GO TO 292
   C
  C     SQUEEZE OUT SHADOW OF TOP OF INVERTED CUP
   293 J=(INDEX+KOLUMN)/2
      294 J=J+1
        IF(J.GE.KOLUMN)GO TO 295
         LTRFTN(J)=LTRFTN(J+1)
       GO TO 294
     295 J=(INDEX+KOLUMN)/2
      296 IF(J.LE.INDEX)GO TO 297
          LTRFTN(J)=LTRFTN(J-1)
       J=J-1
        GO TO 296
     297 LNGMID=KOLUMN
    C
  C     EXTEND THE OLD OBJECT ACROSS TO CURRENT COLUMN
   298 IF(LNGMID.LE.LSTTRN)GO TO 299
         LSTTRN=LSTTRN+1
        MSKFTN(LSTTRN)=0
       GO TO 298
   C
  C     FILL IN THE COLUMN IF IT WAS NOT IN OBJECT
  299 IF(MSKFTN(LNGMID).EQ.0)GO TO 300
      IF(MSKFTN(LNGMID).LE.-3)GO TO 300
          GO TO 302
     300 MSKFTN(LNGMID)=-3
  301 LTRFTN(LNGMID)=LTRMID(LNGMID)
     302 CONTINUE
      303 CONTINUE
    C
  C     DECREMENT THE LINE COUNTS IN STORAGE
       LIMIT=LSTTRN
      LSTTRN=0
          IF(LIMIT.LE.0)GO TO 307
          DO 306 KOLUMN=1,LIMIT
       IF(MSKFTN(KOLUMN).LE.-3)GO TO 305
          IF(MSKFTN(KOLUMN).EQ.0)GO TO 306
      IF(MSKFTN(KOLUMN).GT.0)GO TO 304
      MSKFTN(KOLUMN)=MSKFTN(KOLUMN)+1
       IF(MSKFTN(KOLUMN).EQ.0)MSKFTN(KOLUMN)=1+IBORDR
       LSTTRN=KOLUMN
          GO TO 306
     304 MSKFTN(KOLUMN)=MSKFTN(KOLUMN)-1
       IF(MSKFTN(KOLUMN).EQ.0)MSKFTN(KOLUMN)=-3
        IF(MSKFTN(KOLUMN).GT.0)LSTTRN=KOLUMN
   305 IF(KNDTRN.NE.9)LSTTRN=KOLUMN
      306 CONTINUE
    C
  C     TRANSFER THE CURRENT ORIGINAL LINE INTO STORAGE
  307 LIMIT=LNGWRK
      IF(LIMIT.GT.LMTMID)LIMIT=LMTMID
       IF(LIMIT.LE.0)GO TO 311
          DO 310 KOLUMN=1,LIMIT
       IF(MSKWRK(KOLUMN).EQ.0)GO TO 310
  308 IF(LSTTRN.GE.KOLUMN)GO TO 309
         LSTTRN=LSTTRN+1
        MSKFTN(LSTTRN)=0
       GO TO 308
     309 IF(MSKFTN(KOLUMN).GE.0)MSKFTN(KOLUMN)=MSKWRK(KOLUMN)
      IF(MSKFTN(KOLUMN).LE.-3)MSKFTN(KOLUMN)=MSKWRK(KOLUMN)
          LTRFTN(KOLUMN)=LTRWRK(KOLUMN)
     310 CONTINUE
      311 LNGWRK=0
    C
  C     REMOVE AIR SPACE ENTRIES IF OPEN FROM SIDE
      IF(LSTTRN.LE.0)GO TO 327
         DO 312 KOLUMN=1,LSTTRN
      IF(MSKFTN(KOLUMN).EQ.-4)MSKFTN(KOLUMN)=0
    312 CONTINUE
          KOLUMN=1
          GO TO 318
     313 IF(MSKFTN(KOLUMN).EQ.0)GO TO 314
      GO TO 326
     314 INDEX=KOLUMN
      LIMIT=0
  315 INDEX=INDEX+1
          LIMIT=LIMIT+1
          IF(INDEX.GT.LSTTRN)GO TO 318
          IF(MSKFTN(INDEX).EQ.0)GO TO 315
       IF(MSKFTN(INDEX).LE.-3)GO TO 315
      INDEX=KOLUMN
  316 INDEX=INDEX-1
          LIMIT=LIMIT+1
          IF(INDEX.LT.1)GO TO 318
          IF(MSKFTN(INDEX).EQ.0)GO TO 316
       IF(MSKFTN(INDEX).LE.-3)GO TO 316
  317 IF(LIMIT.LT.(LNGTRN+LNGTRN+2))GO TO 326
     318 INDEX=KOLUMN
      GO TO 322
     319 MSKFTN(KOLUMN)=-4
      GO TO 321
     320 MSKFTN(KOLUMN)=0
   321 KOLUMN=KOLUMN+1
    322 IF(KOLUMN.GT.LSTTRN)GO TO 325
         IF(MSKFTN(KOLUMN).EQ.0)GO TO 321
      IF(MSKFTN(KOLUMN).EQ.-3)GO TO 319
          IF(MSKFTN(KOLUMN).EQ.-4)GO TO 320
          GO TO 325
     323 MSKFTN(INDEX)=-4
       GO TO 325
     324 MSKFTN(INDEX)=0
    325 INDEX=INDEX-1
          IF(INDEX.LE.0)GO TO 326
          IF(MSKFTN(INDEX).EQ.0)GO TO 325
       IF(MSKFTN(INDEX).EQ.-3)GO TO 323
      IF(MSKFTN(INDEX).EQ.-4)GO TO 324
  326 KOLUMN=KOLUMN+1
        IF(KOLUMN.LT.LSTTRN)GO TO 313
     327 CONTINUE
    C
  C     SUPERIMPOSE PHRASE UPON EDGE OR BORDER
      328 IF(LNGSHD.LE.0)GO TO 334
         IF(LNGMID.LE.0)GO TO 334
         KOLUMN=KNTSHD
          KNTSHD=KNTSHD-NGLSHD
        IF(NGLSHD.GT.0)GO TO 329
         IF(KNTSHD.GE.LNGSHD)KNTSHD=KNTSHD-LNGSHD
        GO TO 330
     329 IF(KNTSHD.LT.0)KNTSHD=KNTSHD+LNGSHD
    330 DO 333 I=1,LNGMID
      KOLUMN=KOLUMN+1
        IF(KOLUMN.GT.LNGSHD)KOLUMN=1
          IF(LTRMID(I).NE.LTRSPA)GO TO 331
      IF(MSKMID(I).EQ.0)GO TO 333
      MSKBIT=MSKMID(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 333
     331 IF(INIOBJ.EQ.0)GO TO 332
         INIOBJ=0
          KNTSHD=KNTSHD-KOLUMN+1
      IF(KNTSHD.LT.0)KNTSHD=KNTSHD+LNGSHD
        KOLUMN=1
      332 LTRMID(I)=LTRSHD(KOLUMN)
     333 CONTINUE
      334 CONTINUE
          GO TO 366
   C
  C     ***********************************
  C     *                                 *
  C     *  CONSTRUCT NEGATIVE BACKGROUND  *
  C     *                                 *
  C     ***********************************
  C
  C     PREPARE TO COMPLETE NEGATIVE BACKGROUND IF CHANGING CONDITIONS
  335 IF(KNDTRN.NE.2)GO TO 336
         NSKIP=ILOSHD
      I=ISKIP
      IF(MASTER.NE.11)I=ISPACE
         NXTSKP=0
          IF(I.GT.NSKIP)NXTSKP=I-NSKIP
          IF(MASTER.NE.11)NSKIP=ILOSHD+1
        NSKIP=NSKIP+LINFIG
          LINFIG=0
          ISKIP=0
      MASTER=-1
         LSTTRN=0
          KNDTRN=3
          IF(NSKIP.GT.0)GO TO 349
          ISKIP=NXTSKP
  336 MASTER=11
         KNDTRN=0
          GO TO 430
   C
  C     SKIP LINES ABOVE CONSTRUCTED NEGATIVE BACKGROUND
      337 IF(ISKIP.GT.IHISHD)GO TO 422
          ISKIP=0
      IF(LINFIG.LE.0)GO TO 146
         LNGMID=0
          GO TO 340
   C
  C     SKIP LINES WHILE DOING NEGATIVE BACKGROUND
  338 LNGMID=0
          NSKIP=ISKIP
       ISKIP=0
      IF(LINFIG.GT.0)NSKIP=NSKIP+LINFIG
          LINFIG=0
          MASTER=-1
         GO TO 349
   C
  C     NSKIP IS ALREADY GREATER THAN ZERO
     339 LNGMID=0
          MASTER=-1
         GO TO 349
   C
  C     CONSTRUCT BORDER ABOVE NEGATIVE BACKGROUND
  340 IF(KNDTRN.NE.1)GO TO 349
         IF(LINFIG.LT.0)LINFIG=-LINFIG
         IF(ISKIP.LE.IHISHD)GO TO 341
          LINFIG=-LINFIG
         GO TO 422
     341 KNTSHD=0
          IF(LNGSHD.LE.1)GO TO 343
         IFIRST=MRGLFT
          IF(LFTSGN.GT.0)IFIRST=LFTSHD
          IF(LFTSGN.LT.0)IFIRST=MRGLFT+LFTSHD
        IF(IFIRST.LE.0)GO TO 343
         DO 342 I=1,IFIRST
      KNTSHD=KNTSHD+1
        IF(KNTSHD.GE.LNGSHD)KNTSHD=0
      342 CONTINUE
      343 ISKIP=0
      NETKNT=0
          LSTTRN=-1
         IF(LINFIG.GT.0)GO TO 344
         IF(IHISHD.LE.0)GO TO 348
     344 NSKIP=IHISHD
      IF(LINFIG.GT.0)NSKIP=NSKIP+LINFIG-1
        LINFIG=0
          IF(NSKIP.LE.0)GO TO 348
          MASTER=-1
         IF(LNGMID.LE.0)GO TO 349
         LSTTRN=LNGMID
          LNGMID=0
          DO 345 I=1,LSTTRN
      LTRFTN(I)=LTRMID(I)
         MSKFTN(I)=MSKMID(I)
     345 CONTINUE
          GO TO 349
   C
  C     NSKIP INITIAL LINES COMPLETED
     346 NSKIP=0
      LNGMID=0
          IF(LSTTRN.LE.0)GO TO 348
         LNGMID=LSTTRN
          DO 347 I=1,LNGMID
      LTRMID(I)=LTRFTN(I)
         MSKMID(I)=MSKFTN(I)
     347 CONTINUE
      348 KNDTRN=2
          LSTTRN=-1
         MASTER=0
    C
  C     CONSTRUCT NEGATIVE BACKGROUND
     349 KOLUMN=KNTSHD
          KNTSHD=KNTSHD-NGLSHD
        IF(NGLSHD.GT.0)GO TO 350
         IF(KNTSHD.GE.LNGSHD)KNTSHD=KNTSHD-LNGSHD
        GO TO 351
     350 IF(KNTSHD.LT.0)KNTSHD=KNTSHD+LNGSHD
    351 IF(NOWBAR.NE.0)IFABAR=NOWBAR
          IFIRST=MRGLFT
          IF(LFTSGN.GT.0)IFIRST=LFTSHD
          IF(LFTSGN.LT.0)IFIRST=MRGLFT+LFTSHD
        IF(IFIRST.LT.0)IFIRST=0
          IFIRST=IFIRST+1
        IFINAL=MRGRIT
          IF(IRISGN.GT.0)IFINAL=IRISHD
          IF(IRISGN.LT.0)IFINAL=MRGRIT+IRISHD
        IF(IFINAL.GT.LMTMID)IFINAL=LMTMID
          IF(IFIRST.GT.IFINAL)GO TO 365
         IF(NETNGL.EQ.0)GO TO 352
         IF(NETNGL.GT.0)GO TO 353
         JFIRST=NETWID+NETSEP+NETKNT+NETOFF
         NETKNT=NETKNT+NETNGL
        IF(NETKNT.LE.(-NETWID-NETSEP))NETKNT=NETKNT+NETWID+NETSEP
      GO TO 354
     352 JFIRST=NETOFF
          GO TO 354
     353 JFIRST=NETKNT+NETOFF
        NETKNT=NETKNT+NETNGL
        IF(NETKNT.GE.(NETWID+NETSEP))NETKNT=NETKNT-NETWID-NETSEP
   354 IF(JFIRST.LE.NETSEP)GO TO 355
         JFIRST=JFIRST-NETWID-NETSEP
      GO TO 354
     355 JFIRST=JFIRST+IFIRST
    356 JFINAL=JFIRST+NETWID-1
      DO 364 I=IFIRST,IFINAL
      KOLUMN=KOLUMN+1
        IF(KOLUMN.GT.LNGSHD)KOLUMN=1
          IF(I.LT.JFIRST)GO TO 364
         IF(I.LE.JFINAL)GO TO 357
         JFIRST=JFINAL+NETSEP+1
      JFINAL=JFIRST+NETWID-1
      IF(I.LT.JFIRST)GO TO 364
     357 IF(I.GT.LMTMID)GO TO 365
         IF(I.GT.LNGMID)GO TO 358
         IF(LTRMID(I).NE.LTRSPA)GO TO 362
      MSKBIT=MSKMID(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 362
         GO TO 359
     358 IF(LNGMID.GE.I)GO TO 359
         LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRSPA
       MSKMID(LNGMID)=0
       GO TO 358
     359 IF(LNGSHD.EQ.0)GO TO 361
         IF(INIOBJ.EQ.0)GO TO 360
         INIOBJ=0
          KNTSHD=KNTSHD-KOLUMN+1
      IF(KNTSHD.LT.0)KNTSHD=KNTSHD+LNGSHD
        KOLUMN=1
      360 LTRMID(I)=LTRSHD(KOLUMN)
         GO TO 363
     361 LTRMID(I)=LTRABC(24)
        GO TO 363
     362 LTRMID(I)=LTRSPA
   363 MSKMID(I)=0
   364 CONTINUE
      365 GO TO 366
   C
  C     EDGE OR BACKGROUND COMPLETED
      366 IF(NOWBAR.NE.0)IFABAR=NOWBAR
          IF(NSKIP.GT.0)GO TO 430
          IF(LSTTRN.NE.0)GO TO 430
         IF(KNDTRN.EQ.2)GO TO 367
         IF(KNDTRN.EQ.5)GO TO 367
         IF(KNDTRN.EQ.8)GO TO 367
         GO TO 430
     367 LSTTRN=-1
         GO TO 430
   C
  C     *************************************************
   C     *                                               *
   C     *  INSERT ITEMS INTO TEXT READ FROM INPUT FILE  *
   C     *                                               *
   C     *************************************************
   C
  C     INSERT FOOTNOTE NUMBER INTO START OF FOOTNOTE
    368 LENGTH=0
      369 LNGMID=0
          LNGWRK=0
          INDENT=0
          IF(IFNOTE.GE.0)GO TO 374
         INDENT=INDENT+INDFTN
        IF(LNGWRK.GE.LMTWRK)GO TO 374
         IF(LTRREF(3).EQ.LTRSPA)GO TO 370
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRREF(3)
     370 CALL RNONUM(MRKFTN,NOWFTN,LTRWRK,LNGWRK,LMTWRK)
      IF(LNGWRK.GE.LMTWRK)GO TO 371
         IF(LTRREF(4).EQ.LTRSPA)GO TO 371
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRREF(4)
     371 IF(LNGWRK.LE.0)GO TO 374
         IF(IFNNUM.EQ.1)GO TO 372
         IF(IFNNUM.NE.3)GO TO 374
     372 MSKBIT=0
          CALL RNOPAK(4,MSKBIT)
       DO 373 I=1,LNGWRK
      MSKWRK(I)=MSKBIT
   373 CONTINUE
          LNGMID=LNGWRK
    C
  C     CONSTRUCT LIST IDENTIFIERS FOR EITHER FILL OR NO FILL
      374 IF(IFLIST.LE.0)GO TO 382
         IF(LSTELM.LE.0)GO TO 382
         INDENT=INDENT+INDLST(IFLIST)
          LSTELM=0
          IF(IFNOTE.GE.0)GO TO 376
         IFNOTE=1
          IF(IFNNUM.GE.2)GO TO 376
         DO 375 I=1,2
      IF(LNGWRK.GE.LMTWRK)GO TO 382
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
   375 CONTINUE
      376 IF(LTROPN(IFLIST).EQ.LTRSPA)GO TO 377
      IF(LNGWRK.GE.LMTWRK)GO TO 381
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTROPN(IFLIST)
     377 IF(LSTTYP(IFLIST).GE.0)GO TO 379
      I=-LSTTYP(IFLIST)
      DO 378 J=1,I
      IF(LNGWRK.GE.LMTWRK)GO TO 381
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRLST(IFLIST,J)
   378 CONTINUE
          GO TO 380
     379 CALL RNONUM(LSTTYP(IFLIST),LSTVAL(IFLIST),LTRWRK,LNGWRK,LMTWRK)
      380 IF(LTRCLS(IFLIST).EQ.LTRSPA)GO TO 381
      IF(LNGWRK.GE.LMTWRK)GO TO 381
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRCLS(IFLIST)
     381 LSTVAL(IFLIST)=LSTVAL(IFLIST)+1
 C
  C     JUSTIFY FOOTNOTE NUMBER AND/OR LIST ELEMENT NUMBER
    382 IF(LNGMID.GE.LNGWRK)GO TO 383
         LNGMID=LNGMID+1
        MSKWRK(LNGMID)=0
       GO TO 382
     383 IF(IFNOTE.GE.0)GO TO 384
         IF(IFNNUM.LT.2)GO TO 384
         NEEDED=MRGLFT+INDENT
        GO TO 385
     384 NEEDED=MRGLFT+INDENT-2
  385 IF(NEEDED.LT.LNGWRK)NEEDED=LNGWRK
          IF(NEEDED.GT.(LMTMID-LENGTH))NEEDED=LMTMID-LENGTH
         IF(NOWBAR.NE.0)IFABAR=NOWBAR
          LNGMID=NEEDED
      386 IF(LNGWRK.LE.0)GO TO 387
         LTRMID(NEEDED)=LTRWRK(LNGWRK)
         MSKMID(NEEDED)=MSKWRK(LNGWRK)
         LNGWRK=LNGWRK-1
        GO TO 388
     387 LTRMID(NEEDED)=LTRSPA
       MSKMID(NEEDED)=0
   388 NEEDED=NEEDED-1
        IF(NEEDED.GT.0)GO TO 386
         IF(IFNOTE.GE.0)GO TO 389
         IFNOTE=1
          IF(IFNNUM.GE.2)GO TO 391
     389 NEEDED=2
          IF(NEEDED.GT.(LMTMID-LNGMID-LENGTH))NEEDED=LMTMID-LNGMID-LENGTH
          IF(NEEDED.LE.0)GO TO 391
         DO 390 I=1,NEEDED
      LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRSPA
       MSKMID(LNGMID)=0
   390 CONTINUE
      391 INDENT=0
          IF(LENGTH.GT.0)GO TO 169
         KPYMID=LNGMID
          LNGMID=LNGMID-2
        IF(LNGMID.LT.0)LNGMID=0
          GO TO 202
   C
  C     INSERT TEXT SPECIFIED BY .HEADER LEVEL COMMAND
   392 NVALUE(1)=NXTHDR
       NMINUS(1)=1
       NVALUE(2)=ISTART
       NMINUS(2)=LNGBGN-ISTART+1
        KNTARG=2
      393 IF(IFNOTE.NE.0)GO TO 394
         IF(ISKIP.LE.0)GO TO 394
          IF(IFPAGE.LE.0)GO TO 424
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 424
      IF(NEWPAG.EQ.0)NEWPAG=1
          ISKIP=-1
      394 JSKIP=0
      NXTHDR=0
          IVALUE=NVALUE(1)
       IMINUS=NMINUS(1)
       IF(IMINUS.LE.0)IVALUE=KNTLVL+IVALUE
        IF(IVALUE.LE.0)IVALUE=1
          IF(IVALUE.GT.LMTLVL)IVALUE=LMTLVL
          KNTSPC=-1
         IF(IVALUE.LE.NXTLVL)GO TO 396
         IF(IVALUE.GT.KNTLVL)GO TO 395
         KNTLVL=IVALUE
          NUMLVL(KNTLVL)=NUMLVL(KNTLVL)+1
       GO TO 396
     395 KNTLVL=KNTLVL+1
        NUMLVL(KNTLVL)=0
       IF(KNTLVL.LT.IVALUE)GO TO 395
         NUMLVL(KNTLVL)=1
   396 NXTLVL=0
          LNGMID=0
          NEEDED=MRGLFT+INDENT+LEVEL4
      INDENT=0
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
      397 IF(LNGMID.GE.NEEDED)GO TO 398
         IF(LNGMID.GE.LMTMID)GO TO 411
         LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=LTRSPA
       GO TO 397
     398 NEEDED=0
          IF(NEWCHA.EQ.0)GO TO 400
         JSECTN=ISECTN
          IF(JSECTN.GT.0)GO TO 399
         NOWSEC=IAPNDX
          NOWSHW=KNDAPP
          GO TO 400
     399 NOWSEC=ICHAPT
          NOWSHW=KNDCHA
      400 IF(JSECTN.EQ.0)GO TO 401
         LNGWRK=0
          CALL RNONUM(NOWSHW,NOWSEC,LTRWRK,LNGWRK,LMTWRK)
      GO TO 402
     401 NEEDED=NEEDED+1
        LNGWRK=0
          IF(NEEDED.GT.KNTLVL)NUMLVL(NEEDED)=0
       CALL RNONUM(KNDLVL(NEEDED),NUMLVL(NEEDED),
     1LTRWRK,LNGWRK,LMTWRK)
   402 IF(LNGWRK.LE.0)GO TO 404
         DO 403 I=1,LNGWRK
      IF(LNGMID.GE.LMTMID)GO TO 411
         LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=LTRWRK(I)
     403 CONTINUE
      404 IF(JSECTN.NE.0)GO TO 405
         IF(NEEDED.LT.MINLVL)GO TO 407
         GO TO 406
     405 IF(NEEDED.LT.(MINLVL-1))GO TO 407
      406 IF(NEEDED.GE.KNTLVL)GO TO 408
     407 IF(LNGMID.GE.LMTMID)GO TO 411
         LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=1H.
          GO TO 401
     408 IF(KNTARG.LT.2)GO TO 411
         IF(NMINUS(2).LE.0)GO TO 411
      IF(LNGMID.GE.LMTMID)GO TO 411
         I=NVALUE(2)
       J=I+NMINUS(2)-1
        DO 409 K=I,J
      MSKBIT=MSKBGN(K)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 409
         IF(MRKNDX.LE.0)GO TO 410
         MSKBIT=MSKBGN(K)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 410
         IF(LTRBGN(K).NE.LTRNDX)GO TO 410
  409 CONTINUE
          GO TO 411
     410 LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=LTRSPA
       KPYBGN=NVALUE(2)-1
          LNGBGN=NMINUS(2)+KPYBGN
          GO TO 412
     411 KPYBGN=LNGBGN
      412 ISTART=LNGBGN
          KOMENT=0
          JSKIP=4
      JFILL=0
      GO TO 142
     413 JSKIP=3
      KSKIP=0
      GO TO 430
     414 ISKIP=ISKIP+LEVEL3
          JSKIP=0
      GO TO 9
C
  C     INSERT TEXT SPECIFIED BY .NOTE COMMAND
      415 IF(IFNOTE.NE.0)GO TO 416
         IF(ISKIP.LE.0)GO TO 416
          IF(IFPAGE.LE.0)GO TO 424
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 424
      IF(NEWPAG.EQ.0)NEWPAG=1
          ISKIP=-1
      416 JSKIP=0
      NEEDED=MRGLFT+((MRGRIT-MRGLFT-NMINUS(KNTARG))/2)
          KPYMID=0
          LNGMID=1
          IF(NEEDED.LE.0)GO TO 418
         DO 417 I=1,NEEDED
      IF(KPYMID.GE.LMTMID)GO TO 418
         KPYMID=KPYMID+1
        MSKMID(KPYMID)=0
       LTRMID(KPYMID)=LTRSPA
   417 CONTINUE
      418 J=NVALUE(KNTARG)
       IF(NMINUS(KNTARG).LE.0)GO TO 420
      K=J+NMINUS(KNTARG)-1
        DO 419 I=J,K
      IF(KPYMID.GE.LMTMID)GO TO 420
         KPYMID=KPYMID+1
        LTRMID(KPYMID)=LTRBGN(I)
         MSKMID(KPYMID)=MSKBGN(I)
         MSKBIT=MSKMID(KPYMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)LNGMID=KPYMID
      419 CONTINUE
      420 JSKIP=7
      INDENT=INTIND
          GO TO 430
     421 ISKIP=ISKIP+NOTTWO
          JSKIP=0
      GO TO 9
C
  C     SIMULATE LINES IN RANGE OF SKIP COMMAND
     422 IF(LNGBGN.LT.ISTART)JSKIP=1
      GO TO 424
     423 INDENT=0
      424 LNGMID=0
          GO TO 430
     425 MASTER=2
          I=ITLALL
          ITLALL=INIALL
          INIALL=I
          I=ITLLIN
          ITLLIN=INILIN
          INILIN=I
          I=ITLNXT
          ITLNXT=ININXT
          ININXT=I
          I=ITLSPA
          ITLSPA=INISPA
          INISPA=I
          I=LOKSUP
          LOKSUP=INIHIA
          INIHIA=I
          I=LCLSUP
          LCLSUP=INIHIB
          INIHIB=I
          GO TO 430
     426 MASTER=1
          MAXBGN=0
          LNGBGN=0
          GO TO 430
     427 ITLALL=INIALL
          ITLLIN=INILIN
          ITLNXT=ININXT
          ITLSPA=INISPA
          LOKSUP=INIHIA
          LCLSUP=INIHIB
          GO TO 430
     428 JSKIP=9
      GO TO 430
     429 ITLSPA=0
      430 RETURN
       END
          SUBROUTINE RNOHOW
C     RENBR(/EVALUATE ALL COMMANDS)
   C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
        IF(MASTER.EQ.7)GO TO 34
          IF(MASTER.EQ.8)GO TO 55
          IF(MASTER.EQ.9)GO TO 28
    C
  C     GET NEXT LINE OF TEXT TO BE INTERPRETED
         KOMAND=0
          LOWBFR=ISTART
          LOCPNT=1
    C
  C     GET NEXT CHARACTER TO BE TESTED
     1 LOWBFR=LOWBFR+1
        IF(LOWBFR.GT.LNGBGN)GO TO 7
C
  C     ATTEMPT TO IDENTIFY THE CHARACTER
        2 IF(LOCPNT.LE.0)GO TO 7
      KVALUE=NOTPNT(LOCPNT)
       LOCABC=KVALUE
          IF(KVALUE.LT.0)LOCABC=-LOCABC
         LOCABC=LOCABC/IBYTE
       3 IF(LTRBGN(LOWBFR).EQ.LTRABC(LOCABC))GO TO 6
          IF(LTRBGN(LOWBFR).EQ.LWRABC(LOCABC))GO TO 6
    C
  C     LETTERS DID NOT MATCH
       IF(KVALUE.GE.0)GO TO 5
      KVALUE=-KVALUE
   C
  C     CHECK FOR SPACES BEFORE NEXT WORD
        4 IF(LTRBGN(LOWBFR).NE.LTRSPA)GO TO 3
        LOWBFR=LOWBFR+1
        IF(LOWBFR.LE.LNGBGN)GO TO 4
      GO TO 7
C
  C     GET NEXT LETTER TO BE TESTED IF FAILURE
       5 LOCPNT=KVALUE-(IBYTE*LOCABC)
          GO TO 2
C
  C     LETTERS MATCHED
      6 KVALUE=MCHPNT(LOCPNT)
       KMDNEW=KVALUE/IBYTE
         LOCPNT=KVALUE-(IBYTE*KMDNEW)
          IF(KMDNEW.NE.0)KOMAND=KMDNEW
          LOCATE=LOWBFR
          GO TO 1
C
  C     ENTIRE TREE SEARCHED
      7 IF(JFILL.NE.6)GO TO 8
       IF(KOMAND.NE.86)GO TO 70
       8 IF(MRKDOT.GT.0)GO TO 9
      IF(KOMAND.NE.10)GO TO 70
       9 IF(LOCPNT.EQ.1)GO TO 69
          IF(KOMAND.LE.1)GO TO 61
    C
  C     ****************************
    C     *                          *
    C     *  EVALUATE ARGUMENT LIST  *
    C     *                          *
    C     ****************************
    C
  C
  C     INSURE ALPHABETIC LETTER DOES NOT FOLLOW COMMAND
          LOCATE=LOCATE+1
        IFCMMA=0
          NVALUE(1)=0
       NMINUS(1)=0
       IF(LOCATE.GT.LNGBGN)GO TO 11
          LTRNOW=LTRBGN(LOCATE)
       DO 10 I=1,26
      IF(LTRNOW.EQ.LTRABC(I))GO TO 61
       IF(LTRNOW.EQ.LWRABC(I))GO TO 61
    10 CONTINUE
       11 LOCARG=KMDARG(KOMAND)
       KNTARG=0
          KNDARG=0
          IF(LOCARG.LE.0)GO TO 14
          NXTARG=NBEGIN(LOCARG)
    12 KNDARG=NARGMT(NXTARG)
       MAXARG=KNDARG/100
      KNDARG=KNDARG-(100*MAXARG)
    13 IF(KNDARG.EQ.4)GO TO 22
          IF(KNDARG.EQ.5)GO TO 54
       14 IF(LOCATE.GT.LNGBGN)GO TO 53
          MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 16
          LTRNOW=LTRBGN(LOCATE)
       IF(LTRNOW.NE.LTRSPA)GO TO 15
          LOCATE=LOCATE+1
        GO TO 14
       15 IF(LTRNOW.EQ.LTRCOM)GO TO 50
       16 IF(KNDARG.EQ.0)GO TO 61
          IFCMMA=1
          GO TO(17,24,42,22,54,24),KNDARG
 C
  C     EVALUATE NUMBER TO RIGHT OF SWITCH
      17 KVALUE=0
          KMINUS=0
       18 IF(LOCATE.GT.LNGBGN)GO TO 21
          LTRNOW=LTRBGN(LOCATE)
       IF(LTRNOW.EQ.LTRSPA)GO TO 21
          IF(LTRNOW.EQ.LTRCOM)GO TO 21
          DO 19 I=1,10
      IF(LTRNOW.NE.LTRDGT(I))GO TO 19
       IF(KMINUS.EQ.0)KMINUS=1
          IF(KVALUE.LT.10000)KVALUE=(10*KVALUE)+I-1
       GO TO 20
       19 CONTINUE
          IF(KMINUS.NE.0)GO TO 21
          IF(LTRNOW.EQ.LTRMNS)KMINUS=-2
         IF(LTRNOW.EQ.LTRPLS)KMINUS=-1
         IF(KMINUS.EQ.0)GO TO 61
       20 LOCATE=LOCATE+1
        GO TO 18
       21 IF(KMINUS.EQ.-2)KVALUE=-KVALUE
        KNTARG=KNTARG+1
        NVALUE(KNTARG)=KVALUE
       NMINUS(KNTARG)=KMINUS
       GO TO 49
    C
  C     CHECK IF TEXT STRING IS QUOTED
     22 IF(MRKTXT.LE.0)GO TO 54
          LNGBGN=NOTSEM
          IFCMMA=1
       23 MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 33
          IF(LTRBGN(LOCATE).EQ.LTRTXT)GO TO 25
       IF(LTRBGN(LOCATE).NE.LTRSPA)GO TO 33
       LOCATE=LOCATE+1
        IF(LOCATE.LE.LNGBGN)GO TO 23
          GO TO 53
    C
  C     CHECK IF CHARACTER IS QUOTED
       24 MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 33
          IF(LTRBGN(LOCATE).NE.LTRTXT)GO TO 29
 C
  C     GET REST OF QUOTED STRING IF UNPAIRED DELIMITER
   25 IVALUE=LOCATE
       26 IVALUE=IVALUE+1
        IF(IVALUE.GT.LNGBGN)GO TO 27
          MSKBIT=MSKBGN(IVALUE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 26
          IF(LTRBGN(IVALUE).NE.LTRTXT)GO TO 26
       IVALUE=IVALUE+1
        IF(IVALUE.GT.LNGBGN)GO TO 37
          MSKBIT=MSKBGN(IVALUE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 37
          IF(LTRBGN(IVALUE).NE.LTRTXT)GO TO 37
       GO TO 26
       27 IFENCE=1
          LTRFNC=LTRTXT
          LNGBGN=KPYPRT
          MASTER=9
          KOMENT=-1
         IQUOTE=1
          GO TO 72
       28 IFENCE=0
          GO TO 37
    C
  C     GET UNQUOTED MULTIPLE CHARACTERS
   29 IF(KNDARG.NE.6)GO TO 33
          KNTARG=KNTARG+1
        NVALUE(KNTARG)=LOCATE
       IVALUE=1
       30 LOCATE=LOCATE+1
        IF(LOCATE.GT.LNGBGN)GO TO 32
          LTRNOW=LTRBGN(LOCATE)
       MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 31
          MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 32
          IF(LTRBGN(LOCATE).EQ.LTRCOM)GO TO 32
    31 IVALUE=IVALUE+1
        GO TO 30
       32 NMINUS(KNTARG)=IVALUE
       GO TO 49
    C
  C     GET UNQUOTED TEXT OR UNQUOTED CHARACTER
      33 KNTARG=KNTARG+1
        NVALUE(KNTARG)=LOCATE
       NMINUS(KNTARG)=1
       IF(KNDARG.NE.4)GO TO 48
          IF(KPYPRT.GT.NOTSEM)GO TO 34
          LNGBGN=KPYPRT
          MASTER=7
          KOMENT=1
          GO TO 72
       34 IVALUE=NOTSEM
       35 MSKBIT=MSKBGN(IVALUE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 36
          IF(LTRBGN(IVALUE).NE.LTRSPA)GO TO 36
       IVALUE=IVALUE-1
        GO TO 35
       36 NMINUS(KNTARG)=IVALUE-LOCATE+1
        LOCATE=LNGBGN
          GO TO 48
    C
  C     GET QUOTED TEXT OR QUOTED CHARACTER
     37 IVALUE=LOCATE
          KVALUE=LOCATE
          GO TO 39
       38 KVALUE=KVALUE+1
        IF(KVALUE.GE.LOCATE)GO TO 39
          LTRBGN(KVALUE)=LTRBGN(LOCATE)
         MSKBGN(KVALUE)=MSKBGN(LOCATE)
         LTRBGN(LOCATE)=LTRSPA
       MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       MSKBGN(LOCATE)=MSKBIT
    39 LOCATE=LOCATE+1
        IF(LOCATE.GT.LNGBGN)GO TO 41
          MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 38
          IF(LTRBGN(IVALUE).NE.LTRBGN(LOCATE))GO TO 38
         LOCATE=LOCATE+1
        IF(LOCATE.GT.LNGBGN)GO TO 40
          MSKBIT=MSKBGN(LOCATE)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 40
          IF(LTRBGN(IVALUE).EQ.LTRBGN(LOCATE))GO TO 38
      40 IF(KVALUE.GE.(LOCATE-2))GO TO 41
      LTRBGN(KVALUE+1)=LTRBGN(LOCATE-1)
          MSKBGN(KVALUE+1)=MSKBGN(LOCATE-1)
          LTRBGN(LOCATE-1)=LTRSPA
          MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       MSKBGN(LOCATE-1)=MSKBIT
       41 KNTARG=KNTARG+1
        KVALUE=KVALUE-IVALUE
        IF(KVALUE.EQ.0)KVALUE=-1
         NMINUS(KNTARG)=KVALUE
       NVALUE(KNTARG)=IVALUE+1
          IF(KNDARG.EQ.4)GO TO 49
          IF(KNDARG.EQ.6)GO TO 49
          IF(KVALUE.GT.1)GO TO 61
          GO TO 49
    C
  C     EVALUATE TYPE OF NUMERIC DISPLAY
C     D,O,H,RU,RL,RM,LU,LL,LM
       42 IVALUE=0
          LTRNOW=LTRBGN(LOCATE)
       DO 43 I=1,26
      IF(LTRNOW.EQ.LWRABC(I))LTRNOW=LTRABC(I)
      43 CONTINUE
          IF(LTRNOW.EQ.1HD)IVALUE=1
        IF(LTRNOW.EQ.1HO)IVALUE=2
        IF(LTRNOW.EQ.1HH)IVALUE=3
        IF(LTRNOW.EQ.1HR)IVALUE=4
        IF(LTRNOW.EQ.1HL)IVALUE=7
        IF(IVALUE.EQ.0)GO TO 61
          LOCATE=LOCATE+1
        IF(LOCATE.GT.LNGBGN)GO TO 47
          IF(IVALUE.LT.4)GO TO 45
          KVALUE=-1
         LTRNOW=LTRBGN(LOCATE)
       DO 44 I=1,26
      IF(LTRNOW.EQ.LWRABC(I))LTRNOW=LTRABC(I)
      44 CONTINUE
          IF(LTRNOW.EQ.1HU)KVALUE=0
        IF(LTRNOW.EQ.1HL)KVALUE=1
        IF(LTRNOW.EQ.1HM)KVALUE=2
        IF(KVALUE.LT.0)GO TO 45
          IVALUE=IVALUE+KVALUE
        LOCATE=LOCATE+1
        IF(LOCATE.GT.LNGBGN)GO TO 47
       45 LTRNOW=LTRBGN(LOCATE)
       DO 46 I=1,26
      IF(LTRNOW.EQ.LTRABC(I))GO TO 61
       IF(LTRNOW.EQ.LWRABC(I))GO TO 61
    46 CONTINUE
       47 KNTARG=KNTARG+1
        NMINUS(KNTARG)=1
       NVALUE(KNTARG)=IVALUE
       GO TO 49
    C
  C     ALLOW A COMMA TO FOLLOW ARGUMENT
   48 LOCATE=LOCATE+1
     49 IF(LOCATE.GT.LNGBGN)GO TO 52
          LTRNOW=LTRBGN(LOCATE)
       IF(LTRNOW.EQ.LTRSPA)GO TO 48
          IF(LTRNOW.NE.LTRCOM)GO TO 52
       50 LOCATE=LOCATE+1
        IF(IFCMMA.GT.0)GO TO 51
          IF(KNDARG.EQ.0)GO TO 61
          KNTARG=KNTARG+1
        NMINUS(KNTARG)=0
       NVALUE(KNTARG)=0
    51 IFCMMA=-1
      52 MAXARG=MAXARG-1
        IF(MAXARG.GT.0)GO TO 13
          NXTARG=NXTARG+1
        GO TO 12
       53 IF(IFCMMA.GE.0)GO TO 71
          IF(KNDARG.EQ.0)GO TO 61
          KNTARG=KNTARG+1
        NMINUS(KNTARG)=0
       NVALUE(KNTARG)=0
       GO TO 71
    C
  C     CONVERT CASE OF LETTERS IN REST OF TEXTUAL ARGUMENT
    54 LNGBGN=KPYPRT
          MASTER=8
          KOMENT=0
          JSKIP=0
      KNTARG=KNTARG+1
        NVALUE(KNTARG)=LOCATE
       GO TO 72
    C
  C     INSURE SPACE FOLLOWS COMMAND WITH TEXTUAL ARGUMENT
     55 IF(NVALUE(KNTARG).GT.LNGBGN)GO TO 60
       IF(KNTARG.GT.1)GO TO 59
          I=NVALUE(KNTARG)
       MSKBIT=MSKBGN(I)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 56
          MSKBIT=MSKBGN(I)
       CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 58
       56 LTRNOW=LTRBGN(I)
       DO 57 I=1,26
      IF(LTRNOW.EQ.LTRABC(I))GO TO 61
       IF(LTRNOW.EQ.LWRABC(I))GO TO 61
    57 CONTINUE
          GO TO 59
       58 NVALUE(KNTARG)=NVALUE(KNTARG)+1
    59 NMINUS(KNTARG)=LNGBGN-NVALUE(KNTARG)+1
          GO TO 71
       60 NVALUE(KNTARG)=LNGBGN
       NMINUS(KNTARG)=0
       IF(IFCMMA.GE.0)KNTARG=KNTARG-1
        GO TO 71
    C
  C     REPORT ILLEGAL COMMAND TO USER
     61 IF(JFILL.EQ.6)GO TO 70
      IF(MRKDOT.LE.0)GO TO 70
          IF(KNDFIL.LT.0)GO TO 69
          IF(KNDFIL.GT.0)GO TO 65
          IF(IDEBUG.NE.0)GO TO 64
          IF(LSNSRC.EQ.0)WRITE(ITTY,62)KNTLIN,
      1(LTRBGN(I),I=ISTART,LNGBGN)
      IF(LSNSRC.GT.0)WRITE(ITTY,63)(LTRBGN(I),I=1,5),
     1(LTRBGN(I),I=ISTART,LNGBGN)
   62 FORMAT(6H Line ,1I5,17H unknown command ,300A1)
   63 FORMAT(6H Line ,5A1,17H unknown command ,300A1)
      GO TO 69
       64 IF(LSNSRC.EQ.0)WRITE(JDISK,62)KNTLIN,
     1(LTRBGN(I),I=ISTART,LNGBGN)
      IF(LSNSRC.GT.0)WRITE(JDISK,63)(LTRBGN(I),I=1,5),
         1(LTRBGN(I),I=ISTART,LNGBGN)
      GO TO 69
       65 IF(IDEBUG.NE.0)GO TO 68
          IF(LSNSPL.EQ.0)WRITE(ITTY,66)LINSPL,
      1(LTRBGN(I),I=ISTART,LNGBGN)
      IF(LSNSPL.GT.0)WRITE(ITTY,67)(LTRBGN(I),I=1,5),
     1(LTRBGN(I),I=ISTART,LNGBGN)
   66 FORMAT(13H Splice line ,1I5,17H unknown command ,300A1)
     67 FORMAT(13H Splice line ,5A1,17H unknown command ,300A1)
        GO TO 69
       68 IF(LSNSPL.EQ.0)WRITE(JDISK,66)LINSPL,
     1(LTRBGN(I),I=ISTART,LNGBGN)
      IF(LSNSPL.GT.0)WRITE(JDISK,67)(LTRBGN(I),I=1,5),
         1(LTRBGN(I),I=ISTART,LNGBGN)
   69 KOMAND=0
          MASTER=6
          GO TO 72
    C
  C     AFTER .LITERAL, ALL BUT .END LITERAL IS TEXT
   C     AFTER .NO FLAG CONTROL, ALL BUT .FLAG CONTROL IS TEXT
       70 MASTER=10
         JSKIP=0
      KOMENT=0
          IF(LNGBGN.LT.KPYPRT)LNGBGN=KPYPRT
          GO TO 73
    C
  C     GET THE 1ST ARGUMENT FOR EASIER ACCESS
       71 IVALUE=NVALUE(1)
       IMINUS=NMINUS(1)
 C
  C     DETERMINE WHETHER LEGAL COMMAND REQUIRES BREAK
       MASTER=1
    C
  C     RETURN TO CALLING PROGRAM
     72 KPYBGN=KPYKAS
       73 RETURN
       END
          SUBROUTINE RNOPUT
C     RENBR(/COPY LINE OF TEXT INTO OUTPUT FILE)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     DETERMINE EXTRA LINES FOR SUPER OR SUBSCRIPTS
        IXTRSS=0
          JXTRSS=0
          KXTRSS=0
          IF(KTRMNL.NE.0)GO TO 5
      IF(LNGMID.LE.0)GO TO 5
      DO 1 I=1,LNGMID
        MSKBIT=MSKMID(I)
       IF(MSKBIT.EQ.0)GO TO 1
      CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 1
      IXTRSS=1
          GO TO 2
    1 CONTINUE
        2 DO 3 I=1,LNGMID
        MSKBIT=MSKMID(I)
       IF(MSKBIT.EQ.0)GO TO 3
      CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 3
      JXTRSS=1
          GO TO 4
    3 CONTINUE
        4 KXTRSS=JXTRSS
          IF(IFHALF.LE.0)KXTRSS=IXTRSS+JXTRSS
      5 CONTINUE
    C
  C     DETERMINE WHAT TO DO THIS TIME.
       IF(MASTER.LE.0)GO TO 12
          IF(MASTER.EQ.5)GO TO 12
          IF(MASTER.NE.3)GO TO 6
      IF(KNTTOP.LT.0)GO TO 180
       6 ITLSPA=0
          ITLNXT=0
          IREVRS=1
          IF(LNGMID.GT.0)GO TO 12
        7 IF(MASTER.EQ.1)GO TO 180
         IF(MASTER.EQ.6)GO TO 180
         IF(MASTER.EQ.3)GO TO 11
          IF(JDFRFG.LE.0)GO TO 8
      IF(NXTFIG.GT.0)NXTFIG=NXTFIG+ISPACE
        NXTFIG=NXTFIG+JDFRFG
        JDFRFG=0
        8 IF(NXTFIG.GT.0)GO TO 9
      IDFRPG=IDFRPG+JDFRPG
        JDFRPG=0
          IF(IDFRPG.LE.0)GO TO 11
          IF(IFNRDY.LE.0)GO TO 10
          IF(IDEFER.GT.0)GO TO 128
         GO TO 28
        9 IF(IFNRDY.LE.0)GO TO 10
          IF(IDEFER.GT.0)GO TO 127
         GO TO 28
       10 IF(MASTER.NE.2)GO TO 128
         IF(NXTFIG.GT.0)GO TO 127
         GO TO 130
      11 IF(IFNRDY.LE.0)GO TO 180
         IF(IDEFER.GT.0)GO TO 180
         IF(IDEFER.LT.-4)GO TO 28
         IF(KNTTOP.LT.0)GO TO 28
          IF(NEWPAG.EQ.0)NEWPAG=1
          GO TO 28
    C
  C     STORE FOOTNOTE TEXT IN SCRATCH FILE
     12 IF(IFNOTE.EQ.0)GO TO 28
          IF(IFNTTL.EQ.0)IFORMR=0
          IF(ISKIP.LE.0)GO TO 13
      IF(IXTRSS.NE.0)ISKIP=ISKIP-1
          IF(IFORMR.NE.0)ISKIP=ISKIP-1
       13 IF(ISKIP.LT.0)ISKIP=0
       IF(ISKIP.GT.999)ISKIP=999
        IFORMR=JXTRSS
          IF(LNGMID.GT.0)GO TO 14
          LNGMID=0
       14 IF(IFNOPN.GT.0)GO TO 15
          IF(JFNOPN.GT.0)GO TO 23
          IF(IFNOPN.LT.0)GO TO 22
          IFNOPN=1
          IFNRIT=0
          IFNRED=0
          IFNBGN=0
          CALL RNOFIL(1,1,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       15 IF(LINFIG.LE.0)GO TO 16
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
       16 IF(ISKIP.LE.0)GO TO 18
      IF(ISKIP.GT.999)ISKIP=999
  C     FIRST ITEM IN RECORD
  C     = 1, INDEX LINE FOLLOWS
    C     = 2, ORDINARY PRINTING LINE FOLLOWS
  C     = 3, DESCRIPTION OF SKIPPED LINE
      I=3
          J=INIBAR
          IF(IFABAR.EQ.0)J=0
          WRITE(KDISK,17)I,ISKIP,LFTOFF,IRTOFF,J
       17 FORMAT(5I3,6H  0  0)
        IFNTTL=IFNTTL+ISKIP
         IFNRIT=IFNRIT+1
     18 IFNRIT=IFNRIT+1
        IFNTTL=IFNTTL+IXTRSS+JXTRSS+1
         IF(LNGFTN.LE.0)IFNRDY=IFNTTL
          IF(LNGFTN.LE.0)IFNBGN=IFNRIT
          I=2
          WRITE(KDISK,19)I,LNGMID,LFTOFF,IRTOFF,IFABAR,IXTRSS,JXTRSS
       19 FORMAT(7I3)
       IF(LNGMID.EQ.0)GO TO 26
          WRITE(KDISK,20)(LTRMID(I),I=1,LNGMID)
      WRITE(KDISK,21)(MSKMID(I),I=1,LNGMID)
   20 FORMAT(300A1)
       21 FORMAT(24I3)
      GO TO 26
       22 JFNOPN=1
          JFNRIT=0
          JFNRED=0
          JFNBGN=0
          CALL RNOFIL(2,1,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
       23 IF(LINFIG.LE.0)GO TO 24
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
       24 IF(ISKIP.LE.0)GO TO 25
      IF(ISKIP.GT.999)ISKIP=999
        I=3
          J=INIBAR
          IF(IFABAR.EQ.0)J=0
          WRITE(LDISK,17)I,ISKIP,LFTOFF,IRTOFF,J
          IFNTTL=IFNTTL+ISKIP
         JFNRIT=JFNRIT+1
     25 JFNRIT=JFNRIT+1
        IFNTTL=IFNTTL+IXTRSS+JXTRSS+1
         IF(LNGFTN.LE.0)IFNRDY=IFNTTL
          IF(LNGFTN.LE.0)JFNBGN=JFNRIT
          I=2
          WRITE(LDISK,19)I,LNGMID,LFTOFF,IRTOFF,IFABAR,IXTRSS,JXTRSS
          IF(LNGMID.EQ.0)GO TO 26
          WRITE(LDISK,20)(LTRMID(I),I=1,LNGMID)
      WRITE(LDISK,21)(MSKMID(I),I=1,LNGMID)
   26 INIBAR=0
          IF(NOWBAR.NE.0)INIBAR=IFABAR
          IFABAR=0
          LNGMID=0
          IF(LINFIG.LE.0)GO TO 27
          LINFIG=LINFIG-1
        ISKIP=0
      IF(LINFIG.GT.0)GO TO 12
       27 ISKIP=ISPACE
      IF(KDFRFG.EQ.0)GO TO 178
         LINFIG=KDFRFG
          KDFRFG=0
          GO TO 12
    C
  C     DISCARD SKIPPED LINES AT START OF FOOTNOTE
   28 IF(IFNRDY.LE.0)GO TO 30
          IF(IDEFER.GT.0)GO TO 30
          IF(IFNHAV.EQ.0)GO TO 30
          IF(IRECRD.NE.3)GO TO 30
          IF(JFNOPN.LT.0)GO TO 29
          IF(IFNRED.GE.IFNBGN)GO TO 30
          IFNHAV=0
          IFNRED=IFNRED+1
        IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
        GO TO 30
       29 IF(JFNRED.GE.JFNBGN)GO TO 30
          IFNHAV=0
          JFNRED=JFNRED+1
        IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
  C
  C     DETERMINE IF FOOTNOTE SHOULD BE AT BOTTOM OF PAGE
      30 IF(MASTER.EQ.2)GO TO 36
          IF(NEWPAG.GT.0)GO TO 36
          IF(NEWPAG.NE.0)GO TO 39
          IF(IFPAGE.LE.0)GO TO 32
          IF(KTRMNL.NE.0)GO TO 31
          I=JXTRSS
          IF(IFHALF.LE.0)I=I+IXTRSS
        IF((LOCPAG+I).GE.LNGPAG)GO TO 36
      GO TO 32
       31 IF(LOCPAG.GE.LNGPAG)GO TO 36
       32 IF(IFNRDY.LE.0)GO TO 40
          IF(IDEFER.GT.0)GO TO 40
          IF(LINFIG.LE.0)GO TO 33
          I=KFNGAP
          GO TO 34
       33 I=ISPACE+KFNGAP
        IF(KTRMNL.NE.0)GO TO 34
          IF(IFHALF.LE.0)I=I+IXTRSS
        IF(ISPACE.EQ.0)I=I+JXTRSS
     34 IF(IFPAGE.EQ.0)GO TO 40
          IF((LOCPAG+IFNRDY+IFNGAP+I).LT.LNGPAG)GO TO 40
       IF(IFPAGE.LE.0)GO TO 41
          IF(KTRMNL.NE.0)GO TO 35
          IF(IFNHAV.EQ.0)GO TO 35
          IF((LOCPAG+IFNGAP+KNDLIN+MXTRSS+NXTRSS).GE.LNGPAG)GO TO 40
          GO TO 41
       35 IF((LOCPAG+IFNGAP+KNDLIN).GE.LNGPAG)GO TO 40
         GO TO 41
       36 IF(IFNRDY.LE.0)GO TO 126
         IF(IDEFER.GT.0)GO TO 126
         IF(NEWPAG.LT.0)GO TO 39
          IF(IFPAGE.LE.0)GO TO 41
          IF(KTRMNL.NE.0)GO TO 37
          IF(IFNHAV.EQ.0)GO TO 37
          IF((LOCPAG+IFNGAP+KNDLIN+MXTRSS+NXTRSS).LT.LNGPAG)GO TO 41
          GO TO 38
       37 IF((LOCPAG+IFNGAP+KNDLIN).LT.LNGPAG)GO TO 41
      38 IF(MASTER.EQ.3)GO TO 126
      39 IF(IDEFER.EQ.-2)IDEFER=-3
        IF(IDEFER.EQ.-6)IDEFER=-7
        GO TO 127
      40 IF(IDEFER.EQ.-4)GO TO 42
         IF(IDEFER.EQ.-8)GO TO 42
         IF(IDEFER.EQ.-3)GO TO 42
         IF(IDEFER.EQ.-7)GO TO 42
         IF(IDEFER.EQ.-2)IDEFER=-3
        IF(IDEFER.EQ.-6)IDEFER=-7
        IF(KNTTOP.LT.0)GO TO 127
         GO TO 167
      41 IF(IDEFER.EQ.-3)GO TO 42
         IF(IDEFER.EQ.-7)GO TO 42
         IF(IDEFER.EQ.-2)IDEFER=-3
        IF(IDEFER.EQ.-6)IDEFER=-7
        IF(KNTTOP.LT.0)GO TO 127
         IF(IDEFER.EQ.0)GO TO 42
          IF(NEWPAG.NE.0)GO TO 127
         GO TO 42
    C
  C     GENERATE BLANK LINES BEFORE FOOTNOTE
    42 IF(IDEFER.GE.0)GO TO 49
          I=-IDEFER
         GO TO(48,43,45,58,47,44,46,58),I
   43 IDEFER=-3
         IF(KNTTOP.LT.0)GO TO 42
          GO TO 127
      44 IDEFER=-7
         IF(KNTTOP.LT.0)GO TO 42
          GO TO 127
      45 IDEFER=-4
         KAPFTN=IFNGAP
          GO TO 51
       46 IDEFER=-8
         KAPFTN=IFNGAP
          GO TO 51
       47 IDEFER=-8
         KAPFTN=IFNGAP+KNDLIN
        GO TO 50
       48 IDEFER=-4
      49 KAPFTN=LNGPAG-LOCPAG-IFNRDY
      IF(KAPFTN.GE.(IFNGAP+KNDLIN))GO TO 51
      KAPFTN=IFNGAP+KNDLIN
     50 IF(KTRMNL.NE.0)GO TO 52
          IF(KNDLIN.LE.KFNGAP)GO TO 51
          IF(IFHALF.LT.0)KAPFTN=KAPFTN-1
     51 KNDOUT=6
          CALL RNOLIN
    52 IF(KAPFTN.LE.0)GO TO 57
          LNGWRK=0
          KAPFTN=KAPFTN-1
        IF(KAPFTN.NE.JFNGAP)GO TO 56
          IF(LNGFNR.EQ.0)GO TO 56
          IF(LNGFNR.GT.0)GO TO 54
          DO 53 I=1,MRGFAR
       IF(LNGWRK.GE.LMTWRK)GO TO 56
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRFNR(1)
         MSKWRK(LNGWRK)=MSKFNR(1)
      53 CONTINUE
          GO TO 56
       54 DO 55 I=1,LNGFNR
       IF(LNGWRK.GE.LMTWRK)GO TO 56
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRFNR(I)
         MSKWRK(LNGWRK)=MSKFNR(I)
      55 CONTINUE
       56 KNDOUT=4
          CALL RNOLIN
       GO TO 52
       57 IF(KTRMNL.NE.0)GO TO 58
          KNDOUT=6
          CALL RNOLIN
 C
  C     GENERATE FOOTNOTE
   58 KNDLIN=ISPACE+KFNGAP
        IF(JFNOPN.LT.0)GO TO 81
          IF(IFNOPN.GE.0)GO TO 123
      59 IF(IFNRED.GE.IFNBGN)GO TO 80
          IFNRED=IFNRED+1
        IF(IFNHAV.NE.0)GO TO 60
          READ(KDISK,19)IRECRD,NXTFTN,ILFFTN,IRTFTN,IBRFTN,
        1MXTRSS,NXTRSS
       60 GO TO(61,76,72),IRECRD
   61 IF(NDXKNT.NE.0)GO TO 62
          CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      62 NDXKNT=NDXKNT+1
        READ(KDISK,63)KNTNDX,NDXMID,NDXSKP
      63 FORMAT(10I5)
      IF(NDXMID.LE.0)GO TO 68
          NDXMID=LOCPAG+1
        IF(NDXSKP.GT.0)NDXMID=NDXMID+NDXSKP
        IF(IFPAGE.LE.0)GO TO 68
          IF(NDXMID.LE.LNGPAG)GO TO 68
          NDXLOC=KNTPAG+1
        IF(NEWCHA.EQ.0)GO TO 65
          IF(ISECTN.GT.0)GO TO 64
          NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 65
       64 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
       65 IF(ISUBPG.EQ.0)GO TO 66
          NDXPAG=NXTPAG
          NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 66
          NDXSUB=0
          GO TO 67
       66 NDXSUB=NXTSUB
       67 NDXSPH=KNDSUB
          GO TO 69
       68 NDXLOC=KNTPAG
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
       69 WRITE(NDXDSK,70)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
      1NDXSUB,NDXSPH,KNTNDX
     70 FORMAT(10I5)
      READ(KDISK,71)(NUMNDX(I),I=1,KNTNDX)
       WRITE(NDXDSK,71)(NUMNDX(I),I=1,KNTNDX)
       71 FORMAT(24I3)
      IFNHAV=0
          GO TO 59
       72 IFNHAV=0
          IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
        IF(IFPAGE.LE.0)GO TO 73
          IF((LOCPAG+NXTFTN).GE.LNGPAG)GO TO 123
       73 J=ILFFTN
          IF(LFTRIT.NE.0)J=IRTFTN
          IF(IBRFTN.NE.0)IBRFTN=J-2
        KOFFST=IOFFST
          IOFFST=J
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
          NEEDED=NXTFTN
       74 KNDOUT=2
          CALL RNOLIN
       NEEDED=NEEDED-1
        IF(NEEDED.GT.0)GO TO 74
          IF(KTRMNL.NE.0)GO TO 75
          KNDOUT=6
          CALL RNOLIN
    75 IOFFST=KOFFST
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
          GO TO 79
       76 IFNHAV=0
          IFNTTL=IFNTTL-MXTRSS-NXTRSS-1
         IFNRDY=IFNRDY-MXTRSS-NXTRSS-1
         IF(NXTFTN.EQ.0)GO TO 77
          READ(KDISK,20)(LTRWRK(I),I=1,NXTFTN)
       READ(KDISK,21)(MSKWRK(I),I=1,NXTFTN)
    77 LNGWRK=NXTFTN
          J=ILFFTN
          IF(LFTRIT.NE.0)J=IRTFTN
          IF(IBRFTN.NE.0)IBRFTN=J-2
        KOFFST=IOFFST
          IOFFST=J
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
          KNDOUT=5
          CALL RNOLIN
       IF(KTRMNL.NE.0)GO TO 78
          IF(IFHALF.GE.0)GO TO 78
          KNDOUT=6
          CALL RNOLIN
    78 IOFFST=KOFFST
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
       79 IF(IFPAGE.LT.0)IFPAGE=1
       80 IF(IFNRED.LT.IFNRIT)GO TO 100
         IF(IFNHAV.NE.0)GO TO 123
         CALL RNOFIL(1,6,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          IFNOPN=0
          IFNRIT=0
          IFNBGN=0
          IFNRED=0
          GO TO 100
      81 IF(JFNRED.GE.JFNBGN)GO TO 99
          JFNRED=JFNRED+1
        IF(IFNHAV.NE.0)GO TO 82
          READ(LDISK,19)IRECRD,NXTFTN,ILFFTN,IRTFTN,IBRFTN,
        1MXTRSS,NXTRSS
       82 GO TO(83,95,91),IRECRD
   83 IF(NDXKNT.NE.0)GO TO 84
          CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      84 NDXKNT=NDXKNT+1
        READ(LDISK,63)KNTNDX,NDXMID,NDXSKP
         IF(NDXMID.LE.0)GO TO 89
          NDXMID=LOCPAG+1
        IF(NDXSKP.GT.0)NDXMID=NDXMID+NDXSKP
        IF(IFPAGE.LE.0)GO TO 89
          IF(NDXMID.LE.LNGPAG)GO TO 89
          NDXLOC=KNTPAG+1
        IF(NEWCHA.EQ.0)GO TO 86
          IF(ISECTN.GT.0)GO TO 85
          NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 86
       85 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
       86 IF(ISUBPG.EQ.0)GO TO 87
          NDXPAG=NXTPAG
          NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 87
          NDXSUB=0
          GO TO 88
       87 NDXSUB=NXTSUB
       88 NDXSPH=KNDSUB
          GO TO 90
       89 NDXLOC=KNTPAG
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
       90 WRITE(NDXDSK,70)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
      1NDXSUB,NDXSPH,KNTNDX
        READ(LDISK,71)(NUMNDX(I),I=1,KNTNDX)
       WRITE(NDXDSK,71)(NUMNDX(I),I=1,KNTNDX)
          IFNHAV=0
          GO TO 81
       91 IFNHAV=0
          IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
        IF(IFPAGE.LE.0)GO TO 92
          IF((LOCPAG+NXTFTN).GE.LNGPAG)GO TO 123
       92 J=ILFFTN
          IF(LFTRIT.NE.0)J=IRTFTN
          IF(IBRFTN.NE.0)IBRFTN=J-2
        KOFFST=IOFFST
          IOFFST=J
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
          NEEDED=NXTFTN
       93 KNDOUT=2
          CALL RNOLIN
       NEEDED=NEEDED-1
        IF(NEEDED.GT.0)GO TO 93
          IF(KTRMNL.NE.0)GO TO 94
          KNDOUT=6
          CALL RNOLIN
    94 IOFFST=KOFFST
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
          GO TO 98
       95 IFNHAV=0
          IFNTTL=IFNTTL-MXTRSS-NXTRSS-1
         IFNRDY=IFNRDY-MXTRSS-NXTRSS-1
         IF(NXTFTN.EQ.0)GO TO 96
          READ(LDISK,20)(LTRWRK(I),I=1,NXTFTN)
       READ(LDISK,21)(MSKWRK(I),I=1,NXTFTN)
    96 LNGWRK=NXTFTN
          J=ILFFTN
          IF(LFTRIT.NE.0)J=IRTFTN
          IF(IBRFTN.NE.0)IBRFTN=J-2
        KOFFST=IOFFST
          IOFFST=J
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
          KNDOUT=5
          CALL RNOLIN
       IF(KTRMNL.NE.0)GO TO 97
          IF(IFHALF.GE.0)GO TO 97
          KNDOUT=6
          CALL RNOLIN
    97 IOFFST=KOFFST
          J=IBRFTN
          IBRFTN=INIBAR
          INIBAR=J
       98 IF(IFPAGE.LT.0)IFPAGE=1
       99 IF(JFNRED.LT.JFNRIT)GO TO 100
         IF(IFNHAV.NE.0)GO TO 123
         CALL RNOFIL(2,6,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          JFNOPN=0
          JFNRIT=0
          JFNBGN=0
          JFNRED=0
      100 IF(IFNHAV.NE.0)GO TO 120
         IF(IFNOPN.LT.0)GO TO 101
         IF(JFNOPN.LT.0)GO TO 111
         IF(JFNOPN.GT.0)GO TO 110
         IF(IFNOPN.EQ.0)GO TO 120
         CALL RNOFIL(1,2,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(1,4,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          IFNOPN=-1
         IFNRED=0
      101 READ(KDISK,19)IRECRD,NXTFTN,ILFFTN,IRTFTN,IBRFTN,
        1MXTRSS,NXTRSS
          IF(IRECRD.NE.1)GO TO 109
         IFNRED=IFNRED+1
        IF(NDXKNT.NE.0)GO TO 102
         CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
     102 NDXKNT=NDXKNT+1
        READ(KDISK,63)KNTNDX,NDXMID,NDXSKP
         IF(NDXMID.LE.0)GO TO 107
         NDXMID=LOCPAG+1
        IF(NDXSKP.GT.0)NDXMID=NDXMID+NDXSKP
        IF(IFPAGE.LE.0)GO TO 107
         IF(NDXMID.LE.LNGPAG)GO TO 107
         NDXLOC=KNTPAG+1
        IF(NEWCHA.EQ.0)GO TO 104
         IF(ISECTN.GT.0)GO TO 103
         NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 104
     103 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
      104 IF(ISUBPG.EQ.0)GO TO 105
         NDXPAG=NXTPAG
          NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 105
         NDXSUB=0
          GO TO 106
     105 NDXSUB=NXTSUB
      106 NDXSPH=KNDSUB
          GO TO 108
     107 NDXLOC=KNTPAG
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
      108 WRITE(NDXDSK,70)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
      1NDXSUB,NDXSPH,KNTNDX
        READ(KDISK,71)(NUMNDX(I),I=1,KNTNDX)
       WRITE(NDXDSK,71)(NUMNDX(I),I=1,KNTNDX)
          IF(IFNRED.LT.IFNBGN)GO TO 101
         IFNHAV=0
          GO TO 80
      109 IFNHAV=1
          GO TO 120
     110 CALL RNOFIL(2,2,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,4,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          JFNOPN=-1
         JFNRED=0
      111 READ(LDISK,19)IRECRD,NXTFTN,ILFFTN,IRTFTN,IBRFTN,
        1MXTRSS,NXTRSS
          IF(IRECRD.NE.1)GO TO 119
         JFNRED=JFNRED+1
        IF(NDXKNT.NE.0)GO TO 112
         CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
     112 NDXKNT=NDXKNT+1
        READ(LDISK,63)KNTNDX,NDXMID,NDXSKP
         IF(NDXMID.LE.0)GO TO 117
         NDXMID=LOCPAG+1
        IF(NDXSKP.GT.0)NDXMID=NDXMID+NDXSKP
        IF(IFPAGE.LE.0)GO TO 117
         IF(NDXMID.LE.LNGPAG)GO TO 117
         NDXLOC=KNTPAG+1
        IF(NEWCHA.EQ.0)GO TO 114
         IF(ISECTN.GT.0)GO TO 113
         NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 114
     113 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
      114 IF(ISUBPG.EQ.0)GO TO 115
         NDXPAG=NXTPAG
          NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 115
         NDXSUB=0
          GO TO 116
     115 NDXSUB=NXTSUB
      116 NDXSPH=KNDSUB
          GO TO 118
     117 NDXLOC=KNTPAG
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
      118 WRITE(NDXDSK,70)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
      1NDXSUB,NDXSPH,KNTNDX
        READ(LDISK,71)(NUMNDX(I),I=1,KNTNDX)
       WRITE(NDXDSK,71)(NUMNDX(I),I=1,KNTNDX)
          IF(JFNRED.LT.JFNBGN)GO TO 111
         IFNHAV=0
          GO TO 99
      119 IFNHAV=1
      120 IF(IFPAGE.LE.0)GO TO 122
         IF(KTRMNL.NE.0)GO TO 121
         IF(IFNHAV.LE.0)GO TO 121
         IF((LOCPAG+MXTRSS+NXTRSS).GE.LNGPAG)GO TO 123
        GO TO 122
     121 IF(LOCPAG.GE.LNGPAG)GO TO 123
     122 IF(IFNRDY.GT.0)GO TO 58
      123 IF(MASTER.LE.0)GO TO 127
         IF(MASTER.EQ.5)GO TO 127
         IF(LNGMID.GT.0)GO TO 127
         IF(MASTER.EQ.3)GO TO 125
         IF(JDFRFG.LE.0)GO TO 124
         IF(NXTFIG.GT.0)NXTFIG=NXTFIG+ISPACE
        NXTFIG=NXTFIG+JDFRFG
        JDFRFG=0
      124 IF(NXTFIG.GT.0)GO TO 127
         IF(LINFIG.GT.0)GO TO 127
         IF(IFNRDY.LE.0)GO TO 125
         IF(IDEFER.GT.0)GO TO 125
         GO TO 127
     125 IF(IDFRPG.GT.0)GO TO 180
         ISKIP=LFNGAP
      IF(ISKIP.LT.ISPACE)ISKIP=ISPACE
       GO TO 180
   C
  C     TEST IF A NEW PAGE IS NEEDED
      126 IF(MASTER.LE.0)GO TO 127
         IF(LNGMID.GT.0)GO TO 127
         GO TO 180
   C
  C     GENERATE TITLE LINE
     127 CALL RNOBOT
       CALL RNOTOP
 C
  C     GENERATE DEFERRED PAGE
      IF(IDFRPG.LE.0)GO TO 132
     128 IDFRPG=IDFRPG-1
        GO TO 127
   C
  C     GENERATE DEFERRED PAGE IF PRINT INDEX OR PRINT
 C     FOOTNOTE IS ACTIVE BUT NOTHING ELSE FOLLOWS
      129 CALL RNOBOT
       CALL RNOTOP
       IF(IDFRPG.LE.0)GO TO 131
     130 IDFRPG=IDFRPG-1
        GO TO 129
     131 NEWPAG=1
          GO TO 132
   C
  C     GENERATE DEFERRED FIGURE
     132 IF(NXTFIG.LE.0)GO TO 137
         IDFRFG=ISPACE
      133 INIBAR=NOWBAR
          KNDOUT=2
          CALL RNOLIN
       KNDLIN=KFNGAP
          IF(IFPAGE.LT.0)IFPAGE=1
          NXTFIG=NXTFIG-1
        IF(IFPAGE.LE.0)GO TO 134
         IF(LOCPAG.LT.LNGPAG)GO TO 134
         IF(NXTFIG.GT.0)GO TO 127
         IF(LINFIG.GT.0)GO TO 127
         IF(MASTER.LE.0)GO TO 127
         IF(MASTER.EQ.5)GO TO 127
         IF(LNGMID.GT.0)GO TO 127
         IF(NEWCHA.NE.0)GO TO 127
         GO TO 137
     134 IF(NXTFIG.GT.0)GO TO 133
         IF(LINFIG.GT.0)GO TO 135
         IF(MASTER.LE.0)GO TO 135
         IF(MASTER.EQ.5)GO TO 135
         IF(LNGMID.GT.0)GO TO 135
         IF(NEWCHA.NE.0)GO TO 135
         GO TO 137
     135 IF(IFPAGE.LE.0)GO TO 136
         IF((LOCPAG+IDFRFG).GE.LNGPAG)GO TO 127
      136 NXTFIG=IDFRFG
          IDFRFG=0
          IF(NXTFIG.GT.0)GO TO 133
     137 CONTINUE
    C
  C     GENERATE START OF NEW CHAPTER
         IF(NEWCHA.EQ.0)GO TO 160
         NEWCHA=LOCPAG
          INIBAR=NOWBAR
      138 IF(JSECTN.GT.0)GO TO 143
         IF(LOCPAG.LT.(INIAPP+NEWCHA))GO TO 145
          IF(LOCPAG.EQ.(INIAPP+NEWCHA))GO TO 139
          IF(LOCPAG.EQ.(INIAPP+MIDAPP+1+NEWCHA))GO TO 155
      IF(LOCPAG.GT.(INIAPP+1+MIDAPP+LSTAPP+NEWCHA))GO TO 159
         GO TO 144
     139 LNGWRK=9
          IF(INITAL.LT.0)GO TO 141
         IF(KAPITL.LT.0)GO TO 141
         DO 140 J=1,9
      LTRWRK(J)=LTRAPP(J)
     140 CONTINUE
          GO TO 150
     141 DO 142 J=1,9
      LTRWRK(J)=LWRAPP(J)
     142 CONTINUE
          GO TO 150
     143 IF(LOCPAG.LT.(INICHA+NEWCHA))GO TO 145
          IF(LOCPAG.EQ.(INICHA+NEWCHA))GO TO 146
          IF(LOCPAG.EQ.(INICHA+MIDCHA+1+NEWCHA))GO TO 155
      IF(LOCPAG.GT.(INICHA+1+MIDCHA+LSTCHA+NEWCHA))GO TO 159
     144 KNDOUT=2
          CALL RNOLIN
       GO TO 138
     145 KNDOUT=3
          CALL RNOLIN
       GO TO 138
     146 IF(INITAL.LT.0)GO TO 148
         IF(KAPITL.LT.0)GO TO 148
         LNGWRK=0
          DO 147 J=1,8
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRCPT(J)
     147 CONTINUE
          GO TO 150
     148 LNGWRK=0
          DO 149 J=1,8
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LWRCHA(J)
     149 CONTINUE
      150 CALL RNONUM(NOWSHW,NOWSEC,LTRWRK,LNGWRK,LMTWRK)
      K=LNGWRK
          LNGWRK=LNGWRK+((MRGFAR-LNGWRK)/2)
          IF(LNGWRK.GT.LMTWRK)LNGWRK=LMTWRK
          IF(K.GE.LNGWRK)GO TO 153
         J=LNGWRK
      151 LTRWRK(J)=LTRWRK(K)
         J=J-1
        K=K-1
        IF(K.GT.0)GO TO 151
     152 LTRWRK(J)=LTRSPA
       J=J-1
        IF(J.GT.0)GO TO 152
     153 DO 154 I=1,LNGWRK
      MSKWRK(I)=0
   154 CONTINUE
          KNDOUT=5
          CALL RNOLIN
       GO TO 138
     155 IF(LNGCHA.LE.0)GO TO 159
         NEEDED=((MRGFAR-LNGCHA)/2)
       LNGWRK=0
          DO 156 I=1,NEEDED
      IF(LNGWRK.GE.LMTWRK)GO TO 158
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
       MSKWRK(LNGWRK)=0
   156 CONTINUE
          DO 157 I=1,LNGCHA
      IF(LNGWRK.GE.LMTWRK)GO TO 158
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRCHA(I)
         MSKWRK(LNGWRK)=MSKCHA(I)
     157 CONTINUE
      158 KNDOUT=5
          CALL RNOLIN
       GO TO 138
     159 NEWCHA=0
          IF(IFPAGE.EQ.0)GO TO 160
         IFPAGE=1
          IF(LOCPAG.GE.LNGPAG)GO TO 127
   C
  C     TEST IF HAVE MORE THAN 1 PAGE OF FOOTNOTE
   160 IF(IFNRDY.LE.0)GO TO 166
         IF(IDEFER.GT.0)GO TO 166
         IF(IFPAGE.EQ.0)GO TO 162
         IF(KTRMNL.NE.0)GO TO 161
         IF(IFNHAV.EQ.0)GO TO 161
         IF((LOCPAG+IFNGAP+KNDLIN+MXTRSS+NXTRSS).GE.LNGPAG)GO TO 166
         GO TO 162
     161 IF((LOCPAG+IFNGAP+KNDLIN).GE.LNGPAG)GO TO 166
    162 I=KNDLIN
          IF(LINFIG.LE.0)GO TO 163
         IF(I.LT.KFNGAP)I=KFNGAP
          GO TO 164
     163 IF(I.LT.(ISPACE+KFNGAP))I=ISPACE+KFNGAP
     164 IF(IFPAGE.EQ.0)GO TO 166
         IF(KTRMNL.NE.0)GO TO 165
         I=I+JXTRSS
        IF(IFHALF.LE.0)I=I+IXTRSS
    165 IF((LOCPAG+IFNRDY+IFNGAP+I+IXTRSS+JXTRSS).GE.LNGPAG)GO TO 28
  C
  C     CANCEL A SKIP WHICH HAPPENS AT TOP OF PAGE
  166 IF(ISKIP.GT.0)GO TO 176
    C
  C     OUTPUT NEXT LINE ON PAGE
     167 IF(LINFIG.GT.0)GO TO 170
         IF(MASTER.LE.0)GO TO 168
         IF(MASTER.EQ.5)GO TO 168
         IF(LNGMID.LE.0)GO TO 177
     168 IF(ISKIP.GT.0)GO TO 169
          INIBAR=IFABAR
          KNDOUT=1
          CALL RNOLIN
       IF(NOWBAR.EQ.0)INIBAR=0
          IFABAR=0
          LNGMID=0
          GO TO 171
     169 IF(NOWBAR.EQ.0)INIBAR=0
          KNDOUT=1
          CALL RNOLIN
       LNGMID=0
          GO TO 171
     170 IF(ISKIP.GT.0)GO TO 169
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
          INIBAR=IFABAR
          KNDOUT=2
          CALL RNOLIN
       IF(NOWBAR.EQ.0)INIBAR=0
          IFABAR=0
      171 KNDLIN=ISPACE+KFNGAP
        IF(IFPAGE.LT.0)IFPAGE=1
          IFNBGN=IFNRIT
          JFNBGN=JFNRIT
          IFNRDY=IFNTTL
          IF(LINFIG.GT.0)GO TO 173
         IF(ISKIP.LE.0)GO TO 172
          ISKIP=ISKIP-1
          GO TO 177
     172 ISKIP=ISPACE
      GO TO 177
     173 IF(ISKIP.LE.0)GO TO 174
          ISKIP=ISKIP-1
          GO TO 175
     174 ISKIP=0
      LINFIG=LINFIG-1
        IF(LINFIG.GT.0)GO TO 175
         ISKIP=ISPACE
      GO TO 177
     175 IF(IFPAGE.EQ.0)GO TO 170
         IF(LOCPAG.LT.LNGPAG)GO TO 170
         GO TO 127
     176 ISKIP=0
      IF(LINFIG.LE.0)GO TO 177
         INIBAR=NOWBAR
          GO TO 170
     177 IF(KDFRFG.EQ.0)GO TO 178
         LINFIG=KDFRFG
          KDFRFG=0
          GO TO 175
     178 IF(JDFRFG.LE.0)GO TO 179
         IF(NXTFIG.GT.0)NXTFIG=NXTFIG+ISPACE
        NXTFIG=NXTFIG+JDFRFG
        JDFRFG=0
      179 IDFRPG=IDFRPG+JDFRPG
        JDFRPG=0
          IF(IFNRDY.LE.0)GO TO 180
         IF(IDEFER.LT.0)GO TO 28
          IF(MASTER.EQ.2)GO TO 7
      IF(MASTER.EQ.3)GO TO 7
      IF(MASTER.EQ.4)GO TO 7
      GO TO 182
     180 IF(MASTER.EQ.3)GO TO 181
         IF(MASTER.EQ.4)GO TO 181
         GO TO 182
     181 CALL RNOBOT
   182 RETURN
       END
          SUBROUTINE RNOTOP
C     RENBR(/CONSTRUCT TOP OF PAGE)
   C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     MARK THAT THIS ROUTINE HAS BEEN CALLED
          KNTTOP=1
    C
  C     DECIDE WHETHER CURRENT PAGE IS VISIBLE OR INVISIBLE
       KNTPAG=KNTPAG+1
        I=1
          IF(KNTPAG.LT.IRANGE)I=0
          IF(KNTPAG.GT.JRANGE)I=-1
         IF(KRANGE.EQ.I)GO TO 1
      KNDOUT=6
          CALL RNOLIN
       KRANGE=1
          IF(KNTPAG.LT.IRANGE)KRANGE=0
          IF(KNTPAG.GT.JRANGE)KRANGE=-1
       1 IF(KRANGE.LE.0)GO TO 5
      KNTRST=KNTRST+1
        KNTSHO=KNTSHO+1
        INIPAG=-1
         IF(KNTRST.GT.1)INIPAG=1
          IF(INIFRM.NE.0)INIPAG=1
    C
  C     ALLOW USER TO INPUT SHEET OF PAPER IF TERMINAL OUTPUT
          IF(ITRMNL.LE.0)GO TO 5
      IF(KNTPAG.EQ.IRANGE)WRITE(ITTY,2)
        2 FORMAT(34H Insert paper, then hit RETURN key)
        INIPAG=-1
         WRITE(JDISK,3)
       3 FORMAT(1H1)
       READ(JTTY,4,END=5)I
       4 FORMAT(1A1)
     5 CONTINUE
    C
  C     ADVANCE CHAPTER, PAGE AND OR SUBPAGE NUMBERS
         IF(IFPAGE.GT.0)IFPAGE=-1
         IF(NEWCHA.EQ.0)GO TO 7
      JSECTN=ISECTN
          IF(JSECTN.EQ.2)GO TO 7
      IF(JSECTN.GT.0)GO TO 6
      NOWSEC=IAPNDX
          NOWSHW=KNDAPP
          IAPNDX=IAPNDX+1
        GO TO 7
    6 NOWSEC=ICHAPT
          NOWSHW=KNDCHA
          ICHAPT=ICHAPT+1
      7 IF(ISUBPG.EQ.0)GO TO 8
      NOWPAG=NXTPAG
          NOWPHW=KNDPAG
          NXTPAG=NXTPAG+1
        LRADJS=LRADJS+NOWSUB
        IF(ISUBPG.GT.0)GO TO 8
      NOWSUB=0
          ISUBPG=-1
         GO TO 9
    8 ISUBPG=0
          NOWSUB=NXTSUB
          NOWSPH=KNDSUB
          NXTSUB=NXTSUB+1
  C
  C     GENERATE TITLE LINE
       9 LOCPAG=0
          KNDLIN=0
          LFTRIT=NOWPAG+NOWSUB+LRADJS
      LFTRIT=LFTRIT-(2*(LFTRIT/2))
          IF(LRFORC.LT.0)GO TO 11
          IF(LFTRIT.EQ.LRFORC)GO TO 10
          LRADJS=LRADJS+1
        LFTRIT=LRFORC
       10 LRFORC=-1
      11 IOFFST=LFTOFF
          IF(LFTRIT.NE.0)IOFFST=IRTOFF
          IF(MRKBAR.GT.0)MRKBAR=IOFFST-2
        IF(LCLBAR.NE.0)NOWBAR=MRKBAR
          IF(MRKBAR.LE.0)GO TO 12
          IF(IFABAR.GT.0)IFABAR=MRKBAR
       12 MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         IF(NEWPAG.LT.0)GO TO 19
          IF(IFHEAD.EQ.0)GO TO 21
    C
  C     GENERATE BLANK LINES ABOVE TITLE LINE
      IF(ITTLHI.LT.0)GO TO 15
          IF(ITTLHI.EQ.0)GO TO 14
          DO 13 NEEDED=1,ITTLHI
       KNDOUT=3
          CALL RNOLIN
    13 CONTINUE
    C
  C     GENERATE TITLE
      14 CALL RNOTTL(1)
   C
  C     GENERATE BLANK LINES BETWEEN TITLE AND SUBTITLE
   15 IF(ISUBHI.LT.0)GO TO 18
          IF(ISUBHI.EQ.0)GO TO 17
          DO 16 NEEDED=1,ISUBHI
       KNDOUT=3
          CALL RNOLIN
    16 CONTINUE
    C
  C     GENERATE SUBTITLE
   17 CALL RNOTTL(2)
   C
  C     GENERATE BLANK LINE BELOW TITLE AND SUBTITLE
      18 IF(LOCPAG.GE.LNGTOP)GO TO 21
          KNDOUT=3
          CALL RNOLIN
       GO TO 18
    C
  C     GENERATE BLANK LINES ON FIRST PAGE
      19 IF(IFHEAD.EQ.0)GO TO 21
          IF(LNGTOP.LE.0)GO TO 21
          DO 20 NEEDED=1,LNGTOP
       KNDOUT=3
          CALL RNOLIN
    20 CONTINUE
    C
  C     REPLACE OLD TOP TITLES WITH NEW
    21 DO 23 I=9,12
      IF(KNDTTL(I).EQ.0)GO TO 23
       IF(I.EQ.9)KNDLFT=KNDTTL(9)-2
          IF(I.EQ.10)KNDRIT=KNDTTL(10)-2
        IF(I.EQ.11)IFLSUB=KNDTTL(11)-2
        IF(I.EQ.12)IFRSUB=KNDTTL(12)-2
        KNDTTL(I)=0
       J=(5*I)-4
         DO 22 K=1,5
       LSTTTL(J-40)=LSTTTL(J)
      J=J+1
     22 CONTINUE
          LSTTTL(J-5)=0
          LSTTTL(J-4)=0
          LSTTTL(J-3)=-1
         LSTTTL(J-2)=-1
         LSTTTL(J-1)=-1
      23 CONTINUE
    C
  C     CALCULATE SIZE OF TOP MARGIN
          CALL RNOHIH(LSTTTL,MRGTOP,KTRMNL,LNGTOP,ITTLHI,
     1ISUBHI,IGAPHI,MINTOP,IFLSUB,IFRSUB)
  C
  C     SAVE CONDITIONS NEEDED FOR GENERATING BOTTOM TITLES
       NUMTTL(1)=NOWSHW
       NUMTTL(2)=NOWSEC
       NUMTTL(3)=NOWPHW
       NUMTTL(4)=NOWPAG
       NUMTTL(5)=NOWSPH
       NUMTTL(6)=NOWSUB
       NUMTTL(7)=NDXMAK
       NUMTTL(8)=JSECTN
       NUMTTL(9)=IOFFST
       NUMTTL(10)=LFTRIT
      NUMTTL(11)=NEWPAG
      NEWPAG=0
          RETURN
       END
          SUBROUTINE RNOBOT
C     RENBR(/CONSTRUCT TOP OF PAGE)
   C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     RETURN TO CALLING PROGRAM IF NO LOWER TITLES
         IF(KNTTOP.LE.0)GO TO 17
          KNTTOP=-1
         IF(LNGBOT.LE.0)GO TO 13
          IF(NUMTTL(11).LT.0)GO TO 13
C
  C     REGAIN CONDITIONS USED FOR THE TOP TITLE
        I=NUMTTL(1)
       NUMTTL(1)=NOWSHW
       NOWSHW=I
          I=NUMTTL(2)
       NUMTTL(2)=NOWSEC
       NOWSEC=I
          I=NUMTTL(3)
       NUMTTL(3)=NOWPHW
       NOWPHW=I
          I=NUMTTL(4)
       NUMTTL(4)=NOWPAG
       NOWPAG=I
          I=NUMTTL(5)
       NUMTTL(5)=NOWSPH
       NOWSPH=I
          I=NUMTTL(6)
       NUMTTL(6)=NOWSUB
       NOWSUB=I
          I=NUMTTL(7)
       NUMTTL(7)=NDXMAK
       NDXMAK=I
          I=NUMTTL(8)
       NUMTTL(8)=JSECTN
       JSECTN=I
          I=NUMTTL(9)
       NUMTTL(9)=IOFFST
       IOFFST=I
          I=NUMTTL(10)
      NUMTTL(10)=LFTRIT
      LFTRIT=I
    C
  C     FORCE OUT FINAL BLANK LINE IF ALREADY REQUESTED
      IF(KTRMNL.NE.0)GO TO 1
      KNDOUT=6
          CALL RNOLIN
 C
  C     TEST IF EITHER TITLE OR SUBTITLE APPEARS ON PAGE
        1 IF(LFTRIT.GT.0)GO TO 2
      IF(LSTTTL(21).GT.0)GO TO 3
       IF(LSTTTL(31).GT.0)GO TO 3
       GO TO 12
        2 IF(LSTTTL(26).GT.0)GO TO 3
       IF(LSTTTL(36).GT.0)GO TO 3
       GO TO 12
    C
  C     GENERATE BLANK LINES BETWEEN TEXT AND BOTTOM MARGIN
     3 IF(LOCPAG.GE.LNGPAG)GO TO 4
      KNDOUT=3
          CALL RNOLIN
       GO TO 3
C
  C     GENERATE BLANK LINES IN MARGIN ABOVE TITLE
    4 IF(ITTLLO.LT.0)GO TO 7
      IF(ITTLLO.EQ.0)GO TO 6
      DO 5 NEEDED=1,ITTLLO
        KNDOUT=3
          CALL RNOLIN
     5 CONTINUE
    C
  C     GENERATE TITLE
       6 CALL RNOTTL(3)
   C
  C     GENERATE BLANK LINES BETWEEN TITLE AND SUBTITLE
    7 IF(ISUBLO.LT.0)GO TO 12
          IF(LFTRIT.GT.0)GO TO 8
      IF(LSTTTL(31).EQ.0)GO TO 12
      GO TO 9
    8 IF(LSTTTL(36).EQ.0)GO TO 12
    9 IF(ISUBLO.EQ.0)GO TO 11
          DO 10 NEEDED=1,ISUBLO
       KNDOUT=3
          CALL RNOLIN
    10 CONTINUE
    C
  C     GENERATE SUBTITLE
   11 CALL RNOTTL(4)
   C
  C     RESTORE ORIGINAL CONDITIONS
   12 NOWSHW=NUMTTL(1)
       NOWSEC=NUMTTL(2)
       NOWPHW=NUMTTL(3)
       NOWPAG=NUMTTL(4)
       NOWSPH=NUMTTL(5)
       NOWSUB=NUMTTL(6)
       NDXMAK=NUMTTL(7)
       JSECTN=NUMTTL(8)
       IOFFST=NUMTTL(9)
       LFTRIT=NUMTTL(10)
C
  C     REPLACE OLD BOTTOM TITLES WITH NEW
      13 DO 15 I=13,16
          IF(KNDTTL(I).EQ.0)GO TO 15
       KNDTTL(I)=0
       J=(5*I)-4
         DO 14 K=1,5
       LSTTTL(J-40)=LSTTTL(J)
      J=J+1
     14 CONTINUE
          LSTTTL(J-5)=0
          LSTTTL(J-4)=0
          LSTTTL(J-3)=-1
         LSTTTL(J-2)=-1
         LSTTTL(J-1)=-1
      15 CONTINUE
    C
  C     CALCULATE SIZE OF BOTTOM MARGIN
    16 CALL RNOLOW(LSTTTL,IGAPLO,KTRMNL,LNGBOT,ITTLLO,
     1ISUBLO)
      LNGPAG=MAXLIN-LNGBOT
        IF(LNGPAG.LE.0)LNGPAG=58
      17 RETURN
       END
          SUBROUTINE RNOTTL(LOCTTL)
  C     RENBR(/GENERATE TITLE OR SUBTITLE LINE)
   C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C     LOCTTL = 1, TOP TITLE
 C            = 2, TOP SUBTITLE
   C            = 3, BOTTOM TITLE
   C            = 4, BOTTOM SUBTITLE
C     LFTRIT = 0, LEFT PAGE
 C            = 1, RIGHT PAGE
      LOCLFT=(10*LOCTTL)+(5*LFTRIT)-8
       IFIRST=LSTTTL(LOCLFT)
       LNGWRK=0
    C
  C     CYCLE THROUGH THE 3 SECTIONS OF THE TITLE
       DO 18 NEWSEC=1,3
       LOCLFT=LOCLFT+1
        IFINAL=LSTTTL(LOCLFT)
       INIWRK=LNGWRK
    C
  C     LOCATE NEXT SECTION OF TITLE TO BE INSERTED
        1 IF(IFIRST.GT.IFINAL)GO TO 13
          JFINAL=IFIRST
        2 IF(JFINAL.GT.IFINAL)GO TO 3
      IF(MSKTTL(JFINAL).LT.0)GO TO 3
        JFINAL=JFINAL+1
        GO TO 2
    3 IF(JFINAL.LE.IFIRST)GO TO 6
      JFINAL=JFINAL-1
  C
  C     COPY ALPHABETIC SECTION OF TITLE
    4 IF(IFIRST.GT.JFINAL)GO TO 5
      IF(LNGWRK.GE.LMTWRK)GO TO 5
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRTTL(IFIRST)
         MSKWRK(LNGWRK)=MSKTTL(IFIRST)
         IFIRST=IFIRST+1
        GO TO 4
    5 IFIRST=JFINAL+1
      6 IF(IFIRST.GT.IFINAL)GO TO 13
          LOCWRK=LNGWRK
          IFIRST=IFIRST+1
        IF(MSKTTL(IFIRST-1).LT.-1)GO TO 8
          IF(IFNUMB.EQ.0)GO TO 12
          IF(IPGSHO.EQ.0)GO TO 8
      DO 7 I=1,5
        IF(LNGWRK.GE.LMTWRK)GO TO 12
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRPAG(I)
       7 CONTINUE
    C
  C     INSERT CURRENT PAGE NUMBER
     8 IF(NDXMAK.EQ.0)GO TO 10
          DO 9 I=1,5
        IF(LNGWRK.GE.LMTWRK)GO TO 12
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LWRIND(I)
       9 CONTINUE
          IF(LNGWRK.GE.LMTWRK)GO TO 12
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMNS
       GO TO 11
       10 IF(JSECTN.EQ.0)GO TO 11
          CALL RNONUM(NOWSHW,NOWSEC,LTRWRK,LNGWRK,LMTWRK)
      IF(LNGWRK.GE.LMTWRK)GO TO 12
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMNS
    11 CALL RNONUM(NOWPHW,NOWPAG,LTRWRK,LNGWRK,LMTWRK)
      IF(NOWSUB.LE.0)GO TO 12
          CALL RNONUM(NOWSPH,NOWSUB,LTRWRK,LNGWRK,LMTWRK)
   12 IF(LOCWRK.GE.LNGWRK)GO TO 1
      LOCWRK=LOCWRK+1
        MSKWRK(LOCWRK)=0
       GO TO 12
    C
  C     CALCULATE OFFSET FOR JUSTIFICATION OR CENTERING
   13 IF(INIWRK.GE.LNGWRK)GO TO 18
          IF(NEWSEC.EQ.1)GO TO 18
          IF(NEWSEC.EQ.3)GO TO 14
          NEEDED=((MRGFAR-LNGWRK+INIWRK)/2)
         1-INIWRK
      GO TO 15
       14 NEEDED=MRGFAR-LNGWRK
  C
  C     PERFORM JUSTIFICATION OR CENTERING
      15 IF(NEEDED.GT.(LMTWRK-LNGWRK))NEEDED=LMTWRK-LNGWRK
         IF(NEEDED.LE.0)GO TO 18
          I=LNGWRK
          LNGWRK=LNGWRK+NEEDED
        J=LNGWRK
       16 LTRWRK(J)=LTRWRK(I)
         MSKWRK(J)=MSKWRK(I)
         J=J-1
        I=I-1
        IF(I.GT.INIWRK)GO TO 16
       17 IF(J.LE.INIWRK)GO TO 18
          LTRWRK(J)=LTRSPA
       MSKWRK(J)=0
       J=J-1
        GO TO 17
       18 CONTINUE
    C
  C     OUTPUT THE TITLE
    19 KNDOUT=4
          CALL RNOLIN
       RETURN
       END
          SUBROUTINE RNOSET
C     RENBR(/APPLY ALL COMMANDS EXCEPT INDEX CONSTRUCTION)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
  C
        IF(KOMAND.GT.500)GO TO 466
       IF(KOMAND.GT.100)GO TO 1
         IF(KOMAND.GT.200)GO TO 2
         GO TO(543,  10,543,  14, 68, 125, 128, 129,405, 130,
     1      136,139,141,145,406,168,199,543,202,208,
      2      377,226,209,230,231,265,232,238,241,243,
      3      247,250,251,271,155,291,249,286,296,300,
      4      313,327,  13,387,146, 71,140, 132,151,242,
         5      234,248,  16,174,543,  3, 38, 56,260, 37,
     6      259,253,223, 105,329, 116,312,215,221, 103,
        7      264, 39,543, 32,543, 131,233,144,246,  4,
     8      229,167,322,170,222, 104,297,349,156,262,
     9      346, 54,324,543,257, 114,325, 33,384, 65),KOMAND
       1 I=KOMAND-100
      GO TO(  9, 67, 35,143,245, 119, 135,237,345, 122,
        1      299,209,  15,301,203, 127,348, 117,266,321,
        2      319, 126,543, 64,295,255,290,254,142,244,
     3      174,543, 53,323,543,311,279,138,240,210,
      4      306,388,391,394,395,396,397,398,399,400,
      5      401,402,403,326,320,66,36,543,376,353,
        6      316,318,317,543,543,261,252,169, 46, 57,
      7      201,171,280,154,198,404,465,267,269,385,
      8      156,386,256,172,204,204,115,211,543,543,
      9      543, 227,134,236,133,235,347,543,543,543),I
       2 I=KOMAND-200
      GO TO(307,543,543,543,543,543,543,543,543,543,
      1      543,543,5,281,543,543,338,137,239,289,
        2      118),I
      GO TO 543
   C
  C     .APPENDIX
       3 ISECTN=-1
         GO TO 17
    C
  C     .AUTO PARAGRAPH
      4 IF(IFAUTO.EQ.0)IFAUTO=1
          IF(IFNATO.EQ.0)IFNATO=1
          IF(IMINUS.NE.0)NOWIND=IVALUE
          IF(KNTARG.LE.1)GO TO 543
         IF(NMINUS(2).LE.0)NVALUE(2)=NVALUE(2)+NOWSKP
         IF(NVALUE(2).GE.0)NOWSKP=NVALUE(2)
         IF(KNTARG.LE.2)GO TO 543
         IF(NMINUS(3).LE.0)NVALUE(3)=NVALUE(3)+NOWTST
         IF(NVALUE(3).GE.0)NOWTST=NVALUE(3)
         GO TO 543
   C
  C     .BACKGROUND
     5 IF(IFNOTE.NE.0)GO TO 543
         KNDTRN=1
          LNGSHD=0
          LFTSHD=0
          LFTSGN=-1
         IRISHD=0
          IRISGN=-1
         IHISHD=1
          ILOSHD=1
          NGLSHD=1
          LNGTRN=2
          NETWID=LMTMID
          NETSEP=0
          NETOFF=0
          NETNGL=0
          INIOBJ=0
          IF(KNTARG.LE.0)GO TO 8
      IF(IMINUS.LE.0)GO TO 7
      IFIRST=IVALUE
          IFINAL=IFIRST+IMINUS-1
    6 IF(IFIRST.GT.IFINAL)GO TO 7
      IF(LNGSHD.GE.LMTSHD)GO TO 7
      LNGSHD=LNGSHD+1
        LTRSHD(LNGSHD)=LTRBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 6
C     LEFT MARGIN
     7 IF(KNTARG.LT.2)GO TO 8
      LFTSHD=NVALUE(2)
       LFTSGN=NMINUS(2)
 C     RIGHT MARGIN
      IF(KNTARG.LT.3)GO TO 8
      IRISHD=NVALUE(3)
       IRISGN=NMINUS(3)
 C     TOP MARGIN
        IF(KNTARG.LT.4)GO TO 8
      IF(NMINUS(4).NE.0)IHISHD=NVALUE(4)
         IF(IHISHD.LT.0)IHISHD=0
    C     BOTTOM MARGIN
          IF(KNTARG.LT.5)GO TO 8
      IF(NMINUS(5).NE.0)ILOSHD=NVALUE(5)
         IF(ILOSHD.LT.0)ILOSHD=0
    C     BACKGROUND WORD REPETITION SLANT
      IF(KNTARG.LT.6)GO TO 8
      IF(NMINUS(6).NE.0)NGLSHD=NVALUE(6)
         IF(NGLSHD.LE.(-LNGSHD))NGLSHD=0
       IF(NGLSHD.GE.LNGSHD)NGLSHD=0
    C     ORIENTATION OF SUPERIMPOSED PATTERN
        IF(KNTARG.LT.7)GO TO 8
      IF(NMINUS(7).NE.0)INIOBJ=NVALUE(7)
   C     BAR WIDTH
         IF(KNTARG.LT.8)GO TO 8
      IF(NMINUS(8).NE.0)NETWID=NVALUE(8)
         IF(NETWID.LT.0)NETWID=LMTMID
    C     BAR SEPARATION
         IF(KNTARG.LT.9)GO TO 8
      IF(NMINUS(9).NE.0)NETSEP=NVALUE(9)
         IF(NETSEP.LT.0)NETSEP=0
    C     OFFSET OF INITIAL BAR
       IF(KNTARG.LT.10)GO TO 8
          IF(NMINUS(10).NE.0)NETOFF=NVALUE(10)
       IF(NETOFF.LE.(-NETSEP-NETWID))NETOFF=0
          IF(NETOFF.GE.(NETSEP+NETWID))NETOFF=0
C     BAR SLANT
         IF(KNTARG.LT.11)GO TO 8
          IF(NMINUS(11).NE.0)NETNGL=NVALUE(11)
       IF(NETNGL.LE.(-NETSEP-NETWID))NETNGL=0
          IF(NETNGL.GT.(NETSEP+NETWID))NETNGL=0
    8 GO TO 543
   C
  C     .BEGIN BAR
      9 LCLBAR=1
          IF(MRKBAR.LE.0)GO TO 543
         NOWBAR=MRKBAR
          GO TO 543
   C
  C     .BLANK
    10 IF(ISKIP.LT.0)GO TO 543
          IF(IMINUS.EQ.0)GO TO 11
          IF(IVALUE.LE.0)GO TO 12
       11 IF(IVALUE.LE.0)IVALUE=1
          ISKIP=ISKIP+IVALUE
          GO TO 543
      12 IF(IFNOTE.NE.0)GO TO 543
         I=LNGPAG+IVALUE-LOCPAG-1
         IF(ISKIP.LT.I)ISKIP=I
       GO TO 543
   C
  C     .CARRIAGE
      13 LTR1ST=LTRSPA
          IF(IMINUS.GT.0)LTR1ST=LTRBGN(IVALUE)
       GO TO 543
   C
  C     .CENTER
   14 JFILL=1
      IF(IVALUE.EQ.0)IMINUS=-1
         GO TO 302
   C
  C     .CENTER NO FILL
     15 JFILL=4
      GO TO 304
   C
  C     .CHAPTER
       16 ISECTN=1
       17 IF(KNTARG.LE.0)GO TO 24
          IF(NMINUS(KNTARG).LE.0)GO TO 24
       IF(INITAL.LT.0)GO TO 24
          I=NVALUE(KNTARG)
       N=I+NMINUS(KNTARG)-1
        K=0
       18 MSKBIT=MSKBGN(I)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 19
          K=0
          GO TO 23
       19 IF(K.EQ.0)GO TO 20
          IF(KAPITL.LT.0)GO TO 23
       20 MSKBIT=MSKBGN(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 22
          LTRNOW=LTRBGN(I)
       DO 21 M=1,26
      IF(LTRNOW.NE.LWRABC(M))GO TO 21
       LTRBGN(I)=LTRABC(M)
         GO TO 22
       21 CONTINUE
       22 K=1
       23 I=I+1
        IF(I.LE.N)GO TO 18
       24 NEWCHA=1
          NEWPAG=NULTTL
          NXTPAG=1
          LRADJS=LFTRIT+NOWSUB
        IF(ISUBPG.LT.0)GO TO 25
          ISUBPG=ISUBPG-2
        NXTSUB=1
       25 CONTINUE
    C     NO ACTIVE HEADER LEVELS
          KSKIP=0
      KNTLVL=0
          NXTLVL=0
          DO 26 I=1,LMTLVL
       KNDLVL(I)=1
       NUMLVL(I)=0
    26 CONTINUE
          NUMLVL(1)=1
       LNGCHA=0
          IF(KNTARG.LE.0)GO TO 28
          IF(NMINUS(KNTARG).LE.0)GO TO 28
       IFIRST=NVALUE(KNTARG)
       IFINAL=IFIRST+NMINUS(KNTARG)-1
     27 IF(IFIRST.GT.IFINAL)GO TO 28
          IF(LNGCHA.GE.LMTCHA)GO TO 28
          LNGCHA=LNGCHA+1
        MSKCHA(LNGCHA)=MSKBGN(IFIRST)
         LTRCHA(LNGCHA)=LTRBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 27
    C     REMOVE SUBTITLES IF ESTABLISHED BY .SUBTITLE COMMAND
   28 IF(IFLSUB.LE.0)GO TO 29
          LSTTTL(11)=0
      LSTTTL(12)=0
      LSTTTL(13)=-1
          LSTTTL(14)=-1
          LSTTTL(15)=-1
       29 IF(IFRSUB.LE.0)GO TO 30
          LSTTTL(16)=0
      LSTTTL(17)=0
      LSTTTL(18)=-1
          LSTTTL(19)=-1
          LSTTTL(20)=-1
    C     ESTABLISH TITLE IF FORMERLY SET BY .TITLE COMMAND
      30 KOMAND=9
          IF(KNDLFT.NE.0)GO TO 31
          IF(KNDRIT.NE.0)GO TO 392
         GO TO 458
      31 IF(KNDRIT.EQ.0)GO TO 389
         GO TO 405
   C
  C     .COLLECT FOOT NOTES
      32 IF(IDEFER.EQ.0)IDEFER=1
          GO TO 543
   C
  C     .DEBUG
    33 IDEBUG=1
          IF(IMINUS.LE.0)GO TO 543
         J=IVALUE+IMINUS-1
      WRITE(JDISK,34)LTR1ST,(LTRBGN(I),I=IVALUE,J)
      34 FORMAT(1A1,6HDEBUG ,300A1)
       GO TO 543
   C
  C     .DISABLE BAR
   35 IF(MRKBAR.EQ.0)GO TO 543
         MRKBAR=0
          IF(IFNOTE.EQ.0)IFNMBR=0
          IVALUE=0
          IMINUS=-1
         GO TO 271
   C
  C     .DISABLE INDEX
      36 IFINDX=0
          GO TO 543
   C
  C     .DISPLAY APPENDIX
   37 IF(IVALUE.GT.0)KNDAPP=IVALUE
          GO TO 543
   C
  C     .DISPLAY CHAPTER
    38 IF(IVALUE.GT.0)KNDCHA=IVALUE
          GO TO 543
   C
  C     .DISPLAY ELEMENT
    39 IF(IFLIST.LE.0)GO TO 543
         IF(KNTARG.LE.0)GO TO 220
         IF(IMINUS.GT.0)GO TO 41
          IF(IMINUS.LT.0)GO TO 40
          IF(KNTARG.LT.3)GO TO 45
          IF(NMINUS(3).EQ.0)GO TO 45
       LTROPN(IFLIST)=LTRSPA
       GO TO 43
       40 LTROPN(IFLIST)=LTRSPA
       GO TO 42
       41 LTROPN(IFLIST)=LTRBGN(IVALUE)
      42 IF(KNTARG.LT.3)GO TO 44
       43 IF(NMINUS(3).LE.0)GO TO 44
       IVALUE=NVALUE(3)
       LTRCLS(IFLIST)=LTRBGN(IVALUE)
         GO TO 45
       44 LTRCLS(IFLIST)=LTRSPA
    45 IF(KNTARG.LE.1)GO TO 220
         IF(NMINUS(2).GT.0)LSTTYP(IFLIST)=NVALUE(2)
      GO TO 220
   C
  C     .DISPLAY FOOTNOTE
   46 IF(KNTARG.LE.0)GO TO 543
         IF(IMINUS.GT.0)GO TO 48
          IF(IMINUS.LT.0)GO TO 47
          IF(KNTARG.LT.3)GO TO 52
          IF(NMINUS(3).EQ.0)GO TO 52
       LTRREF(3)=LTRSPA
       GO TO 50
       47 LTRREF(3)=LTRSPA
       GO TO 49
       48 LTRREF(3)=LTRBGN(IVALUE)
      49 IF(KNTARG.LT.3)GO TO 51
       50 IF(NMINUS(3).LE.0)GO TO 51
       IVALUE=NVALUE(3)
       LTRREF(4)=LTRBGN(IVALUE)
         GO TO 52
       51 LTRREF(4)=LTRSPA
    52 IF(KNTARG.LE.1)GO TO 543
         IF(NMINUS(2).GT.0)MRKFTN=NVALUE(2)
         IF(KNTARG.LE.3)GO TO 543
         IF(NMINUS(4).NE.0)IFNNUM=NVALUE(4)
         GO TO 543
   C
  C     .DISPLAY INDEX
      53 IF(IVALUE.GT.0)NDXHOW=IVALUE
          GO TO 543
   C
  C     .DISPLAY LEVELS
     54 IF(KNTARG.LE.0)GO TO 543
         DO 55 I=1,KNTARG
       IF(NMINUS(I).GT.0)KNDLVL(I)=NVALUE(I)
   55 CONTINUE
          GO TO 543
   C
  C     .DISPLAY NUMBER
     56 IF(IVALUE.GT.0)KNDPAG=IVALUE
          GO TO 543
   C
  C     .DISPLAY REFERENCE
       57 IF(KNTARG.LE.0)GO TO 543
         IF(IMINUS.GT.0)GO TO 59
          IF(IMINUS.LT.0)GO TO 58
          IF(KNTARG.LT.3)GO TO 63
          IF(NMINUS(3).EQ.0)GO TO 63
       LTRREF(1)=LTRSPA
       GO TO 61
       58 LTRREF(1)=LTRSPA
       GO TO 60
       59 LTRREF(1)=LTRBGN(IVALUE)
      60 IF(KNTARG.LT.3)GO TO 62
       61 IF(NMINUS(3).LE.0)GO TO 62
       IVALUE=NVALUE(3)
       LTRREF(2)=LTRBGN(IVALUE)
         GO TO 63
       62 LTRREF(2)=LTRSPA
    63 IF(KNTARG.LE.1)GO TO 543
         IF(NMINUS(2).GT.0)MRKREF=NVALUE(2)
         IF(KNTARG.LE.3)GO TO 543
         IF(NMINUS(4).NE.0)IFNREF=NVALUE(4)
         GO TO 543
   C
  C     .DISPLAY SUBPAGE
    64 IF(IVALUE.GT.0)KNDSUB=IVALUE
          GO TO 543
   C
  C     .ENABLE BAR
    65 IF(MRKBAR.NE.0)GO TO 543
         MRKBAR=1
          IF(IFNOTE.EQ.0)IFNMBR=1
          IVALUE=0
          IMINUS=-1
         GO TO 271
   C
  C     .ENABLE INDEX
       66 IFINDX=1
          GO TO 543
   C
  C     .END BAR
       67 LCLBAR=0
          NOWBAR=0
          GO TO 543
   C
  C     .END FILE (OR PHYSICAL EOF) IF IN SPLICE FILE
     68 IF(KNDFIL.LE.0)GO TO 70
          KOMAND=0
       69 IFSPLC=0
          IF(IWIZRD.EQ.0)CALL RNOFIL(4,5,NDISK,NXTUNT,LMTUNT,
      1ITTY,JTTY,IDFILE)
      GO TO 111
   C     MAKE SURE HAVE CLOSED SPLICE FILE IF ENCOUNTER EOF
  C     IN THE MAIN FILE.  OTHERWISE, USE OF SCRATCH UNITS
  C     ACCUMULATES WITH EACH SET OF INPUT FILES PROCESSED.
    70 IF(IFSPLC.EQ.0)GO TO 297
         IFSPLC=0
          IF(IWIZRD.EQ.0)CALL RNOFIL(4,5,NDISK,NXTUNT,LMTUNT,
      1ITTY,JTTY,IDFILE)
      GO TO 297
   C
  C     .END FOOT NOTE
      71 IF(IFNOTE.EQ.0)GO TO 543
         INNOTE=IFNNOT
          IF(INNOTE.EQ.0)GO TO 72
          NOTLFT=IFNNTL
          NOTRIT=IFNNTR
          NOTSPC=IFNNTS
          NOTFIL=IFNNTF
       72 KNTSPC=IFNKSP
          LNGMID=LNGFTN
          IF(LNGMID.LE.0)GO TO 74
          DO 73 I=1,LNGMID
       LTRMID(I)=LTRFTN(I)
      73 MSKMID(I)=MSKFTN(I)
      74 IREVRS=IFNREV
          ITLALL=IFNALL
          ITLNXT=IFNNXT
          ITLSPA=IFNSPA
          IFNOTE=0
          INDENT=IFNIND
    C
  C     GET INITIAL VALUE FROM FILE IF NONE OPEN FOR READING
      IF(IFNOPN.LT.0)GO TO 150
         IF(JFNOPN.LT.0)GO TO 150
         IF(JFNOPN.GT.0)GO TO 89
          IF(IFNOPN.EQ.0)GO TO 150
         CALL RNOFIL(1,2,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(1,4,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          IFNOPN=-1
         IFNRED=0
       75 READ(KDISK,76)IRECRD,NXTFTN,ILFFTN,IRTFTN,IBRFTN,
        1MXTRSS,NXTRSS
       76 FORMAT(7I3)
       GO TO(77,87,88),IRECRD
   77 IFNRED=IFNRED+1
        IF(NDXKNT.NE.0)GO TO 78
          CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      78 NDXKNT=NDXKNT+1
        READ(KDISK,194)KNTNDX,NDXMID,NDXSKP
        IF(NEWCHA.NE.0)GO TO 79
          IF(NEWPAG.NE.0)GO TO 79
          IF(KNTTOP.LT.0)GO TO 79
          IF(IFPAGE.LE.0)GO TO 84
          I=KNDLIN
          IF(LNGMID.GT.0)I=1+KFNGAP+IFNISP
      IF((LOCPAG+IFNGAP+I).GE.LNGPAG)GO TO 79
         GO TO 84
       79 NDXLOC=KNTPAG+IDFRPG+1
      IF(NEWCHA.EQ.0)GO TO 81
          IF(ISECTN.GT.0)GO TO 80
          NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 81
       80 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
       81 IF(ISUBPG.EQ.0)GO TO 82
          NDXPAG=NXTPAG+IDFRPG
        NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 82
          NDXSUB=0
          GO TO 83
       82 NDXSUB=NXTSUB
       83 NDXSPH=KNDSUB
          GO TO 85
       84 NDXLOC=KNTPAG
          IF(NDXLOC.LE.0)NDXLOC=1
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
       85 WRITE(NDXDSK,189)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
     1NDXSUB,NDXSPH,KNTNDX
        READ(KDISK,190)(NUMNDX(I),I=1,KNTNDX)
      WRITE(NDXDSK,190)(NUMNDX(I),I=1,KNTNDX)
      86 CONTINUE
          IF(IFNRED.LT.IFNBGN)GO TO 75
          IFNHAV=0
          GO TO 150
      87 IFNHAV=1
          GO TO 150
      88 IFNRED=IFNRED+1
        IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
        IFNHAV=0
          GO TO 150
      89 CALL RNOFIL(2,2,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          CALL RNOFIL(2,4,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          JFNOPN=-1
         JFNRED=0
       90 READ(LDISK,76)IRECRD,NXTFTN,ILFFTN,IRTFTN,IBRFTN,
        1MXTRSS,NXTRSS
          GO TO(91,101,102),IRECRD
      91 JFNRED=JFNRED+1
        IF(NDXKNT.NE.0)GO TO 92
          CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      92 NDXKNT=NDXKNT+1
        READ(LDISK,194)KNTNDX,NDXMID,NDXSKP
        IF(NEWCHA.NE.0)GO TO 93
          IF(NEWPAG.NE.0)GO TO 93
          IF(KNTTOP.LT.0)GO TO 93
          IF(IFPAGE.LE.0)GO TO 93
          IF(IFPAGE.LE.0)GO TO 98
          I=KNDLIN
          IF(LNGMID.GT.0)I=1+KFNGAP+IFNISP
      IF((LOCPAG+IFNGAP+KNDLIN+I).GE.LNGPAG)GO TO 93
       GO TO 98
       93 NDXLOC=KNTPAG+IDFRPG+1
      IF(NEWCHA.EQ.0)GO TO 95
          IF(ISECTN.GT.0)GO TO 94
          NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 95
       94 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
       95 IF(ISUBPG.EQ.0)GO TO 96
          NDXPAG=NXTPAG+IDFRPG
        NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 96
          NDXSUB=0
          GO TO 97
       96 NDXSUB=NXTSUB
       97 NDXSPH=KNDSUB
          GO TO 99
       98 NDXLOC=KNTPAG
          IF(NDXLOC.LE.0)NDXLOC=1
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
       99 WRITE(NDXDSK,189)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
     1NDXSUB,NDXSPH,KNTNDX
        READ(LDISK,190)(NUMNDX(I),I=1,KNTNDX)
      WRITE(NDXDSK,190)(NUMNDX(I),I=1,KNTNDX)
     100 CONTINUE
          IF(JFNRED.LT.JFNBGN)GO TO 90
          IFNHAV=0
          GO TO 150
     101 IFNHAV=1
          GO TO 150
     102 JFNRED=JFNRED+1
        IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
        IFNHAV=0
          GO TO 150
   C
  C     .END LIST
     103 IF(IFLIST.LE.0)GO TO 543
         NOWLFT=LSTMRG(IFLIST)
       MRGLFT=0
          IF(NOWLFT.GT.0)MRGLFT=NOWLFT
          NOWRIT=LSTRIT(IFLIST)
       IF(MRGFAR.LT.NOWRIT)MRGFAR=NOWRIT
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         ISPACE=LSTSPC(IFLIST)
       IFLIST=IFLIST-1
        GO TO 543
   C
  C     .END LITERAL
  104 IF(JFILL.NE.6)GO TO 543
          JFILL=IFFILL
      ICENTR=KLMFIL
          KCENTR=KLMMNS
          GO TO 543
   C
  C     .END LOOP
     105 IF(KNDFIL.GT.0)GO TO 111
         IF(IFLOOP.EQ.0)GO TO 543
         KNTLOP=KNTLOP-1
        IF(IFLOOP.GT.0)GO TO 107
         IF(IFLOOP.EQ.-1)GO TO 110
        IF(KNTLOP.EQ.0)GO TO 106
         IF(KNTLOP.EQ.-1)GO TO 106
  C     CLOSE AND RETAIN SCRATCH FILE JUST READ
         CALL RNOFIL(3,5,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          GO TO 108
   C     CLOSE AND DELETE SCRATCH FILE READ FINAL TIME
    106 CALL RNOFIL(3,6,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          GO TO 110
     107 IF(IFLOOP.EQ.1)GO TO 110
         IF(KNTLOP.EQ.0)GO TO 109
         IF(KNTLOP.EQ.-1)GO TO 109
  C     CLOSE AND RETAIN SCRATCH FILE JUST WRITTEN
      CALL RNOFIL(3,2,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      108 LMTKAS=MAXBGN
          IFLOOP=-1
         GO TO 543
   C     CLOSE AND DELETE SCRATCH FILE JUST WRITTEN
  109 CALL RNOFIL(3,3,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      110 IFLOOP=0
          GO TO 543
     111 IF(IFLOOP.EQ.0)GO TO 113
         KNDSPL=0
          IF(IFLOOP.GT.0)GO TO 112
         IF(IFLOOP.EQ.-1)GO TO 113
        CALL RNOFIL(3,6,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          GO TO 113
     112 IF(IFLOOP.EQ.1)GO TO 113
         CALL RNOFIL(3,3,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      113 IFLOOP=0
          IF(KOMAND.EQ.173)GO TO 328
       GO TO 543
   C
  C     .END NOTE
     114 IF(INNOTE.EQ.0)GO TO 543
         INNOTE=0
          NOWLFT=NOTLFT
          MRGLFT=0
          IF(NOWLFT.GT.0)MRGLFT=NOWLFT
          NOWRIT=NOTRIT
          IF(MRGFAR.LT.NOWRIT)MRGFAR=NOWRIT
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         JFILL=NOTFIL
      IFFILL=NOTFIL
          ICENTR=NOTKLM
          KCENTR=NOTMNS
          ISPACE=NOTSPC
          IF(ISKIP.GE.0)ISKIP=ISKIP+ISPACE+NOTTHR
         INDENT=0
          I=NOTIND
          NOTIND=NOWIND
          NOWIND=I
          I=NOTTST
          NOTTST=NOWTST
          NOWTST=I
          I=NOTSKP
          NOTSKP=NOWSKP
          NOWSKP=I
          GO TO 543
   C
  C     .END OBJECT
   115 KNDTRN=0
          GO TO 543
   C
  C     .END SPLICE
   116 IF(KNDFIL.LE.0)GO TO 543
         IFSPLC=-1
         MAXSPL=0
          GO TO 543
   C
  C     .END SUBPAGE
  117 IF(ISUBPG.LT.0)GO TO 543
         ISUBPG=ISUBPG-2
        NXTSUB=1
          GO TO 543
   C
  C     .FACING PAGE
  118 LRFORC=1-LFTRIT
        GO TO 543
   C
  C     .FIGURE
  119 IF(IMINUS.EQ.0)IVALUE=1
          IF(IVALUE.LE.0)GO TO 543
         NVALUE(1)=IVALUE
       IF(IFNOTE.EQ.0)GO TO 377
     120 IF(LINFIG.GT.0)LINFIG=LINFIG+ISPACE
        LINFIG=LINFIG+NVALUE(1)
          GO TO 543
     121 IF(LFTOVR.LE.0)GO TO 120
         IF(LINFIG.GT.0)LINFIG=LINFIG+ISPACE
        LINFIG=LINFIG+NVALUE(1)
          GO TO 285
   C
  C     .FIGURE DEFERRED
   122 IF(IMINUS.EQ.0)IVALUE=1
          IF(IVALUE.LE.0)GO TO 543
         NVALUE(1)=IVALUE
       IF(IFNOTE.NE.0)GO TO 120
         IF(NXTFIG.EQ.0)GO TO 377
         NXTFIG=NXTFIG+ISPACE
        GO TO 124
     123 IF(LFTOVR.LE.0)GO TO 120
     124 NXTFIG=NXTFIG+NVALUE(1)
          GO TO 543
   C
  C     .FILL
    125 JFILL=0
      IFFILL=0
          GO TO 543
   C
  C     .FIRST FORM
   126 INIFRM=1
          GO TO 543
   C
  C     .FIRST TITLE
  127 NULTTL=1
          IF(NEWPAG.NE.0)NEWPAG=1
          NUMTTL(11)=NEWPAG
      GO TO 543
   C
  C     .FLAGS ALL
    128 IFFLAG=1
          IF(MRKLES.EQ.-1)MRKLES=1
         IF(MRKDOL.EQ.-1)MRKDOL=1
         IF(MRKBAC.EQ.-1)MRKBAC=1
         IF(MRKUND.EQ.-1)MRKUND=1
         IF(MRKNUM.EQ.-1)MRKNUM=1
         IF(MRKCAR.EQ.-1)MRKCAR=1
         IF(MRKAMP.EQ.-1)MRKAMP=1
         IF(MRKEFN.EQ.-1)MRKEFN=1
         IF(MRKNDX.EQ.-1)MRKNDX=1
         IF(MRKSBX.EQ.-1)MRKSBX=1
         IF(MRKMAG.EQ.-1)MRKMAG=1
         IF(MRKTTL.EQ.-1)MRKTTL=1
         IF(MRKSUP.EQ.-1)MRKSUP=1
         IF(MRKSUB.EQ.-1)MRKSUB=1
         GO TO 543
   C
  C     .FLAGS CAPITALIZE
  129 IF(IMINUS.GT.0)LTRLES=LTRBGN(IVALUE)
       MRKLES=IFFLAG
          GO TO 543
   C
  C     .FLAGS CONTROL
     130 IF(IMINUS.GT.0)LTRDOT=LTRBGN(IVALUE)
       MRKDOT=1
          GO TO 543
   C
  C     .FLAGS END FOOT NOTES
   131 IF(IMINUS.GT.0)LTREFN=LTRBGN(IVALUE)
       MRKEFN=IFFLAG
          GO TO 543
   C
  C     .FLAGS FENCE
  132 IF(IMINUS.GT.0)LTRSEM=LTRBGN(IVALUE)
       MRKSEM=1
          GO TO 543
   C
  C     .FLAGS HALFDOWN
    133 IF(IMINUS.GT.0)LTRSUB=LTRBGN(IVALUE)
       MRKSUB=IFFLAG
          GO TO 543
   C
  C     .FLAGS HALFUP
      134 IF(IMINUS.GT.0)LTRSUP=LTRBGN(IVALUE)
       MRKSUP=IFFLAG
          GO TO 543
   C
  C     .FLAGS INDEX
  135 IF(IMINUS.GT.0)LTRNDX=LTRBGN(IVALUE)
       MRKNDX=IFFLAG
          GO TO 543
   C
  C     .FLAGS LOWER CASE
  136 IF(IMINUS.GT.0)LTRBAC=LTRBGN(IVALUE)
       MRKBAC=IFFLAG
          GO TO 543
   C
  C     .FLAGS MAGNIFY
     137 IF(IMINUS.GT.0)LTRMAG=LTRBGN(IVALUE)
       MRKMAG=IFFLAG
          GO TO 543
   C
  C     .FLAGS PAGE
   138 IF(IMINUS.GT.0)LTRPUT=LTRBGN(IVALUE)
       MRKTTL=IFFLAG
          GO TO 543
   C
  C     .FLAGS QUOTE
  139 IF(IMINUS.GT.0)LTRUND=LTRBGN(IVALUE)
       MRKUND=IFFLAG
          GO TO 543
   C
  C     .FLAGS REMARK
      140 IF(IMINUS.GT.0)LTREXC=LTRBGN(IVALUE)
       MRKEXC=1
          GO TO 543
   C
  C     .FLAGS SPACE
  141 IF(IMINUS.GT.0)LTRNUM=LTRBGN(IVALUE)
       MRKNUM=IFFLAG
          GO TO 543
   C
  C     .FLAGS SUBINDEX
    142 IF(IMINUS.GT.0)LTRSBX=LTRBGN(IVALUE)
       MRKSBX=IFFLAG
          GO TO 543
   C
  C     .FLAGS TEXT
   143 IF(IMINUS.GT.0)LTRTXT=LTRBGN(IVALUE)
       MRKTXT=1
          GO TO 543
   C
  C     .FLAGS UNDER LINE
  144 IF(IMINUS.GT.0)LTRAMP=LTRBGN(IVALUE)
       MRKAMP=IFFLAG
          GO TO 543
   C
  C     .FLAGS UPPER CASE
  145 IF(IMINUS.GT.0)LTRCAR=LTRBGN(IVALUE)
       MRKCAR=IFFLAG
          GO TO 543
   C
  C     .FOOT NOTE
    146 IF(IFNOTE.NE.0)GO TO 543
         KNDTRN=0
          LSTTRN=0
          NOWFTN=KNTFTN
          KNTFTN=KNTFTN+1
        IFNNOT=INNOTE
          IF(INNOTE.EQ.0)GO TO 147
         INNOTE=0
          IFNNTL=NOTLFT
          IFNNTR=NOTRIT
          IFNNTS=NOTSPC
          IFNNTF=NOTFIL
      147 ISKFTN=ISKFTN+LFNGAP
        IFNKSP=KNTSPC
          KNTSPC=0
          LNGFTN=LNGMID
          LNGMID=0
          IF(LNGFTN.LE.0)GO TO 149
         DO 148 I=1,LNGFTN
      LTRFTN(I)=LTRMID(I)
     148 MSKFTN(I)=MSKMID(I)
     149 IFNREV=IREVRS
          IREVRS=1
          IFNALL=ITLALL
          IFNNXT=ITLNXT
          IFNSPA=ITLSPA
          IFNLSP=LCLSUP
          IFNGSP=LOKSUP
          ITLALL=0
          ITLNXT=0
          ITLSPA=0
          LCLSUP=0
          LOKSUP=0
          IFNOTE=1
          IF(NUMFTN.NE.0)IFNOTE=-1
         IFNBGN=IFNRIT
          JFNBGN=JFNRIT
          IFNIND=INDENT
          INDENT=INDFTN
    C
  C     INTERCHANGE TEXT AND FOOTNOTE CONDITIONS
    150 I=IFNNLF
          IFNNLF=NOWLFT
          NOWLFT=I
          I=IFNMLF
          IFNMLF=MRGLFT
          MRGLFT=I
          I=IFNOFF
          IFNOFF=IOFFST
          IOFFST=I
          I=IFNNOF
          IFNNOF=NOWOFF
          NOWOFF=I
          I=IFNNRT
          IFNNRT=NOWRIT
          NOWRIT=I
          I=IFNMFR
          IFNMFR=MRGFAR
          MRGFAR=I
          I=IFNMRT
          IFNMRT=MRGRIT
          MRGRIT=I
          I=IFNFIL
          IFNFIL=IFFILL
          IFFILL=I
          I=IFNJST
          IFNJST=JSTIFY
          JSTIFY=I
          I=ISKFTN
          ISKFTN=ISKIP
      ISKIP=I
      I=IFNISP
          IFNISP=ISPACE
          ISPACE=I
          I=IFNNT1
          IFNNT1=NOTONE
          NOTONE=I
          I=IFNNT2
          IFNNT2=NOTTWO
          NOTTWO=I
          I=IFNNT3
          IFNNT3=NOTTHR
          NOTTHR=I
          I=IFNIBR
          IFNIBR=INIBAR
          INIBAR=I
          I=IFNMBR
          IFNMBR=MRKBAR
          MRKBAR=I
          I=IFNNBR
          IFNNBR=NOWBAR
          NOWBAR=I
          I=IFNICN
          IFNICN=ICENTR
          ICENTR=I
          I=IFNJFL
          IFNJFL=JFILL
      JFILL=I
      I=IFNJCN
          IFNJCN=JCENTR
          JCENTR=I
          I=IFNKCN
          IFNKCN=KCENTR
          KCENTR=I
          I=IFNLBR
          IFNLBR=LCLBAR
          LCLBAR=I
          I=IFNPRD
          IFNPRD=IPEROD
          IPEROD=I
          I=IFNATO
          IFNATO=IFAUTO
          IFAUTO=I
          I=IFNKLM
          IFNKLM=KLMFIL
          KLMFIL=I
          I=IFNMNS
          IFNMNS=KLMMNS
          KLMMNS=I
          I=IFNPIN
          IFNPIN=NOWIND
          NOWIND=I
          I=IFNPSK
          IFNPSK=NOWSKP
          NOWSKP=I
          I=IFNPTS
          IFNPTS=NOWTST
          NOWTST=I
          I=IFNIIN
          IFNIIN=INTIND
          INTIND=I
          I=IFNILF
          IFNILF=INTLFT
          INTLFT=I
          I=IFNIRT
          IFNIRT=INTRIT
          INTRIT=I
          I=IFNNIN
          IFNNIN=NOTIND
          NOTIND=I
          I=IFNNTT
          IFNNTT=NOTTST
          NOTTST=I
          I=IFNNSK
          IFNNSK=NOTSKP
          NOTSKP=I
          I=IFNULS
          IFNULS=IULSPC
          IULSPC=I
          I=IFNLOF
          IFNLOF=LFTOFF
          LFTOFF=I
          I=IFNROF
          IFNROF=IRTOFF
          IRTOFF=I
          I=IFNLBS
          IFNLBS=LFTBAS
          LFTBAS=I
          I=IFNRBS
          IFNRBS=IRTBAS
          IRTBAS=I
          I=IFNIFA
          IFNIFA=IFABAR
          IFABAR=I
          I=IFNIDF
          IFNIDF=NXTFIG
          NXTFIG=I
          I=IFNJDF
          IFNJDF=JDFRFG
          JDFRFG=I
          I=IFNKDF
          IFNKDF=KDFRFG
          KDFRFG=I
          GO TO 543
   C
  C     .FOOT NOTE HEADER
  151 LNGFNR=0
          IF(KNTARG.LE.0)GO TO 153
         IF(NMINUS(KNTARG).LE.0)GO TO 153
      IFIRST=NVALUE(KNTARG)
       IFINAL=IFIRST+NMINUS(KNTARG)-1
    152 IF(IFIRST.GT.IFINAL)GO TO 153
         IF(LNGFNR.GE.LMTFNR)GO TO 153
         LNGFNR=LNGFNR+1
        LTRFNR(LNGFNR)=LTRBGN(IFIRST)
         MSKFNR(LNGFNR)=MSKBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 152
     153 GO TO 459
   C
  C     .FOOT NOTE RULE
    154 LNGFNR=0
          IF(IMINUS.LE.0)GO TO 459
         LTRFNR(1)=LTRBGN(IVALUE)
         MSKFNR(1)=MSKBGN(IVALUE)
         LNGFNR=-1
         GO TO 459
   C
  C     .HEADER
  155 IFHEAD=1
          GO TO 543
   C
  C     .HEADER LEVEL
      156 IF(IMINUS.LE.0)IVALUE=KNTLVL+IVALUE
        IF(IVALUE.LE.0)IVALUE=1
          IF(IVALUE.GT.LMTLVL)IVALUE=LMTLVL
          IF(KNTARG.LT.2)GO TO 164
         IF(NMINUS(2).LE.0)GO TO 165
      IF(IVALUE.GT.INITAL)GO TO 165
         I=NVALUE(2)
       J=NMINUS(2)
       K=0
      157 MSKBIT=MSKBGN(I)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 158
         K=0
          GO TO 163
     158 IF(K.EQ.0)GO TO 159
         IF(IVALUE.GT.KAPITL)GO TO 163
     159 MSKBIT=MSKBGN(I)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 162
         LTRNOW=LTRBGN(I)
       IF(MRKNDX.LE.0)GO TO 160
         IF(LTRNOW.EQ.LTRNDX)GO TO 163
     160 DO 161 M=1,26
          IF(LTRNOW.NE.LWRABC(M))GO TO 161
      LTRBGN(I)=LTRABC(M)
         GO TO 162
     161 CONTINUE
      162 K=1
      163 I=I+1
        J=J-1
        IF(J.GT.0)GO TO 157
         GO TO 165
     164 IF(KOMAND.NE.181)GO TO 165
       JSKIP=0
      NXTHDR=IVALUE
          GO TO 166
     165 JSKIP=2
      NXTHDR=0
      166 I=0
          IF(KSKIP.NE.0)I=LEVEL1
      IF(ISKIP.GE.0)ISKIP=ISKIP+I
      IF(IVALUE.GE.IRUNIN)GO TO 294
         IVALUE=LEVEL3+(NOWTST+1)+(NOWTST*ISPACE)
        IMINUS=1
          GO TO 377
   C
  C     .IMMEDIATE FOOT NOTES
   167 IDEFER=0
          GO TO 543
   C
  C     .INDENT
  168 INDENT=5
          IF(IMINUS.NE.0)INDENT=IVALUE
          GO TO 543
   C
  C     .INDENT FOOTNOTES
  169 IF(IMINUS.NE.0)INDFTN=IVALUE
          GO TO 543
   C
  C     .INDENT LEVELS
     170 IF(IMINUS.NE.0)LEVEL4=IVALUE
          GO TO 543
   C
  C     .INDENT LIST
  171 IF(IFLIST.LE.0)GO TO 543
         IF(IMINUS.NE.0)INDLST(IFLIST)=IVALUE
       GO TO 220
   C
  C     .INDENT NOTE
  172 IF(KNTARG.LE.0)GO TO 543
         IF(IMINUS.EQ.0)GO TO 173
         INTIND=IVALUE
          IF(INNOTE.EQ.0)NOTIND=INTIND
          IF(INNOTE.NE.0)NOWIND=INTIND
      173 IF(KNTARG.LE.1)GO TO 543
         IF(NMINUS(2).NE.0)INTLFT=NVALUE(2)
         IF(KNTARG.LE.2)GO TO 543
         IF(NMINUS(3).NE.0)INTRIT=NVALUE(3)
         GO TO 543
   C
  C     .INDEX
   174 IF(IMINUS.LE.0)GO TO 543
         IF(IFINDX.EQ.0)GO TO 543
         IVALUE=NVALUE(1)
       IMINUS=IVALUE+NMINUS(1)-1
    175 IF(IVALUE.GT.IMINUS)GO TO 543
         IF(LTRBGN(IVALUE).NE.LTRSPA)GO TO 176
      IVALUE=IVALUE+1
        GO TO 175
     176 KNTNDX=0
          CALL RNOCOD
       IF(KNTNDX.LE.0)GO TO 543
         IF(KOMAND.EQ.131)GO TO 179
   177 IF(IFNOTE.NE.0)GO TO 191
         IVALUE=1
          IF(NEWCHA.NE.0)GO TO 180
         IF(NEWPAG.NE.0)GO TO 180
         IF(KNTTOP.LT.0)GO TO 180
         IF(LNGMID.GT.0)GO TO 377
   C     LINE FITS ON CURRENT PAGE
    178 NDXLOC=KNTPAG
          IF(NDXLOC.EQ.0)NDXLOC=1
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
          GO TO 187
   C     ENTRY COMMAND, NO PAGE NUMBER
     179 NDXLOC=0
          NDXSEC=0
          NDXSHW=0
          NDXPAG=0
          NDXPHW=0
          NDXSUB=0
          NDXSPH=0
          GO TO 187
   C     LINE GOES ON NEXT PAGE
  180 NDXLOC=KNTPAG+IDFRPG+1
      IF(NEWCHA.EQ.0)GO TO 182
         IF(ISECTN.GT.0)GO TO 181
         NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 183
     181 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
          GO TO 183
     182 NDXSEC=NOWSEC
          NDXSHW=NOWSHW
      183 IF(ISUBPG.EQ.0)GO TO 184
         NDXPAG=NXTPAG+IDFRPG
        NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 185
         NDXSUB=0
          GO TO 186
     184 NDXPAG=NOWPAG+IDFRPG
        NDXPHW=NOWPHW
      185 NDXSUB=NXTSUB
      186 NDXSPH=KNDSUB
      187 IVALUE=NVALUE(1)
       IMINUS=NMINUS(1)
       IF(NDXKNT.NE.0)GO TO 188
         CALL RNOFIL(5,1,NDXDSK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
     188 NDXKNT=NDXKNT+1
        WRITE(NDXDSK,189)NDXLOC,NDXSEC,NDXSHW,NDXPAG,NDXPHW,
     1NDXSUB,NDXSPH,KNTNDX
    189 FORMAT(10I5)
      WRITE(NDXDSK,190)(NUMNDX(I),I=1,KNTNDX)
     190 FORMAT(24I3)
      GO TO 543
     191 CONTINUE
          IF(IFNOPN.GT.0)GO TO 192
         IF(JFNOPN.GT.0)GO TO 196
         IF(IFNOPN.LT.0)GO TO 195
         IFNOPN=1
          IFNRIT=0
          IFNRED=0
          IFNBGN=0
          CALL RNOFIL(1,1,KDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      192 IFNRIT=IFNRIT+1
        WRITE(KDISK,193)
   193 FORMAT(21H  1  0  0  0  0  0  0)
      WRITE(KDISK,194)KNTNDX,LNGMID,ISKIP
    194 FORMAT(10I5)
      WRITE(KDISK,190)(NUMNDX(I),I=1,KNTNDX)
          IF(LNGFTN.LE.0)IFNRDY=IFNTTL
          IF(LNGFTN.LE.0)IFNBGN=IFNRIT
          GO TO 197
     195 JFNOPN=1
          JFNRIT=0
          JFNRED=0
          JFNBGN=0
          CALL RNOFIL(2,1,LDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
      196 JFNRIT=JFNRIT+1
        WRITE(LDISK,193)
       WRITE(LDISK,194)KNTNDX,LNGMID,ISKIP
        WRITE(LDISK,190)(NUMNDX(I),I=1,KNTNDX)
          IF(LNGFTN.LE.0)IFNRDY=IFNTTL
          IF(LNGFTN.LE.0)JFNBGN=JFNRIT
      197 CONTINUE
          GO TO 543
   C
  C     .INITIAL PAGE
      198 NULTTL=-1
         NEWPAG=-1
         GO TO 543
   C
  C     .INPUT WIDTH
  199 IF(KNDFIL.LT.0)GO TO 543
         IF(KNDFIL.EQ.0)GO TO 200
         LNGSPL=LNGSPL-LSNSPL
        IF(IMINUS.LT.0)IVALUE=LNGSPL+IVALUE
        IF(IVALUE.GT.0)LNGSPL=IVALUE
          LNGSPL=LNGSPL+LSNSPL
        IF(LNGSPL.GT.LMTBGN)LNGSPL=LMTBGN
          GO TO 543
     200 LNGSRC=LNGSRC-LSNSRC
        IF(IMINUS.LT.0)IVALUE=LNGSRC+IVALUE
        IF(IVALUE.GT.0)LNGSRC=IVALUE
          LNGSRC=LNGSRC+LSNSRC
        IF(LNGSRC.GT.LMTBGN)LNGSRC=LMTBGN
          GO TO 543
   C
  C     .JOIN
    201 IF(LNGMID.LE.0)GO TO 543
         IF(IFNOTE.NE.0)GO TO 543
         KONECT=1
          GO TO 543
   C
  C     .JUSTIFY
      202 JSTIFY=1
          GO TO 543
   C
  C     .LAST FORM
    203 LSTFRM=1
          GO TO 543
   C
  C     .LEFT EDGE, .RIGHT EDGE
      204 IF(IFNOTE.NE.0)GO TO 543
         KNDTRN=4
          KNTSHD=0
          LNGSHD=0
          LNGTRN=1
          NGLSHD=1
          INIOJB=0
          IF(KNTARG.LE.0)GO TO 207
         IF(IMINUS.LE.0)GO TO 206
         IFIRST=IVALUE
          IFINAL=IFIRST+IMINUS-1
  205 IF(IFIRST.GT.IFINAL)GO TO 206
         IF(LNGSHD.GE.LMTSHD)GO TO 206
         LNGSHD=LNGSHD+1
        LTRSHD(LNGSHD)=LTRBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 205
   C     WIDTH OF EDGE
      206 IF(KNTARG.LT.2)GO TO 207
         IF(NVALUE(2).NE.0)LNGTRN=NVALUE(2)
   C     PHRASE REPLICATION SLANT
         IF(KNTARG.LT.3)GO TO 207
         IF(NMINUS(3).NE.0)NGLSHD=NVALUE(3)
         IF(NGLSHD.LE.(-LNGSHD))NGLSHD=0
       IF(NGLSHD.GE.LNGSHD)NGLSHD=0
    C     ORIENATION OF SUPERIMPOSED PATTERN
         IF(KNTARG.LT.4)GO TO 207
         IF(NMINUS(4).NE.0)INIOBJ=NVALUE(4)
     207 IF(KOMAND.EQ.185)LNGTRN=-LNGTRN
       GO TO 543
   C
  C     .LEFT MARGIN
  208 IF(IMINUS.LT.0)IVALUE=NOWLFT+IVALUE
        NOWLFT=IVALUE
          MRGLFT=0
          IF(NOWLFT.GT.0)MRGLFT=NOWLFT
          GO TO 543
   C
  C     .LEFT NO FILL
      209 JFILL=3
      GO TO 304
   C
  C     .LEFT PAGE
    210 LRFORC=0
          GO TO 543
   C
  C     .LETTER
  211 MAGNFY=-1
         LNGBIG=0
          IF(KNTARG.LE.0)GO TO 214
         IF(IMINUS.LE.0)GO TO 213
         IFIRST=IVALUE
          IFINAL=IFIRST+IMINUS-1
  212 IF(IFIRST.GT.IFINAL)GO TO 213
         IF(LNGBIG.GE.LMTBIG)GO TO 213
         LNGBIG=LNGBIG+1
        LTRBIG(LNGBIG)=LTRBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 212
     213 IF(KNTARG.LE.1)GO TO 214
         IF(NMINUS(2).NE.0)MAGFNT=NVALUE(2)
         IF(KNTARG.LE.2)GO TO 214
         IF(NMINUS(3).NE.0)MAGSPC=NVALUE(3)
         IF(KNTARG.LE.3)GO TO 214
         IF(NMINUS(4).NE.0)MAGSHD=NVALUE(4)
         IF(KNTARG.LE.4)GO TO 214
         IF(NMINUS(5).NE.0)NGLBIG=NVALUE(5)
         IF(KNTARG.LE.5)GO TO 214
         IF(NMINUS(6).NE.0)INIMAG=NVALUE(6)
     214 GO TO 543
   C
  C     .LIST
    215 IF(IFLIST.GE.LMTLST)GO TO 543
         IFLIST=IFLIST+1
        IF(IFLIST.LE.MSTLST)GO TO 216
         MSTLST=IFLIST
          LTROPN(IFLIST)=LTRSPA
       LTRCLS(IFLIST)=1H.
          LSTTYP(IFLIST)=1
       INDLST(IFLIST)=0
       LSTSKP(IFLIST)=NOWLST
   216 LSTVAL(IFLIST)=1
       LSTSPC(IFLIST)=ISPACE
       IF(IMINUS.EQ.0)GO TO 217
         IF(IVALUE.GE.0)LSTSKP(IFLIST)=IVALUE
   217 NOWLST=LSTSKP(IFLIST)
       IF(KNTARG.LE.1)GO TO 219
         IF(NMINUS(2).LE.0)GO TO 219
      IVALUE=NVALUE(2)
       IMINUS=NMINUS(2)
       IF(IMINUS.GT.6)IMINUS=6
          DO 218 I=1,IMINUS
      LTRLST(IFLIST,I)=LTRBGN(IVALUE)
       IVALUE=IVALUE+1
    218 CONTINUE
          LSTTYP(IFLIST)=-IMINUS
      LTRCLS(IFLIST)=LTRSPA
   219 LSTMRG(IFLIST)=NOWLFT
       LSTRIT(IFLIST)=NOWRIT
   220 I=3
          IF(LSTTYP(IFLIST).LT.0)I=2-LSTTYP(IFLIST)
       IF(LTROPN(IFLIST).NE.LTRSPA)I=I+1
          IF(LTRCLS(IFLIST).NE.LTRSPA)I=I+1
          IF(I.LT.INDLST(IFLIST))I=INDLST(IFLIST)
         NOWLFT=LSTMRG(IFLIST)+I-INDLST(IFLIST)
          MRGLFT=0
          IF(NOWLFT.GT.0)MRGLFT=NOWLFT
          GO TO 543
   C
  C     .LIST ELEMENT
      221 IF(IFLIST.LE.0)GO TO 543
         I=3
          IF(LSTTYP(IFLIST).LT.0)I=2-LSTTYP(IFLIST)
       IF(LTROPN(IFLIST).NE.LTRSPA)I=I+1
          IF(LTRCLS(IFLIST).NE.LTRSPA)I=I+1
          IF(I.LT.INDLST(IFLIST))I=INDLST(IFLIST)
         NOWLFT=LSTMRG(IFLIST)+I-INDLST(IFLIST)
          MRGLFT=0
          IF(NOWLFT.GT.0)MRGLFT=NOWLFT
          NOWRIT=LSTRIT(IFLIST)
       IF(MRGFAR.LT.NOWRIT)MRGFAR=NOWRIT
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         ISPACE=LSTSPC(IFLIST)
       LSTELM=1
          IF(ISKIP.LT.0)GO TO 543
          ISKIP=ISKIP+LSTSKP(IFLIST)
       GO TO 294
   C
  C     .LITERAL
      222 JFILL=6
      GO TO 304
   C
  C     .LOOP
    223 IF(IFLOOP.NE.0)GO TO 543
         IF(IVALUE.EQ.1)GO TO 543
         IF(IVALUE.LT.0)GO TO 543
         IFLOOP=1
          KNTLOP=IVALUE
          IF(LMTKAS.GE.MAXBGN)GO TO 543
         IF(KNDFIL.NE.0)GO TO 543
         IFLOOP=2
          CALL RNOFIL(3,1,MDISK,NXTUNT,LMTUNT,ITTY,JTTY,IDFILE)
          I=MAXBGN-LMTKAS
        WRITE(MDISK,224)I
  224 FORMAT(1I3)
       J=LMTKAS+1
        WRITE(MDISK,225)(LTRBGN(I),I=J,MAXBGN)
      225 FORMAT(300A1)
          GO TO 543
   C
  C     .LOWER CASE, CORRESPONDS TO \\ IN TEXT
      226 KASALL=1
          GO TO 543
   C
  C     .MOVABLE PAGE
      227 IF(IVALUE.LE.0)IVALUE=1
          IF(IFNOTE.NE.0)GO TO 228
         IF(LNGMID.NE.0)GO TO 228
         IDFRPG=IDFRPG+IVALUE
        GO TO 543
     228 JDFRPG=JDFRPG+IVALUE
        GO TO 543
   C
  C     .NO AUTO PARAGRAPH
      229 IFAUTO=0
          IFNATO=0
          GO TO 543
   C
  C     .NO FLAGS ALL
      230 IFFLAG=-1
         IF(MRKLES.EQ.1)MRKLES=-1
         IF(MRKDOL.EQ.1)MRKDOL=-1
         IF(MRKBAC.EQ.1)MRKBAC=-1
         IF(MRKUND.EQ.1)MRKUND=-1
         IF(MRKNUM.EQ.1)MRKNUM=-1
         IF(MRKCAR.EQ.1)MRKCAR=-1
         IF(MRKAMP.EQ.1)MRKAMP=-1
         IF(MRKEFN.EQ.1)MRKEFN=-1
         IF(MRKNDX.EQ.1)MRKNDX=-1
         IF(MRKSBX.EQ.1)MRKSBX=-1
         IF(MRKMAG.EQ.1)MRKMAG=-1
         IF(MRKTTL.EQ.1)MRKTTL=-1
         IF(MRKSUP.EQ.1)MRKSUP=-1
         IF(MRKSUB.EQ.1)MRKSUB=-1
         GO TO 543
   C
  C     .NO FLAGS CAPITALIZE
    231 MRKLES=0
          GO TO 543
   C
  C     .NO FLAGS CONTROL
  232 MRKDOT=0
          GO TO 543
   C
  C     .NO FLAGS END FOOT NOTES
     233 MRKEFN=0
          GO TO 56
    C
  C     .NO FLAGS FENCE
    234 MRKSEM=0
          GO TO 543
   C
  C     .NO FLAGS HALFDOWN
      235 MRKSUB=0
          GO TO 543
   C
  C     .NO FLAGS HALFUP
   236 MRKSUP=0
          GO TO 543
   C
  C     .NO FLAGS INDEX
    237 MRKNDX=0
          GO TO 543
   C
  C     .NO FLAGS LOWER CASE
    238 MRKBAC=0
          GO TO 543
   C
  C     .NO FLAGS MAGNIFY
  239 MRKMAG=0
          GO TO 543
   C
  C     .NO FLAGS PAGE
     240 MRKTTL=0
          GO TO 543
   C
  C     .NO FLAGS QUOTE
    241 MRKUND=0
          GO TO 543
   C
  C     .NO FLAGS REMARK
   242 MRKEXC=0
          GO TO 543
   C
  C     .NO FLAGS SPACE
    243 MRKNUM=0
          GO TO 543
   C
  C     .NO FLAGS SUBINDEX
      244 MRKSBX=0
          GO TO 543
   C
  C     .NO FLAGS TEXT
     245 MRKTXT=0
          GO TO 543
   C
  C     .NO FLAGS UNDER LINE
    246 MRKAMP=0
          GO TO 543
   C
  C     .NO FLAGS UPPER CASE
    247 MRKCAR=0
          GO TO 543
   C
  C     .NO FOOT NOTE HEADER
    248 LNGFNR=0
          IFNGAP=0
          GO TO 543
   C
  C     .NO HEADER
    249 IFHEAD=0
          GO TO 543
   C
  C     .NO JUSTIFY
   250 JSTIFY=0
          GO TO 543
   C
  C     .NO NUMBER
    251 IFNUMB=0
          GO TO 543
   C
  C     .NO NUMBER FOOTNOTES
    252 NUMFTN=0
          GO TO 543
   C
  C     .NO OFFSET
    253 IVALUE=0
          IMINUS=1
          GO TO 271
   C
  C     .NO PAGING
    254 IFPAGE=0
          GO TO 543
   C
  C     .NO PERIOD
    255 IPEROD=0
          GO TO 543
   C
  C     .NO UNDERLINE SPACE
     256 IULSPC=1
          GO TO 543
   C
  C     .NOTE
    257 IF(INNOTE.NE.0)GO TO 543
         INNOTE=1
          NOTLFT=NOWLFT
          NOWLFT=NOWLFT+INTLFT
        MRGLFT=0
          IF(NOWLFT.GT.0)MRGLFT=NOWLFT
          NOTRIT=NOWRIT
          NOWRIT=NOWRIT+INTRIT
        IF(MRGFAR.LT.NOWRIT)MRGFAR=NOWRIT
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         NOTFIL=IFFILL
          NOTKLM=ICENTR
          NOTMNS=KCENTR
          IFFILL=0
          JFILL=0
      NOTSPC=ISPACE
          ISPACE=0
          IF(ISKIP.GE.0)ISKIP=ISKIP+NOTONE
      I=NOTIND
          NOTIND=NOWIND
          NOWIND=I
          I=NOTTST
          NOTTST=NOWTST
          NOWTST=I
          I=NOTSKP
          NOTSKP=NOWSKP
          NOWSKP=I
          IF(KNTARG.LE.0)GO TO 258
         IF(NMINUS(KNTARG).LE.0)GO TO 258
      JSKIP=6
      IVALUE=NOTTWO+1+NOWTST
      IMINUS=1
          GO TO 384
     258 INDENT=INTIND
          GO TO 294
   C
  C     .NUMBER APPENDIX
   259 IFNUMB=1
          IF(IMINUS.EQ.0)GO TO 543
         IF(IMINUS.LT.0)IVALUE=IAPNDX+IVALUE
        IF(IVALUE.GE.0)IAPNDX=IVALUE
          GO TO 543
   C
  C     .NUMBER CHAPTER
    260 IFNUMB=1
          IF(IMINUS.EQ.0)GO TO 543
         IF(IMINUS.LT.0)IVALUE=ICHAPT+IVALUE
        IF(IVALUE.GE.0)ICHAPT=IVALUE
          GO TO 543
   C
  C     .NUMBER FOOTNOTES
  261 NUMFTN=1
          IF(IMINUS.LE.0)IVALUE=IVALUE+KNTFTN
        IF(IVALUE.GT.0)KNTFTN=IVALUE
          GO TO 543
   C
  C     .NUMBER LEVELS
     262 IF(KNTARG.LE.0)GO TO 543
         IF(KNTARG.GT.LMTLVL)KNTARG=LMTLVL
          DO 263 I=1,KNTARG
      IF(I.GT.KNTLVL)NUMLVL(I)=0
       IF(NMINUS(I).LE.0)NVALUE(I)=NUMLVL(I)+NVALUE(I)
      IF(NVALUE(I).GE.0)NUMLVL(I)=NVALUE(I)
  263 CONTINUE
          KNTLVL=KNTARG
          NXTLVL=KNTLVL
          GO TO 543
   C
  C     .NUMBER LIST
  264 IF(IMINUS.LT.0)IVALUE=IFLIST+IVALUE
        IF(IMINUS.EQ.0)IVALUE=IFLIST
          IF(IVALUE.LE.0)GO TO 543
         IF(IVALUE.GT.IFLIST)GO TO 543
         IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).LT.0)NVALUE(2)=NVALUE(2)+LSTVAL(IVALUE)
      IF(NVALUE(2).GT.0)LSTVAL(IVALUE)=NVALUE(2)
      GO TO 543
   C
  C     .NUMBER PAGE
  265 IFNUMB=1
          IF(IMINUS.EQ.0)GO TO 543
         IF(IMINUS.LT.0)IVALUE=NXTPAG+IVALUE
        IF(IVALUE.GT.0)NXTPAG=IVALUE
          GO TO 543
   C
  C     .NUMBER SUBPAGE
    266 IF(IMINUS.EQ.0)GO TO 543
         IF(IMINUS.LT.0)IVALUE=NXTSUB+IVALUE
        IF(IVALUE.GT.0)NXTSUB=IVALUE
          GO TO 543
   C
  C     .OFFSET LEFT
  267 JVALUE=IVALUE
          IF(IMINUS.LE.0)IVALUE=LFTBAS-JOFFST+IVALUE
      LFTBAS=IVALUE+JOFFST
        IF(IFNOTE.NE.0)GO TO 268
         IF(IMINUS.LE.0)JVALUE=IFNLBS-JOFFST+JVALUE
      IFNLBS=JVALUE+JOFFST
    268 IVALUE=0
          IMINUS=-1
         GO TO 271
   C
  C     .OFFSET RIGHT
      269 JVALUE=IVALUE
          IF(IMINUS.LE.0)IVALUE=IRTBAS-JOFFST+IVALUE
      IRTBAS=IVALUE+JOFFST
        IF(IFNOTE.NE.0)GO TO 270
         IF(IMINUS.LE.0)JVALUE=IFNRBS-JOFFST+JVALUE
      IFNRBS=JVALUE+JOFFST
    270 IVALUE=0
          IMINUS=-1
         GO TO 271
   C
  C     .OFFSET
  271 JVALUE=IVALUE
          KVALUE=IVALUE
          IF(IMINUS.GT.0)GO TO 272
         JVALUE=LFTBAS-JOFFST+JVALUE
      KVALUE=IRTBAS-JOFFST+KVALUE
  272 LFTBAS=JOFFST+JVALUE
        IRTBAS=JOFFST+KVALUE
        IF(JVALUE.LT.0)JVALUE=0
          IF(KVALUE.LT.0)KVALUE=0
          IF(MRKBAR.NE.0)GO TO 273
         IF(IFNOTE.EQ.0)GO TO 274
         IF(IFNMBR.EQ.0)GO TO 274
     273 IF(JVALUE.LT.3)JVALUE=3
          IF(KVALUE.LT.3)KVALUE=3
      274 LFTOFF=JOFFST+JVALUE
        IRTOFF=JOFFST+KVALUE
        IOFFST=LFTOFF
          NOWOFF=LFTBAS
          IF(LFTRIT.NE.0)IOFFST=IRTOFF
          IF(LFTRIT.NE.0)NOWOFF=IRTBAS
          IF(MRKBAR.GT.0)MRKBAR=IOFFST-2
        IF(LCLBAR.NE.0)NOWBAR=MRKBAR
          IF(MRKBAR.LE.0)GO TO 275
         IF(IFABAR.GT.0)IFABAR=MRKBAR
      275 INIBAR=NOWBAR
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
   C     IF NOT IN FOOTNOTE, APPLY OFFSET TO FOOTNOTE ALSO
     276 IF(IFNOTE.NE.0)GO TO 543
         JVALUE=IVALUE
          IF(IMINUS.LE.0)JVALUE=IFNLBS-JOFFST+JVALUE
      IFNLBS=JOFFST+JVALUE
        IF(JVALUE.LT.0)JVALUE=0
          IF(IFNMBR.EQ.0)GO TO 277
         IF(JVALUE.LT.3)JVALUE=3
      277 IFNLOF=JOFFST+JVALUE
        KVALUE=IVALUE
          IF(IMINUS.LE.0)KVALUE=IFNRBS-JOFFST+KVALUE
      IFNRBS=JOFFST+KVALUE
        IF(KVALUE.LT.0)KVALUE=0
          IF(IFNMBR.EQ.0)GO TO 278
         IF(KVALUE.LT.3)KVALUE=3
      278 IFNROF=JOFFST+KVALUE
  C     IF(IFNMBR.GT.0)IFNMBR=IFNOFF-2
  C     IF(IFNLBR.NE.0)IFNNBR=IFNMBR
    C     IFNMLF=IFNNLF+IFNOFF
  C     IF(IFNMLF.LT.IFNOFF)IFNMLF=IFNOFF
    C     IFNMRT=IFNNRT+IFNOFF
  C     IF(IFNMRT.GT.LMTMID)IFNMRT=LMTMID
          GO TO 543
   C
  C     .OMIT PAGE
    279 IPGSHO=0
          GO TO 543
   C
  C     .OPEN SPLICE
C     INACTIVE IF READ FROM SPLICE FILE ITSELF
    280 IF(IFSPLC.GT.0)GO TO 543
         IF(IFSPLC.EQ.0)GO TO 111
         GO TO 69
    C
  C     .OUTLINE
      281 IF(IFNOTE.NE.0)GO TO 543
         KNDTRN=7
          KNTSHD=0
          LNGSHD=0
          LNGTRN=1
          IBORDR=1
          NGLSHD=1
          JBORDR=0
          INIOBJ=0
          IF(KNTARG.LE.0)GO TO 284
         IF(IMINUS.LE.0)GO TO 283
         IFIRST=IVALUE
          IFINAL=IFIRST+IMINUS-1
  282 IF(IFIRST.GT.IFINAL)GO TO 283
         IF(LNGSHD.GE.LMTSHD)GO TO 283
         LNGSHD=LNGSHD+1
        LTRSHD(LNGSHD)=LTRBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 282
   C     WIDTH OF OUTLINE
   283 IF(KNTARG.LT.2)GO TO 284
         IF(NVALUE(2).GT.0)LNGTRN=NVALUE(2)
         IBORDR=LNGTRN
    C     HEIGHT OF OUTLINE
      IF(KNTARG.LT.3)GO TO 284
         IF(NVALUE(3).GT.0)IBORDR=NVALUE(3)
   C     SQUARE OR ROUNDED EDGE, FILLED IN
          IF(KNTARG.LT.4)GO TO 284
         IF(NVALUE(4).GE.0)JBORDR=NVALUE(4)
   C     PHRASE OFFSET FROM ONE LINE TO NEXT
        IF(KNTARG.LT.5)GO TO 284
         IF(NMINUS(5).NE.0)NGLSHD=NVALUE(5)
         IF(NGLSHD.LE.(-LNGSHD))NGLSHD=0
       IF(NGLSHD.GE.LNGSHD)NGLSHD=0
    C     PATTERN ORIENTATION
         IF(KNTARG.LT.6)GO TO 284
         IF(NMINUS(6).NE.0)INIOBJ=NVALUE(6)
     284 IF(IBORDR.GT.2)IBORDR=2
          GO TO 543
   C
  C     SIMULATE .PAGE
     285 IF(KNTTOP.LT.0)GO TO 543
         IF(NEWPAG.EQ.0)NEWPAG=1
          IF(NEWPAG.GT.0)ISKIP=-1
          GO TO 543
   C
  C     .PAGE SIZE OR .PAPER SIZE OR .PAGE LENGTH
   286 IF(KNTARG.GT.0)GO TO 287
         MAXLIN=58
         LNGPAG=MAXLIN-LNGBOT
        IF(LNGPAG.LE.0)LNGPAG=58
         MRGFAR=60
         GO TO 288
     287 IF(IMINUS.LT.0)MAXLIN=MAXLIN+IVALUE
        IF(IMINUS.GT.0)MAXLIN=IVALUE
          LNGPAG=MAXLIN-LNGBOT
        IF(LNGPAG.LE.0)LNGPAG=58
         IF(KNTARG.EQ.1)GO TO 543
         IF(NMINUS(2).LT.0)MRGFAR=MRGFAR+NVALUE(2)
       IF(NMINUS(2).GT.0)MRGFAR=NVALUE(2)
     288 IF(MRGFAR.LE.0)MRGFAR=60
         NOWRIT=MRGFAR
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         IFNNRT=NOWRIT
          IFNMFR=MRGFAR
          IFNMRT=MRGRIT
          GO TO 543
   C
  C     .PAGE WIDTH
   289 IF(IMINUS.LT.0)MRGFAR=MRGFAR+IVALUE
        IF(IMINUS.GT.0)MRGFAR=IVALUE
          IF(IMINUS.EQ.0)MRGFAR=60
         GO TO 288
   C
  C     .PAGING
  290 IF(IFPAGE.EQ.0)IFPAGE=-1
         GO TO 543
   C
  C     .PARAGRAPH
    291 IF(IFAUTO.NE.0)IFAUTO=2
          INDENT=NOWIND
          IF(IMINUS.NE.0)INDENT=IVALUE
          NOWIND=INDENT
          IF(KNTARG.LE.1)GO TO 292
         IF(NMINUS(2).LE.0)NVALUE(2)=NVALUE(2)+NOWSKP
         IF(NVALUE(2).GE.0)NOWSKP=NVALUE(2)
     292 IF(ISKIP.GE.0)ISKIP=ISKIP+NOWSKP
  293 IF(KNTARG.LE.2)GO TO 294
         IF(NMINUS(3).LE.0)NVALUE(3)=NVALUE(3)+NOWTST
         IF(NVALUE(3).GE.0)NOWTST=NVALUE(3)
     294 IVALUE=NOWTST
          IMINUS=1
          GO TO 384
   C
  C     .PERIOD
  295 IPEROD=1
          GO TO 543
   C
  C     .RESET
   296 KNDOUT=6
          CALL RNOLIN
       GO TO 543
   C
  C     .RESET ALL
    297 IF(KNTRST.EQ.0)GO TO 296
         IF(LSTFRM.EQ.0)GO TO 296
         IF(KRANGE.GT.0)GO TO 298
         KNDOUT=6
          CALL RNOLIN
   298 INIPAG=1
          KRANGE=1
          KNDOUT=3
          CALL RNOLIN
       GO TO 296
   C
  C     .RIGHT
   299 JFILL=2
      GO TO 302
   C
  C     .RIGHT MARGIN
      300 IF(IMINUS.LT.0)IVALUE=NOWRIT+IVALUE
        IF(IMINUS.EQ.0)IVALUE=MRGFAR
          NOWRIT=IVALUE
          IF(MRGFAR.LT.NOWRIT)MRGFAR=NOWRIT
          MRGRIT=NOWRIT
          IF(MRGRIT.GT.(LMTMID-IOFFST))MRGRIT=LMTMID-IOFFST
         GO TO 543
   C
  C     .RIGHT NO FILL
     301 JFILL=5
      GO TO 304
     302 IF(KNTARG.LT.2)GO TO 303
         IF(NVALUE(2).GT.0)GO TO 304
  303 KNTARG=2
          NMINUS(2)=1
       NVALUE(2)=1
   304 ICENTR=IVALUE
          KCENTR=IMINUS
          JCENTR=0
          IF(KNTARG.LT.2)GO TO 305
         IF(NMINUS(2).NE.0)JCENTR=NVALUE(2)
     305 IF(JCENTR.GT.0)GO TO 543
         IF(JFILL.EQ.6)GO TO 543
          IFFILL=JFILL
      KLMFIL=ICENTR
          KLMMNS=KCENTR
          GO TO 543
   C
  C     .RIGHT PAGE
   306 LRFORC=1
          GO TO 543
   C
  C     .SEQUENCE
     307 IF(IMINUS.LE.0)GO TO 543
         IF(KNTCOD.GE.LMTCOD)GO TO 543
         LTRNOW=LTRBGN(IVALUE)
       IF(LTRNOW.EQ.LTRSPA)GO TO 310
         IF(LTRNOW.EQ.LTRTAB)GO TO 310
         DO 308 I=1,26
          IF(LTRNOW.EQ.LTRABC(I))GO TO 310
      IF(LTRNOW.EQ.LWRABC(I))GO TO 310
  308 CONTINUE
          DO 309 I=1,KNTCOD
      IF(LTRNOW.EQ.LTRCOD(I))GO TO 310
  309 CONTINUE
          KNTCOD=KNTCOD+1
        LTRCOD(KNTCOD)=LTRNOW
   310 IVALUE=IVALUE+1
        IMINUS=IMINUS-1
        GO TO 307
   C
  C     .SHOW PAGE
    311 IPGSHO=1
          GO TO 543
   C
  C     .SIMULATE SPLICE
   312 IWIZRD=1
          GO TO 543
   C
  C     .SKIP
    313 IF(ISKIP.LT.0)GO TO 543
          IF(IMINUS.EQ.0)GO TO 314
         IF(IVALUE.LE.0)GO TO 315
     314 IF(IVALUE.LE.0)IVALUE=1
          ISKIP=ISKIP+(IVALUE*(ISPACE+1))
       GO TO 543
     315 IF(IFNOTE.NE.0)GO TO 543
         I=LNGPAG+(IVALUE*(ISPACE+1))-LOCPAG-1
      IF(ISKIP.LT.I)ISKIP=I
       GO TO 543
   C
  C     .SKIP LEFT PAGE
    316 IF(LRFORC.EQ.1)GO TO 543
         IF(LRFORC.EQ.0)GO TO 317
         IF(LFTRIT.EQ.1)GO TO 317
         GO TO 543
   C
  C     .SKIP PAGE
    317 CALL RNOTOP
       CALL RNOBOT
       IVALUE=IVALUE-1
        IF(IVALUE.GT.0)GO TO 317
         GO TO 543
   C
  C     .SKIP RIGHT PAGE
   318 IF(LRFORC.EQ.0)GO TO 543
         IF(LRFORC.EQ.1)GO TO 317
         IF(LFTRIT.EQ.0)GO TO 317
         GO TO 543
   C
  C     .SPACE APPENDIX
    319 IF(IMINUS.LE.0)IVALUE=INIAPP+IVALUE
        IF(IVALUE.GE.0)INIAPP=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).LE.0)NVALUE(2)=MIDAPP+NVALUE(2)
         IF(NVALUE(2).GE.0)MIDAPP=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 543
         IF(NMINUS(3).LE.0)NVALUE(3)=LSTAPP+NVALUE(3)
         IF(NVALUE(3).GE.0)LSTAPP=NVALUE(3)
         GO TO 543
   C
  C     .SPACE BOTTOM
      320 IF(IMINUS.LE.0)IVALUE=IGAPLO+IVALUE
        IF(IVALUE.GE.0)IGAPLO=IVALUE
          GO TO 458
   C
  C     .SPACE CHAPTER
     321 IF(IMINUS.LE.0)IVALUE=INICHA+IVALUE
        IF(IVALUE.GE.0)INICHA=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).LE.0)NVALUE(2)=MIDCHA+NVALUE(2)
         IF(NVALUE(2).GE.0)MIDCHA=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 543
         IF(NMINUS(3).LE.0)NVALUE(3)=LSTCHA+NVALUE(3)
         IF(NVALUE(3).GE.0)LSTCHA=NVALUE(3)
         GO TO 543
   C
  C     .SPACE FOOT NOTES
  322 IF(IMINUS.LE.0)IVALUE=MFNGAP+IVALUE
        IF(IVALUE.GE.0)MFNGAP=IVALUE
          IF(KNTARG.LT.2)GO TO 459
         IF(NMINUS(2).LE.0)NMINUS(2)=NFNGAP+NMINUS(2)
         IF(NVALUE(2).GE.0)NFNGAP=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 459
         IF(NMINUS(3).LE.0)NMINUS(3)=LFNGAP+NMINUS(3)
         IF(NVALUE(3).GE.0)LFNGAP=NVALUE(3)
         GO TO 459
   C
  C     .SPACE INDEX
  323 IF(IMINUS.LE.0)IVALUE=NDXONE+IVALUE
        IF(IVALUE.GE.0)NDXONE=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).LE.0)NVALUE(2)=NDXTWO+NVALUE(2)
         IF(NVALUE(2).GE.0)NDXTWO=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 543
         IF(NMINUS(3).LE.0)NVALUE(3)=NDXTHR+NVALUE(3)
         IF(NVALUE(3).GE.0)NDXTHR=NVALUE(3)
         IF(KNTARG.LT.4)GO TO 543
         IF(NMINUS(4).LE.0)NVALUE(4)=NDXFOU+NVALUE(4)
         IF(NVALUE(4).GE.0)NDXFOU=NVALUE(4)
         GO TO 543
   C
  C     .SPACE LEVELS
      324 IF(IMINUS.LE.0)IVALUE=LEVEL1+IVALUE
        IF(IVALUE.GE.0)LEVEL1=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).LE.0)NVALUE(2)=LEVEL3+NVALUE(2)
         IF(NVALUE(2).GE.0)LEVEL3=NVALUE(2)
         GO TO 543
   C
  C     .SPACE NOTES
  325 IF(IMINUS.LE.0)IVALUE=NOTONE+IVALUE
        IF(IVALUE.GE.0)NOTONE=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).LE.0)NMINUS(2)=NOTTWO+NMINUS(2)
         IF(NVALUE(2).GE.0)NOTTWO=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 543
         IF(NMINUS(3).LE.0)NMINUS(3)=NOTTHR+NMINUS(3)
         IF(NVALUE(3).GE.0)NOTTHR=NVALUE(3)
         GO TO 543
   C
  C     .SPACE TOP
    326 IF(IMINUS.LE.0)IVALUE=MRGTOP+IVALUE
        IF(IVALUE.GE.0)MRGTOP=IVALUE
          IF(KNTARG.LT.2)GO TO 458
         IF(NMINUS(2).LE.0)NVALUE(2)=IGAPHI+NVALUE(2)
         IF(NVALUE(2).GE.0)IGAPHI=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 458
         IF(NMINUS(3).LE.0)NVALUE(3)=MINTOP+NVALUE(3)
         IF(NVALUE(3).GE.0)MINTOP=NVALUE(3)
         GO TO 458
   C
  C     .SPACING
      327 ISPACE=0
          IF(IVALUE.GT.0)ISPACE=IVALUE-1
        GO TO 543
   C
  C     .SPLICE
  328 IMINUS=1
          IVALUE=0
          KOMAND=65
         GO TO 333
     329 IF(IFSPLC.GT.0)GO TO 337
         KNDSPL=MAXBGN-KPYBGN
        IF(JSKIP.EQ.1)KNDSPL=-1
          IF(KNDSPL.EQ.0)GO TO 333
         KPYBGN=MAXBGN
          LMTKAS=MAXBGN
          JSKIP=0
      LSTSPL=0
          IF(LSNSRC.LE.0)GO TO 331
         DO 330 I=1,LSNSRC
      LSTSPL=LSTSPL+1
        LTRSPL(LSTSPL)=LTRBGN(I)
     330 CONTINUE
      331 IF(KNDSPL.LE.0)GO TO 333
         DO 332 I=1,KNDSPL
      KPYKAS=KPYKAS+1
        LSTSPL=LSTSPL+1
        LTRSPL(LSTSPL)=LTRBGN(KPYKAS)
     332 CONTINUE
      333 IF(IFSPLC.NE.0)GO TO 334
         LNGSPL=132
        LINSPL=0
          IF(IWIZRD.EQ.0)GO TO 335
     334 KOMAND=0
      335 IFSPLC=1
          KNTSPL=0
          MAXSPL=IVALUE
          IF(IMINUS.EQ.0)GO TO 336
         IF(IVALUE.LE.0)IFSPLC=-1
     336 IF(IFLOOP.EQ.0)GO TO 543
         IF(KNTLOP.EQ.0)KNTLOP=-1
         GO TO 543
     337 KOMAND=0
          GO TO 543
   C
  C     .SQUEEZE
      338 NEEDED=0
      339 NEEDED=NEEDED+1
        IF(NEEDED.GT.KNTARG)GO TO 543
         IF(NMINUS(NEEDED).EQ.0)GO TO 339
      IF(NVALUE(NEEDED).LT.0)GO TO 342
      IF(NVALUE(NEEDED).EQ.0)GO TO 339
C     CHECK IF NEW ITEM IS PROPERLY TO RIGHT OF PREVIOUS
        IF(KNTEDT.LE.0)GO TO 344
         IF(MAGEDT(KNTEDT).EQ.-1)KNTEDT=KNTEDT-1
         I=MAGEDT(KNTEDT)
       J=I
          K=KNTEDT
          IF(I.GT.0)GO TO 340
         K=KNTEDT-1
        I=MAGEDT(K)
       J=I-J-1
C     CHECK IF CAN COMBINE PREVIOUS 2 ENTRIES
     340 IF(K.LE.1)GO TO 344
         K=K-1
        M=MAGEDT(K)
       N=M
          IF(M.GT.0)GO TO 341
         K=K-1
        M=MAGEDT(K)
       N=M-N-1
  341 IF(N.LT.(I-1))GO TO 344
          KNTEDT=K+1
        IF(J.GT.N)MAGEDT(KNTEDT)=M-J-1
        GO TO 344
   C     ADD NEW NEGATIVE TO PREVIOUS IF IT WAS NEGATIVE
  342 IF(KNTEDT.LE.0)GO TO 343
         IF(MAGEDT(KNTEDT).GT.0)GO TO 344
      MAGEDT(KNTEDT)=MAGEDT(KNTEDT)+NVALUE(NEEDED)
         GO TO 339
     343 IF(LMTEDT.LE.0)GO TO 543
         KNTEDT=1
          MAGEDT(KNTEDT)=1
 C     INSERT NEW ITEM
    344 IF(KNTEDT.GE.LMTEDT)GO TO 543
         KNTEDT=KNTEDT+1
        MAGEDT(KNTEDT)=NVALUE(NEEDED)
         GO TO 339
   C
  C     .STANDARD
     345 ISPACE=0
          JFILL=0
      JSTIFY=1
          NOWLFT=0
          MRGLFT=0
          IF(IMINUS.LT.0)MRGFAR=MRGFAR+IVALUE
        IF(IMINUS.GT.0)MRGFAR=IVALUE
          IF(MRGFAR.LE.0)MRGFAR=60
         IF(MRGFAR.EQ.60)MAXLIN=58
        IF(MRGFAR.EQ.70)MAXLIN=74
        LNGPAG=MAXLIN-LNGBOT
        IF(LNGPAG.LE.0)LNGPAG=58
         GO TO 288
   C
  C     .STYLE HEADERS
     346 IF(IMINUS.NE.0)IRUNIN=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).NE.0)KAPITL=NVALUE(2)
         IF(KNTARG.LT.3)GO TO 543
         IF(NMINUS(3).NE.0)INITAL=NVALUE(3)
         IF(KNTARG.LT.4)GO TO 543
         IF(NMINUS(4).LE.0)NVALUE(4)=MINLVL+NVALUE(4)
         MINLVL=NVALUE(4)
       IF(MINLVL.GT.LMTLVL)MINLVL=LMTLVL
          GO TO 543
   C
  C     .STYLE INDEX
  347 IF(KNTARG.LT.1)GO TO 543
         IF(IMINUS.NE.0)KNDNDX=IVALUE
          IF(KNTARG.LT.2)GO TO 543
         IF(NMINUS(2).NE.0)KAPNDX=NVALUE(2)
         GO TO 543
   C
  C     .SUBPAGE
      348 IF(ISUBPG.GE.0)GO TO 543
         ISUBPG=-1-ISUBPG
       GO TO 543
   C
  C     .TAB STOPS
    349 IF(KNTARG.LE.0)GO TO 351
         MAXTAB=KNTARG
          IF(MAXTAB.GT.LMTTAB)MAXTAB=LMTTAB
          DO 350 I=1,MAXTAB
      J=8*I
        IF(NMINUS(I).LT.0)J=LOCTAB(I)+NVALUE(I)
         IF(NMINUS(I).GT.0)J=NVALUE(I)
         IF(J.GT.0)LOCTAB(I)=J
   350 CONTINUE
          GO TO 543
     351 MAXTAB=LMTTAB
          DO 352 I=1,MAXTAB
      LOCTAB(I)=8*I
      352 CONTINUE
          GO TO 543
   C
  C     .TELL
    353 IF(ITRMNL.NE.0)GO TO 543
         IF(KNTARG.LE.0)GO TO 543
         IF(IMINUS.LE.0)GO TO 543
         IFIRST=IVALUE
          IFINAL=IFIRST+IMINUS
        LNGWRK=0
    C     COPY TEXT TO BE DISPLAYED TO USER
      354 IF(IFIRST.GE.IFINAL)GO TO 374
         IF(LNGWRK.GE.LMTWRK)GO TO 374
         IF(MRKTTL.LE.0)GO TO 355
         IF(LTRBGN(IFIRST).EQ.LTRPUT)GO TO 356
  355 LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRBGN(IFIRST)
         IFIRST=IFIRST+1
        GO TO 354
   C     EVALUATE NUMBER AFTER MARKING CHARACTER
     356 IVALUE=0
      357 IFIRST=IFIRST+1
        IF(IFIRST.GE.IFINAL)GO TO 360
         MSKBIT=MSKBGN(IFIRST)
       IF(MSKBIT.EQ.0)GO TO 358
         CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 360
     358 LTRNOW=LTRBGN(IFIRST)
       DO 359 I=1,10
          IF(LTRNOW.NE.LTRDGT(I))GO TO 359
      IVALUE=(10*IVALUE)+I-1
      GO TO 357
     359 CONTINUE
      360 CONTINUE
    C     GET NEW PAGE NUMBER
         IVALUE=1
          IF(NEWCHA.NE.0)GO TO 362
         IF(NEWPAG.NE.0)GO TO 362
         IF(KNTTOP.LT.0)GO TO 362
         IF(LNGMID.GT.0)GO TO 377
   C     LINE FITS ON CURRENT PAGE
    361 NDXLOC=KNTPAG
          IF(NDXLOC.EQ.0)NDXLOC=1
          NDXSEC=NOWSEC
          NDXSHW=NOWSHW
          NDXPAG=NOWPAG
          NDXPHW=NOWPHW
          NDXSUB=NOWSUB
          NDXSPH=NOWSPH
          GO TO 369
   C     LINE GOES ON NEXT PAGE
  362 NDXLOC=KNTPAG+IDFRPG+1
      IF(NEWCHA.EQ.0)GO TO 364
         IF(ISECTN.GT.0)GO TO 363
         NDXSEC=IAPNDX
          NDXSHW=KNDAPP
          GO TO 365
     363 NDXSEC=ICHAPT
          NDXSHW=KNDCHA
          GO TO 365
     364 NDXSEC=NOWSEC
          NDXSHW=NOWSHW
      365 IF(ISUBPG.EQ.0)GO TO 366
         NDXPAG=NXTPAG+IDFRPG
        NDXPHW=KNDPAG
          IF(ISUBPG.GT.0)GO TO 367
         NDXSUB=0
          GO TO 368
     366 NDXPAG=NOWPAG+IDFRPG
        NDXPHW=NOWPHW
      367 NDXSUB=NXTSUB
      368 NDXSPH=KNDSUB
      369 CONTINUE
    C     INSERT CURRENT PAGE NUMBER
       IF(NDXMAK.EQ.0)GO TO 371
         DO 370 I=1,5
      IF(LNGWRK.GE.LMTWRK)GO TO 373
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LWRIND(I)
     370 CONTINUE
          IF(LNGWRK.GE.LMTWRK)GO TO 373
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMNS
       GO TO 372
     371 IF(ISECTN.EQ.0)GO TO 372
         CALL RNONUM(NDXSHW,NDXSEC,LTRWRK,LNGWRK,LMTWRK)
      IF(LNGWRK.GE.LMTWRK)GO TO 373
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMNS
   372 CALL RNONUM(NDXPHW,NDXPAG,LTRWRK,LNGWRK,LMTWRK)
      IF(NDXSUB.LE.0)GO TO 373
         CALL RNONUM(NDXSPH,NDXSUB,LTRWRK,LNGWRK,LMTWRK)
  373 GO TO 354
     374 IF(IDEBUG.EQ.0)WRITE(ITTY,375)(LTRWRK(I),I=1,LNGWRK)
      IF(IDEBUG.NE.0)WRITE(JDISK,375)(LTRWRK(I),I=1,LNGWRK)
      375 FORMAT(1X,300A1)
       GO TO 543
   C
  C     .TERMINAL
     376 IF(IMINUS.NE.0)KTRMNL=IVALUE
          GO TO 458
   C
  C     .TEST PAGE
    377 IF(IFNOTE.NE.0)GO TO 381
         IF(NEWPAG.NE.0)GO TO 382
         IF(KNTTOP.LT.0)GO TO 382
         IF(IFPAGE.LE.0)GO TO 381
         IF(ISKIP.GT.0)IVALUE=IVALUE+ISKIP
      378 LFTOVR=LNGPAG-LOCPAG
        IF((LFTOVR-IVALUE).LT.0)GO TO 383
          IF(IFNRDY.LE.0)GO TO 381
         IF(IDEFER.GT.0)GO TO 381
         IF((LOCPAG+KNDLIN).GE.LNGPAG)GO TO 381
          IF(IFNHAV.EQ.0)GO TO 380
         IF(IRECRD.NE.3)GO TO 380
         IF(JFNOPN.LT.0)GO TO 379
         IF(IFNRED.GE.IFNBGN)GO TO 380
         IFNHAV=0
          IFNRED=IFNRED+1
        IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
        GO TO 380
     379 IF(JFNRED.GE.JFNBGN)GO TO 380
         IFNHAV=0
          JFNRED=JFNRED+1
        IFNTTL=IFNTTL-NXTFTN
        IFNRDY=IFNRDY-NXTFTN
    380 I=KNDLIN
          IF(I.LT.(ISPACE+KFNGAP))I=ISPACE+KFNGAP
         LFTOVR=LNGPAG-LOCPAG-IFNRDY-IFNGAP-I
       IF((LFTOVR-IVALUE).LT.0)GO TO 383
    C     LINES FIT CURRENT PAGE
  381 IF(KOMAND.EQ.54)GO TO 178
        IF(KOMAND.EQ.503)GO TO 178
       IF(KOMAND.EQ.160)GO TO 361
       IF(KOMAND.EQ.106)GO TO 120
       IF(KOMAND.EQ.110)GO TO 120
       GO TO 543
   C     LINES DO NOT FIT CURRENT PAGE
     382 LFTOVR=0
      383 IF(KOMAND.EQ.54)GO TO 180
        IF(KOMAND.EQ.503)GO TO 180
       IF(KOMAND.EQ.160)GO TO 362
       IF(KOMAND.EQ.106)GO TO 121
       IF(KOMAND.EQ.110)GO TO 123
       GO TO 285
   C
  C     .TEST SPACE
   384 IF(IVALUE.LE.0)GO TO 543
         IVALUE=IVALUE+((IVALUE-1)*ISPACE)
          GO TO 377
   C
  C     .UNDERLINE
    385 ITLALL=-1
         ITLLIN=1
          GO TO 543
   C
  C     .UNDERLINE SPACE
   386 IULSPC=-1
         GO TO 543
   C
  C     .UPPER CASE, CORRESPONDS TO ^^ IN TEXT
      387 KASALL=0
          GO TO 543
   C
  C     ***********************************************
C     *                                             *
C     *  THE VARIOUS VERSIONS OF THE TITLE COMMAND  *
C     *                                             *
C     ***********************************************
C
  C     .LEFT TOP TITLE
    388 KNDTTL(9)=2
       GO TO 390
     389 KNDTTL(9)=3
   390 LOCLFT=1
          GO TO 418
   C
  C     .RIGHT TOP TITLE
   391 KNDTTL(10)=2
      GO TO 393
     392 KNDTTL(10)=3
  393 LOCLFT=2
          GO TO 418
   C
  C     .LEFT TOP SUB TITLE
     394 LOCLFT=3
          KNDTTL(11)=1
      GO TO 418
   C
  C     .RIGHT TOP SUB TITLE
    395 LOCLFT=4
          KNDTTL(12)=1
      GO TO 418
   C
  C     .TOP TITLE
    396 LOCLFT=1
          KNDTTL(9)=2
       KNDTTL(10)=2
      GO TO 407
   C
  C     .TOP SUB TITLE
     397 LOCLFT=3
          KNDTTL(11)=1
      KNDTTL(12)=1
      GO TO 407
   C
  C     .LEFT BOTTOM TITLE
      398 LOCLFT=5
          GO TO 427
   C
  C     .RIGHT BOTTOM TITLE
     399 LOCLFT=6
          GO TO 427
   C
  C     .LEFT BOTTOM SUB TITLE
  400 LOCLFT=7
          GO TO 427
   C
  C     .RIGHT BOTTOM SUB TITLE
      401 LOCLFT=8
          GO TO 427
   C
  C     .BOTTOM TITLE
      402 LOCLFT=5
          GO TO 413
   C
  C     .BOTTOM SUB TITLE
  403 LOCLFT=7
          GO TO 413
   C
  C     .TITLE
   404 KOMAND=9
      405 LOCLFT=1
          KNDTTL(9)=3
       KNDTTL(10)=3
      GO TO 407
   C
  C     .SUBTITLE
     406 LOCLFT=3
          KNDTTL(11)=3
      KNDTTL(12)=3
      GO TO 407
   C
  C     CHECK IF BOTH TOP TITLES OR TOP SUBTITLES CAN BE
    C     APPLIED IMMEDIATELY OR SHOULD BE STORED
     407 IF(KNTTOP.LT.0)GO TO 408
         IF(NEWPAG.EQ.0)GO TO 410
     408 IF(IFNOTE.NE.0)GO TO 409
         IF(LNGMID.NE.0)GO TO 412
         GO TO 410
     409 IF(LNGFTN.NE.0)GO TO 412
     410 IF(LOCLFT.NE.1)GO TO 411
         KNDLFT=KNDTTL(9)-2
          KNDRIT=KNDTTL(10)-2
         KNDTTL(9)=0
       KNDTTL(10)=0
      GO TO 417
     411 IFLSUB=KNDTTL(11)-2
         IFRSUB=KNDTTL(12)-2
         KNDTTL(11)=0
      KNDTTL(12)=0
      GO TO 417
     412 LOCLFT=LOCLFT+8
        GO TO 417
   C
  C     CHECK IF BOTH BOTTOM TITLES OR SUBTITLES CAN BE
C     APPLIED IMMEDIATELY OR SHOULD BE STORED
     413 IF(KNTTOP.GT.0)GO TO 416
         IF(NEWPAG.NE.0)GO TO 417
     414 IF(IFNOTE.NE.0)GO TO 415
         IF(LNGMID.NE.0)GO TO 416
         GO TO 417
     415 IF(LNGFTN.NE.0)GO TO 416
         GO TO 417
     416 LOCLFT=LOCLFT+8
        KNDTTL(LOCLFT)=1
       KNDTTL(LOCLFT+1)=1
    C
  C     CANCEL RIGHT TITLE IF BOTH ARE TO BE CANCELLED
   417 NOWARG=1
          LOCLFT=(5*LOCLFT)-4
         LSTTTL(LOCLFT+5)=0
          LSTTTL(LOCLFT+6)=0
          LSTTTL(LOCLFT+7)=-1
         LSTTTL(LOCLFT+8)=-1
         LSTTTL(LOCLFT+9)=-1
         GO TO 432
   C
  C     CHECK IF SINGLE TOP TITLE OR TOP SUBTITLE CAN BE
    C     APPLIED IMMEDIATELY OR SHOULD BE STORED
     418 IF(KNTTOP.LT.0)GO TO 419
         IF(NEWPAG.EQ.0)GO TO 421
     419 IF(IFNOTE.NE.0)GO TO 420
         IF(LNGMID.NE.0)GO TO 426
         GO TO 421
     420 IF(LNGFTN.NE.0)GO TO 426
     421 GO TO(422,423,424,425),LOCLFT
     422 KNDLFT=KNDTTL(9)-2
          KNDTTL(9)=0
       GO TO 431
     423 KNDRIT=KNDTTL(10)-2
         KNDTTL(10)=0
      GO TO 431
     424 IFLSUB=KNDTTL(11)-2
         KNDTTL(11)=0
      GO TO 431
     425 IFRSUB=KNDTTL(12)-2
         KNDTTL(12)=0
      GO TO 431
     426 LOCLFT=LOCLFT+8
        GO TO 431
   C
  C     CHECK IF SINGLE BOTTOM TITLE OR SUBTITLE CAN BE
C     APPLIED IMMEDIATELY OR SHOULD BE STORED
     427 IF(KNTTOP.GT.0)GO TO 430
         IF(NEWPAG.NE.0)GO TO 431
     428 IF(IFNOTE.NE.0)GO TO 429
         IF(LNGMID.NE.0)GO TO 430
         GO TO 431
     429 IF(LNGFTN.NE.0)GO TO 430
         GO TO 431
     430 LOCLFT=LOCLFT+8
        KNDTTL(LOCLFT)=1
 C
  C     CANCEL A SINGLE TITLE, NOT BOTH
   431 NOWARG=0
          LOCLFT=(5*LOCLFT)-4
     432 LSTTTL(LOCLFT)=0
       LSTTTL(LOCLFT+1)=0
          LSTTTL(LOCLFT+2)=-1
         LSTTTL(LOCLFT+3)=-1
         LSTTTL(LOCLFT+4)=-1
   C
  C     GARBAGE COLLECT THE TITLE STORAGE
          LNGTTL=0
          IFOUND=0
          J=2
          DO 434 I=1,16
          IF(LSTTTL(J).GT.LSTTTL(J+3))GO TO 434
      IF(IFOUND.EQ.0)GO TO 433
         IF(LSTTTL(J).GE.JFIRST)GO TO 434
  433 IFOUND=1
          JFIRST=LSTTTL(J)
       JFINAL=LSTTTL(J+3)
      434 J=J+5
        GO TO 438
     435 IFOUND=0
          J=2
          DO 437 I=1,16
          IF(LSTTTL(J).GT.LSTTTL(J+3))GO TO 437
      IF(LSTTTL(J).LE.IFINAL)GO TO 437
      IF(IFOUND.EQ.0)GO TO 436
         IF(JFIRST.LE.LSTTTL(J))GO TO 437
  436 JFIRST=LSTTTL(J)
       JFINAL=LSTTTL(J+3)
          IFOUND=1
      437 J=J+5
    438 IF(IFOUND.EQ.0)GO TO 443
         NEEDED=JFIRST-LNGTTL-1
      IF(NEEDED.EQ.0)GO TO 441
         J=2
          DO 439 I=1,16
          IF(LSTTTL(J).GT.LSTTTL(J+3))GO TO 439
      IF(LSTTTL(J).NE.JFIRST)GO TO 439
      LSTTTL(J)=LNGTTL+1
          LSTTTL(J+1)=LSTTTL(J+1)-NEEDED
        LSTTTL(J+2)=LSTTTL(J+2)-NEEDED
        LSTTTL(J+3)=LSTTTL(J+3)-NEEDED
    439 J=J+5
        DO 440 I=JFIRST,JFINAL
      LNGTTL=LNGTTL+1
        MSKTTL(LNGTTL)=MSKTTL(I)
         LTRTTL(LNGTTL)=LTRTTL(I)
     440 CONTINUE
          GO TO 442
     441 LNGTTL=JFINAL
      442 IFINAL=JFINAL
          GO TO 435
     443 CONTINUE
    C
  C     STORE NEW TITLE OR NEW SUBTITLE
       NEWARG=0
          LSTTTL(LOCLFT)=1
       LSTTTL(LOCLFT+1)=LNGTTL+1
    444 NEWARG=NEWARG+1
        IF(NEWARG.GT.3)GO TO 454
         IF(NEWARG.GT.KNTARG)GO TO 453
         IF(NMINUS(NEWARG).LE.0)GO TO 453
      IFIRST=NVALUE(NEWARG)
       IFINAL=IFIRST+NMINUS(NEWARG)-1
    445 IF(IFIRST.GT.IFINAL)GO TO 452
         IF(LNGTTL.GE.LMTTTL)GO TO 452
         LTRNOW=LTRBGN(IFIRST)
       IF(KOMAND.EQ.9)GO TO 446
         IF(KOMAND.EQ.15)GO TO 446
        IF(MRKTTL.LE.0)GO TO 446
         IF(LTRNOW.NE.LTRPUT)GO TO 446
         MSKBIT=MSKBGN(IFIRST)
       IF(MSKBIT.EQ.0)GO TO 448
         CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 448
     446 LNGTTL=LNGTTL+1
        MSKTTL(LNGTTL)=MSKBGN(IFIRST)
         LTRTTL(LNGTTL)=LTRBGN(IFIRST)
         MSKBIT=MSKBGN(IFIRST)
       IF(MSKBIT.EQ.0)GO TO 451
         CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 447
         IF(LSTTTL(LOCLFT).EQ.1)LSTTTL(LOCLFT)=2
         IF(LSTTTL(LOCLFT).EQ.4)LSTTTL(LOCLFT)=3
     447 MSKBIT=MSKBGN(IFIRST)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 451
         IF(LSTTTL(LOCLFT).EQ.1)LSTTTL(LOCLFT)=4
         IF(LSTTTL(LOCLFT).EQ.2)LSTTTL(LOCLFT)=3
         GO TO 451
     448 LNGTTL=LNGTTL+1
        IF(IFIRST.GE.IFINAL)GO TO 450
         MSKBIT=MSKBGN(IFIRST+1)
          CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 450
         LTRNOW=LTRBGN(IFIRST+1)
          DO 449 J=1,10
          IF(LTRNOW.NE.LTRDGT(J))GO TO 449
      IFIRST=IFIRST+1
        MSKTTL(LNGTTL)=-1-J
         GO TO 451
     449 CONTINUE
      450 MSKTTL(LNGTTL)=-2
  451 IFIRST=IFIRST+1
        GO TO 445
     452 CONTINUE
      453 I=LOCLFT+NEWARG+1
      LSTTTL(I)=LNGTTL
       GO TO 444
     454 IF(KOMAND.NE.9)GO TO 455
         IF(LNGTTL.GE.LMTTTL)GO TO 455
         LNGTTL=LNGTTL+1
        MSKTTL(LNGTTL)=-1
      LSTTTL(LOCLFT+4)=LNGTTL
      455 IF(LSTTTL(LOCLFT+1).LE.LSTTTL(LOCLFT+4))GO TO 456
         LSTTTL(LOCLFT)=0
       LSTTTL(LOCLFT+1)=0
          LSTTTL(LOCLFT+2)=-1
         LSTTTL(LOCLFT+3)=-1
         LSTTTL(LOCLFT+4)=-1
     456 IF(NOWARG.EQ.0)GO TO 458
         DO 457 I=1,5
      LSTTTL(LOCLFT+5)=LSTTTL(LOCLFT)
       LOCLFT=LOCLFT+1
    457 CONTINUE
    C
  C     CALCULATE SIZE OF TOP AND BOTTOM MARGINS
    458 CALL RNOHIH(LSTTTL,MRGTOP,KTRMNL,LNGTOP,ITTLHI,
     1ISUBHI,IGAPHI,MINTOP,IFLSUB,IFRSUB)
        CALL RNOLOW(LSTTTL,IGAPLO,KTRMNL,LNGBOT,ITTLLO,
     1ISUBLO)
      LNGPAG=MAXLIN-LNGBOT
        IF(LNGPAG.LE.0)LNGPAG=58
   C
  C     DETERMINE LINE GAP NEEDED FOR FOOTNOTE RULE
      459 KFNGAP=MFNGAP
          JFNGAP=NFNGAP
          IFNGAP=0
          IF(LNGFNR.EQ.0)GO TO 464
         IF(KTRMNL.NE.0)GO TO 463
         NEEDED=LNGFNR
          IF(LNGFNR.LT.0)NEEDED=1
          IF(KFNGAP.GT.0)GO TO 461
         DO 460 I=1,NEEDED
      MSKBIT=MSKFNR(I)
       IF(MSKBIT.EQ.0)GO TO 460
         CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 460
         KFNGAP=1
          GO TO 461
     460 CONTINUE
      461 IF(JFNGAP.GT.0)GO TO 463
         DO 462 I=1,NEEDED
      MSKBIT=MSKFNR(I)
       IF(MSKBIT.EQ.0)GO TO 462
         CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 462
         JFNGAP=1
          GO TO 463
     462 CONTINUE
      463 IFNGAP=1+JFNGAP
    464 GO TO 543
   C
  C     .NO SUBTITLE
  465 IFLSUB=0
          LSTTTL(11)=0
      LSTTTL(12)=0
      LSTTTL(13)=-1
          LSTTTL(14)=-1
          LSTTTL(15)=-1
          IFRSUB=0
          LSTTTL(16)=0
      LSTTTL(17)=0
      LSTTTL(18)=-1
          LSTTTL(19)=-1
          LSTTTL(20)=-1
          GO TO 458
   C
  C     ******************************
  C     *                            *
  C     *  MISCELLANEOUS OPERATIONS  *
  C     *                            *
  C     ******************************
  C
    466 I=KOMAND-500
      GO TO(467,469,174,543,487,506,507,524,533,470,
      1471,472,484),I
         GO TO 543
   C
  C     TURN OFF DEFERRED FOOTNOTES SO CAN GENERATE FOOTNOTES
      467 IF(IDEFER.EQ.0)GO TO 543
         IF(NXTONE.EQ.94)GO TO 468
        IF(NXTONE.EQ.132)GO TO 468
       IDEFER=-2
         IF(KNTTOP.LT.0)GO TO 543
         IF(NEWPAG.EQ.0)NEWPAG=1
          IF(NEWPAG.GT.0)ISKIP=-1
          GO TO 543
     468 IDEFER=-5
         IF(KNTTOP.LT.0)IDEFER=-6
         IF(NEWPAG.NE.0)IDEFER=-6
         GO TO 543
   C
  C     TURN DEFERRED FOOTNOTES BACK ON AFTER GENERATION
      469 IF(IDEFER.NE.0)IDEFER=1
          GO TO 543
   C
  C     INSERT MOVABLE PAGES BEFORE APPLYING ANY PAGE COMMAND
      470 IF(IDFRPG.LE.0)GO TO 543
         CALL RNOTOP
       CALL RNOBOT
       IDFRPG=IDFRPG-1
        GO TO 470
   C
  C     INSERT RULED LINE
  471 MAJOR=MAJOR+2
      472 LNGMID=0
          IF(ISKIP.LE.0)GO TO 474
          IF(IFPAGE.LE.0)GO TO 473
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 473
      IF(NEWPAG.EQ.0)NEWPAG=1
          ISKIP=-1
          GO TO 474
     473 MAJOR=MAJOR-2
          GO TO 543
     474 LNGMID=0
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
          NEEDED=MRGLFT
          IF(KNTARG.LT.2)GO TO 476
         IF(NMINUS(2).EQ.0)GO TO 476
      IF(NMINUS(2).LT.0)GO TO 475
      NEEDED=NVALUE(2)
       GO TO 476
     475 NEEDED=MRGLFT+NVALUE(2)
      476 IF(NEEDED.LE.0)GO TO 477
         IF(LNGMID.GE.LMTMID)GO TO 483
         NEEDED=NEEDED-1
        LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRSPA
       MSKMID(LNGMID)=0
       GO TO 476
     477 NEEDED=MRGRIT
          IF(KNTARG.LT.3)GO TO 479
         IF(NMINUS(3).EQ.0)GO TO 479
      IF(NMINUS(3).LT.0)GO TO 478
      NEEDED=NVALUE(3)
       GO TO 479
     478 NEEDED=MRGRIT+NVALUE(3)
      479 IF(NEEDED.GT.LMTMID)NEEDED=LMTMID
      480 IF(LNGMID.GE.NEEDED)GO TO 483
         IF(IMINUS.GT.0)GO TO 481
         LNGMID=LNGMID+1
        LTRMID(LNGMID)=1H-
          MSKMID(LNGMID)=0
       GO TO 480
     481 J=IVALUE
          DO 482 I=1,IMINUS
      IF(LNGMID.GE.NEEDED)GO TO 483
         LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRBGN(J)
         MSKMID(LNGMID)=MSKBGN(J)
         J=J+1
    482 CONTINUE
          GO TO 480
     483 CONTINUE
          GO TO 543
   C
  C     END LITERAL COMMAND
   C     DETERMINE IF OBJECT NEEDS TO BE COMPLETED
   484 IF(JFILL.NE.6)GO TO 543
          IF(LSTTRN.EQ.0)GO TO 543
         IF(IFFILL.NE.0)GO TO 543
         GO TO 485
   C
  C     WHERE THE COMMAND SEQUENCE HAS AN EMBEDDED ZERO,
    C     AND ARE EXECUTING COMMANDS BEFORE THE EMBEDDED ZERO,
C     ADVANCE SO THAT THE NEXT ITEM EXECUTED WILL BE THE
  C     FIRST ITEM AFTER THE EMBEDDED ZERO.
    485 IF(NXTCMD(MAJOR).EQ.0)GO TO 486
       MAJOR=MAJOR+1
          GO TO 485
     486 MAJOR=MAJOR+1
          GO TO 543
   C
  C     *****************************************************
    C     *                                                   *
    C     *  INSERT FOOTNOTE COUNT INTO TEXT BEFORE FOOTNOTE  *
    C     *                                                   *
    C     *****************************************************
    C
  C     CHECK IF FOOTNOTE NUMBER CAUSES OVERFLOW OF LINE
      487 IF(IFNOTE.NE.0)GO TO 523
         IF(NUMFTN.EQ.0)GO TO 523
         LNGFTN=0
          IF(LNGMID.LE.0)GO TO 505
         IF(KMPPAG.NE.KNTPAG)GO TO 488
         IF(KMPLIN.NE.LOCPAG)GO TO 488
         IF(KMPCLM.NE.LNGMID)GO TO 488
         LNGMID=INICLM
          KONECT=-1
     488 IF(KONECT.NE.0)GO TO 490
         IF(IFNREF.GE.2)GO TO 489
         IF(JFILL.NE.0)GO TO 543
          GO TO 490
     489 KONECT=1
      490 LNGWRK=0
          IF(LTRREF(1).NE.LTRSPA)LNGWRK=1
       IF(KONECT.LT.0)LNGWRK=1
          CALL RNONUM(MRKREF,KNTFTN,LTRWRK,LNGWRK,LMTWRK)
      IF(LTRREF(2).NE.LTRSPA)LNGWRK=LNGWRK+1
          NEEDED=0
          IF(KONECT.NE.0)GO TO 493
         NEEDED=1
          IF(IPEROD.EQ.0)GO TO 492
         MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 492
         LTRNOW=LTRMID(LNGMID)
       DO 491 I=1,4
      IF(LTRNOW.NE.LTRTWO(I))GO TO 491
      NEEDED=2
          GO TO 492
     491 CONTINUE
      492 CONTINUE
      493 IF((LNGMID+LNGWRK+NEEDED).GT.MRGRIT)GO TO 495
  C
  C     INSERT SEPARATING SPACES IF PRECEDING WORD AND THE
  C     REFERENCE FIT ON LINE AND NO .NO SPACE GIVEN
         IF(NEEDED.LE.0)GO TO 514
         KNTSPC=KNTSPC+1
        DO 494 I=1,NEEDED
      LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRSPA
       MSKBIT=0
          CALL RNOPAK(1,MSKBIT)
       MSKMID(LNGMID)=MSKBIT
   494 CONTINUE
          GO TO 514
   C
  C     STORE RIGHT WORD IF FOOTNOTE NUMBER OVERFLOWS LINE
    495 IF(KONECT.EQ.0)GO TO 499
         IF(KNTSPC.LE.0)GO TO 514
     496 IF(LNGMID.LE.0)GO TO 513
         MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 497
         LNGFTN=LNGFTN+1
        LTRFTN(LNGFTN)=LTRMID(LNGMID)
         MSKFTN(LNGFTN)=MSKMID(LNGMID)
         LNGMID=LNGMID-1
        GO TO 496
     497 LNGMID=LNGMID-1
        IF(LNGMID.LE.0)GO TO 498
         MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 497
   C
  C     JUSTIFY OLD TEXT IF FOOTNOTE NUMBER OVERFLOWS LINE
    498 IF(JFILL.NE.0)GO TO 543
          KNTSPC=KNTSPC-1
    499 IREVRS=-IREVRS
         IF(LNGMID.GE.MRGRIT)GO TO 543
         IF(KNTSPC.LE.0)GO TO 543
         IF(JSTIFY.EQ.0)GO TO 543
         IGROUP=(MRGRIT-LNGMID)/KNTSPC
         JGROUP=MRGRIT-LNGMID-(KNTSPC*IGROUP)
       IF(IREVRS.GT.0)JGROUP=JGROUP-KNTSPC-1
      J=MRGRIT
      500 MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 503
         JGROUP=JGROUP+IREVRS
        NEEDED=IGROUP
          IF(JGROUP.GE.0)NEEDED=IGROUP+1
        IF(NEEDED.LE.0)GO TO 502
         DO 501 I=1,NEEDED
      LTRMID(J)=LTRSPA
       MSKMID(J)=MSKMID(LNGMID)
     501 J=J-1
        IF(J.LE.LNGMID)GO TO 504
     502 LTRMID(J)=LTRMID(LNGMID)
         MSKMID(J)=MSKMID(LNGMID)
         J=J-1
        LNGMID=LNGMID-1
        MSKBIT=MSKMID(LNGMID)
       CALL RNOUNP(1,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 502
     503 LTRMID(J)=LTRMID(LNGMID)
         MSKMID(J)=MSKMID(LNGMID)
         J=J-1
        LNGMID=LNGMID-1
        GO TO 500
     504 LNGMID=MRGRIT
          GO TO 543
   C
  C     OUTPUT LINE SPACING BEFORE NUMBER WHICH CAUSED OVERFLOW
    505 MAJOR=MAJOR+2
      506 MAJOR=MAJOR+2
      507 LNGMID=0
          IF(ISKIP.LE.0)GO TO 509
          IF(IFPAGE.LE.0)GO TO 508
         IF((LOCPAG+ISKIP).LT.LNGPAG)GO TO 508
      IF(NEWPAG.EQ.0)NEWPAG=1
          ISKIP=-1
          GO TO 509
     508 MAJOR=MAJOR-2
          GO TO 543
   C
  C     RESTORE RIGHTMOST WORD IN LINE IF FOOTNOTE NUMBER
   C     WOULD HAVE CAUSED THE LINE TO OVERFLOW.
     509 KNTSPC=0
          NEEDED=MRGLFT
          IF(NEEDED.GT.(LMTMID-LNGFTN))NEEDED=LMTMID-LNGFTN
         IF(NEEDED.LE.0)GO TO 511
         DO 510 I=1,NEEDED
      LNGMID=LNGMID+1
        MSKMID(LNGMID)=0
       LTRMID(LNGMID)=LTRSPA
       IF(LNGMID.EQ.NOWBAR)LTRMID(LNGMID)=LTRBAR
   510 CONTINUE
      511 IF(LNGFTN.LE.0)GO TO 512
         IF(LNGMID.GE.LMTMID)GO TO 522
         LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRFTN(LNGFTN)
         MSKMID(LNGMID)=MSKFTN(LNGFTN)
         LNGFTN=LNGFTN-1
        GO TO 511
     512 IF(KONECT.LT.0)INICLM=LNGMID
          GO TO 515
   C
  C     INSERT FOOTNOTE NUMBER INTO TEXT BEFORE FOOTNOTE
      513 LNGMID=LNGFTN
      514 MAJOR=MAJOR+4
      515 LNGWRK=0
          IF(KONECT.GE.0)GO TO 516
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=1H-
          IF(KNTFTN.EQ.KMPVAL)LTRWRK(LNGWRK)=1H,
          GO TO 517
     516 IF(LTRREF(1).EQ.LTRSPA)GO TO 517
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRREF(1)
     517 CALL RNONUM(MRKREF,KNTFTN,LTRWRK,LNGWRK,LMTWRK)
      IF(KONECT.GE.0)KMPVAL=KNTFTN+1
        IF(KONECT.GE.0)INICLM=LNGMID+LNGWRK
        IF(LTRREF(2).EQ.LTRSPA)GO TO 518
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRREF(2)
     518 IF((LNGMID+LNGWRK).GT.LMTMID)GO TO 522
          IF(NOWBAR.NE.0)IFABAR=NOWBAR
          MSKBIT=0
          IF(IFNREF.EQ.1)GO TO 519
         IF(IFNREF.NE.3)GO TO 520
     519 CALL RNOPAK(4,MSKBIT)
   520 DO 521 I=1,LNGWRK
      LNGMID=LNGMID+1
        LTRMID(LNGMID)=LTRWRK(I)
         MSKMID(LNGMID)=MSKBIT
   521 CONTINUE
          KMPPAG=KNTPAG
          KMPLIN=LOCPAG
          KMPCLM=LNGMID
      522 KONECT=0
          GO TO 543
     523 MAJOR=MAJOR+4
          GO TO 543
   C
  C     **********************
C     *                    *
C     *  FLOATING FIGURES  *
C     *                    *
C     **********************
C
  C     .DEFER FIGURE, DETERMINE IF NEED NEW PAGE
   524 IF(IMINUS.EQ.0)IVALUE=1
          IF(IVALUE.LE.0)GO TO 531
   C     IF(KDFRFG.GT.0)KDFRFG=KDFRFG+ISPACE
  C     IVALUE=IVALUE+KDFRFG
  C     KDFRFG=0
          NVALUE(1)=IVALUE
       IF(IFNOTE.NE.0)GO TO 527
         IF(LNGMID.LE.0)GO TO 530
         IF(NXTFIG.GT.0)GO TO 532
         IF(JDFRFG.GT.0)GO TO 532
         IF(NEWPAG.NE.0)GO TO 529
         IF(KNTTOP.LT.0)GO TO 529
         IF(IFPAGE.LE.0)GO TO 527
   C     CHECK HOW MUCH ROOM REMAINS ON CURRENT PAGE
          IVALUE=1+ISPACE
        NVALUE(3)=IFNBGN
       NVALUE(4)=JFNBGN
       NVALUE(5)=IFNRDY
       NVALUE(6)=KNDLIN
       GO TO 537
   C     CURRENT LINE WILL FIT CURRENT PAGE
     525 I=NVALUE(1)
       IF(KDFRFG.GT.0)I=I+KDFRFG+ISPACE
      IF((LFTOVR-IVALUE).LT.I)GO TO 532
    C     CURRENT LINE AND FIGURE WILL FIT, BUT INSURE THAT
   C     FOOTNOTES ON CURRENT LINE WOULD NOT PREVENT FIGURE
        IFNBGN=IFNRIT
          JFNBGN=JFNRIT
          IFNRDY=IFNTTL
          KNDLIN=ISPACE+KFNGAP
        KOMAND=0
          IVALUE=1+ISPACE
        GO TO 537
     526 I=NVALUE(1)
       IF(KDFRFG.GT.0)I=I+KDFRFG+ISPACE
      IF((LFTOVR-IVALUE).LT.I)GO TO 532
      527 MAJOR=MAJOR+2
          IF(KDFRFG.GT.0)KDFRFG=KDFRFG+ISPACE
        KDFRFG=KDFRFG+NVALUE(1)
          GO TO 543
   C     CURRENT LINE WILL NOT FIT CURRENT PAGE
      528 IF((LFTOVR-IVALUE+ISPACE).GE.0)GO TO 532
  C     GENERATE END OF PAGE, THEN TRY AGAIN
   529 NVALUE(2)=LNGMID
       LNGMID=0
          GO TO 543
   C     THERE WAS A BREAK BEFORE COMMAND
  530 KOMAND=110
        MAJOR=MAJOR+2
          GO TO 122
   C     ZERO ARGUMENT, CANCEL OPERATIONS
  531 MAJOR=MAJOR+2
          GO TO 543
   C     FIGURE WILL NOT FIT ON CURRENT PAGE
    532 MAJOR=MAJOR+2
          IF(JDFRFG.GT.0)JDFRFG=JDFRFG+ISPACE
        JDFRFG=JDFRFG+NVALUE(1)
          GO TO 543
   C
  C     .DEFER FIGURE
    C     AFTER FORCING THE NEW PAGE, CHECK IF ROOM ON PAGE
   C     FIRST CALCULATE THE LINE POSITION OF TOP LINE ON PAGE
      533 LNGMID=NVALUE(2)
       LOCPAG=0
          ISKIP=-1
          IF(IFHEAD.EQ.0)GO TO 534
         I=0
          IF(LSTTTL(2).LE.LSTTTL(5))I=1
         IF(LSTTTL(7).LE.LSTTTL(10))I=1
        J=0
          IF(IFLSUB.GT.0)J=1
          IF(IFRSUB.GT.0)J=1
          IF(LSTTTL(12).LE.LSTTTL(15))J=1
       IF(LSTTTL(17).LE.LSTTTL(20))J=1
       NEEDED=MRGTOP+I+J
      IF(NEEDED.GT.MRGTOP)NEEDED=NEEDED+IGAPHI
        IF(NEEDED.LT.MINTOP)NEEDED=MINTOP
          IF(NEEDED.LE.0)GO TO 534
         LOCPAG=NEEDED
    C     PREPARE TO CHECK HOW MUCH ROOM REMAINS ON THE PAGE
    534 IVALUE=1+NVALUE(1)+ISPACE
        NVALUE(3)=IFNBGN
       NVALUE(4)=JFNBGN
       NVALUE(5)=IFNRDY
       NVALUE(6)=KNDLIN
       IFNBGN=IFNRIT
          JFNBGN=JFNRIT
          IFNRDY=IFNTTL
          KNDLIN=ISPACE+KFNGAP
        GO TO 538
   C     FIGURE WILL FIT ONTO CURRENT PAGE
      535 LOCPAG=0
          IF(KDFRFG.GT.0)KDFRFG=KDFRFG+ISPACE
        KDFRFG=KDFRFG+NVALUE(1)
          GO TO 543
   C     FIGURE WILL NOT FIT ONTO NEW PAGE
      536 LOCPAG=0
          IF(JDFRFG.GT.0)JDFRFG=JDFRFG+ISPACE
        JDFRFG=JDFRFG+NVALUE(1)
          GO TO 543
   C
  C     TEST PAGE FOR THE DEFER FIGURE COMMAND
      537 IF(ISKIP.GT.0)IVALUE=IVALUE+ISKIP
      538 LFTOVR=LNGPAG-LOCPAG
        IF((LFTOVR-IVALUE).LT.0)GO TO 542
          IF(IFNRDY.LE.0)GO TO 541
         IF(IDEFER.GT.0)GO TO 541
         IF((LOCPAG+KNDLIN).GE.LNGPAG)GO TO 541
          LFTOVR=IFNRDY
          IF(IFNHAV.EQ.0)GO TO 540
         IF(IRECRD.NE.3)GO TO 540
         IF(JFNOPN.LT.0)GO TO 539
         IF(IFNRED.GE.IFNBGN)GO TO 540
         LFTOVR=LFTOVR-NXTFTN
        GO TO 540
     539 IF(JFNRED.GE.JFNBGN)GO TO 540
         LFTOVR=LFTOVR-NXTFTN
    540 I=KNDLIN
          IF(I.LT.(ISPACE+KFNGAP))I=ISPACE+KFNGAP
         LFTOVR=LNGPAG-LOCPAG-LFTOVR-IFNGAP-I
       IF((LFTOVR-IVALUE).LT.0)GO TO 542
    C     LINES FIT CURRENT PAGE
  541 IFNBGN=NVALUE(3)
       JFNBGN=NVALUE(4)
       IFNRDY=NVALUE(5)
       KNDLIN=NVALUE(6)
       IF(KOMAND.EQ.0)GO TO 526
         IF(KOMAND.EQ.508)GO TO 525
       GO TO 535
   C     LINES DO NOT FIT CURRENT PAGE
     542 IFNBGN=NVALUE(3)
       JFNBGN=NVALUE(4)
       IFNRDY=NVALUE(5)
       KNDLIN=NVALUE(6)
       IF(KOMAND.EQ.0)GO TO 532
         IF(KOMAND.EQ.508)GO TO 528
       GO TO 536
   C
  C     COMMAND COMPLETED
  543 RETURN
       END
          SUBROUTINE RNONUM(KONTRL,NUMBER,LETTER,KOUNT,MAX)
   C     RENBR(/REPRESENT NUMBER AS LETTERS, ROMAN OR ARABIC)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION LETTER(MAX),LTRABC(26),LWRABC(26),
        1LTRDGT(10),LTRROM(7),LWRROM(7)
        DATA LTRROM/1HI,1HV,1HX,1HL,1HC,1HD,1HM/
        DATA LWRROM/1Hi,1Hv,1Hx,1Hl,1Hc,1Hd,1Hm/
        DATA LTRABC /1HA,1HB,1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,
         1 1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,1HU,1HV,1HW,
         2 1HX,1HY,1HZ/
          DATA LWRABC /1Ha,1Hb,1Hc,1Hd,1He,1Hf,1Hg,1Hh,1Hi,1Hj,
         1 1Hk,1Hl,1Hm,1Hn,1Ho,1Hp,1Hq,1Hr,1Hs,1Ht,1Hu,1Hv,1Hw,
         2 1Hx,1Hy,1Hz/
          DATA LTRDGT /1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9/
    C
  C     DECIDE TYPE OF NUMBERING DESIRED
      IF(NUMBER.EQ.0)GO TO 18
          IF(KONTRL.LE.0)GO TO 20
          IF(KONTRL.LE.3)GO TO 10
          IF(KONTRL.GE.7)GO TO 10
    C
  C     ********************
  C     *                  *
  C     *  ROMAN NUMERALS  *
  C     *                  *
  C     ********************
  C
  C     DISECT NUMBER
          IF(NUMBER.GT.3999)GO TO 20
       IF(NUMBER.LE.0)GO TO 20
          INIUSD=KOUNT+1
         LFTOVR=NUMBER
          IROMAN=-1
         KASROM=KONTRL-4
        IF(KASROM.EQ.1)KASROM=-1
       1 IF(LFTOVR.LE.0)GO TO 20
          NXTDGT=LFTOVR
          LFTOVR=LFTOVR/10
       IF(KASROM.GT.0)KASROM=LFTOVR
          NXTDGT=NXTDGT-10*LFTOVR
          IROMAN=IROMAN+2
        JROMAN=0
          IF(NXTDGT.LE.3)GO TO 2
      JROMAN=IROMAN+1
        NXTDGT=NXTDGT-5
        IF(NXTDGT.NE.4)GO TO 2
      JROMAN=JROMAN+1
        NXTDGT=-1
   C
  C     MOVE PREVIOUS DIGITS TO RIGHT
       2 JJ=NXTDGT
         IF(NXTDGT.EQ.-1)JJ=1
        IF(JROMAN.NE.0)JJ=JJ+1
      KK=KOUNT
        3 IF(KK.LT.INIUSD)GO TO 4
          LL=KK+JJ
          LETTER(LL)=LETTER(KK)
       KK=KK-1
      GO TO 3
    4 KOUNT=KOUNT+JJ
   C
  C     INSERT INITIAL ONE'S CHARACTER
        IF(NXTDGT.NE.-1)GO TO 6
          IF(KK.GE.MAX)GO TO 19
       KK=KK+1
      IF(KASROM.NE.0)GO TO 5
      LETTER(KK)=LTRROM(IROMAN)
        KASROM=KONTRL-4
        GO TO 6
    5 LETTER(KK)=LWRROM(IROMAN)
  C
  C     INSERT FIVE'S OR TEN'S CHARACTER
    6 IF(JROMAN.EQ.0)GO TO 8
      IF(KK.GE.MAX)GO TO 19
       KK=KK+1
      IF(KASROM.NE.0)GO TO 7
      LETTER(KK)=LTRROM(JROMAN)
        KASROM=KONTRL-4
        GO TO 8
    7 LETTER(KK)=LWRROM(JROMAN)
  C
  C     INSERT UP TO 3 ONE'S CHARACTERS
     8 IF(NXTDGT.LE.0)GO TO 1
      IF(KK.GE.MAX)GO TO 19
       KK=KK+1
      NXTDGT=NXTDGT-1
        IF(KASROM.NE.0)GO TO 9
      LETTER(KK)=LTRROM(IROMAN)
        KASROM=KONTRL-4
        GO TO 8
    9 LETTER(KK)=LWRROM(IROMAN)
        GO TO 8
C
  C     ************************************************
    C     *                                              *
    C     *  ARABIC, HEXADECIMAL OR ALPHABETIC NUMERALS  *
    C     *                                              *
    C     ************************************************
    C
  C     DISECT NUMBER
       10 INIUSD=KOUNT+1
         LFTOVR=NUMBER
          KASROM=KONTRL-7
        IF(KASROM.EQ.1)KASROM=-1
         IRADIX=10
         IF(KONTRL.EQ.2)IRADIX=8
          IF(KONTRL.EQ.3)IRADIX=16
         IF(KONTRL.GT.6)IRADIX=26
      11 IF(LFTOVR.LE.0)GO TO 20
          NXTDGT=LFTOVR
          LFTOVR=LFTOVR/IRADIX
        IF(KASROM.GT.0)KASROM=LFTOVR
          NXTDGT=NXTDGT-IRADIX*LFTOVR
C
  C     INSERT DIGIT
      IF(KOUNT.GE.MAX)GO TO 19
         II=KOUNT
       12 IF(II.LT.INIUSD)GO TO 13
         LETTER(II+1)=LETTER(II)
          II=II-1
      GO TO 12
       13 KOUNT=KOUNT+1
          IF(IRADIX.EQ.26)GO TO 14
         IF(NXTDGT.GE.10)GO TO 16
         LETTER(INIUSD)=LTRDGT(NXTDGT+1)
       GO TO 11
       14 IF(NXTDGT.GT.0)GO TO 15
          NXTDGT=26
         LFTOVR=LFTOVR-1
     15 IF(KASROM.EQ.0)GO TO 17
          LETTER(INIUSD)=LWRABC(NXTDGT)
         GO TO 11
       16 NXTDGT=NXTDGT-9
     17 LETTER(INIUSD)=LTRABC(NXTDGT)
         GO TO 11
    C
  C     SPECIAL CASE FOR ZERO
    18 IF(KOUNT.GE.MAX)GO TO 20
         KOUNT=KOUNT+1
          LETTER(KOUNT)=LTRDGT(1)
          GO TO 20
    C
  C     RETURN TO CALLING PROGRAM
     19 KOUNT=INIUSD-1
      20 RETURN
       END
          SUBROUTINE RNOUND(ILETTR,NDXLFT,ILNGTH,NDXXTR,
      1LTRWRK,LNGWRK,LMTWRK,IFLINE)
    C     RENBR(/UNDERSCORE LINE OF TEXT STORED AS CODES)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION ILETTR(300),LTRWRK(LMTWRK)
       DATA LTRSPA,LTRUND/1H ,1H_/
      NDXCPY=NDXLFT
          LNGWRK=NDXXTR
          LNGUND=LNGWRK
          IFLINE=0
        1 IF(NDXCPY.GE.ILNGTH)GO TO 3
      IF(LNGUND.GE.LMTWRK)GO TO 3
      NDXCPY=NDXCPY+1
        I=ILETTR(NDXCPY)
       IF(I.LT.0)GO TO 3
      J=I/2
        I=I-(2*J)
         LNGUND=LNGUND+1
        IF(I.NE.0)GO TO 2
      LTRWRK(LNGUND)=LTRSPA
       GO TO 1
    2 IFLINE=1
          LTRWRK(LNGUND)=LTRUND
       LNGWRK=LNGUND
          GO TO 1
    3 RETURN
       END
          SUBROUTINE RNOCOD
C     RENBR(/CONVERT LETTERS TO NUMERIC CODES)
  C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
        LFTNDX=KNTNDX
          JFIRST=IVALUE
        1 IF(JFIRST.GT.IMINUS)GO TO 10
          IF(KNTNDX.GE.LMTNDX)GO TO 10
          LTRNOW=LTRBGN(JFIRST)
       MSKBIT=MSKBGN(JFIRST)
       ITLFLG=0
          IF(KOMAND.EQ.503)GO TO 2
         CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.NE.0)ITLFLG=1
          IF(MRKSBX.LE.0)GO TO 2
      IF(LTRNOW.NE.LTRSBX)GO TO 2
      MSKBIT=MSKBGN(JFIRST)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 8
    2 IF(LTRNOW.EQ.LTRSPA)GO TO 6
      IF(LTRNOW.EQ.LTRTAB)GO TO 6
      DO 4 I=1,26
       IF(LTRNOW.NE.LTRABC(I))GO TO 3
        KODE=I+I
          IF(KAPNDX.LE.0)GO TO 7
      IF(KOMAND.NE.503)GO TO 7
         IF(KNTNDX.EQ.LFTNDX)GO TO 7
      MSKBIT=MSKBGN(JFIRST)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 7
      KODE=KODE+1
       GO TO 7
    3 IF(LTRNOW.NE.LWRABC(I))GO TO 4
        KODE=I+I+1
        IF(KAPNDX.LT.0)GO TO 7
      IF(KNTNDX.GT.LFTNDX)GO TO 7
      MSKBIT=MSKBGN(JFIRST)
       CALL RNOUNP(3,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 7
      KODE=KODE-1
       GO TO 7
    4 CONTINUE
          DO 5 I=1,KNTCOD
        IF(LTRNOW.NE.LTRCOD(I))GO TO 5
        KODE=53+I
         GO TO 7
    5 CONTINUE
          IF(KNTCOD.GE.LMTCOD)GO TO 9
      KNTCOD=KNTCOD+1
        LTRCOD(KNTCOD)=LTRNOW
       KODE=53+KNTCOD
         GO TO 7
    6 KODE=0
       MSKBIT=MSKBGN(JFIRST)
       CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.NE.0)ITLFLG=1
        7 KNTNDX=KNTNDX+1
        NUMNDX(KNTNDX)=(2*KODE)+ITLFLG
        GO TO 9
    8 IF(KNTNDX.EQ.LFTNDX)GO TO 9
      IF(NUMNDX(KNTNDX).LT.0)GO TO 9
        KNTNDX=KNTNDX+1
        NUMNDX(KNTNDX)=-1
    9 JFIRST=JFIRST+1
        GO TO 1
   10 RETURN
       END
          SUBROUTINE RNONAM(IDFILE)
  C     RENBR(/GET 6 DIGIT NUMBER UNIQUE TO THIS JOB)
  C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
  C     IDFILE = RETURNED WITH 6  DIGIT NUMBER UNIQUE TO THIS
    C              JOB
C
  C     THE SECNDS ROUTINE IS FIRST CALLED TO OBTAIN THE TIME
    C     AS  THE  NUMBER  OF SECONDS SINCE MIDNIGHT.  THE FILE
    C     NAME IS THEN CONSTRUCTED FROM THE NUMBER OF TENTHS OF
    C     SECONDS  SINCE  MIDNIGHT  PLUS 100000.  THE OFFSET IS
    C     ADDED TO FORCE THE NUMBER TO CONSIST OF 6  CHARACTERS
    C     WHEN WRITTEN AS A DECIMAL INTEGER.  THE MAXIMUM VALUE
    C     INCLUDING THIS OFFSET IS 963999.
C
        IDFILE=100000.0+10.0*SECNDS(0.0)
      END
          SUBROUTINE RNOCHR(MRGLFT,IFBACK,IFMORE,ILETTR,ILNGTH,
         1    NUMNDX,JLNGTH,IDIFFR,NDXLFT,NDXXTR,JDIFFR)
 C     RENBR(/CONVERT CODES TO LETTERS FOR USE IN INDEX)
   C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION ILETTR(300),NUMNDX(300)
          NDXXTR=0
          IF(MRGLFT.GT.0)NDXXTR=MRGLFT
          IDIFFR=0
          IF(IFBACK.GE.0)GO TO 9
      IF(ILNGTH.EQ.0)GO TO 2
      IF(ILETTR(1).EQ.NUMNDX(1))GO TO 2
          I=ILETTR(1)/2
          J=NUMNDX(1)/2
          IF(I.GT.53)GO TO 1
          IF(J.GT.53)GO TO 1
          I=I/2
        J=J/2
      1 IF(I.NE.J)IDIFFR=1
        2 INICHR=0
          IF(ILNGTH.LE.0)GO TO 7
      LMTCHR=0
        3 LMTCHR=LMTCHR+1
        IF(LMTCHR.GT.ILNGTH)GO TO 4
      IF(LMTCHR.GT.JLNGTH)GO TO 7
      IF(ILETTR(LMTCHR).NE.NUMNDX(LMTCHR))GO TO 7
          IF(ILETTR(LMTCHR).GE.0)GO TO 3
        INICHR=LMTCHR
          NDXXTR=NDXXTR+2
        GO TO 3
    4 IF(ILNGTH.GE.JLNGTH)GO TO 5
      IF(NUMNDX(ILNGTH+1).GE.0)GO TO 7
      GO TO 6
    5 IF(JDIFFR.EQ.0)GO TO 7
    6 INICHR=ILNGTH+1
        ILETTR(INICHR)=NUMNDX(INICHR)
         NDXXTR=NDXXTR+2
      7 LMTCHR=INICHR
          ILNGTH=INICHR
          NDXLFT=INICHR
        8 IF(IFBACK.GE.0)GO TO 12
          IF(LMTCHR.GE.JLNGTH)GO TO 14
          LMTCHR=LMTCHR+1
        ILETTR(LMTCHR)=NUMNDX(LMTCHR)
         GO TO 13
        9 IF(IFBACK.LE.0)GO TO 11
          LMTCHR=0
       10 LMTCHR=LMTCHR+1
        IF(LMTCHR.GT.IFBACK)GO TO 11
          IF(ILETTR(LMTCHR).GE.0)GO TO 10
       IFBACK=LMTCHR
          NDXXTR=NDXXTR+2
        GO TO 10
       11 LMTCHR=IFBACK
          NDXLFT=IFBACK
       12 IF(LMTCHR.GE.ILNGTH)GO TO 14
          LMTCHR=LMTCHR+1
     13 IF(ILETTR(LMTCHR).GE.0)GO TO 8
        IFMORE=1
          GO TO 15
       14 IFMORE=0
       15 IF(IFBACK.GE.0)GO TO 17
          ILNGTH=LMTCHR
       16 IF(LMTCHR.GE.JLNGTH)GO TO 19
          LMTCHR=LMTCHR+1
        IF(NUMNDX(LMTCHR).LT.0)IFMORE=IFMORE+1
          GO TO 16
       17 IFBACK=LMTCHR
       18 IF(LMTCHR.GE.ILNGTH)GO TO 19
          LMTCHR=LMTCHR+1
        IF(ILETTR(LMTCHR).LT.0)IFMORE=IFMORE+1
          GO TO 18
       19 RETURN
       END
          SUBROUTINE RNOLTR(MRGLFT,LTRWRK,LMTWRK,LNGWRK,
      1LTRABC,LWRABC,LTRCOD,LMTCOD,ILETTR,ILNGTH,LMTCHR)
   C     RENBR(/CONVERT CODES TO LETTERS EXCEPT FOR IN INDEX)
C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION LTRABC(26),LWRABC(26),LTRCOD(LMTCOD),
     1LTRWRK(LMTWRK),ILETTR(ILNGTH)
         DATA LTRSPA/1H /
       IF(MRGLFT.LE.0)GO TO 2
      DO 1 I=1,MRGLFT
        IF(LNGWRK.GE.LMTWRK)GO TO 6
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRSPA
     1 CONTINUE
        2 IF(LMTCHR.GE.ILNGTH)GO TO 6
      IF(LNGWRK.GE.LMTWRK)GO TO 6
      LMTCHR=LMTCHR+1
        KODE=ILETTR(LMTCHR)
         IF(KODE.LT.0)GO TO 2
        KODE=KODE/2
       LNGWRK=LNGWRK+1
        IF(KODE.GT.0)GO TO 3
        LTRWRK(LNGWRK)=LTRSPA
       GO TO 2
    3 IF(KODE.GT.53)GO TO 5
       I=KODE/2
          IF(KODE.NE.(2*I))GO TO 4
         LTRWRK(LNGWRK)=LTRABC(I)
         GO TO 2
    4 LTRWRK(LNGWRK)=LWRABC(I)
         GO TO 2
    5 LTRWRK(LNGWRK)=LTRCOD(KODE-53)
        GO TO 2
    6 RETURN
       END
          SUBROUTINE RNOCMP(NUMNDX,ILNGTH,JLETTR,JLNGTH,LMTNDX,
         1IDIFFR)
C     RENBR(/COMPAR AND FIND STRING LOWER IN ALPHABET)
    C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION NUMNDX(LMTNDX),JLETTR(LMTNDX)
         KOMPAR=ILNGTH
          IF(KOMPAR.GT.JLNGTH)KOMPAR=JLNGTH
          IF(KOMPAR.LE.0)GO TO 9
      INDEX=0
    1 INDEX=INDEX+1
          IF(INDEX.GT.KOMPAR)GO TO 5
       IABC=NUMNDX(INDEX)
          JABC=JLETTR(INDEX)
          IF(IABC.EQ.JABC)GO TO 1
          IF(IABC.LT.0)GO TO 10
       IF(JABC.LT.0)GO TO 11
 C     107 IN FOLLOWING LINES IS MAXIMUM VALUE FOR LETTER
  C     107 = 26*4 + 2 + 1 FOR Z, LOWER CASE, ITALIC
         IF(IABC.GT.107)GO TO 2
      IF(JABC.LE.107)GO TO 3
      GO TO 10
        2 IF(JABC.LE.107)GO TO 11
          IABC=IABC/2
       JABC=JABC/2
       GO TO 4
    3 IABC=IABC/4
       JABC=JABC/4
     4 IF(IABC.EQ.JABC)GO TO 1
          IF(IABC.LT.JABC)GO TO 10
         GO TO 11
        5 IF(ILNGTH.LT.JLNGTH)GO TO 11
          IF(ILNGTH.GT.JLNGTH)GO TO 10
          INDEX=0
    6 INDEX=INDEX+1
          IF(INDEX.GT.KOMPAR)GO TO 7
       IABC=NUMNDX(INDEX)/2
        JABC=JLETTR(INDEX)/2
        IF(IABC.EQ.JABC)GO TO 6
          IF(IABC.LT.JABC)GO TO 10
         GO TO 11
        7 INDEX=0
    8 INDEX=INDEX+1
          IF(INDEX.GT.KOMPAR)GO TO 9
       IABC=NUMNDX(INDEX)
          JABC=JLETTR(INDEX)
          IF(IABC.EQ.JABC)GO TO 8
          IF(IABC.LT.JABC)GO TO 10
         GO TO 11
        9 IDIFFR=0
          GO TO 12
       10 IDIFFR=1
          GO TO 12
       11 IDIFFR=-1
      12 RETURN
       END
          SUBROUTINE RNOPAK(LOCBIT,IVALUE)
C     RENBR(/PACK LETTER CHARACTERISTIC)
   C     LOCBIT = LOCATION OF BIT
   C            = 1, ON IF CHARACTER IS SPACE
 C            = 2, ON IF CHARACTER IS ITALIC
C            = 3, ON IF CHARACTER IS QUOTED BY UNDERSCORE
 C            = 4, ON IF CHARACTER IS SUPERSCRIPT
C            = 5, ON IF CHARACTER IS SUBSCRIPT
  C     IVALUE = PACKED VALUE IN WHICH BIT IS TO BE TURNED ON
          DIMENSION MSKBIT(10)
        DATA MSKBIT/1,2,4,8,16,32,64,128,256,512/
       IF(IVALUE.LE.0)GO TO 1
      JVALUE=IVALUE/MSKBIT(LOCBIT)
          IF(JVALUE.LE.0)GO TO 1
      KVALUE=JVALUE/2
        LVALUE=JVALUE-(2*KVALUE)
         IF(LVALUE.NE.0)GO TO 2
    1 IVALUE=MSKBIT(LOCBIT)+IVALUE
        2 RETURN
       END
          SUBROUTINE RNOUNP(LOCBIT,IVALUE)
C     RENBR(/UNPACK LETTER CHARACTERISTIC)
 C     LOCBIT = LOCATION OF BIT TO BE SAMPLED
    C     IVALUE = INPUT CONTAINING PACKED VALUE TO BE SAMPLED
C            = RETURNED WITH VALUE OF BIT INDICATED BY
    C              LOCBIT
        DIMENSION MSKBIT(10)
        DATA MSKBIT/1,2,4,8,16,32,64,128,256,512/
       IF(IVALUE.LE.0)GO TO 1
      JVALUE=IVALUE/MSKBIT(LOCBIT)
          IF(JVALUE.LE.0)GO TO 1
      KVALUE=JVALUE/2
        IVALUE=JVALUE-(2*KVALUE)
         GO TO 2
    1 IVALUE=0
        2 RETURN
       END
          SUBROUTINE RNOLIN
C     RENBR(/OUTPUT A SINGLE LINE)
    C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
  C     KTRMNL = 0, ULTIMATE   OUTPUT   DEVICE   CANNOT    DO
    C              HALF-LINE FEEDS.
  C            = 1, OUTPUT DEVICE USED FOR DRAFTS  CANNOT  DO
    C              HALF-LINE    FEEDS,    BUT   DOCUMENT   WILL
    C              ULTIMATELY  BE  PRODUCED  ON  OUTPUT  DEVICE
    C              WHICH CAN DO HALF-LINE FEEDS.
    C            = 2, OUTPUT DEVICE CAN DO HALF-LINE  FEEDS  TO
    C              POSITION  LOWER  ON  PAGE,  BUT  CANNOT THEN
    C              RETURN TO HIGHER POSITION.
  C            = 3, OUTPUT DEVICE CAN DO HALF-LINE  FEEDS  IN
    C              BOTH DIRECTIONS.
  C
  C     KNDOUT = 1, GENERATE ORDINARY PRINTING LINE ON PAGE
 C            = 2, GENERATE BLANK LINE WHICH CAN CONTAIN
   C                 CHANGE BAR.
    C            = 3, GENERATE COMPLETELY BLANK LINE.  THIS WILL
   C                 NEVER CONTAIN CHANGE BARS.
    C            = 4, GENERATE TITLE CONTAINED IN LTRWRK AND IN
    C                 MSKWRK.  THIS WILL NEVER CONTAIN CHANGE BARS.
C            = 5, SIMILAR TO =4, BUT CAN CONTAIN CHANGE BARS.
  C            = 6, FORCE OUT FINAL BLANK LINE IF ONE IS BEING
   C                 HELD FOR POSSIBLE SUPERSCRIPTS ON NEXT LINE.
 C
        COMMON/RNOONE/I     ,IAPNDX,IBRFTN,IBYTE ,ICENTR,
        1ICHAPT,IDEBUG,IDEFER,IDFILE,IDFRFG,IDFRPG,IDISK ,
        2IFABAR,IFAUTO,IFENCE,IFFILL,IFFLAG,IFHEAD,IFLIST,
        3IFLOOP,IFLSUB,IFNATO,IFNBGN,IFNFIL,IFNGAP,
     4IFNGSP,IFNHAV,IFNIBR,IFNICN,IFNIDF,IFNIFA,IFNIIN,
        5IFNILF,IFNIND,IFNIRT,IFNISP,IFNJCN,IFNJDF,IFNJFL,
        6IFNJST,IFNKCN,IFNKDF,IFNKLM,IFNLBR,IFNLBS,IFNLOF,
        7IFNLSP,IFNMBR,IFNMFR,IFNMLF,IFNMNS,IFNMRT,
     8IFNNBR,IFNNIN,IFNNLF,IFNNOF,IFNNOT,IFNNRT,IFNNSK,
        9IFNNTF,IFNNTL,IFNNTR,IFNNTS,IFNNTT,IFNNT1,IFNNT2
          COMMON/RNOTWO/IFNNT3,IFNOFF,IFNOPN,IFNOTE,IFNPIN,
        1IFNPRD,IFNPSK,IFNPTS,IFNRBS,IFNRDY,IFNRED,IFNRIT,
        2IFNROF,IFNTTL,IFNULS,IFNUMB,IFPAGE,IFRSUB,IFSPLC,
        3IGAPHI,IGAPLO,IGROUP,IMINUS,INDENT,INDFTN,INIALL,
        4INIAPP,INIBAR,INICHA,INIFRM,INILIN,ININDX,ININXT,
        5INISPA,INITAL,INNOTE,INTIND,INTLFT,INTRIT,INTRVL,
        6IOFFST,IPEROD,IPGSHO,IQUOTE,IRANGE,IREVRS,IRTBAS,
        7IRTFTN,IRTOFF,IRUNIN,ISECTN,ISKFTN,ISKIP ,ISPACE,
        8ISTART,ISUBPG,ITLALL,ITLLIN,ITLNXT,ITLSPA,ITRMNL,
        9ITTY  ,IULSPC,IVALUE,IWIZRD,J     ,JCENTR,JDFRFG
          COMMON/RNOTHR/JDFRPG,JDISK ,JFILL ,JFNBGN,JFNGAP,
        1JFNOPN,JFNRED,JFNRIT,JGROUP,JMINUS,JOFFST,JRANGE,
        2JSECTN,JSKIP ,JSTIFY,JTTY  ,JVALUE,K     ,KAPITL,
        3KASALL,KASFLG,KASLCL,KCENTR,KDFRFG,KDISK ,KFNGAP,
        4KLMFIL,KLMMNS,KMINUS,KNDAPP,KNDCHA,KNDFIL,KNDLFT,
        5KNDLIN,KNDPAG,KNDRIT,KNDSPL,KNDSUB,KNDTRN,KNTARG,
        6KNTCOD,KNTFTN,KNTFXD,KNTLIN,KNTLOP,KNTLVL,KNTPAG,
        7KNTPNT,KNTRST,KNTSHO,KNTSPC,KNTSPL,KNTTOP,KNTXTR,
        8KOMAND,KOMENT,KONECT,KPYBGN,KPYKAS,KPYMID,KPYPRT,
        9KRANGE,KSKIP ,KVALUE,LCLBAR,LCLNDX,LCLSUP,KAPNDX
          COMMON/RNOFOU/LDISK ,LENGTH,LEVEL0,LEVEL1,LEVEL3,
        1LEVEL4,LFNGAP,LFTBAS,ILFFTN,LFTOFF,LFTRIT,LINFIG,
        2LINSPL,LITERL,LMTBGN,LMTCHA,LMTCOD,LMTFNR,LMTKAS,
        3LMTLST,LMTLVL,LMTMID,LMTNDX,LMTTAB,LMTTTL,LMTUNT,
        4LMTWRK,LNGBGN,LNGBOT,LNGCHA,LNGFNR,LNGFTN,LNGMID,
        5NXTFTN,LNGPAG,LNGSPL,LNGSRC,LNGTRN,LNGTTL,KNDNDX,
        6LOCABC,LOCATE,LOCPAG,LOCPNT,LOKSUP,LOWBFR,NSKIP ,
        7LRADJS,LRFORC,LSNSPL,LSNSRC,LSTAPP,LSTCHA,LSTELM,
        8LSTFRM,LSTSPL,LSTTRN,MAJOR ,MASTER,MAXBGN,MAXLIN,
        9MAXLOP,MAXSPL,MAXTAB,MAXWRD,MDISK ,MIDAPP,MIDCHA
          COMMON/RNOFIV/MINLVL,MINTOP,MOVBAC,MRGFAR,MRGLFT,
        1MRGRIT,MRGTOP,MRKAMP,MRKBAC,MRKBAR,MRKCAR,MRKDOL,
        2MRKDOT,MRKEFN,MRKEXC,MRKFTN,MRKLES,MRKNDX,MRKNUM,
        3MRKREF,MRKSBX,MRKSEM,MRKSUB,MRKSUP,MRKTTL,MRKTXT,
        4MRKUND,MSTLST,NDISK ,NDXDSK,NDXFOU,NDXHOW,NDXKNT,
        5NDXMAK,NDXONE,NDXOPN,NDXTHR,NDXTWO,NEEDED,NEWCHA,
        6NEWPAG,NOTFIL,NOTIND,NOTKLM,NOTLFT,NOTMNS,NOTONE,
        7NOTRIT,NOTSEM,NOTSKP,NOTSPC,NOTTHR,NOTTST,NOTTWO,
        8NOWBAR,NOWFTN,NOWIND,NOWLFT,NOWLST,NOWOFF,NOWPAG,
        9NOWPHW,NOWRIT,NOWSEC,NOWSHW,NOWSKP,NOWSPH,NOWSUB
          COMMON/RNOSIX/NOWTST,NULTTL,NUMFTN,NXTFIG,NXTHDR,
        1NXTLST,NXTLVL,NXTONE,NXTPAG,NXTSUB,KNDOUT,LNGWRK,
        2KAPFTN,KOFFST,IRECRD,KNTNDX,INIPAG,INIHIA,MAGNFY,
        3INIHIB,IFHALF,KTRMNL,ITTLLO,ISUBLO,LNGTOP,MAGFNT,
        4ITTLHI,ISUBHI,IFINDX,IXTRSS,JXTRSS,KXTRSS,MAGSPC,
        5MXTRSS,NXTRSS,IFORMR,JTRMNL,IFNREF,IFNNUM,KMPPAG,
        6KMPLIN,KMPCLM,KMPVAL,INICLM,MFNGAP,NFNGAP,MAGSAV,
        7MAGSHD,MAGHIH,MRKMAG,LMTSHD,LNGSHD,LFTSHD,IRISHD,
        8IHISHD,ILOSHD,KNTSHD,LFTSGN,IRISGN,NGLSHD,NETNGL,
        9NETSEP,NETWID,NETOFF,NETKNT,KNTEDT,LMTEDT,LMTBIG,
        1LNGBIG,NGLBIG,KNTBIG,NXTSKP,JBORDR,INIMAG,INIOBJ,
        2IBORDR
       COMMON/RNOEIG/INDLST(10)  ,KMDARG(250) ,KMDBRK(250) ,
         1 KNDLVL(6)   ,KNDTTL(16)  ,LOCTAB(32)  ,LSTMRG(10)  ,
         2 LSTRIT(10)  ,LSTSKP(10)  ,LSTSPC(10)  ,LSTTTL(80)  ,
         3 LSTTYP(10)  ,LSTVAL(10)  ,MCHPNT(1300),MSKBGN(300) ,
         4 MSKCHA(200) ,MSKFNR(200) ,MSKFTN(200) ,MSKMID(200) ,
         5 MSKTTL(450) ,NARGMT(44)  ,NBEGIN(19)  ,NMINUS(32)  ,
         6 NOTPNT(1300),NUMLVL(6)   ,NUMNDX(300) ,NUMTTL(11)  ,
         7 NVALUE(32)  ,NXTCMD(81)  ,NXTPNT(12)  ,NXTUNT(4)   ,
         8 MSKWRK(200) ,MTYSTR(4)   ,MAGEDT(50)
      COMMON/RNONIN/LTRAMP,LTRBAC,LTRBAR,LTRCAR,LTRCOM,
        1LTRDOL,LTRDOT,LTREFN,LTREXC,LTRFNC,LTRLES,
     2LTRMNS,LTRNDX,LTRNOW,LTRNUM,LTRPLS,LTRQUO,LTRRUL,
        3LTRSBX,LTRSEM,LTRSPA,LTRSUB,LTRSUP,LTRTAB,
     4LTRPUT,LTRTXT,LTRUND,LTR1ST,LTRMAG
         COMMON/RNOTEN/LTRABC(26)  ,LTRAPP(9)   ,LTRBGN(300) ,
         1 LTRCPT(8)   ,LTRCLS(10)  ,LTRCOD(70)  ,LTRDGT(10)  ,
         2 LTRFLG(18)  ,LTRFTN(200) ,LTRIND(5)   ,LTRLST(10,6),
         3 LTRMID(200) ,LTRONL(26)  ,LTRONU(26)  ,LTROPN(10)  ,
         4 LTRPAG(5)   ,LTRREF(4)   ,LTRSPL(200) ,LTRTWO(4)   ,
         5 LTRTYP(8)   ,LTRWRK(200) ,LWRABC(26)  ,LWRAPP(9)   ,
         6 LWRCHA(8)   ,LWRIND(5)   ,LWRONL(26)  ,LWRONU(26)  ,
         7 LWRTYP(8)   ,LTRTTL(450) ,LTRCHA(200) ,LTRFNR(200) ,
         8 LTRSHD(50)  ,LTRBIG(50)
   C
        DIMENSION LTROUT(200),LTRHFL(2),LTRHRL(2),LTRUP (2),
     1LTRDWN(2)
   C
  C     MAXOUT = DIMENSION OF LTROUT ARRAY USED BY THIS ROUTINE
  C              FOR CONSTRUCTION OF EACH LINE IN TURN.
C
        DATA MAXOUT/200/
 C
  C     LTRHFL = CHARACTER SEQUENCE WHICH ON DIABLO TERMINALS
    C              MOVES CARRIAGE HALF WAY TO NEXT LINE ON PAGE.
   C              USED FOR ALL SUBSCRIPTS AND MOST SUBSCRIPTS.
    C              DIMENSIONED AT MAXHFL.
 C     LTRHRL = CHARACTER SEQUENCE WHICH ON DIABLO TERMINALS
    C              MOVES CARRIAGE HALF WAY BACK TO PREVIOUS LINE.
  C              USED ONLY IF THE FIRST LINE ON PAGE BEARS
  C              SUPERSCRIPTS.  DIMENSIONED AT MAXHRL.
 C
        DATA LTRHFL/"155004020100,1HU/
        DATA LTRHRL/"155004020100,1HD/
        DATA MAXHFL,MAXHRL/2,2/
    C
  C     NON-FUNCTIONAL INSTRUCTIONS FOR USE IN TESTING ONLY
       DATA LTRUP /1H$,1HU/
        DATA LTRDWN/1H$,1HD/
        DATA MAXUP ,MAXDWN/2,2/
    C
        IF(KTRMNL.EQ.0)GO TO 1
      GO TO(51,102,145),KTRMNL
   C
  C     *****************************************************
    C     *                                                   *
    C     *  TEXT IS TO BE FORMATTED FOR DEVICE WHICH CANNOT  *
    C     *  PERFORM HALF-LINE FEED.                          *
    C     *  PAGES WILL BE NORMAL SIZE.                       *
    C     *  SUPERSCRIPT OR SUBSCRIPT WILL BE SIMULATED BY    *
    C     *  DOUBLE SPACING, REDUCING OTHER TEXT WHICH CAN    *
    C     *  APPEAR ON PAGE.                                  *
    C     *  KTRMNL = 1 SHOULD BE USED INSTEAD IF AN OUTPUT   *
    C     *  DEVICE WHICH CANNOT HALF-LINE SPACE IS BEING     *
    C     *  USED TO OBTAIN DRAFT OF DOCUMENT WHICH WILL      *
    C     *  ULTIMATELY BE PRINTED ON LETTER QUALITY PRINTER  *
    C     *                                                   *
    C     *****************************************************
    C
      1 GO TO(3,2,2,5,5,12),KNDOUT
 C
  C     OUTPUT LINE OF FIGURE
     2 LNGWRK=0
          GO TO 5
C
  C     COPY LINE OF TEXT INTO LTRWRK
       3 LNGWRK=0
          IF(LNGMID.LE.0)GO TO 5
      DO 4 I=1,LNGMID
        IF(LNGWRK.GE.LMTWRK)GO TO 5
      LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMID(I)
         MSKWRK(LNGWRK)=MSKMID(I)
       4 CONTINUE
    C
  C     IHALF = 0, NOTHING SPECIAL DONE
 C           = 1, LAST LINE WAS EMPTY LINE
  C           = -1, LAST LINE WAS SUBSCRIPT
  C
  C
  C     DETERMINE WHETHER LINE CONTAINS LETTER MODIFICATIONS
C     TYPE 2 = UNDERLINE
    C     TYPE 4 = SUPERSCRIPT
  C     TYPE 5 = SUBSCRIPT
        5 KNTSUP=0
          KNTSUB=0
          KNTUND=0
          IF(LNGWRK.LE.0)GO TO 9
      DO 8 I=1,LNGWRK
        MSKBIT=MSKWRK(I)
       IF(MSKBIT.EQ.0)GO TO 8
      IF(KNTUND.NE.0)GO TO 6
      CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.NE.0)KNTUND=I
        6 IF(KNTSUP.NE.0)GO TO 7
      MSKBIT=MSKWRK(I)
       CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)KNTSUP=I
        7 IF(KNTSUB.NE.0)GO TO 8
      MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)KNTSUB=I
        8 CONTINUE
        9 CONTINUE
          IF(KNTSUP.NE.0)GO TO 10
          IF(IFHALF.GT.0)GO TO 13
          GO TO 19
       10 IF(IFHALF.GT.0)GO TO 11
          LOCPAG=LOCPAG+1
        GO TO 19
       11 IF(INIPAG.NE.0)GO TO 13
          INIPAG=MTYSTR(1)
       IFHALF=0
          GO TO 19
    C
  C     DETERMINE IF RESERVED LINE WAITING
      12 IF(IFHALF.GT.0)GO TO 13
          IFHALF=0
          GO TO 50
    C
  C     GENERATE PREVIOUS BLANK LINE IF NO SUPERSCRIPTS NOW
    13 MOVLIN=MTYSTR(1)
       KNTOUT=0
          KNTPRT=0
          J=MTYSTR(2)
       IF(J.LE.0)GO TO 16
          DO 14 I=1,J
       IF(KNTOUT.GE.MAXOUT)GO TO 15
          KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
    14 CONTINUE
       15 J=MTYSTR(3)
       IF(J.LE.0)GO TO 16
          IF(MTYSTR(4).EQ.3)GO TO 16
       IF(MTYSTR(4).EQ.4)GO TO 16
       IF(J.GT.KNTOUT)GO TO 16
          LTROUT(J)=LTRBAR
       KNTPRT=J
       16 CONTINUE
          IF(KRANGE.LE.0)GO TO 18
          IF(KNTPRT.GT.0)GO TO 17
          IF(MOVLIN.LT.0)WRITE(JDISK,36)
        IF(MOVLIN.EQ.0)WRITE(JDISK,37)LTR1ST
       IF(MOVLIN.GT.0)WRITE(JDISK,38)
        GO TO 18
       17 IF(MOVLIN.LT.0)WRITE(JDISK,36)(LTROUT(I),I=1,KNTPRT)
      IF(MOVLIN.EQ.0)WRITE(JDISK,37)LTR1ST,(LTROUT(I),I=1,KNTPRT)
         IF(MOVLIN.GT.0)WRITE(JDISK,38)(LTROUT(I),I=1,KNTPRT)
   18 IFHALF=0
          IF(KNDOUT.EQ.6)GO TO 50
    C
  C     STORE NEW BLANK LINE
     19 IF(IFHALF.EQ.0)GO TO 20
          IF(LNGWRK.GT.0)GO TO 22
          IF(INIPAG.NE.0)GO TO 21
          IF(IFHALF.GE.0)LOCPAG=LOCPAG+1
        IFHALF=0
          GO TO 50
       20 IF(LNGWRK.GT.0)GO TO 22
       21 LOCPAG=LOCPAG+1
        MTYSTR(1)=INIPAG
       MTYSTR(2)=IOFFST
       MTYSTR(3)=INIBAR
       MTYSTR(4)=KNDOUT
       IFHALF=1
          INIPAG=0
          GO TO 50
       22 IFHALF=0
    C
  C     GENERATE SUPERSCRIPT CHARACTERS
       IF(KNTSUP.EQ.0)GO TO 23
          NORMAL=1
          GO TO 25
    C
  C     GENERATE NORMAL CHARACTERS
    23 NORMAL=0
          LOCPAG=LOCPAG+1
        GO TO 25
    C
  C     GENERATE SUBSCRIPT CHARACTERS
      24 IF(KNTSUB.EQ.0)GO TO 50
          LOCPAG=LOCPAG+1
        IFHALF=-1
         NORMAL=-1
   C
  C     OUTPUT PRINTING CHARACTERS ON LINE
      25 MOVLIN=INIPAG
          INIPAG=0
          KNTOUT=0
          KNTPRT=0
          IF(IOFFST.LE.0)GO TO 28
          DO 26 I=1,IOFFST
       IF(KNTOUT.GE.MAXOUT)GO TO 27
          KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
    26 CONTINUE
       27 IF(INIBAR.LE.0)GO TO 28
          IF(KNDOUT.EQ.3)GO TO 28
          IF(KNDOUT.EQ.4)GO TO 28
          IF(INIBAR.GT.KNTOUT)GO TO 28
          LTROUT(INIBAR)=LTRBAR
       KNTPRT=INIBAR
       28 IF(LNGWRK.LE.0)GO TO 34
          DO 33 I=1,LNGWRK
       IF(KNTOUT.GE.MAXOUT)GO TO 34
          KNTOUT=KNTOUT+1
        MSKBIT=MSKWRK(I)
       IF(NORMAL.EQ.0)GO TO 29
          IF(NORMAL.GT.0)GO TO 30
          CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 31
          GO TO 32
       29 IF(MSKBIT.EQ.0)GO TO 31
          CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 32
          MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 32
          GO TO 31
       30 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 31
          GO TO 32
       31 LTROUT(KNTOUT)=LTRWRK(I)
         IF(LTROUT(KNTOUT).NE.LTRSPA)KNTPRT=KNTOUT
       GO TO 33
       32 LTROUT(KNTOUT)=LTRSPA
    33 CONTINUE
       34 IF(KRANGE.LE.0)GO TO 49
          IF(KNTPRT.GT.0)GO TO 35
          IF(MOVLIN.LT.0)WRITE(JDISK,36)
        IF(MOVLIN.EQ.0)WRITE(JDISK,37)LTR1ST
       IF(MOVLIN.GT.0)WRITE(JDISK,38)
        GO TO 39
       35 IF(MOVLIN.LT.0)WRITE(JDISK,36)(LTROUT(I),I=1,KNTPRT)
      IF(MOVLIN.EQ.0)WRITE(JDISK,37)LTR1ST,(LTROUT(I),I=1,KNTPRT)
         IF(MOVLIN.GT.0)WRITE(JDISK,38)(LTROUT(I),I=1,KNTPRT)
   36 FORMAT(1H+,300A1)
   37 FORMAT(1A1,300A1)
   38 FORMAT(1H1,300A1)
C
  C     OUTPUT UNDERLINE CHARACTERS
   39 IF(KNTUND.EQ.0)GO TO 49
          IF(LNGWRK.EQ.0)GO TO 49
          KNTOUT=0
          KNTPRT=0
          IF(IOFFST.EQ.0)GO TO 41
          DO 40 I=1,IOFFST
       IF(KNTOUT.GE.MAXOUT)GO TO 47
          KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
    40 CONTINUE
       41 DO 46 I=1,LNGWRK
       IF(KNTOUT.GE.MAXOUT)GO TO 47
          KNTOUT=KNTOUT+1
        MSKBIT=MSKWRK(I)
       IF(MSKBIT.EQ.0)GO TO 45
          CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 45
          MSKBIT=MSKWRK(I)
       IF(NORMAL.EQ.0)GO TO 42
          IF(NORMAL.GT.0)GO TO 43
          CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 44
          GO TO 45
       42 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 45
          MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 45
          GO TO 44
       43 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 44
          GO TO 45
       44 LTROUT(KNTOUT)=LTRRUL
       KNTPRT=KNTOUT
          GO TO 46
       45 LTROUT(KNTOUT)=LTRSPA
    46 CONTINUE
       47 IF(KNTPRT.LE.0)GO TO 49
          WRITE(JDISK,48)(LTROUT(I),I=1,KNTPRT)
   48 FORMAT(1H+,300A1)
   49 CONTINUE
    C
  C     GET NEXT HALF LINE OF CURRENT LINE
         IF(NORMAL.GT.0)GO TO 23
          IF(NORMAL.EQ.0)GO TO 24
    C
  C     RETURN TO CALLING PROGRAM
     50 GO TO 185
   C
  C     *****************************************************
    C     *                                                   *
    C     *  PRODUCE DRAFT WITHOUT HALF-LINE SPACING OF TEXT  *
    C     *  LATER TO BE PRINTED ON LETTER QUALITY PRINTER.   *
    C     *  PAGES WILL BE LONGER BUT HAVE SAME CONTENTS AS   *
    C     *  IF HALF-LINE SPACING WERE AVAILABLE              *
    C     *                                                   *
    C     *****************************************************
    C
     51 IF(KNDOUT.EQ.6)GO TO 60
          IF(KRANGE.LE.0)GO TO 100
         GO TO(53,52,52,55,55),KNDOUT
    C
  C     OUTPUT LINE OF FIGURE
    52 LNGWRK=0
          GO TO 55
    C
  C     COPY LINE OF TEXT INTO LTRWRK
      53 LNGWRK=0
          IF(LNGMID.LE.0)GO TO 55
          DO 54 I=1,LNGMID
       IF(LNGWRK.GE.LMTWRK)GO TO 55
          LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMID(I)
         MSKWRK(LNGWRK)=MSKMID(I)
      54 CONTINUE
    C
  C     IHALF = 0, NOTHING SPECIAL DONE
 C           = 1, LAST LINE WAS EMPTY LINE
  C           = -1, LAST LINE WAS SUBSCRIPT
  C
  C
  C     DETERMINE WHETHER LINE CONTAINS LETTER MODIFICATIONS
C     TYPE 2 = UNDERLINE
    C     TYPE 4 = SUPERSCRIPT
  C     TYPE 5 = SUBSCRIPT
       55 KNTSUP=0
          KNTSUB=0
          KNTUND=0
          IF(LNGWRK.LE.0)GO TO 59
          DO 58 I=1,LNGWRK
       MSKBIT=MSKWRK(I)
       IF(MSKBIT.EQ.0)GO TO 58
          IF(KNTUND.NE.0)GO TO 56
          CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.NE.0)KNTUND=I
       56 IF(KNTSUP.NE.0)GO TO 57
          MSKBIT=MSKWRK(I)
       CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)KNTSUP=I
       57 IF(KNTSUB.NE.0)GO TO 58
          MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)KNTSUB=I
       58 CONTINUE
       59 CONTINUE
          GO TO 62
    C
  C     DETERMINE IF RESERVED LINE WAITING
      60 IF(KRANGE.LE.0)GO TO 61
          IF(IFHALF.GT.0)GO TO 63
       61 IFHALF=0
          GO TO 101
   C
  C     GENERATE PREVIOUS BLANK LINE IF NO SUPERSCRIPTS NOW
    62 IF(IFHALF.LE.0)GO TO 69
          IF(INIPAG.NE.0)GO TO 63
          IF(KNTSUP.NE.0)GO TO 68
       63 MOVLIN=MTYSTR(1)
       KNTOUT=0
          KNTPRT=0
          J=MTYSTR(2)
       IF(J.LE.0)GO TO 66
          DO 64 I=1,J
       IF(KNTOUT.GE.MAXOUT)GO TO 65
          KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
    64 CONTINUE
       65 J=MTYSTR(3)
       IF(J.LE.0)GO TO 66
          IF(MTYSTR(4).EQ.3)GO TO 66
       IF(MTYSTR(4).EQ.4)GO TO 66
       IF(J.GT.KNTOUT)GO TO 66
          LTROUT(J)=LTRBAR
       KNTPRT=J
       66 CONTINUE
          IF(KNTPRT.GT.0)GO TO 67
          IF(MOVLIN.LT.0)WRITE(JDISK,86)
        IF(MOVLIN.EQ.0)WRITE(JDISK,87)LTR1ST
       IF(MOVLIN.GT.0)WRITE(JDISK,88)
        GO TO 68
       67 IF(MOVLIN.LT.0)WRITE(JDISK,86)(LTROUT(I),I=1,KNTPRT)
      IF(MOVLIN.EQ.0)WRITE(JDISK,87)LTR1ST,(LTROUT(I),I=1,KNTPRT)
         IF(MOVLIN.GT.0)WRITE(JDISK,88)(LTROUT(I),I=1,KNTPRT)
   68 IFHALF=0
          IF(KNDOUT.EQ.6)GO TO 101
   C
  C     STORE NEW BLANK LINE
     69 IF(IFHALF.EQ.0)GO TO 70
          IFHALF=0
          IF(LNGWRK.GT.0)GO TO 72
          IF(INIPAG.NE.0)GO TO 71
          GO TO 100
      70 IF(LNGWRK.GT.0)GO TO 72
       71 IFHALF=1
          MTYSTR(1)=INIPAG
       MTYSTR(2)=IOFFST
       MTYSTR(3)=INIBAR
       MTYSTR(4)=KNDOUT
       INIPAG=0
          GO TO 100
      72 IF(KNTSUB.NE.0)IFHALF=-1
   C
  C     GENERATE SUPERSCRIPT CHARACTERS
       IF(KNTSUP.EQ.0)GO TO 73
          NORMAL=1
          GO TO 75
    C
  C     GENERATE NORMAL CHARACTERS
    73 NORMAL=0
          GO TO 75
    C
  C     GENERATE SUBSCRIPT CHARACTERS
      74 IF(KNTSUB.EQ.0)GO TO 100
         NORMAL=-1
   C
  C     OUTPUT PRINTING CHARACTERS ON LINE
      75 MOVLIN=INIPAG
          INIPAG=0
          KNTOUT=0
          KNTPRT=0
          IF(IOFFST.LE.0)GO TO 78
          DO 76 I=1,IOFFST
       IF(KNTOUT.GE.MAXOUT)GO TO 77
          KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
    76 CONTINUE
       77 IF(INIBAR.LE.0)GO TO 78
          IF(KNDOUT.EQ.3)GO TO 78
          IF(KNDOUT.EQ.4)GO TO 78
          IF(INIBAR.GT.KNTOUT)GO TO 78
          LTROUT(INIBAR)=LTRBAR
       KNTPRT=INIBAR
       78 IF(LNGWRK.LE.0)GO TO 84
          DO 83 I=1,LNGWRK
       IF(KNTOUT.GE.MAXOUT)GO TO 84
          KNTOUT=KNTOUT+1
        MSKBIT=MSKWRK(I)
       IF(NORMAL.EQ.0)GO TO 79
          IF(NORMAL.GT.0)GO TO 80
          CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 81
          GO TO 82
       79 IF(MSKBIT.EQ.0)GO TO 81
          CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 82
          MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 82
          GO TO 81
       80 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 81
          GO TO 82
       81 LTROUT(KNTOUT)=LTRWRK(I)
         IF(LTROUT(KNTOUT).NE.LTRSPA)KNTPRT=KNTOUT
       GO TO 83
       82 LTROUT(KNTOUT)=LTRSPA
    83 CONTINUE
       84 IF(KNTPRT.GT.0)GO TO 85
          IF(MOVLIN.LT.0)WRITE(JDISK,86)
        IF(MOVLIN.EQ.0)WRITE(JDISK,87)LTR1ST
       IF(MOVLIN.GT.0)WRITE(JDISK,88)
        GO TO 89
       85 IF(MOVLIN.LT.0)WRITE(JDISK,86)(LTROUT(I),I=1,KNTPRT)
      IF(MOVLIN.EQ.0)WRITE(JDISK,87)LTR1ST,(LTROUT(I),I=1,KNTPRT)
         IF(MOVLIN.GT.0)WRITE(JDISK,88)(LTROUT(I),I=1,KNTPRT)
   86 FORMAT(1H+,300A1)
   87 FORMAT(1A1,300A1)
   88 FORMAT(1H1,300A1)
C
  C     OUTPUT UNDERLINE CHARACTERS
   89 IF(KNTUND.EQ.0)GO TO 99
          IF(LNGWRK.EQ.0)GO TO 99
          KNTOUT=0
          KNTPRT=0
          IF(IOFFST.EQ.0)GO TO 91
          DO 90 I=1,IOFFST
       IF(KNTOUT.GE.MAXOUT)GO TO 97
          KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
    90 CONTINUE
       91 DO 96 I=1,LNGWRK
       IF(KNTOUT.GE.MAXOUT)GO TO 97
          KNTOUT=KNTOUT+1
        MSKBIT=MSKWRK(I)
       IF(MSKBIT.EQ.0)GO TO 95
          CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 95
          MSKBIT=MSKWRK(I)
       IF(NORMAL.EQ.0)GO TO 92
          IF(NORMAL.GT.0)GO TO 93
          CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 94
          GO TO 95
       92 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 95
          MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 95
          GO TO 94
       93 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 94
          GO TO 95
       94 LTROUT(KNTOUT)=LTRRUL
       KNTPRT=KNTOUT
          GO TO 96
       95 LTROUT(KNTOUT)=LTRSPA
    96 CONTINUE
       97 IF(KNTPRT.LE.0)GO TO 99
          WRITE(JDISK,98)(LTROUT(I),I=1,KNTPRT)
   98 FORMAT(1H+,300A1)
   99 CONTINUE
    C
  C     GET NEXT HALF LINE OF CURRENT LINE
         IF(NORMAL.GT.0)GO TO 73
          IF(NORMAL.EQ.0)GO TO 74
    C
  C     LINE COMPLETED
     100 LOCPAG=LOCPAG+1
        GO TO 101
   C
  C     RETURN TO CALLING PROGRAM
    101 GO TO 185
   C
  C     *****************************************************
    C     *                                                   *
    C     *  DIABLO TERMINAL WITH UNI-DIRECTION FORM TRACTOR  *
    C     *                                                   *
    C     *  OUTPUT DEVICE CAN HALF-LINE SPACE TO LOWER       *
    C     *  POSITION ON PAGE, BUT NOT TO HIGHER POSITION.    *
    C     *                                                   *
    C     *  EACH OUTPUT PAGE WILL START WITH 1 HALF LINE     *
    C     *  TO ALLOW TITLES TO BEAR SUPERSCRIPTS.            *
    C     *                                                   *
    C     *****************************************************
    C
    102 IF(KNDOUT.EQ.6)GO TO 144
         IF(KRANGE.LE.0)GO TO 143
         GO TO(104,103,103,106,106),KNDOUT
    C
  C     OUTPUT LINE OF FIGURE
   103 LNGWRK=0
          GO TO 106
   C
  C     COPY LINE OF TEXT INTO LTRWRK
     104 LNGWRK=0
          IF(LNGMID.LE.0)GO TO 106
         DO 105 I=1,LNGMID
      IF(LNGWRK.GE.LMTWRK)GO TO 106
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMID(I)
         MSKWRK(LNGWRK)=MSKMID(I)
     105 CONTINUE
    C
  C     DETERMINE WHETHER LINE CONTAINS LETTER MODIFICATIONS
C     TYPE 2 = UNDERLINE
    C     TYPE 4 = SUPERSCRIPT
  C     TYPE 5 = SUBSCRIPT
      106 KNTSUP=0
          KNTSUB=0
          KNTUND=0
          IF(LNGWRK.LE.0)GO TO 110
         DO 109 I=1,LNGWRK
      MSKBIT=MSKWRK(I)
       IF(MSKBIT.EQ.0)GO TO 109
         IF(KNTUND.NE.0)GO TO 107
         CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.NE.0)KNTUND=I
      107 IF(KNTSUP.NE.0)GO TO 108
         MSKBIT=MSKWRK(I)
       CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)KNTSUP=I
      108 IF(KNTSUB.NE.0)GO TO 109
         MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)KNTSUB=I
      109 CONTINUE
      110 CONTINUE
    C
  C     GENERATE SUPERSCRIPT CHARACTERS
       IF(INIPAG.NE.0)GO TO 111
         IF(KNTSUP.EQ.0)GO TO 112
     111 NORMAL=1
          GO TO 114
   C
  C     GENERATE NORMAL CHARACTERS
   112 NORMAL=0
          GO TO 114
   C
  C     GENERATE SUBSCRIPT CHARACTERS
     113 IF(KNTSUB.EQ.0)GO TO 143
         NORMAL=-1
   C
  C     DETERMINE IF FULL OR HALF LINE FEED NEEDED
  114 MOVLIN=0
          IF(IFHALF.NE.NORMAL)MOVLIN=-1
         IF(INIPAG.NE.0)MOVLIN=INIPAG
          MOVWRK=0
          IF(INIPAG.NE.0)GO TO 118
         IF(IFHALF.EQ.-NORMAL)GO TO 118
  C
  C     INSERT HALF FORWARD LINE CONTROL CHARACTERS
          IF(IDEBUG.NE.0)GO TO 116
         DO 115 I=1,MAXHFL
      MOVWRK=MOVWRK+1
        LTROUT(MOVWRK)=LTRHFL(I)
     115 CONTINUE
          GO TO 118
   C
  C     INSERT DUMMY HALF LINE FEED IF TESTING
      116 DO 117 I=1,MAXUP
       MOVWRK=MOVWRK+1
        LTROUT(MOVWRK)=LTRUP(I)
      117 CONTINUE
    C
  C     OUTPUT PRINTING CHARACTERS ON LINE
     118 INIPAG=0
          KNTOUT=MOVWRK
          KNTPRT=MOVWRK
          IF(IOFFST.LE.0)GO TO 121
         DO 119 I=1,IOFFST
      IF(KNTOUT.GE.MAXOUT)GO TO 120
         KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
   119 CONTINUE
      120 IF(INIBAR.LE.0)GO TO 121
         IF(KNDOUT.EQ.3)GO TO 121
         IF(KNDOUT.EQ.4)GO TO 121
         IF(INIBAR.GT.KNTOUT)GO TO 121
         LTROUT(INIBAR)=LTRBAR
       KNTPRT=INIBAR
      121 IF(LNGWRK.LE.0)GO TO 127
         DO 126 I=1,LNGWRK
      IF(KNTOUT.GE.MAXOUT)GO TO 127
         KNTOUT=KNTOUT+1
        MSKBIT=MSKWRK(I)
       IF(NORMAL.EQ.0)GO TO 122
         IF(NORMAL.GT.0)GO TO 123
         CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 124
         GO TO 125
     122 IF(MSKBIT.EQ.0)GO TO 124
         CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 125
         MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 125
         GO TO 124
     123 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 124
         GO TO 125
     124 LTROUT(KNTOUT)=LTRWRK(I)
         IF(LTROUT(KNTOUT).NE.LTRSPA)KNTPRT=KNTOUT
       GO TO 126
     125 LTROUT(KNTOUT)=LTRSPA
   126 CONTINUE
      127 IF(KNTPRT.GT.0)GO TO 128
         IF(MOVLIN.LT.0)WRITE(JDISK,129)
       IF(MOVLIN.EQ.0)WRITE(JDISK,130)LTR1ST
      IF(MOVLIN.GT.0)WRITE(JDISK,131)
       GO TO 132
     128 IF(MOVLIN.LT.0)WRITE(JDISK,129)(LTROUT(I),I=1,KNTPRT)
          IF(MOVLIN.EQ.0)WRITE(JDISK,130)LTR1ST,(LTROUT(I),I=1,KNTPRT)
        IF(MOVLIN.GT.0)WRITE(JDISK,131)(LTROUT(I),I=1,KNTPRT)
      129 FORMAT(1H+,300A1)
  130 FORMAT(1A1,300A1)
  131 FORMAT(1H1,300A1)
C
  C     OUTPUT UNDERLINE CHARACTERS
  132 IF(KNTUND.EQ.0)GO TO 142
         IF(LNGWRK.EQ.0)GO TO 142
         KNTOUT=0
          KNTPRT=0
          IF(IOFFST.EQ.0)GO TO 134
         DO 133 I=1,IOFFST
      IF(KNTOUT.GE.MAXOUT)GO TO 140
         KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
   133 CONTINUE
      134 DO 139 I=1,LNGWRK
      IF(KNTOUT.GE.MAXOUT)GO TO 140
         KNTOUT=KNTOUT+1
        MSKBIT=MSKWRK(I)
       IF(MSKBIT.EQ.0)GO TO 138
         CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 138
         MSKBIT=MSKWRK(I)
       IF(NORMAL.EQ.0)GO TO 135
         IF(NORMAL.GT.0)GO TO 136
         CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 137
         GO TO 138
     135 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 138
         MSKBIT=MSKWRK(I)
       CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 138
         GO TO 137
     136 CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)GO TO 137
         GO TO 138
     137 LTROUT(KNTOUT)=LTRRUL
       KNTPRT=KNTOUT
          GO TO 139
     138 LTROUT(KNTOUT)=LTRSPA
   139 CONTINUE
      140 IF(KNTPRT.LE.0)GO TO 142
         WRITE(JDISK,141)(LTROUT(I),I=1,KNTPRT)
      141 FORMAT(1H+,300A1)
  142 CONTINUE
    C
  C     GET NEXT HALF LINE OF CURRENT LINE
         IFHALF=NORMAL
          IF(NORMAL.GT.0)GO TO 112
         IF(NORMAL.EQ.0)GO TO 113
   C
  C     LINE COMPLETED
     143 LOCPAG=LOCPAG+1
        GO TO 144
   C
  C     RETURN TO CALLING PROGRAM
    144 GO TO 185
   C
  C     *****************************************************
    C     *                                                   *
    C     *  DIABLO TERMINAL WITH BI-DIRECTIONAL FORM TRACTOR *
    C     *                                                   *
    C     *  OUTPUT DEVICE CAN HALF-LINE SPACE TO POSITIONS   *
    C     *  EITHER LOWER OR HIGHER ON PAGE.                  *
    C     *                                                   *
    C     *****************************************************
    C
    145 IF(KNDOUT.EQ.6)GO TO 185
         IF(KRANGE.LE.0)GO TO 184
         GO TO(147,146,146,149,149),KNDOUT
    C
  C     OUTPUT LINE OF FIGURE
   146 LNGWRK=0
          GO TO 149
   C
  C     COPY LINE OF TEXT INTO LTRWRK
     147 LNGWRK=0
          IF(LNGMID.LE.0)GO TO 149
         DO 148 I=1,LNGMID
      IF(LNGWRK.GE.LMTWRK)GO TO 149
         LNGWRK=LNGWRK+1
        LTRWRK(LNGWRK)=LTRMID(I)
         MSKWRK(LNGWRK)=MSKMID(I)
     148 CONTINUE
    C
  C     PREPARE TO OUTPUT PRINTING CHARACTERS ON LINE
    149 MOVLIN=INIPAG
          INIPAG=0
          DO 183 IPASS=1,2
       KNTOUT=0
          KNTPRT=0
    C
  C     APPLY OFFSET, IF ANY
        IF(IOFFST.LE.0)GO TO 152
         DO 150 I=1,IOFFST
      IF(KNTOUT.GE.MAXOUT)GO TO 151
         KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
   150 CONTINUE
      151 IF(IPASS.EQ.2)GO TO 152
          IF(INIBAR.LE.0)GO TO 152
         IF(KNDOUT.EQ.3)GO TO 152
         IF(KNDOUT.EQ.4)GO TO 152
         IF(INIBAR.GT.KNTOUT)GO TO 152
         LTROUT(INIBAR)=LTRBAR
       KNTPRT=INIBAR
      152 INDEX=1
      NOWHIH=0
    C
  C     GET NEXT CHARACTER TO BE REPRESENTED
   153 NEWHIH=0
          IF(INDEX.LE.LNGWRK)GO TO 154
          IF(NOWHIH.NE.0)GO TO 161
         GO TO 177
   C
  C     IF OFF LINE, CHECK IF CAN RETURN TO LINE
    154 IF(NOWHIH.EQ.0)GO TO 158
         IF(NOWHIH.GT.0)GO TO 156
         IF(IDEBUG.NE.0)GO TO 155
         IF((KNTOUT+MAXHRL).GE.MAXOUT)GO TO 161
          GO TO 158
     155 IF((KNTOUT+MAXDWN).GE.MAXOUT)GO TO 161
          GO TO 158
     156 IF(IDEBUG.NE.0)GO TO 157
         IF((KNTOUT+MAXHFL).GE.MAXOUT)GO TO 161
          GO TO 158
     157 IF((KNTOUT+MAXUP).GE.MAXOUT)GO TO 161
      GO TO 158
   C
  C    CHECK IF SUB OR SUPERSCRIPT STATE CHANGES
    158 IF(IPASS.EQ.2)GO TO 159
          IF(LTRWRK(INDEX).EQ.LTRSPA)GO TO 174
       GO TO 160
     159 MSKBIT=MSKWRK(INDEX)
        IF(MSKBIT.EQ.0)GO TO 176
         CALL RNOUNP(2,MSKBIT)
       IF(MSKBIT.EQ.0)GO TO 176
     160 MSKBIT=MSKWRK(INDEX)
        IF(MSKBIT.EQ.0)GO TO 161
         CALL RNOUNP(4,MSKBIT)
       IF(MSKBIT.NE.0)NEWHIH=1
          MSKBIT=MSKWRK(INDEX)
        CALL RNOUNP(5,MSKBIT)
       IF(MSKBIT.NE.0)NEWHIH=-1
     161 IF(NOWHIH.EQ.NEWHIH)GO TO 174
   C
  C     IF ON LINE, CHECK IF CAN RETURN TO LINE
         IF(NOWHIH.NE.0)GO TO 163
         IF(IDEBUG.NE.0)GO TO 162
         IF((KNTOUT+MAXHRL+MAXHFL).GE.MAXOUT)GO TO 177
        GO TO 163
     162 IF((KNTOUT+MAXDWN+MAXUP).GE.MAXOUT)GO TO 177
     163 IF(NOWHIH.GT.NEWHIH)GO TO 168
   C
  C     FROM SUBSCRIPT TO LINE OR FROM LINE TO SUPERSCRIPT
        IF(IDEBUG.NE.0)GO TO 165
         IF((KNTOUT+MAXHRL).GT.MAXOUT)GO TO 177
          DO 164 J=1,MAXHRL
      KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRHRL(J)
     164 CONTINUE
          GO TO 167
     165 IF((KNTOUT+MAXDWN).GT.MAXOUT)GO TO 177
          DO 166 J=1,MAXDWN
      KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRDWN(J)
     166 CONTINUE
      167 NOWHIH=NOWHIH+1
        GO TO 173
   C
  C     FROM SUPERSCRIPT TO LINE OR FROM LINE TO SUBSCRIPT
    168 IF(IDEBUG.NE.0)GO TO 170
         IF((KNTOUT+MAXHFL).GT.MAXOUT)GO TO 177
          DO 169 J=1,MAXHFL
      KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRHFL(J)
     169 CONTINUE
          GO TO 172
     170 IF((KNTOUT+MAXUP).GT.MAXOUT)GO TO 177
      DO 171 J=1,MAXUP
       KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRUP(J)
      171 CONTINUE
      172 NOWHIH=NOWHIH-1
    173 KNTPRT=KNTOUT
          IF(INDEX.LE.LNGWRK)GO TO 161
          GO TO 177
   C
  C     INSERT THE CHARACTER ITSELF
  174 IF(KNTOUT.GE.MAXOUT)GO TO 177
         KNTOUT=KNTOUT+1
        IF(IPASS.EQ.2)GO TO 175
          LTROUT(KNTOUT)=LTRWRK(INDEX)
          IF(LTROUT(KNTOUT).NE.LTRSPA)KNTPRT=KNTOUT
       INDEX=INDEX+1
          GO TO 153
     175 LTROUT(KNTOUT)=LTRRUL
       KNTPRT=KNTOUT
          INDEX=INDEX+1
          GO TO 153
     176 IF(KNTOUT.GE.MAXOUT)GO TO 177
         KNTOUT=KNTOUT+1
        LTROUT(KNTOUT)=LTRSPA
       INDEX=INDEX+1
          GO TO 153
   C
  C     OUTPUT THE PRINTING CHARACTERS ON THE LINE
  177 IF(IPASS.EQ.2)GO TO 182
          IF(KNTPRT.GT.0)GO TO 178
         IF(MOVLIN.LT.0)WRITE(JDISK,179)
       IF(MOVLIN.EQ.0)WRITE(JDISK,180)LTR1ST
      IF(MOVLIN.GT.0)WRITE(JDISK,181)
       GO TO 183
     178 IF(MOVLIN.LT.0)WRITE(JDISK,179)(LTROUT(I),I=1,KNTPRT)
          IF(MOVLIN.EQ.0)WRITE(JDISK,180)LTR1ST,(LTROUT(I),I=1,KNTPRT)
        IF(MOVLIN.GT.0)WRITE(JDISK,181)(LTROUT(I),I=1,KNTPRT)
      179 FORMAT(1H+,300A1)
  180 FORMAT(1A1,300A1)
  181 FORMAT(1H1,300A1)
      GO TO 183
     182 IF(KNTPRT.GT.0)WRITE(JDISK,179)(LTROUT(I),I=1,KNTPRT)
      183 CONTINUE
    C
  C     LINE COMPLETED
     184 LOCPAG=LOCPAG+1
        GO TO 185
   C
  C     RETURN TO CALLING PROGRAM
    185 RETURN
       END
          SUBROUTINE RNOLOW(LSTTTL,IGAPLO,KTRMNL,LNGBOT,ITTLLO,
         1ISUBLO)
C     RENBR(/CALCULATE TITLE AND SUBTITLE POSITIONS)
 C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION LSTTTL(80)
        LNGBOT=0
          ITTLLO=-1
         IF(LSTTTL(21).NE.0)ITTLLO=0
      IF(LSTTTL(26).NE.0)ITTLLO=0
      ISUBLO=-1
         IF(LSTTTL(31).NE.0)ISUBLO=0
      IF(LSTTTL(36).NE.0)ISUBLO=0
      IF(ITTLLO.GE.0)GO TO 1
      IF(ISUBLO.LT.0)GO TO 8
      IF(ISUBLO.LT.IGAPLO)ISUBLO=IGAPLO
          GO TO 2
    1 IF(ITTLLO.LT.IGAPLO)ITTLLO=IGAPLO
        2 LNGBOT=ITTLLO+ISUBLO+2
      IF(KTRMNL.NE.0)GO TO 8
C     ITTLLO = -1, NO TITLE AT BOTTOM OF PAGE
   C            = 0 OR GREATER, NUMBER OF BLANK LINES ABOVE
  C              TITLE AT BOTTOM OF PAGE.
    C     ISUBLO = -1, NO SUBTITLE AT BOTTOM OF PAGE
C            = 0 OR GREATER, NUMBER OF BLANK LINES ABOVE
  C              SUBTITLE, EITHER AFTER BOTTOM OF ORDINARY
  C              TEXT OR AFTER TITLE IF THERE IS ONE.
        IF(LSTTTL(21).NE.0)GO TO 3
       IF(LSTTTL(26).NE.0)GO TO 3
       IF(LSTTTL(31).NE.0)GO TO 4
       IF(LSTTTL(36).NE.0)GO TO 4
       ITTLLO=-1
         ISUBLO=-1
         LNGBOT=0
          GO TO 8
    3 IF(LSTTTL(31).NE.0)GO TO 5
       IF(LSTTTL(36).NE.0)GO TO 5
 C
  C     TITLE ONLY
        ITTLLO=0
          IF(LSTTTL(21).EQ.2)ITTLLO=1
      IF(LSTTTL(21).EQ.3)ITTLLO=1
      IF(LSTTTL(26).EQ.2)ITTLLO=1
      IF(LSTTTL(26).EQ.3)ITTLLO=1
      IF(ITTLLO.LT.IGAPLO)ITTLLO=IGAPLO
          ISUBLO=-1
         LNGBOT=ITTLLO+1
        I=0
          IF(LSTTTL(21).EQ.3)I=1
      IF(LSTTTL(21).EQ.4)I=1
      IF(LSTTTL(26).EQ.3)I=1
      IF(LSTTTL(26).EQ.4)I=1
      LNGBOT=LNGBOT+I
        GO TO 8
C
  C     SUBTITLE ONLY
        4 ITTLLO=-1
         ISUBLO=0
          IF(LSTTTL(31).EQ.2)ISUBLO=1
      IF(LSTTTL(31).EQ.3)ISUBLO=1
      IF(LSTTTL(36).EQ.2)ISUBLO=1
      IF(LSTTTL(36).EQ.3)ISUBLO=1
      IF(ISUBLO.LT.IGAPLO)ISUBLO=IGAPLO
          LNGBOT=ISUBLO+1
        I=0
          IF(LSTTTL(31).EQ.3)I=1
      IF(LSTTTL(31).EQ.4)I=1
      IF(LSTTTL(36).EQ.3)I=1
      IF(LSTTTL(36).EQ.4)I=1
      LNGBOT=LNGBOT+I
        GO TO 8
C
  C     BOTH TITLE AND SUBTITLE
        5 ITTLLO=0
          IF(LSTTTL(21).EQ.2)ITTLLO=1
      IF(LSTTTL(21).EQ.3)ITTLLO=1
      IF(LSTTTL(26).EQ.2)ITTLLO=1
      IF(LSTTTL(26).EQ.3)ITTLLO=1
      IF(ITTLLO.LT.IGAPLO)ITTLLO=IGAPLO
          ISUBLO=0
          I=0
          IF(LSTTTL(21).EQ.0)GO TO 6
       IF(LSTTTL(31).EQ.0)GO TO 6
       IF(LSTTTL(21).EQ.3)I=1
      IF(LSTTTL(21).EQ.4)I=1
      IF(LSTTTL(31).EQ.2)I=I+1
         IF(LSTTTL(31).EQ.3)I=I+1
       6 ISUBLO=I
          I=0
          IF(LSTTTL(26).EQ.0)GO TO 7
       IF(LSTTTL(36).EQ.0)GO TO 7
       IF(LSTTTL(26).EQ.3)I=1
      IF(LSTTTL(26).EQ.4)I=1
      IF(LSTTTL(36).EQ.2)I=I+1
         IF(LSTTTL(36).EQ.3)I=I+1
       7 IF(ISUBLO.LT.I)ISUBLO=I
          LNGBOT=ITTLLO+ISUBLO+2
      I=0
          IF(LSTTTL(31).EQ.3)I=1
      IF(LSTTTL(31).EQ.4)I=1
      IF(LSTTTL(36).EQ.3)I=1
      IF(LSTTTL(36).EQ.4)I=1
      LNGBOT=LNGBOT+I
      8 RETURN
       END
          SUBROUTINE RNOHIH(LSTTTL,MRGTOP,KTRMNL,LNGTOP,ITTLHI,
         1ISUBHI,IGAPHI,MINTOP,IFLSUB,IFRSUB)
  C     RENBR(/CALCULATE TITLE AND SUBTITLE POSITIONS)
 C
  C     DONALD E. BARTH, YALE SCHOOL OF MANAGEMENT
C
        DIMENSION LSTTTL(80)
        LNGTOP=0
          ITTLHI=-1
         IF(LSTTTL(1).NE.0)ITTLHI=0
       IF(LSTTTL(6).NE.0)ITTLHI=0
       ISUBHI=-1
         IF(LSTTTL(11).NE.0)ISUBHI=0
      IF(LSTTTL(16).NE.0)ISUBHI=0
      IF(IFLSUB.GT.0)ISUBHI=0
          IF(IFRSUB.GT.0)ISUBHI=0
          IF(ITTLHI.GE.0)GO TO 1
      IF(ISUBHI.LT.0)GO TO 8
      IF(ISUBHI.LT.MRGTOP)ISUBHI=MRGTOP
          GO TO 2
    1 IF(ITTLHI.LT.MRGTOP)ITTLHI=MRGTOP
        2 LNGTOP=ITTLHI+ISUBHI+IGAPHI+2
         IF(KTRMNL.NE.0)GO TO 8
C     ITTLHI = -1, NO TITLE AT BOTTOM OF PAGE
   C            = 0 OR GREATER, NUMBER OF BLANK LINES ABOVE
  C              TITLE AT BOTTOM OF PAGE.
    C     ISUBHI = -1, NO SUBTITLE AT BOTTOM OF PAGE
C            = 0 OR GREATER, NUMBER OF BLANK LINES ABOVE
  C              SUBTITLE, EITHER AFTER BOTTOM OF ORDINARY
  C              TEXT OR AFTER TITLE IF THERE IS ONE.
        IF(LSTTTL(1).NE.0)GO TO 3
        IF(LSTTTL(6).NE.0)GO TO 3
        IF(LSTTTL(11).NE.0)GO TO 4
       IF(LSTTTL(16).NE.0)GO TO 4
       IF(IFLSUB.GT.0)GO TO 4
      IF(IFRSUB.GT.0)GO TO 4
      ITTLHI=-1
         ISUBHI=-1
         LNGTOP=0
          GO TO 8
    3 IF(LSTTTL(11).NE.0)GO TO 5
       IF(LSTTTL(16).NE.0)GO TO 5
       IF(IFLSUB.GT.0)GO TO 5
      IF(IFRSUB.GT.0)GO TO 5
C
  C     TITLE ONLY
        ITTLHI=0
          IF(LSTTTL(1).EQ.2)ITTLHI=1
       IF(LSTTTL(1).EQ.3)ITTLHI=1
       IF(LSTTTL(6).EQ.2)ITTLHI=1
       IF(LSTTTL(6).EQ.3)ITTLHI=1
       IF(ITTLHI.LT.MRGTOP)ITTLHI=MRGTOP
          ISUBHI=-1
         LNGTOP=ITTLHI+1
        I=0
          IF(LSTTTL(1).EQ.3)I=1
       IF(LSTTTL(1).EQ.4)I=1
       IF(LSTTTL(6).EQ.3)I=1
       IF(LSTTTL(6).EQ.4)I=1
       IF(I.LT.IGAPHI)I=IGAPHI
          LNGTOP=LNGTOP+I
        GO TO 8
C
  C     SUBTITLE ONLY
        4 ITTLHI=-1
         ISUBHI=0
          IF(LSTTTL(11).EQ.2)ISUBHI=1
      IF(LSTTTL(11).EQ.3)ISUBHI=1
      IF(LSTTTL(16).EQ.2)ISUBHI=1
      IF(LSTTTL(16).EQ.3)ISUBHI=1
      IF(ISUBHI.LT.MRGTOP)ISUBHI=MRGTOP
          LNGTOP=ISUBHI+1
        I=0
          IF(LSTTTL(11).EQ.3)I=1
      IF(LSTTTL(11).EQ.4)I=1
      IF(LSTTTL(16).EQ.3)I=1
      IF(LSTTTL(16).EQ.4)I=1
      IF(I.LT.IGAPHI)I=IGAPHI
          LNGTOP=LNGTOP+I
        GO TO 8
C
  C     BOTH TITLE AND SUBTITLE
        5 ITTLHI=0
          IF(LSTTTL(1).EQ.2)ITTLHI=1
       IF(LSTTTL(1).EQ.3)ITTLHI=1
       IF(LSTTTL(6).EQ.2)ITTLHI=1
       IF(LSTTTL(6).EQ.3)ITTLHI=1
       IF(ITTLHI.LT.MRGTOP)ITTLHI=MRGTOP
          ISUBHI=0
          I=0
          IF(LSTTTL(1).EQ.0)GO TO 6
        IF(LSTTTL(11).EQ.0)GO TO 6
       IF(LSTTTL(1).EQ.3)I=1
       IF(LSTTTL(1).EQ.4)I=1
       IF(LSTTTL(11).EQ.2)I=I+1
         IF(LSTTTL(11).EQ.3)I=I+1
       6 ISUBHI=I
          I=0
          IF(LSTTTL(6).EQ.0)GO TO 7
        IF(LSTTTL(16).EQ.0)GO TO 7
       IF(LSTTTL(6).EQ.3)I=1
       IF(LSTTTL(6).EQ.4)I=1
       IF(LSTTTL(16).EQ.2)I=I+1
         IF(LSTTTL(16).EQ.3)I=I+1
       7 IF(ISUBHI.LT.I)ISUBHI=I
          LNGTOP=ITTLHI+ISUBHI+2
      I=0
          IF(LSTTTL(11).EQ.3)I=1
      IF(LSTTTL(11).EQ.4)I=1
      IF(LSTTTL(16).EQ.3)I=1
      IF(LSTTTL(16).EQ.4)I=1
      IF(I.LT.IGAPHI)I=IGAPHI
          LNGTOP=LNGTOP+I
      8 IF(LNGTOP.LT.MINTOP)LNGTOP=MINTOP
          RETURN
       END