The PSM$PRINT routine invokes the OpenVMS-supplied print symbiont. PSM$PRINT must be called exactly once after all user service routines have been specified using PSM$REPLACE. Format PSM$PRINT [streams] [,bufsiz] [,worksiz] [,maxqios] [,options]
1 – Returns
OpenVMS usage:cond_value type: longword (unsigned) access: write only mechanism: by value Longword condition value. Most utility routines return a condition value in R0. Condition values that this routine can return are listed under Condition Values Returned.
2 – Arguments
streams OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Maximum number of streams that the symbiont is to support. The streams argument is the address of a longword containing this number, which must be in the range of 1 to 16. If you do not specify streams, a default value of 1 is used. Thus, by default, a user-modified symbiont supports one stream, which is to say that it is a single-threaded symbiont. A stream (or thread) is a logical link between a print execution queue and a printing device. When a symbiont process can accept simultaneous links to more than one queue, that is, when it can service multiple queues simultaneously, the symbiont is said to be multithreaded. bufsiz OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Maximum buffer size in bytes that the print symbiont is to use for output operations. The bufsiz argument is the address of a longword containing the specified number of bytes. The print symbiont actually uses a buffer size that is the smaller of: (1) the value specified by bufsiz or (2) the system parameter MAXBUF. If you do not specify bufsiz, the print symbiont uses the value of MAXBUF. The print symbiont uses this size limit only for output operations. Output operations involve the placing of processed or formatted pages into a buffer that will be passed to the output routine. The print symbiont uses the value specified by bufsiz only as an upper limit; most buffers that it writes will be smaller than this value. worksiz OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Size in bytes of a work area to be allocated for the use of user routines. The worksiz argument is the address of a longword containing this size in bytes. If you do not specify worksiz, no work area is allocated. A separate area of the specified size is allocated for each active symbiont stream. maxqios OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Specifies the maximum number of outstanding $QIOs that a print symbiont stream using the LAT protocol may generate. Set symbiont process quotas large enough to handle the maximum number of QIOs multiplied by the number of streams, using a number between 2 and 32. For normal printing capabilities, the suggested quota is 10; for high-speed printing, use a larger number. options OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Longword bit vector that specifies the LAT protocal option using the PSM$M_LAT_PROTOCOL symbolic value. Note that using the LAT_ PROTOCOL option carries the following restrictions: o Replacement of the output and job completion routines will be overridden o Output device must be a LAT device
3 – Description
The PSM$PRINT routine must be called exactly once after all user routines have been specified to the print symbiont. Each user routine is specified to the symbiont in a call to the PSM$REPLACE routine. The PSM$PRINT routine allows you to specify whether the print symbiont is to be single-threaded or multithreaded, and if multithreaded, how many streams or threads it can have. In addition, this routine allows you to control the maximum size of the output buffer.
4 – Condition Values Returned
SS$_NORMAL Normal successful completion. This routine also returns any condition values returned by the $SETPRV, $GETSYI, $PURGWS, and $DCLAST system services, as well as any condition values returned by the SMB$INITIALIZE routine.