Spooler Programmer's Guide
Sample Print Process
Spooler Programmer’s Guide—522287-002
A-2
 STRING
 .s^out^buf := @out^buf '<<' 1, ! string pointer to "out^buf"
 .s^data^line := @data^line '<<' 1; ! string pointer to 
 ! "data^line"
 STRUCT .header[0:14]; ! header array
 BEGIN
 INT line[0:59];
 END;
 LITERAL
 sending^status = 0, ! PRINTSTATUS message types
 dev^error^1 = 1, !
 end^job = 2, !
 cant^open^device = 3, !
 invalid^operation = 4, !
 dev^error^5 = 5, !
 max^read^count = 132, ! maximum PRINTREAD count
 data^file^error = %2000, ! spooler error codes
 device^file^error = %4000, !
 no^job^printing = %13002, !
 job^running = %13003, !
 tables^full = %13004; !
!SOURCE $SYSTEM.SYSTEM.EXTDECS ( ABEND, AWAITIO, CANCEL, CONTROL,
! CLOSE, FILEINFO, NUMOUT, OPEN, READ, SETMODE, STOP, TIME,
! WRITE, PRINTINIT, PRINTCOMPLETE, PRINTINFO, PRINTSTATUS,
! PRINTREAD, PRINTREADCOMMAND, PRINTSTART )
?NOLIST
?SOURCE $SYSTEM.SYSTEM.EXTDECS ( ABEND, AWAITIO, CANCEL, CONTROL,
? CLOSE, FILEINFO, NUMOUT, OPEN, READ, SETMODE, STOP, TIME,
? WRITE, PRINTINIT, PRINTCOMPLETE, PRINTINFO, PRINTSTATUS,
? PRINTREAD, PRINTREADCOMMAND, PRINTSTART )
?LIST
INT PROC openfile (fname, fnum, flags) VARIABLE;
 INT .fname,
 .fnum,
 flags;
 FORWARD;
INT PROC writefile (fnum, buf, write^count);
 INT fnum,
 .buf,
 write^count;
 FORWARD;
PROC tell^super (type, device, error, page, line, total^lines,
 num^copies) VARIABLE;
 INT type, ! required parameter
 .device, ! required parameter, name of the device
 error, ! required parameter for type 1, 2, 4, and 5
 page, ! required parameter for type 0; current
 ! page number
 line, ! required parameter for type 0; current
 ! line number
 total^lines, ! required parameter for type 0; total
 ! number of lines printed
 num^copies; ! required parameter for type 0; number of
 ! copies of the job remaining to be printed
 FORWARD;
PROC build^header;
 FORWARD;
PROC read^and^print (page^num, device);
 INT page^num,
 .device;
 FORWARD;
PROC open^dev (device);










