3.2.49. STREAM(streamid[,option[,command]])

This function was added to REXX in language level 4.00. It
provides a general mechanism for doing operations on streams.
However, very little is specified about how the internal of this
function should work, so you should consult the implementation
specific documentation for more information.

The streamid identifies a stream. The actual contents and format
of this string is implementation dependent.

The option selects one of several operations which STREAM() is to
perform. The possible operations are:

[C]
     (Command) If this option is selected, a third parameter must
     be present, command, which is the command to be performed on
     the stream. The contents of command is implementation
     dependent. For Regina,  the valid commands follow. Commands
     consist of one or more space separated words.
[D]
     (Description) Returns a description of the state of streamid.
     The return value is implementation dependent.
[S]
     (Status) Returns a state which describes the state of
     streamid. The standard requires that it is one of the
     following: ERROR, NOTREADY, READY and UNKNOWN. The meaning of
     these are described in the chapter; Stream Input and Output.

Note that the options Description and Status really have the same
function, but that Status in general is implementation
independent, while Description is implementation dependent.

The command specifies the command to be performed on streamid. The
possible operations are:

[READ]
     Open for read access. The file pointer will be positioned at
     the start of the file, and only read operations are allowed.
     This command is Regina-specific; use OPEN READ in its place.
[WRITE]
     Open for write access and position the current write position
     at the end of the file.  An error is returned if it was not
     possible to get appropriate access. This command is Regina-
     specific; use OPEN WRITE in its place.
[APPEND]
     Open for append access and position the current write
     position at the end of the file.  An error is returned if it
     was not possible to get appropriate access. This command is
     Regina-specific; use OPEN WRITE APPEND in its place.
[UPDATE]
     Open for append access and position the current write
     position at the end of the file.  An error is returned if it
     was not possible to get appropriate access. This command is
     Regina-specific; use OPEN BOTH in its place.
[CREATE]
     Open for write access and position the current write position
     at the start of the file.  An error is returned if it was not
     possible to get appropriate access. This command is Regina-
     specific; use OPEN WRITE REPLACE in its place.
[CLOSE]
     Close the stream, flushing any pending writes. An error is
     returned if it was not possible to get appropriate access.
[FLUSH]
     Flush any pending write to the stream. An error is returned
     if it was not possible to get appropriate access.
[STATUS]
     Returns status information about the stream in human readable
     form that Regina stores about the stream.
[FSTAT]
     Returns status information from the operating system about
     the stream.
[RESET]
     Resets the stream after an error.  Only streams that are
     resettable can be reset.
[READABLE]
     Returns 1 if the stream is readable by the user or 0
     otherwise.
[WRITABLE]
     Returns 1 if the stream is writeable by the user or 0
     otherwise.
[EXECUTABLE]
     Returns 1 if the stream is executable by the user or 0
     otherwise.
[QUERY]
     Returns information about the named stream.  If the named
     stream does not exists, then the empty string is returned.
     This command is further broken down into the following sub-
     commands:
          DATETIME       returns the date and time of last
                         modification of the stream in Rexx US
                         Date format; MM-DD-YY HH:MM:SS.
          EXISTS         returns the fully-qualified file name of
                         the specified stream.
          HANDLE         returns the internal file handle of the
                         stream.  This will only return a valid
                         value if the stream was opened explicitly
                         or implicitly by Regina.
          POSITION READ  returns the current read position of the
                         open stream.  This is expressed in
                         characters, so returns the same value as
                         POSITION CHAR.
          POSITION WRITE returns the current write position of the
                         open stream.  This is expressed in
                         characters.
          POSITION CHAR  returns the current read position of the
                         open stream.  This is expressed in
                         characters.
          POSITION LINE  returns the current read position of the
                         open stream.  This is expressed in lines.
          POSITION SYS   returns the current read position of the
                         open stream as the operating reports it.
                         This is expressed in characters.
          SIZE           returns the size, expressed in
                         characters, of the persistent stream.
          STREAMTYPE     returns the type of the stream.  One of
                         TRANSIENT, PERSISTENT or UNKNOWN is
                         returned.
          TIMESTAMP      returns the date and time of last
                         modifcation of the stream.  The format of
                         the string returned is YYYY-MM-DD
                         HH:MM:SS.
[OPEN]
     Opens the stream in the optional mode specified. If no
     optional mode is specified, the default is OPEN BOTH.
          READ           The file pointer will be positioned at
                         the start of the file, and only read
                         operations are allowed.
          WRITE          Open for write access and position the
                         current write pointer at the end of the
                         file.  On platforms where it is not
                         possible to open a file for write without
                         also allowing reads, the read pointer
                         will be positioned at the start of the
                         file. An error is returned if it was not
                         possible to get appropriate access.
          BOTH           Open for read and write access. Position
                         the current read pointer at the start of
                         the file, and the current write pointer
                         at the end of the file.  An error is
                         returned if it was not possible to get
                         appropriate access.
          WRITE APPEND   Open for write access and position the
                         write pointer at the end of the file.  On
                         platforms where it is not possible to
                         open a file for write without also
                         allowing reads, the read pointer will be
                         positioned at the start of the file.
          WRITE REPLACE  Open for write access and position the
                         current write position at the start of
                         the file.  On platforms where it is not
                         possible to open a file for write without
                         also allowing reads, the read pointer
                         will be positioned at the start of the
                         file. This operation will clear the
                         contents of the file.  An error is
                         returned if it was not possible to get
                         appropriate access.
          BOTH APPEND    Open for read and write access. Position
                         the current read position at the start of
                         the file, and the current write position
                         at the end of the file.  An error is
                         returned if it was not possible to get
                         appropriate access.
          BOTH REPLACE   Open for read and write access. Position
                         both the current read and write pointers
                         at the start of the file.  An error is
                         returned if it was not possible to get
                         appropriate access.
          



PREV NEXT