Library: I/O exception support (OMIOE legacy)
define external function set-voluntary-end-exception value io-exception ex
This function allows you to set the "voluntary end" status in an "io-exception" status. The "voluntary end" status allows an OmniMark program to signal an external source that it is to immediately return end-of-input, causing the OmniMark program to exit from any
set that may be using the source. This means that OmniMark programs don't have to consume large sources beyond the point at which they determine that they've found what they're looking for.
; Using "set-voluntary-end-exception" to recognize and act on a data-encoded ; stream end mark (in this case "Control-Z"). The global declaration and ; process rule indicate how the source scanned by the find rule, and the ; io-exception used by it would be set up. ; This example also uses "get-exception-status" and "io-exception-text" to report ; errors (exceptions other than the voluntary end) in using the source. global io-exception input-exception process submit input-file "myfile.txt" exceptions-to input-exception do when get-exception-status input-exception != (0 | IOException_VoluntaryEOF) put #error "Error on myfile.txt:%n" || io-exception-text get-exception-status input-exception done find "%26#" ; Control-Z set-voluntary-end-exception input-exception