Guardian Procedure Calls Reference Manual

ID of the new process is the same as the user ID of the program file's owner and the new
process is always local.
I/O error to the home terminal
An I/O error to the home terminal can occur if there are undefined externals in the program
file and PROCESS_LAUNCH_ is unable to open or write to the home terminal to display the
undefined externals messages. The error-detail parameter contains the file-system error
number that resulted from the open or write that failed.
Nowait Considerations
If you call this procedure in a nowait manner, the results are returned in the nowait
PROCESS_LAUNCH_ or PROCESS_CREATE_ completion message (-102), not the output
parameters of the procedure. The format of this completion message is described in the
Guardian Procedure Errors and Messages Manual. If error is not 0, no completion message
is sent to $RECEIVE. Errors can be reported either on return from the procedure, in which case
error and error-detail might be meaningful, or through the completion message sent
to $RECEIVE.
DEFINE Considerations
DEFINEs are propagated to the new process from the process context of the caller, from a
caller-supplied buffer containing DEFINEs collected by calls to DEFINESAVE, or from both of
these. DEFINEs are propagated to the new process according to the DEFINE mode of the new
process and the propagation option specified in Z^CREATE^OPTIONS. If both sets of DEFINEs
are propagated and both sets contain a DEFINE with the same name, the DEFINE in the
caller-supplied buffer is used. When a caller is creating its backup, the caller's DEFINEs are
always propagated, regardless of the options chosen.
The =_DEFAULTS DEFINE is always propagated, regardless of the options chosen. If the
DEFINE buffer contains a =_DEFAULTS DEFINE, that one is propagated; otherwise, the
=_DEFAULTS DEFINE in the caller's context is propagated.
Buffer space for DEFINEs being propagated to a new process is limited to 2 MB whether the
process is local or remote. However, the caller can propagate only as many DEFINEs as the
child's PFS can accommodate in the buffer space for the DEFINEs themselves and in the
operational buffer space needed to do the propagation. The maximum number of DEFINEs
that can be propagated varies depending upon the size of the DEFINEs being passed.
When a process is created, its DEFINE working set is initialized with the default attributes of
CLASS MAP.
The Z^PROGRAM^NAME, Z^LIBRARY^NAME, Z^SWAPFILE^NAME, or
Z^EXTSWAPFILE^NAME fields can be DEFINE names; PROCESS_LAUNCH_ uses the disk
volume or file given in the DEFINE. If Z^PROGRAM^NAME is a DEFINE name but no such
DEFINE exists, an error is returned. If any of the other names is a DEFINE name but no such
DEFINE exists, the procedure behaves as if no name were specified. This feature of accepting
names of nonexistent DEFINEs as input gives the programmer a convenient mechanism that
allows, but does not require, user specification of the location of the library file, the swap file,
or the extended swap file.
For each process, a count is kept of the changes to that process' DEFINEs. This count is always
0 for newly-created processes. The count is incremented each time the procedures DEFINEADD,
DEFINEDELETE, DEFINESETMODE, and DEFINEDELETEALL are invoked and a consequent
change to the process context occurs. In the case of DEFINEDELETE and DEFINEDELETEALL,
the count is incremented by one even if more than one DEFINE is deleted. The count is also
incremented if the DEFINE mode of the process is changed. If a call to CHECKDEFINE causes
a DEFINE in the backup to be altered, deleted, or added, then the count for the backup process
is incremented.
PROCESS_LAUNCH_ Procedure 1075