OUTQ の情報を取得するための API (QSPROUTQ)

知人から OUTQ の情報を取得するための API のサンプルプログラムをもらいました。
API を使ったプログラムのコレクション、ということでここに掲載させてもらっています。

Retrieve Output Queue Information (QSPROUTQ) API という API を使用しています。

     **
      *   CRTBNDRPG PGM(OUTQTEST/GETOUTQINF) SRCFILE(OUTQTEST/QRPGLESRC) DFTACTGRP(*NO)
      *             DBGVIEW(*SOURCE)
     **
     H DFTACTGRP(*NO)
     **
     D GetOutqInf      PR
     D  OutQ                         10a
     D  Lib                          10a
     D GetOutqInf      PI
     D  pOutQ                        10a
     D  pLib                         10a
     **
     D ERRC0100        Ds                  Qualified
     D  BytPro                       10i 0 Inz( %Size( ERRC0100 ))
     D  BytAvl                       10i 0 Inz
     D  MsgId                         7a
     D                                1a
     D  MsgDta                      128a
     **
     D OUTQ0100        Ds                  Based( pOutqInf )  Qualified
     D  BytRtn                       10i 0
     D  BytAvl                       10i 0
     D  OutqNam                      10a
     D  OutqLib                      10a
     D  order                        10a
     D  DspAny                       10a
     D  JobSep                       10i 0
     D  OprCtld                      10a
     D  DtaqNam                      10a
     D  DtaQlib                      10a
     D  AutChk                       10a
     D  NbrFiles                     10i 0
     D  OutqSts                      10a
     D  WtrNam                       10a
     D  WtrUsr                       10a
     D  WtrNbr                        6a
     D  WtrSts                       10a
     D  PrtDev                       10a
     D  Text                         50a
     D  rsvd1                         2a
     D  NbrSpl                       10i 0
     D  NbrWtr                       10i 0
     D  WtrAutoStr                   10i 0
     D  RmtSysType                    1a
     D  RmtSysNam                   255a
     D  RmtPrtQ                     128a
     D  MsgqNam                      10a
     D  MsgQlib                      10a
     D  ConnType                     10i 0
     D  DistType                     10i 0
     D  VM_MVS                        1a
     D  FrmCtlBuf                     8a
     D  HostPrtTrf                    1a
     D  ManufType                    17a
     D  WSCTnam                      10a
     D  WSCTlib                      10a
     D  SplPoolAtr                    1a
     D  OfsMaxSplE                   10i 0
     D  NbrPagEntRtn                 10i 0
     D  EntryLen                     10i 0
     D  DistOpt                     128a
     D  WtrType                       1a
     D  PrtSepPag                     1a
     D  LongRmtPrtq                 255a
     D  ImgConf                      10a
     D  ImgConfLib                   10a
     D  NetDirSts                     1a
     D  rsvd2                         2a
     D  SplAspID                     10i 0
     D  SplAspDevd                   10a
     **
     **
     D RtvOutqInf      Pr                  ExtPgm( 'QSPROUTQ' )
     D  spRcvVar                  65535a   Options( *VarSize )
     D  spRcvVarLen                  10i 0 Const
     D  spFmtNam                      8a   Const
     D  spOutqNam                    20a   Const
     D  spError                   32767a         Options( *VarSize: *Omit )
     **
     **
     D ApiRcvSiz       s             10u 0
     **
     D OutQNamLib      s             20a
     **
      /Free

             *inLR = *on;


             If pLib  =  *blanks ;
                pLib  = '*LIBL    ' ;
             EndIf ;
             If pOutQ <> *blanks ;
                OutqNamLib = pOutQ + pLib ;
             Else ;
                OutqNamLib = 'PRT01     QUSRSYS   ';
             EndIf ;


             ApiRcvSiz = 65535;
             pOutqInf   = %Alloc( ApiRcvSiz );
             OUTQ0100.BytAvl = *Zero;

             DoU  OUTQ0100.BytAvl <= ApiRcvSiz     Or
                  ERRC0100.BytAvl  > *Zero;

               If  OUTQ0100.BytAvl > ApiRcvSiz;
                 ApiRcvSiz  = OUTQ0100.BytAvl;
                 pOutqInf    = %ReAlloc( pOutqInf: ApiRcvSiz );
               EndIf;


               RtvOutqInf( OUTQ0100
                         : ApiRcvSiz
                         : 'OUTQ0100'
                         : OutqNamLib
                         : ERRC0100
                          );
             EndDo;

              If  ERRC0100.BytAvl = *Zero;


                  //  check if OUTQ0100.NBRFILES > too many ...
                  DSPLY  %char(%dec(OUTQ0100.NBRFILES )) ;


              EndIf;

             Dealloc pOutqInf ;

             return;

      /End-Free

[Top Pageに戻る]

Ads by TOK2