× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Thanks to everyone for all the replies!!!

----- Original Message -----
From: "Scott Klement" <klemscot@klements.com>
To: <rpg400-l@midrange.com>
Sent: Tuesday, September 10, 2002 5:53 PM
Subject: Re: Retrieve Job Number Within RPG


>
>
> 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
>
> _______________________________________________
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
> or email: RPG400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
>
>




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.