% psprint uses this file to build an appropriate header file for each job. % It defines @bannerpage and redefines the PostScript error handler. statusdict begin /waittimeout 300 def end % wait 5 minutes /@oldpagecount statusdict begin pagecount end def /@bannerpage % called at end of job or upon error { initgraphics 36 0 translate % move origin to the right /vpos 800 def % initial vertical pos 0 vpos moveto % start near top left corner /newline { /vpos vpos 20 sub def % decrease vertical pos by 20pt 0 vpos moveto % move to start of new line } def /Courier findfont % Courier typewriter font 12 scalefont setfont % at 12pt (*********************** psprint 3.0 **********************) show newline @USER show newline @NODE show newline @FILE show newline @FORMAT show newline @QUEUED show newline (PAGES : ) show statusdict begin pagecount % current pagecount end @oldpagecount % pagecount saved at start of job sub ( ) cvs show newline % show pages printed @NOTE show newline % @status % uncomment to get status info /#copies 1 def % only 1 copy of banner page systemdict /showpage get exec } def % Uncomment the following (and above call) to get status info on banner page: % % /@oldusertime usertime def % save current usertime % /@status % show cache and VM status values % { newline % (CACHE STATUS) show newline % cachestatus % bsize bmax msize mmax csize cmax blimit % (blimit = ) show ( ) cvs show newline % (cmax = ) show ( ) cvs show newline % (csize = ) show ( ) cvs show newline % (mmax = ) show ( ) cvs show newline % (msize = ) show ( ) cvs show newline % (bmax = ) show ( ) cvs show newline % (bsize = ) show ( ) cvs show newline % newline % (VM STATUS) show newline % vmstatus % savelevel vmused vmmax % (vm max = ) show ( ) cvs show newline % (vm used = ) show ( ) cvs show newline % (save level = ) show ( ) cvs show newline % newline % (JOB TIME (secs) = ) show usertime @oldusertime sub 1000 div % ( ) cvs show % } def % Redefine the error handler in errordict to show a suitable error message. /@errpage 64 dict def @errpage begin /prnt { dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show } bind def /nl {currentpoint exch pop lmargin exch moveto 0 -11 rmoveto} def /== {/cp 0 def typeprint nl} def /typeprint { dup type dup currentdict exch known {exec}{unknowntype}ifelse } readonly def /lmargin 72 def /rmargin 72 def /tprint { dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp exch def prnt } readonly def /cvsprint {=string cvs tprint( )tprint} readonly def /unknowntype {exch pop cvlit(??)tprint cvsprint} readonly def /integertype {cvsprint} readonly def /realtype {cvsprint} readonly def /booleantype {cvsprint} readonly def /operatortype {(//)tprint cvsprint} readonly def /marktype {pop(-mark- )tprint} readonly def /dicttype {pop(-dictionary- )tprint} readonly def /nulltype {pop(-null- )tprint} readonly def /filetype {pop(-filestream- )tprint} readonly def /savetype {pop(-savelevel- )tprint} readonly def /fonttype {pop(-fontid- )tprint} readonly def /nametype {dup xcheck not{(/)tprint}if cvsprint} readonly def /stringtype { dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse } readonly def /arraytype { dup rcheck{dup xcheck {({)tprint{typeprint}forall(})tprint} {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse } readonly def /packedarraytype { dup rcheck{dup xcheck {({)tprint{typeprint}forall(})tprint} {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse } readonly def /courier /Courier findfont 10 scalefont def /@oldhandleerror errordict /handleerror get def % save current error handler end % of @errpage errordict /handleerror % redefine error handler { systemdict begin $error begin @errpage begin newerror { /newerror false store vmstatus pop pop 0 ne { grestoreall } if initgraphics courier setfont lmargin 792 moveto (POSTSCRIPT ERROR: ) prnt errorname prnt nl (OFFENDING COMMAND: ) prnt /command load prnt nl $error /ostack known { (OPERAND STACK:) prnt nl $error /ostack get aload length {==} repeat } if /#copies 1 store % print only one error page systemdict /showpage get exec userdict begin @bannerpage end % print banner page /newerror true store /@oldhandleerror load end end end exec } { end end end } ifelse } dup 0 systemdict put dup 4 @errpage put bind readonly put