There is a KEEP option in Universe that will keep the spooler file open no
matter what you do in BASIC, until the PRINTER OFF and PRINTER CLOSE.

So maybe try:

SETPTR 0,132,66,0,0,3,NFMT,NHEAD,BANNER UNIQUE,BRIEF,OPEN, KEEP

Althought looking at that command there, maybe thats what OPEN does...

There is a shot in the dark.  I don't know how different Unidata's SETPTR
may be from Universe's.  I just remember banging my head against the wall
on the KEEP option some years ago, until I found it.

On Fri, Jan 27, 2012 at 12:59 AM, Kevin King <precisonl...@gmail.com> wrote:

> I have a client running an SB+ application who has been experiencing a very
> strange issue with Unidata 7.2.8.  The situation is a little complex, but
> let me try to explain.
>
> We have this program that issues this SETPTR command and then captures the
> hold file number:
>
> SETPTR 0,132,66,0,0,3,NFMT,NHEAD,BANNER UNIQUE,BRIEF,OPEN
>
> This hold file is then generated and once it has been closed with:
>
> PRINTER OFF
> PRINTER CLOSE
> EXECUTE 'SP.CLOSE'
>
> ... the hold file is picked up and sent to a forms processor (Unform) for
> formatting, barcodes, and release to a specific printer.  All this is
> working just fine by itself.
>
> Following this (within the same SB+ login session), if the client runs any
> report (written in BASIC or SB+ /RD), the PCL for the report and the report
> content are sent to the printer in two separate spooler files, but only for
> the first run.  The printer receives the PCL document, sets up the printer,
> then there's nothing after that so it resets the printer, the next job
> prints without the PCL header and the fonts are the printer default rather
> than what was requested by the PCL.  If the report is run a second time,
> the PCL and content are output to the same spooler file and the report
> prints with the correct font.  If the customer drops to the colon TCL
> prompt between the first report and the second, the second report prints to
> a single hold file without any problems.
>
> We have traced this to the following:
>
> a) The subroutine that prints the report calls another subroutine that
> calls SH.PRINT.MANAGER which does a PRINTER ON, sends the PCL at the start
> of the job, and then PRINTER OFF (but no PRINTER CLOSE).  This subroutine
> then issues a PRINTER ON for the coming report.  The parameters sent into
> SH.PRINT,MANAGER basically cause the printer select window to be displayed
> where the printer and options can be selected.
> b) Back in the main subroutine, an EXECUTE 'GET-LIST something*' *is
> executed.
> c) The program then processes the records and prints the output.  When the
> first PRINT statement occurs, a second spooler entry is opened.
>
> Now here's where it gets weird.  If that first report with the
> SETPTR/SP.CLOSE combination is not run immediately before the second
> report, the second report will print to a single spooler file as expected.
>  Also, if the main program does not issue the EXECUTE command - any EXECUTE
> command (I've tried several) - the PCL and content are output in the same
> spooler file.  Note that the EXECUTE is happening after the PRINTER ON,
> though I have tried a PRINTER OFF before the EXECUTE with a PRINTER ON
> after it with the exact same (2 spooler file) result.  I have also tried
> temporarily relocating the PRINTER ON to follow the EXECUTE, and it still
> creates two spooler files.
>
> The subroutine that is being called from this report program is a
> vendor-written routine that is literally called from all over the system.
>  We have no ability to change this routine (other than for limited
> testing), at least not without impacting dozens if not hundreds of reports
> that use this routine.  Besides, the routine itself doesn't seem to have
> any issue.  Rather, the problem comes when there is a PRINTER ON followed
> by a PRINTER OFF followed by another PRINTER ON, but *only* if that
> original SETPTR/SP.CLOSE command was used to capture the hold file
> immediately prior to running any report.
>
> I've checked SETPTR at various stages of this testing and have found that
> the SETPTR settings when it works (generating a single spooler file) is
> identical to the SETPTR settings when it doesn't (generating two printer
> files).  Furthermore, the SETPTR settings when running the second report
> alone, without running this other one first, are identical to the settings
> if the SETPTR/SP.CLOSE report is run first.
>
> So if you've stuck with me for this long, please allow me to ask a couple
> of direct questions:
>
> * What is SP.CLOSE *really* doing?
> * Could it be that the original SETPTR or SP.CLOSE command is setting some
> flag somewhere in memory that is causing the next PRINTER OFF (i.e. the one
> in SH.PRINT.MANAGER that outputs the PCL) to implicitly do a PRINTER CLOSE?
>
> Any input or assistance would be most appreciated.
>
> -Kevin
> http://www.PrecisOnline.com
> _______________________________________________
> U2-Users mailing list
> U2-Users@listserver.u2ug.org
> http://listserver.u2ug.org/mailman/listinfo/u2-users
>



-- 
John Thompson
_______________________________________________
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to