Recuperer une liste de bibliothèque d'une Jobd dans un CL

RPG (3 et 4, free), CL, SQL, etc...
Répondre
lohezic
Messages : 8
Enregistré le : lun. 07 déc. 2009, 16:55:10

Recuperer une liste de bibliothèque d'une Jobd dans un CL

Message par lohezic »

Bonjour,

Je souhaiterais dans une procédure, récupérer la liste de bibliothèque définie dans une jobd . Avez vous une idée de mise en œuvre ?

Exemple d'utilisation : je suis sur un menu en choisissant une option ,ce qui me fait passer sur un menu d'une application qui est utilisable qu'avec une certaine liste de bibliothèques . Cette liste de bibliothèques est connu dans la jobd associé à l'application.

Merci de vos réponses

Cordialement Mme Lohezic

:?:

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Liste de bibliothèque de la JOBD

Message par cmasse »

Il faut utiliser l'API QWDRJOBD.

J'ai écrit il y a qq temps une commande REINZJOB :

Code : Tout sélectionner

             CMD        PROMPT('Réinitialise un job avec JOBD')
             PARM       KWD(JOBD) TYPE(Q1) MIN(1) PROMPT(JOBD)
 Q1:         QUAL       TYPE(*NAME) MIN(1)
             QUAL       TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL)) +
                          PROMPT('Bibliothèque')

le programme de traitement

Code : Tout sélectionner

             PGM        PARM(&JOBDQ)
             DCL        VAR(&JOBDQ) TYPE(*CHAR) LEN(20)
             DCL        VAR(&APIRETOUR) TYPE(*CHAR) LEN(5000)
             DCL        VAR(&DEB) TYPE(*DEC) LEN(4 0)
             DCL        VAR(&JDLG) TYPE(*DEC) LEN(5 0)
             DCL        VAR(&USRLIBLS) TYPE(*CHAR) LEN(2750)
             DCL        VAR(&USRLIBL2) TYPE(*CHAR) LEN(250)
             DCL        VAR(&CMD) TYPE(*CHAR) LEN(300)
             DCL        VAR(&LG) TYPE(*DEC) LEN(15 5) VALUE(300)


             DCL &OUTPTY *CHAR 1
             DCL &OUTQ *CHAR 10
             DCL &OUTQL *CHAR 10
             DCL &DEV *CHAR 10
             DCL &LOG *CHAR 1
             DCL &SEV *DEC (2 0)
             DCL &LOGTXT *CHAR 10
             DCL &INQMSG *CHAR 10
 /* VARIABLES UTILISEES PAR LA GESTION DE MESSAGES */
             DCL        &ERRORSW *LGL                     /* SWITCH  */
             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   */
 
/* GESTION DES ERREURS                            */
             MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)

/* API QWDRJOBD          */
/*    VAR EN RETOUR      */
/*    x'000007D0' = 2000 */
/*     FORMAT            */
/*    JOBD QUALIFiÉE     */
/*        CODE RETOUR    */
 
      CALL QWDRJOBD PARM(&APIRETOUR X'000007D0'  'JOBD0100' &JOBDQ +
                         X'00000000')

   /* DÉBUT DE LA LISTE */
      CHGVAR &DEB %BIN(&APIRETOUR 361 4)   /* = DÉPLACEMENT */
      CHGVAR &DEB (&DEB + 1)               /* POS DE DÉBUT */

   /* NBR DE POSTES     */
      CHGVAR &JDLG %BIN(&APIRETOUR 365 4)

   /* CALCUL DE LA LONGEUR */
      CHGVAR &JDLG (&JDLG * 11)


             CHGVAR &USRLIBLS %SST(&APIRETOUR &DEB &JDLG)


             IF (&USRLIBLS *EQ '*SYSVAL') THEN(DO)
              RTVSYSVAL  SYSVAL(QUSRLIBL) RTNVAR(&USRLIBL2)


             CHGVAR     VAR(&USRLIBLS) VALUE(&USRLIBL2)
             ENDDO


             CHGVAR &CMD ('CHGLIBL LIBL(' *TCAT &USRLIBLS *TCAT ')')
             CALL QCMDEXC PARM(&CMD &LG)


             CHGVAR &OUTQ %SST(&APIRETOUR 87 10)
             IF (&OUTQ *EQ '*USRPRF') +
               RTVUSRPRF  OUTQ(&OUTQ) OUTQLIB(&OUTQL)
             ELSE +
               CHGVAR &OUTQL %SST(&APIRETOUR 97 10)


             IF         COND(&OUTQ *NE '*DEV') THEN(DO)
              IF         COND(&OUTQ *EQ '*WRKSTN') THEN(CHGJOB +
                           OUTQ(*WRKSTN))
               ELSE CHGJOB     OUTQ(&OUTQL/&OUTQ)
             ENDDO


             CHGVAR &OUTPTY %SST(&APIRETOUR 108 1)
             CHGVAR &DEV    %SST(&APIRETOUR 109 10)
             IF (&DEV *EQ '*USRPRF') +
               RTVUSRPRF  PRTDEV(&DEV)


             CHGVAR &SEV %BIN(&APIRETOUR 157 4)
             CHGVAR &LOG %SST(&APIRETOUR 161 1)
             CHGVAR &LOGTXT %SST(&APIRETOUR 162 10)
             CHGVAR &INQMSG %SST(&APIRETOUR 182 10)


             CHGJOB     OUTPTY(&OUTPTY) PRTDEV(&DEV) LOG(&LOG &SEV +
                          &LOGTXT) INQMSGRPY(&INQMSG)
             RETURN


              /*----------------------------------------*/
 ERREUR:      /*        GESTION DES ERREURS             */
              /*----------------------------------------*/
             IF         &ERRORSW SNDPGMMSG MSGID(CPF9999) +
                          MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* 2EME FOIS*/
                                                         /* ARRET PGM*/
             CHGVAR     &ERRORSW '1' /* MISE EN PLACE DU SWTICH     */


 /* RENVOI DES MESSAGES DE TYPE *DIAG SI FIN ANORMALE */
 DIAGMSG:    RCVMSG     MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&MSGFLIB)
             IF         (&MSGID *EQ '       ') GOTO EXCPMSG
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                             MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
             GOTO       DIAGMSG /* BOUCLE SUR MESSAGES *DIAG      */


 /* RENVOI DU MESSAGE D'ERREUR                        */
 EXCPMSG:    RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&MSGFLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
             ENDPGM

Christian Massé (Volubis.fr)

Répondre