      SUBROUTINE REUSER
C     RENBR(REUSR2/DIALOG OF SWITCHES THEN NAMES 1 PER LINE
C
C     DONALD BARTH, HARVARD BUSINESS SCHOOL
C
C     THIS VERSION  OF THE   USER  COMMAND DIALOG PROCESSOR
C     FOR RENBR RUNS ON THE PDP-10 COMPUTER.  COMMAND TYPED
C     BY THE USER CONSISTS OF 1 OR  SEVERAL  SWITCHES  WITH
C     NUMERIC ARGUMENTS.  FILE NAMES WILL BE ACCEPTED 1 PER
C     LINE IF A /D SWITCH IS ISSUED.  ONLY A  SINGLE  INPUT
C     FILE  CAN  BE  PROCESSED DURING A SINGLE EXECUTION OF
C     THIS PROGRAM.
C
      COMMON/RNBONE/I     ,IALPHA,IBASE ,IBR   ,IBREAK,
     1IEND  ,IENTER,IEOF  ,IERR  ,IFILL ,IFORM ,IHIHDO,
     2IIN   ,ILEVEL,ILPT  ,INCR  ,INCSAV,INDENT,INITOC,
     3INRCPY,INRFND,INIOPR,IOUT  ,IPAGE ,IPASS ,ISPACE,
     4ISPLIT,ISPR  ,ISTART,ISTN  ,ITAB  ,ITBL  ,ITITLE,
     5ITTY  ,J     ,JBGN  ,JBREAK,JEND  ,JEOF  ,JFORM ,
     6JIN   ,JIN1  ,JLEVEL,JMPBGN,JMPEND,JOUT  ,JPASS ,
     7JSPLIT,JSTN  ,JTAB  ,JTTY  ,K     ,KLEVEL,KNDGRP,
     8KNT   ,MAXPRT,KNTONE,KNTPNT,KNTSPL,KNTTOC,KNTTWO,
     9KOMENT,KOMKNT,KOMNUM,KONTRL,KOUNT ,KPAGE
      COMMON/RNBTWO/MASTER,KPYEND,KSTN  ,KTAB  ,KUTNUM,
     1KUTPNT,KUTSPL,L     ,LCLNUM,LCLPNT,LCLSPL,LEFT  ,
     2LIKE  ,LMTTOC,LOW1  ,LOW2  ,LOWDO ,LOWER ,
     3LPTTTY,LRGSPL,LRGNUM,LRGPNT,LRGTOC,LSTKNT,LSTN  ,
     4LSTSTN,LTAB  ,M     ,MANY  ,MAXEND,MAXLIN,MAXPNT,
     5MAXSPL,MAXTOC,MID   ,MOST  ,MOVE  ,MSTN  ,MTAB  ,
     6N     ,NCD   ,NEED  ,NEWNUM,NEWSTN,NONFOR,
     7NSTN  ,NUM   ,LOWTOC,NXTLST,IPOINT,JPOINT,NXTEND,
     8KEND  ,NTAB  ,IFREAR,KPOINT,KBGN  ,LEND  ,LNGNAM,
     9LOWSHO,ININAM,JTBL  ,NOWTOC,LPOINT,INIPRT,JOBNUM
      COMMON/RNBTHR/MODBAS,MODINC,MODMAX,MODMIN,MODNEW,
     1MODOLD,KMDMIN,KMDMAX,ITRACE,LNGCOM,LNGNXT,KPASS
      COMMON/RNBFOU/INRSTR(21)  ,JPNT  (10)  ,MCHOPR(50)  ,
     1 NNEW  (1000),NOLD  (1000),NOTOPR(50)  ,NUMPNT(5000),
     2 NUMPRS(515) ,NUMTOC(112) ,NUMTYP(7)   ,LINREF(9)
      COMMON/RNBFIV/LTRCCC,LTRCLN,LTREQL,LTREXC,LTRHHH,
     1LTRLFT,LTRMNS,LTRPLS,LTRQOT,LTRRIT,LTRSEM,LTRSLA,
     2LTRSPC,LTRTAB,LWRCCC,LWRHHH,LTRNOW,LTR1ST,LTR2ND,
     3LTRREF,LTRDDD,LWRDDD,LTREEE,LWREEE,LTRDOT,LTRSTR
      COMMON/RNBSIX/LTRABC(26)  ,LTRBGN(5)   ,LTRBIG(2211),
     1 LTRDGT(10)  ,LTREND(3)   ,LTRFLG(7)   ,LTRKEY(5)   ,
     2 LTROPR(50)  ,LTRPRS(247) ,LTRSPL(2000),LTRTOC(168) ,
     3 LTRTOP(117) ,LTRTTL(5)   ,LTRTYP(55)  ,LTRUSE(6)   ,
     4 LWRABC(26)  ,LWRBGN(5)   ,LWREND(3)   ,LWRFLG(7)   ,
     5 LWRKEY(5)   ,LWRPRS(247) ,LWRTTL(5)   ,LTRNAM(10)  ,
     6 LTRSRT(26)  ,LWRSRT(26)  ,LTR120(120)
C
      DOUBLE PRECISION FILSRC,FILRNB,FILLPT,FILSPC
      DATA FILSPC/10H          /
C
C     CLEAR DEFAULT VALUES
      JPASS=1
      IF(MASTER.EQ.0)GO TO 2
      IF(MASTER.NE.1)GO TO 78
      WRITE(ITTY,1)
    1 FORMAT(14H RENBR (01/79)/17H Type /H for Help)
    2 JIN=JTAB
      JBGN=IFORM
      JEND=JFORM
    3 IPAGE=0
      ISPACE=0
      INCR=0
      IBASE=0
      INDENT=0
      ISPLIT=0
      IFILL=0
      ITAB=0
      IFORM=JBGN
      JFORM=JEND
      JTAB=JIN
      LTAB=0
      ITBL=1
      JMPEND=0
      JMPBGN=0
      KMDMIN=0
      KMDMAX=0
      ITRACE=0
      WRITE(ITTY,4)
    4 FORMAT(2H *,$)
      READ(JTTY,5)(LTRBIG(I),I=1,70)
    5 FORMAT(70A1)
C
C     INTERPRET OPTIONS
      INDEX=0
      LPTTTY=0
    6 INDEX=INDEX+1
    7 IF(INDEX.GT.70)GO TO 46
      LTRNOW=LTRBIG(INDEX)
      IF(LTRNOW.EQ.LTRSPC)GO TO 6
      IF(LTRNOW.EQ.LTRTAB)GO TO 6
C
C     TEST LETTER TO DETERMINE WHAT OPTION IS DESIRED
    8 KNDFLG=0
    9 KNDFLG=KNDFLG+1
      IF(KNDFLG.GT.26)GO TO 6
      IF(LTRABC(KNDFLG).EQ.LTRNOW)GO TO 10
      IF(LWRABC(KNDFLG).NE.LTRNOW)GO TO 9
C     GO TO( A, B, C, D, E, F, G, H, I, J,
C    1       K, L, M, N, O, P, Q, R, S, T,
C    2       U, V, W, X, Y, Z),KNDFLG
   10 GO TO(21,19,14, 6,20,20,20,45,21,20,
     1      12,20,19, 6, 6,21, 6, 6,20,13,
     2      15,17,21, 6, 6,11),KNDFLG
   11 ITRACE=1
      GO TO 6
   12 ISPLIT=0
      GO TO 18
   13 ITAB=1
      GO TO 16
   14 ITAB=0
      GO TO 16
   15 ITAB=-1
   16 IF(INCR.EQ.0)INCR=1
      GO TO 6
   17 LPTTTY=1
   18 IF(IPAGE.EQ.0)IPAGE=1
      GO TO 6
   19 IF(INCR.EQ.0)INCR=1
      GO TO 21
   20 IF(IPAGE.EQ.0)IPAGE=1
C
C     EVALUATE NUMBER TO RIGHT OF LETTER
   21 NUMFLG=0
      KNDNUM=0
   22 INDEX=INDEX+1
      IF(INDEX.GT.70)GO TO 27
      LTRNOW=LTRBIG(INDEX)
      IF(LTRNOW.EQ.LTRSPC)GO TO 23
      IF(LTRNOW.NE.LTRTAB)GO TO 24
   23 IF(KNDNUM.LE.0)GO TO 22
      GO TO 27
   24 DO 26 L=1,10
      IF(LTRDGT(L).NE.LTRNOW)GO TO 26
      IF(KNDNUM.GT.1)GO TO 25
      KNDNUM=1
      NUMFLG=(10*NUMFLG)+L-1
      GO TO 22
   25 NUMFLG=(10*NUMFLG)-L+1
      GO TO 22
   26 CONTINUE
      IF(KNDNUM.GT.0)GO TO 27
      IF(LTRNOW.EQ.LTRPLS)KNDNUM=1
      IF(LTRNOW.EQ.LTRMNS)KNDNUM=2
      IF(KNDNUM.GT.0)GO TO 22
      IF(KNDNUM.NE.0)GO TO 27
      IF(LTRNOW.EQ.LTRCLN)KNDNUM=-1
      IF(KNDNUM.NE.0)GO TO 22
C     GO TO( A, B, C, D, E, F, G, H, I, J,
C    1       K, L, M, N, O, P, Q, R, S, T,
C    2       U, V, W, X, Y, Z,L/,J/,M/),KNDFLG
   27 INDEX=INDEX-1
      IF(KNDFLG.EQ.9)GO TO 39
      IF(NUMFLG.LT.0)NUMFLG=0
      GO TO(29,31, 6, 6,43,40,30, 6,39,32,
     1       7,41,33, 6, 6,28, 6, 6,44, 6,
     2       7, 6,37, 6, 6, 6,38,34,35),KNDFLG
   28 IPAGE=NUMFLG
      IF(IPAGE.EQ.0)IPAGE=1
      GO TO 6
   29 INDENT=NUMFLG
      IF(INDENT.EQ.0)INDENT=1
      GO TO 6
   30 ISPACE=NUMFLG
      IF(ISPACE.EQ.0)ISPACE=1
      GO TO 6
   31 IBASE=NUMFLG
      GO TO 6
   32 JMPBGN=NUMFLG
      KNDFLG=28
      GO TO 21
   33 KMDMIN=NUMFLG
      KNDFLG=29
      GO TO 21
   34 JMPEND=NUMFLG
      GO TO 6
   35 IF(NUMFLG.GT.0)GO TO 36
      IF(KMDMIN.GT.0)NUMFLG=99999
      IF(KMDMIN.EQ.0)KMDMIN=-1
   36 IF(KMDMIN.EQ.0)KMDMIN=1
      KMDMAX=NUMFLG
      GO TO 6
   37 JTAB=NUMFLG
      IF(JTAB.EQ.0)JTAB=JIN
      LTAB=1
      GO TO 6
   38 IF(NUMFLG.GT.10)IFORM=NUMFLG
      GO TO 6
   39 INCR=NUMFLG
      IF(INCR.EQ.0)INCR=1
      GO TO 6
   40 IFILL=0
      GO TO 42
   41 IFILL=1
   42 JFORM=NUMFLG
      IF(JFORM.LE.10)JFORM=JEND
      IFORM=JBGN
      IF(IFILL.EQ.0)GO TO 6
      IF(ISPLIT.EQ.0)ISPLIT=1
      IF(INDEX.GT.70)GO TO 6
      KNDFLG=27
      GO TO 21
   43 ITBL=NUMFLG+1
      IF(ITBL.EQ.1)ITBL=2
      GO TO 6
   44 ISPLIT=NUMFLG+1
      GO TO 6
C
C     ISSUE HELP MESSAGE
   45 CALL REHELP(ITTY)
      GO TO 3
C
C     REPORT OPTIONS SELECTED
   46 IF(IPAGE.NE.0)GO TO 47
      IF(INCR.NE.0)GO TO 47
      IF(MASTER.EQ.0)GO TO 89
      GO TO 3
   47 IF(INDENT.GT.0)WRITE(ITTY,48)INDENT
   48 FORMAT(4X,16HAdd Block Indent,1I5)
      IF(LTAB.NE.0)WRITE(ITTY,49)JTAB
   49 FORMAT(2X,18HWidth of Tab Stops,1I5)
      IF(IPAGE.EQ.0)GO TO 58
      WRITE(ITTY,50)IPAGE
   50 FORMAT(10X,15HListing Options/9X,11HPage Number,1I5)
      IF(ISPACE.NE.0)WRITE(ITTY,51)ISPACE
   51 FORMAT(2X,18HGap Interstatement,1I5)
      IF(IFILL.EQ.0)WRITE(ITTY,52)JFORM
   52 FORMAT(10X,10HForm Feeds,1I5)
      IF(IFILL.NE.0)WRITE(ITTY,53)JFORM,IFORM
   53 FORMAT(10X,10HLine Feeds,1I5,1H:,1I5)
      IF((JMPBGN+JMPEND).NE.0)WRITE(ITTY,54)JMPBGN,JMPEND
   54 FORMAT(2X,18HJump at Top/Bottom,1I5,1H:,1I5)
      IF(ISPLIT.EQ.0)WRITE(ITTY,55)
   55 FORMAT(3X,17HKeep Lines Intact)
      I=ISPLIT-1
      IF(ISPLIT.NE.0)WRITE(ITTY,56)I
   56 FORMAT(4X,16HSplit Long Lines,1I5)
      I=ITBL-1
      IF(I.NE.0)WRITE(ITTY,57)I
   57 FORMAT(1X,19HExtra Table Content,1I5)
      IF(INCR.EQ.0)GO TO 70
   58 WRITE(ITTY,59)
   59 FORMAT(6X,19HRenumbering Options)
      IF(KMDMIN.GT.0)GO TO 61
      IF(KMDMIN.EQ.0)GO TO 63
      WRITE(ITTY,60)
   60 FORMAT(2X,18HMaintain Numbering)
      GO TO 66
   61 WRITE(ITTY,62)KMDMIN,KMDMAX
   62 FORMAT(3X,17HModify Only Range,1I5,1H:,1I5)
   63 WRITE(ITTY,64)INCR
   64 FORMAT(11X,9HIncrement,1I5)
      IF(IBASE.NE.0)WRITE(ITTY,65)IBASE
   65 FORMAT(16X,4HBase,1I5)
   66 IF(ITAB.LT.0)WRITE(ITTY,67)
   67 FORMAT(20H Uniform Left Margin)
      IF(ITAB.EQ.0)WRITE(ITTY,68)
   68 FORMAT(7X,13HColumn Format)
      IF(ITAB.GT.0)WRITE(ITTY,69)
   69 FORMAT(10X,10HTab Format)
C
C     OPEN LISTING FILE
   70 IF(IPAGE.LE.0)GO TO 76
      WRITE(ITTY,71)
   71 FORMAT(16H Listing Title: ,$)
      READ(JTTY,72)(LTRTOP(I),I=1,54)
   72 FORMAT(54A1)
      IF(LPTTTY.NE.0)GO TO 75
   73 WRITE(ITTY,74)
   74 FORMAT(25H    Output Listing File: ,$)
      READ(JTTY,81)FILLPT
      IF(FILLPT.EQ.FILSPC)GO TO 73
      OPEN(UNIT=ILPT,FILE=FILLPT,ACCESS='SEQOUT',
     1DEVICE='LPT')
      GO TO 76
   75 OPEN(UNIT=ILPT,FILE=FILLPT,ACCESS='SEQOUT',
     1DEVICE='TTY')
C
C     OPEN RENUMBERED OUTPUT FILE
   76 IF(INCR.EQ.0)GO TO 79
      WRITE(ITTY,77)
   77 FORMAT(25H Output Renumbered File: ,$)
      READ(JTTY,81)FILRNB
      IF(FILRNB.EQ.FILSPC)GO TO 76
      OPEN(UNIT=IOUT,FILE=FILRNB,ACCESS='SEQOUT')
      GO TO 79
C
C     OPEN INPUT FILE
   78 CLOSE(UNIT=IIN)
      IF(LPTTTY.NE.0)GO TO 89
   79 WRITE(ITTY,80)
   80 FORMAT(25H      Input Source File: ,$)
      READ(JTTY,81)FILSRC
   81 FORMAT(1A10)
      IF(FILSRC.EQ.FILSPC)GO TO 84
      OPEN(UNIT=IIN,FILE=FILSRC,ACCESS='SEQIN',ERR=82)
      IF(MASTER.EQ.1)GO TO 86
      GO TO 90
   82 WRITE(ITTY,83)
   83 FORMAT(20H File cannot be read)
      GO TO 79
   84 IF(MASTER.NE.1)GO TO 89
      WRITE(ITTY,85)
   85 FORMAT(35H First input file must be specified)
      GO TO 79
C
C     POSITION PAPER IF TELETYPE OUTPUT
   86 IF(IPAGE.EQ.0)GO TO 90
      IF(LPTTTY.EQ.0)GO TO 90
      IF(IFILL.EQ.0)GO TO 90
      WRITE(ITTY,87)
   87 FORMAT(1X/15H Position paper,
     137H (carriage return or local line feed)/
     230H then type non-space character,
     320H and carriage return)
   88 READ(JTTY,5)LTRNOW
      IF(LTRNOW.EQ.LTRSPC)GO TO 88
      GO TO 90
C
C     RETURN TO CALLING PROGRAM
   89 JPASS=0
   90 RETURN
C820263007417$:'
      END
      SUBROUTINE REHELP(ITTY)
C     RENBR(REHLP2/DIALOG OF SWITCHES THEN NAMES 1 PER LINE
      WRITE(ITTY,1)
      WRITE(ITTY,2)
      WRITE(ITTY,3)
      WRITE(ITTY,4)
      WRITE(ITTY,5)
      WRITE(ITTY,6)
      WRITE(ITTY,7)
      WRITE(ITTY,8)
      WRITE(ITTY,9)
    1 FORMAT(42H This program renumbers and/or lists FORTR,
     119HAN programs.  First/26H line  typed by user consi,
     235Hsts of switches having form /letter/10H or /lette,
     349Hr:number  or  /letter:number:number  where  initi,
     42Hal/44H slash  and  colons  are  optional.   Thus  ,
     517HA5 and L60 66 are/28H equivalent to /A:5 and /L:6,
     633H0:66 respectively.  If listing is/12H requested, ,
     749H user  must  on  following  line type title to be/
     849H placed at top of each page of listing.  User  mu,
     912Hst  then  on)
    2 FORMAT(42H subsequent lines type names of output and,
     119H input files.  List/26H of input files must be te,
     235Hrminated by blank input  file  name/10H after  wh,
     349Hich  program will request switches to be applied ,
     42Hto/44H next input files.  Processing is terminated,
     517H if  no  switches/11H are typed./1H /9H Followin,
     626Hg switches are recognized./1H /15H A followed by ,
     746Hnumber of spaces to add left of statements  in/
     849H   IF THEN block or in DO loop.  /A or /A:0 equal,
     96Hs /A:1)
    3 FORMAT(42H B followed by smallest statement number i,
     119Hn renumbered output/26H C column formatted renumb,
     235Hered output with statement  numbers/10H   ending ,
     349Hin column 5.  Statement text will start in column,
     42H 7/44H E followed by number of extra tables  of  c,
     517Hontents.   /E  or/19H   /E:0 equals /E:1/6H F lis,
     649Hting device has form feed.  Pages in  listing  wi,
     76Hll  be/40H   separated  by  form  feeds if output ,
     821His to LPT device.  /F/24H   can be followed by nu,
     937Hmber of lines printable per page.  /F)
    4 FORMAT(23H   or /F:0 equals /F:60/15H G followed by ,
     146Hnumber of blank lines  to  be  listed  between/
     249H   FORTRAN  statements.   No  extra  blank  lines,
     312H  are listed/33H   between comment lines.  /G or ,
     416H/G:0 equals /G:1/29H I followed  by  increment  b,
     532Hetween  statement   numbers   in/13H   renumbered,
     648H  output.  Negative increment, such as specified/
     749H   by  /I:-1,  gives  smallest  number  at  end  ,
     812Hof  program./33H   Smallest number will be absolu,
     928Hte value of increment unless)
    5 FORMAT(42H   /B specifies non-zero smallest number. ,
     119H /I or /I:0  equals/7H   /I:1/16H J followed by n,
     245Humber of blank lines to be at top of 1st,  at/1H ,
     349H  bottom  of  2nd  and  top  of 3rd pages, etc.  ,
     411HThis can be/34H   followed by number of blank lin,
     527Hes to be at bottom of  1st,/18H   at  top  of 2nd,
     643H and bottom of 3rd pages, etc.  These blank/3H   ,
     749Hlines are inserted to allow top binding of unburs,
     89Ht fanfold/37H   paper   and  must  be  included  i,
     924Hn  printing  line  limit)
    6 FORMAT(24H   specified by /F or /L/14H K long lines ,
     132Hare to be kept intact in listing/13H L pages in l,
     248Histing will be separated by counted line  feeds./
     349H   /L  can be followed by number of lines printab,
     412Hle per page./33H   This can be followed by total ,
     528Hnumber of  lines  per  page./17H   /S:0  is  assu,
     644Hmed if /S has not already been selected.  /L/2H  ,
     724H or /L:0 equals /L:60:66/21H M if issued not foll,
     840Howed by a number, old statement  numbers)
    7 FORMAT(42H   are maintained.  If M is followed by 2 ,
     119Hnumbers, then these/26H   are lowest and highest ,
     232Hstatement numbers to be modified/13H P followed b,
     348Hy first page number  in  listing.   /P  or  /P:0/
     414H   equals /P:1/31H S followed by number of charac,
     530Hters printable  beyond  normal/15H   right  margi,
     646Hn.   Excess  characters are right justified on/
     749H   following line.  /S or  /S:0  gives  70  chara,
     812Hcter  lines./18H   /S:13 equals /K)
    8 FORMAT(42H T tab  formatted  renumbered  output.   T,
     119Hab  character  will/25H   precede statement text/
     249H U column formatted renumbered output with statem,
     312Hent  numbers/33H   starting in column 1.  Stateme,
     428Hnt text will start in column/4H   7/10H V listing,
     549H is to be viewed  on this terminal.    Only 1 inp,
     62Hut/24H   file can be specified/16H W followed by w,
     745Hidth of tab stop  columns  to  be  used  when/1H ,
     849H  converting  tabs  to  spaces  in  comment  line,
     911Hs.  Tabs in)
    9 FORMAT(42H   comment lines  are  not  converted  in ,
     119H renumbered  output/26H   unless /W is typed.  /W,
     220H or /W:0 equals /W:8/1H /21H Listing file is iden,
     340Htified by /E, /F, /G, /J,  /K,  /L,  /P,/6H /S an,
     449Hd /V.   Default options are initial page number 1,
     56H, form/40H feeds,  intact long lines,  single spac,
     621Hing,  and 1  table of/10H contents./1H /7H Renumb,
     749Hered output is identified by /B, /C, /I, /M, /T o,
     85Hr /U./41H Default options are smallest statement n,
     920Humber 1, increment 1/19H and column format./1H )
      RETURN
C913598328167:
      END

