Intel® Fortran Compiler 17.0 Developer Guide and Reference
Shown below are the four interfaces that specify the characteristics of the user-defined I/O procedures. The actual specific procedure names and the names of the dummy arguments in these interfaces are arbitrary.
The following names are used in the interfaces:
dtv-type-spec |
Is one of the following:
d-name is the name of the derived type. It cannot be an abstract type. All length type parameters of the derived type must be assumed. |
var |
Is a scalar of the derived type. For output, it holds the value to be written. For input, it will be altered in accordance with the values read. |
unit |
Is the scalar integer value of the I/O unit on which input or output is taking place. It is a negative number for an internal file or for an external unit that is a NEWUNIT value. It is a processor-dependent number (which may be negative) for the '*' unit. |
iotype |
Is the value 'LISTDIRECTED', 'NAMELIST', or 'DT'//string, where string is the character string from the DT edit descriptor. |
vlist |
Is a rank-one assumed-shape integer array whose value comes from the parenthetical list of integers from the DT edit descriptor. For list-directed formatting and namelist formatting, vlist is a zero-sized integer array. |
iostat |
Is a scalar integer variable that must be given a positive value if an error condition occurs. If an end-of-file or end-of-record condition occurs, it must be given the value IOSTAT_END or IOSTAT_EOR (from the intrinsic module ISO_FORTRAN_ENV). In all other cases, it must be given the value zero. |
iomsg |
Is an assumed-length scalar character variable that must be set to an explanatory message if iostat is given a nonzero value. Otherwise, it must not be altered. |
The following interfaces specify the characteristics of the user-defined I/O procedures:
SUBROUTINE my_read_formatted (var,unit,iotype,vlist,iostat,iomsg)
dtv-type-spec,INTENT(INOUT) :: var
INTEGER,INTENT(IN) :: unit
CHARACTER(*),INTENT(IN) :: iotype
INTEGER,INTENT(IN) :: vlist(:)
INTEGER,INTENT(OUT) :: iostat
CHARACTER(*),INTENT(INOUT) :: iomsg
END
SUBROUTINE my_read_unformatted (var,unit,iostat,iomsg)
dtv-type-spec,INTENT(INOUT) :: var
INTEGER,INTENT(IN) :: unit
INTEGER,INTENT(OUT) :: iostat
CHARACTER(*),INTENT(INOUT) :: iomsg
END
SUBROUTINE my_write_formatted (var,unit,iotype,vlist,iostat,iomsg)
dtv-type-spec,INTENT(IN) :: var
INTEGER,INTENT(IN) :: unit
CHARACTER(*),INTENT(IN) :: iotype
INTEGER,INTENT(IN) :: vlist(:)
INTEGER,INTENT(OUT) :: iostat
CHARACTER(*),INTENT(INOUT) :: iomsg
END
SUBROUTINE my_write_unformatted (var,unit,iostat,iomsg)
dtv-type-spec,INTENT(IN) :: var
INTEGER,INTENT(IN) :: unit
INTEGER,INTENT(OUT) :: iostat
CHARACTER(*),INTENT(INOUT) :: iomsg
END