EXPERT RESPONSE
The 'Copy environment variables' parameter on the SBMJOB command does not copy a QTEMP library. It just copies the labels and values of the Qshell environment variables that you may have in your job. Use GO CMDENVVAR to see environment variable commands, if you are interested - but they won't help you here.
What you need to do is to make the file in QTEMP available to your submitted job by putting it into a proper library. When you create the file, name it using the job number of the creating (interactive, in you case) job - like this:
:
Dcl &JobNum *Char Len(6)
Dcl &File *Char Len(10)
:
:
RtvJobA Nbr(&JobNum)
:
:
ChgVar &File ('X' *CAT &JobNum)
CrtDupObj BaseFile BaseLib *File WorkLib &File Data(*No)
MonMsg CPF0000
:
:
SbmJob BatchJob Cmd(Call MyPgm Parm(&parm1 &parm2 &File)) ....
:
We pass the name of the file to the submitted job, which does its override and reads the file. Once it has finished processing, it will delete the file.
This technique is fine as long as the user does not run the program more than once between the interactive side creating the file and the batch side deleting it -- if that is likely to happen, you will have to devise a more unique naming method. Try involving a sequential number, and incrementing it if your interactive CL finds that a file with that name (X + Job number + Sequence) already exists:
:
Dcl &JobNum *Char Len(6)
Dcl &SeqNum *Dec Len(3 0) Value(0)
Dcl &SeqChr *Char Len(3)
Dcl &File *Char Len(10)
:
:
RtvJobA Nbr(&JobNum)
:
:
Loop:
ChgVar &SeqNum (&SeqNum + 1)
ChgVar &SeqChr (&SeqNum)
ChgVar &File ('X' *CAT &JobNum *CAT &SeqChr)
CrtDupObj BaseFile BaseLib *File WorkLib &File Data(*No)
MonMsg CPF0000 Exec(GoTo Loop)
:
:
SbmJob BatchJob Cmd(Call MyPgm Parm(&parm1 &parm2 &File)) ....
:
Another way to pass a list of data is in a User Space. This is a much more involved process, and requires the use of a number of IBM APIs. You still have to uniquely name the object and pass the name to the batch job.
Lastly, you could pass data using a 'pipe'. This is another API-based solution, and uses programs and techniques associated with Qshell. Best to stick with the file option, I think! ==================================
MORE INFORMATION ON THIS TOPIC
==================================
The Best Web Links: tips, tutorials and more.
Visit the ITKnowledge Exchange and get answers to your developing questions fast.
Ask the Experts yourself: Our application development gurus are waiting to answer your programming questions.
|