Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-01 - 43,50202/renbr.doc
There are 6 other files named renbr.doc in the archive. Click here to see a list.


	  RRRRRRR     EEEEEEEEE  NNN     NN  BBBBBBB     RRRRRRR
	  RRR   RRR   EEE        NNNN    NN  BBB   BBB   RRR   RRR
	  RRR    RRR  EEE        NNNNN   NN  BBB    BBB  RRR    RRR
	  RRR   RRR   EEE        NNNNNN  NN  BBB   BBB   RRR   RRR
	  RRRRRRR     EEEEEEEEE  NN NNNN NN  BBBBBBB     RRRRRRR
	  RRR  RRR    EEE        NN  NNNNNN  BBB   BBB   RRR  RRR
	  RRR   RRR   EEE        NN   NNNNN  BBB    BBB  RRR   RRR
	  RRR    RRR  EEE        NN    NNNN  BBB   BBB   RRR    RRR
	  RRR    RRR  EEEEEEEEE  NN     NNN  BBBBBBB     RRR    RRR
	     RRRR   RR         EE  NNNNN   NN       BBBBB   RRRR
	      RRRR   RR   EEEEEEEE  NNNN    NN   BBB   BBB   RRRR
	       RRR   RRR   EEEEEEEE  NNN     NN   BBBB   BB   RRR
	        RR   RRRR   EEEEEEEE  NN      NN   BBB   BBB   RR
	             RRRRR         EE  N    N  NN       BBBBB
	          RRR   RRR   EEEEEEEE      NN  NN   BBB   BBB   RRR
	           RRRR   RR   EEEEEEEE     NNN  NN   BBBB   BB   RRRR
	            RRR   RRR   EEEEEEEE    NNNN  NN   BBB   BBB   RRR
	                 RRRRR         EE   NNNNN  NN       BBBBB

	  26 May 1979

	       RENBR, the FORTRAN Renumbering and Listing Program
	       ------ --- ------- ----------- --- ------- -------

	  RENBR is a  program  which  sequentially  statement  numbers
	  and/or  forms cross-referenced listings of FORTRAN programs.
	  RENBR is itself written in FORTRAN.  Although RENBR  accepts
	  user   commands   containing   DECsystem-10   (PDP-10)  file
	  specifications,  the  routines  which  support   this   file
	  notation can easily be removed or replaced if RENBR is to be
	  used on other computers.

	  RENBR can process programs  and  routines  written  in  1966
	  standard   FORTRAN   or   in  some  dialects  of  the  older
	  FORTRAN-II.  RENBR can also process  programs  and  routines
	  which  use  the  FORTRAN  language extensions allowed by the
	  DECsystem-10  F40  compiler  and  by  version   5   of   the
	  DECsystem-10 FORTRAN-10 compiler.

	  RENBR will treat an alphameric string consisting either of a
	  leading  decimal number followed by the letter H and then by
	  the string, or else enclosed within matching apostrophes  as
	  a  single  unit  similar  to  a  variable name.  RENBR would
	  recognize that the 56's and the 57's, but not the 55's,  are
	  statement numbers in statements such as
	        IF(A.EQ.10H)GO TO 55;)GO TO 56;GO TO 57
	  or
	        IF(A.EQ.')GO TO 55;')GO TO 56;GO TO 57
	  where the first ;  on each line is  part  of  an  alphameric
	  string  but  the  second  ;   on each line is a DECsystem-10
	  FORTRAN convention indicating that another statement follows
	  on  the same line.  RENBR can also detect when a FORTRAN key
	  word is instead being used as  a  variable  or  array  name.
	  RENBR  would recognize that the variable named DO55I and the
	  array location READ(5,10) are being assigned values  in  the
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 2


	  following statements.
	        DO 55 I=12
	        DO 55 I='5,10'
	        DO 55 I=4H5,10
	        DO 55 I=READ(5,10)
	  and
	        READ(5,10)=DO55I

	  Prior to renumbering a program for the first time, the  user
	  should  check that no space character which is at the end of
	  a line is a part  of  an  alphameric  string  (a  string  of
	  characters  enclosed  between  apostrophes  or  following  a
	  decimal number and the character H).  Such  strings  can  be
	  split onto the continuation line after a printing character,
	  or can  be  enclosed  in  apostrophes  if  previously  in  H
	  notation,  or  if in a FORMAT statement can be broken into 2
	  separate  strings.   RENBR  cannot  distinguish  whether   a
	  terminal  space was in the original file or was simulated by
	  the FORTRAN operating system's input routines.


	   Instructions for Use of RENBR on the DECsystem-10 Computer
	   ------------ --- --- -- ----- -- --- --------- -- --------

	  On  the  DECsystem-10  computer,  FORTRAN  programs  can  be
	  written  either  in  conventional  column  form  having  the
	  statement text in columns 7 through 72, or in  tab  form  in
	  which   an  optional  left  justified  statement  number  is
	  separated by  a  tab  character  from  an  optional  nonzero
	  continuation digit and up to 66 characters of text.  The tab
	  character is a  nonprinting  character  which  advances  the
	  location of the next character to the next column beyond the
	  next multiple of 8 columns from the left margin.  RENBR  can
	  process programs written in either column or tab form, or in
	  a mixture  of  these  forms,  and  will  produce  as  output
	  whichever  form is selected by the user.  RENBR can also, on
	  request, convert tab characters in comment lines into spaces
	  filling  to  the tab stops.  Such tab to space conversion is
	  often necessary when readying programs  for  compilation  on
	  other  computer  systems  which  do  not  recognize  the tab
	  character.

	  This program can process a series of input files.  A  single
	  input  file can contain many programs and/or routines, but a
	  program or  routine,  or  even  a  statement,  can  also  be
	  continued  from one input file to the next.  Each input file
	  must, however,  start  a  new  line.   If,  in  addition  to
	  statement numbers, any input file contains the line sequence
	  numbers used by line oriented editors  on  the  DECsystem-10
	  computer,  then  these line sequence numbers must be removed
	  before the  file  can  be  processed  by  RENBR  since  line
	  sequence  numbers  cannot  be identified as such by programs
	  written in FORTRAN.  Line sequence numbers can be removed by
	  selecting  the /N switch when using the PIP cusp to copy the
	  file.
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 3


	  When started, RENBR will suggest that the user  type  /H  to
	  obtain  a  help  message, and then will wait for the user to
	  type a command.  A maximum of 72 characters  is  allowed  in
	  each  line  forming  the  command,  but  the  command can be
	  continued on a subsequent line if the current line ends with
	  either a rightmost comma or with an & (ampersand) character.
	  However, a single file specification cannot be continued  on
	  the  following line.  The command can be read from a file if
	  the user  types  the  name  of  this  file  either  preceded
	  directly by an @ (at) character or followed directly by an @
	  character.  If the command is read from  a  file,  then  the
	  names  of  the  input  files  can  appear  on separate lines
	  without the use of & characters at the ends of the preceding
	  lines.    The  file  can  contain  several  commands  to  be
	  processed separately  only  if  these  are  separated  by  ;
	  (semicolon)  characters.   All  characters  following  an  !
	  (exclamation point) character, following an &  character  or
	  following  the file specification with which the @ character
	  appears are ignored.

	  The command which is typed by the user or which is read from
	  a  command  file  can  consist  of  the  name  of the output
	  renumbered file and/or the name of the output listing  file,
	  followed  by  an = character and a list of one or more input
	  source files separated by commas.  If both output files  are
	  specified,  then a comma should separate these, and a switch
	  must appear with at least one of these  file  specifications
	  to  imply  its  use  since either type of output file can be
	  specified first.   If  either  one  or  no  output  file  is
	  specified,  and  if  no  switch  implies  that  a listing is
	  desired, then a renumbered output file is produced  instead.
	  A  title  which is to be included at the top of each page in
	  the  output  listing   file   can   be   specified   between
	  apostrophes.   A  pair  of  apostrophes  can be typed at any
	  location at which the title is to itself  include  a  single
	  apostrophe.  If such a title is specified to the left of the
	  = character, then the file with which it  is  associated  is
	  implied to be the output listing file.

	  A single file specification can consist  of  a  device  name
	  followed  by  a  colon,  followed  by  the file name.  If no
	  device name is specified for the output listing  file,  then
	  the  output  listing file is written to logical device LPT:.
	  Any other file for which no device is specified  is  assumed
	  to  be  on  or  to  be  written to logical device DSK:.  The
	  directory or path upon which the  file  is  located  can  be
	  specified  before  the  device name, between the device name
	  and the file name, or after the file  name.   The  directory
	  specification  can  consist  of  an octal project number, an
	  octal programmer number,  and  a  single  subfile  directory
	  (SFD) name separated by commas and enclosed between left and
	  right square brackets.  If either a programmer number or  an
	  SFD name is being specified, then all items to its left must
	  also be supplied.  The user's local directory is assumed  if
	  none  is  specified.   However,  once the user has specified
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 4


	  either a device name or a  directory  for  an  input  source
	  file,  then  this device name or this directory continues to
	  be used for all subsequent  input  source  files  for  which
	  these items are not specified.

	  Each file name can consist of up to 6 characters followed by
	  a period and then by an extension which can consist of up to
	  3 characters.  The file name extensions .NEW, .LPT, .FOR and
	  .RNB  are  used  as defaults for the output renumbered file,
	  for the output listing file, for the input source files, and
	  for the command file if extensions are not specified for the
	  names of these files.  If a file name  is  to  have  a  null
	  extension  consisting  of  3  spaces,  then a period must be
	  typed following the first part of the file name.  The  first
	  part  of  the name of the first input source file is used as
	  the first part of the name of an output file  if  the  first
	  part  of  the name of this output file is not specified.  If
	  the first part of the name of a  command  file  is  missing,
	  then the default name RENBR is assumed.

	  For example, the command
	       DACOPY
	  is identical to the command
	       DSK:DACOPY.NEW/I=DSK:DACOPY.FOR
	  where the /I is  a  switch  described  below  which  implies
	  renumbering.

	  Either of the commands
	       DACOPY'this is a title
	  or
	       'this is a title'DACOPY
	  is identical to the command
	       'this is a title'LPT:DACOPY.LPT=DSK:DACOPY.FOR
	  where the text to the right of the apostrophe or between the
	  apostrophes is a title for the listing.

	  Each of the commands
	       DACOPY/I'title
	       DACOPY'title'/I
	       /I DACOPY'title
	       'title'DACOPY/I
	       /I'title'DACOPY
	  and
	       'title'/I DACOPY
	  is equavalent to the command
	       LPT:DACOPY.LPT'title',/I DSK:DACOPY.NEW=DSK:DACOPY.FOR

	  The command
	       PRVI:.LST='title'DAHEST,DSKB:DAHEFT.F4[22,56],DAVERB
	  is equivalent to the command
	       PRVI:DAHEST.LST'title'=DSK:DAHEST.FOR&
	       DSKB:[22,56]DAHEFT.F4,[22,56]DSKB:DAVERB.FOR
	  and would generate a single listing on device PRVI: of the 3
	  files  DAHEST.FOR,  DAHEFT.F4  and  DAVERB.FOR, the latter 2
	  being read from area [22,56] on device DSKB:.
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 5


	  The command
	       @[35,56,SAMPLE]
	  is equivalent to the command
	       @[35,56,SAMPLE]RENBR.RNB
	  and would cause the command to be read  from  the  RENBR.RNB
	  file in the [35,56,SAMPLE] area.  If This file contains
	       .FOR=ONE;
	       .FOR=TWO;.FOR=THREE
	       ;.FOR=FOUR
	       ;'title'ONE
	       TWO,THREE
	       FOUR
	  then the files ONE.FOR, TWO.FOR, THREE.FOR and  FOUR.FOR  in
	  the  user's  local  area  would  be  replaced  by renumbered
	  versions having the same names,  following  which  a  single
	  listing of all of these renumbered files would be generated.


	  Switches Typed by User to Control Renumbering and/or Listing
	  -------- ----- -- ---- -- ------- ----------- --- -- -------

	  The switches which are described below have the general form
	       /letter:number:number
	  where the letter can be in either upper or lower case.  Some
	  switches  do not accept following numbers.  Standard default
	  values are assumed for numbers which are missing.

	  /A followed by the number of extra spaces which  are  to  be
	     added  to  the left of each statement inside a DO loop or
	     inside an IF block in the renumbered  output  or  in  the
	     listing.   When  DO  loops or IF blocks are embedded, the
	     range of  each  additional  loop  or  block  is  indented
	     further.   Either  /A  without a following number or /A:0
	     implies /A:1.

	     Shown below is an example  of  the  application  of  this
	     switch  to  multiply  embedded DO loops.  In this and the
	     next 2 examples, the unindented  FORTRAN  statements  are
	     shown  at  the  left  and the indented FORTRAN statements
	     resulting from the application of /A:5 are shown  at  the
	     right.

	           a=0                      a=0
	           do 2 b=1,10              do 2 b=1,10
	           c=0                           c=0
	           do 1 d=1,10                   do 1 d=1,10
	           e=0                                e=0
	           do 1 f=1,10                        do 1 f=1,10
	           g=0                                     g=0
	         1 continue               1      continue
	           h=0                           h=0
	           do 2 i=1,10                   do 2 i=1,10
	           j=0                                j=0
	         2 continue               2 continue
	           k=0                      k=0
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 6


	     Shown below is an example  of  the  application  of  this
	     switch to multiply embedded IF blocks.

	           A=0                      A=0
	           IF(B.EQ.0)THEN           IF(B.EQ.0)THEN
	           C=0                           C=0
	           IF(D.EQ.0)THEN                IF(D.EQ.0)THEN
	           E=0                                E=0
	           END IF                        END IF
	           F=0                           F=0
	           ELSE IF(G.EQ.0)THEN      ELSE IF(G.EQ.0)THEN
	           H=0                           H=0
	           IF(I.EQ.0)THEN                IF(I.EQ.0)THEN
	           J=0                                J=0
	           END IF                        END IF
	           K=0                           K=0
	           ELSE                     ELSE
	           L=0                           L=0
	           IF(M.EQ.0)THEN                IF(M.EQ.0)THEN
	           N=0                                N=0
	           END IF                        END IF
	           O=0                           O=0
	           END IF                   END IF
	           P=0                      P=0

	     Shown below is an example  of  the  application  of  this
	     switch  to  DO  loops  inside  IF blocks and of IF blocks
	     inside DO loops.

	           A=0                      A=0
	           IF(B.EQ.0)THEN           IF(B.EQ.0)THEN
	           C=0                           C=0
	           DO 2 D=1,10                   DO 2 D=1,10
	           E=0                                E=0
	           IF(F.EQ.0)THEN                     IF(F.EQ.0)THEN
	           G=0                                     G=0
	           DO 1 H=1,10                             DO 1 H=1,10
	           I=0                                          I=0
	         1 CONTINUE               1                CONTINUE
	           J=0                                     J=0
	           END IF                             END IF
	           K=0                                K=0
	         2 CONTINUE               2      CONTINUE
	           L=0                           L=0
	           END IF                   END IF
	           M=0                      M=0

	     Except for the addition of the extra  spaces  within  the
	     range  of  DO  loops and of IF blocks, the first printing
	     character  within  the  statement  field  of  a   FORTRAN
	     statement  will  be  either in column 7 if column form is
	     selected, or following the tab character if tab  form  is
	     selected  regardless  of  the original indentation of the
	     first line of the statement.  The original indentation of
	     each continuation line is preserved if possible.
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 7


	  /B followed by the smallest statement  number  which  is  to
	     appear  in  each  program  and  routine in the renumbered
	     output.  If a /I switch is given but a /B switch  is  not
	     given,  then  the  absolute value of the number appearing
	     after  the  /I  switch  will  be  used  as  the  smallest
	     statement  number.   A  /B  switch  appearing on a CRENBR
	     command line (see later description  of  this)  within  a
	     particular  program  or  routine  can for that program or
	     routine supersede the smallest statement number  selected
	     by the user.

	     If the /B switch is issued without  a  following  number,
	     and  if  the  /I  switch  has not been issued, then it is
	     assumed that the user meant to type /I:1 instead  of  /B.
	     Values  specified  by  the user's typing of the /B switch
	     and/or the /I switch can be modified by a CRENBR  command
	     line  (see  later  description  of  this) locally for the
	     routine in which this command line appears.  If a nonzero
	     value  of  the  lowest  statement  number  has  not  been
	     specified either by the user or by a CRENBR command  line
	     within   the  routine,  then  the  value  of  the  lowest
	     statement number in a routine after renumbering  will  be
	     the absolute value of the statement number increment used
	     to renumber the routine.  This allows the  production  of
	     reasonable statement numbers even if the statement number
	     increment, but not  the  smallest  statement  number,  is
	     specified.   On  the  other  hand,  the  lowest statement
	     number can be specified by  the  user  for  all  routines
	     except for those in which it is specified internally by a
	     CRENBR command line.

	  /C the renumbered output will be  produced  in  column  form
	     such  that the text of the initial line of each statement
	     which is not within the range of a DO loop  or  IF  block
	     will  start  in  column  7.   The  rightmost digit of the
	     statement number, if any, will be in column 5.   A  digit
	     in  the  range  1  through  9 will be used in column 6 to
	     indicate a continuation line.   Although  the  renumbered
	     output is generated in column form, the original programs
	     and routines can be in either column or tab forms, or  in
	     any mixture of these.

	     The following 3 examples resulted  from  renumbering  the
	     same  sequence of FORTRAN statements with the /C, /U, and
	     /T  switches  respectively.   Although  the  /U  and   /T
	     switches appear to produce similar results, the /U switch
	     causes spaces to be inserted between the statement number
	     and  the  following  text to force the first character of
	     the statement to be in column  7,  while  the  /T  switch
	     causes  a  single  tab  character  to  appear between the
	     statement number and the following text.
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 8


	       applying /C        applying /U        applying /T

	     C234567890123456   C234567890123456   C234567890123456
	         8 DO 9 I=1,2   8     DO 9 I=1,2   8       DO 9 I=1,2
	           DO 9 J=1,5         DO 9 J=1,5           DO 9 J=1,5
	         9 IJ=IJ+       9     IJ=IJ+       9       IJ=IJ+
	          1LOC(I,J)          1LOC(I,J)             1LOC(I,J)
	        10 TYPE 11,IJ   10    TYPE 11,IJ   10      TYPE 11,IJ
	        11 FORMAT(I5)   11    FORMAT(I5)   11      FORMAT(I5)

	  /E followed by the number of extra tables of contents  which
	     are  to  be  included  at  the end of the listing.  Extra
	     tables of contents might be necessary if a  long  listing
	     is  to  be  bound  as  several  volumes.   /E  without  a
	     following number or /E:0 implies /E:1.

	  /F the device upon which the listing is to be generated  can
	     eject  a  page  of  paper  when  a form feed character is
	     encountered.  Line feeds do not then have to be  used  in
	     the  listing  to  simulate  form feeds.  The pages in the
	     listing will be separated by form feeds if the output  is
	     being  sent  either  to  device  LPT  (the default) or to
	     device TTY.  The character 1 (the digit one) will  appear
	     in column 1 where a form feed is needed if the listing is
	     written to any other device.  /F can be followed  by  the
	     number   of  lines  which  are  printable  per  page  not
	     including those lines skipped over automatically  at  the
	     page  boundaries.   /F without a following number or /F:0
	     implies /F:60.

	  /G followed by the number of blank lines  which  are  to  be
	     included  in  the  listing  between  consecutive  FORTRAN
	     statements.  No extra blank lines  are  inserted  between
	     comment  lines  or  between  the  continuation lines of a
	     single statement.  /G without a following number or  /G:0
	     implies /G:1.

	  /H types a summary of the switches  which  are  accepted  by
	     RENBR.   Any  file specifications which have already been
	     typed by the user are ignored.

	  /I followed by the increment which is  to  be  used  between
	     statement  numbers  in the renumbered output.  A negative
	     increment, such as would be  specified  by  /I:-1,  would
	     cause the smallest number to be at the end of the program
	     rather than at the beginning.  The smallest  number  will
	     be  the  absolute value of the statement number increment
	     unless /B is issued and is followed by a number which  is
	     greater  than zero.  Either /I without a following number
	     or /I:0 implies /I:1.

	  /J followed by the number of blank lines which are to appear
	     in  the listing at the top of the 1st page, at the bottom
	     of the 2nd page, at the top of the 3rd page, and  so  on.
	     This  number can be followed by the number of blank lines
	  RENBR, the FORTRAN Renumbering and Listing Program    Page 9


	     which are to appear at the bottom of the 1st page, at the
	     top  of  the 2nd page, at the bottom of the 3rd page, and
	     so on.  These blank lines could be inserted to allow  top
	     binding  of unburst fanfold paper and must be included in
	     the maximum number of printable lines  specified  by  the
	     number  following  a  /F  switch  or  by the first number
	     following a /L switch.  /J:6 or /J:6:0 would skip 6 lines
	     at  the  top  of  the 1st page, both before and after the
	     separation between pages 2 and 3, between pages 4 and  5,
	     and  so  on.   /J:0:6  or  /J::6  would skip 6 lines both
	     before and after the separation between pages  1  and  2,
	     between pages 3 and 4, and so on.

	  /K long lines are to be kept intact in the listing.  The  /S
	     switch can be issued instead to select the point at which
	     long lines are to be  wrapped  around  to  give  narrower
	     listings.

	  /L the pages in the listing must  be  separated  by  counted
	     line  feeds.  The /L switch can be followed by the number
	     of lines which are printable per page not including those
	     lines which are to be skipped over at the page boundaries
	     by the printing of extra empty lines.  This number can be
	     followed  by the total number of lines per page including
	     those lines which are to be  skipped  over  at  the  page
	     boundaries by the printing of extra empty lines.  /S:0 is
	     assumed if a /S switch has not already been selected.  If
	     the  /K  switch  is desired, then it must be issued after
	     the /L switch.  /L without a  following  number  or  /L:0
	     implies /L:60:66.

	  /M if issued without a following number, then  the  original
	     statement  numbers  will  be retained in all programs and
	     routines which are processed.  It should  be  noted  that
	     the  /M  switch without following numbers has a different
	     meaning when included on a CRENBR command line  within  a
	     program or routine being processed.

	     If the /M switch is issued with 2 following numbers, then
	     these  numbers  are  the  the lowest and highest original
	     statement numbers which will be modified in all  programs
	     and routines which are processed.  All original statement
	     numbers which are either less than the  first  number  or
	     greater  than  the  second  number will be retained.  The
	     first number following the /M switch is assumed to  be  1
	     if it is missing but the second number is specified.  The
	     second number is assumed to be 99999 if it is missing but
	     the  first  number  is specified.  The /M switch could be
	     used to identify a section of a program or routine  which
	     is to be modified and then grafted back into the original
	     program  or  routine  since  all  references  within  the
	     section  to  statements  outside the section would remain
	     correct.

	     If a /M switch, either with or without following numbers,
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 10


	     is  issued  by  the  user, then all /B, /I, /M, /N and /O
	     switches  issued  on  CRENBR  command  lines  within  the
	     programs and routines being processed will be ignored.

	  /P followed by the number which  is  to  appear  as  a  page
	     number at the upper right corner of the first page in the
	     listing.  Issuing the /P switch  with  a  number  greater
	     than  1 does not suppress any portion of the listing.  /P
	     without a following number or /P:0 implies /P:1.

	  /S followed by the number of characters which can be printed
	     beyond  the  normal  right margin.  Excess characters are
	     right justified on the following  line.   120  characters
	     are  allowed in each line of a comment section introduced
	     by either a RENBRSTART or a RENBRTITLE  line  (see  later
	     descriptions of these) so a larger number in the range of
	     the /S switch  might  be  appropriate  for  such  comment
	     sections.

	     If the /S or /S:0 switch is issued then the listings will
	     have at most 69 characters per line (or 70 if the FORTRAN
	     carriage control character is counted).  The right margin
	     is then 1 inch wide on 8 1/2 inch wide paper (assuming 10
	     characters per inch), and FORTRAN lines  containing  over
	     59 characters will be split in the listing.  (In addition
	     to statement text,  each  line  printed  in  the  listing
	     contains the carriage control character and 10 characters
	     in the line number  and  margin  left  of  the  statement
	     number  field.) If wider paper is to be cut down to 8 1/2
	     inch width, and if the printer can print more characters,
	     then a narrower right margin can be obtained by following
	     the /S switch with the number of additional characters to
	     be allowed before the line is split.

	     If the /S is followed by a number which has a value of 69
	     or  greater,  then  this  number is assumed to be maximum
	     number of characters which can be  written  on  a  single
	     line   in   the   listing.   Thus,  /S:0  and  /S:69  are
	     equivalent.  Either /S:13 or /S:82 would  give  the  same
	     result  as  /K  when FORTRAN programs and/or routines are
	     being listed, unless a /C switch has also been issued  on
	     a  CRENBR  command  line  in the program or routine being
	     listed to cause more than 72 characters to be retained in
	     each FORTRAN comment line.

	     The following example is a portion of a listing which was
	     generated using /S:0, although the width of each line has
	     been reduced somewhat to fit this document.  In place  of
	     a  line  number  at  the  left  edge of the listing, each
	     overflow line is  indicated  by  the  number  of  leading
	     spaces  in  parentheses  if the excess text starts with a
	     space, or by minus signs otherwise.  The page  number  on
	     the  top  line  of each page always extends to the normal
	     right margin.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 11


	     SAMPLE TITLE                                    Page   12
	                                                  MAIN PROGRAM

	     98     48 KM=IN-1
	     99        IF(LINES.EQ.0)WRITE(ILPT,49)INDEX,IGROUP,NUMPRS
	     ----                                                (KM),
	     99       1NMBTWO,LTRTWO
	     100    49 FORMAT(1H ,1I4,2H (,1I3,1H ,1I4,13X,1I2,2I4,2H
	     ( 1)                                                ,5A1)

	  /T the renumbered output will be produced in tab  form  such
	     that  a  tab  character  will appear between the optional
	     statement number and the statement text.  A digit in  the
	     range  1 through 9 to the immediate right of the tab will
	     be used to indicate a continuation  line.   Although  the
	     renumbered  output is generated in tab form, the original
	     programs and/or routines can be in either column  or  tab
	     forms,  or in any mixture of these.  If a listing is also
	     being generated, then the statement numbers will be  left
	     justified  in the listing, but the rest of each statement
	     will be shown in column form in the listing.

	  /U the renumbered output will be  produced  in  column  form
	     with  the  statement numbers beginning in column 1 rather
	     than ending in column 5 as would be produced by /C.

	  /V the listing is to be viewed on the  local  terminal.   If
	     the /L switch is also issued, then the user will be asked
	     to position the paper to the next top of page before  the
	     program proceeds.

	  /W followed by the width of the tab stop columns  which  are
	     to  be  used  when converting tab characters to spaces in
	     the  comment  lines  for  either  the  listing   or   the
	     renumbered  output.   If  a /W switch is not issued, then
	     tab characters in comment lines are converted  to  spaces
	     using  a  column  width of 8 for the listing, but are not
	     converted  to  spaces  in  the  renumbered  output.   Tab
	     characters  in  FORTRAN statements are never converted to
	     spaces by this program.  /W without a following number or
	     /W:0 implies /W:8.

	  Short descriptions of each of these  switches  with  typical
	  arguments are listed below.

	  /A:5      add 5 spaces to left of DO loops and IF blocks
	  /B:100    base statement number is 100
	  /C        column format (see /T and /U)
	  /E:1      1 extra table of contents
	  /F:60     form feeds every 60 lines (see /L)
	  /G:1      gap of 1 line between each statement in listing
	  /H        help message is to be typed
	  /I:5      increment between statement numbers is 5
	  /J:0:4    jump 0 lines at top and 4 at bottom of first page
	  /K        keep lines intact (see /S)
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 12


	  /L:60:66  60 lines can be printed on pages 66 lines high
	  /M        maintain original statement numbers
	  /M:1:9    modify only statement numbers in range 1 through 9
	  /P:1      page numbering is to start with 1
	  /S:9      split lines 9 characters beyond right margin
	  /T        tab format
	  /U        uniform left justification of statement numbers
	  /V        view listing on controlling terminal
	  /W:8      width of tab stops is 8

	  A title enclosed in apostrophes, or any of the switches  /E,
	  /F,  /G,  /J, /K, /L, /P, /S or /V, specifies that a listing
	  is to be produced.  The default  options  for  listings  are
	  initial page number 1, form feeds, intact long lines, single
	  spacing, and 1 table of contents.   The  default  number  of
	  printable lines per page is 60.  The default total number of
	  lines per page, including the blank lines used  to  simulate
	  form  feeds  at  the  page  boundaries  if  the /L switch is
	  issued, is 66.  These default values could also be  selected
	  by typing the following switches
	       /F:60
	  or
	       /L:60:66

	  Any of the switches /B, /C, /I, /M, /T or /U specifies  that
	  a  new  renumbered  version  of  the  source  file  is to be
	  produced.  The default options for renumbering are  smallest
	  statement number 1, increment 1 and column form.

	  The switches /A and /W can be used  for  either  listing  or
	  renumbering.


	            Input File Conventions and Restrictions
	            ----- ---- ----------- --- ------------

	  The input source file can  contain  tab  characters  if  the
	  FORTRAN  compiler  and operating system allow these.  If the
	  compiler and/or operating system do not allow tabs  but  the
	  input  program  contains  tabs,  then  these  tabs should be
	  converted to 6 or  more  spaces  or  else  be  converted  to
	  sufficient  spaces  to  fill  to the normal tab stops if the
	  left tab stop is in, or to the right of, column 7 before the
	  input  source  file  is  processed by RENBR.  Lines in which
	  initial tabs have been converted to spaces will  be  treated
	  properly  by  RENBR since RENBR recognizes any line in which
	  the first printing character in or to the right of column  6
	  is  a digit to be a continuation line.  The tab character is
	  used in FORTRAN programs on  the  DECsystem-10  to  separate
	  statement number field from statement text.

	  RENBR can process programs  and  routines  written  in  1966
	  standard   FORTRAN   or   in  some  dialects  of  the  older
	  FORTRAN-II.  RENBR can also process  programs  and  routines
	  which  use  the  FORTRAN  language extensions allowed by the
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 13


	  DECsystem-10  F40  compiler  and  by  version   5   of   the
	  DECsystem-10 FORTRAN-10 compiler.  Unrecognizable statements
	  are copied into the renumbered output unchanged and will  be
	  correct  if  these  statements  do  not  reference statement
	  numbers.

	  The  alphabetic  letters  appearing  in  FORTRAN  statements
	  processed  by RENBR can be in either upper or lower case, or
	  in a mixture of these.

	  RENBR allows semicolons between statements which  appear  on
	  the  same line and allows exclamation points before comments
	  on the same lines as statements.  These  special  characters
	  are  recognized  only when they appear within the portion of
	  the line which can contain statement text.  If more than one
	  statement  appears  on a line, then only the first statement
	  can bear a statement number  since  the  text  of  the  next
	  statement   is   assumed  to  start  immediately  after  the
	  semicolon.  There  can  not  be  more  than  19  consecutive
	  continuation  lines  even  if  these represent more than one
	  statement.  The END statement can  bear  a  comment  to  its
	  right,  but  must  not  appear on the same line as any other
	  statement.  Comments which appear inside  statement  numbers
	  as in the statement
	        GO TO 5!COMMENT INSIDE THE STATEMENT NUMBER 56
	       16
	  are  discarded  although  the  statement  number  is  itself
	  treated  properly.   Only 2 DATA statement definitions would
	  need to be changed within the RENBR BLOCK  DATA  routine  to
	  allow  different characters to be used between statements or
	  to mark comments.  To completely deactivate the  support  of
	  nonstandard  features  such as these (or the tab form or the
	  extra relational operators <, > and #) which depend upon the
	  recognition  of  special characters, it is only necessary in
	  RENBR's  BLOCK  DATA  routine  to  redefine  the   variables
	  containing  these  characters  to  instead  contain  spaces.
	  RENBR tests explicitly for a space and transfers if a  space
	  is  found  before testing for the special characters, so the
	  tests against the redefined characters cannot succeed.

	  Restriction
	  RENBR detects the end of the input file by end-of-file tests
	  in  its READ statements.  If the end-of-file test feature is
	  not available, then the input file should be  terminated  by
	  an  extra END statement which will not appear in the output.
	  It will not be possible, however, to have a  single  program
	  or routine be split across two or more input source files if
	  end-of-file tests cannot be used in READ statements.

	  Restriction
	  The input source file must not contain line sequence numbers
	  left  of  the statement number field.  If present, such line
	  sequence  numbers  must  be  removed  before  the  file   is
	  processed by RENBR.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 14


	  Restriction
	  Continuation lines following a comment line  beginning  with
	  an  initial  * (asterisk) or letter C (either upper or lower
	  case) are taken as a continuation of  the  comment  and  are
	  written into the output unchanged.  For this reason, comment
	  lines beginning with an initial * or letter C  can  separate
	  statements, but cannot appear within a single statement.

	  Restriction
	  A line with a non-space non-tab  non-digit  character  other
	  than  an  * or the letter C (which would indicate a comment)
	  in column 1 followed by a tab, or by a number (formed of  no
	  more  than 4 digits) and a tab, or by 4 characters formed of
	  any  combination  of  spaces  (also  known  as   the   blank
	  character)  and/or  digits  will be taken as a legal FORTRAN
	  statement.  If the line begins a  new  statement,  then  the
	  initial  character will appear in the output at the start of
	  each line of the statement including all continuation  lines
	  (whether  or  not  the  character originally appeared at the
	  start of these continuation lines).  Some compilers  require
	  B, D or I in column 1 to specify variable type.

	  DECsystem-10 FORTRAN allows D in  column  1  to  indicate  a
	  debugging  line the compilation of which is optional.  RENBR
	  places the letter D in column 1 on each line of  the  copied
	  statement  if  and only if the letter D appeared in column 1
	  on the first line of the original  statement,  although  the
	  original  statement could have the letter D in column 1 on a
	  continuation line but not on the initial  line,  or  on  the
	  initial   line  but  not  on  the  continuation  line.   How
	  seriously this can change the portion of a program which  is
	  optionally   executable   depends  upon  which  DECsystem-10
	  compiler is used.  The F40 compiler  treats  a  continuation
	  line  after  the  line bearing the letter D in column 1 as a
	  continuation of a  comment  while  the  FORTRAN-10  compiler
	  treats  such  a  continuation  line as a continuation of the
	  previous statement.

	  Statement numbers in obsolete statements,  which  have  been
	  changed to comment lines by addition of an * or the letter C
	  to the  start  of  the  statements,  become  incorrect  when
	  programs  containing  them  are  renumbered.  Some compilers
	  ignore lines which begin with certain other characters,  but
	  RENBR treates such lines as FORTRAN statements and maintains
	  the  initial  characters.   In  DECsystem-10  FORTRAN,  a  $
	  (dollar sign) or / (slash) character in column 1 indicates a
	  command for another computer, so an obsolete line can become
	  a  comment  which  is  to  be  treated by RENBR as a FORTRAN
	  statement if the  character  in  column  1  of  a  statement
	  written in column form is replaced by a $ or / character, or
	  if a $ or / character is added to the start of  a  statement
	  written  in  tab  form.  (See also the description of the /R
	  switch in the CRENBR command line.)
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 15


	  Restriction
	  Spaces are trimmed from the right  end  of  lines  prior  to
	  output  regardless  of  syntax.   If  alphameric strings are
	  specified as the number of characters followed by the letter
	  H  and the characters of the string, then lines which end in
	  alphameric strings  containing  terminal  spaces  will  have
	  these  spaces  removed.   Therefore,  unless  the  output is
	  written onto cards, a statement such as
	      A=1H
	  should instead be written as
	      A=(1H )
	  or
	      A=' '
	  This deletion of terminal spaces can also  occur  in  FORMAT
	  statements   in   which  alphameric  strings  extend  across
	  continuation line  boundaries.   Any  alphameric  string  in
	  which  a  space appears at the right end of a line should be
	  rewritten manually before the program is processed by RENBR.

	  Restriction
	  A single statement can be  continued  on  no  more  than  19
	  lines.   Unless  the dimensions of the storage arrays within
	  the RENBR program are increased, a single  main  program  or
	  routine  being  renumbered can contain at most 1000 numbered
	  statements (or 25 less than this if a listing is also  being
	  made).   There  is no restriction on the number of statement
	  number references within a single main program or routine.

	  Restriction
	  The END statement which terminates a program  or  a  routine
	  must  appear  on  a single line, although the letters of the
	  word END can be preceded by or be  separated  by  spaces  or
	  tabs.   The END statement can have a statement number to its
	  left and can be followed  by  an  exclamation  point  and  a
	  comment  to its right, but the END statement must not appear
	  on the same line as any other statement.  The  input  source
	  files  can  contain any number of programs or routines, each
	  with its own END statement.  If the end-of-file  test  in  a
	  READ  statement  is  not  available,  then an additional END
	  statement, after the final program or routine in  the  input
	  source  file,  can  be  used  to  force  a normal exit which
	  includes printing of the table of contents.

	  Restriction
	  A line beginning a  new  statement  must  have  one  of  the
	  following formats.
	  A)  A line beginning with a non-tab character other than  an
	      *  or  the  letter  C followed by 4 spaces and/or digits
	      followed in column 6 by a space or by  a  zero.   It  is
	      possible  for the character in column 1 to be a space or
	      a digit of the statement number.
	  B)  A line beginning  with  a  tab  followed  by  the  first
	      character of the statement which cannot be a digit.
	  C)  A line beginning  with  a  non-tab  non-space  non-digit
	      character  other than an * or the letter C followed by a
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 16


	      tab followed by the first character of the statement.
	  D)  A line beginning with a digit or digits of the statement
	      number followed by a tab followed by the first character
	      of the statement.
	  E)  A line beginning  with  a  non-tab  non-space  non-digit
	      character  other  than  an * or the letter C followed by
	      the digit or digits of the statement number followed  by
	      a tab followed by the first character of the statement.
	  If (SPACE) represents a space, (TAB) represents  a  tab  and
	  (TEXT)  represents  the  text  of  the  statement,  then the
	  following are typical lines which start new statements.   Of
	  course,  the text of the statement can itself begin with one
	  or more spaces or tabs.
	      (SPACE)(SPACE)(SPACE)(SPACE)(SPACE)(SPACE)(TEXT)
	      (SPACE)(SPACE)(SPACE)(SPACE)(SPACE)0(TEXT)
	      D(SPACE)(SPACE)(SPACE)(SPACE)(SPACE)(TEXT)
	      D(SPACE)(SPACE)(SPACE)(SPACE)0(TEXT)
	      (SPACE)(SPACE)(SPACE)22(SPACE)(TEXT)
	      (SPACE)(SPACE)(SPACE)220(TEXT)
	      D(SPACE)(SPACE)22(SPACE)(TEXT)
	      D(SPACE)(SPACE)220(TEXT)
	      22(SPACE)(SPACE)(SPACE)(SPACE)(TEXT)
	      22(SPACE)(SPACE)(SPACE)0(TEXT)
	      D22(SPACE)(SPACE)(SPACE)(TEXT)
	      D22(SPACE)(SPACE)0(TEXT)
	      (TAB)(TEXT)
	      D(TAB)(TEXT)
	      22(TAB)(TEXT)
	      D22(TAB)(TEXT)

	  Restriction
	  A continuation line must have one of the following formats.
	  A)  A line beginning  with  a  non-tab  non-digit  character
	      other  than  an  *  or the letter C followed by 4 spaces
	      followed by a non-space non-tab non-zero character which
	      is  ignored.  The initial character can, of course, be a
	      space.
	  B)  A line beginning with a tab (or with 5 or  more  spaces)
	      followed by a non-zero digit which is ignored.
	  C)  A line beginning  with  a  non-tab  non-space  non-digit
	      character  other than an * or the letter C followed by a
	      tab (or by 4 or more  spaces)  followed  by  a  non-zero
	      digit which is ignored.
	  The following are typical continuation lines.
	      (SPACE)(SPACE)(SPACE)(SPACE)(SPACE)2(TEXT)
	      (SPACE)(SPACE)(SPACE)(SPACE)(SPACE)A(TEXT)
	      D(SPACE)(SPACE)(SPACE)(SPACE)2(TEXT)
	      D(SPACE)(SPACE)(SPACE)(SPACE)A(TEXT)
	      (TAB)2(TEXT)
	      D(TAB)2(TEXT)
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 17


	        Maintaining Logical Blocks of Statement Numbers
	        ----------- ------- ------ -- --------- -------

	  Some programmers select  statement  numbers  used  within  a
	  logical  section  of  a  program from a different range than
	  those used elsewhere within the  same  program.   RENBR  can
	  maintain  these  regions when renumbering.  However, since a
	  single normal renumbering  would  destroy  such  regions,  a
	  command  line within the program is used to specify the size
	  of the range of statement numbers  in  each  section  rather
	  than  querying  the user for this information.  This command
	  line is a comment line with an * or the letter C in column 1
	  followed  by  the  word  RENBR  and those switches for which
	  values are being specified.  A typical command line would be
	  CRENBR/I:-10/B:10(NAME/SUBTITLE FOR LISTING) O 200 N 400
	  where slashes can appear before the single  letter  switches
	  and colons can appear between the single letter switches and
	  the following numbers, but are not necessary.

	  The switches which can be used on the  CRENBR  command  line
	  are listed below.

	  /B specifies the  smallest  statement  number.   The  number
	     following  this  switch  will  be  the smallest generated
	     statement number which will appear within the  renumbered
	     program  or  routine.   Normally  this would be the first
	     statement number in the renumbered program,  but  if  the
	     increment   between   generated   statement   numbers  is
	     specified to be negative, then the base  number  will  be
	     the  number  of  the  final numbered statement within the
	     program.  If the /B switch does not appear on the  CRENBR
	     command line, then the value used as the base number will
	     be that specified by the user when RENBR was started,  or
	     will  be  the  absolute  value  of  the  statement number
	     increment if the user did not specify a base number  when
	     RENBR was started.

	  /C specifies that more than 72 characters are to be retained
	     in  each  of  the subsequent FORTRAN comment lines in the
	     current program or routine.  The  number  following  this
	     switch  is  the maximum number of characters, in addition
	     to the 72 characters usually processed, which are  to  be
	     read  and  written in each FORTRAN comment line.  If this
	     number has a value of 72 or greater, then this number  is
	     instead  assumed  to  be  the  total number of characters
	     which are to be retained in each  FORTRAN  comment  line.
	     Either  a  /C:8  or  a  /C:80 switch would cause up to 80
	     characters to be included in each FORTRAN  comment  line.
	     Unlike  the other switches which can appear on the CRENBR
	     command line,  the  /C  switch  does  not  apply  to  the
	     preceding  FORTRAN comment lines or to the CRENBR command
	     line in which it appears.   Although  a  previous  CRENBR
	     command line can change the number of characters retained
	     in the current CRENBR command line,  only  the  first  72
	     characters are ever evaluated on any CRENBR command line.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 18


	     The maximum value which can appear with the /C switch  is
	     120.

	  /I specifies the statement  number  increment.   The  number
	     following  this  switch  will  be  the  increment between
	     generated statement numbers.  If the /I switch  does  not
	     appear on the CRENBR command line, then the value used as
	     the increment will be that specified  by  the  user  when
	     RENBR  was  started,  or  will  be  1 if the user did not
	     specify a  statement  number  increment  when  RENBR  was
	     started.

	  /M if issued without a following number, then the  statement
	     number   regions   which  are  to  be  maintained  during
	     renumbering can be  mixed,  rather  than  separated  into
	     logical  blocks.   An example of the use of the /M switch
	     is given in a later section of this  instruction  manual.
	     The /M switch must not be issued if logical blocks are to
	     be maintained as described in this section of the manual.

	     If the /M switch is  follow  by  2  numbers,  then  these
	     numbers are the the lowest and highest original statement
	     numbers which will be modified.  All  original  statement
	     numbers  which  are  either less than the first number or
	     greater than the second number  will  be  retained.   The
	     first  number  following the /M switch is assumed to be 1
	     if it is missing but the second number is specified.  The
	     second number is assumed to be 99999 if it is missing but
	     the first number is specified.  The /M  switch  could  be
	     used  to identify a section of a program or routine which
	     is to be modified and then grafted back into the original
	     program  or  routine  since  all  references  within  the
	     section to statements outside the  section  would  remain
	     correct.   For example, the switch /M:100:200 or M100 200
	     would cause only those statement numbers which are in the
	     range 100 through and including 200 to be renumbered.

	     If the /M switch is followed by a single number, then the
	     second  number is assumed to have the value 99999 so that
	     all statement numbers which are greater than or equal  to
	     the  specified  number will be renumbered.  The /M switch
	     might be  used  with  a  single  number  to  prevent  the
	     accidental  renumbering  of  a  routine,  or to allow the
	     renumbering of only the more recent changes to a  routine
	     if  an  earlier  version of the routine is being retained
	     for comparison.

	     If a number or pair of numbers follows the /M switch then
	     the  statement  number base and increment can be selected
	     by the /B and /I switches, but the  /N  and  /O  switches
	     will be ignored if issued.

	  /N specifies the new region size.  The number following this
	     switch  specifies the jump in generated statement numbers
	     from  the  start  of  one  region  to  the  next  in  the
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 19


	     renumbered  program  or  routine.   To  prevent erroneous
	     scaling of the  statement  numbers  during  a  subsequent
	     renumbering  of the program or routine which contains the
	     CRENBR command line, a /O (old  region  size)  switch  is
	     removed  when  renumbering  is performed if the /O switch
	     has been preceded within the current program  or  routine
	     by  a  /N switch, and each /N switch is converted to a /O
	     switch.  If the /N switch does not appear on  any  CRENBR
	     command  line  in  the  program  or routine, then the old
	     region size as specified by the /O switch is also used as
	     the new region size.  If neither the /N switch nor the /O
	     switch appears on any CRENBR command line in the program,
	     then the regions of statement numbers are not preserved.

	  /O specifies the old region size.  The number following this
	     switch  specifies  the  jump  in  the  original statement
	     numbers from the start of one region to the next  in  the
	     program  which is being renumbered.  To prevent erroneous
	     scaling of the  statement  numbers  during  a  subsequent
	     renumbering  of the program or routine which contains the
	     CRENBR  command  line,  a  /O  switch  is  removed   when
	     renumbering  is  performed  if  the  /O  switch  has been
	     preceded within the current program or routine  by  a  /N
	     (new region size) switch, and each /N switch is converted
	     to a /O switch.  If the /O switch does not appear on  any
	     CRENBR  command  line in the program or routine, then the
	     new region size as specified by the  /N  switch  is  also
	     used  as  the  old region size.  If neither the /N switch
	     nor the /O switch appears on any CRENBR command  line  in
	     the  program,  then  the regions of statement numbers are
	     not preserved.

	  /R specifies how  statement  number  references  are  to  be
	     indicated  in comment lines.  The first printing (neither
	     a space nor a tab) character following the R switch  will
	     be  scanned  for  on all comment lines and, whenever this
	     character is found followed by a number, then this number
	     will  be  taken  as  a  statement number reference.  If a
	     colon follows  the  /R  switch,  then  colons  will  mark
	     statement  numbers  which  appear  on  comment lines.  If
	     renumbering is being performed, then the number marked by
	     this  character  will be replaced by the new value of the
	     referenced statement  number.   If  a  listing  is  being
	     produced,  then  the number marked by this character will
	     be placed into the list of  statement  number  references
	     with the associated line number being that of the FORTRAN
	     statement which precedes the comment in which the  number
	     is  located.   If  more than 1 statement number reference
	     appears on a single  comment  line,  then  each  must  be
	     preceded  by the character.  The character is scanned for
	     only on comment lines having an *  or  the  letter  C  in
	     column  1.   Spaces and/or tabs can appear on the comment
	     line  between  the  key  character  and   the   following
	     statement  number  but  are not required.  Spaces or tabs
	     cannot appear between the digits of  a  single  statement
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 20


	     number on a comment line.

	   ( specifies the  routine  name.   The  printing  characters
	     which  follow  the ( switch, through the end of the line,
	     or up to the next appearance of a  right  parenthesis  or
	     slash  character  on  the  line,  are  to  be used as the
	     routine name in the table of contents, and in the listing
	     page  titles.   Only the first 6 printing characters will
	     be used if more than 6 printing characters are  specified
	     in  the  name.  If the ( switch is not issued or does not
	     specify a name, then the routine name will be  that  read
	     from  the  SUBROUTINE,  FUNCTION,  BLOCK  DATA or PROGRAM
	     statement.  The (  switch  can  be  used  to  label  main
	     programs even though these would not usually have names.

	     If the slash character / appears after the  (  switch  or
	     after  the  routine name following the ( switch, then the
	     characters which follow the / character, through the  end
	     of  the  line,  or  to  the next appearance of a matching
	     right parenthesis on  the  line,  will  be  used  as  the
	     subtitle  in the listing.  Such a subtitle can consist of
	     at most 44 characters and can include spaces and balanced
	     parentheses.   The  subtitle  is  not  changed  if  the /
	     character does not appear after the ( switch or after the
	     routine  name  following the ( switch.  The subtitle will
	     be blank if it is not specified anywhere in  the  program
	     or routine.

	     The CRENBR command line containing the ( switch should be
	     issued at the start of a program or immediately following
	     the first statement of  a  routine  since  the  (  switch
	     cannot  change  the  routine  name  or  subtitle  in that
	     portion of the listing preceding its use  if  renumbering
	     is   not  being  performed.   (If  renumbering  is  being
	     performed, then the CRENBR command line is interpreted on
	     the first pass through the input program, and the listing
	     is produced on the second pass.  However, if  renumbering
	     is not being performed, then the listing is produced in a
	     single pass.)

	  The switches can appear in any order on the  CRENBR  command
	  line.   Only  the  /I  switch  will accept a negative value.
	  Although the initial * or letter C  must  be  in  column  1,
	  spaces  and  tabs  can  appear  anywhere  else on the CRENBR
	  command line except within numbers.

	  The values specified by the CRENBR command line apply to all
	  statement  numbers  within  a single program or routine, but
	  the CRENBR command line can appear anywhere in  the  program
	  or  routine  before the terminal END statement.  If multiple
	  CRENBR command lines  appear  within  a  single  program  or
	  routine, then the values which are used are the final values
	  specified for each switch.  The CRENBR command line  applies
	  only  to  the  program  or routine in which it appears.  The
	  default values of the switches (set by the user  when  RENBR
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 21


	  was  started)  are  restored for the next program or routine
	  read.  In the case of the N and /O switches, these  defaults
	  are to not preserve regions.

	  The CRENBR command line
	  CRENBR I-10 B 10 O 200 N 400
	  would specify that original regions 1-199, 200-399,  400-599
	  etc.   would be translated to regions such as 1-399, 400-799
	  and 800-1199.  The actual translation would  depend  on  the
	  relative  placement  of  the original regions.  For example,
	  using the above  CRENBR  command  line  (note  the  negative
	  increment),  the  statement number sequence (with 270 at the
	  start of the routine)
	      270  350  260  351   15    2    6  150   99 1600 1622
	  would be translated to the following sequence
	      830  820  810  800  440  430  420  410  400   20   10

	  To allow the insertion of  new  statements  into  a  region,
	  statement numbers which would normally be outside the region
	  are taken as part of the  surrounding  region  if  statement
	  numbers  both  before and after the insertion are within the
	  region.  Therefore, the statement number sequence
	      270 8350 4260  351   15    2    6  150   99 1600 1622
	  would be renumbered to produce  the  same  sequence  as  was
	  given before.


	       Bootstrapping Logical Blocks of Statement Numbers
	       ------------- ------- ------ -- --------- -------

	  If the CRENBR command line has specified that logical blocks
	  of  statement  numbers are to be preserved, then RENBR, when
	  assigning new statement numbers, will terminate each logical
	  block  of  statement  numbers  at the final statement number
	  which is within the range defined  by  the  first  statement
	  number  of  the block.  New statements, which bear statement
	  numbers outside the logical block ranges found elsewhere  in
	  the  program,  can  be inserted at the start and end of each
	  consecutive logical region of statements to force conversion
	  of statement numbers within these regions into consecutively
	  higher ranges.  There should, as a result,  be  a  temporary
	  statement  at  both  the  start and end of the program and 2
	  temporary statements  between  consecutive  regions.   Since
	  statements which temporarily define logical blocks should be
	  removed during or after renumbering, these  statements  need
	  not  be  written  in  legal  FORTRAN.   If  these  temporary
	  statements  consist  only  of  statement  numbers  and   not
	  statement  text,  then  RENBR  will  remove  these statement
	  numbers  when  the  program  or   routine   is   renumbered.
	  Following  the  bootstrapping,  a  statement  number will be
	  missing from the lower end of each region until the  program
	  is next renumbered.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 22


	      Maintaining Number Regions Keyed to Statement Types
	      ----------- ------ ------- ----- -- --------- -----

	  Many programmers use statement number size to  indicate  the
	  type of statement.  In particular, FORMAT statements and the
	  statements at the ends of DO loops are often assigned  large
	  numbers.   Use of the M switch without a following number on
	  the CRENBR command line allows the resulting mixed statement
	  number regions to be maintained during renumbering.  The new
	  statement numbers are based  on  the  order  in  which  they
	  appear  within  their respective regions.  The high order or
	  leftmost digits (relative to the original  region  size)  of
	  the  statement  numbers  are  maintained unless an expanding
	  region overflows into the next higher region in  which  case
	  the  higher  region must be offset to prevent duplication of
	  the new statement numbers.

	  For example, the command line
	  C     RENBR O1000 M I10
	  would cause the statement number sequence
	       35   20 4200  350  360 4090 2561 2009 4010   55   65
	  to be renumbered to
	       10   20 4000   30   40 4010 2000 2010 4020   50   60

	  Similarly, the command line
	  C     RENBR O1000 M I-10
	  would renumber the same original sequence to
	       60   50 4020   40   30 4010 2010 2000 4000   20   10

	  When using the /M switch without  a  following  number,  the
	  scaling  of  the  leftmost  digits  of the statement numbers
	  changes if the values appearing with the /N and /O  switches
	  are not equal.  For example, the command line
	  CRENBR/N:500/O:1000/M
	  would be converted to
	  CRENBR/O:500/      /M
	  and would change the statement number sequence
	       14440 30000  5700 15124  5207 14003 15123
	  into
	        7000 15000  2500  7500  2501  7001  7501


	         Inclusion of NonFORTRAN Text in the Input File
	         --------- -- ---------- ---- -- --- ----- ----

	  The first line of the first input source file, and the first
	  line  following  each FORTRAN END statement, are scanned for
	  the appearance of the letters  RENBRSTART  anywhere  on  the
	  line.   The  letters RENBRSTART can be preceded by any other
	  characters and can be separated by spaces or tabs.   If  the
	  letters  RENBRSTART are found, then the current line and all
	  following lines through the end of the  final  input  source
	  file  or  up to the next CRENBR command line will be treated
	  as comment lines.   The  name  to  be  associated  with  the
	  current comment section, and a subtitle for the listing, can
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 23


	  appear to the right of the letters RENBRSTART in the  format
	  in  which  this information could appear on a CRENBR command
	  line.  The name and subtitle will be blank in the listing if
	  these  are  not  specified  by  the RENBRSTART command line.
	  Additional RENBRSTART command lines can  appear  within  the
	  comment section to force the printing of a new page with new
	  name and new subtitle.  If the comment section is terminated
	  by  a  CRENBR command line, then this CRENBR command line is
	  considered to be a part of the following FORTRAN program  or
	  routine.

	  The ability to include comment  sections  within  the  input
	  file  allows  assembly  language routines, command files and
	  data to be listed with the FORTRAN programs with which these
	  are  used.   If  renumbering  is  being  performed, then the
	  comment sections are copied into the output file  unchanged.
	  If  a listing is being produced, then a line sequence number
	  is printed beside each line within the comment section,  and
	  the  comment  section  name  and  the  total number of lines
	  within the comment section are  included  in  the  table  of
	  contents, but the words and numbers appearing in the comment
	  section are not indexed.

	  A RENBRTITLE command line can be  used  for  much  the  same
	  purpose  as  a  RENBRSTART  command  line.  These 2 types of
	  command lines are identical if encountered at the  start  of
	  the   first  input  source  file  or  after  a  FORTRAN  END
	  statement.  The only difference between  these  2  types  of
	  command  lines  is  that, when encountered within an already
	  established comment section,  the  RENBRTITLE  command  line
	  does  not  force  the  printing  of  a  new page and, if the
	  RENBRTITLE command line does not specify  a  subtitle,  then
	  the  subtitle  previously  specified for the comment section
	  will remain unchanged.  The RENBRTITLE command line is  used
	  to  enter  an  additional  comment section name, and comment
	  section line total,  into  the  table  of  contents  without
	  starting a new page in the listing.  If the storage used for
	  the table of contents is  already  full,  then  the  current
	  table  of  contents  will  have to be printed before the new
	  name can be  added,  so  under  these  conditions  even  the
	  RENBRTITLE  command  line would force printing of a new page
	  after the table of contents.

	  A typical sequence of FORTRAN programs and comment  sections
	  would be
	            text of FORTRAN program or routine
	                  END
	            any charactersRENBRSTART(NAME/SUBTITLE)
	            comment section text
	            any charactersRENBRTITLE(NAME/SUBTITLE)
	            additional comment section text
	            CRENBR(NAME/SUBTITLE)
	            text of another FORTRAN program or routine
	                  END
	  It should be noted that if the FORTRAN system does not allow
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 24


	  end-of-file  tests  in  READ  statements,  then the sequence
	  CRENBR, END, END must appear at the end of the input  source
	  file  to  force  the printing of the table of contents if no
	  other FORTRAN routines follow a comment section.


	              Statement Types Recognized by RENBR
	              --------- ----- ---------- -- -----

	  RENBR can  recognize  statement  numbers  contained  in  the
	  following types of FORTRAN-II and FORTRAN-IV statements.  In
	  these examples, the number 20 has been used to represent any
	  FORTRAN  statement number and the number 10 has been used to
	  represent a number which is not a statement number.  The key
	  words  which  identify  these statements can also be used as
	  variable  names  or  as  array  names  without  causing  any
	  difficulties.   The  ability  to handle statement numbers in
	  other types of statements can be easily added.

	  ACCEPT 20
	  ACCEPT 20,LIST OF VARIABLES
	  ACCEPT TAPE 20
	  ACCEPT TAPE 20,LIST OF VARIABLES
	  ASSIGN 20 TO INTEGER VARIABLE
	  CALL ROUTINE(OPTIONAL ARGUMENTS,*20,OPTIONAL ARGUMENTS)
	  CALL ROUTINE(OPTIONAL ARGUMENTS,$20,OPTIONAL ARGUMENTS)
	  CALL ROUTINE(OPTIONAL ARGUMENTS,&20,OPTIONAL ARGUMENTS)
	  CLOSE(OPTIONAL SPECIFICATIONS,ERR=20,OPTIONALSPECIFICATIONS)
	  DECODE(10,20,VARIABLE)LIST OF VARIABLES
	  DECODE(10,20,VARIABLE,ERR=20)LIST OF VARIABLES
	  DO 20 INTEGER VARIABLE=EXPRESSION,EXPRESSION
	  DO 20,INTEGER VARIABLE=EXPRESSION,EXPRESSION
	  DO 20 INTEGER VARIABLE=EXPRESSION,EXPRESSION,EXPRESSION
	  DO 20,INTEGER VARIABLE=EXPRESSION,EXPRESSION,EXPRESSION
	  ENCODE(10,20,VARIABLE)LIST OF VARIABLES
	  ENCODE(10,20,VARIABLE,ERR=20)LIST OF VARIABLES
	  FREQUENCY 20(OPTIONAL NUMBERS), ... ,20(OPTIONAL NUMBERS)
	  FREQUENCY 20(10,10,10),20,20(10),20(10,10)      !FOR EXAMPLE
	  GO TO 20
	  GO TO INTEGER VARIABLE(20, ... ,20)
	  GO TO INTEGER VARIABLE,(20, ... ,20)
	  GO TO (20, ... ,20)INTEGER VARIABLE
	  GO TO (20, ... ,20),INTEGER VARIABLE
	  IF(EXPRESSION)20,20
	  IF(EXPRESSION)20,20,20
	  IF(EXPRESSION)STATEMENT
	  IF ACCUMULATOR OVERFLOW 20,20
	  IF ACCUMULATOR OVERFLOW 20,20,20
	  IF DIVIDE CHECK 20,20
	  IF DIVIDE CHECK 20,20,20
	  IF QUOTIENT OVERFLOW 20,20
	  IF QUOTIENT OVERFLOW 20,20,20
	  OPEN(OPTIONAL SPECIFICATIONS,ERR=20,OPTIONAL SPECIFICATIONS)
	  PRINT 20
	  PRINT 20,LIST OF VARIABLES
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 25


	  PUNCH 20
	  PUNCH 20,LIST OF VARIABLES
	  PUNCH TAPE 20
	  PUNCH TAPE 20,LIST OF VARIABLES
	  READ 20
	  READ(10,20)
	  READ(10,20,END=20)
	  READ(10,20,ERR=20)
	  READ(10,20,ERR=20,END=20)
	  READ(10,20,END=20,ERR=20)
	  READ(10,FORMAT,END=20)
	  READ(10,FORMAT,ERR=20)
	  READ(10,FORMAT,ERR=20,END=20)
	  READ(10,FORMAT,END=20,ERR=20)
	  READ(10'10,20,ERR=20,END=20)
	  READ(10#10,20,ERR=20,END=20)
	  READ 20,LIST OF VARIABLES
	  READ(10,20)LIST OF VARIABLES
	  READ(10,20,END=20)LIST OF VARIABLES
	  READ(10,20,ERR=20)LIST OF VARIABLES
	  READ(10,20,ERR=20,END=20)LIST OF VARIABLES
	  READ(10,20,END=20,ERR=20)LIST OF VARIABLES
	  READ(10,FORMAT,END=20)LIST OF VARIABLES
	  READ(10,FORMAT,ERR=20)LIST OF VARIABLES
	  READ(10,FORMAT,ERR=20,END=20)LIST OF VARIABLES
	  READ(10,FORMAT,END=20,ERR=20)LIST OF VARIABLES
	  READ(10'10,20,ERR=20,END=20)LIST OF VARIABLES
	  READ(10#10,20,ERR=20,END=20)LIST OF VARIABLES
	  READ INPUT TAPE 10,20
	  READ INPUT TAPE 10,20,LIST OF VARIABLES
	  REREAD 20
	  REREAD 20,LIST OF VARIABLES
	  TYPE 20
	  TYPE 20,LIST OF VARIABLES
	  WRITE 20
	  WRITE(10,20)
	  WRITE(10'10,20)
	  WRITE(10#10,20)
	  WRITE 20,LIST OF VARIABLES
	  WRITE(10,20)LIST OF VARIABLES
	  WRITE(10'10,20)LIST OF VARIABLES
	  WRITE(10#10,20)LIST OF VARIABLES
	  WRITE OUTPUT TAPE 10,20
	  WRITE OUTPUT TAPE 10,20,LIST OF VARIABLES

	  In addition to the above, the following statement types  are
	  recognized  although  these  do not contain statement number
	  references.

	  FIND statements of the form FIND(10'10) or  FIND(10#10)  are
	       recognized  so  that the unit and record numbers can be
	       separated before being entered into the index.

	  DATA and FORMAT statements  are  recognized  so  that  items
	       following these keywords are not indexed.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 26


	  IF(expression)THEN, ELSE IF(expression)THEN, ELSE,  and  END
	       IF   statements   are   recognized  to  allow  optional
	       indentation of statements within their ranges.

	  BLOCK  DATA,  PROGRAM,  SUBROUTINE,   ENTRY   and   FUNCTION
	       statements  are  recognized so that program and routine
	       names can be obtained from these.

	  The  FORTRAN  operators  and  delimiters  shown  below   are
	  recognized.  This list does not include operators such as **
	  (exponentiation)  and  //  (concatenation)  which   can   be
	  considered to be a series of shorter operators.

	  .LT.    .EQ.    .GT.    .AND.   .OR.    .EQV.
	  .LE.    .NE.    .GE.    .NOT.   .XOR.   .NEQV.
	  (   )   =   +   -   *   /   ,   <   >   #   :

	  RENBR handles  as  single  units  alphameric  strings  which
	  either  are preceded by the decimal number of characters and
	  the  letter  H  or  else  are  preceded  and   followed   by
	  apostrophes.   It  is  likely  that  no  harm will result if
	  programs containing other alphameric string designations are
	  renumbered.   If some character other than the apostrophe is
	  used as the delimiting character  in  programs  or  routines
	  which  are  to be renumbered, then the only situation likely
	  to give trouble will be when IF statements are used to  test
	  character  data against alphameric strings containing either
	  left or right parentheses.  RENBR was used for several years
	  before  the  ability  to handle alphameric strings as single
	  units was even added to it.

	  Statement  numbers  appearing  in  CALL  statements  can  be
	  preceded  either  by  an asterisk, by a dollar sign or by an
	  ampersand.  DATA statements in the  RENBR  program  must  be
	  changed  if  some  other  character is used to indicate such
	  statement numbers in CALL statements.


	            Format of Statements in the Output File
	            ------ -- ---------- -- --- ------ ----

	  The text of statements in the renumbered output file  begins
	  in  column  7  if  column  form  has  been selected, or else
	  following the tab which separates the statement number field
	  from  the statement text field.  Original indentation in the
	  form of additional spaces or tabs is not  preserved.   In  a
	  continuation  line  the original number of spaces separating
	  the statement continuation character from the  text  of  the
	  continued  statement  is  maintained if possible.  All other
	  spacings are left unchanged.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 27


	          Description of the Listing Produced by RENBR
	          ----------- -- --- ------- -------- -- -----

	  RENBR can, at the user's request, produce a listing  of  the
	  source  programs.  The listing of each separate main program
	  or routine is begun on a  new  page.   In  the  upper  right
	  corner of each page are printed both the current page number
	  and the name of the program or routine.  To the left of each
	  non-comment  statement  is  printed  the  count  or sequence
	  number of  the  statement  within  the  current  program  or
	  routine.  If a statement must be split to keep it within the
	  margins of the listing, then the extra characters are  right
	  justified on the next line and minus signs are placed in the
	  statement count field if the right justified extra text does
	  not  begin  with  a space character.  If there is a space at
	  the start of the right justified extra text, then the number
	  of  initial  spaces  is  printed  within  parentheses in the
	  statement count field instead.

	  Following the listing of the program or routine is a list of
	  statement  numbers  and  of  the  sequence  numbers  of  the
	  statements in which these statement numbers are  referenced.
	  If  renumbering  is not being performed, then this list will
	  also include as negative numbers the sequence numbers of the
	  numbered  statements themselves.  These negative numbers are
	  not included in the list of statement number  references  if
	  renumbering  is  being  performed,  since then the resulting
	  statement numbers will be in order so  that  it  is  assumed
	  that further assistance is not needed to locate them.

	  After the list of statement number references is a  list  of
	  all  key  words,  variable  names  and constants used in the
	  program or routine  and  of  the  sequence  numbers  of  the
	  statements  in  which  these are used.  A sequence number is
	  given as negative if the referenced  variable  or  array  is
	  defined  in  the statement by the equals sign operator.  Key
	  words such as GO TO are considered to be single words in the
	  index,  but  spaces  and  tabs  are  otherwise  used as word
	  separators.  Format specifications within FORMAT statements,
	  and  values assigned by DATA statements, are not included in
	  the list.


	            Changing Length of Uninterrupted Listing
	            -------- ------ -- ------------- -------

	  The tables of statement number references  and  the  indexes
	  are  printed  at the end of each program or routine, or when
	  the  necessary  storage  fills.   As  supplied,  RENBR  will
	  produce   uninterrupted  listings  of  FORTRAN  routines  of
	  approximately 800 non-comment lines (dependent on programmer
	  style).   This  requires  2  arrays each dimensioned at 1000
	  locations  to  store  the  statement  references,  an  array
	  dimensioned  at  2000  locations  to  store  the  characters
	  forming the words in the symbol  dictionary,  and  an  array
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 28


	  dimensioned   at   5000   locations  to  store  the  numeric
	  information  which  is  to  be  included   in   the   symbol
	  dictionary.   Directions  for  changing  the  sizes of these
	  arrays are included as comments in the  RENBR  program.   If
	  the  storage  necessary  to  run  RENBR is reduced, then the
	  tables and indexes will be dumped after processing of  fewer
	  lines, but the listings will still be correct.

	  Two arrays  are  used  to  store  the  textual  and  numeric
	  information  concerning  at  most  28  items  which  can  be
	  included in the table of contents which is  printed  at  the
	  end  of the processing, or whenever these arrays are full at
	  the end of a program or routine.  The items in the table  of
	  contents  are  printed  both  by  order of appearance and by
	  alphabetical order within the current page of the  table  of
	  contents.  The sizes of these arrays can be increased if the
	  items within more  than  a  single  page  of  the  table  of
	  contents  are  to be printed together in alphabetical order.
	  Directions for  changing  the  sizes  of  these  arrays  are
	  included as comments in the RENBR program.


	  The current version  of  RENBR  was  written  at  the  Aiken
	  Computation  Laboratory  of  Harvard  University, and at the
	  Harvard Business School by  Donald  E.  Barth,  who  can  be
	  reached at the following address.

	  Baker Library 21
	  Graduate School of Business Administration
	  Harvard University
	  Soldiers Field
	  Boston, Massachusetts  02163
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 29
	  Appendix A: List of Files Forming this Package


	         Appendix A: List of Files Forming This Package
	         -------- -  ---- -- ----- ------- ---- -------

	  RENBR.FOR   Source of the entire FORTRAN renumbering program
	              with  the  exception  of  the  machine dependent
	              routines REUSER, RETEMP and RECLOS which process
	              the  commands  typed  by  the  user and open and
	              close all files.  On the DECsystem-10  computer,
	              RENBR.FOR  can  be  compiled with the FORTRAN-10
	              compiler with optimization.

	  REUSR1.FOR  Sources of the REUSER routine,  and  of  several
	              routines  which are called by REUSER, for use on
	              the  DECsystem-10.   This   version   of   these
	              routines  accepts  a  single  line command which
	              consists of the names of the  output  files  and
	              associated  switches,  followed by an equal sign
	              and the list of input files.   This  version  of
	              these  routines  should  be  compiled  with  the
	              FORTRAN-10 compiler, version 5 or greater,  with
	              optimization.   The  ERR= transfers will have to
	              be removed from  the  OPEN  statements  if  this
	              version  of these routines is compiled using the
	              F40 compiler or with  earlier  versions  of  the
	              FORTRAN-10 compiler.  Before the routines in the
	              REUSR1.FOR file can be  compiled  with  the  F40
	              compiler,  the  DATA statements which define the
	              left and right square brackets will have  to  be
	              commented  out  of  two of these routines and be
	              replaced by the octal notation  DATA  statements
	              which are currently commented out.

	  REUSR2.FOR  Source of a simple version of the REUSER routine
	              for  use  on  the DECsystem-10.  This version of
	              the REUSER routine accepts a single line command
	              which  consists  only of switches, and then asks
	              on subsequent lines for the names of the  output
	              and  input  files.   This  version of the REUSER
	              routine will probably be easier to  convert  for
	              use  on  other  computer  systems  than  that in
	              REUSR1.FOR.

	  REUSR3.FOR  Source of a very simple version  of  the  REUSER
	              routine  for  use  on  the  DECsystem-10.   This
	              version of the REUSER routine  merely  asks  for
	              the output and input file names.

	  RETMP1.FOR  Sources of the RETEMP routine  which  opens  and
	              closes  the  scratch  file  and  of  the  RECLOS
	              routine which closes the output files for use on
	              the  DECsystem-10.   This  file must be compiled
	              and loaded together with  RENBR.FOR  and  either
	              REUSR1.FOR, REUSR2.FOR or REUSR3.FOR.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 30
	  Appendix A: List of Files Forming this Package


	  REUSR4.FOR  Sources of the REUSER  routine,  of  the  RETEMP
	              routine,  of  the RECLOS routine, and of several
	              routines which are called by REUSER, for use  on
	              the   Digital   Equipment   Corporation   VAX-11
	              computer.  A single  line  command  is  accepted
	              which  consists of the names of the output files
	              and associated switches, followed  by  an  equal
	              sign  and  the list of input files.  Full VAX-11
	              file  specifications  are  supported,  including
	              nodes  and  version numbers.  Percent signs have
	              replaced semicolons as command separators  since
	              semicolons can precede version numbers in VAX-11
	              file specifications.  The default  filetype  (or
	              extension)  for  the  renumbered output file has
	              been changed to .FOR since the  default  version
	              number  prevents  destruction  of  the  original
	              file.  These VAX-11 routines were developed on a
	              DECsystem-10,  but  testing  on  a VAX-11 showed
	              that  the  author  had  neglected   to   include
	              carriagecontrol=   specifications  in  the  OPEN
	              statements.  Patches to correct  this  oversight
	              have  been  inserted, but these patches have not
	              been tested.

	  RETEST.FOR  Test data for RENBR.  The programs and  routines
	              in  this  file  are  not  meant  to be compiled.
	              Directions for use are given as comments at  the
	              start of the file.

	  RENBR.DOC   This document.

	  RENBR.RND   File  which   generates   this   document   when
	              processed  by  the  DECsystem-10  text justifier
	              program RUNOFF.

	  REFMT.FOR   FORTRAN program which reorders the items in  the
	              arrays which control the recognition by RENBR of
	              FORTRAN syntax.  Directions for the use of  this
	              program  are  given  as comments at the start of
	              the file.

	  REOPR.FOR   FORTRAN  program  which  constructs   the   DATA
	              statements which define the arrays used by RENBR
	              in  the  recognition   of   FORTRAN   operators.
	              Directions for the use of this program are given
	              as comments at the start of the file.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 31
	  Appendix B: RENBR Development History


	             Appendix B: RENBR Development History
	             -------- -  ----- ----------- -------

	  RENBR is based upon  a  418  statement  FORTRAN  program  of
	  unknown  origin  which was in use at Yale University in 1965
	  or shortly thereafter.  The present version of  the  program
	  consists  of  10  times  that  many statements.  The general
	  construction of the table which drives the statement  number
	  recognition process is still based upon that in the original
	  program.  However, the statements which perform  the  binary
	  search  of sorted statement numbers are all that remain from
	  the original program.

	  The features which have been added to  the  program  by  the
	  current author are listed below.

	  June 1970
	   1. Extension.  Listing of each program or routine  includes
	      statement  number  reference  table  and  word reference
	      table.

	  March 1971
	   1. Extension.  FORTRAN operators such  as  .EQ.   and  .LT.
	      separate components of statements.
	   2. Extension.  Alphameric string following  leading  number
	      and  letter H or enclosed between apostrophes is treated
	      as single component of statement.
	   3. Extension.  Program or routine name and type are printed
	      at upper right corner of each page of listing.
	   4. Extension.  REFMT program reorders items in  the  arrays
	      which direct the syntax recognition process.

	  May 1971
	   1. Correction.  DATA statement generator used by the  REFMT
	      program  did not correctly handle the 2 negative numbers
	      having largest absolute value and the  largest  positive
	      number.

	  June 1972
	   1. Extension.  Program being renumbered can contain mixture
	      of  column  form and tab form statements.  Output can be
	      selected in either form.
	   2. Extension.  When there is a  change  in  the  number  of
	      digits  in  a  statement  number  in the statement text,
	      spaces are added or removed at the end of the  line,  if
	      possible,   to   cause   the   position   of   following
	      continuation lines to remain unchanged.
	   3. Correction.  Spaces and tabs were  not  allowed  between
	      the  number  of characters and the letter H preceding an
	      alphameric string.

	  July 1972
	   1. Correction.  END statement could not be in tab form.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 32
	  Appendix B: RENBR Development History


	  February 1973
	   1. Correction.Continuation   column   contained   non-digit
	      characters  in  listing  if  renumbering  was  not being
	      performed.

	  January 1975
	   1. Extension.  Logical blocks of statement numbers  can  be
	      maintained.
	   2. Extension.    Specification   of   options   by   single
	      characters instead of by answers to dialog questions.
	   3. Extension.Optional specification by the  CRENBR  command
	      of the statement number increment, base and blocks to be
	      maintained.
	   4. Extension.  Indication in listing of names appearing  on
	      left side of equals signs.
	   5. Extension.  Optional specification by the  user  of  the
	      number of lines to be printed per page in the listing.
	   6. Extension.  Optional insertion  of  counted  line  feeds
	      between pages of listing.
	   7. Extension.  Optional splitting of long lines in listing.
	      This  is  necessary  if counted line feeds are used on a
	      narrow width listing device.
	   8. Extension.  Conversion  of  tab  characters  in  comment
	      lines to multiple spaces so as to fill to the proper tab
	      stops in the listing.  This allows comment lines  listed
	      by  RENBR  to  be spaced the same as if the programs had
	      been listed left justified.  Unless otherwise  specified
	      by  the  W  option, the width of the tab stop columns is
	      assumed to be 8 characters.
	   9. Extension.  Optional conversion  of  tab  characters  in
	      comment  lines  to  multiple spaces so as to fill to the
	      proper tab stops in the renumbered  output.   Conversion
	      of  tab  characters  in  comment  lines to spaces in the
	      renumbered output is helpful  when  converting  programs
	      for  computer  systems  which  do  not recognize the tab
	      character.   Unless  the  /W  switch  is  selected,  tab
	      characters  in comment lines are left intact when copied
	      into the renumbered output.  It must be noted  that  tab
	      characters  within FORTRAN statements are left intact by
	      RENBR unless such tab characters separate the digits  of
	      a statement number.
	  10. Extension.  Optional  recognition  of  marked  statement
	      number   references   in  comment  lines.   Such  marked
	      statement numbers in comment lines are included  in  the
	      table   of  statement  number  references,  and  can  be
	      renumbered.
	  11. Extension.  Optional specification by the CRENBR command
	      of the routine name and subtitle for use in the listing.
	  12. Extension.   Optional  multiple  copies  of   table   of
	      contents.
	  13. Extension.   Ability  to  include   nonFORTRAN   comment
	      sections  in  input  file.   This  is  signalled  by the
	      letters RENBRSTART or RENBRTITLE appearing in the  first
	      line of the file or after a FORTRAN END statement.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 33
	  Appendix B: RENBR Development History


	  14. Extension.  ENTRY statements are included  in  table  of
	      contents.
	  15. Extension.  Table of contents is ordered  both  serially
	      and  alphabetically.   Only serial ordering was provided
	      previously.
	  16. Extension.  Optional insertion of  blank  lines  between
	      FORTRAN  statements in the listing.  Blank lines are not
	      inserted between comment lines, nor between the start of
	      a statement and its continuation lines.
	  17. Extension.  Optional indentation  of  statements  within
	      the range of DO loops.

	  January 1979
	   1. Extension.  Optional insertion of extra empty lines into
	      the  bottom  and top of consecutive pages of the listing
	      so that fan-folded paper can be bound at the top.
	   2. Extension.   Program   name   established   by   PROGRAM
	      statement is used as name of a main program.
	   3. Extension.   Semicolon  can  appear  between   pair   of
	      statements on same line.
	   4. Extension.  Exclamation point followed by a comment  can
	      appear to the right of a statement.
	   5. Extension.  Statements can be written in  a  mixture  of
	      upper and lower cases.
	   6. Extension.  Colon can appear between letter  identifying
	      switch and the following number on CRENBR command line.
	   7. Extension.  Numbers on  CRENBR  command  line  can  have
	      leading plus sign.
	   8. Extension.  Single characters <, > and # are  relational
	      operators.  Single character : is a subscript separator.
	      .NEQV. is a logical operator.
	   9. Extension.  /M switch typed by user or on CRENBR command
	      line  can  be  followed  by values of lowest and highest
	      statement   numbers   which   can   be   changed   while
	      renumbering.
	  10. Extension.  Instructions to RENBR program are  given  in
	      form  OUTPUT FILES=LIST OF INPUT FILES in which switches
	      identify purposes of output files.
	  11. Extension.  Optional  left  justification  of  statement
	      numbers when column form is selected.
	  12. Extension.  /N switch in CRENBR command line  is  output
	      as  /O  switch.   /O  switch  in  CRENBR command line is
	      removed if a /N switch has already been found.
	  13. Extension.   Lower  case   letters   appearing   outside
	      alphameric  strings  are  converted  to  upper case when
	      indexed.
	  14. Extension.  Optional indentation  of  statements  within
	      the range of IF(expression)THEN and ELSE statements.
	  15. Extension.  To support FORTRAN77 standards, asterisk  in
	      column 1 indicates comment.
	  16. Extension.  REOPR  program  constructs  DATA  statements
	      which  define  arrays  which  control the recognition of
	      operators such as +, - and .NOT.
	  17. Extension.  /C switch on CRENBR command line  can  cause
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 34
	  Appendix B: RENBR Development History


	      comment lines to be longer than 72 characters.
	  18. Extension.   Summary  of  storage  utilization  for  the
	      listing  is  shown to user only if the user types the /Z
	      switch or if one of the tables  overflows.   Previously,
	      this summary was always shown to the user.
	  19. Extension.  Programs and routines having  a  great  many
	      statement  numbers (over 1000 with arrays dimensioned as
	      supplied) can be processed although  the  old  statement
	      numbers  are  retained.   Previously,  such programs and
	      routines could be listed, but not  processed.   Listings
	      produced  whenever  the  old statement numbers are being
	      retained, whether due to an error  being  found  in  the
	      first  pass  or  to the user issuing a /M switch without
	      following numbers, include in the  tables  of  statement
	      references  the  line  numbers of the statements bearing
	      these statement numbers.  Previously, the  line  numbers
	      of  the  statements  bearing  the statement numbers were
	      included in the tables of  statement  number  references
	      only  if  the  programs  and  routines  were  not  being
	      processed.
	  20. Modification.  Character information has been  separated
	      from  numeric  information  in  storage  of index and of
	      table of contents to ease future conversion to FORTRAN77
	      standards.   All  variables  and  arrays which contain a
	      single character in each logical location which  can  be
	      addressed  by  subscript  have  names beginning with the
	      letters LTR for variables and arrays which  can  contain
	      either  upper  or  lower case, and LWR for variables and
	      arrays which can contain only lower case and  for  which
	      there  are  also corresponding named variables or arrays
	      which contain only upper case.  All variables and arrays
	      which  contain  more  than  a  single  character in each
	      logical location have names beginning with letters  such
	      as  LA4 (for 4 characters on VAX-11 computer) or LA5 for
	      5 characters on DECsystem-10 computer) and are used only
	      in  the  file  opening  and  closing  routines which are
	      hardware dependent anyway.   All  variables  and  arrays
	      which contain character information and which are needed
	      by more than just a single routine are stored in labeled
	      COMMON  blocks  which  contain  no  numeric information.
	      These are the only places  where  the  letter  sequences
	      LTR, LWR, LA4 and LA5 are used in the RENBR program.
	  21. Modification.  Main program only controls the  execution
	      of  several  subroutines.   Previously, the main program
	      also initialized the variables in common  and  read  the
	      programs  and  routines  the  first  time  to locate the
	      statement numbers.  The structure  of  the  program  was
	      modified  in  this manner to make overlaying easier.  If
	      the program is overlaid, however, then the  contents  of
	      the  COMMON  blocks  in  the  REUSER  routine and in the
	      REOPEN routine which is called by some versions  of  the
	      REUSER routine will have to be preserved.
	  22. Correction.   Leading  non-numeric  character  was   not
	      repeated  on  continuation  lines  of  a statement being
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 35
	  Appendix B: RENBR Development History


	      generated in column form.
	  23. Correction.  Exponent is included in index with  numbers
	      written   in   E  or  D  notation.   Previously,  signed
	      exponents were indexed separately.
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 36
	  Appendix C: Sample Table of Contents and Listing


	        Appendix C: Sample Table of Contents and Listing
	        -------- -  ------ ----- -- -------- --- -------

	  The pages which follow form a listing of one of the routines
	  in  the  RENBR package and were produced when RENBR was used
	  to list an earlier version of the RENBR package.  The  width
	  of  these  pages has been reduced slightly (by 3 characters)
	  to fit into the current document.   The  table  of  contents
	  produced  by  RENBR for the total listing which included the
	  following pages is shown below.  The second line at the  top
	  of  the  table of contents lists the total number of FORTRAN
	  statements, the total  number  of  comment  lines  appearing
	  within  FORTRAN  programs and routines, and the total number
	  of lines in comment sections which were designated by either
	  RENBRSTART  or  RENBRTITLE  command  lines.   The third line
	  lists the average number of consecutive  FORTRAN  statements
	  which  were  not separated by comment lines or by the end of
	  programs or routines, and the average number of  consecutive
	  FORTRAN  comment  lines  which were not separated by FORTRAN
	  statements.  The left 2 columns in  the  table  of  contents
	  show the location in the listing of each of the programs and
	  routines,  sorted  alphabetically  by  name.   The  right  3
	  columns  show  the  number  of FORTRAN statements in and the
	  location  in  the  listing  of  each  of  the  programs  and
	  routines, sorted by page numbers.

	  APPENDIX: SAMPLE TABLE OF CONTENTS AND LISTING      TABLE OF
	  STATEMENTS  2288, COMMENTS  2355, NONFORTRAN     0  CONTENTS
	  (AVG GROUP)   12,             14
	                      PAGE                       LENGTH   PAGE
	   
	  DASORT SUBROUTINE    152        RENBR BLOCK DATA   18      1
	   
	  RECMND SUBROUTINE    126      RENBR MAIN PROGRAM  331     18
	   
	  REINDX SUBROUTINE    111       REPACK SUBROUTINE  243     51
	   
	  RENBR  BLOCK DATA      1       REPLAC SUBROUTINE  334     63
	   
	  RENBR  MAIN PROGRAM   18        REOUT SUBROUTINE  287     79
	   
	  RENEXT SUBROUTINE    146       RENUMB SUBROUTINE   49     92
	   
	  RENUMB SUBROUTINE     92       REUNIT SUBROUTINE  230     98
	   
	  REOUT  SUBROUTINE     79       REINDX SUBROUTINE  308    111
	   
	  REPACK SUBROUTINE     51       RECMND SUBROUTINE  171    126
	   
	  REPLAC SUBROUTINE     63       RETITL SUBROUTINE  204    135
	   
	  RETITL SUBROUTINE    135       RENEXT SUBROUTINE   67    146
	   
	  REUNIT SUBROUTINE     98       DASORT SUBROUTINE   46    152
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 37
	  Appendix C: Sample Table of Contents and Listing


	  APPENDIX: SAMPLE TABLE OF CONTENTS AND LISTING     PAGE  152
	  BUBBLE SORT ROUTINE                        DASORT SUBROUTINE
	   
	  1         SUBROUTINE DASORT(IARRAY,ILOWER,IUPPER,JARRAY)
	      C     RENBR(/BUBBLE SORT ROUTINE)
	      C
	      C     DONALD BARTH, HARVARD BUSINESS SCHOOL
	      C
	      C     REGIONS CONTAINING INITIAL ORDERING ARE SWAPPED BY
	      C     THREADING ITEMS BEING MOVED INTO NEW LOCATIONS.
	      C
	      C     IARRAY = THE ARRAY TO BE SORTED.
	      C     ILOWER = LOWEST SUBSCRIPT OF REGION TO BE SORTED.
	      C     IUPPER = HIGHEST SUBSCRIPT OF REGION TO BE SORTED.
	      C     JARRAY = ARRAY TO BE HELD PARALLEL TO IARRAY.
	      C
	  2         DIMENSION IARRAY(1),JARRAY(1)
	      C
	      C     FIND UPPER END OF LOWER REGION TO BE SWAPPED
	  3         IPNTR=ILOWER
	  4       1 MID=IPNTR
	  5         IPNTR=IPNTR+1
	  6       2 IF(IPNTR.GT.IUPPER)GO TO 12
	  7         IF(IARRAY(IPNTR).GE.IARRAY(MID))GO TO 1
	      C
	      C     FIND LOWER END OF LOWER REGION TO BE SWAPPED
	  8         ITEST=IARRAY(IPNTR)
	  9         LOW=ILOWER
	  10      3 IF(ITEST.LT.IARRAY(LOW))GO TO 4
	  11        LOW=LOW+1
	  12        GO TO 3
	      C
	      C     FIND UPPER END OF UPPER REGION TO BE SWAPPED
	  13      4 JTEST=IARRAY(LOW)
	  14      5 MAX=IPNTR
	  15        IPNTR=IPNTR+1
	  16        IF(IPNTR.GT.IUPPER)GO TO 6
	  17        ITEST=IARRAY(IPNTR)
	  18        IF(ITEST.LT.IARRAY(MAX))GO TO 6
	  19        IF(ITEST.LT.JTEST)GO TO 5
	      C
	      C     PERFORM THE THREADED SWAP OF ORDERED REGIONS
	      C
	      C     IF THERE WERE SEVERAL PARALLEL ARRAYS, IT MIGHT
	      C     BE CONVENIENT TO REPLACE THE FOLLOWING SECTION BY
	      C     CALLS TO THE SWAPPING ROUTINE DASWAP SIMILAR TO
	      C
	      C     CALL DASWAP(IARRAY,LOW,MID,MAX)
	      C     CALL DASWAP(JARRAY,LOW,MID,MAX)
	      C
	  20      6 ITEST=LOW-MAX-1
	  21        LAST=MAX
	  22        LOW=LOW-MID-1
	  23        JTEST=MAX-MID
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 38
	  Appendix C: Sample Table of Contents and Listing


	  APPENDIX: SAMPLE TABLE OF CONTENTS AND LISTING     PAGE  153
	  BUBBLE SORT ROUTINE                        DASORT SUBROUTINE
	   
	  24      7 INDEX=LAST+LOW
	  25        IKEEP=IARRAY(LAST)
	  26        JKEEP=JARRAY(LAST)
	  27      8 ITEST=ITEST+1
	  28        INEW=IARRAY(INDEX)
	  29        JNEW=JARRAY(INDEX)
	  30        IARRAY(INDEX)=IKEEP
	  31        JARRAY(INDEX)=JKEEP
	  32        IKEEP=INEW
	  33        JKEEP=JNEW
	  34        IF(INDEX.GT.MID)GO TO 9
	  35        INDEX=INDEX+JTEST
	  36        GO TO 8
	  37      9 IF(INDEX.EQ.LAST)GO TO 10
	  38        INDEX=INDEX+LOW
	  39        GO TO 8
	  40     10 IF(ITEST.EQ.0)GO TO 11
	  41        LAST=LAST-1
	  42        GO TO 7
	      C
	      C     PREPARE TO FIND NEXT ORDERED REGION
	  43     11 MID=MAX
	  44        GO TO 2
	  45     12 RETURN
	  46        END
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 39
	  Appendix C: Sample Table of Contents and Listing


	  APPENDIX: SAMPLE TABLE OF CONTENTS AND LISTING     PAGE  154
	  BUBBLE SORT ROUTINE                        DASORT SUBROUTINE
	   
	  STATEMENT
	  NUMBER        REFERENCED BY
	   
	       1       -4     7
	       2       -6    44
	       3      -10    12
	       4       10   -13
	       5      -14    19
	       6       16    18   -20
	       7      -24    42
	       8      -27    36    39
	       9       34   -37
	      10       37   -40
	      11       40   -43
	      12        6   -45
	  RENBR, the FORTRAN Renumbering and Listing Program   Page 40
	  Appendix C: Sample Table of Contents and Listing


	  APPENDIX: SAMPLE TABLE OF CONTENTS AND LISTING     PAGE  155
	  BUBBLE SORT ROUTINE                        DASORT SUBROUTINE
	   
	  WORD       CONTAINED IN
	   
	  DASORT     1
	  DIMENSION  2
	  END       46
	  GOTO       6     7    10    12    16    18    19    34    36
	            37    39    40    42    44
	  IARRAY     1     2     7     8    10    13    17    18    25
	            28   -30
	  IF         6     7    10    16    18    19    34    37    40
	  IKEEP    -25    30   -32
	  ILOWER     1     3     9
	  INDEX    -24    28    29    30    31    34   -35    37   -38
	  INEW     -28    32
	  IPNTR     -3     4    -5     6     7     8    14   -15    16
	            17
	  ITEST     -8    10   -17    18    19   -20   -27    40
	  IUPPER     1     6    16
	  JARRAY     1     2    26    29   -31
	  JKEEP    -26    31   -33
	  JNEW     -29    33
	  JTEST    -13    19   -23    35
	  LAST     -21    24    25    26    37   -41
	  LOW       -9    10   -11    13    20   -22    24    38
	  MAX      -14    18    20    21    23    43
	  MID       -4     7    22    23    34   -43
	  RETURN    45
	  SUBROUTINE 1
	  0         40
	  1          2     5    11    15    20    22    27    41