Google
 

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