where / can replace \, and # is equivalent to \'+';`.
The backslash indicates end of record, allowing a FORMAT
statement to call for the generation of
more than one record.
Also, parentheses can enclose a group of format codes, to
be preceded by a number giving the number
of times that that group of codes is to be repeated. Repeating
a single code is done by simply preceding
it with the number of repeats desired.
any character string enclosed in quotes |
print this string on output; ignore the characters
to which the string corresponds on input.
(If the same FORMAT statement is used for both input
and output, the string itself is changed to
contain what was in the characters input previously in those
positions, as becomes apparent only on
output.) Unlike FORTRAN, double quotes may also be used here. |
nH followed by n characters |
same as above. Note that, unlike in FORTRAN, while
this is acceptable as a format code, it is
NOT a legal character-valued constant. (use %H(n) instead) |
X |
print one blank on output (unchangeably), ignore one
space on input. |
Tn |
print blanks, or ignore spaces, until position n is
reached. |
TLn |
move backwards n spaces |
TRn |
move forwards n spaces (same as nX) |
SP |
print leading plus sign for positive numbers |
SS |
only print -, but blank for + |
S |
same as SS (the default) |
BN |
ignore trailing blanks on fixed-field input |
BZ |
trailing blanks, on fixed-field input, considered
zeroes, wherever that is the default (not
including Kn, for example) |
ES |
print numbers in E format in the form -n.nnnnnE+nn
(the default, similar to conventional
scientific notation) |
EZ |
print numbers in E format in the form -0.nnnnnE+nn (as
done by FORTRAN) |
EL |
print numbers in E format in the form -n.nnnnn#+nn |
EF |
print numbers in E format in the same form as ES, but
with D or Q replacing E if the number
being printed was double or quadruple precision, respectively
(useful for the automatic generation
of FORTRAN programs) |
Note that neither of the above format codes corresponds
to an item in the parameter list of the
input-output statement. The remaining codes do each correspond
to an item, except that an array-valued
item takes one code for each element, and a COMPLEX item takes
two codes, and a QUATERNION item four. |
In |
print, or read, an integer in the next n spaces of
the record being output or input. Trailing
blanks, on input, are interpreted as zeroes. |
Kn |
as In, but ignore trailing blanks on input. |
Jn |
as In, but fill with leading zeroes on output. |
Y |
print an integer using however many spaces are needed,
and print one space; on input, read in
an integer until a delimiter (such as a space or a comma)
is reached. |
Fw.d |
print, or read, in the next w spaces, a floating-point
number, with d digits after the decimal
point. The decimal point is printed, but, on input, is assumed
if absent. The form Fw is equivalent
to Fw.0 and allowed for both input and output, and results
in printing a decimal point at the end of
the number on output. |
Ew.d |
print, or read, a floating-point number in exponential
notation, with d significant figures. On
input, d may be omitted. |
Gw.d |
attempt output using format Fw.d; if this fails, use
Ew.d format instead. Accept either format
on input, except that no decimal point is assumed. |
Sw |
print a floating-point number in w spaces with as many
significant figures as possible. |
Vd |
print a floating-point number with d significant figures
in as many spaces as necessary. |
Ww.d |
print, or read, in Fw.d format, an INTEGER parameter;
dividing by 10 to the d-th power before
output, or multiplying by 10 to the d-th power after input
if a decimal point is present in the
input text. |
Uw.d |
similar to Ww.d, except that multiplication on input
is always performed (do not, essentially,
assume a decimal point in input). |
Ln |
prints T for a LOGICAL variable with the value _T,
and F otherwise, as the last character in
a field otherwise filled with blanks. |
An |
print the text of a CHARACTER, STRING, or FIXED_STRING
variable in n spaces, padding with
blanks on the right if necessary; for other variables,
handle their contents without conversion as
if they contained text. |
Rn |
as An, except padding (or ignoring part of the field)
is done on the left. |
Zn |
as An, except that each character, or machine word,
is converted to (on output) or from (on
input) the appropriate number of hexadecimal digits. |
On |
as Zn, except that octal digits are used, and word
boundaries are preferred over character
boundaries. |
M |
print the entire contents of an array, or a MUTABLE
variable, without using any subsequent
format codes (not required within an input/output statement,
since each format code is linked to a
specific variable); this may be followed by the format
codes to use for that item within
parentheses. |
P'...' |
print a number in the format outlined, character by
character, in the string ...`. Double
quotes, or an H format code, may be used to outline that
string as well.
In the first part of the string: |
9 |
indicates a position that may be filled by a leading or
trailing zero |
Z |
indicates a position that may be filled by a digit that
is not a leading or trailing zero (as well
as a floating sign or $ sign, or a background character) |
. |
indicates the position of the decimal point |
P |
indicates the position of the sign that may be filled by
+ or - |
S |
indicates the position of the sign that may be filled by
- |
, |
indicates a character that is printed if it is preceded
and followed by digits the printing of
which has not been suppressed by reason of being a leading
or trailing zero |
# |
indicates a character just printed as is, as does a blank
and a zero |
$ |
preceding the description of a number indicates
an $ sign to be printed: either where it is
placed, if no leading zeroes are suppressed, or in
the digit or comma position immediately
preceding the first printed digit of the number otherwise.
After the number, it moves to the left
if trailing zeroes after the decimal point are suppressed,
in the same way. |
+ |
indicates a + sign if the number is positive, and a
- sign if the number is negative, to be
printed in the same way as $ |
- |
indicates a - sign if the number is negative, to be printed
the same way as $; if the number is
positive, it generates a blank that does not move. |
E |
indicates the point at which the 'mantissa' portion of
a number ends, and the 'exponent' portion
begins, each to be considered as a separate number |
N |
acts like P; however, after an E, this indicates the sign
of the number rather than the sign of
the exponent |
X |
indicates a position where a character from a character
string is to be printed (left-justified) |
C |
indicates a position where a character from a character
string is to be printed (centred) |
R |
indicates a position where a character from a character
string is to be printed (right-justified) |
The second part of the string acts as a delimiter for
the first part of the string, and has one
of two possible forms: |
/ |
indicates the end of the first part of the string, and
the beginnning of the third through seventh
parts of the string. |
(n) |
serves the function of /, but in addition indicates that
the last n digits of the number as
printed (including trailing zeroes suppressed) are to be
digits after the actual decimal point of
the number to be printed, regardless of where or whether
a decimal point is to be included in the
printed number. This serves a function similar to
the V character in COBOL picture clauses;
placing it in the second part of the FALCON picture clause
allows strict character-for-character
correspondence to be maintained in the first part of the
FALCON picture clause.
Note also that n may have a minus sign preceding it.
This does not cause the number to be
printed to be multiplied by 10 to the n-th power; rather,
the amount of scaling is determined by
the difference between n and the number of digits shown
as being after the decimal point by the
format chosen (or the number of printed zeroes appended
to the number). |
The third through seventh parts of the string are
not delimited; instead, each of them must
contain a specific number of characters as determined from
the first part of the string, or they can
be omitted by providing a shorter string in the P format
code. |
The third part of the string contains as many characters
as the first part of the string, and
contains characters to be printed instead of:
- the characters ".", "#", " ", "0", and "E", which
are otherwise printed when they ocurr in
the first part of the string
- a - sign printed in response to a P, S, or N character
in the first part of the string
- a blank generated by the suppression of leading
or trailing zeroes, including a space
left behind by an $, +, or - sign, and a
comma not printed because of suppression of
zeroes adjacent to it
|
The fourth part of the string contains one character
corresponding to each P or N character in
the first part of the string, and these characters are to
be printed instead of:
a + sign printed in response to a P or N character
in the first part of the string |
The fifth part of the string contains one character
for every $, +, or - character in the
first part of the string, and contains the character to print
instead of:
the $ sign printed in response to the corresponding
$ sign in the first part of the
string, or any - signs printed in response
to the corresponding + or - character in
the first part of the string, where the +,
-, and $ characters are all regarded as a
single block that moves along the string |
The sixth part of the string contains one character
for every + sign in the first part of the
string, and none otherwise, and contains the character to
be printed instead of:
a + sign printed in response to the corresponding
+ sign in the first part of the string |
The seventh part of the string contains one character
for every , character in the first part
of the string, and contains the character to print instead
of:
a , printed in response to the corresponding ,
in the first part of the string (where
comma printing is not suppressed because of
zero suppression)
It is possible to omit the last part of the string,
or that one and the one before it, and so
on, simply by ending the string before all parts have
been written out. In addition, the seventh
part of the string may be only one character long, in
which case that character replaces the ,
characters generated by all the commas in the first part
of the string.
Thus, if you want to print numbers with two digits following
the decimal point, always printed,
and with CR appearing at the end if they are positive,
DB if negative, with leading zeroes
suppressed, a $ sign immediately preceding the first digit
of the number, and asterisks filling the
positions before that, having commas separating the
thousands, and having a value up to
9,999,999.99, you can use the format code
P'$Z,ZZZ,ZZ9.99PP/*********n.nnDBCR$'
where lowercase letters fill the "Don't Care" positions of
the code to help keep track of position.
On the other hand, if you want to print a + or - sign
in front of the number and the dollar
sign, and want to use . to mark off thousands and , for
the decimal point, European style, use the
format code
P'$+Z,ZZZ,ZZ9.99/*********n,nn$+-.'
Multiple dollar signs in the first part of the string
move as a block to precede the number;
so, if you want to talk about Canadian dollars, you can make
that clear with
P'$$$$$$Z,ZZZ,ZZ9.99PP/**************n.nnDBCR$(CAN)'
(actually, $(Cdn.) is preferable, but that form was
not used in this example so that lower-case
letters could still be used to indicate irrelevant character
positions.) |
|
In addition, there are two items that modify other format
specifications: |
nP |
(preceding the specification) the printed form of
the number is to be 10 to the n-th power
times the actual number in the variable undergoing input
or output. The number n may be negative. No
ambiguity results from this use of the letter P, as it is
meaningless to scale a character string. |
En |
(following the specification) specifies the number of
digits in the exponent for Gw.d and Ew.d |
Note that the format specification does not specify whether
the number being printed is double
precision or real, BCD or integer; thus, type information is
taken from the PRINT, WRITE, READ, or INPUT
statement. (The Q format code for REAL*16 numbers, for example,
is not supported.)
Also, as their respective names imply, the control character
in an input/output statement takes
precedence over the default control character in any FORMAT statement
it references.