code

Name
Astradyne (UK) Ltd
Scriptlanguage
Plain Text
Tabwidth
4
Date
Sun, 12 May 2013 10:35:53 +0000
IP
192.168.0.1

An RPG ILE program that demonstrates the use of the QSPOLJBQ system API by displaying a list of all jobq queues in QGPL

  1.     D* Open List of Job Queues (QSPOLJBQ) API Prototype
  2.     D OpnLstJobQ      Pr                  ExtPgm('QSPOLJBQ')
  3.     D  oRcvVar                            Like(OJBQ0100)
  4.     D  iRcvVarLen                  10i 0
  5.     D  iRcvVarFmt                    8a
  6.     D  oListInfo                    80a
  7.     D  iFilter                            Like(Filter)
  8.     D  iSort                              Like(Sort)
  9.     D  iNbrRecs                    10i 0
  10.     D  iAPIError                          Like(APIError)
  11.  
  12.     D* Get List Entries (QGYGTLE) API Prototype
  13.     D GetListEntries  Pr                  ExtPgm('QGYGTLE')
  14.     D  oRcvVar                            Like(OJBQ0100)
  15.     D  iRcvVarLen                  10i 0
  16.     D  iRqsHandle                    4a
  17.     D  oListInfo                    80a
  18.     D  iNbrRecs                    10i 0
  19.     D  iStartRec                    10i 0
  20.     D  oAPIError                          Like(APIError)
  21.  
  22.     D* Close List (QGYCLST) API Prototype
  23.     D CloseList      Pr                  ExtPgm('QGYCLST')
  24.     D  iRqsHandle                    4a
  25.     D  oAPIError                          Like(APIError)
  26.  
  27.     D* Format of Open List Information
  28.     D ListInfo        Ds
  29.     D  TotalRecs                    10i 0
  30.     D  RecsRtn                      10i 0
  31.     D  ReqsHandle                    4a
  32.     D  RecLen                      10i 0
  33.     D  Complete                      1a
  34.     D  Timestamp                    13a
  35.     D  ListStatus                    1a
  36.     D                                1a
  37.     D  InfoLen                      10i 0
  38.     D  FirstRec                    10i 0
  39.     D                              40a
  40.  
  41.     D* Constants for List Completion Indicator Handling
  42.     D LIST_COMPLETE  c                  Const('C')
  43.     D LIST_INCOMPLETE...
  44.     D                c                  Const('I')
  45.     D LIST_PARTIAL    c                  Const('P')
  46.  
  47.     D* Constants for List Status Handling
  48.     D LIST_PENDING    c                  Const('0')
  49.     D LIST_BUILDING  c                  Const('1')
  50.     D LIST_BUILT      c                  Const('2')
  51.     D LIST_ERROR      c                  Const('3')
  52.     D LIST_PRIMED    c                  Const('4')
  53.     D LIST_TOOBIG    c                  Const('5')
  54.  
  55.     D* Format of Filter for API Call
  56.     D Filter          Ds
  57.     D  FilterLen                    10i 0 Inz(%Len(Filter))
  58.     D  Jobq                        10a
  59.     D  JobqLib                      10a
  60.     D  ActSubSys                    10a
  61.     D                                1a  Inz(x'00')
  62.  
  63.     D* Format of Sort for API Call
  64.     D Sort            Ds
  65.     D  NbrKeys                      10i 0 Inz(0)
  66.     D  KeyStartPos                  10i 0 Inz(0)
  67.     D  KeyLen                      10i 0 Inz(0)
  68.     D  KeyType                      5i 0 Inz(x'00')
  69.     D  SortOrder                    1a  Inz(x'00')
  70.     D                                1a  Inz(x'00')
  71.  
  72.     D* Format of Receiver Variable for API Call
  73.     D OJBQ0100        Ds
  74.     D  oJobq                        10a
  75.     D  oJobqLib                    10a
  76.     D  oJobqSts                      1a
  77.     D  oSbsName                    10a
  78.     D  oSbsLib                      10a
  79.     D                                3a
  80.     D  oNbrJobs                    10i 0
  81.     D  oSeqNbr                      10i 0
  82.     D  oMaxAct                      10i 0
  83.     D  oCurAct                      10i 0
  84.     D  oDesc                        50a
  85.  
  86.     D* Constants for Jobq Status handling
  87.     D JOBQ_HELD      c                  Const('1')
  88.     D JOBQ_RELEASED  c                  Const('2')
  89.     D JOBQ_DAMAGED    c                  Const('3')
  90.     D JOBQ_DEFINED    c                  Const('4')
  91.  
  92.     D* Standard API Error Data Structure
  93.     D ApiError        DS
  94.     D  ApiBytes                    10I 0 Inz(%Size(ApiError))
  95.     D  ApiBytesOut                10I 0
  96.     D  ApiErrID                    7A
  97.     D  ApiReserved                  1A
  98.     D  ApiErInDta                256A
  99.  
  100.     D* Work fields
  101.     D  wRecNo        s            10i 0 Inz(*Zeros)
  102.     D  wRcvVarLen    s            10i 0 Inz(%Len(OJBQ0100))
  103.     D  wRcvVarFmt    s              8a  Inz('OJBQ0100')
  104.     D  wNbrRecs      s            10i 0 Inz(1)
  105.     D  wReply        s              1a  Inz(*Blanks)
  106.  
  107.     C* Prepare the Filter data structure to retrieve the job queues we want...
  108.     C                  Eval      Jobq      = '*ALL'
  109.     C                  Eval      JobqLib  = 'QGPL'
  110.     C                  Eval      ActSubSys = *Blanks
  111.  
  112.     C* Call the API to build the list...
  113.     C                  CallP    OpnLstJobq(OJBQ0100 : wRcvVarLen :
  114.     C                              wRcvVarFmt : ListInfo : Filter : Sort :
  115.     C                              wNbrRecs : APIError)
  116.  
  117.     C* Once the list has been created we can read through it using the
  118.     C* GetListEntry (QGYGTLE) API...
  119.  
  120.     C*  Read through all records in the list...
  121.     C                  For      wRecNo = 1 to TotalRecs
  122.  
  123.     C*  Call the API to read an entry from the list...
  124.     C                  CallP    GetListEntries(OJBQ0100 : wRcvVarLen :
  125.     C                              ReqsHandle : ListInfo : wNbrRecs : wRecNo :
  126.     C                              APIError)
  127.  
  128.     C*  Display the name of the job queue and get the next record...
  129.     C    oJobq        Dsply
  130.     C                  EndFor
  131.  
  132.     C    '*Finished*'  Dsply                  wReply
  133.  
  134.     C* Finally close the list and exit the program...
  135.     C                  CallP    CloseList(ReqsHandle : APIError)
  136.  
  137.     C                  Eval      *InLR = *On
  138.     C                  Return
  139.