While I agree that my solution requires a dedicated print queue (which could
be abstracted of course), it has the advantage of having only 1 moving part.

Dan

On Sun, Sep 26, 2010 at 4:09 PM, Simon Verona <[email protected]>wrote:

>  Dan
>
> I've always used an alternative technique for getting spool jobs from the
> spooler, take this code for example :
>
> TESTREP
> 001     Command=SENTENCE()
> 002     Command=Command[LEN(FIELD(SENTENCE(),' ',1))+2,999]
> 003
> 004     EXECUTE 'SP-ASSIGN HF0'
> 005     EXECUTE Command
> 006
> 007     PrintJobNo=SYSTEM(20)     ;*** This is the last print job no
> 008     DATA 'D:\DMS\OUTGOING FILE.TXT'
> 009     EXECUTE 'SP-EDIT ':PrintJobNo:' (I'
>
> This code will create a file d:\dms\outgoing\file.txt from pretty much any
> command that will generate a print...
>
> eg TESTREP LIST ONLY MD (P
>
> You can then open and parse the file in a loop, redisplaying as necessary.
> This has the benefit of not requiring a dedicated print spool queue....
>
> I use this technique for all sorts of things.. Including a LISTCSV command,
> which will do a report and then convert it to a csv file for loading
> directly in excel..
>
>
> So taking the above code, you can easily do an OPENSEQ on the file, and
> then a READSEQ and parse just as you have.
>
> eg :
>
> 001 INCLUDE JBC.H
> 002 EXECUTE 'SP-ASSIGN HF0;
> 003 EXECUTE 'SORT TRANS BY DATE BREAK-ON DATE "'VL'" TOTAL 2 (D)'
> 004 tmpFile= 'tmpfile.txt'   ; *** for jbase 3.4 - use  
> CHANGE(UNIQUEKEY(),'/',']2F')
> on 4.1
> 005 DATA 'C:\TEMP ':tmpFile
> 006 EXECUTE 'SP-EDIT ':SYSTEM(20):' (I'
> 007 OPENSEQ 'C:\TEMP\':tmpFile TO File ELSE STOP
> 008 Eof=0
> 009 LOOP
> 010     READSEQ Line FROM File ELSE Eof=1
> 011 UNTIL Eof DO
> 012    IF INDEX(Line,'0.00',1)=0 ELSE CRT Line
> 012 REPEAT
> 013 CLOSESEQ File
> 012 EXECUTE 'DEL C:\TEMP\':tmpFile
>
> I think this solution is equal in effect to yours?
>
> My solution works
>
> Simon
>
>
> On 26/09/2010 20:11, Daniel Klein wrote:
>
> I've posted this code in one form or another before, so I'm not going to go
> into long explanations on the how's and why's; you can search
> http://jbase.markmail.org if you are interested. Or you can email me
> off-list to my gmail.com address: danielkleinad
>
> Simply put, all this program is doing is grabbing the spooler output and
> sending it to a file. However, it is also doing something 'special' with
> each line of the report (see program lines 19 thru 21); it is testing the
> required condition in order to process the 'line'. IOW, it will
> 'print' every line (iow send the line to the sequential file) that does NOT
> contain a '0.00' in it. If your report is more complex than what you posted
> then you will have to parse each line as necessary to determine whether or
> not the 'line' gets 'processed'.
>
> [Note: lines 9 and 11 to 13 only work on jBASE 4.1 and above. Let me know
> if you need a jBASE 3 solution.]
>
> 0001     PROGRAM jlp_special
> 0002 * Redirects spooler output to a text file
> 0003 *
> 0004 * Create spooler queue with something like: SP-CREATE TEXTFILE PROG
> c:\home\bin\jlp_special.exe
> 0005 * Where:
> 0006 *    'c:\home\bin' is the directory where the 'jlp_special' executable
> lives
> 0007 *
> 0008     INCLUDE JBC.h
> 0009     id = CHANGE(UNIQUEKEY(),'/',']2F')
> 0010     tempdirname = 'c:\temp'   ;* This dir must have 'read/write'
> permissions
> 0011     OPENSEQ tempdirname:DIR_DELIM_CH:id TO outstream ELSE
> 0012         CREATE tempdirname:DIR_DELIM_CH:id ELSE NULL
> 0013     END
> 0014     LOOP
> 0015         numchars = SYSTEM(14)
> 0016     WHILE numchars DO
> 0017         INPUT line, numchars
> 0018         line := CHAR(13)      ;* This line is only needed for Windows
> I think
> 0019         IF INDEX(line,"0.00",1) ELSE
> 0020             WRITESEQ line ON outstream ELSE NULL
> 0021         END
> 0022     REPEAT
> 0023     WEOFSEQ outstream ELSE NULL
> 0024     CLOSESEQ outstream
> 0025
> 0026 *---At this point we have the file saved as
> 'tempdirname:DIR_DELIM_CH:id'
> 0027 *---so we can do whatever we want with it.
> 0028 *---Typically you would EXECUTE some command against this file.
> 0029 *---For example, you could build up a command to email the file, or
> convert the file to PDF.
> 0030
> 0031 *---Finally remove the temporary file...
> 0032     OPEN tempdirname TO tempdir THEN DELETE tempdir, id
>
>  I don't know if you would consider this 'integrated' but, given the tools
> you have at hand, it's the closest you are going to come to it.
>
> Dan
>
>  On Sun, Sep 26, 2010 at 10:36 AM, Simon Verona <[email protected]>wrote:
>
>>  Dan
>>
>> There seems to be an iphone app for everything else....
>>
>> I can (and do) spool and process the file, just wondered it there was a
>> more "integrated" way of doing it!
>>
>> Regards
>> Simon
>>
>> On 26/09/2010 14:12, Daniel Klein wrote:
>>
>> There's no iphone app that will do that? ;-)
>>
>>  Seriously, you would spool the report to a file and then post-process
>> the file.
>>
>>  Dan
>>
>>
>> On Sun, Sep 26, 2010 at 7:00 AM, Simon Verona <[email protected]>wrote:
>>
>>>  Hi all
>>>
>>> This may or may not be a stupid question.
>>>
>>> I have a transaction file, with many thousands of entries in, which
>>> should total zero both on a daily basis (there is a date field in the file)
>>> and overall.
>>>
>>> If I have a problem, then a check is to find which dates do not come back
>>> to zero...
>>>
>>> So, I execute a jQL query like :
>>>
>>> SORT TRANSACTIONS BY DATE BREAK-ON DATE "'VL'" TOTAL 2 (D)
>>>
>>> Which produces a list like  :
>>>
>>>               02/07/2010       0.00
>>>               01/07/2010       0.00
>>>               30/06/2010       0.00
>>>               29/06/2010    -585.31
>>>               28/06/2010       0.00
>>>               27/06/2010       0.00
>>>                etc etc
>>>
>>> All I want to see though is the dates that don't come to zero....
>>>
>>> Can this be done using jQL?
>>>
>>> Thanks
>>> Simon
>>>
>>> --
>>> Please read the posting guidelines at:
>>> http://groups.google.com/group/jBASE/web/Posting%20Guidelines
>>>
>>> IMPORTANT: Type T24: at the start of the subject line for questions
>>> specific to Globus/T24
>>>
>>> To post, send email to [email protected]
>>> To unsubscribe, send email to [email protected]
>>> For more options, visit this group at
>>> http://groups.google.com/group/jBASE?hl=en
>>>
>>
>>  --
>> Please read the posting guidelines at:
>> http://groups.google.com/group/jBASE/web/Posting%20Guidelines
>>
>> IMPORTANT: Type T24: at the start of the subject line for questions
>> specific to Globus/T24
>>
>> To post, send email to [email protected]
>> To unsubscribe, send email to [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/jBASE?hl=en
>>
>>
>>  --
>> Please read the posting guidelines at:
>> http://groups.google.com/group/jBASE/web/Posting%20Guidelines
>>
>> IMPORTANT: Type T24: at the start of the subject line for questions
>> specific to Globus/T24
>>
>> To post, send email to [email protected]
>> To unsubscribe, send email to [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/jBASE?hl=en
>>
>
> --
> Please read the posting guidelines at:
> http://groups.google.com/group/jBASE/web/Posting%20Guidelines
>
> IMPORTANT: Type T24: at the start of the subject line for questions
> specific to Globus/T24
>
> To post, send email to [email protected]
> To unsubscribe, send email to [email protected]
> For more options, visit this group at
> http://groups.google.com/group/jBASE?hl=en
>
>
>  --
> Please read the posting guidelines at:
> http://groups.google.com/group/jBASE/web/Posting%20Guidelines
>
> IMPORTANT: Type T24: at the start of the subject line for questions
> specific to Globus/T24
>
> To post, send email to [email protected]
> To unsubscribe, send email to [email protected]
> For more options, visit this group at
> http://groups.google.com/group/jBASE?hl=en
>

-- 
Please read the posting guidelines at: 
http://groups.google.com/group/jBASE/web/Posting%20Guidelines

IMPORTANT: Type T24: at the start of the subject line for questions specific to 
Globus/T24

To post, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/jBASE?hl=en

Reply via email to