Construction de la requete (OPNQRYF) pour AF400.

BoTTom |
             PGM        PARM(&MODULE &SUJET &MC1 &MC2 &MC3 &TYP  +
                              &NOM &DATREF &ORAND)
/* PGM DE SELECTION D'UN COURS AF400 (EXTRAIT).                      */
/* -------------------------------------------                       */
/*  CE PGM RECOIT LES PARAMETRES SAISIS PAR L'UTILISATEUR            */
/*   ET CONSTRUIT LA REQUETE OPNQRYF                                 */
/* - LE CHOIX D'UN MODULE EST OBLIGATOIRE                            */
/* - IL PEUT ETRE SUIVI:                                             */
/*                         - SOIT PAR UNE SELECTION SUJET/MOT-CLE    */
/*                   (&ORAND = MOT-CLE RELIES PAR "OU" OU BIEN "ET") */
/*                         - SOIT PAR UNE SELECTION SUR LE NOM (*CT) */
/* - IL PEUT ENFIN ETRE COMPLETE PAR UNE SELECTION SUR LE TYPE       */
/* ET/OU LA SAISIE D' UNE DATE DE REFERENCE (DATE FICHIER > OU = à). */
 
             DCL &MODULE *CHAR 10  /* MODULE AF400 */
             DCL &SUJET *CHAR 10   /* SUJET                          */
             DCL &MC1   *CHAR 10   /* MOT-CLE 1                      */
             DCL &MC2   *CHAR 10   /* MOT-CLE 2                      */
             DCL &MC3   *CHAR 10   /* MOT-CLE 3                      */
             DCL &TYP   *CHAR  4   /* TYPE *TXT,*DOC,...             */
             DCL &NOM *CHAR 10     /* NOM DE COURS                   */
             DCL &DATREF *CHAR 7   /* DATE DE REFERENCE              */
             DCL &ORAND *CHAR  4   /* LIEN ENTRE MOTS-CLES           */
                                   /* (DANS LA REALITE LES LIENS     */
                                   /*   SONT GERES DIFFEREMENTS.)    */
 
             DCL &SEL   *CHAR 650
             DCL &VALUES *CHAR 60
 
 
/* CONTRUCTION DU QRYSLT */
 
   IF (&SUJET = '*ALL') CHGVAR &SUJET ' '
   IF (&MC1   = '*ALL') CHGVAR &MC1   ' '
   IF (&MC2   = '*ALL') CHGVAR &MC2   ' '
   IF (&MC3   = '*ALL') CHGVAR &MC3   ' '
   IF (&TYP   = '*ALL') CHGVAR &TYP   ' '
   IF (&DATREF = '0000000') CHGVAR &DATREF ' '
 
    CHGVAR &SEL ('AF4MDL= "' *CAT &MODULE *CAT '"')
 
   IF         COND(&NOM ^= ' ') THEN(DO)
             CHGVAR VAR(&SEL) VALUE(&SEL +
                       *BCAT '*AND AF4MBR *CT "' *TCAT &NOM *TCAT '"')


|
   ENDDO
   /* CHOIX SUR LE NOM OU BIEN SUJET ET MOTS-CLE */
   ELSE DO
 
      IF         COND(&SUJET ^= ' ') THEN(DO)
             CHGVAR VAR(&SEL) VALUE(&SEL +
                          *BCAT '*AND SUJET = "' *CAT &SUJET *CAT '"')
      ENDDO
 
             IF         COND((&MC1 ^= ' ') ! (&MC2 ^= ' ') ! (&MC3 +
                          ^= ' ')) THEN(DO)
   /* CONTRUCTION D'UNE LISTE DE VALEURS (%VALUES)*/
             CHGVAR &VALUES  '%VALUES('
             IF (&MC1 ^= ' ') +
             CHGVAR &VALUES (&VALUES *BCAT '"' *CAT &MC1 *TCAT '"')
             IF (&MC2 ^= ' ') +
             CHGVAR &VALUES (&VALUES *BCAT '"' *CAT &MC2 *TCAT '"')
             IF (&MC3 ^= ' ') +
             CHGVAR &VALUES (&VALUES *BCAT '"' *CAT &MC3 *TCAT '"')
             CHGVAR &VALUES (&VALUES *BCAT ')')
 
            CHGVAR &SEL (&SEL *BCAT '*AND (')
              CHGVAR &SEL ( &SEL *BCAT +
              'MOTCL1 = ' *CAT &VALUES *BCAT &ORAND *BCAT +
              'MOTCL2 = ' *CAT &VALUES *BCAT &ORAND *BCAT +
              'MOTCL3 = ' *CAT &VALUES *BCAT &ORAND *BCAT +
              'MOTCL4 = ' *CAT &VALUES *BCAT &ORAND *BCAT +
              'MOTCL5 = ' *CAT &VALUES)
            CHGVAR &SEL (&SEL *TCAT ')')
      ENDDO
 
   ENDDO  /* FIN OU EXCLUSIF NOM / SUJET,MOT-CLE */
 
      IF (&TYP ^= ' ') DO
            CHGVAR &SEL (&SEL *BCAT '*AND')
            CHGVAR &SEL (&SEL *BCAT '*AF4TYP = "' *CAT &TYP *CAT '"')
      ENDDO
      IF (&DATREF ^= ' ') DO
            CHGVAR &SEL (&SEL *BCAT '*AND')
            CHGVAR &SEL (&SEL *BCAT 'DATREF >= ' *CAT &DATREF)
      ENDDO
 
  /* NORMALEMENT IMPOSSIBLE (MODULE OBLIGATOIRE) */
      IF (&SEL = ' ') CHGVAR &SEL '*ALL'


|
 
             OVRDBF     FILE(XXXXXXXX) TOFILE(YYYYYYYYY) SHARE(*YES)
             OPNQRYF    FILE((YYYYYYYYY)) QRYSLT(&SEL) KEYFLD(*FILE)
 
             CALL ZZZZZ
 
             CLOF YYYYYYYYYY
             DLTOVR XXXXXXXX
      ENDPGM




©AF400