Exemple : utilisation des API en CL V5R30

BoTTom |
             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(&TAILLE) TYPE(*INT) VALUE(32767)
             DCL        VAR(&DEBUT)  TYPE(*INT)
             DCL        VAR(&RETOUR) TYPE(*CHAR) LEN(30)
             DCL        VAR(&QUAL) TYPE(*CHAR) LEN(20) VALUE(*ALL)
             DCL        VAR(&BIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&pointeur) TYPE(*PTR)
             DCL        VAR(&Data) TYPE(*char) STG(*BASED) +
                          BASPTR(&pointeur)
             DCL        VAR(&DEBUTS) TYPE(*INT) STG(*DEFINED) DEFVAR(&DATA)
             1)
 
             DCL        VAR(&NOMBRE) TYPE(*INT) STG(*DEFINED) DEFVAR(&DATA +
                          5)
             DCL        VAR(&TAILLEP) TYPE(*INT)
 
 
 /* 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 QUSCRTUS PARM('DLTLIBRCV QTEMP'  /* USRSPC   */       +
                                '          '       /* ATTRIBUT */       +
                                &TAILLE            /* TAILLE   */       +
                                X'00'              /* VAL INITIALE */   +
                                '*USE'             /* DROITS */         +
                                'POUR DLTLIBRCV')
 /* 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     */       +
                               )
             CHGVAR     VAR(&DEBUT) VALUE(125) /* DEBUT DE LISTE */
             CHGVAR     VAR(&TAILLE) VALUE(4)
             CALL       PGM(QUSRTVUS) PARM('DLTLIBRCV QTEMP' &DEBUT +
                          &TAILLE &DEBUTS)
 
             CHGVAR     VAR(&DEBUT) VALUE(133) /* NOMBRE DE POSTES */
             CALL       PGM(QUSRTVUS) PARM('DLTLIBRCV QTEMP' &DEBUT +
                          &TAILLE &NOMBRE)
             CHGVAR     VAR(&DEBUT) VALUE(137) /* TAILLE D'1 POSTE */
             CALL       PGM(QUSRTVUS) PARM('DLTLIBRCV QTEMP' &DEBUT +
                          &TAILLE &TAILLEP)
 
             CHGVAR     VAR(&DEBUT) VALUE(&DEBUTS + 1) /* DEBUT */
             CHGVAR     VAR(&TAILLE) VALUE(30) /* lg de retour */
 
             DOFOR      VAR(&COMPTEUR) FROM(1) TO(&NOMBRE) BY(1)
 
              CALL       PGM(QUSRTVUS) PARM('DLTLIBRCV QTEMP' &DEBUT +
                           &TAILLE &RETOUR)
 
              DLTJRNRCV  JRNRCV(%SST(&RETOUR 11 10)/%SST(&RETOUR 1 10))
               MONMSG     MSGID(CPF7022)
 
              CHGVAR &DEBUT (&DEBUT + &TAILLEP)
             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