DLTLIBRCV5





Exemple : utilisation des API en CL V5R40


|
             PGM        PARM(&BIB)
 /* ===================================================================== */
 /* BUT : lister les RÉCEPTEURS DE JOURNAUX AFIN DE LES DÉTRUIRE          */
 /*        sauf ceux attachés                                             */
 /* ===================================================================== */
             DCL        VAR(&COMPTEUR) TYPE(*INT)
             DCL        VAR(&QUAL) TYPE(*CHAR) LEN(20) VALUE(*ALL)
             DCL        VAR(&BIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&pointeur) TYPE(*PTR)

             DCL        VAR(&ptrinfos) TYPE(*PTR)              DCL        VAR(&DATA) TYPE(*CHAR) STG(*BASED) LEN(16) +                           BASPTR(&PTRINFOS)              DCL        VAR(&DEBUT) TYPE(*INT) STG(*DEFINED) DEFVAR(&DATA)              DCL        VAR(&NOMBRE) TYPE(*INT) STG(*DEFINED) DEFVAR(&DATA +                           9)
  DCL        VAR(&TAILLE) TYPE(*INT) STG(*DEFINED) DEFVAR(&DATA +
                          13)
             DCL        VAR(&ptrretour) TYPE(*PTR)              DCL        VAR(&RETOUR) TYPE(*CHAR) STG(*BASED) LEN(30) +                           BASPTR(&PTRRETOUR)

|
             DCL        VAR(&OBJ) TYPE(*CHAR) STG(*DEFINED) LEN(10) +
                          DEFVAR(&RETOUR)
             DCL        VAR(&OBJLIB) TYPE(*CHAR) STG(*DEFINED) LEN(10) +
                          DEFVAR(&RETOUR 11)
             DCL        VAR(&OBJTYPE) TYPE(*CHAR) STG(*DEFINED) LEN(10) +
                          DEFVAR(&RETOUR 21)


 /* VARIABLES UTILISEES PAR LA GESTION DE MESSAGES */              DCL        &MSGID   *CHAR LEN(7)             /* ID MSG  */              DCL        &MSGDTA  *CHAR LEN(100)           /* DATA    */              DCL        &MSGF    *CHAR LEN(10)            /* FICHIER */              DCL        &MSGFLIB *CHAR LEN(10)            /* BIBLI   */               MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
             DLTUSRSPC QTEMP/DLTLIBRCV               MONMSG     MSGID(CPF2105) EXEC(RCVMSG PGMQ(*SAME) +                           MSGTYPE(*EXCP))
 /* CRÉATION DU USER SPACE */               CALL       PGM(QUSCRTUS) PARM('DLTLIBRCV QTEMP' /* USRSPC   */ +                                             '          '      /* ATTRIBUT */ +

|
                                            X'0000FFFF'       /* TAILLE   */ +
                                            X'00'             /* VAL INIT */ +
                                            '*USE'            /* DROITS   */ +
                                            'POUR DLTLIBRCV') /* TEXTE    */
 /* REMPLISSAGE, LISTE DES OBJETS */
             CHGVAR     VAR(%SST(&QUAL 11 10)) VALUE(&BIB)
             CALL QUSLOBJ  PARM('DLTLIBRCV QTEMP'  /* USRSPC   */       +
                                'OBJL0100'         /* FORMAT   */       +
                                &QUAL              /* bib/obj  */       +
                                '*JRNRCV'          /* type     */       +
                               )
 /* positionnement sur début du USer Space */
             CALL       PGM(QUSPTRUS) PARM('DLTLIBRCV QTEMP' &Pointeur)
 /* récupération de &DATA, donc de &DEBUT &TAILLE et &NOMBRE    */
             chgvar     &ptrinfos &pointeur
             CHGVAR     %OFFSET(&ptrinfos) VALUE(%OFFSET(&ptrinfos) + 124)

 /* positionnement début de liste (on place &retour DANS le User Space) */              chgvar     &ptrretour &pointeur              CHGVAR     %OFFSET(&ptrretour) VALUE(%OFFSET(&ptrretour) + +                           &DEBUT )

|
             DOFOR      VAR(&COMPTEUR) FROM(1) TO(&NOMBRE) BY(1)

                DLTJRNRCV  JRNRCV(&OBJLIB/&OBJ)                MONMSG     MSGID(CPF7022)
               if         (&compteur < &nombre) then(do)                   CHGVAR     %OFFSET(&ptrretour) VALUE(%OFFSET(&ptrretour) +                                + &TAILLE)                ENDDO              ENDDO
 /* RENVOI DES MESSAGES DE TYPE *COMP SI FIN NORMALE */  COMPMSG:              DLTUSRSPC QTEMP/DLTLIBRCV              SNDPGMMSG  MSG('Ménage sur les récepteurs de journaux +                           effectué') TOPGMQ(*PRV (*PGMBDY)) +                           MSGTYPE(*COMP)              return
                     /* RENVOI DU MESSAGE D'ERREUR RECU  */  ERREUR:              RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +

|
                          MSGF(&MSGF) MSGFLIB(&MSGFLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) TOPGMQ(*PRV (*PGMBDY)) +
                          MSGTYPE(*ESCAPE)
             ENDPGM




©AF400