|
On Tue, 10 Sep 2002, JJW wrote: > > Hello *ALL > Hello *REQUESTER > If I have an RPG-ILE program called ABC running in batch > and it uses the SBMJOB command from within ABC to submit > an RPG-ILE program called XYZ how can I determine what the > job number of XYZ is? I'm running on V5R1 if it matters. > It returns a CPC1221 message, the job info is in the first 26 bytes. Here's a utility that I use for this, it submits a job and then returns the job number: H DFTACTGRP(*NO) ACTGRP(*NEW) D util_submit PR 10I 0 D peName 10A const varying D peJobQ 10A const varying D peCmd 400A const varying D peSbmName 10A options(*nopass) D peSbmUser 10A options(*nopass) D peSbmNo 6A options(*nopass) D msg s 52A D Job s 10A D User s 10A D Number s 6A c if util_submit('MESSAGE': 'QSYSNOMAX': c 'SNDMSG MSG(''Hello World!'') ' + c 'TOUSR(KLEMSCOT)': c Job: User: Number) < 0 c eval msg = 'failed!' c dsply msg c endif c eval msg = 'Job = ' + c %trim(Number) + '/' + c %trim(User) + '/' + c %trim(Job) c dsply msg c eval *inlr = *on *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * util_submit: Submit a job to a job queue * * peName = name of job to submit * peJobQ = Queue to submit to * peCmd = Command to submit * peSbmName = name returned by the submit job command * peSbmUser = user returned by the submit job command * peSbmNo = job number returned by the submit job command * * Returns 0 if successful, or -1 if it failed *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ P util_submit B export D util_submit PI 10I 0 D peName 10A const varying D peJobQ 10A const varying D peCmd 400A const varying D peSbmName 10A options(*nopass) D peSbmUser 10A options(*nopass) D peSbmNo 6A options(*nopass) D QCMDEXC PR ExtPgm('QCMDEXC') D peCommand 500A const D peLength 15P 5 const D QMHRCVPM PR ExtPgm('QMHRCVPM') D MsgInfo 32766A options(*varsize) D MsgInfoLen 10I 0 const D Format 8A const D StackEntry 10A const D StackCount 10I 0 const D MsgType 10A const D MsgKey 4A const D WaitTime 10I 0 const D MsgAction 10A const D ErrorCode 32766A options(*varsize) D dsM1 DS D dsM1_BytRtn 10I 0 D dsM1_BytAvl 10I 0 D dsM1_MsgSev 10I 0 D dsM1_MsgID 7A D dsM1_MsgType 2A D dsM1_MsgKey 4A D dsM1_Reserv1 7A D dsM1_CCSID_st 10I 0 D dsM1_CCSID 10I 0 D dsM1_DtaLen 10I 0 D dsM1_DtaAvl 10I 0 D dsM1_Dta 256A D dsEC DS D dsECBytesP 1 4I 0 INZ(%size(dsEC)) D dsECBytesA 5 8I 0 INZ(0) D dsECMsgID 9 15 D dsECReserv 16 16 D dsECMsgDta 17 256 D wwMsgKey S 4A D wwJobNo S 26A C******************************************* C* Submit the job C******************************************* c callp(e) QCMDEXC('SBMJOB CMD(' + peCmd + ') ' + c 'JOBQ(' + peJobQ +') ' + c 'JOB(' + peName+ ')': 500) c if %error c return -1 c endif C******************************************* C* Look for a success message C******************************************* c eval wwMsgKey = *ALLx'00' c dou dsECBytesA>0 or dsM1_MsgID='CPC1221' c callp QMHRCVPM(dsM1: %size(dsM1): 'RCVM0100': c '*': 0: '*PRV': wwMsgKey: 0: '*SAME': c dsEC) c eval wwMsgKey = dsM1_MsgKey c enddo c if dsECBytesA>0 c return -1 c endif C******************************************* C* Grab the job info from the response C******************************************* c if dsM1_DtaAvl >= 26 c eval wwJobNo = %subst(dsM1_Dta:1:26) c else c eval wwJobNo = *blanks c endif c if %parms >= 4 c eval peSbmName = %subst(wwJobNo:1:10) c endif c if %parms >= 5 c eval peSbmUser = %subst(wwJobNo:11:10) c endif c if %parms >= 6 c eval peSbmNo = %subst(wwJobNo:21:6) c endif c return 0 P E
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.