BACKGROUND Verb - Operate Current Program in Background
Syntax
BACKGROUND str{,ERR=lineref}
Description
The BACKGROUND verb, if available on the local operating system, (see
the specific operating system manual for more information) allows the
current program to continue operating in the background and starts a new
foreground task attached to the current terminal (Note that the BACKGROUND
Verb is not supported in a Windows environment).
The background process stops if an untrapped error occurs; therefore, trap
and log all errors in the application code.
Parameter |
Description |
---|---|
str |
Program to start as the new foreground process. The new foreground process communicates with the user and inherits the original FID(0), but no other files or devices are left open. |
ERR=lineref |
Branch to be taken if an error occurs during execution. |
The "background" process retains all original files, devices,
programs, and data, except that the device "IO" is now associated
with channel 0. A READ or INPUT from channel 0 in the background program
always returns an !ERROR=2. WRITE and
PRINT are permitted to finish; however, the output data is lost. A FIN(0)
call returns the data associated with device "IO". STBL data
and the options vector are retained on both processes.
Notes for developers using the BACKGROUND verb:
The program executing the BACKGROUND verb can be thought of as being replaced with a different program in the foreground, while continuing to execute in the background. Therefore, all OPENed files and pipes are passed to the background process and are no longer available to the program in the foreground. Locked records (using EXTRACT) may not remain locked during the transition to the background.
The background process is, in a sense, the "same" program that was running in the foreground. It is, however, a different process and can have a different process ID to the operating system. Any system relying on the process ID (such as in a "lock file") may not function properly after the BACKGROUND verb is used.
In general, programs that use the BACKGROUND verb should not rely on either the parent's or the child's process ID remaining the same.
C-ISAM files are controlled only by a library linked to PRO/5. The behavior of a C-ISAM file opened before a BACKGROUND verb is not predictable. Only open C-ISAM files after the execution of a BACKGROUND verb.
Examples
2030 BACKGROUND "MENU"