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:

The use of #process-input is subject to the following constraints:

  • It can be processed only once in each run of a program, by 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.