Hello Daniel, As I said in previous posting your explanation helpsme
to configure the queue as I want. But now in Line 17, I want to add a
sentence to email the text file and for that I want to use the UserId,
but I notice that always SYSTEM(1015) returns the userid of the user
that creates the Queue:

1. ) WITH USER ADMINISTRATOR:

SP-CREATE F1 PROG PRINT.PROG
SP-TYPE custom0

2.) With USER USER01

SP-ASSIGN =F1
LIST EMPLOYEES (P

Always Line 05 (id =
SYSTEM(18):"_":SYSTEM(1015):"_":DATE():"_":TIME():'_':SYSTEM(9))
returns a name with ADMINISTRATOR as a user.

I did try creating a Environment Variable USERID for profile's user
USER01, but when the program PRINT.PROG execute
getenv('USERID",l_userid) it return the value of the variable for the
profile's user Administrator when was created the queue.

Dou you have one method to work around this?

Thanks in advance for your help.

On Aug 11, 12:59 pm, Daniel Klein <[email protected]> wrote:
> In that case, don't use it ;-)  Instead do something like this:
>
> Start out with the following code (you can embellish it as you see fit) :
>
> 001     PROGRAM jprint
> 002     INCLUDE JBC.h
> 003     EQU underscores TO '__'
> 004 * create a unique item-id by concatenating:
> port_username_date_time_milliseconds
> 005     id = SYSTEM(18):"_":SYSTEM(1015):"_":DATE():"_":TIME():'_':SYSTEM(9)
> 006     tempdirname = '/tmp' *  or any directory with 'write' permissions
> ('c:\temp' on Windows)
> 007     OPEN tempdirname TO tempdir ELSE STOP 201, tempdirname
> 008     OPENSEQ tempdirname:DIR_DELIM_CH:id TO outstream ELSE NULL
> 009     LOOP
> 010         INPUT line
> 011     UNTIL INDEX(line, underscores:"end":underscores, 1) DO
> 012 ****line := CHAR(13) ;* this line is only needed for Windows
> 013         WRITESEQ line ON outstream ELSE NULL
> 014     REPEAT
> 015     WEOFSEQ outstream ELSE NULL
> 016     CLOSESEQ outstream
> 017     * Now do whatever is required with the file; the item-id of this
> file is:
> 018     *          tempdirname:DIR_DELIM_CH:id
> 019     DELETE tempdir, id  ;* remove the text file
>
> Note that the program is creating a sequential file from the spooler's
> output. At line 017 you have now 'captured' the entire spooler entry as a
> text file in the directory designated on line 006. You can now add
> additional code after line 018 to modify the print job as required.
> Alternatively, you could modify the lines of the print job (just before the
> WRITESEQ on line 013) as they are being built. Keeping line 019 is up to
> you, but should you decide not to use it then some other part of the
> application will be responsible for clean up.
>
> Compile and catalog the program and take note of the directory where the
> executable lives; let's assume for this example that the directory is
> '/home/bin'.
>
> You will need to define a formqueue (or redefine the 'device' for an
> existing formqueue), something like:
>
> SP-CREATE NEW_QUEUE PROG /home/bin/jprint
> or
> SP-DEVICE EXISTING_QUEUE PROG /home/bin/jprint
>
> Note that it is 'programmatically' executing the 'jprint' program above. Be
> sure to supply a full path to the 'jprint' program to avoid conflicts with
> any other program that may be called that now or in the future.
>
> Important: This technique requires that the form-type (see
> $JBCRELEASEDIR/config/jspform_deflt for details) assigned to the queue
> defines :
>
> ENDJOB echo \"\n__end__\n\"
>
> so that the program knows when to stop accepting INPUT. Note that the
> 'echo'd string must exactly match what is expected in the 'jprint' program,
> otherwise the output will be truncated at the point it encounters this
> string. So change it in both places (the program and the form-type)
> according to your needs.
>
> You will also need 'openseq_creates = true' in Config_EMULATE; otherwise you
> will need additional logic in the program to create the sequential file.
>
> All that's left to do is to assign the form-type to the required form
> queues, then
>
>  SP-ASSIGN =NEW_QUEUE    [or whatever the actual queue name is]
>  LIST MyFile LPTR
>
> Hope some of this helps, and have a nice day!
>
> Dan
>
> On Wed, Aug 11, 2010 at 9:08 AM, jlogdup <[email protected]> wrote:
> > Good Morning, I am trying to implement a queue to send printing job to
> > a file using a program that I found in this forum:
>
> > PROMPT ''
> > ID = TRIM(UPCASE(SYSTEM(1015))):".TXT"
> > DIRECTORY = 'E:\temp'
> > OPENSEQ DIRECTORY,ID TO S.FILE THEN NULL
> > *
> > LOOP
> >  NUMCHARS = SYSTEM(14)
> >  WHILE NUMCHARS DO
> >   INPUT LINE,NUMCHARS
> >   LINE := CHAR(13)
> >   WRITESEQ LINE ON S.FILE ELSE NULL
> > REPEAT
> > WEOFSEQ S.FILE ELSE NULL
> > CLOSESEQ S.FILE
>
> > But it is not working because SYSTEM(14) always returns 0.
> > I found, also in this forum, that SYSTEM(14) does not pass the input
> > buffer count when it is run in 3.4.x using the spooler under TELNET.
>
> > How can work around this issue to substitute SYSTEM(14) ?
>
> > THANKS IN ADVANCE FOR YOUR HELP.
>
> > --
> > 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