Exists : Procédure de test de l’existence d’un objet sur IBM i

Voici une API pour contrôler l’existence d’un objet sur un IBM i.

La copie de déclaration API_EXISTS comprend plusieurs déclarations, une pour la déclaration de la procédure en question et une pour l’usage de API QUSROBJD qui récupère la description d’un objet IBM i.

      * -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      * Test existence objet   renoi *ON : objet existe, *OFF : objet non trouvé
      * -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     DExists           PR             1N
     D Obj                           20A   CONST
     D ObjType                       10A   CONST      
     
      * Retrieve Object Description (QUSROBJD) API
     DRtvObj           PR                  EXTPGM('QUSROBJD')
     D  Receiver                   1000A   OPTIONS(*VARSIZE)                    Receiver variable
     D  RcvLen                       10I 0 CONST                                Length of receiver
     D  FmtName                       8A   CONST                                Format name
     D  ObjName                      20A   CONST                                Object and library
     D  ObjType                      10A   CONST                                Object type
      *  Optional 1
     D  ErrorCode                  1300A   OPTIONS(*VARSIZE:*NOPASS)            Error Code
      *  Optional 2
     D* Auxiliary storage pool (ASP) control  INPUT char(*)
      *
      * OBJD0100 Format
     DOBJD0100         DS                  QUALIFIED
     D  RtnSize                      10I 0                                      Bytes returned
     D  AvlSize                      10I 0                                      Bytes available
     D  Name                         10A                                        Object name
     D  Lib                          10A                                        Object library name
     D  Type                         10A                                        Object type
     D  RtnLib                       10A                                        Return library
     D  ASPNbr                       10I 0                                      Object ASP number
     D  Owner                        10A                                        Object owner
     D  Dommain                       2A                                        Object domain
     D  CrtDte                       13A                                        Creation date and t
     D  ChgDte                       13A                                        Object change date

     DOBJD0200         DS                  QUALIFIED
     D  RtnSize                      10I 0                                      Bytes returned
     D  AvlSize                      10I 0                                      Bytes available
     D  Name                         10A                                        Object name
     D  Lib                          10A                                        Object library name
     D  Type                         10A                                        Object type
     D  RtnLib                       10A                                        Return library
     D  ASPNbr                       10I 0                                      Object ASP number
     D  Owner                        10A                                        Object owner
     D  Dommain                       2A                                        Object domain
     D  CrtDte                       13A                                        Creation date and t
     D  ChgDte                       13A                                        Object change date
     d  Atr                          10A                                        Extended object att
     d  Txt                          50A                                        Text description
     d  SrcF                         10A                                        Source file name
     d  SRCL                         10A                                        Source file library
     d  SRCM                         10A                                        Source file member

     DOBJD0300         DS                   QUALIFIED
     D  RtnSize                      10I 0                                      Bytes returned
     D  AvlSize                      10I 0                                      Bytes available
     D  Name                         10A                                        Object name
     D  Lib                          10A                                        Object library name
     D  Type                         10A                                        Object type
     D  RtnLib                       10A                                        Return library
     D  ASPNbr                       10I 0                                      Object ASP number
     D  Owner                        10A                                        Object owner
     D  Dommain                       2A                                        Object domain
     D  CrtDte                       13A                                        Creation date and t
     D  ChgDte                       13A                                        Object change date
     d  Atr                          10A                                        Extended object att
     d  Txt                          50A                                        Text description
     d  SrcF                         10A                                        Source file name
     d  SRCL                         10A                                        Source file library
     d  SRCM                         10A                                        Source file member
     d  SrcUpd                       13A                                        Source file updated
     d  SveDte                       13A                                        Object saved date a
     d  RstDte                       13A                                        Object restored dat
     d  CrtUsr                       10A                                        Creator's user prof
     d                                8A                                        System where object
     d  RzDte                         7A                                        Reset date
     d  SavSz                        10I 0                                      Save size
     d  SavSeq                       10I 0                                      Save sequence numbe
     d  SavSto                       10A                                        Storage
     d  SavCmd                       10A                                        Save command
     d  SavVid                       71A                                        Save volume ID
     d  SavDev                       10A                                        Save device
     d  SavFnm                       10A                                        Save file name
     d  SavFLb                       10A                                        Save file library n
     d  SavLbl                       17A                                        Save label
     d  SysLvl                        9A                                        System level
     d  Compiler                     16A                                        Compiler
     d  ObjLvl                        8A                                        Object level
     d  UsrChgd                       1A                                        User changed
     d  LicPgm                       16A                                        Licensed program
     d  Ptf                          10A                                        Program temporary f
     d  AApar                        10A                                        Authorized program
      *          OBJD0400 -----------
     DOBJD0400         DS                   QUALIFIED
     D  RtnSize                      10I 0                                      Bytes returned
     D  AvlSize                      10I 0                                      Bytes available
     D  Name                         10A                                        Object name
     D  Lib                          10A                                        Object library name
     D  Type                         10A                                        Object type
     D  RtnLib                       10A                                        Return library
     D  ASPNbr                       10I 0                                      Object ASP number
     D  Owner                        10A                                        Object owner
     D  Dommain                       2A                                        Object domain
     D  CrtDte                       13A                                        Creation date and t
     D  ChgDte                       13A                                        Object change date
     d  Atr                          10A                                        Extended object att
     d  Txt                          50A                                        Text description
     d  SrcF                         10A                                        Source file name
     d  SRCL                         10A                                        Source file library
     d  SRCM                         10A                                        Source file member
     d  SrcUpd                       13A                                        Source file updated
     d  SveDte                       13A                                        Object saved date a
     d  RstDte                       13A                                        Object restored dat
     d  CrtUsr                       10A                                        Creator's user prof
     d                                8A                                        System where object
     d  RzDte                         7A                                        Reset date
     d  SavSz                        10I 0                                      Save size
     d  SavSeq                       10I 0                                      Save sequence numbe
     d  SavSto                       10A                                        Storage
     d  SavCmd                       10A                                        Save command
     d  SavVid                       71A                                        Save volume ID
     d  SavDev                       10A                                        Save device
     d  SavFnm                       10A                                        Save file name
     d  SavFLb                       10A                                        Save file library n
     d  SavLbl                       17A                                        Save label
     d  SysLvl                        9A                                        System level
     d  Compiler                     16A                                        Compiler
     d  ObjLvl                        8A                                        Object level
     d  UsrChgd                       1A                                        User changed
     d  LicPgm                       16A                                        Licensed program
     d  Ptf                          10A                                        Program temporary f
     d  AApar                        10A                                        Authorized program
     d  UseDte                        7A                                        Last-used date
     d  UseInfUpd                     1A                                        Usage information u
     d  DayCnt                       10I 0                                      Days-used count
     d  ObjSz                        10I 0                                      Object size
     d  OBjMul                       10I 0                                      Object size multipl
     d  Compress                      1A                                        Object compression
     d  PgmChgAlw                     1A                                        Allow change by pro
     d  ChdPgm                        1A                                        Changed by program
     d  UsrAtt                       10A                                        User-defined attrib
     d  OflAsp                        1A                                        Object overflowed A
     d  ActSavDte                    13A                                        Save active date an
     d  AudVlu                       10A                                        Object auditing val
     d  PriGrp                       10A                                        Primary group
     d  JrnSts                        1A                                        Journal status
     d  JrnNm                        10A                                        Journal name
     d  JrnLib                       10A                                        Journal library nam
     d  JrnImg                        1A                                        Journal images
     d  JrnOmit                       1A                                        Journal entries to
     d  JrnStrDte                    13A                                        Journal start date
     d  DgtSig                        1A                                        Digitally signed
     d  SavUntSiz                    10I 0                                      Saved size in units
     d  SavUntMul                    10I 0                                      Saved size multipli
     d  AspLibNbr                    10I 0                                      Library ASP number
     d  AspDevNm                     10A                                        Object ASP device n
     d  AspLibNm                     10A                                        Library ASP device
     d  DgtTrust                      1A                                        Digitally signed by
     d  DgtMost                       1A                                        Digitally signed mo

 

Ci-dessous, la sous-procédure que vous pouvez ajouter à un source de module intégré à un programme de service (ou non) ou encore dans un source de programme.

Elle utilise simplement l’API QUSROBJD et si elle ne retourne pas d’erreur, c’est que l’objet existe bien.

      * ====================================================================
      * Test existence objet
      * ====================================================================
     PExists           B
     D                 PI             1N
     D Obj                           20A   CONST
     D ObjType                       10A   CONST
      *
      /COPY API_OBJ
     D ObjL            S             20A
     D Objd            DS                  likeDS(ObjD0100)
     D ErrDS           DS                  likeDS(ERRAPI)
      /free
         ObjL = Obj;
         if %Subst( ObjL : 11 : 10) = *BLANK;
            %Subst( ObjL : 11 : 10) = '*LIBL';
         endif;
         RtvObj( Objd : %len(ObjD) : 'OBJD0100' : Objl : ObjType : ErrDS);
         if ErrDS.ErrRtn > 0;
            return *OFF;
         endif;
         return *ON;
      /end-Free
     PExists           E

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *