× 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.



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 thread ...

Follow-Ups:
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.