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



Hello,

Using either the _system function, or QCMDEXC to issue a SBMJOB command from an RPGLE program, can I retreive the job number of the submitted job? If so, what do I need to do?

I agree with David. After the SBMJOB command is processed, it'll send you a CPC1221 completion message. If you retrieve it with the QMHRCVPM API, the first 26 bytes of the message data should contain the job identifier.

Here's a quick example, if it saves you some time:

     H DFTACTGRP(*NO)

     D QCMDEXC         PR                  ExtPgm('QCMDEXC')
     D   command                  32702a   const options(*varsize)
     D   length                      15p 5 const
     D   igc                          3a   const options(*nopass)

     D QMHRCVPM        PR                  ExtPgm('QMHRCVPM')
     D   MsgInfo                  32767A   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                32767A   options(*varsize)

     D Msg             DS                  qualified
     D  BytesRtn                     10I 0
     D  BytesAvail                   10I 0
     D  Severity                     10I 0
     D  Id                            7A
     D  Type                          2A
     D  Key                           4A
     D                                7A
     D  CCSID_ind                    10I 0
     D  CCSID                        10I 0
     D  Len                          10I 0
     D  Avail                        10I 0
     D  Data                       1024A

     D ErrorNull       ds                  qualified
     D    BytesProv                  10i 0 inz(0)
     D    BytesAvail                 10i 0 inz(0)

     D cmd             s            500A   varying
     D JobName         s             10a
     D JobUser         s             10a
     D JobNbr          s              6a
     D wait            s              1a

      /free

            cmd = 'SBMJOB CMD(CALL SOMEPGM)';
            QCMDEXC(cmd: %len(cmd));

            QMHRCVPM( Msg
                    : %size(Msg)
                    : 'RCVM0100'
                    : '*'
                    : 0
                    : '*LAST'
                    : *blanks
                    : 0
                    : '*SAME'
                    : ErrorNull );

            if (Msg.Id<>'CPC1221' or Msg.Avail<26);
               // TODO: Report error message properly instead of DSPLY
               //       (This isn't supposed to happen!)
               dsply 'HELP!' '' wait;
               return;
            endif;

            JobName = %subst(Msg.Data: 1: 10);
            JobUser = %subst(Msg.Data:11: 10);
            JobNbr  = %subst(Msg.Data:21:  6);

            // TODO: Do whatever needs to be done with these fields,
            //       instead of just displaying them...

            dsply ('job ' +JobName+ ' User ' +JobUser+ ' Nbr ' +jobNbr)
                  '' wait;

            *inlr = *on;
      /end-free


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.