-
The NEWUNIT= specifier has been added to the OPEN statement; this
allocates a new unit number that cannot clash with any other logical unit (the
unit number will be a special negative value).
For example,
INTEGER unit
OPEN(FILE='output.log',FORM='FORMATTED',NEWUNIT=unit)
WRITE(unit,*) 'Logfile opened.'
The NEWUNIT= specifier can only be used if either the FILE=
specifier is also used, or if the STATUS= specifier is used with the
value 'SCRATCH'.
-
Recursive input/output is allowed on separate units.
For example, in
Write (*,Output_Unit) f(100)
the function f is permitted to perform i/o on any unit except
Output_Unit; for example, if the value 100 is out of range, it would be
allowed to produce an error message with
Write (*,Error_Unit) 'Error in F:',n,'is out of range'
-
[6.0] A sub-format can be repeated an indefinite number of times by using an
asterisk (*) as its repeat count. For example,
SUBROUTINE s(x)
LOGICAL x(:)
PRINT 1,x
1 FORMAT('x =',*(:,' ',L1))
END SUBROUTINE
will display the entire array x on a single line, no matter how many
elements x has.
An infinite repeat count is only allowed at the top level of the format
specification, and must be the last format item.
-
[6.0] The G0 and G0.d edit descriptors perform generalised
editing with all leading and trailing blanks (except those within a character
value itself) omitted.
For example,
PRINT 1,1.25,.True.,"Hi !",123456789
1 FORMAT(*(G0,','))
produces the output
1.250000,T,Hi !,123456789,