Trailing-Edge
-
PDP-10 Archives
-
decus_20tap5_198111
-
decus/20-0147/format.doc
There are 12 other files named format.doc in the archive. Click here to see a list.
FFFFFFFF OOOOO RRRRRR MM MM AA TTTTTTTT
FF OO OO RR RR MMM MMM AAAA TT
FF OO OO RR RR MMMM MMMM AA AA TT
FFFFF OO OO RRRRRR MM MMM MM AA AA TT
FF OO OO RR RR MM M MM AAAAAAAA TT
FF OO OO RR RR MM MM AA AA TT
FF OOOOO RR RR MM MM AA AA TT
FFFFFFFF OOOO RRRR RR MMMMM MM AAAA AA TTT
FFFFFFF OOO OOO RRR RRR MMMMM MM AAAA AA TTT
FFFFFF OOOOO OO RR RRRR MM MM MM AA TTT
FFF OOOOO OO RRRR M M MM AAAA AA TTT
FFFFFF OOOOO OO RRRR RR M MMM AA AAA TTT
FFFFFFF OOO OOO RRRR RR MMM MMMM AAAA TTT
FF OOOO RRRR MMMMM MMMMM AA
27 May 1980
FORMAT, a FORTRAN FORMAT Statement Generator
------ - ------- ------ --------- ---------
The FORMAT program reads a sample form or a rough version of
messages, and generates FORTRAN FORMAT statements which can
be used by a FORTRAN program to reproduce the form complete
with embedded variables, or to generate the messages with
lines of uniform length. The case conventions, the
structure of the commands, and the meanings of many of the
commands which are recognized by the FORMAT program are
identical to those accepted by the DECsystem-10 text
processing program RUNOFF. When text containing only those
commands which are recognized by both the FORMAT and RUNOFF
programs is processed by the FORMAT program, then the use of
the resulting FORMAT statements generates the text which
would have been produced directly by RUNOFF. Although the
FORMAT program provides many of the same capabilities as
RUNOFF, the FORMAT program is itself written in a system
independent subset of FORTRAN and is not an extended version
of RUNOFF. If a RUNOFF capability is not described in this
documentation, then this capability is not provided by the
FORMAT program. In particular, the FORMAT program does not
provide any paging, footnoting, indexing or underlining
capabilities.
For example, the word FORMAT as it appears in large letters
at the top of this page, but without the shadows, would be
converted to the following FORTRAN FORMAT statement if
processed by the FORMAT program with the initial commands
.no fill.output width 60.no offset.use H
1 FORMAT(43HFFFFFFFF OOOOO RRRRRR MM MM ,
112HAA TTTTTTTT/2HFF,7X,26HOO OO RR RR MMM ,
217HMMM AAAA TT/2HFF,6X,21HOO OO RR RR ,
323HMMMM MMMM AA AA TT/23HFFFFF OO OO RRRR,
429HRR MM MMM MM AA AA TT/2HFF,6X,9HOO OO,
535H RR RR MM M MM AAAAAAAA TT/2HFF,7X,4HOO ,
639H OO RR RR MM MM AA AA TT/2HFF,8X,
742HOOOOO RR RR MM MM AA AA TT)
FORMAT, a FORTRAN FORMAT Statement Generator Page 2
For sections of text which are too long to be represented in
a single FORMAT statement, the FORMAT program can generate
FORTRAN output statements which reference each of the
resulting FORMAT statements. The statement numbers of the
FORMAT statements and the references to them are incremented
as necessary. The lines of text which are represented in
the resulting FORMAT statements can include output field
descriptions which are kept separate from the text which is
represented in H, apostrophe or asterisk notation. A fixed
line of text can be superimposed upon each line of text
which is represented in the resulting FORMAT statements to
rule vertical lines of characters. If identical parallel
forms are being generated, then the input file only needs to
specify the text for the left form and this can be copied to
the right as many times as are desired.
Commands which are interspersed with the text which is to be
represented in the resulting FORMAT statements specify how
this text is to be processed, as well as some
characteristics of the FORMAT statements. In the line of
commands which was shown above
.NO FILL
specifies that the spaces and the nonflag printing
characters in each line in the input file are to be
regenerated exactly as read when the resulting FORMAT
statements are used. Otherwise, each line of text
which is represented in the resulting FORMAT statements
would be filled with words from the following lines
until the next word would extend beyond the current
right margin.
.OUTPUT WIDTH 60
specifies that the maximum width of the resulting
FORMAT statements, rather than the maximum width of the
lines represented in the resulting FORMAT statements,
is 60 characters. Otherwise, the output width would be
72 characters.
.NO OFFSET
specifies that each line is not to include a carriage
control character. Otherwise, there would be an extra
space as a carriage control character at the start of
each line which is represented in the resulting FORMAT
statements.
.USE H
specifies that the text is to be represented in
Hollerith or H notation consisting of the letter H
preceded by the number of characters and followed by
the characters themselves. The text can also be
represented in either apostrophe or asterisk notation.
The FORMAT program produces 2 output files, a FORTRAN
language file and a proof file. The FORTRAN language file
FORMAT, a FORTRAN FORMAT Statement Generator Page 3
must be merged into an existing program or else the input
file must have specified the rest of the FORTRAN statements,
which together with the newly constructed FORMAT statements,
make up the program. The proof file contains the text which
would be generated when the resulting FORMAT statements are
used. The locations at which output field specifications
are inserted are indicated by dollar signs in this text.
The actual output field specifications are indicated in
separate lines in the proof file before the lines into which
these output field specifications are inserted. The proof
file also contains an indication of the location at which
each FORMAT statement begins, a copy of each of the commands
in the input file, and a copy of each of the FORTRAN
statements which were specified directly by the input file.
Command Structure
------- ---------
Each line of the input file which does not start with a
period in the left column contains text which is to be
represented in the FORMAT statements or contains a FORTRAN
statement or a FORTRAN comment which is to be copied into
the output file unchanged except for possible case
conversion of the alphabetic letters. Each line which
starts with a period in the left column is interpreted as a
command. A command consists of the leading period followed
either by a word or by a phrase which identifies the
command, followed for some commands by 1 or 2 numbers, by 1
or 2 characters, or by the text which extends through the
rightmost printing character on the line. The alphabetic
letters which form the word or phrase can be supplied in
lower case, in upper case, or in a mixture of upper and
lower cases. The word, or each of the words in a phrase,
can be abbreviated by truncation leaving at least the left
letter in each word if additional words or their
abbreviations appear to the right. Spaces are allowed
before, between and after the words in a phrase but are not
required. Only enough letters must be typed to
unambiguously identify the word or phrase from all others.
The numbers, characters or line of text which follows the
word or phrase are referred to as the arguments of the
command. The pairs of numbers or pairs of characters which
are arguments of some commands can be separated by spaces
and/or by a single comma, but the comma is not required
unless only the second number or second character of the
pair is supplied.
For example, a few of the many ways in which the command
.FLAGS SPACE *
could be specified are
.FS* or .F S * or .FLS* or .FSP* or .FLSP* or .FL SP *
Except for those commands in which the word or phrase can be
followed by the text which extends through the rightmost
FORMAT, a FORTRAN FORMAT Statement Generator Page 4
printing character on the line, any command can be followed
on the same line by another command or by a semicolon which
can be followed in turn by whatever would have otherwise
have appeared on the next line. If 2 commands are separated
by a semicolon, then spaces can appear to the left of the
semicolon and to the right of the second period, but cannot
appear between the semicolon and the second period. If 2
commands appear on the same line but are not separated by a
semicolon, then spaces can appear between the first command
and the second period. A leading period or a command can be
followed by an exclamation point and then by a comment which
extends through the next semicolon on the same line or
through the end of the line if a semicolon does not appear
on the same line to the right of the exclamation point. A
comment is not terminated by the appearance of a period.
For example, the text
.SKIP 2
.CENTER
This is a Title
could also be specified by any of the following single lines
.SKIP 2.CENTER;This is a Title
.SKIP 2;.CENTER;This is a Title
or
.SKIP 2!comment;.CENTER!comment;This is a Title
An underscore character can appear before any character,
such as a leading period in a noncommand line, or a
semicolon, exclamation point, comma or another underscore in
a command line, which is to be treated as an ordinary
printing character.
Case Notation for Alphabetic Letters
---- -------- --- ---------- -------
This program can process text in which the letters A through
Z are already in the desired mixture of upper and lower
cases (capital letters and small letters, respectively), or
in which the alphabetic letters A through Z are all in one
case with shift indications for the other case.
An .UPPER CASE command or 2 consecutive circumflexes
anywhere in the source text indicates that the cases of all
subsequent alphabetic letters which are not otherwise marked
are to be retained. An .UPPER CASE command is considered to
be in effect when this program is started. A .LOWER CASE
command or 2 consecutive back slashes anywhere in the source
text indicates that all subsequent alphabetic letters which
are not otherwise marked are to be converted to their lower
case forms. Regardless of the overall case setting, any
single letter which is to be converted to its upper case
form can be preceded by a single circumflex, and any single
letter which is to be converted to its lower case form can
be preceded by a single back slash. If a .FLAGS CAPITALIZE
FORMAT, a FORTRAN FORMAT Statement Generator Page 5
command has been issued, then a less than sign can be used
at the start of a word to indicate that all of the following
alphabetic letters are to be converted to their upper case
forms in the word which extends either through the the last
character on the line, or up to the next space, or up to the
next less than sign, whichever comes first. A single
underscore can precede any character, such as a circumflex
or a back slash or even another underscore, which is to be
treated as a nonalphabetic printing character. A space
which is to be treated as a nonalphabetic printing character
can be indicated either by a number sign or by a space which
is preceded by an underscore. A number sign which is to be
kept as a number sign must be preceded by a single
underscore. Any of these flag characters can be changed or
temporarily disabled by commands in the source text.
If the source file contains only lower case letters, but
both cases are desired and can be processed by the FORTRAN
compiler and operating system, then, without any special
action, all letters will remain in their lower case forms
except for those letters which immediately follow a single
circumflex or which are in words which are preceded by a
less than sign if a .FLAGS CAPITALIZE command has been
issued.
If the source file contains only upper case letters, but
both cases are desired and can be processed by the FORTRAN
compiler and operating system, then the input file should
contain a .LOWER CASE command or 2 consecutive back slashes
so that subsequent letters will be translated to their lower
case forms except for those letters which immediately follow
a single circumflex or which follow a single underscore or
which are in words which are preceded by a less than sign if
a .FLAGS CAPITALIZE command has been issued. If there are
sections of the source text which are to be kept primarily
in their original upper case forms, then these sections can
be preceded by an .UPPER CASE command or by 2 consecutive
circumflexes, and then any individual letters which need to
be converted to their lower case forms can be preceded by
single back slashes.
For example, the source text
.preface WRITE(1,$)
.nofill.flags capitalize.output width 60.offset 0
\\^ONLY THE FIRST LETTER IN THIS LINE REMAINS UPPER CASE.
<THE FIRST WORD IN THIS LINE WILL BE CAPITALIZED.
^^^all but the first letter of this line remains lower case.
<the first word in this line will be capitalized.
Underscores precede _^, _\, _<, _# or __ which are kept.
.program; END
would, when processed by this program, be transformed into
the following FORTRAN text
FORMAT, a FORTRAN FORMAT Statement Generator Page 6
WRITE(1,1)
1 FORMAT(43HOnly the first letter in this line remains ,
111Hupper case./35HTHE first word in this line will be,
213H capitalized./33HAll but the first letter of this ,
324Hline remains lower case./22HTHE first word in this,
426H line will be capitalized./20HUnderscores precede ,
531H^, \, <, # or _ which are kept.)
END
which would, in turn, generate the following text when run.
Only the first letter in this line remains upper case.
THE first word in this line will be capitalized.
All but the first letter of this line remains lower case.
THE first word in this line will be capitalized.
Underscores precede ^, \, <, # or _ which are kept.
Short Descriptions of the Source Commands
----- ------------ -- --- ------ --------
.BEGIN next statement number, statement number increment
The following text is to be represented in a new FORMAT
statement. .INSERT and .PREFACE and .PROGRAM commands
are cancelled. .FORMAT is similar. .BEGIN 1,1 is the
default at the start of the processing of the text.
.BLANK number of extra blank lines to be generated
The specified number of extra blank lines are to be
represented in the FORMAT statement. .SKIP is similar.
.BREAK
No additional text is to be included in the line of
text currently being represented in the FORMAT
statement. Blank lines requested by .BLANK or .SKIP or
implied by .SPACING are not generated immediately.
Similar to .EJECT which generates such blank lines
immediately.
.CARRIAGE next carriage control character
or
.CARRIAGE next carriage control, subsequent carriage control
The first specified character is to replace the space
in the leftmost column of the next line which is
represented in the FORMAT statements. If a second
character is specified, it is to replace the space in
the leftmost column of each of the subsequent lines.
Opposite of .NO CARRIAGE. .NO CARRIAGE is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 7
.CENTER width of region as unsigned number
.CENTER offset from largest right margin as signed number
.CENTRE width of region as unsigned number
or
.CENTRE offset from largest right margin as signed number
The following line of text is to be centered in the
region given as an unsigned number or in the region to
the left of the sum of the largest right margin plus
the signed number. Except for the insertion of the
initial spaces, the line is to be represented with the
same number of spaces as in the original source.
.COPY number of characters to copy, number of times to copy
The indicated number of characters at the left end of
each line represented in the FORMAT statements, after
the application of the line of text specified by a
.MASK command if any, but before the application of the
character specified by the .CARRIAGE command, are to be
copied the indicated number of additional times to the
right. Opposite of .NO COPY. .NO COPY is the default.
.END OF FILE
No additional text is to be processed.
.EJECT
No additional text is to be included in the line of
text currently being represented in the FORMAT
statement. All blank lines which have been requested
by .BLANK or .SKIP or implied by .SPACING are generated
immediately. Similar to .BREAK which does not generate
such blank lines immediately.
.FILL
Multiple spaces are to be removed from the following
text and words are to be accumulated until the next
word would extend beyond the right margin. Opposite of
.NO FILL. .FILL is the default.
.FLAGS
or
.FLAGS ALL
Most flag characters are enabled in the source text.
Does not change interpretation of flag characters
specified by .FLAGS FENCE, .FLAGS CONTROL and .FLAGS
REMARK commands. Opposite of .NO FLAGS ALL. .FLAGS
ALL is the default.
.FLAGS CAPITALIZE character to precede capitalized words
Words in which each letter is to be capitalized can be
preceded by the specified character. Less than sign is
assumed if no character follows the .FLAGS CAPITALIZE
command. Opposite of .NO FLAGS CAPITALIZE. .NO FLAGS
CAPITALIZE is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 8
.FLAGS CONTROL character to precede commands
Commands in the source file are indicated by having the
specified character in the first column. Opposite of
.NO FLAGS CONTROL. .FLAGS CONTROL _. is the default.
.FLAGS FENCE character to terminate and separate commands
A command can be followed by the specified character
and then by whatever would have otherwise have appeared
on the next line. Opposite of .NO FLAGS FENCE. .FLAGS
FENCE _; is the default.
.FLAGS INSERT character to indicate location of insertions
The specified character can be used in program text to
indicate the locations at which statement numbers are
to be inserted, and in text being represented in the
FORMAT statements to indicate the locations at which
output field descriptions as specified by the .INSERT
command are to be inserted. Opposite of .NO FLAGS
INSERT. .FLAGS INSERT $ is the default.
.FLAGS LOWER CASE character to precede lower case letters
Letters in the source text which are to be translated
into lower case can each be preceded by a single
appearance of the specified character. Two adjacent
appearances of this character are equivalent to the
.LOWER CASE command. Opposite of .NO FLAGS LOWER CASE.
.FLAGS LOWER CASE _\ is the default.
.FLAGS QUOTE character to precede character to be used as is
The specified character can precede any special
character which is to be treated as an ordinary
character. Opposite of .NO FLAGS QUOTE. .FLAGS QUOTE
__ is the default.
.FLAGS REMARK character to separate commands from comments
The specified character can precede a comment which
appears to the right of a command. Opposite of .NO
FLAGS REMARK. .FLAGS REMARK _! is the default.
.FLAGS SPACE character to indicate a nonadjustable space
The specified character can be used to represent a
space which is to be treated as a portion of a word
rather than as a word boundary. Opposite of .NO FLAGS
SPACE. .FLAGS SPACE _# is the default.
.FLAGS UPPER CASE character to precede upper case letters
Letters in the source text which are to be translated
to upper case can each be preceded by a single
appearance of the specified character. Two adjacent
appearances of this character are equivalent to the
.UPPER CASE command. Opposite of .NO FLAGS UPPER CASE.
.FLAGS UPPER CASE _^ is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 9
.FORMAT next statement number, statement number increment
The following text is to be represented in a new FORMAT
statement. .INSERT and .PREFACE commands are retained.
.PROGRAM command is cancelled. .BEGIN is similar.
.INDENT number of extra spaces to insert beyond left margin
The following line of text is to be indented from the
left margin by the indicated number of spaces.
.INPUT WIDTH maximum number of characters in any input line
Only the indicated number of characters in each line in
the input file are to be read and processed. Maximum
width is 300. .INPUT WIDTH 132 is the default.
.INSERT output field specification to replace next $ signs
The characters appearing to the right of the .INSERT
command form an output field specification which is to
replace the next group of contiguous dollar signs. All
unused groups of characters are discarded if either a
.NO INSERT or a .BEGIN command is issued.
.JUSTIFY
Extra spaces are to be inserted between the words in
fill mode to cause the lines to be flush with both the
left and right margins. Opposite of .NO JUSTIFY.
.JUSTIFY is the default.
.LEADING
The FORMAT statements are to include initial blank
lines requested by .BLANK and .SKIP commands which
appear before the text which is to be represented.
Opposite of .NO LEADING. .NO LEADING is the default.
.LEFT MARGIN number of spaces to left of text
The following text is to begin in the column to the
right of the indicated column. .LEFT MARGIN 0 is the
default.
.LENGTH maximum number of lines in each FORMAT statement
FORMAT statements can be constructed from no more than
the indicated number of FORTRAN language lines.
.LENGTH 20 is the default, but this program does not
impose any upper limit upon this maximum.
.LOWER CASE
Upper case letters on the following lines are to be
translated to lower case unless preceded by
circumflexes or underscores or, if in flag capitalize
mode, unless in words which are preceded by less than
signs. Equivalent to appearance of 2 back slashes.
Opposite of .UPPER CASE which is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 10
.MASK text to be superimposed onto each output line
The printing characters appearing to the right of the
.MASK command are to be superimposed onto each line of
text which is represented in the FORMAT statements.
The .MASK command is cancelled by a .NO MASK command.
.NO MASK is the default.
.NO CARRIAGE
No special character is to replace the space in the
leftmost column of each line which is represented in
the FORMAT statements. Opposite of .CARRIAGE. .NO
CARRIAGE is the default.
.NO COPY
The characters in each line represented in the FORMAT
statements are not to be copied additional times to the
right. Opposite of .COPY. .NO COPY is the default.
.NO FILL
Except for the insertion of initial spaces required for
the left margin and indentation, and except for case
conversions and removal of underscores, each of the
following lines of source text is to be regenerated
exactly when the resulting FORMAT statements are used.
Opposite of .FILL. .FILL is the default.
.NO FLAGS
or
.NO FLAGS ALL
Most flag characters are disabled in the source text.
Does not change interpretation of flag characters
specified by .FLAGS FENCE, .FLAGS CONTROL and .FLAGS
REMARK commands. Opposite of .FLAGS ALL. .FLAGS ALL
is the default.
.NO FLAGS CAPITALIZE
No special character can be used to indicate words in
which each letter is to be capitalized. Opposite of
.FLAGS CAPITALIZE. .NO FLAGS CAPITALIZE is the
default.
.NO FLAGS CONTROL
Commands cannot be included in the source text.
Opposite of .FLAGS CONTROL. .FLAGS CONTROL _. is the
default.
.NO FLAGS FENCE
No special character can follow a command to indicate
that the text to its right is to be treated as though
this text appeared on the next line. Opposite of
.FLAGS FENCE. .FLAGS FENCE _; is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 11
.NO FLAGS INSERT
No special character can be used in program text to
indicate the locations at which statement numbers are
to be inserted, and in text being represented in the
FORMAT statements to indicate the locations at which
output field descriptions as specified by the .INSERT
command are to be inserted. Opposite of .FLAGS INSERT.
.FLAGS INSERT $ is the default.
.NO FLAGS LOWER CASE
No special character can be used to indicate single
letters which are to be translated into lower case.
Opposite of .FLAGS LOWER CASE. .FLAGS LOWER CASE _\ is
the default.
.NO FLAGS QUOTE
No special character can precede any special character
which is to be treated as an ordinary printing
character. Opposite of .FLAGS QUOTE. .FLAGS QUOTE __
is the default.
.NO FLAGS REMARK
A comment cannot appear to the right of a command.
Opposite of .FLAGS REMARK. .FLAGS REMARK _! is the
default.
.NO FLAGS SPACE
No special character can be used to represent a space
which is to be treated as a portion of a word rather
than as a word boundary. Opposite of .FLAGS SPACE.
.FLAGS SPACE _# is the default.
.NO FLAGS UPPER CASE
No special character can be used to indicate single
letters which are to be translated into upper case.
Opposite of .FLAGS UPPER CASE. .FLAGS UPPER CASE _^ is
the default.
.NO INSERT
All unused groups of characters specified by .INSERT
commands are to be discarded.
.NO JUSTIFY
Extra spaces are not to be inserted between the words
in fill mode. Opposite of .JUSTIFY. .JUSTIFY is the
default.
.NO LEADING
The FORMAT statements are to exclude initial blank
lines requested by .BLANK and .SKIP commands which
appear before the text which is to be represented.
Opposite of .LEADING. .NO LEADING is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 12
.NO MASK
No line of text is to be superimposed onto each line
which is represented in the FORMAT statements.
Opposite of .MASK. .NO MASK is the default.
.NO OFFSET
No spaces are to be inserted at the left edge of each
line in addition to the normal left margin and
indentation. Equivalent to .OFFSET 0. .OFFSET 1 is
the default.
.NO PREFACE
No line of text is to be inserted before each FORMAT
statement. Opposite of .PREFACE. .NO PREFACE is the
default.
.NO TRAILING
Blank lines requested after the preceding text by
.BLANK or .SKIP commands or which are necessary for
multiple line spacing are discarded before .BEGIN
commands or when the end of the source file is read.
Opposite of .TRAILING. .NO TRAILING is the default.
.OFFSET number of spaces to be inserted at left edge of text
The indicated number of spaces is inserted at the left
edge of each line in addition to the normal left margin
and indentation. .OFFSET 0 is equivalent to .NO
OFFSET. .OFFSET 1 is the default.
.OUTPUT WIDTH most characters in each FORMAT statement line
Each FORTRAN language line from which the FORMAT
statements are constructed can contain no more than the
indicated number of characters. Maximum is 72.
.OUTPUT WIDTH 72 is the default.
.PARAGRAPH columns to indent, multiple of line spacing
or
.PARAGRAPH columns to indent, -1 times number of blank lines
The next line of text is to be indented from the left
margin by the number of spaces indicated by the first
argument. If the second argument is greater than or
equal to zero, then this times the number most recently
specified by a .SPACING command is to be the number of
extra blank lines which are to precede the next line of
text. If the second argument is less than zero, then
this without its sign is the number of extra blank
lines which are to precede the next line of text.
.PREFACE line of text to precede each new FORMAT statement
The characters which appear to the right of the
.PREFACE command are to be copied into the output file
before each FORMAT statement. The .PREFACE command is
cancelled either by a .NO PREFACE or by a .BEGIN
command. .NO PREFACE is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 13
.PROGRAM next statement number, statement number increment
The following text, through the next .BEGIN or .FORMAT
command, is to be copied unchanged into the output file
without being represented in FORMAT statements.
.RESET
All variable conditions are to be returned to their
initial settings.
.RIGHT MARGIN rightmost column into which text is wrapped
If in fill mode, words are wrapped around until the
next word would extend beyond the indicated column.
.RIGHT MARGIN 60 is the default.
.SKIP multiple of extra line spacings to be generated
A number of extra blank lines equal to the specified
multiple of the number which appeared to the right of
the previous .SPACING command are to be represented in
the FORMAT statement. .BLANK is similar.
.SPACING separation from top of one line to top of next line
One less than the indicated number of blank lines are
to be inserted between the lines of text. .SPACING 1
giving single spacing is the default.
.TRAILING
Blank lines requested after the preceding text by
.BLANK or .SKIP commands or which are necessary for
multiple line spacing are generated before .BEGIN
commands or when the end of the source file is read.
Opposite of .NO TRAILING. .NO TRAILING is the default.
.UPPER CASE
The cases of letters on the following lines are to be
retained. Equivalent to appearance of 2 circumflexes.
Opposite of .LOWER CASE. .UPPER CASE is the default.
.USE character implying text representation notation
Hollerith (number H) notation is used to represent text
in FORMAT statements if the following character is an
H. Apostrophe or asterisk notation is used if the
character is an apostrophe or an asterisk respectively.
.USE H is the default.
FORMAT, a FORTRAN FORMAT Statement Generator Page 14
If BREAK Implied, Argument Type and Corresponding NO Command
-- ----- ------- -------- ---- --- ------------- -- -------
If .BREAK Argument Corresponding
Implied Type NO Command
.BEGIN yes 2 numbers
.BLANK yes 1 number
.BREAK yes none
.CARRIAGE no 2 characters .NO CARRIAGE
.CENTER or .CENTRE yes 1 number
.COPY yes 2 numbers .NO COPY
.END OF FILE yes none
.EJECT yes none
.FILL yes none .NO FILL
.FLAGS ALL no none .NO FLAGS ALL
.FLAGS CAPITALIZE no 1 character .NO FLAGS CAPITALIZE
.FLAGS CONTROL no 1 character .NO FLAGS CONTROL
.FLAGS FENCE no 1 character .NO FLAGS FENCE
.FLAGS INSERT no 1 character .NO FLAGS INSERT
.FLAGS LOWER CASE no 1 character .NO FLAGS LOWER CASE
.FLAGS QUOTE no 1 character .NO FLAGS QUOTE
.FLAGS REMARK no 1 character .NO FLAGS REMARK
.FLAGS SPACE no 1 character .NO FLAGS SPACE
.FLAGS UPPER CASE no 1 character .NO FLAGS UPPER CASE
.FORMAT yes 2 numbers
.INDENT yes 1 number
.INPUT WIDTH no 1 number
.INSERT no text .NO INSERT
.JUSTIFY yes none .NO JUSTIFY
.LEADING no none .NO LEADING
.LEFT MARGIN yes 1 number
.LENGTH no 1 number
.LOWER CASE no none
.MASK no text .NO MASK
.OFFSET yes 1 number .NO OFFSET
.OUTPUT WIDTH no 1 number
.PARAGRAPH yes 2 numbers
.PREFACE no text .NO PREFACE
.PROGRAM yes 2 numbers
.RESET yes none
.RIGHT MARGIN yes 1 number
.SKIP yes 1 number
.SPACING yes 1 number
.TRAILING no none .NO TRAILING
.UPPER CASE no none
.USE no 1 character
FORMAT, a FORTRAN FORMAT Statement Generator Page 15
Detailed Descriptions of the Source Commands
-------- ------------ -- --- ------ --------
.BEGIN next statement number, statement number increment
The .BEGIN command indicates that no additional text is
to be represented by the FORMAT statement currently
being constructed and that the text appearing in
subsequent lines in the source file is to be
represented in a new FORMAT statement. The preface
line, if any, indicated by a previous .PREFACE command
and all unused output field descriptions previously
specified by .INSERT commands will be discarded. If
the .BEGIN command is issued within the range of a
.PROGRAM command, then the range of the .PROGRAM
command is terminated. Blank lines which have not yet
been generated, but which have been requested by .SKIP
or .BLANK commands or which are necessary for multiple
line spacing, will be appended to the FORMAT statement
currently being constructed if a .TRAILING command is
in effect. Such trailing blank lines will be discarded
before the new FORMAT statement is begun if a .NO
TRAILING command is in effect or if a .TRAILING command
has not been issued. If the .BEGIN command is followed
by .SKIP or .BLANK commands before the next text which
is to be represented in the FORMAT statements, then
these leading blank lines will be represented only if a
.LEADING command is in effect. Such leading blank
lines are discarded if a .NO LEADING command is in
effect or if a .LEADING command has not been issued.
The .BEGIN command is identical to the .FORMAT command,
except that a .FORMAT command would retain the
previously specified preface line and all previously
specified but unused field descriptions, and, providing
that there is additional text to be represented, a
.FORMAT command would represent all blank lines which
have not yet been generated.
The numbers which can follow the .BEGIN command are
identical to those which can follow the .FORMAT and
.PROGRAM commands. The first number which can follow
any of these commands modifies the statement number of
the next FORMAT statement. The second number which can
follow any of these commands becomes the statement
number increment after the generation of the next
FORMAT statement. The description of the .FORMAT
command describes the interpretation of these numbers
in detail. If the statement number of the FORMAT
statement following a section of program text indicated
by an initial .PROGRAM command is to be modified, but
the program text includes dollar signs which are to be
replaced by this statement number, then this statement
number should be modified by the .PROGRAM command
rather than by the following .BEGIN or .FORMAT command,
since, if the modification is done by the .BEGIN or
FORMAT, a FORTRAN FORMAT Statement Generator Page 16
.FORMAT command, then incorrect statement numbers will
have been inserted into the program text.
For example, the source text
.spacing 2.output width 55
.begin 10,10;.preface WRITE(1,$)
.insert I2
.insert F2
The quick red fox jumps $$ feet over the lazy brown dog
.begin
The quick red fox jumps $$ feet over the lazy brown dog
.skip;.begin +100.preface WRITE(1,$)
.insert I2
.insert F2
.insert A2
The quick red fox jumps $$ feet over the lazy brown dog
.format,5
The quick red fox jumps $$ feet over the lazy brown dog
.skip;.format
The quick red fox jumps $$ feet over the lazy brown dog
would be transformed into the following FORTRAN text
when processed by this program.
WRITE(1,10)
10 FORMAT(25H The quick red fox jumps ,I2,7H feet o,
122Hver the lazy brown dog)
20 FORMAT(25H The quick red fox jumps ,9H feet ove,
120Hr the lazy brown dog)
WRITE(1,120)
120 FORMAT(25H The quick red fox jumps ,I2,7H feet o,
122Hver the lazy brown dog)
WRITE(1,130)
130 FORMAT(/25H The quick red fox jumps ,F2,6H feet ,
123Hover the lazy brown dog)
WRITE(1,135)
135 FORMAT(///25H The quick red fox jumps ,A2,4H fee,
125Ht over the lazy brown dog)
.BLANK number of extra blank lines to be generated
The .BLANK command indicates that, after the
representation in the FORMAT statement of the previous
text, the specified number of blank lines are to be
represented in the FORMAT statement, in addition to any
blank lines specified by other .BLANK or .SKIP
commands, and, if a .SPACING command has been issued,
in addition to the normal line spacing of one less than
the number which appeared to the right of the previous
.SPACING command. If no number appears to the right of
the .BLANK command, then the number 1 is assumed to
appear to the right of the .BLANK command instead. If
a .SPACING 2 command is in effect, then a .BLANK 3
FORMAT, a FORTRAN FORMAT Statement Generator Page 17
command would result in 3+(2-1) or 4 blank lines being
generated. The .BLANK command is similar to the .SKIP
command, except that the .SKIP command specifies the
number of extra blank lines as a multiple of the number
which appeared to the right of the previous .SPACING
command. The .BLANK command implies a .BREAK command.
If no text has been represented in the FORMAT
statements either since this program was started or
since the last .BEGIN command was issued, then the
.BLANK command, like the .SKIP command and the .BLANK
or .SKIP command implied by the .PARAGRAPH command, is
ignored unless a .LEADING command is in effect. Blank
lines which have not been generated when the end of the
source file is read or when the next .BEGIN command is
issued, but which have been requested by .BLANK or
.SKIP commands or which are necessary for the normal
line spacing, will be appended to the FORMAT statement
being constructed if a .TRAIL command is then in
effect. Blank lines will be discarded when the end of
the source file is read or the next .BEGIN command is
issued if a .NO TRAIL command is then in effect or if a
.TRAIL command has not by then been issued.
For example, the source text
.spacing 2.output width 55
.blank
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.blank
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.blank 2
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.blank 3
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(38H The quick red fox jumps over the lazy,
123H brown dog, then runs//17H into the forest./
2//43H The quick red fox jumps over the lazy brow,
318Hn dog, then runs//17H into the forest.////
445H The quick red fox jumps over the lazy brown ,
516Hdog, then runs//17H into the forest./////
645H The quick red fox jumps over the lazy brown ,
716Hdog, then runs//17H into the forest.)
FORMAT, a FORTRAN FORMAT Statement Generator Page 18
.BREAK
The .BREAK command indicates that no additional text is
to be included in the line of text currently being
represented in the FORMAT statement. The line of text
is assumed to be shorter than normal, and so is not
right justified by the insertion of extra spaces
between the groups of printing characters (words) on
the line. The .BREAK command is similar to the .EJECT
command with the exception that blank lines requested
by .BLANK commands or .SKIP commands or implied by
.SPACING commands are not generated immediately when
the .BREAK command is issued if no printing characters
have been accumulated into the current line of text.
The representation of the line of text will be followed
by a number of blank lines equal to one less than the
number which followed the previous .SPACING command if
the .TRAIL command has been issued or if additional
text is represented. A .BREAK command is also implied
by most other commands which change the manner in which
the source text is represented.
For example, the source text
.output width 55.spacing 2
one
two three
.break
four five six
seven eight nine ten
.break
eleven twelve thirteen fourteen fifteen
sixteen seventeen eighteen nineteen twenty twenty-one
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(14H one two three//19H four five six seve,
116Hn eight nine ten//24H eleven twelve thirteen ,
237Hfourteen fifteen sixteen seventeen//4H eig,
332Hhteen nineteen twenty twenty-one)
.CARRIAGE next carriage control character
or
.CARRIAGE next carriage control, subsequent carriage control
The first character in each line of text which is
generated when the resulting FORMAT statements are used
can be interpreted by the FORTRAN operating system to
select the carriage motion on the output device to
which the text is written. The .CARRIAGE command
allows the specification of these carriage control
characters. If a .CARRIAGE command has not been
issued, or if a .CARRIAGE command is issued without any
FORMAT, a FORTRAN FORMAT Statement Generator Page 19
following characters, or if a .NO CARRIAGE command is
issued, then the leftmost character in each of the
subsequent lines of text which are being represented in
the FORMAT statements will be a space if a positive
offset has been selected by the combination of .OFFSET,
.LEFT MARGIN and .INDENT or .PARAGRAPH commands, and
completely blank lines will be represented in the
FORMAT statements by consecutive slashes.
If the .CARRIAGE command is followed by a printing
character, or is followed by a pair of printing
characters optionally separated by spaces and/or
separated by a single comma, then the first character
following the .CARRIAGE command is to replace the
leftmost character in the next line of text which is
represented in the resulting FORMAT statements,
providing that the character which is to be replaced is
a space which was not quoted by an underscore and was
not specified by a number sign. If the next line of
text which is represented in the resulting FORMAT
statements is a blank line, regardless of whether this
blank line has been requested by a .BLANK command or a
.SKIP command or has been implied by a .SPACING command
or was encountered in text being copied in no fill
mode, then the line will contain only the character
specified by the .CARRIAGE command. In order for a
space, number sign, circumflex, back slash, less than
sign (if in flag capitalize mode), period, comma,
semicolon, exclamation point or underscore to be
specified by the .CARRIAGE command as the carriage
control character, this character would have to be
preceded by an underscore.
If a second printing character follows the .CARRIAGE
command, then, after the next line of text has been
generated, this second printing character is to replace
the leftmost character in each of the subsequent lines
of text, providing that the character which is to be
replaced is a space which was not quoted by an
underscore and was not specified by a number sign. If
a printing character does not appear between the
.CARRIAGE command and the following comma, then the
character following the comma is considered to have
also preceded the comma. Neither the .CARRIAGE command
nor the .NO CARRIAGE command implies a .BREAK command.
A .BREAK command, or some other command which implies a
.BREAK command, should usually be issued before the
.CARRIAGE command since, if the lines of text are being
constructed in fill mode, the carriage control
character is applied to the current line of text only
after this line of text has otherwise been completed.
For example, the source text
FORMAT, a FORTRAN FORMAT Statement Generator Page 20
.spacing 2.right margin 54.output width 55.paragraph
.carriage 1*.preface WRITE(1,$)
This is the first line in the demonstration of the
insertion of the carriage control character.
.eject.carriage 1#.paragraph
This is the second line in the demonstration of the
insertion of the carriage control character.
.eject.carriage 1.paragraph
This is the third line in the demonstration of the
insertion of the carriage control character.
.eject.no carriage.paragraph
This is the fourth line in the demonstration of the
insertion of the carriage control character.
.eject.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H1 This is the first line in the ,
117Hdemonstration of/1H*/20H*the insertion of th,
229He carriage control character./1H*/1H1/6X,2HTh,
345His is the second line in the demonstration ,
42Hof/1X/37H the insertion of the carriage contro,
512Hl character./1X/1H1/6X,19HThis is the third l,
630Hine in the demonstration of//10H the inser,
739Htion of the carriage control character.///6X,
845HThis is the fourth line in the demonstration,
94H of//37H the insertion of the carriage contro,
112Hl character./)
END
which would, in turn, generate the following text when
run.
1 This is the first line in the demonstration of
*
*the insertion of the carriage control character.
*
1
This is the second line in the demonstration of
the insertion of the carriage control character.
1
This is the third line in the demonstration of
the insertion of the carriage control character.
This is the fourth line in the demonstration of
the insertion of the carriage control character.
FORMAT, a FORTRAN FORMAT Statement Generator Page 21
.CENTER width of region as unsigned number
.CENTER offset from largest right margin as signed number
.CENTRE width of region as unsigned number
or
.CENTRE offset from largest right margin as signed number
The .CENTER command indicates that the following line
of source text is to be centered and, except for the
insertion of the initial spaces needed to obtain
centering, is to be represented in the FORMAT statement
with the same number of spaces as in the original
source. If no number follows the .CENTER command, then
the following line is to be centered between column
zero and the farthest right margin which has yet been
set. If the number following the .CENTER command is
signed, then the following line is to be centered
between column zero and the column which is the sum of
the indicated number and the farthest right margin
which has yet been set, so that the line is shifted
from its centered position by half the signed number of
columns. If the number following the .CENTER command
is unsigned and greater than zero, then the following
line of text is to be centered between column zero and
the indicated column. If the number following the
.CENTER command is unsigned and zero, then the
following line is to be centered between the current
left and right margins. If the .CENTER command was
preceded by an .INDENT command, then the .INDENT
command is ignored. The .CENTER command implies a
.BREAK command both before and after the following line
of source text.
For example, the source text
.OFFSET 0;.OUTPUT WIDTH 55;.PREFACE WRITE(1,$)
1234567890123456789012345678901234567890123456789012345
.LEFT MARGIN 14;.RIGHT MARGIN 34
The quick red fox jumps over the lazy brown dog
.CENTER 0;CENTER 0
.CENTER 52;CENTER 52
.CENTER -4;CENTER -4
.CENTER;CENTER #
.CENTER;CENTER
.CENTER; CENTER
.CENTER +12;CENTER +12
.CENTER 76;CENTER 76
.LEFT MARGIN 30;.RIGHT MARGIN 50;.CENTER 0
CENTER 0
The quick red fox jumps over the lazy brown dog
.LEFT MARGIN 0
1234567890123456789012345678901234567890123456789012345
.PROGRAM; END
FORMAT, a FORTRAN FORMAT Statement Generator Page 22
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H12345678901234567890123456789012345678,
117H90123456789012345/14X,20HThe quick red fox/
214X,20Hjumps over the lazy/14X,9Hbrown dog/19X,
310HCENTER 0/21X,10HCENTER 52/23X,9HCENTER -,
41H4/25X,6HCENTER,4X/27X,6HCENTER/29X,6HCENTER/9X,
522X,10HCENTER +12/33X,10HCENTER 76/35X,6HCENTER,
63X,1H0/30X,20HThe quick red fox/30X,7Hjumps ,
713Hover the lazy/30X,9Hbrown dog/12H123456789012,
843H3456789012345678901234567890123456789012345)
END
which would, in turn, generate the following text when
run.
1234567890123456789012345678901234567890123456789012345
The quick red fox
jumps over the lazy
brown dog
CENTER 0
CENTER 52
CENTER -4
CENTER
CENTER
CENTER
CENTER +12
CENTER 76
CENTER 0
The quick red fox
jumps over the lazy
brown dog
1234567890123456789012345678901234567890123456789012345
.COPY number of characters to copy, number of times to copy
The .COPY command indicates that, to the immediate
right of the initial offset in each line of text which
is copied in no fill mode or which is constructed in
fill mode, the number of characters indicated by the
first number is to be duplicated the number of times
indicated by the second number. The initial spaces
requested either by the .OFFSET command or by the
default .OFFSET 1 command cannot be duplicated and are
not included in the character count. The carriage
control character specified by the .CARRIAGE command is
not duplicated even if the initial offset is zero. If
the .MASK command has specified a template line, then
the same replacements of nonquoted spaces are also made
in the copies. If the line which is being copied
contains dollar signs which are being replaced by
output field specifications specified by the .INSERT
FORMAT, a FORTRAN FORMAT Statement Generator Page 23
command, then it is the dollar signs which are counted
to determine the width of the region being copied, not
the characters inserted in place of the dollar signs,
and the same insertions are also made in the copies.
If the first number following the .COPY command is less
than the number of characters to the right of the
initial offset, including the template characters which
might have been defined by the .MASK command, then all
of the characters to the right of the initial offset
will be copied. If the first number is greater than
the number of characters to the right of the initial
offset then extra spaces at the right will also be
copied. The range of the .COPY command can be
cancelled by a subsequent .NO COPY command. A .COPY
command issued within the range of a .PROGRAM command
applies to the source text following the next .BEGIN or
.FORMAT command. Both the .COPY command and the .NO
COPY command imply a .BREAK command.
For example, the source text
.insert 5H01234
.insert 5H56789
.insert 6H111111
.insert 6H222222
.insert 6HPUBLIC
.insert 6HSECRET
.preface WRITE(1,$)
.offset 2.copy 29,1.output width 55.carriage 1,*
************************
.left margin 2.right margin 22
.mask * *
.skip.center 0;Corporation: $$$$$
.center 0; Firm: $$$$$
.skip;To gain initial access to the computer, you will
use the numbers $$$$$$ and $$$$$$ and password $$$$$$.
To run the programs, you will use the password $$$$$$.
.skip.left margin 0;************************
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H1 ************************ *******,
117H*****************/3H* *,22X,7H* *,22X,1H*/
218H* * Corporation: ,5H01234,15H * * Corp,
39Horation: ,5H01234,3H */3H* *,9X,6HFirm: ,
45H56789,9H * *,9X,6HFirm: ,5H56789,3H */
53H* *,22X,7H* *,22X,1H*/17H* * To gain ,
638Hinitial * * To gain initial */4H* * ,
745Haccess to the * * access to ,
86H the */36H* * computer, you will * * com,
919Hputer, you will */22H* * use the numbe,
133Hrs * * use the numbers */4H* * ,
FORMAT, a FORTRAN FORMAT Statement Generator Page 24
26H111111,8H and ,6H222222,9H * * ,
36H111111,8H and ,6H222222,2H */11H* * and pas,
46Hsword ,6HPUBLIC,23H. * * and password ,
56HPUBLIC,3H. */30H* * To run the programs, * ,
625H * To run the programs, */16H* * you will ,
739Huse the * * you will use the */3H* *,
810H password ,6HSECRET,22H. * * password,
91H ,6HSECRET,7H. */3H* *,22X,7H* *,22X,
11H*)
WRITE(1,2)
2 FORMAT(38H* ************************ *******,
117H*****************)
END
which would, in turn, generate the following text when
run.
1 ************************ ************************
* * * * *
* * Corporation: 01234 * * Corporation: 01234 *
* * Firm: 56789 * * Firm: 56789 *
* * * * *
* * To gain initial * * To gain initial *
* * access to the * * access to the *
* * computer, you will * * computer, you will *
* * use the numbers * * use the numbers *
* * 111111 and 222222 * * 111111 and 222222 *
* * and password PUBLIC. * * and password PUBLIC. *
* * To run the programs, * * To run the programs, *
* * you will use the * * you will use the *
* * password SECRET. * * password SECRET. *
* * * * *
* ************************ ************************
.END OF FILE
The .END OF FILE command indicates that the processing
of the source text is complete. Any additional
commands or additional text appearing on the same line
to the right of the .END OF FILE command are ignored.
No additional source text is read. Blank lines which
have not yet been generated, but which have been
requested by .SKIP or .BLANK commands or which are
necessary for multiple line spacing, will be appended
to the FORMAT statement currently being constructed if
a .TRAIL command is in effect. Blank lines will be
discarded if a .NO TRAIL command is in effect or if a
.TRAIL command has not been issued. An .END OF FILE
command is necessary at the end of the source file only
if the system where this program is being used does not
support end of file tests in FORTRAN READ statements.
FORMAT, a FORTRAN FORMAT Statement Generator Page 25
.EJECT
The .EJECT command indicates that no additional text is
to be included in the line of text currently being
represented in the FORMAT statement. The line of text
is assumed to be shorter than normal, and so is not
right justified by the insertion of extra spaces
between the groups of printing characters (words) on
the line. The .EJECT command is similar to the .BREAK
command with the exception that all blank lines
requested by .BLANK commands or .SKIP commands or
implied by .SPACING commands will be generated
immediately when the .EJECT command is issued even if
no printing characters have been accumulated into the
current line of text. The .EJECT command can be issued
before a .CARRIAGE command to prevent the newly
specified carriage control character from being
inserted into the start of the lines which have been
specified but not yet forced into the FORMAT statement.
For example, the source text
one
.skip 2
.carriage *,*
two
.skip 2
.eject
.carriage @,@
three
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(4H one/1H*/1H*/4H*two/1H*/1H*/6H@three)
.FILL
The .FILL command indicates that each line of text
represented in the FORMAT statements is to be filled
with the next words which appear in the source text
until the following word would extend beyond the
current right margin. If the first word is wider than
the current separation between the left and right
margins, then the entire word is fitted onto the
current line. A .FILL command terminates the range of
the previous .NO FILL command which would have caused
each line of text represented in the resulting FORMAT
statements to contain the same number of words per line
and the same number of spaces preceding and between
words as in the source text. A .FILL command is
assumed to be in effect when this program is started.
A .FILL command issued within the range of a .PROGRAM
command applies to the source text following the next
FORMAT, a FORTRAN FORMAT Statement Generator Page 26
.BEGIN or .FORMAT command. The .FILL command implies a
.BREAK command.
Within the range of the .FILL command, a space
separates adjacent words which appear on the same line
of text represented in the FORMAT statements,
regardless of whether these words appeared on separate
lines of the source text or appeared on the same line
separated by additional spaces. A second space follows
each colon, semicolon, exclamation point, question mark
and period which is not preceded by an underscore
character but which is followed by another word. If a
.NO JUSTIFY command has not been issued, or if a
.JUSTIFY command has been issued more recently than a
.NO JUSTIFY command, then additional spaces are
inserted between the words to cause the line of text to
extend to the current right margin, providing that a
.BREAK command does not follow and is not implied to
follow the rightmost word on the line.
For example, the source text
.FILL.OFFSET 0.RIGHT MARGIN 55.OUTPUT WIDTH 55
.PREFACE WRITE(1,$)
The FILL command
indicates that each
line of text
represented in the
FORMAT statements is
to be filled
.NO JUSTIFY; with the next
words which appear
in the source
text until the
following word would
.NOFILL;extend beyond the
current right margin.
.PROGRAM; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38HThe FILL command indicates that eac,
117Hh line of text/24Hrepresented in the FORMA,
228HT statements is to be filled/13Hwith the next,
338H words which appear in the source text/4Hunti,
426Hl the following word would/6Hextend,14X,3Hbey,
53Hond,15X,3Hthe/5X,7Hcurrent,16X,5Hright,15X,1Hm,
66Hargin.)
END
FORMAT, a FORTRAN FORMAT Statement Generator Page 27
which would, in turn, generate the following text when
run.
The FILL command indicates that each line of text
represented in the FORMAT statements is to be filled
with the next words which appear in the source text
until the following word would
extend beyond the
current right margin.
In the above example, the first line in the text which
is generated when the FORTRAN text is run is justified
since a .BREAK command is not implied following the
rightmost word on the line. The second line is not
justified since a .BREAK command is implied by the .NO
JUSTIFY command which follows the rightmost word on the
line. The third and fourth lines are within the range
of the .NO JUSTIFY command and so are not justified.
The fifth and sixth lines are within the range of the
.NOFILL command and so are direct copies of the
corresponding lines in the source text.
.FLAGS
or
.FLAGS ALL
The .FLAGS ALL command indicates that all flag
characters which were initially active, or which have
been individually activated by the corresponding .FLAGS
commands, and which have not been individually disabled
by the corresponding .NO FLAGS commands, are to be
active in the source text. The following flag
characters are activated by the .FLAGS ALL command.
$ (dollar sign) or whatever character has been most
recently selected by a .FLAGS INSERT command.
\ (back slash) or whatever character has been most
recently selected by a .FLAGS LOWER CASE command.
_ (underscore) or whatever character has been most
recently selected by a .FLAGS QUOTE command.
# (number sign) or whatever character has been most
recently selected by a .FLAGS SPACE command.
^ (circumflex) or whatever character has been most
recently selected by a .FLAGS UPPER CASE command.
< (less than sign) if a .FLAGS CAPITALIZE command
has been issued, or whatever character has been
most recently selected by a .FLAGS CAPITALIZE
command. This flag character will remain inactive
if a .FLAGS CAPITALIZE command has not been
issued.
All of these flag characters can be temporarily
disabled by the issuing of a .NO FLAGS or a .NO FLAGS
ALL command. The .FLAGS ALL command and the .NO FLAGS
FORMAT, a FORTRAN FORMAT Statement Generator Page 28
ALL command do not change the interpretation of the
flag characters which identify and terminate commands.
The flag characters which are to be interpreted and
acted upon in a preface line defined by the .PREFACE
command or in a field specification defined by the
.INSERT command must be those which are active when the
preface line or the field specification is defined,
regardless of what flag characters happen to be active
when the preface line or the field specification is
used. Neither the .FLAGS ALL command nor the .NO FLAGS
ALL command implies a .BREAK command.
For example, the source text
.OUTPUT WIDTH 55.RIGHT MARGIN 55.OFFSET 0.NOFILL
.UPPERCASE.INSERT 3^^H\\THE
.FORMAT.PREFACE \\WRITE(1,$)
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
.PROGRAM
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
.NO FLAGS
.FORMAT.FLAGS CAPITALIZE.UPPER CASE.INSERT 3^^H\\THE
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
.PROGRAM.PREFACE \\WRITE(1,$)
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
.FLAGS
.UPPER CASE.FORMAT
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
.PROGRAM
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
would be transformed into the following FORTRAN text
when processed by this program.
write(1,1)
1 FORMAT(30HThe quick Red <fox jumps over ,3Hthe,
117H lazy Brown <dog.)
The quick Red <fox jumps over 2 lazy Brown <dog.
write(1,2)
2 FORMAT(38H\\^THE QUICK#_RED <FOX JUMPS OVER $$$ ,
117HLAZY _BROWN <DOG.)
\\^THE QUICK#_RED <FOX JUMPS OVER $$$ LAZY _BROWN <DOG.
\\WRITE(1,$)
3 FORMAT(29HThe quick Red FOX jumps over ,
13^^H\\THE,16H lazy Brown DOG.)
The quick Red FOX jumps over 4 lazy Brown DOG.
It should be noted that the final preface line and the
final field specification were defined in the above
example while the flag characters were inactive so
these flag characters are treated as nonflag characters
even though the preface line and the field
specification are applied later when the flag
characters are again active.
FORMAT, a FORTRAN FORMAT Statement Generator Page 29
.FLAGS CAPITALIZE character to precede capitalized words
The .FLAGS CAPITALIZE command indicates that the single
character appearing as its argument can be used in the
following source text at the start of words in which
the alphabetic letters are to be converted to upper
case. The case mode which is in effect when the
specified capitalization flag character is found in the
following source text, regardless of whether this case
mode is the default retention of cases which can also
be specified by double circumflexes or by the .UPPER
CASE command, or is the translation of upper case into
lower case which is specified by double back slashes or
by the .LOWER CASE command, will be restored following
the next space, the next end of line or the next
appearance of the specified capitalization flag
character. The .FLAGS CAPITALIZE command does not
imply a .BREAK command.
The capitalization flag character specified by the
.FLAGS CAPITALIZE command should not currently be
active as some other flag indication, and should not be
one of the alphabetic letters A through Z. The
capitalization flag character is recognized in all of
the following source text, including the text being
represented in the FORMAT statements, the text within
the range of .PROGRAM commands, and within commands and
their arguments. Within the range of the .FLAGS
CAPITALIZE command, underscores must precede all
appearances of the capitalization flag character which
are to be treated like other characters. If no
capitalization flag character is specified by the
.FLAGS CAPITALIZE command, then the last character so
specified by a previous .FLAGS CAPITALIZE command will
be used, or the less than sign will be used if no
character has previously been specified by any .FLAGS
CAPITALIZE command.
No capitalization flag character is active when this
program is started. The capitalization flag character
specified by the .FLAGS CAPITALIZE command can
temporarily be treated as a nonflag character if a .NO
FLAGS CAPITALIZE command is issued, but will again
become active when a .FLAGS CAPITALIZE command is
issued. The capitalization flag character, like all
other flag characters in the source text, can also
temporarily be treated as a nonflag character if a .NO
FLAGS or .NO FLAGS ALL command is issued, but will
again become active when a .FLAGS or .FLAGS ALL command
is issued, providing that a .FLAGS CAPITALIZE command
has been issued more recently than a .NO FLAGS
CAPITALIZE command. Words which are marked by the
capitalization flag character in a preface line defined
by the .PREFACE command or in a field specification
defined by the .INSERT command are converted to upper
FORMAT, a FORTRAN FORMAT Statement Generator Page 30
case when the preface line or the field specification
is defined, regardless of what the capitalization flag
character happens to be when the preface line or the
field specification is used.
For example, the source text
.nofill.offset 0.out width 55.preface WRITE(1,$)
.flag capitalize
^^UPPER lower <Le^S^s\T\han<UPPERlower UPPER lower
UPPER lower <Le^S^s\T\han UPPER lower
UPPER lower <Le^S^s\T\han
UPPER lower
.fcap %
\\UPPER lower %Le^S^s\T\han%UPPER*lower UPPER lower
UPPER lower %Le^S^s\T\han UPPER lower
UPPER lower %Le^S^s\T\han
UPPER lower
.no flag
^^UPPER lower %Le^S^s\T\han%UPPERlower UPPER lower
\\UPPER lower %Le^S^s\T\han%UPPER*lower UPPER lower
.flag
^^UPPER lower %Le^S^s\T\han%UPPERlower UPPER lower
\\UPPER lower %Le^S^s\T\han%UPPER*lower UPPER lower
.no flag capitalize
^^UPPER lower %Le^S^s\T\han%UPPERlower UPPER lower
\\UPPER lower %Le^S^s\T\han%UPPER*lower UPPER lower
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38HUPPER lower LESSthANUPPERlower UPPER l,
14Hower/32HUPPER lower LESSthAN UPPER lower/3HUPP,
217HER lower LESSthAN/11HUPPER lower/9Hupper low,
334Her LESSthANupper*lower upper lower/8Hupper lo,
424Hwer LESSthAN upper lower/17Hupper lower LESSt,
53HhAN/11Hupper lower/24H^^upper lower %le^s^s\t\,
626Hhan%upperlower upper lower/15H\\upper lower %,
736Hle^s^s\t\han%upper*lower upper lower/6HUPPER ,
836Hlower LESSthANUPPERlower UPPER lower/6Hupper ,
937Hlower LESSthANupper*lower upper lower/5HUPPER,
139H lower %LeSSthan%UPPERlower UPPER lower/3Hupp,
242Her lower %leSSthan%upper*lower upper lower)
end
which would, in turn, generate the following text when
run.
UPPER lower LESSthANUPPERlower UPPER lower
UPPER lower LESSthAN UPPER lower
UPPER lower LESSthAN
UPPER lower
upper lower LESSthANupper*lower upper lower
FORMAT, a FORTRAN FORMAT Statement Generator Page 31
upper lower LESSthAN upper lower
upper lower LESSthAN
upper lower
^^upper lower %le^s^s\t\han%upperlower upper lower
\\upper lower %le^s^s\t\han%upper*lower upper lower
UPPER lower LESSthANUPPERlower UPPER lower
upper lower LESSthANupper*lower upper lower
UPPER lower %LeSSthan%UPPERlower UPPER lower
upper lower %leSSthan%upper*lower upper lower
.FLAGS CONTROL character to precede commands
The .FLAGS CONTROL command indicates that the single
character appearing as its argument can be used in the
following source text at the start of lines which are
to be interpreted as commands rather than as text which
is to be represented in the FORMAT statements. If no
character is specified by the .FLAGS CONTROL command,
then the last character so specified by a previous
.FLAGS CONTROL command will be used, or the period will
be used if no character has previously been specified
by any .FLAGS CONTROL command. The .FLAGS CONTROL
command does not imply a .BREAK command.
The control flag character specified by the .FLAGS
CONTROL command should not currently be active as some
other flag indication, and should not be one of the
alphabetic letters A through Z. If the .FLAGS CONTROL
command is followed on the same line by another
command, then these commands should be separated by a
semicolon rather than by the appearance of either the
original control flag character or of the new control
flag character, since the new control flag character is
not active until after the .FLAGS CONTROL command is
interpreted, and the original control flag character
will not be active when the next command is
interpreted.
If the control flag character appears at the start of a
line which is not a command line or if the control flag
character appears within a command line but does not
indicate the start of another command, then the control
flag character must be preceded by an underscore. The
control flag character specified by the .FLAGS CONTROL
command can also be treated as a nonflag character if a
.NO FLAGS COMMAND is issued. Of course, if the .NO
FLAGS CONTROL command is issued, then no further
commands can appear in the source text.
For example, the source text
.flag control *.this is the first line
*output width 55;and this is the second line.
*flag control =;=preface WRITE(1,$)
FORMAT, a FORTRAN FORMAT Statement Generator Page 32
would be transformed into the following FORTRAN text
when processed by this program.
WRITE(1,1)
1 FORMAT(38H .this is the first line and this is t,
115Hhe second line.)
.FLAGS FENCE character to terminate and separate commands
The .FLAGS FENCE command indicates that the single
character appearing as its argument can be used in
command lines in the following source text to terminate
any command except those which take the rest of the
line of text as their arguments. The text which
follows the use of the separation flag character can be
any text which could appear on the next line if nothing
else appeared to the right of the command. The
separation flag character is required between two
commands on the same line only if the first command is
followed by an exclamation point and then by a comment.
If no character is specified by the .FLAGS FENCE
command, then the last character so specified by a
previous .FLAGS FENCE command will be used, or the
semicolon will be used if no character has previously
been specified by any .FLAGS FENCE command. The .FLAGS
FENCE command does not imply a .BREAK command.
The separation flag character specified by the .FLAGS
FENCE command should not currently be active as some
other flag indication, and should not be one of the
alphabetic letters A through Z. If the .FLAGS FENCE
command is followed on the same line by another
command, then either the .FLAGS FENCE command should
not itself be terminated by a separation flag character
or else the .FLAGS FENCE command should be terminated
by the original separation flag character rather than
by the appearance of the new separation flag character
since the new separation flag character is not active
until after the .FLAGS FENCE command is interpreted.
If the separation flag character appears in a comment
in a command line but is not to terminate the comment,
or appears as a character argument of a command, then
the separation flag character must be preceded by an
underscore. The separation flag character can
temporarily be treated as a nonflag character if a .NO
FLAGS FENCE command is issued, but will again become
active when a .FLAGS FENCE command is issued.
For example, the source text
.flag fence @!a comment;.indent 5@This text is to be
.output width 55@represented in the FORMAT statement.
FORMAT, a FORTRAN FORMAT Statement Generator Page 33
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(6X,35HThis text is to be represented in t,
120Hhe FORMAT statement.)
.FLAGS INSERT character to indicate location of insertions
The .FLAGS INSERT command indicates that the single
character appearing as its argument can be used in the
source text on the lines following a .PROGRAM command
and in the text to the right of a .PREFACE command to
indicate locations at which the statement number of the
next FORMAT statement is to be inserted. If more
contiguous appearances of the insertion flag character
are found than there are digits in the statement
number, then additional spaces are inserted to the left
of the statement number so that the total number of
characters which are inserted equals the number of
insertion flag characters in the group. The character
specified by the .FLAGS INSERT command can also be used
within the source text which is being represented in
the resulting FORMAT statements to indicate locations
at which the output field descriptions specified by the
.INSERT command are to be inserted. The number of
contiguous appearances of the insertion flag character
in the text being represented in the FORMAT statements
indicates the number of characters which will be
generated when a FORTRAN variable is written out using
the field specification. The number of contiguous
appearances of the insertion flag character is the
number of character positions which must be reserved
for the appearance of this variable when the words in
the source text are wrapped around and justified by
this program. The .FLAGS INSERT command does not imply
a .BREAK command.
The insertion flag character specified by the .FLAGS
INSERT command should not currently be active as some
other flag indication, and should not be one of the
alphabetic letters A through Z. Within the range of
the .FLAGS INSERT command, underscores must precede all
appearances of the insertion flag character which are
to be treated like any other character. If no
insertion flag character is specified by the .FLAGS
INSERT command, then the last character so specified by
a previous .FLAGS INSERT command will be used, or the
dollar sign will be used if no character has previously
been specified by any .FLAGS INSERT command.
The insertion flag character specified by the .FLAGS
INSERT command can temporarily be treated as a nonflag
character if a .NO FLAGS INSERT command is issued, but
will again become active when a .FLAGS INSERT command
FORMAT, a FORTRAN FORMAT Statement Generator Page 34
is issued. The insertion flag character, like all
other flag characters in the source text, can also
temporarily be treated as a nonflag character if a .NO
FLAGS or .NO FLAGS ALL command is issued, but will
again become active when a .FLAGS or .FLAGS ALL command
is issued, providing that a .NO FLAGS INSERT command
has not been issued more recently than a .FLAGS INSERT
command. The character which is to be replaced by the
statement number in a preface line defined by the
.PREFACE command is the insertion flag character which
is active when the preface line is defined, regardless
of what the insertion flag character happens to be when
the preface line is used.
For example, the source text
.flags insert @.output width 55.program 100,10
.insert 1I8
.insert 1A8
.preface WRITE(1$2,@)
^^C NEXT FORMAT STATEMENT IS @.
.format;\\^MAXIMUM AMOUNT OF LOAN IS $@@@@@@@@.
.flags insert $.program
^^C NEXT FORMAT STATEMENT IS $.
.format;\\^MAXIMUM AMOUNT OF LOAN IS _$$$$$$$$$.
.no flags.program
^^C NEXT FORMAT STATEMENT IS $.
.format;\\^MAXIMUM AMOUNT OF LOAN IS _$$$$$$$$$.
would be transformed into the following FORTRAN text
when processed by this program.
C NEXT FORMAT STATEMENT IS 100.
WRITE(1$2,100)
100 FORMAT(28H Maximum amount of loan is $,1I8,1H.)
C NEXT FORMAT STATEMENT IS 110.
WRITE(1$2,110)
110 FORMAT(28H Maximum amount of loan is $,1A8,1H.)
^^c next format statement is $.
WRITE(1$2,120)
120 FORMAT(38H \\^maximum amount of loan is _$$$$$$$,
13H$$.)
.FLAGS LOWER CASE character to precede lower case letters
The .FLAGS LOWER CASE command indicates that the single
character appearing as its argument can be used in the
source text before any alphabetic letter in the range A
through Z which is to be converted to its lower case
form. Two adjacent lower case shift characters
indicate that all subsequent alphabetic letters are to
be converted to lower case, except for the next letter
immediately following either an underscore or a
circumflex and except for all letters in the word
FORMAT, a FORTRAN FORMAT Statement Generator Page 35
immediately following a less than sign if within the
range of a .FLAGS CAPITALIZE command. The range of the
lower case shift lock indicated either by the 2
adjacent lower case shift characters or by the
equivalent .LOWER CASE command can be terminated either
by 2 adjacent circumflexes or by the equivalent .UPPER
CASE command. The .FLAGS LOWER CASE command does not
imply a .BREAK command.
The lower case shift character specified by the .FLAGS
LOWER CASE command should not currently be active as
some other flag indication, and should not be one of
the alphabetic letters A through Z. Within the range
of the .FLAGS LOWER CASE command, underscores must
precede all appearances of the lower case shift
character which are to be treated like any other
character. If no lower case shift character is
specified by the .FLAGS LOWER CASE command, then the
last character so specified by a previous .FLAGS LOWER
CASE command will be used, or the back slash will be
used if no character has previously been specified by
any .FLAGS LOWER CASE command.
The lower case shift character specified by the .FLAGS
LOWER CASE command can temporarily be treated as a
nonflag character if a .NO FLAGS LOWER CASE command is
issued, but will again become active when a .FLAGS
LOWER CASE command is issued. The lower case shift
character, like all other flag characters in the source
text, can also temporarily be treated as a nonflag
character if a .NO FLAGS or .NO FLAGS ALL command is
issued, but will again become active when a .FLAGS or
.FLAGS ALL command is issued, providing that a .NO
FLAGS LOWER CASE command has not been issued more
recently than a .FLAGS LOWER CASE command. Letters
which are preceded by the lower case shift character or
which are within the range of a lower case shift lock
in a preface line defined by the .PREFACE command or in
a field specification defined by the .INSERT command
are converted to lower case when the preface line or
the field specification is defined, regardless of what
the case shift characters happen to be when the preface
line or the field specification is used.
For example, the source text
.flag capitalize.nofill.output width 55
\\\T\H\I\S \l\i\n\e WILL be ^^\A\L\L \l\o\w\e\r case
^^^t^h^i^s ^L^I^N^E WILL <be \\^A^L^L ^u^p^p^e^r <CASE
.flag lower case -.flag upper case +.flag capitalize @
---T-H-I-S -l-i-n-e WILL be ++-A-L-L -l-o-w-e-r case
+++t+h+i+s +L+I+N+E WILL @be --+A+L+L +u+p+p+e+r @CASE
would be transformed into the following FORTRAN text
when processed by this program.
FORMAT, a FORTRAN FORMAT Statement Generator Page 36
1 FORMAT(33H this line will be all lower case/2H T,
131HHIS LINE WILL BE ALL UPPER CASE/10H this line,
223H will be all lower case/18H THIS LINE WILL BE,
315H ALL UPPER CASE)
.FLAGS QUOTE character ro precede character to be used as is
The .FLAGS QUOTE command indicates that the single
character appearing as its argument can be used in the
source text before any character which is to be treated
as an ordinary nonalphabetic nonflag printing
character. The .FLAGS QUOTE command does not imply a
.BREAK command.
The quotation flag character specified by the .FLAGS
QUOTE command should not currently be active as some
other flag indication, and should not be one of the
alphabetic letters A through Z. Within the range of
the .FLAGS QUOTE command, the quotation flag character
must precede all appearances of the quotation flag
character which are to be treated like any other
character. If no quotation flag character is specified
by the .FLAGS QUOTE command, then the last character so
specified by a previous .FLAGS QUOTE command will be
used, or the underscore will be used if no character
has previously been specified by any .FLAGS QUOTE
command.
The quotation flag character specified by the .FLAGS
QUOTE command can temporarily be treated as a nonflag
character if a .NO FLAGS QUOTE command is issued, but
will again become active when a .FLAGS QUOTE command is
issued. The quotation flag character, like all other
flag characters in the source text, can also
temporarily be treated as a nonflag character if a .NO
FLAGS or .NO FLAGS ALL command is issued, but will
again become active when a .FLAGS or .FLAGS ALL command
is issued, providing that a .NO FLAGS QUOTE command has
not been issued more recently than a .FLAGS QUOTE
command. If characters within the definition of a
preface line by the .PREFACE command or of a field
specification by the .INSERT command are to be treated
as nonflag printing characters in spite of their usual
interpretations, then these characters should be
preceded by the quotation flag character which is
active when the preface line or the field specification
is defined, regardless of what quotation flag character
happens to be active when the preface line or the field
specification is used.
For example, the source text
FORMAT, a FORTRAN FORMAT Statement Generator Page 37
.flags quote *.left margin 3.output width 55
Some typical flag characters are
.indent -3
*###the number sign
.indent -3
*^##the circumflex
.indent -3
*\##the back slash
.indent -3
*$##the dollar sign
.indent -3
_##the underscore
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(4X,32HSome typical flag characters are/
119H # the number sign/18H ^ the circumflex/1H ,
217H\ the back slash/19H $ the dollar sign/2H _,
316H the underscore)
.FLAGS REMARK character to separate commands from comments
The .FLAGS REMARK command indicates that the single
character appearing as its argument can be used in
command lines in the following source text to indicate
that the following text through the end of the line or
through the next appearance of a semicolon on the same
line is to be treated as a comment and is to be
ignored. Less than signs in the comment do not apply
after the end of the comment, but all case shift locks
indicated in the comment by double back slashes or by
double circumflexes are applied to the text following
the comment. The remark flag character is inactive
following those commands which take the rest of the
line of text as their arguments. If no character is
specified by the .FLAGS REMARK command, then the last
character so specified by a previous .FLAGS REMARK
command will be used, or the exclamation point will be
used if no character has previously been specified by
any .FLAGS REMARK command. The .FLAGS REMARK command
does not imply a .BREAK command.
The remark flag character specified by the .FLAGS
REMARK command should not currently be active as some
other flag indication, and should not be one of the
alphabetic letters A through Z. If the .FLAGS REMARK
command is followed on the same line by a comment, then
the comment should be indicated by the original remark
flag character since the new remark flag character will
not be active until the .FLAGS REMARK command is
interpreted.
If the remark flag character appears within a command
FORMAT, a FORTRAN FORMAT Statement Generator Page 38
line but is not to indicate the start of a comment,
then the remark flag character must be preceded by an
underscore. The remark flag character specified by the
.FLAGS REMARK command can also be treated as a nonflag
character if a .NO FLAGS REMARK command is issued, but
will again become active when a .FLAGS REMARK command
is issued.
For example, the source text
.!.indent 5!command which has been commented out
.flags capitalize!comment separating commands;.offset 0
.preface one<two!three four
FIRST LINE
.format! 2\\back slashes;.preface five<six;seven eight
.!capitalization stops at end of <comment;SECOND LINE
.flag remark @!at sign inactive;.begin@ 2^^circumflexes
.preface nine<ten.eleven twelve
THIRD LINE
would be transformed into the following FORTRAN text
when processed by this program.
oneTWO!THREE four
1 FORMAT(10HFIRST LINE)
fiveSIX;SEVEN eight
2 FORMAT(11Hsecond line)
nineTEN.ELEVEN twelve
3 FORMAT(10HTHIRD LINE)
.FLAGS SPACE character to indicate a nonadjustable space
The .FLAGS SPACE command indicates that the single
character appearing as its argument can be used in the
following source text to indicate the location of a
space which is to be treated as though it were a
printing character. The use of the space holding
character is completely equivalent to the use of a
space preceded by an underscore. The .FLAGS SPACE
command does not imply a .BREAK command.
The space holding character specified by the .FLAGS
SPACE command should not currently be active as some
other flag indication, and should not be one of the
alphabetic letters A through Z. The space holding
character is recognized in all of the following source
text, including the text being represented in the
FORMAT statements, the text within the range of
.PROGRAM commands, and within the arguments of
commands. Within the range of the .FLAGS SPACE
command, underscores must precede all appearances of
the space holding character which are to be left
unchanged rather than be converted to spaces. If no
space holding character is specified by the .FLAGS
FORMAT, a FORTRAN FORMAT Statement Generator Page 39
SPACE command, then the last character so specified by
a previous .FLAGS SPACE command will be used, or the
number sign will be used if no character has previously
been specified by any .FLAGS SPACE command.
The space holding character specified by the .FLAGS
SPACE command can temporarily be treated as a nonflag
character if a .NO FLAGS SPACE command is issued, but
will again become active when a .FLAGS SPACE command is
issued. The space holding character, like all other
flag characters in the source text, can also
temporarily be treated as a nonflag character if a .NO
FLAGS or .NO FLAGS ALL command is issued, but will
again become active when a .FLAGS or .FLAGS ALL command
is issued, providing that a .NO FLAGS SPACE command has
not been issued more recently than a .FLAGS SPACE
command. Nonadjustable spaces in a preface line
defined by the .PREFACE command or in a field
specification defined by the .INSERT command should be
indicated by the space holding character in effect when
the preface line or the field specification is defined,
regardless of what the space holding character happens
to be when the preface line or the field specification
is used.
For example, the source text
.output width 55
.insert 10Hthe _####
.insert 10Hthe *###
.preface ######write(1_#2,$)
This demonstrates $space###holding character.
.flags space *.break
This demonstrates $space***holding character.
would, when processed by this program, be transformed
into the following FORTRAN text.
write(1#2,1)
1 FORMAT(19H This demonstrates ,10Hthe # ,2Hsp,
124Hace holding character./17H This demonstrate,
22Hs ,10Hthe * ,26Hspace holding character.)
.FLAGS UPPER CASE character to precede upper case letters
The .FLAGS UPPER CASE command indicates that the single
character appearing as its argument can be used in the
source text before any alphabetic letter in the range A
through Z which is to be converted to its upper case
form. Two adjacent upper case shift characters
indicate that the cases of all subsequent alphabetic
letters are to be left unchanged, except for the next
letter immediately following either a back slash or a
single circumflex and except for all letters in the
FORMAT, a FORTRAN FORMAT Statement Generator Page 40
word immediately following a less than sign if within
the range of a .FLAGS CAPITALIZE command. The range of
the retained case shift lock indicated either by the 2
adjacent upper case shift characters or by the
equivalent .UPPER CASE command can be terminated either
by 2 adjacent back slashes or by the equivalent .LOWER
CASE command. The .FLAGS UPPER CASE command does not
imply a .BREAK command.
The upper case shift character specified by the .FLAGS
UPPER CASE command should not currently be active as
some other flag indication, and should not be one of
the alphabetic letters A through Z. Within the range
of the .FLAGS UPPER CASE command, underscores must
precede all appearances of the upper case shift
character which are to be treated like any other
character. If no upper case shift character is
specified by the .FLAGS UPPER CASE command, then the
last character so specified by a previous .FLAGS UPPER
CASE command will be used, or the circumflex will be
used if no character has previously been specified by
any .FLAGS UPPER CASE command.
The upper case shift character specified by the .FLAGS
UPPER CASE command can temporarily be treated as a
nonflag character if a .NO FLAGS UPPER CASE command is
issued, but will again become active when a .FLAGS
UPPER CASE command is issued. The upper case shift
character, like all other flag characters in the source
text, can also temporarily be treated as a nonflag
character if a .NO FLAGS or .NO FLAGS ALL command is
issued, but will again become active when a .FLAGS or
.FLAGS ALL command is issued, providing that a .NO
FLAGS UPPER CASE command has not been issued more
recently than a .FLAGS UPPER CASE command. Letters
which are preceded by the upper case shift character in
a preface line defined by the .PREFACE command or in a
field specification defined by the .INSERT command are
converted to upper case when the preface line or the
field specification is defined, regardless of what the
case shift characters happen to be when the preface
line or the field specification is used.
For example, the source text
.flag capitalize.nofill.output width 55
.upper case
^this \F\O\L\L\O\W\S \a\n .UPPER <case command.
.lower case
^THIS \F\O\L\L\O\W\S a .^L^O^W^E^R <case command.
^^^this \F\O\L\L\O\W\S \t\w\o CIRCUM<flex characters.
\\^THIS \F\O\L\L\O\W\S two ^B^A^C^K <slash characters.
.flag lower case -.flag upper case+.flag capitalize @
+++this -F-O-L-L-O-W-S -t-w-o PLUS @sign characters.
--+THIS -F-O-L-L-O-W-S two +M+I+N+U+S @sign characters.
FORMAT, a FORTRAN FORMAT Statement Generator Page 41
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(37H This follows an .UPPER CASE command./
136H This follows a .LOWER CASE command./6H This ,
234Hfollows two CIRCUMFLEX characters./8H This fo,
332Hllows two BACK SLASH characters./9H This fol,
430Hlows two PLUS SIGN characters./11H This follo,
529Hws two MINUS SIGN characters.)
.FORMAT next statement number, statement number increment
The .FORMAT command indicates that no additional text
is to be represented by the FORMAT statement currently
being constructed and that the text appearing in
subsequent lines in the source file is to be
represented in a new FORMAT statement. The preface
line, if any, indicated by a previous .PREFACE command
will be written into the output before this next FORMAT
statement. All unused output field descriptions
previously specified by .INSERT commands will still be
available. The new FORMAT statement will include blank
lines which have been requested by .SKIP or .BLANK
commands, or which are necessary for multiple line
spacing, but which have not yet been generated. If the
.FORMAT command is issued within the range of a
.PROGRAM command, then the range of the .PROGRAM
command is terminated. The .FORMAT command is
identical to the .BEGIN command, except that a .BEGIN
command would discard the previously specified preface
line, would discard all output field descriptions, and,
unless the .LEADING and .TRAILING commands are in
effect, would discard all blank lines which have not
yet been generated.
If a number follows the .FORMAT command, then this
number is used to modify the statement number of the
next FORMAT statement. If the number is not signed,
then the number will be used directly as the statement
number of the next FORMAT statement. If the number is
signed, then the statement number of the next FORMAT
statement will differ from the statement number of the
previous FORMAT statement by the indicated amount. If
no number follows the .FORMAT command, or if a comma
follows the .FORMAT command but no number appears
between the .FORMAT command and this comma, then the
statement number of the next FORMAT statement will
differ from that of the previous FORMAT statement by
the current value of the statement number increment.
Modifications of the statement number are cumulative
such that if 2 or more .BEGIN and/or .FORMAT and/or
.PROGRAM commands are issued, then the statement number
of the next FORMAT statement will be the result of the
FORMAT, a FORTRAN FORMAT Statement Generator Page 42
application of each of these commands in turn. If the
statement number of the FORMAT statement following a
section of program text indicated by an initial
.PROGRAM command is to be modified, but the program
text includes dollar signs which are to be replaced by
this statement number, then this statement number
should be modified by the .PROGRAM command rather than
by the following .BEGIN or .FORMAT command, since, if
the modification is done by the .BEGIN or .FORMAT
command, then incorrect statement numbers will have
been inserted into the program text. Statement
numbers, if any, inserted into a preface line defined
by a .PREFACE command will, however, always be correct
since the statement number of the next FORMAT statement
is known when the preface line is generated.
If the .FORMAT command is followed either by 2 numbers
or else by a comma and then by a number, then the right
number becomes the statement number increment after the
generation of the next FORMAT statement. The increment
can be either positive or negative. If the number is
unsigned, then the increment is assumed to be positive.
If the .FORMAT command is followed by 2 numbers, then
these numbers do not need to be separated by a comma.
If the .FORMAT command is not followed by any numbers,
or is followed by a single number which is not preceded
by a comma, then the statement number increment is not
changed.
For example, the source text
.preface WRITE(1,$)
.format 10,5 ;This is a message in FORMAT 10
.program ;C FORMAT statement $ follows
.format,20 ;This is a message in FORMAT 15
.format ;This is a message in FORMAT 35
.program 100-10;C FORMAT statement $ follows
.format ;This is a message in FORMAT 100
.format ;This is a message in FORMAT 90
would be transformed into the following FORTRAN text
when processed by this program.
WRITE(1,10)
10 FORMAT(31H This is a message in FORMAT 10)
C FORMAT statement 15 follows
WRITE(1,15)
15 FORMAT(31H This is a message in FORMAT 15)
WRITE(1,35)
35 FORMAT(31H This is a message in FORMAT 35)
C FORMAT statement 100 follows
WRITE(1,100)
100 FORMAT(32H This is a message in FORMAT 100)
WRITE(1,90)
90 FORMAT(31H This is a message in FORMAT 90)
FORMAT, a FORTRAN FORMAT Statement Generator Page 43
.INDENT number of extra spaces to insert beyond left margin
The .INDENT command indicates that the left end of the
next line of text which is represented in the FORMAT
statement is to be indented the indicated number of
spaces from the left margin which is in effect when the
first word in the line is found. The number which
follows the .INDENT command can be either positive
indicating the insertion of extra initial spaces, or
negative indicating the deletion of spaces from the
left margin. If the number is missing, then a positive
indentation of 5 spaces is assumed. The indentation is
applied regardless of whether the next line is copied
in no fill mode or is constructed in fill mode. If the
.INDENT command was preceded by a .CENTER command, then
the .CENTER command is ignored. The .INDENT command
implies a .BREAK command before the following line of
source text.
For example, the source text
.offset 0.left margin 0.right margin 55.output width 55
.indent 5.preface WRITE(1,$)
The flag characters which are listed below are
deactivated by the .NO FLAGS command.
.left margin 5
.indent -3
_$##(dollar sign) or whatever character has been
selected by a .FLAGS INSERT command.
.indent -3
_###(number sign) or whatever character has been
selected by a .FLAGS SPACE command.
.PROGRAM; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(5X,35HThe flag characters which are lis,
115Hted below are/26Hdeactivated by the .NO FLA,
211HGS command./30H $ (dollar sign) or whate,
325Hver character has been/5X,13Hselected by a,
423H .FLAGS INSERT command./18H # (number sign,
537H) or whatever character has been/5X,2Hse,
633Hlected by a .FLAGS SPACE command.)
END
which would, in turn, generate the following text when
run.
FORMAT, a FORTRAN FORMAT Statement Generator Page 44
The flag characters which are listed below are
deactivated by the .NO FLAGS command.
$ (dollar sign) or whatever character has been
selected by a .FLAGS INSERT command.
# (number sign) or whatever character has been
selected by a .FLAGS SPACE command.
.INPUT WIDTH maximum number of characters in any input line
The .INPUT WIDTH command specifies the maximum number
of characters which are to be read from in each line in
the input file. If an input line contains more than
the specified number of characters, then the characters
which appear to the right of the specified number of
characters are ignored. The input line width specified
by the .INPUT WIDTH command applies to all following
lines, but not to the line in which it is specified.
The .INPUT WIDTH command does not imply a .BREAK
command.
If the number which follows the .INPUT WIDTH command is
unsigned, then this number will be used as the line
width for the following input lines. If the number
which follows the .INPUT WIDTH command is signed, then
the previous input line width is adjusted by the
indicated amount. The input line width is 132 when
this program is started. The input line width cannot
exceed 300 characters.
For example, the source text
.input width 5.begin 10
12345This is not read
.iw+5This is not read
1234567890This is not read
would be transformed into the following FORTRAN text
when processed by this program.
10 FORMAT(17H 12345 1234567890)
.INSERT output field specification to replace next $ signs
The .INSERT command specifies the group of characters
which is to replace the next group of contiguous dollar
signs which are not preceded by underscores in the text
being represented in the FORMAT statements. The
character to the immediate right of the .INSERT command
must be a space. The group of characters which is to
be inserted starts with the second character to the
right of the .INSERT command, whether or not this is a
printing character, and extends through the rightmost
printing character on the line. If an .INSERT command
FORMAT, a FORTRAN FORMAT Statement Generator Page 45
has not been issued, or if no printing character
appears to the right of the .INSERT command, then the
next group of contiguous dollar signs is removed, but
the group of characters to be inserted is of zero
length so no characters are inserted in place of the
group of dollar signs. If 2 or more .INSERT commands
have specified groups of characters which have not yet
been used to replace groups of contiguous dollar signs,
then these groups of characters are applied in the
order in which they were defined. Unless the lengths
of 3 arrays in this program are increased, no more than
50 groups of characters having an aggregate length of
no more than 500 characters can have been specified but
remain unused at any time. All unused groups of
characters are discarded if either a .NO INSERT command
or a .BEGIN command is encountered. Neither the
.INSERT command nor the .NO INSERT command implies a
.BREAK command.
The text on either side of the group of contiguous
dollar signs being replaced is represented in H or
apostrophe notation, whichever has been selected by the
.USE command. The characters which are being inserted
will be interpreted as an output field specification
when the FORMAT statements are used. If in fill mode,
the number of dollar signs in the group being replaced
is used in determining the length of the line being
accumulated, so the number of dollar signs in the group
being replaced should equal the number of characters
which will be generated by the output field
specification when the FORMAT statements are used. For
example, 9 dollar signs would be used to mark the
location in the text at which a 9 character date
representation such as 12-Jan-80 is to be generated
using a 1I2,1H-,1A3,1H-,1I2 output field specification.
Commas are inserted on either side of the original
location of the group of dollar signs so the .INSERT
command should not specify commas at the start and at
the end of the text being inserted. The text being
inserted can be split onto the next continuation line
of the FORMAT statement following any comma in the text
being inserted.
Within the text being inserted, an underscore
character, which will not be copied into the FORMAT
statement, can appear before any character, such as a
comma, space, number sign, circumflex, back slash, less
than sign (if in flag capitalize mode) or another
underscore, which is to be treated as a nonflag
character. If a comma in the text being inserted is
not at a location at which the text being inserted can
be split onto the next continuation line of the FORMAT
statement, then the comma should be preceded by an
underscore. If the text being inserted is to end with
a space, then this space should be preceded by an
FORMAT, a FORTRAN FORMAT Statement Generator Page 46
underscore. The .INSERT command cannot be followed on
the same line either by a comment or by another
command, so semicolons and exclamation points in the
text to be inserted do not need to be preceded by
underscores.
For example, the source text
.program 10
DATA KOUNT,IDAY,IYEAR/12345,12,80/
DATA IMONTH/3HJan/
WRITE(1,$)KOUNT,IDAY,IMONTH,IYEAR
.insert 1I5
.insert 1I2,1H-,1A3,1H-,1I2
.format.output width 55
$$$$$ items were produced on $$$$$$$$$.
.program
END
would, when processed by this program, be transformed
into the following proof file
.program 10
DATA KOUNT,IDAY,IYEAR/12345,12,80/
DATA IMONTH/3HJan/
WRITE(1,10)KOUNT,IDAY,IMONTH,IYEAR
.insert 1I5
.insert 1I2,1H-,1A3,1H-,1I2
.format
.output width 55
10 FORMAT(
1I5
1I2,1H-,1A3,1H-,1I2
$$$$$ items were produced on $$$$$$$$$.
.program
END
and would also be transformed into the following
FORTRAN text
DATA KOUNT,IDAY,IYEAR/12345,12,80/
DATA IMONTH/3HJan/
WRITE(1,10)KOUNT,IDAY,IMONTH,IYEAR
10 FORMAT(1H ,1I5,24H items were produced on ,1I2,
11H-,1A3,1H-,1I2,1H.)
END
which would, in turn, generate the following text when
run.
12345 items were produced on 12-Jan-80.
FORMAT, a FORTRAN FORMAT Statement Generator Page 47
.JUSTIFY
The .JUSTIFY command indicates that the lines of text
which are constructed in fill mode are to be extended
to the right margin by the addition of extra spaces
between the words. The extra spaces are added between
the words starting at the right end in the first, third
and every other line following a .BREAK command or
following any command which implies a .BREAK command,
and are added starting at the left in the alternate
lines. Extra spaces are, however, never inserted in
the final line before a .BREAK command or before any
command which implies a .BREAK command. The .JUSTIFY
command implies a .BREAK command
A .JUSTIFY command is assumed to be in effect when this
program is started. A .NO JUSTIFY command should be
issued instead if lines which are constructed in fill
mode are not required to have exactly the same lengths,
but the lines are still to be filled with the most
words which do not extend beyond the right margin. If
a .NO JUSTIFY command is in effect, then words are
separated by single spaces and sentences by two spaces.
A .JUSTIFY or a .NO JUSTIFY command issued within the
range of a .PROGRAM command applies to the lines of
text constructed in fill mode following the next .BEGIN
or .FORMAT command. A .JUSTIFY or a .NO JUSTIFY
command issued within the range of a .NO FILL command
applies to the lines of text constructed following the
next .FILL command.
For example, the source text
.output width 55.right margin 55.offset 0
.no justify.preface WRITE(1,$)
The .JUSTIFY and the .NO JUSTIFY commands do not
apply to text which is within the range of .NO FILL
commands and does not apply to the text which is
within the range of the .PROGRAM command.
.justify.skip
The .JUSTIFY and the .NO JUSTIFY commands do not
apply to text which is within the range of .NO FILL
commands and does not apply to the text which is
within the range of the .PROGRAM command.
.nofill.skip
The .JUSTIFY and the .NO JUSTIFY commands do not
apply to text which is within the range of .NO FILL
commands and does not apply to the text which is
within the range of the .PROGRAM command.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
FORMAT, a FORTRAN FORMAT Statement Generator Page 48
WRITE(1,1)
1 FORMAT(38HThe .JUSTIFY and the .NO JUSTIFY comma,
116Hnds do not apply/25Hto text which is within t,
229Hhe range of .NO FILL commands/12Hand does not,
338H apply to the text which is within the/4Hrang,
426He of the .PROGRAM command.//14HThe .JUSTIFY a,
541Hnd the .NO JUSTIFY commands do not apply/1Ht,
645Ho text which is within the range of .NO FILL,
79H commands/33Hand does not apply to the text ,
822Hwhich is within the/19Hrange of the .PROGR,
911HAM command.//29HThe .JUSTIFY and the .NO JUST,
119HIFY commands do not/22Happly to text which is,
229H within the range of .NO FILL/12Hcommands an,
337Hd does not apply to the text which is/5Hwithi,
436Hn the range of the .PROGRAM command.)
END
which would, in turn, generate the following text when
run.
The .JUSTIFY and the .NO JUSTIFY commands do not apply
to text which is within the range of .NO FILL commands
and does not apply to the text which is within the
range of the .PROGRAM command.
The .JUSTIFY and the .NO JUSTIFY commands do not apply
to text which is within the range of .NO FILL commands
and does not apply to the text which is within the
range of the .PROGRAM command.
The .JUSTIFY and the .NO JUSTIFY commands do not
apply to text which is within the range of .NO FILL
commands and does not apply to the text which is
within the range of the .PROGRAM command.
.LEADING
The .LEADING command indicates that blank lines which
are requested prior to the specification of any text
which is to appear in the FORMAT statements, either
when this program is first started or following a
.BEGIN command, are to be represented in the next
FORMAT statement if an .EJECT command is issued or if
some text which is to be represented in the FORMAT
statement is actually specified. Such leading blank
lines can be requested by .BLANK, .SKIP or .PARAGRAPH
commands. Leading blank lines are discarded if a .NO
LEADING command is in effect or if a .LEADING command
has not been issued. Neither the .LEADING command nor
the .NO LEADING command implies a .BREAK command.
For example, the source text
FORMAT, a FORTRAN FORMAT Statement Generator Page 49
.spacing 2.output width 55.skip
The quick red fox jumps over the lazy brown dog, then
runs into the forest
.begin.leading.skip
The quick red fox jumps over the lazy brown dog, then
runs into the forest
.begin.trailing.skip
The quick red fox jumps over the lazy brown dog, then
runs into the forest
.begin.no leading.skip
The quick red fox jumps over the lazy brown dog, then
runs into the forest
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(38H The quick red fox jumps over the lazy,
123H brown dog, then runs//16H into the forest)
2 FORMAT(//36H The quick red fox jumps over the la,
125Hzy brown dog, then runs//15H into the fores,
21Ht)
3 FORMAT(//36H The quick red fox jumps over the la,
125Hzy brown dog, then runs//15H into the fores,
21Ht/)
4 FORMAT(38H The quick red fox jumps over the lazy,
123H brown dog, then runs//16H into the forest/)
.LEFT MARGIN number of spaces to left of text
The .LEFT MARGIN command specifies the number of spaces
which are to be inserted to the left of each of the
lines of text which are being represented in the FORMAT
statements in either fill or no fill modes. The left
margin specified by the .LEFT MARGIN command is in
addition to the leftmost spaces specified by the
.OFFSET command or in addition to the single left space
which is obtained if neither the .OFFSET command nor
the .NO OFFSET command has been issued. An .INDENT or
.PARAGRAPH command can be issued prior to a particular
paragraph to temporarily change the left margin for the
leading line in that paragraph. If the number which
follows the .LEFT MARGIN command is unsigned, then this
number will be used as the left margin. If the number
which follows the .LEFT MARGIN command is signed, then
the previous left margin is adjusted by the indicated
amount. If no number follows the .LEFT MARGIN command
then the left margin is reset to zero. The .LEFT
MARGIN command implies a .BREAK command.
If the lines of text are being constructed in fill
mode, then the left margin specified by the .LEFT
MARGIN command should be to the left of the right
margin specified by the .RIGHT MARGIN command or to the
left of column 60 if a .RIGHT MARGIN command has not
FORMAT, a FORTRAN FORMAT Statement Generator Page 50
been issued. The right margin is ignored if the lines
of text are being copied in no fill mode. The only
spaces which are inserted are those which are specified
by the .OFFSET command if a signed number following the
.LEFT MARGIN command causes the left margin to be
negative.
For example, the source text
.preface WRITE(1,$)
.output width 55;Default left margin and default offset
.left margin 10 ;Left margin 10 obtained as .lm 10
.left margin -5 ;Left margin 5 obtained as .lm-5
.left margin -5 ;Left margin 0 obtained as .lm-5
.left margin -5 ;Left margin -5 which is treated as 0
.left margin +5 ;Left margin 0 obtained as .lm+5
.left margin +5 ;Left margin 5 obtained as .lm+5
.offset 6 ;Unchanged left margin and offset 6
.left margin 10 ;Left margin 10 obtained as .lm 10
.left margin -5 ;Left margin 5 obtained as .lm-5
.left margin -5 ;Left margin 0 obtained as .lm-5
.left margin -5 ;Left margin -5 which is treated as 0
.left margin +5 ;Left margin 0 obtained as .lm+5
.left margin +5 ;Left margin 5 obtained as .lm+5
.program ; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H Default left margin and default offse,
11Ht/11X,33HLeft margin 10 obtained as .lm 10/6X,
231HLeft margin 5 obtained as .lm-5/10H Left marg,
322Hin 0 obtained as .lm-5/19H Left margin -5 whi,
418Hch is treated as 0/23H Left margin 0 obtained,
59H as .lm+5/6X,30HLeft margin 5 obtained as .lm+,
61H5/11X,34HUnchanged left margin and offset 6/9X,
77X,33HLeft margin 10 obtained as .lm 10/11X,2HLe,
829Hft margin 5 obtained as .lm-5/6X,9HLeft marg,
922Hin 0 obtained as .lm-5/6X,16HLeft margin -5 w,
120Hhich is treated as 0/6X,18HLeft margin 0 obta,
213Hined as .lm+5/11X,24HLeft margin 5 obtained a,
37Hs .lm+5)
END
which would, in turn, generate the following text when
run.
FORMAT, a FORTRAN FORMAT Statement Generator Page 51
Default left margin and default offset
Left margin 10 obtained as .lm 10
Left margin 5 obtained as .lm-5
Left margin 0 obtained as .lm-5
Left margin -5 which is treated as 0
Left margin 0 obtained as .lm+5
Left margin 5 obtained as .lm+5
Unchanged left margin and offset 6
Left margin 10 obtained as .lm 10
Left margin 5 obtained as .lm-5
Left margin 0 obtained as .lm-5
Left margin -5 which is treated as 0
Left margin 0 obtained as .lm+5
Left margin 5 obtained as .lm+5
.LENGTH maximum number of lines in each FORMAT statement
The .LENGTH command specifies the maximum number of
FORTRAN language lines from which each FORMAT statement
can be constructed. The number of lines set by the
.LENGTH command should not be greater than the maximum
number of lines accepted by the compiler which will be
used to process the resulting FORMAT statements.
.LENGTH 20 is the default, but this program does not
impose any upper limit upon this maximum. The
combination of the .LENGTH command and the .OUTPUT
WIDTH command set the maximum number of characters in a
single FORMAT statement, but do not otherwise restrict
the maximum number of lines of text which can be
represented in each FORMAT statement. The .LENGTH
command, like most other commands which merely describe
the manner in which the text is represented in the
FORMAT statements, does not imply a .BREAK command.
For example, the source text
.offset 0.output width 55.length 3
.preface WRITE(1,$)
The FORMAT command indicates that no additional text
is to be represented by the FORMAT statement currently
being constructed and that the text appearing in
subsequent lines in the source file is to be
.length 10
represented in a new FORMAT statement. The preface
line, if any, indicated by a previous PREFACE command
will be written into the output before this next FORMAT
.length 3
statement. All unused output field descriptions
previously specified by INSERT commands will still be
available.
FORMAT, a FORTRAN FORMAT Statement Generator Page 52
would be transformed into the following FORTRAN text
when processed by this program.
WRITE(1,1)
1 FORMAT(38HThe FORMAT command indicates that no a,
122Hdditional text is to/19Hbe represented by,
241H the FORMAT statement currently being)
WRITE(1,2)
2 FORMAT(38Hconstructed and that the text appearin,
122Hg in subsequent lines/19Hin the source fi,
241Hle is to be represented in a new FORMAT/1Hs,
345Htatement. The preface line, if any, in,
414Hdicated by a/27Hprevious PREFACE command ,
533H will be written into the output)
WRITE(1,3)
3 FORMAT(38Hbefore this next FORMAT statement. Al,
122Hl unused output field/19Hdescriptions previ,
241Hously specified by INSERT commands will)
WRITE(1,4)
4 FORMAT(19Hstill be available.)
.LOWER CASE
The .LOWER CASE command indicates that all upper case
alphabetic letters which are not specially marked are
to be converted to their lower case forms in the source
text which follows the end of the command or, if the
.LOWER CASE command is followed by a comment, in the
source text which follows the comment. The lower case
conversion selected by the .LOWER CASE command is not
applied to any letter which is immediately preceded by
an underscore indicating that its case is to be
retained, is not applied to any letter which is
immediately preceded by a circumflex indicating that it
is to be converted to upper case, and is not applied to
letters which are both within the range of a .FLAGS
CAPITALIZE command and within a word which is preceded
by a less than sign indicating that these letters are
to be converted to upper case. The .LOWER CASE command
is equivalent to the appearance of 2 consecutive back
slashes except that the 2 back slashes can appear
anywhere and that the lower case conversion indicated
by the 2 back slashes is applied immediately to all of
the following text. The cases of alphabetic letters
are retained unless the .LOWER CASE command has been
issued or unless 2 consecutive back slashes have been
found. The retention of cases can also be reselected
either by the .UPPER CASE command or by the appearance
of 2 consecutive circumflexes. Neither the .LOWER CASE
command nor the .UPPER CASE command implies a .BREAK
command.
For example, the source text
FORMAT, a FORTRAN FORMAT Statement Generator Page 53
.nofill.output width 55.preface WRITE(1,$)
.noflags.flags capitalize;noflags
UPPER lower U^P\P_ER l^o\w_er
U<PPER l<ower U<PPE<R l<owe<r <U^P\P_ER <l^o\w_er
.lower case.flags;lower case
UPPER lower U^P\P_ER l^o\w_er
U<PPER l<ower U<PPE<R l<owe<r <U^P\P_ER <l^o\w_er
.upper case;upper case
UPPER lower U^P\P_ER l^o\w_er
U<PPER l<ower U<PPE<R l<owe<r <U^P\P_ER <l^o\w_er
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(8H noflags/3X,24HUPPER lower U^P\P_ER l^o,
15H\w_er/3X,34HU<PPER l<ower U<PPE<R l<owe<r <U^P,
215H\P_ER <l^o\w_er/11H lower case/3X,9Hupper low,
314Her uPpEr lOwer/3X,24HuPPER lOWER uPPEr lOWEr ,
411HUPpER LOweR/11H upper case/3X,12HUPPER lower ,
511HUPpER lOwer/3X,27HUPPER lOWER UPPER lOWEr UPp,
68HER LOweR)
END
which would, in turn, generate the following text when
run.
noflags
UPPER lower U^P\P_ER l^o\w_er
U<PPER l<ower U<PPE<R l<owe<r <U^P\P_ER <l^o\w_er
lower case
upper lower uPpEr lOwer
uPPER lOWER uPPEr lOWEr UPpER LOweR
upper case
UPPER lower UPpER lOwer
UPPER lOWER UPPER lOWEr UPpER LOweR
.MASK text to be superimposed onto each output line
The printing characters which follow the .MASK command
on the same line replace the nonquoted spaces to the
right of the initial offset in each line of text which
is copied in no fill mode or which is constructed in
fill mode. All printing characters, all spaces which
were preceded by underscores or which were represented
by number signs, and all initial spaces requested by an
.OFFSET command or by the default .OFFSET 1, are left
unchanged in each line of text which is represented in
the FORMAT statements. The character to the immediate
right of the .MASK command must be a space. The group
of characters which is to be superimposed onto each
output line starts with the second character to the
right of the .MASK command, whether or not this is a
FORMAT, a FORTRAN FORMAT Statement Generator Page 54
printing character, and extends through the rightmost
printing character on the line. No characters are
superimposed onto the output lines if the .MASK command
is issued without any following characters, or if no
.MASK command has yet been issued, or if a .NO MASK
command has been issued more recently than a .MASK
command. A .MASK command issued within the range of a
.PROGRAM command applies to the source text following
the next .BEGIN or .FORMAT command. Neither the .MASK
command nor the .NO MASK command implies a .BREAK
command. A .BREAK or .EJECT command should be issued
before the .MASK or .NO MASK command unless it is
really desired to change the template line which is to
be applied to the line which is currently being
accumulated in fill mode or to the blank lines which
have not yet been written out to the FORMAT statements.
Within the text specified by the .MASK command, an
underscore character, which will not be copied into the
FORMAT statement, can appear before any character, such
as a number sign, circumflex, back slash, less than
sign (if in flag capitalize mode) or another
underscore, which is to be treated as a nonflag
character. The .MASK command cannot be followed on the
same line either by a comment or by another command, so
semicolons and exclamation points in the text to be
superimposed do not need to be preceded by underscores.
For example, the source text
.left margin 2.right margin 13.preface WRITE(1,$)
.carriage 1.offset 5.copy 17,2.mask * *
.indent -1.output width 55;=============
.insert 3Hhow
.insert 5H.MASK
.insert 3Hand
.insert 5H.COPY
.skip;This shows $$$ $$$$$ $$$ $$$$$ commands work.
.skip.indent -1;=============
.break.no mask.no copy.skip;Not in range of either.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
FORMAT, a FORTRAN FORMAT Statement Generator Page 55
WRITE(1,1)
1 FORMAT(38H1 *=============* *=============* ,
116H *=============*/5X,1H*,13X,4H* *,13X,4H* *,
213X,1H*/5X,34H* This shows * * This shows * ,
315H* This shows */5X,2H* ,3Hhow,3X,5H.MASK,2H *,
44H * ,3Hhow,3X,5H.MASK,6H * * ,3Hhow,3X,
55H.MASK,2H */5X,2H* ,3Hand,3X,5H.COPY,6H * * ,
63Hand,3X,5H.COPY,6H * * ,3Hand,3X,5H.COPY,2H */
75X,42H* commands * * commands * * comman,
87Hds */5X,7H* work.,7X,10H* * work.,7X,3H* ,
97H* work.,7X,1H*/5X,1H*,13X,4H* *,13X,4H* *,9X,
14X,1H*/5X,35H*=============* *=============* *,
214H=============*//7X,3HNot,6X,2Hin/7X,7Hrange ,
34H of/7X,7Heither.)
END
which would, in turn, generate the following text when
run.
1 *=============* *=============* *=============*
* * * * * *
* This shows * * This shows * * This shows *
* how .MASK * * how .MASK * * how .MASK *
* and .COPY * * and .COPY * * and .COPY *
* commands * * commands * * commands *
* work. * * work. * * work. *
* * * * * *
*=============* *=============* *=============*
Not in
range of
either.
.NO CARRIAGE
The first character in each line of text which is
generated when the resulting FORMAT statements are used
can be interpreted by the FORTRAN operating system to
select the carriage motion on the output device to
which the text is written. The .NO CARRIAGE command
indicates that the leftmost character in the line of
text which is currently being constructed for
representation in the FORMAT statements, and in each of
the subsequent lines of text, will be a space if a
positive offset has been selected by the combination of
.OFFSET, .LEFT MARGIN and .INDENT or .PARAGRAPH
commands, and completely blank lines will be
represented in the FORMAT statements by consecutive
slashes. The .NO CARRIAGE command terminates the
insertion of the carriage control character, if any,
selected by the previous .CARRIAGE command. No
carriage control character is in effect when this
program is first started. Neither the .NO CARRIAGE
command nor the .CARRIAGE command implies a .BREAK
FORMAT, a FORTRAN FORMAT Statement Generator Page 56
command. A .BREAK command, or some other command which
implies a .BREAK command, should usually be issued
before the .NO CARRIAGE command since, if the lines of
text are being constructed in fill mode, the carriage
control character is applied to the current line of
text only after this line of text has otherwise been
completed.
For example, the source text
.carriage 1,*.right margin 54.output width 55
.preface WRITE(1,$)
The .NO CARRIAGE command terminates the generation of
the carriage control character specified by the
previous .CARRIAGE command.
.break.no carriage
The .NO CARRIAGE command terminates the generation of
the carriage control character specified by the
previous .CARRIAGE command.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H1The .NO CARRIAGE command terminates t,
117Hhe generation of/24H*the carriage control,
231H character specified by the/10H*previous ,
318H.CARRIAGE command./23H The .NO CARRIAGE comma,
432Hnd terminates the generation of/9H the ca,
545Hrriage control character specified by th,
61He/28H previous .CARRIAGE command.)
END
which would, in turn, generate the following text when
run.
1The .NO CARRIAGE command terminates the generation of
*the carriage control character specified by the
*previous .CARRIAGE command.
The .NO CARRIAGE command terminates the generation of
the carriage control character specified by the
previous .CARRIAGE command.
.NO COPY
The .NO COPY command indicates that the text specified
by the source file is to be represented only once in
the resulting FORMAT statements instead of being
duplicated to form 2 or more parallel columns
containing the same text. A .NO COPY command issued
within the range of a .COPY command terminates the
production of the parallel columns selected by the
.COPY command. A .NO COPY command issued within the
FORMAT, a FORTRAN FORMAT Statement Generator Page 57
range of a .PROGRAM command applies to the source text
following the next .BEGIN or .FORMAT command. Both the
.COPY command and the .NO COPY command imply a .BREAK
command.
For example, the source text
.right margin 20.copy 25,1.carriage 1,*.offset 3
.output width 55.preface WRITE(1,$)
The .NO COPY command terminates the range of the
previous .COPY command.
.no copy
Both the .COPY command and the .NO COPY command imply
a .BREAK command
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H1 The .NO COPY command The .NO CO,
110HPY command/31H* terminates the range ter,
217Hminates the range/24H* of the previous ,
34X,20Hof the previous/17H* .COPY command.,
411X,14H.COPY command./23H* Both the .COPY/
523H* command and the .NO/18H* COPY command im,
65Hply a/17H* .BREAK command)
END
which would, in turn, generate the following text when
run.
1 The .NO COPY command The .NO COPY command
* terminates the range terminates the range
* of the previous of the previous
* .COPY command. .COPY command.
* Both the .COPY
* command and the .NO
* COPY command imply a
* .BREAK command
.NO FILL
The .NO FILL command indicates that each line of source
text which is not within the range of a .PROGRAM
command and which does not begin with a period is to be
shifted to the right by the number of spaces which has
been selected by the combination of .OFFSET, .LEFT
MARGIN and .INDENT or .PARAGRAPH commands, and is then
to be represented in the FORMAT statements with the
same number of words per line and with the same number
of spaces, in addition to those inserted at the left,
as in the source text. The right margin is ignored.
The .NO FILL command terminates the range of the
FORMAT, a FORTRAN FORMAT Statement Generator Page 58
previous .FILL command which would have caused each
line of text to be filled with as many words as will
fit on the line when separated by at least single
spaces. A .FILL command is assumed to be in effect
when this program is started. A .NO FILL command
issued within the range of a .PROGRAM command applies
to the source text following the next .BEGIN or .FORMAT
statement. A .JUSTIFY, .NO JUSTIFY or .RIGHT MARGIN
command issued within the range of a .NO FILL command
applies to the source text following the next .FILL
command. Both the .NO FILL command and the .FILL
command imply a .BREAK command.
For example, the source text
.output width 55.right margin 55.offset 0
.nofill.preface WRITE(1,$)
The .NO FILL command is not equivalent
to the combination of a .FILL command
and a .NO JUSTIFY command.
.fill
The .NO FILL command is not equivalent
to the combination of a .FILL command
and a .NO JUSTIFY command.
.no justify
The .NO FILL command is not equivalent
to the combination of a .FILL command
and a .NO JUSTIFY command.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(14H The .NO FILL,8X,10Hcommand is,7X,1Hn,
115Hot equivalent/24H to the combination of,
26X,1Ha,8X,13H.FILL command/13H and a .NO,9X,
316HJUSTIFY command./25HThe .NO FILL command ,
430His not equivalent to the/11Hcombination,
544H of a .FILL command and a .NO JUSTIFY/
68Hcommand./34HThe .NO FILL command is not equiva,
711Hlent to the/30Hcombination of a .FILL command,
818H and a .NO JUSTIFY/8Hcommand.)
END
which would, in turn, generate the following text when
run.
FORMAT, a FORTRAN FORMAT Statement Generator Page 59
The .NO FILL command is not equivalent
to the combination of a .FILL command
and a .NO JUSTIFY command.
The .NO FILL command is not equivalent to the
combination of a .FILL command and a .NO JUSTIFY
command.
The .NO FILL command is not equivalent to the
combination of a .FILL command and a .NO JUSTIFY
command.
command.
The .NO FILL command is not equivalent to the
combination of a .FILL command and a .NO JUSTIFY
command.
.NO FLAGS
or
.NO FLAGS ALL
The .NO FLAGS ALL command indicates that the flag
characters which are listed below are to be inactive in
the source test. Every appearance of these flag
characters is to be left unchanged and is to be treated
like the appearance of any other nonflag printing
character.
$ (dollar sign) or whatever character has been most
recently selected by a .FLAGS INSERT command.
\ (back slash) or whatever character has been most
recently selected by a .FLAGS LOWER CASE command.
_ (underscore) or whatever character has been most
recently selected by a .FLAGS QUOTE command.
# (number sign) or whatever character has been most
recently selected by a .FLAGS SPACE command.
^ (circumflex) or whatever character has been most
recently selected by a .FLAGS UPPER CASE command.
< (less than sign) or whatever character has been
most recently selected by a .FLAGS CAPITALIZE
command. This flag character is initially
inactive and will remain inactive unless a .FLAGS
CAPITALIZE command is issued.
All flag characters which were initially active, or
which have been individually activated by the
corresponding .FLAGS commands, and which have not been
individually deactivated by the corresponding .NO FLAGS
commands, will be reactivated if a subsequent .FLAGS
ALL command is issued. The .FLAGS ALL command and the
.NO FLAGS ALL command do not change the interpretation
of the flag characters which identify and terminate
commands. The flag characters which are to be
interpreted and acted upon in a preface line defined by
the .PREFACE command or in a field specification
defined by the .INSERT command must be those which are
active when the preface line or the field specification
FORMAT, a FORTRAN FORMAT Statement Generator Page 60
is defined, regardless of what flag characters happen
to be active when the preface line or the field
specification is used. Neither the .FLAGS ALL command
nor the .NO FLAGS ALL command implies a .BREAK command.
.NO FLAGS CAPITALIZE
Every appearance of the less than sign, or of whatever
character has been most recently selected by a .FLAGS
CAPITALIZE command, is to be left unchanged and is to
be treated like the appearance of any other character.
No flag character is to be available to mark words in
which every letter is to be capitalized. The
capitalization flag character can be reactivated by a
subsequent .FLAGS CAPITALIZE command. No
capitalization flag character is active when this
program is started.
.NO FLAGS CONTROL
The source text contains no additional commands. Lines
which start with periods, or with whatever character
has been most recently selected by a .FLAGS CONTROL
command, are not to be interpreted as commands. This
command probably should not be issued.
.NO FLAGS FENCE
Every appearance in a command line of the semicolon, or
of whatever character has been most recently selected
by a .FLAGS FENCE command, is to be treated as a part
of the argument list or comment in which it appears.
No flag character is available which, when used in a
command line, causes the the text to the right of the
flag character to be treated as though this text were
on the following line. The separation flag character
can be reactivated by a subsequent .FLAGS FENCE
command.
.NO FLAGS INSERT
Every appearance of the dollar sign, or of whatever
character has been most recently selected by a .FLAGS
INSERT command, is to be left unchanged and is to be
treated like the appearance of any other character. No
flag character is available to mark locations in
preface lines and in program text at which the
statement numbers of the next FORMAT statements are to
be inserted. No flag character is available to mark
locations in the text being represented in the FORMAT
statements at which the field specifications defined by
FORMAT, a FORTRAN FORMAT Statement Generator Page 61
the .INSERT command are to be inserted. The insertion
flag character can be reactivated by a subsequent
.FLAGS INSERT command.
.NO FLAGS LOWER CASE
Every appearance of the back slash, or of whatever
character has been most recently selected by a .FLAGS
LOWER CASE command, is to be left unchanged and is to
be treated like the appearance of any other character.
No flag character is available to mark individual
alphabetic letters which are to be converted to their
lower case forms. The lower case shift character can
be reactivated by a subsequent .FLAGS LOWER CASE
command.
.NO FLAGS QUOTE
Every appearance of the underscore, or of whatever
character has been most recently selected by a .FLAGS
QUOTE command, is to be left unchanged and is to be
treated like the appearance of any other character. No
flag character is available which can precede other
characters which are to be treated as nonflag printing
characters. The quotation flag character can be
reactivated by a subsequent .FLAGS QUOTE command.
.NO FLAGS REMARK
Every appearance in a command line of the exclamation
point, or of whatever character has been most recently
selected by a .FLAGS REMARK command, is to be treated
as a part of the argument list in which it appears. No
flag character is available which can be used in
command lines to indicate that the following text,
through the end of the line or through the next
appearance of a semicolon on the same line, is to be
treated as a comment and is to be ignored. The remark
flag character can be reactivated by a subsequent
.FLAGS REMARK command.
.NO FLAGS SPACE
Every appearance of the number sign, or of whatever
character has been most recently selected by a .FLAGS
SPACE command, is to be left unchanged and is to be
treated like the appearance of any other character. No
flag character is available which can be used to
indicate the location of a space which is to be treated
as though it were a printing character. However, a
space preceded by an underscore can still be used for
FORMAT, a FORTRAN FORMAT Statement Generator Page 62
this purpose. The space holding character can be
reactivated by a subsequent .FLAGS SPACE command.
.NO FLAGS UPPER CASE
Every appearance of the circumflex, or of whatever
character has been most recently selected by a .FLAGS
UPPER case command, is to be left unchanged and is to
be treated like the appearance of any other character.
No flag character is available to mark individual
alphabetic letters which are to be converted to their
upper case forms. The upper case shift character can
be reactivated by a subsequent .FLAGS UPPER CASE
command.
.NO INSERT
The .NO INSERT command indicates that all groups of
characters which have been specified by the .INSERT
command since this program was started, or since the
last .NO INSERT or .BEGIN command was issued, and which
have not yet been used, are to be discarded. If a
group of contiguous dollar signs is encountered in the
text which is being represented in the FORMAT
statements before a subsequent .INSERT command is
issued, then the group of dollar signs will be removed
but nothing will be inserted into its place. The .NO
INSERT command is usually not necessary since the
groups of characters which are defined by the .INSERT
command are always discarded after use anyway.
Neither the .NO INSERT command nor the .INSERT command
implies a .BREAK command. Insertions into lines of
text which are being constructed in fill mode are made
after the line has otherwise been completed, either
when a command which implies a .BREAK command is
encountered or when the first word which would overflow
the line is encountered. If the .NO INSERT command is
issued before the line has been completed, then any
groups of characters which would otherwise have been
available for insertion into the line will be discarded
instead.
For example, the source text
.output width 55
.insert 7Hcommand
.insert 6Hgroups
.insert 3Hthe
The .NO INSERT $$$$$$$ discards $$$$$$ of characters
which were defined by $$$ .INSERT command, but which
.no insert
remain unused.
FORMAT, a FORTRAN FORMAT Statement Generator Page 63
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(16H The .NO INSERT ,7Hcommand,9H discards,
11H ,6Hgroups,22H of characters which/7H were ,
213Hdefined by ,28H .INSERT command, but wh,
310Hich remain/8H unused.)
In the FORMAT statement shown above, merely a comma
appears where the word 3Hthe would have been inserted
if the .NO INSERT command had not been issued.
.NO JUSTIFY
The .NO JUSTIFY command indicates that lines of text
which are constructed in fill mode are to have only one
space between a pair of words and two spaces between
any of the punctuation marks colon, semicolon,
exclamation point, question mark and period and the
following word. If merely a single space is required
between one of these punctuation marks and the
following word, then the punctuation mark must be
preceded by an underscore. The lines of text are not
extended to the right margin by the addition of extra
spaces between the words. The .NO JUSTIFY command
terminates the range of the previous .JUSTIFY command.
A .JUSTIFY command, which causes the lines of text
which are constructed in fill mode to be extended to
the right margin, is assumed to be in effect when this
program is started. A .NO JUSTIFY or a .JUSTIFY
command issued within the range of a .PROGRAM command
applies to the text following the next .BEGIN or
.FORMAT command. A .NO JUSTIFY or a .JUSTIFY command
issued within the range of a .NO FILL command applies
to the lines of text constructed following the next
.FILL command. Both the .NO JUSTIFY command and the
.JUSTIFY command imply a .BREAK command.
For example, the source text
.no justify.output width 55.right margin 55
.offset 0.preface WRITE(1,$)
Lines of text which are constructed
in fill mode, but without justification,
have the words wrapped around until
the next word would extend beyond
the right margin, but the lines
are not of uniform length.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
FORMAT, a FORTRAN FORMAT Statement Generator Page 64
WRITE(1,1)
1 FORMAT(38HLines of text which are constructed in,
115H fill mode, but/26Hwithout justification, hav,
226He the words wrapped around/15Huntil the next ,
334Hword would extend beyond the right/8Hmargin, ,
440Hbut the lines are not of uniform length.)
END
which would, in turn, generate the following text when
run.
Lines of text which are constructed in fill mode, but
without justification, have the words wrapped around
until the next word would extend beyond the right
margin, but the lines are not of uniform length.
.NO LEADING
The .NO LEADING command indicates that blank lines
requested by .BLANK, .SKIP or .PARAGRAPH commands are
to be discarded if no other text has been represented
in the FORMAT statements since this program was started
or since a .BEGIN command was issued. A .NO LEADING
command is assumed to be in effect when this program is
started. Initial blank lines are represented only if a
.LEADING command is issued before the blank lines are
requested. Neither the .NO LEADING command nor the
.LEADING command implies a .BREAK command.
For example, the source text
.leading.paragraph.output width 55
Leading blank lines requested by .PARAGRAPH commands
are generated within the range of a .LEADING command
.begin.skip
Leading blank lines requested by .SKIP commands are
generated within the range of a .LEADING command
.begin.no leading.paragraph
Leading blank lines requested by .PARAGRAPH commands
are discarded within the range of a .NO LEADING command
.begin.skip
Leading blank lines requested by .SKIP commands are
discarded within the range of a .NO LEADING command
would be transformed into the following FORTRAN text
when processed by this program.
FORMAT, a FORTRAN FORMAT Statement Generator Page 65
1 FORMAT(/6X,34HLeading blank lines requested by ,
121H .PARAGRAPH commands/20H are generated withi,
233Hn the range of a .LEADING command)
2 FORMAT(/37H Leading blank lines requested by,
124H .SKIP commands are/17H generated within,
232H the range of a .LEADING command)
3 FORMAT(6X,35HLeading blank lines requested by ,
120H.PARAGRAPH commands/21H are discarded within,
235H the range of a .NO LEADING command)
4 FORMAT(38H Leading blank lines requested by ,
123H .SKIP commands are/18H discarded within ,
234Hthe range of a .NO LEADING command)
.NO MASK
The .NO MASK command indicates that the template line
specified by a previous .MASK command is no longer to
be superimposed onto each line of text which is
represented in the resulting FORMAT statements. The
.NO MASK command is equivalent to a .MASK command
issued without any text to its right. A .NO MASK
command is assumed to be in effect when this program is
started. Neither the .NO MASK command nor the .MASK
command implies a .BREAK command. A .BREAK or .EJECT
command should be issued before the .NO MASK or .MASK
command unless it is really desired to change the
template line which is to be applied to the line which
is currently being accumulated in fill mode or to the
blank lines which have not yet been written out to the
FORMAT statements.
For example, the source text
.output width 55.preface WRITE(1,$)
.left margin 5.right margin 45.carriage 1,*
.mask @ @
The .NO MASK command terminates the range of the
previous .MASK command.
.mask % %
The .NO MASK command has no effect if a .MASK command
has not been issued.
.nomask.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38H1 @ The .NO MASK command termina,
112Htes the @/29H* % range of the previou,
221Hs .MASK command. %/20H* % The .NO MASK c,
330Hommand has no effect if a %/11H* .MASK,
429H command has not been issued.)
END
FORMAT, a FORTRAN FORMAT Statement Generator Page 66
which would, in turn, generate the following text when
run.
1 @ The .NO MASK command terminates the @
* % range of the previous .MASK command. %
* % The .NO MASK command has no effect if a %
* .MASK command has not been issued.
.NO OFFSET
The .NO OFFSET command indicates that each line of text
which is represented in the FORMAT statements is not to
be shifted further to the right than is indicated by
the combination of the .LEFT MARGIN and .INDENT or
.PARAGRAPH commands. The .NO OFFSET command is
equivalent to an .OFFSET 0 command. An .OFFSET 1
command is assumed to be in effect when this program is
started. Both the .NO OFFSET and .OFFSET commands
imply a .BREAK command.
For example, the source text
.offset 1.indent 5.right margin 50.output width 55
.preface WRITE(1,$)
The default .OFFSET 1 command provides an empty column
for the carriage control character.
.no offset.indent 5;The .NO OFFSET command prevents the
generation of this empty column.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(6X,35HThe default .OFFSET 1 command pr,
110Hovides an/31H empty column for the carriage ,
218Hcontrol character./5X,20HThe .NO OFFSET ,
325H command prevents the/16Hgeneration of th,
416His empty column.)
END
which would, in turn, generate the following text when
run.
The default .OFFSET 1 command provides an
empty column for the carriage control character.
The .NO OFFSET command prevents the
generation of this empty column.
FORMAT, a FORTRAN FORMAT Statement Generator Page 67
.NO PREFACE
The .NO PREFACE command indicates that the preface line
specified by a previous .PREFACE command is not to be
generated before each of the next FORMAT statements.
The .NO PREFACE command is equivalent to a .PREFACE
command issued without any text to its right. A .NO
PREFACE command is assumed to be in effect when this
program is started and after each new .BEGIN command.
Neither the .NO PREFACE command nor the .PREFACE
command implies either a .BREAK or a .FORMAT command.
The preface line specified by a .PREFACE command is not
generated until enough lines of text have been
constructed to fill the first line of the next FORMAT
statement. If a .NO PREFACE command is issued before
enough lines of text have been constructed to
completely fill the first line of the next FORMAT
statement, then no preface line will be generated even
if a preface line was in effect when the first line of
text which is represented in the FORMAT statement was
constructed.
For example, the source text
.preface WRITE(1,$)
This is the first line
.format
This is the second line
.format.no preface
This is the third line
would be transformed into the following FORTRAN text
when processed by this program.
WRITE(1,1)
1 FORMAT(23H This is the first line)
WRITE(1,2)
2 FORMAT(24H This is the second line)
3 FORMAT(23H This is the third line)
.NO TRAILING
The .NO TRAILING command indicates that the FORMAT
statements are not to include trailing blank lines
resulting from .SKIP or .BLANK commands issued after
all other text has been represented in the FORMAT
statements and are not to include the blank lines
implied by multiple spacing after the final line of
text represented in the FORMAT statements. A .NO
TRAILING command is assumed to be in effect when this
program is first started. If, instead, a .TRAILING
command has been issued more recently than a .NO
TRAILING command, then each .BEGIN command and the
reading of the end of the file (or the issuing of an
FORMAT, a FORTRAN FORMAT Statement Generator Page 68
.END OF FILE command) generates all of the blank lines
which have been requested or which are necessary for
multiple line spacing following the final line of text
represented in the FORMAT statements. Neither the .NO
TRAILING command nor the .TRAILING command implies a
.BREAK command.
For example, the source text
.no trailing.spacing 1
This is the first line
.skip.begin.spacing 2
This is the second line
.begin.trailing.spacing 1
This is the third line
.skip.begin.spacing 2
This is the fourth line
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(23H This is the first line)
2 FORMAT(24H This is the second line)
3 FORMAT(23H This is the third line/)
4 FORMAT(24H This is the fourth line/)
.OFFSET number of spaces to be inserted at left edge of text
The .OFFSET command indicates that each line of text
which is represented in the FORMAT statements is to be
shifted to the right by the insertion of the indicated
number of extra spaces at the left. If the number
which follows the .OFFSET command is unsigned, then
this number will be used as the number of extra spaces
which are to be inserted at the left end of each line
in addition to the spaces specified by the combination
of .LEFT MARGIN and .INDENT or .PARAGRAPH commands. If
the number which follows the .OFFSET command is signed,
then the previous offset is adjusted by the indicated
amount. The carriage control character, if any,
specified by the .CARRIAGE command will be superimposed
upon the leftmost of the spaces in the offset specified
by the .OFFSET command. A template line specified by a
.MASK command would be applied to the text to the right
of the offset. A .COPY command would duplicate the
characters to the right of the offset after application
of the template line, if any. An offset of 1 column
which provides a space as the carriage control
character on each line is assumed to be in effect when
this program is started. No initial spaces other than
those specified by the combination of .LEFT MARGIN and
.INDENT or .PARAGRAPH commands are inserted if an
.OFFSET 0 command or the equivalent .NO OFFSET command
is issued. The .OFFSET and .NO OFFSET commands both
FORMAT, a FORTRAN FORMAT Statement Generator Page 69
imply a .BREAK command.
For example, the source text
.left margin 5.right margin 44.output width 55
.preface WRITE(1,$)
.mask @ @
.offset 1.indent 5.carriage 1,*
The offset specified by the .OFFSET command is in
addition to that specified by the .LEFT MARGIN
and .INDENT or .PARAGRAPH commands.
.offset 6.indent 5.carriage 1,*
The offset specified by the .OFFSET command is in
addition to that specified by the .LEFT MARGIN
and .INDENT or .PARAGRAPH commands.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(2H1@,9X,30HThe offset specified by ,
19H the @/33H*@ .OFFSET command is in addi,
217Htion to that @/24H*@ specified by the,
326H .LEFT MARGIN and @/15H*@ .INDENT o,
422Hr .PARAGRAPH commands.,12X,1H@/7H1 @,9X,
539HThe offset specified by the @/3H* ,
63X,42H@ .OFFSET command is in addition to th,
77Hat @/35H* @ specified by the .LEF,
820HT MARGIN and @/21H* @ .INDENT or,
921H .PARAGRAPH commands.,12X,1H@)
END
which would, in turn, generate the following text when
run.
1@ The offset specified by the @
*@ .OFFSET command is in addition to that @
*@ specified by the .LEFT MARGIN and @
*@ .INDENT or .PARAGRAPH commands. @
1 @ The offset specified by the @
* @ .OFFSET command is in addition to that @
* @ specified by the .LEFT MARGIN and @
* @ .INDENT or .PARAGRAPH commands. @
.OUTPUT WIDTH most characters in each FORMAT statement line
The .OUTPUT WIDTH command specifies the maximum number
of characters in each FORTRAN language line from which
the FORMAT statements are constructed, including the 5
characters in the statement number field and the single
character in the continuation field. .OUTPUT WIDTH 72
is the greatest width which can be specified and is the
default. The combination of the .LENGTH command and
FORMAT, a FORTRAN FORMAT Statement Generator Page 70
the .OUTPUT WIDTH command set the maximum number of
characters in a single FORMAT statement, but do not
otherwise restrict the maximum number of lines of text
which can be represented in each FORMAT statement. The
.OUTPUT WIDTH command, like most other commands which
merely describe the manner in which the text is
represented in the FORMAT statements, does not imply a
.BREAK command.
For example, the source text
.output width 35
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.output width 45
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.output width 55
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(18H The quick red fox,
125H jumps over the lazy brow,
218Hn dog, then runs/13H into the f,
335Horest. The quick red fox jumps ,
413Hover the lazy/28H brown dog, then runs into t,
510Hhe forest.)
.PARAGRAPH columns to indent, multiple of line spacing
or
.PARAGRAPH columns to indent, -1 times number of blank lines
The .PARAGRAPH command indicates that the next line of
text which is represented in the FORMAT statements is
to be indented by the indicated number of spaces from
the left margin which is effect when the first word in
the line is found. The indicated number of initial
spaces are added to the left margin if the first number
following the .PARAGRAPH command is greater than or
equal to zero. The indicated number of spaces are
deleted from the left margin if the first number which
follows the .PARAGRAPH command is less than zero. If
the first number following the .PARAGRAPH command is
missing, then the indentation specified by the previous
.PARAGRAPH command will be applied or a positive
indentation of 5 columns is assumed if no previous
.PARAGRAPH command has specified a first argument.
If the second argument following the .PARAGRAPH command
is greater than or equal to zero, then a number of
blank lines equal to the specified multiple of the
number which appeared to the right of the previous
.SPACING command, or the specified number of blank
FORMAT, a FORTRAN FORMAT Statement Generator Page 71
lines directly if a .SPACING command has not yet been
issued, are to be represented in the FORMAT statement
between the previous line of text and the next line of
text, in addition to any blank lines specified by
previous .BLANK or .SKIP commands, and, if a .SPACING
command has been issued, in addition to a number of
blank lines equal to one less than the number which
appeared to the right of the previous .SPACING command.
If the second argument following the .PARAGRAPH command
is less than zero, then the number of extra blank lines
is equal to the negative of the value specified by the
argument rather than to the multiple of the number
which was specified by the .SPACING command. If the
second argument following the .PARAGRAPH command is
missing, then the second argument specified by the
previous .PARAGRAPH command will be applied, or a
second argument of -1 indicating 1 extra blank line in
addition to the blank lines needed for the normal line
spacing is assumed if no previous .PARAGRAPH command
has specified a second argument. If no text has been
represented in the FORMAT statements either since the
start of the source was read or since the last .BEGIN
command was issued, then the extra blank lines
specified by the .PARAGRAPH command are not generated
unless a .LEADING command is in effect.
If the second argument following the .PARAGRAPH command
is greater than zero, then the .PARAGRAPH command is
equivalent to the combination of an .INDENT command and
a .SKIP command. If the second argument following the
.PARAGRAPH command is equal to zero, then the
.PARAGRAPH command is equivalent to an .INDENT command.
If the second argument following the .PARAGRAPH command
is less than zero, then the .PARAGRAPH command is
equivalent to the combination of an .INDENT command and
a .BLANK command having as its argument the second
argument of the .PARAGRAPH command without its sign.
If a .SPACING 2 command is in effect, then a .PARAGRAPH
5,3 command would result in (2-1)+(3*2) = 7 blank lines
being generated before the next line which would be
indented 5 columns to the right. A .PARAGRAPH 5,-6
command would produce the same results. The .PARAGRAPH
command implies a .BREAK command.
For example, the source text
FORMAT, a FORTRAN FORMAT Statement Generator Page 72
.output width 55.left margin 5.right margin 54
.carriage 1,*.paragraph.preface WRITE(1,$)
This line is at the start of the source and will only
be indented.
.spacing 2.paragraph 10
(spacing-1)-(negative argument) = (1-1)-(-1) = 1 blank
line since the default .SPACING 1 command was in effect
at the end of the previous line.
.paragraph
(2-1)-(-1) = 2 blank lines precede this paragraph since
the .SPACING 2 command was in effect at the end of the
previous line.
.paragraph -5,2
(spacing-1)+(spacing*(positive argument)) = (2-1)+(2*2)
= 5 lines precede this paragraph.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(1H1,10X,30HThis line is at the start of t,
114Hhe source and/27H* will only be indented,
21H./1H*/1H*,15X,29H(spacing-1)-(negative argu,
310Hment) =/1H*/27H* (1-1)-(-1) = 1 bla,
428Hnk line since the default/1H*/9H* .SP,
545HACING 1 command was in effect at the end o,
61Hf/1H*/24H* the previous line./1H*/1H*/1H*,
715X,39H(2-1)-(-1) = 2 blank lines precede this/
81H*/41H* paragraph since the .SPACING 2 ,
914Hcommand was in/1H*/23H* effect at the end,
122H of the previous line./1H*/1H*/1H*/1H*/1H*/
231H*(spacing-1)+(spacing*(positive,6X,8Hargument,
32H)),7X,1H=/1H*/29H* (2-1)+(2*2) = 5 lines p,
422Hrecede this paragraph.)
END
which would, in turn, generate the following text when
run.
FORMAT, a FORTRAN FORMAT Statement Generator Page 73
1 This line is at the start of the source and
* will only be indented.
*
* (spacing-1)-(negative argument) =
*
* (1-1)-(-1) = 1 blank line since the default
*
* .SPACING 1 command was in effect at the end of
*
* the previous line.
*
*
* (2-1)-(-1) = 2 blank lines precede this
*
* paragraph since the .SPACING 2 command was in
*
* effect at the end of the previous line.
*
*
*
*
*
*(spacing-1)+(spacing*(positive argument)) =
*
* (2-1)+(2*2) = 5 lines precede this paragraph.
.PREFACE line of text to precede each new FORMAT statement
The line of text which follows the .PREFACE command on
the same line is to be copied into the output file
unchanged before each new FORMAT statement which is
generated. The character to the immediate right of the
.PREFACE command must be a space. The line of text
which is to be copied into the output file before each
new FORMAT statement starts with the second character
to the right of the .PREFACE command, whether or not
this is a printing character, and extends through the
rightmost printing character on the line. A .PREFACE
command issued within the range of a .PROGRAM command
applies to the source text following the next .FORMAT
command. No line of text will be copied into the
output file before each new FORMAT statement if the
.PREFACE command is issued without any following
characters, or if a .NO PREFACE or a .BEGIN command has
been issued more recently than a .PREFACE command, or
if a .PREFACE command has not been issued since this
program was started. Neither the .PREFACE command nor
the .NO PREFACE command implies a .BREAK command.
The .PREFACE command would typically be used to insert
single line FORTRAN language WRITE statements before
each of the FORMAT statements which represents portions
of a long section of text. In the line of text
specified by the .PREFACE command, all groups of
FORMAT, a FORTRAN FORMAT Statement Generator Page 74
contiguous dollar signs which are not preceded by
underscores will be replaced each time the line of text
is copied into the output file by the statement number
of the following FORMAT statement. If the group of
dollar signs contains more dollar signs than there are
digits in the number, then additional spaces are
inserted to the left of the statement number so that
the total number of characters which are inserted
equals the number of dollar signs in the group. If the
group of dollar signs does not contain more dollar
signs than there are digits in the number, then all of
the digits are represented, but no extra spaces are
inserted.
Within the text specified by the .PREFACE command, an
underscore character, which will not be copied into the
output file, can appear before any character, such as a
number sign, circumflex, back slash, less than sign (if
in flag capitalize mode), a dollar sign or another
underscore, which is to be treated as a nonflag
character. The .PREFACE command cannot be followed on
the same line either by a comment or by another
command, so semicolons and exclamation points in the
line of text specified by the .PREFACE command do not
need to be preceded by underscores.
For example, the source text
.length 2.output width 55.right margin 30.
.preface IF(KONTRL.EQ.1)WRITE(1,$$$)
The .PREFACE command allows several FORMAT statements
representing a single section of text to be used under
the same conditions.
would be transformed into the following FORTRAN text
when processed by this program.
IF(KONTRL.EQ.1)WRITE(1, 1)
1 FORMAT(31H The .PREFACE command allows/4H sev,
127Heral FORMAT statements)
IF(KONTRL.EQ.1)WRITE(1, 2)
2 FORMAT(31H representing a single section/4H of ,
127H text to be used under the)
IF(KONTRL.EQ.1)WRITE(1, 3)
3 FORMAT(17H same conditions.)
.PROGRAM next statement number, statement number increment
The .PROGRAM command indicates that no additional text
is to be represented by the FORMAT statement currently
being constructed and that the source text appearing on
the following lines of the input file, through the next
.BEGIN or .FORMAT command or through the reading of the
end of the file (or the issuing of an .END OF FILE
FORMAT, a FORTRAN FORMAT Statement Generator Page 75
command) is to be copied into the output file unchanged
rather than being represented in a FORMAT statement.
No extra spaces are inserted at the start of the lines
within the range of the .PROGRAM command regardless of
whether an .OFFSET command has been issued, and no
extra blank lines are inserted between these lines even
if a .SPACING command has been issued. Case
conversions and removal of underscores before
characters to be copied literally continue to be
performed within the range of the .PROGRAM command, and
dollar signs are replaced, as described below, by the
number of the next FORMAT statement which can be
generated.
In the lines within the range of the .PROGRAM command,
an underscore character, which will not be copied into
the output file, can appear before any character, such
as a number sign, circumflex, back slash, less than
sign (if in flag capitalize mode), dollar sign, another
underscore, initial period, or rightmost space, which
is to be treated as though it were an ordinary printing
character. All lines beginning with a period in the
left column will be interpreted as commands. In order
to output a line starting with a period, this period
must be preceded by an underscore character.
In the noncommand lines following the .PROGRAM command,
all groups of contiguous dollar signs which are not
preceded by underscore characters will be replaced by
the statement number of the FORMAT statement which
would be generated when either a .BEGIN or a .FORMAT
command is next encountered. If the group of dollar
signs contains more dollar signs than there are digits
in the number, then additional spaces are inserted to
the left of the statement number so that the total
number of characters which are inserted equals the
number of dollar signs in the group. If the group of
dollar signs does not contain more dollar signs than
there are digits in the number, then all of the digits
are represented, but no extra spaces are inserted.
The numbers which can follow the .PROGRAM command are
identical to those which can follow the .BEGIN and
.FORMAT commands. The first number which can follow
any of these commands modifies the statement number of
the next FORMAT statement. The second number which can
follow any of these commands becomes the statement
number increment after the generation of the next
FORMAT statement. The description of the .FORMAT
command describes the interpretation of these numbers
in detail. If the statement number of the FORMAT
statement following a section of program text indicated
by an initial .PROGRAM command is to be modified, but
the program text includes dollar signs which are to be
replaced by this statement number, then this statement
FORMAT, a FORTRAN FORMAT Statement Generator Page 76
number should be modified by the .PROGRAM command
rather than by the following .BEGIN or .FORMAT command,
since, if the modification is done by the .BEGIN or
.FORMAT command, then incorrect statement numbers will
have been inserted into the program text.
For example, the source text
.spacing 2.output width 55.offset 0
.begin 10,10 ;Statement ten
.program ;Next statement will be number $$$.
.format ;Statement twenty
.program+5,100 ;Next statement will be number $$.
.trail !blank lines will now end statements
_.Underscore before initial period and dollar sign _$.
.format ;Statement twenty-five
.program ;Next statement will be number $.
.format ;Statement one hundred and twenty-five
would be transformed into the following FORTRAN text
when processed by this program.
10 FORMAT(13HStatement ten)
Next statement will be number 20.
20 FORMAT(/16HStatement twenty)
Next statement will be number 25.
.Underscore before initial period and dollar sign $.
25 FORMAT(/21HStatement twenty-five/)
Next statement will be number 125.
125 FORMAT(37HStatement one hundred and twenty-five/)
.RESET
The .RESET command returns all conditions which can be
changed by commands and by case shift locks in the
source text to their original settings. If additional
text appears on the same line to the right of the
.RESET command then the original set of flag characters
will be recognized in this additional text, and the
cases of alphabetic letters will be retained at the
start of this additional text. The width of the line
in which the .RESET command is found is set by the
input line width in effect when the line was read, but
the next line read from the source file will be of the
original width.
The following commands are implied by the .RESET
command.
.BEGIN 1,1
.FILL
.FLAGS ALL
.FLAGS CONTROL _.
.FLAGS FENCE _;
FORMAT, a FORTRAN FORMAT Statement Generator Page 77
.FLAGS INSERT $
.FLAGS LOWER CASE _\
.FLAGS QUOTE __
.FLAGS REMARK _!
.FLAGS SPACE _#
.FLAGS UPPER CASE _^
.INPUT WIDTH 132 (applies to next line read)
.JUSTIFY
.LEFT MARGIN 0
.LENGTH 20
.NO CARRIAGE
.NO COPY
.NO FLAGS CAPITALIZE
.NO INSERT
.NO LEADING
.NO MASK
.NO PREFACE
.NO TRAILING
.OFFSET 1
.OUTPUT WIDTH 72
.RIGHT MARGIN 60
.SPACING 1
.UPPER CASE
.USE H
A subsequent .PARAGRAPH command issued without
arguments would be assumed to be equivalent to
.PARAGRAPH 5,-1.
.RIGHT MARGIN righmost column into which text is wrapped
The .RIGHT MARGIN command specifies the maximum number
of characters in each line of text which is constructed
in fill mode, including the left margin specified by
the .LEFT MARGIN command, the indentation which is
specified either by an .INDENT or a .PARAGRAPH command,
and the words of text and the spacings between words
which are accumulated on the current line either until
the next word would cause the total number of
characters in the line to exceed the right margin
specified by the .RIGHT MARGIN command or until a
command which implies a .BREAK command is encountered.
If the number which follows the .RIGHT MARGIN command
is unsigned, then this number will be used as the right
margin. The right margin is assumed to be 60 if a
.RIGHT MARGIN command has not yet been encountered. If
the number which follows the .RIGHT MARGIN command is
signed, then the previous right margin is adjusted by
the indicated amount. If no number follows the .RIGHT
MARGIN command then the right margin is reset to the
farthest right margin which it has yet been set. The
.RIGHT MARGIN command implies a .BREAK command.
The right margin is the maximum length of the line of
FORMAT, a FORTRAN FORMAT Statement Generator Page 78
text before the application of the template line
specified by a .MASK command and before the line is
duplicated by a .COPY command. The right margin does
not include the leftmost spaces specified by the
.OFFSET command or the single left space which is
obtained if neither the .OFFSET command nor the .NO
OFFSET command has been issued. The combination of the
right margin and the initial offset specified by the
.OFFSET command cannot exceed 300. The right margin is
always assumed to be large enough for the current line
to include at least 1 word. The right margin is
ignored if the lines of text are being represented in
no fill mode.
For example, the source text
.output width 55.carriage 1,*.preface WRITE(1,$)
.left margin 5.right margin 30.indent 5
The .RIGHT MARGIN command implies a .BREAK command.
.right margin 40.indent -5
The .RIGHT MARGIN command applies only to text which is
constructed in fill mode.
.nofill;The right margin is ignored in no fill mode.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(1H1,10X,20HThe .RIGHT MARGIN/7H* c,
124Hommand implies a .BREAK/14H* command./
241H*The .RIGHT MARGIN command applies only/1H*,
35X,35Hto text which is constructed in/4H* ,
412H fill mode./29H* The right margin is ign,
521Hored in no fill mode.)
END
which would, in turn, generate the following text when
run.
1 The .RIGHT MARGIN
* command implies a .BREAK
* command.
*The .RIGHT MARGIN command applies only
* to text which is constructed in
* fill mode.
* The right margin is ignored in no fill mode.
.SKIP multiple of extra line spacings to be generated
The .SKIP command indicates that, after the
representation in the FORMAT statement of the previous
text, a number of blank lines equal to the specified
multiple of the number which appeared to the right of
FORMAT, a FORTRAN FORMAT Statement Generator Page 79
the previous .SPACING command, or the specified number
of blank lines directly if a .SPACING command has not
yet been issued, are to be represented in the FORMAT
statement, in addition to any blank lines specified by
other .BLANK or .SKIP commands, and, if a .SPACING
command has been issued, in addition to a number of
blank lines equal to one less than the number which
appeared to the right of the previous .SPACING command.
If no number appears to the right of the .SKIP command,
then the number 1 is assumed to appear to the right of
the .SKIP command instead. If a .SPACING 2 command is
in effect, then a .SKIP 3 command would result in
(3*2)+(2-1) or 7 blank lines being generated. The
.SKIP command is similar to the .BLANK command, except
that the .BLANK command always specifies the number of
extra blank lines directly. The .SKIP command implies
a .BREAK command.
If no text has been represented in the FORMAT
statements either since this program was started or
since the last .BEGIN command was issued, then the
.SKIP command, like the .BLANK command and the .SKIP or
.BLANK command implied by the .PARAGRAPH command, is
ignored unless a .LEADING command is in effect. Blank
lines which have not been generated when the end of the
source file is read or when the next .BEGIN command is
issued, but which have been requested by .SKIP or
.BLANK commands or which are necessary for the normal
line spacing, will be appended to the FORMAT statement
being constructed if a .TRAIL command is then in
effect. Blank lines will be discarded when the end of
the source file is read or the next .BEGIN command is
issued if a .NO TRAIL command is then in effect or if a
.TRAIL command has not by then been issued.
For example, the source text
.spacing 2.output width 55
.skip
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.skip
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.skip 2
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.skip 3
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
FORMAT, a FORTRAN FORMAT Statement Generator Page 80
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(38H The quick red fox jumps over the lazy,
123H brown dog, then runs//17H into the forest./
2///42H The quick red fox jumps over the lazy bro,
319Hwn dog, then runs//17H into the forest./////
4/44H The quick red fox jumps over the lazy brown,
517H dog, then runs//17H into the forest.///////
6/44H The quick red fox jumps over the lazy brown,
717H dog, then runs//17H into the forest.)
.SPACING separation from top of one line to top of next line
The .SPACING command specifies the separation from the
top of one line of text to the top of the next line of
text when the resulting FORMAT statements are used.
The number specified by the .SPACING command is one
greater than the number of blank lines which are to
separate lines of text which are constructed in fill
mode or which are copied in no fill mode. The
intervening blank lines which are required when the
.SPACING command has specified a value greater than 1
are generated after each line of text, not before. No
blank lines follow the final line of text unless a
.TRAILING command is in effect. The .SPACING command
implies a .BREAK command. A .SPACING 1 command which
gives single spacing with no intervening blank lines is
assumed to be in effect when this program is started.
If a line of text is being constructed when the
.SPACING command is encountered, then the number of
blank lines which follow that line of text is
determined by the line spacing which was in effect
during the construction of that line of text, not by
the newly specified spacing.
For example, the source text
.output width 55.right margin 54
.carriage 1,*.preface WRITE(1,$)
A .SPACING 1 command is assumed to be in effect when
this program is started.
.spacing 2
No blank lines precede this since the .SPACING 2
command forced out previous line before taking effect.
.blank 2;Normal spacing and 2 blank lines
.skip 2;Normal spacing and 2 multiples of 2 blank lines
.paragraph 5,2;Paragraph similar to .skip 2.indent 5
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
FORMAT, a FORTRAN FORMAT Statement Generator Page 81
WRITE(1,1)
1 FORMAT(38H1A .SPACING 1 command is assumed to be,
117H in effect when/24H*this program is started,
21H./41H*No blank lines precede this since th,
314He .SPACING 2/1H*/23H*command forced out pre,
432Hvious line before taking effect./1H*/1H*/1H*/
533H*Normal spacing and 2 blank lines/1H*/1H*/1H*/
61H*/1H*/37H*Normal spacing and 2 multiples of 2 ,
711Hblank lines/1H*/1H*/1H*/1H*/1H*/10H* Para,
833Hgraph similar to .skip 2.indent 5)
END
which would, in turn, generate the following text when
run.
1A .SPACING 1 command is assumed to be in effect when
*this program is started.
*No blank lines precede this since the .SPACING 2
*
*command forced out previous line before taking effect.
*
*
*
*Normal spacing and 2 blank lines
*
*
*
*
*
*Normal spacing and 2 multiples of 2 blank lines
*
*
*
*
*
* Paragraph similar to .skip 2.indent 5
.TRAILING
The .TRAILING command indicates that the FORMAT
statements are to include blank lines resulting from
.SKIP or .BLANK commands issued after all text has been
represented in the FORMAT statements and are to include
the blank lines necessary for multiple line spacing
following the final line of text represented in the
FORMAT statements. If a .TRAILING command has not been
issued, or if a .NO TRAILING command has been issued
more recently than a .TRAILING command, then each
.BEGIN command and the reading of the end of the file
(or the issuing of an .END OF FILE command) instead
discards all blank lines which did not precede text
which has been represented in the FORMAT statements.
Neither the .TRAILING command nor the .NO TRAILING
command implies a .BREAK command.
FORMAT, a FORTRAN FORMAT Statement Generator Page 82
For example, the source text
.spacing 2.output width 55.use'.offset 0.begin 10
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.begin 20
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.skip.begin 30.trail
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.begin 40
The quick red fox jumps over the lazy brown dog,
then runs into the forest.
.skip
would be transformed into the following FORTRAN text
when processed by this program.
10 FORMAT('The quick red fox jumps over the lazy b',
1'rown dog, then runs'//'into the forest.')
20 FORMAT('The quick red fox jumps over the lazy b',
1'rown dog, then runs'//'into the forest.')
30 FORMAT('The quick red fox jumps over the lazy b',
1'rown dog, then runs'//'into the forest.'/)
40 FORMAT('The quick red fox jumps over the lazy b',
1'rown dog, then runs'//'into the forest.'///)
.UPPER CASE
The .UPPER CASE command indicates that the cases of all
alphabetic letters which are not specially marked are
to be retained in the source text which follows the end
of the command or, if the .UPPER CASE command is
followed by a comment, in the source text which follows
the comment. Regardless of the issuing of the .UPPER
CASE command, any letter which is preceded by a back
slash is still converted to its lower case form, any
letter which is preceded by a circumflex is still
converted to its upper case form, and, providing that a
.FLAGS CAPITALIZE command has been issued, any letter
which is in a word which is preceded by a less than
sign is also converted to its upper case form. The
.UPPER CASE command is equivalent to the appearance of
2 consecutive circumflexes except that the 2
circumflexes can appear anywhere and that the retention
of cases indicated by the 2 circumflexes is applied
immediately to all of the following text. An .UPPER
CASE command is assumed to be in effect when this
program is started. Upper case letters will instead be
converted to their lower case forms if the .LOWER CASE
command or the equivalent 2 consecutive back slashes
are issued. Neither the .UPPER CASE command nor the
.LOWER CASE command implies a .BREAK command.
FORMAT, a FORTRAN FORMAT Statement Generator Page 83
For example, the source text
.offset 0.right margin 55.output width 55
.flags capitalize.preface WRITE(1,$)
An <.upper ^c^a^s^e \C\O\M\M\A\N\D does not have to be
issued when this program is first started.
.lower case
^A <.LOWER ^C^A^S^E \C\O\M\M\A\N\D CAN BE ISSUED TO
CAUSE CONVERSION TO LOWER CASE.
.upper case
The <.upper ^c^a^s^e \C\O\M\M\A\N\D can, of course, be
reissued at any time.
.program; END
would, when processed by this program, be transformed
into the following FORTRAN text
WRITE(1,1)
1 FORMAT(38HAn .UPPER CASE command does not have t,
117Ho be issued when/24Hthis program is first ,
231Hstarted. A .LOWER CASE command/10Hcan be iss,
345Hued to cause conversion to lower case. The/
445H.UPPER CASE command can, of course, be reiss,
510Hued at any/5Htime.)
END
which would, in turn, generate the following text when
run.
An .UPPER CASE command does not have to be issued when
this program is first started. A .LOWER CASE command
can be issued to cause conversion to lower case. The
.UPPER CASE command can, of course, be reissued at any
time.
.USE character implying text representation notation
The .USE command specifies the notation which is to be
used to represent the text in the FORMAT statements
being generated. If the next printing character
following the .USE command is either an upper or lower
case letter H, then the text will be represented in
Hollerith notation as the number of characters followed
by the letter H in the case indicated and then by the
characters of the text. If the next printing character
following the .USE command is not the letter H, then
that character will be appended to both ends of the
text and will be doubled wherever it appears within the
text. .USE' would select apostrophe notation, and
.USE* would select the asterisk notation used by some
computers which do not include the aspostrophe in their
character sets. The .USE command, like most other
commands which merely describe the manner in which the
text is represented in the FORMAT statements, does not
FORMAT, a FORTRAN FORMAT Statement Generator Page 84
imply a .BREAK command.
One or more spaces can appear between the .USE command
and the following printing character, but are not
required. In order for a space, number sign,
circumflex, back slash, less than sign (if in flag
capitalize mode), period, semicolon, exclamation point
or underscore to be specified by the .USE command as
the delimiting character, this character would have to
be preceded by an underscore.
For example, the source text
.out width 55;one * two ** three ' four '' five
.break.use' ;one * two ** three ' four '' five
.break.use * ;one * two ** three ' four '' five
.break.useH ;one * two ** three ' four '' five
.break.use h ;one * two ** three ' four '' five
would be transformed into the following FORTRAN text
when processed by this program.
1 FORMAT(34H one * two ** three ' four '' five/' ',
1'one * two ** three '' four '''' five'/* one ***,
2* two **** three ' four '' five*/12H one * two *,
322H* three ' four '' five/19h one * two ** three,
415h ' four '' five)
The FORMAT program and this documentation were written 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