.hd init$plg "force PL/I G i/o to recognize the Subsystem" 01/07/83
init$plg:  procedure;
.sp
Library:  vswtlb (standard Subsystem library)
.fs
A call to 'init$plg' from a PL/I G program attaches the
PL/I G file SYSIN
to the file open as standard input (either
disk or terminal) and attaches the PL/I G file SYSPRINT to the file
open as standard output (either disk or terminal).
.sp
To use 'init$plg', it must be declared in the main program,

.nf
   declare init$plg entry;
.fi

and then called before any executable statements:

.nf
   call init$plg;
.fi

.im
First 'init$plg' calls 'flush$' on standard input and standard output
to clean up any unfinished Subsystem I/O.
'Init$plg' then calls the Subsystem 'mapfd' to determine the Primos
file unit attached to standard input.  If 'mapfd' returns
a file descriptor, 'init$plg' opens SYSIN using that file
descriptor; otherwise, it opens SYSIN on the terminal.
The procedure
is then repeated for standard output and the PL/I G file SYSPRINT.
.ca
flush$, mapfd, mapsu, Primos p$open
.bu
Files redirected to /dev/null are not supported.

Output on SYSPRINT not followed by a line boundary (e.g. PUT SKIP)
will be ignored when the file is directed to disk.
It is usually best to terminate all programs
with a PUT SKIP to insure that this line boundary is present.
.sa
init$p (2), init$f (2)