Spooler Plus Programmer's Guide
Sample Print Process
Spooler Plus Programmer’s Guide—522293-003
A-2
.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);
INT .device;