DEC-10 compatibility input/output
Author: Daniel Diaz
Keywords: GNU Prolog, manual, Prolog, compiler, constraints, finite domains

### 8.16 DEC-10 compatibility input/output

- Introduction
- see/1, tell/1, append/1
- seeing/1, telling/1
- seen/0, told/0
- get0/1, get/1, skip/1
- put/1, tab/1

#### 8.16.1 Introduction

The DEC-10 Prolog I/O predicates manipulate streams implicitly since they only refer to current input/output streams (section 8.10.1). The current input and output streams are initially set to user_input and user_output respectively. The predicate see/1 (resp. tell/1, append/1) can be used for setting the current input (resp. output) stream to newly opened streams for particular files. The predicate seen/0 (resp. told/0) close the current input (resp. output) stream, and resets it to the standard input (resp. output). The predicate seeing/1 (resp. telling/1) is used for retrieving the file name associated with the current input (resp. output) stream. The file name user stands for the standard input or output, depending on context (user_input and user_output can also be used). The DEC-10 Prolog I/O predicates are only provided for compatibility, they are now obsolete and their use is discouraged. The predicates for explicit stream manipulation should be used instead (section 8.10).

#### 8.16.2 see/1, tell/1, append/1

Templates

  see(+source_sink)
  see(+stream)
  tell(+source_sink)
  tell(+stream)
  append(+source_sink)
  append(+stream)

Description

see(FileName) sets the current input stream to FileName. If there is a stream opened by see/1 associated with the same FileName already, then it becomes the current input stream. Otherwise, FileName is opened for reading and becomes the current input stream.

tell(FileName) sets the current output stream to FileName. If there is a stream opened by tell/1 associated with the same FileName already, then it becomes the current output stream. Otherwise, FileName is opened for writing and becomes the current output stream.

append(FileName) like tell/1 but FileName is opened for writing + append.

A stream-term (obtained with any other built-in predicate) can also be provided as FileName to these predicates.

Errors

See errors associated with open/4 (section 8.10.6).

Portability

GNU Prolog predicates. Deprecated.

#### 8.16.3 seeing/1, telling/1

Templates

  seeing(?source_sink)
  telling(?source_sink)

Description

seeing(FileName) succeeds if FileName unifies with the name of the current input file, if it was opened by see/1; else with the current input stream-term, if this is not user_input, otherwise with user.

telling(FileName) succeeds if FileName unifies with the name of the current output file, if it was opened by tell/1 or append/1; else with the current output stream-term, if this is not user_output, otherwise with user.

Errors

None.

Portability

GNU Prolog predicates. Deprecated.

#### 8.16.4 seen/0, told/0

Templates

  seen
  told

Description

seen closes the current input, and resets it to user_input.

told closes the current output, and resets it to user_output.

Errors

None.

Portability

GNU Prolog predicates. Deprecated.

#### 8.16.5 get0/1, get/1, skip/1

Templates

  get0(?in_character_code)
  get(?in_character_code)
  skip(+character_code)

Description

get0(Code) succeeds if Code unifies with the next character code read from the current input stream. Thus it is equivalent to get_code(Code) (section 8.12.1).

get(Code) succeeds if Code unifies with the next character code read from the current input stream that is not a layout character.

skip(Code) skips just past the next character code Code from the current input stream.

Errors

See errors for get_code/2 (section 8.12.1).

Portability

GNU Prolog predicates. Deprecated.

#### 8.16.6 put/1, tab/1

Templates

  put(+character_code)
  tab(+evaluable)

Description

put(Code) writes the character whose code is Code onto the current output stream. It is equivalent to put_code(Code) (section 8.12.5).

tab(N) writes N spaces onto the current output stream. N may be an arithmetic expression.

Errors

See errors for put_code/2 (section 8.12.5) and for arithmetic expressions (section 8.6.1).

Portability

GNU Prolog predicates. Deprecated.

Copyright (C) 1999-2021 Daniel Diaz Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. More about the copyright