### 6.9 File Handles ¶

A file handle is a reference to a data file, system file, or portable file. Most often, a file handle is specified as the name of a file as a string, that is, enclosed within ‘`'`’ or ‘`"`’.

A file name string that begins or ends with ‘`|`’ is treated as the name of a command to pipe data to or from. You can use this feature to read data over the network using a program such as ‘`curl`’ (e.g. `GET '|curl -s -S http://example.com/mydata.sav'`), to read compressed data from a file using a program such as ‘`zcat`’ (e.g. `GET '|zcat mydata.sav.gz'`), and for many other purposes.

PSPP also supports declaring named file handles with the `FILE HANDLE` command. This command associates an identifier of your choice (the file handle’s name) with a file. Later, the file handle name can be substituted for the name of the file. When PSPP syntax accesses a file multiple times, declaring a named file handle simplifies updating the syntax later to use a different file. Use of `FILE HANDLE` is also required to read data files in binary formats. See FILE HANDLE, for more information.

In some circumstances, PSPP must distinguish whether a file handle refers to a system file or a portable file. When this is necessary to read a file, e.g. as an input file for `GET` or `MATCH FILES`, PSPP uses the file’s contents to decide. In the context of writing a file, e.g. as an output file for `SAVE` or `AGGREGATE`, PSPP decides based on the file’s name: if it ends in ‘`.por`’ (with any capitalization), then PSPP writes a portable file; otherwise, PSPP writes a system file.

INLINE is reserved as a file handle name. It refers to the “data file” embedded into the syntax file between `BEGIN DATA` and `END DATA`. See BEGIN DATA, for more information.

The file to which a file handle refers may be reassigned on a later `FILE HANDLE` command if it is first closed using `CLOSE FILE HANDLE`. See CLOSE FILE HANDLE, for more information.