built-in shelf
#process-input
identifies the default input source that the system supplies to the OmniMark
program. This corresponds with what is usually referred to as standard input (or stdin
) on UNIX systems.
When the -term
command-line option is given, #process-input
is unavailable to
the program; attempts to access it will generate an error.
#process-input
explicitly identifies a source of input, and can be used as the scanning source
in:
do scan
repeat scan
string source
function of a do sgml-parse
scan
source of a do sgml-parse
submit
The use of #process-input
is subject to the following constraints:
do scan
, repeat
scan
, or submit
. If an attempt is made to use it more than once, an error will be
generated.
#process-input
is usually read incrementally, meaning that the contents of the stream are
not all buffered in memory before processing begins. In some situations, however, this is not the case. If you
use #process-input
as a string
expression (for example: length of #process-input
),
as a passed value
argument in a function, or as part of a concatenated string (for example: set
this-string to str-var || #process-input
), the entire contents of #process-input
will be
read into memory.
Note that #process-input
represents a stream of data that is being dynamically generated by a
process outside your program (such as another application or the keyboard). Any attempt to read
#process-input
as a whole will block until the end of the input is signaled by the outside process (such
as by the user typing Ctrl-D
on the keyboard). In most cases you will want to make sure you
read #process-input
incrementally.