Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400Regénérer un *QRYDFN sans rentrer …
Vous devez vous identifier pour créer des messages et des sujets.

Regénérer un *QRYDFN sans rentrer dans le gestionnaire Query

Bonjour,

Suite à modif de la structure de nombreux fichiers, je dois regénérer de nombreuses analyses Query (objets de type *QRYDFN) lisant ces fichiers, sous peine de plantage.

Y a-t-il une commande permettant de regénérer (recompiler) un Query, pour pouvoir facilement regénérer mes Query en masse, ou suis-je obligé d'ouvrir chaque Query via STRQRY pour celà ?

Je précise que je suis en V7R1.

D'avance merci.

Tom

Bonjour

Voici peut etre une piste

ca recupere dans un fichier tous les qry

je lis ensuite ce fichier  par un rcvf et j'en extrait un source

extrait de quelques lignes de mon CL

/* GENERATION D'UN FICHIER LISTANT TOUS LES QUERYS */
DLTF FILE(BER400/LSTQRY)
MONMSG MSGID(CPF2105)
DSPOBJD OBJ(*ALL/*ALL) OBJTYPE(*QRYDFN) +
OUTPUT(*OUTFILE) OUTFILE(BER400/LSTQRY)
/* CREATION D'UN FICHIER DE SOURCES POUR RECEVOIR LES */
/* REQUTES EXTRAITES *
DLTF FILE(BER400/QQRYSRC)
MONMSG MSGID(CPF2105)
CRTSRCPF FILE(BER400/QQRYSRC)
/* INITIALISATIONS ET LECTURE INITIALE DU FICHIER *
/* LISTANT LES QUERYS */
OVRDBF FILE(QADSPOBJ) TOFILE(BER400/LSTQRY)
CHGVAR VAR(&EOF) VALUE('0')
RCVF OPNID(DSPOBJ)
MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) +
VALUE('1'))
/* BOUCLE DE LECTURE DU FICHIER LISTANT LES QUERYS
DOWHILE COND(*NOT &EOF)
* RCUPRATION DU SOURCE SQL DANS TEMP/QQRYSRC ; LE NOM */

RTVQMQRY QMQRY(&DSPOBJ_ODLBNM/&DSPOBJ_ODOBNM) +
SRCFILE(BER400/QQRYSRC) +
SRCMBR(&DSPOBJ_ODOBNM) ALWQRYDFN(*ONLY)
MONMSG MSGID(QWM2701)
/* LECTURE SUIVANTE DU FICHIER LISTANT LES QUERYS */
RCVF OPNID(DSPOBJ)
MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) +
VALUE('1'))
ENDDO
/* SUPPRESSION DE SUBSTITUTION DE FICHIER */
DLTOVR FILE(QADSPOBJ)
ENDPGM

DSPOBJD OBJ(*ALL/*ALL) OBJTYPE(*QRYDFN) OUTPUT(*OUTFILE) OUTFILE(BER400/LSTQRY)

RCVF OPNID(DSPOBJ)

RTVQMQRY QMQRY(&DSPOBJ_ODLBNM/&DSPOBJ_ODOBNM) SRCFILE(BER400/QQRYSRC) SRCMBR(&DSPOBJ_ODOBNM) ALWQRYDFN(*ONLY)

J'obtiens un fichier source avec autant de sources que de qry et dans chaque on a les fichiers en clair

exemple de 'source qry '  recupéré

H QM4 05 Q 01 E V W E R 01 03 16/15/12 05:00
V 1001 050 liste des clients avec remise (-> AM Guimard)
V 5001 004 *HEX
SELECT
ALL NUMCLI, NOMCLI, NOTAR4
FROM QS36F/CLIENT T01
WHERE CAT = 6
AND TAUREM > 0
ORDER BY NOTAR4 ASC

ensuite   dans pdm 25 f13 et je retrouve tous les qry qui utilisent tel fichier   ....

Moi je fais comme ca quand je modifie un fichier , car on a des QRY lancés en Auto dans des Cl (la nuit!)

 

 

 

Oui, j'avais déposé le même genre de source dans ce sujet ; mais cela permet seulement de repérer les fichiers utilisés, pas de regénérer les Querys.

Merci ctalhouet et Remit.

Finalement je n'avais "que" une cinquantaine de querys, je les ai donc regénérés chacun manuellement via WRKQRY, çà m'a pris 15 minutes. C'est juste un peu répétitif et rébarbatif.

L'idéal serait, comme je l'ai lu ici sur un autre poste, de prendre le temps à l'occasion de les convertir en requete SQL.

Il faudra alors tout de même retourner dans les programmes appelant ces Query pour changer le "RUNQRY" par un RUNSQLSTM  et les recompiler.

Cà faciliera ensuite nettement la maintenance : si les noms de fichiers utilisés et leurs zones utilisées n'ont pas changé, rien à faire ; pas de compil...

Merci à vous.