|
|||||
declaration/definition | no-default-io | ||||
Syntax
declare no-default-io
The no-default-io
declaration is provided to make it easier for you to develop server and similar transaction-based applications in OmniMark. This declaration keeps the programs in which it is used from using environment features such as "standard input" and "standard output", because these features differ in their behavior between batch processing and server environments. The no-default-io
declaration allows you to maintain consistency in how these different types of programs run. Since no-default-io
programs don't have any established input sources or output destinations, these sources and destinations must be explicitly established within the program.
Note that the no-default-io
declaration cannot be used in any of the aided translation type programs.
Since no-default-io
programs do not have any established input sources or output destinations, the following streams cannot be used:
Additionally, neither the #process-input
nor #main-input
source can be used. The #command-line-names
shelf is still available in no-default-io
programs, but #main-input
is not bound to the files named in that shelf as it is in other programs.
Since the current output set (#current-output
) is not initially established, it is an error to use an output
action or to make any reference to #current-output
until a current output set is established. Note that the #current-output is attached
test is now available, allowing you to determine the current state of #current-output
prior to writing to it.
Error and status reporting in a no-default-io
program cannot be done by writing to #error
because any reference to this stream is an error. OmniMark provides the log-message
function (part of the #builtin function library) as a general mechanism for error and status reporting in a no-default-io
program.
---- |