Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0034/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