BACKSPACE

Purpose

The BACKSPACE statement positions an external file connected for sequential access or formatted stream access.

Execution of a BACKSPACE statement performs a wait operation for any pending asynchronous data transfer operations for the specified unit.

Syntax

Read syntax diagramSkip visual syntax diagramBACKSPACE u(position_list)
u
is an external unit identifier. The value of u must not be an asterisk or a Hollerith constant.
position_list
is a list that must contain one unit specifier ([UNIT=]u) and can also contain one of each of the other valid specifiers:
[UNIT=] u
is a unit specifier in which u must be an external unit identifier whose value is not an asterisk. An external unit identifier refers to an external file that is represented by an integer expression. The integer expression has one of the following values: If the optional characters UNIT= are omitted, u must be the first item in position_list.
ERR= stmt_label
is an error specifier that specifies the statement label of an executable statement in the same scoping unit to which control is to transfer in the case of an error. Coding the ERR= specifier suppresses error messages.
IOMSG= iomsg_variable (Fortran 2003)
is an input/output status specifier that specifies the message returned by the input/output operation. iomsg_variable is a scalar default character variable. It must not be a use-associated nonpointer protected variable. When the input/output statement containing this specifier finishes execution, iomsg_variable is defined as follows:
  • If an error, end-of-file, or end-of-record condition occurs, the variable is assigned an explanatory message as if by assignment.
  • If no such condition occurs, the value of the variable is unchanged.
IOSTAT= ios
is an input/output status specifier that specifies the status of the input/output operation. ios is an variable. When the BACKSPACE statement finishes executing, ios is defined with:
  • A zero value if no error condition occurs
  • A positive value if an error occurs.

Rules

After the execution of a BACKSPACE statement, the file position is before the current record if a current record exists. If there is no current record, the file position is before the preceding record. If the file is at its initial point, file position remains unchanged.

You cannot backspace over records that were written using list-directed or namelist formatting.

For sequential access, if the preceding record is the endfile record, the file is positioned before the endfile record.

If the ERR= and IOSTAT= specifiers are set and an error is encountered, transfer is made to the statement specified by the ERR= specifier and a positive integer value is assigned to ios.

If IOSTAT= and ERR= are not specified,
  • The program stops if a severe error is encountered.
  • The program continues to the next statement if a recoverable error is encountered and the ERR_RECOVERY run-time option is set to YES. If the option is set to NO, the program stops.

Examples

   BACKSPACE 15
   BACKSPACE (UNIT=15,ERR=99)
      ...
99 PRINT *, "Unable to backspace file."
   END

Related information