DCL: MATH1: Summary: FORTRAN77 Standard
When using the FORMAT statement to specify the format of output with WRITE
statements, one cannot "judge the number of necessary digits in the program
and change the number of digits of the output," since variables cannot be
used in the format. This is one of the inflexible characteristics of an old
language, but we urge you to read the explanation below before crying,
"That's why I hate FORTRAN."
In FORTRAN77, the character variable can be specified instead of the number of the FORTRAN statement as the format identifier of the WRITE statement. It is possible to make dynamic changes to format using this function.
CHARACTER CFMT*12 ... CFMT = '(T12, F5.2)' WRITE(6,CFMT) X ...
In this example, a constant is simply assigned to the character variable cfmt,
so the format is not designed to be changed dynamically, but since cfmt
is a variable, it can be easily changed in the program.
The WRITE statement is used to write numerical variables such as the number of digits into the character variable. By writing the character variable in place of the output device number in the WRITE statement, it is possible to make the program treat the character variable as an "internal file," and just like a normal WRITE statement, it can be edited and outputted.
CHARACTER CFMT*12 ... CFMT = '(T12, Fx.2)' WRITE(CFMT(8:8),'(I1)') N WRITE(6,CFMT) X ...
In this example, an integer variable n is written into the line 8 of
the character variable cfmt, to designated it as the number of digits
when outputting
x. This technique could not be used in FORTRAN66, so it is not widely
known, but it is extremely convenient.