3.2.13. CHARIN([streamid][,[start][,length]])

This function will in general read characters from a stream, and
return a string containing the characters read. The streamid
parameter names a particular stream to read from. If it is
unspecified, the default input stream is used.

The start parameter specifies a character in the stream, on which
to start reading. Before anything is read, the current read
position is set to that character, and it will be the first
character read. If start is unspecified, no repositioning will be
done.  Independent of any conventions of the operating system, the
first character in a stream is always numbered 1. Note that
transient streams do not allow repositioning, and an error is
reported if the start parameter is specified for a transient
stream.

The length parameter specifies the number of characters to read.
If the reading did work, the return string will be of length
length. There are no other ways to how many characters were read
than checking the length of the return value. After the read, the
current read position is moved forward as many characters as was
read. If length is unspecified, it defaults to 1. If length is 0,
nothing is read, but the file might still be repositioned if start
was specified.

Note that this function read the stream raw. Some operating
systems use special characters to differ between separate lines in
text files.  On these systems these special characters will be
returned as well.  Therefore, never assume that this function will
behave identical for text streams on different systems.

What happens when an error occurs or the End-Of-File (EOF) is seen
during reading, is implementation dependent. The implementation
may choose to set the NOTREADY condition (does not exist in REXX
language level 3.50). For more information, see chapter on Stream
Input and Output .

(Assuming that the file “/tmp/file” contains the first line: “This
is the first line”):

CHARIN()            –>   ‘F’  /*Maybe*/
CHARIN(,,6)              –>   ‘Foobar’  /*Maybe*/
CHARIN(‘/tmp/file’,,6)   –>   ‘This i’
CHARIN(‘/tmp/file’,4,6)  –>   ‘s is t’



PREV NEXT