Fin COMPARAISON OPNQRYF AVEC SDD ET SQL . La commande OPNQRYF (Ouvrir un fichier de requête) permet d'ouvrir un fichier recevant les enregistrements résultant d'une demande d'analyse de base de données. Une fois ouvert, le fichier ressemble à un fichier base de données ouvert à l'aide de la commande OPNDBF (Ouvrir un fichier base de données). Les enregistrements qui figurent dans ce fichier sont accessibles aux programmes en langage évolué partageant le chemin d'ouverture (ODP). SHARE(*YES) Cette commande crée donc dynamiquement un "filtre" entre la base de données et les pgm. Le language SDD et SQL aboutissent au même résultat machine: La création d'un ODP.Seul moyen pour un pgm d'acceder aux données. SDD : l'ODP est crée à partir de critéres stockés définitivement dans le définition de fichier (souvent plus rapide mais moins souple) SQL : à l'inverse crée cet ODP à partir de critéres PGM (plus souple mais moins performant) |
Cette commande permet de combiner les fonctions des bases de données suivantes : o Joindre les enregistrements de plusieurs fichiers, membres et formats d'enregistrement. La jonction peut s'effectuer entre objets de même nature ou non. SDD fichiers logiques joints. SQL requete sur plus d'un fichier ou vue. o Calculer de nouvelles valeurs de zones à l'aide d'opérations numériques et alphanumériques sur les valeurs de zones et les constantes. SDD redéfinition de zone (RENAME,CONCAT,SST et TRNTBL) mais pas de calcul. SQL <expression> SQL offrant les mêmes possibilités que OPNQRYF. |
o Grouper des enregistrements selon des valeurs communes appartenant à une ou plusieurs zones et calculer des fonctions globales, telles que la valeur minimum ou moyenne de zone, pour chaque groupe. SDD non (aucune fonction de groupage) SQL clause GROUP BY o Choisir une sous-liste des enregistrements disponibles, avec sélection avant et après de groupage des enregistrements. SDD non (aucune fonction de groupage) SQL clause HAVING o Classer les enregistrements de résultats selon la valeur d'une ou plusieurs zones clés. SDD définition de clé (K en colonne 17) SQL clause ORDER BY |
PARAMETRES DE LA COMMANDE ............................................................................ : o Spécifications de fichier (FILE) : : : : Indique un ou plusieurs fichiers base de données. : : : : Tous les fichiers indiqués doivent être des fichiers bases de : : données physiques ou logiques, ou bien des fichiers DDM. : : (fichier joints SDD et vue SQL supportés) : : : : : : SDD PFILE ou JFILE : : : : : : : : SQL clause FROM : : : : : : : : : :..........................................................................: |
............................................................................ : o Options d'ouverture (OPTION) : : : : Indique l'option d'ouverture utilisée pour le fichier d'analyse. Les : : options choisies lors de la première ouverture effective d'un : : fichier ne seront pas modifiées lors des prochaines ouvertures : : partagées. Vous pouvez indiquer soit *ALL , soit une liste pouvant : : compter jusqu'à quatre valeurs dans l'ordre de votre choix, : : représentant une combinaison des valeurs *INP , *OUT , *UPD et *DLT . : : : : : : : : SDD non (c'est le pgm qui determine le type d'ouverture) : : : : : : : : SQL clause FOR UPDATE OF (dans un déclaration de curseur). : : : : : : ==> A noter que le seul type d'ouverture possible avec une jonction : : ou un traitement récapitulatif est *INP. : :..........................................................................: |
............................................................................ : o Spécifications de format (FORMAT) : : : : Indique le format d'enregistrement utilisé (c.a.d comment formater : : les enregistrements devant être envoyés au programme). : : les variables de ce format sont à définir dans le paramètre MAPFLD : : Spécifications zone mappée si elles apparaissent plusieurs fois sur : : l'ensemble des fichiers (MAPFLD servant à qualifier) ou : : si elles n'apparaissent jamais dans le(s) fichier(s) ouvert(s) : : (MAPFLD servant à indiquer l'expression de définition CALCUL, FONCTION: : RECAPITULATIVE ou TRAITEMENT DE CHAINE DE CARACTERES) : : : : SDD Redéfinition de zone (mais pas d'expression arithmetique) : : RENAME, CONCAT, SST, TRNTBL et rédéfinition de type et/ou de lg. : : Le format d'un fichier logique peut utiliser le format d'un autre : : fichier avec le mot-cle FORMAT. : : SQL suite d'expression apres la clause SELECT. : : : : Toutes les possibilités de OPNQRYF. : : : : (utilisation de tables de conversion = TRNTBL,SDD) : :..........................................................................: |
............................................................................ : o Expression de sélection (QRYSLT) : : : : Indique les valeurs de sélection utilisées (avant groupage) pour : : déterminer quels enregistrements sont accessibles par la commande : : OPNQRYF. : : : : *ALL : : Pas de sélection. : : : : 'sélection-analyse' : : Entrez (entre apostrophes) une expression : : : : : : : : OPERATEURS LOGIQUES : : ceux du CL: *EQ,*NE,*GT,*GE,*LT,*LE,*NG,*NL : : plus *CT contient : : *XOR OU exclusif : : : : : :..........................................................................: |
............................................................................ : FONCTIONS : %ABSVAL valeur absolue : : : : %SST extraction : : : : %DIGITS conversion numérique/alpha : : : : %AND , %OR , %NOT : : : : %XLATE conversion : : : : %RANGE intervalle : : : : %VALUES liste de valeurs : : : : %WLDCRD recherche configuration de caractères: : : : une opération mathématique peut servir : : aussi comme zone de sélection : : ex: QRYSLT('A/B > 2') : : QRYSLT('QTE * PU > 10000.00') : :..........................................................................: |
............................................................................ : : : SDD Sélection/omission en définition de C.A : : : : par défaut sélection/omission à la maintenance de l'index : : (ouveture rapide) : : peuvent être demandées à la lecture du logique (DYNSLT) : : : : OPERATEURS: COMP (NE,EQ,GT etc...) + RANGE + VALUES : : : : Conditions complexes (reliées par ou/et) acceptées, : : Fonction XOR non supportée. : : : : SQL Clause WHERE # : : : : Séléction à la "lecture" : : : : OPERATEUR les opérateurs logiques traditionnels (sauf XOR) : : BETWEEN (= RANGE) : : LIST (= VALUES) : : LIKE (= %WLRCRD-OPNQRYF) : :..........................................................................: |
............................................................................ : o Spécifications de zone-clé (KEYFLD) : : : : Indique le nom d'une ou plusieurs zones clés utilisées pour classer : : les enregistrements sélectionnés ou indique que le chemin d'accès : : du premier ou unique fichier(*FILE) : : : : Avec une jonction la clé peut appartenir a n'importe quel fichier. : : : : ATTENTION la valeur par défaut est *NONE : : : : SDD Définition du C.A # : : : : (lettre K en colonne 17) : : : : Sur un fichier joint la clé doit appartenir au fichier primaire. : : : : SQL Clause ORDER BY # : : : : Sans restriction : : : :..........................................................................: |
............................................................................ : o Zones pour une seule clé (UNIQUEKEY) : : : : Indique si l'analyse est limitée aux enregistrements ayant des : : valeurs de clé uniques et précise combien de zones clés doivent être : : uniques. : : : : Ce paramètre permet de ne recevoir que le premier enregistrement : : d'un groupe.Le nombre indiqué permet de préciser le nombre de : : zones clés identifiant un groupe. : : : : SDD non # : : : : Le mot-clé UNIQUE permet de refuser les enregistrements qui : : provoqueraient une clé en double à l'écriture. : : : : SQL # : : : : La clause DISTINCT permet de ne pas recevoir les enregistrements : : identiques (le contrôle d'identité se faisant sur la totalité de : : l'enregistrement et non sur le contenu des clés). : :..........................................................................: |
............................................................................ : o Spécification zone de jonction (JFLD) : : : : Indique, si l'analyse consiste à joindre des enregistrements, : : le(s) critère(s) de jonction entre fichiers. : : : : Les valeurs possibles sont les suivantes : : : : : *NONE (les critères de jonction peuvent être indiqués dans QRYSLT) : : ou : : zone-départ-qualifiée : : zone-arrivée-qualifiée : : opérateur-jonction *EQ *GT *GE *LT *LE *NE : : : : SDD JFLD + JDUPSEQ # : : : : Le critère de jonction est forcement l'égalité. : : : : SQL # : : Le critère de jonction est indiqué dans la clause WHERE permettant : : de restreindre le résultat d'un produit cartésien. : :..........................................................................: |
............................................................................ : o Jonction avec valeurs/défaut (JDFTVAL) : : : : Indique si le fichier d'analyse doit contenir les jonctions : : non abouties. : : : : *NO le fichier ne contient que les enregistrements pour lesquels : : la jonction est complete. : : : : *YES : : le fichier contient tous les enregistrements. : : les zones du(des) fichier(s) secondaires sont initialisées en : : cas de jonction incomplete. : : : : *ONLYDFT : : Le fichier ne contient que les enregistrements pour lesquels : : le jonction est incomplete. : : : : SDD JDFTVAL # : : Sans JDFTVAL = JDFTVAL(*NO) , Avec = JDFTVAL(*YES) : : *ONLYDFT impossible (ou avec sélection et DYNSLT) : :..........................................................................: |
............................................................................ : SQL : : : : La notion de PRIMAIRE étant inconnue il n'est pas possible de : : préciser ce paramètre tel quel. : : Cependant avec la clause EXIST (R 1.3) il est possible d'obtenir : : l'équivalent (performances non comparables) : : : : : ===> Identique à *ONLYDFT : : SELECT S.NOM, S.PRENOM, S.NOAGENCE : : FROM STAGIAIRE S WHERE NOT EXISTS : : (SELECT * FROM AGENCE where : : NOAGENCE = S.NOAGENCE) : : : : ===> Identique à *JDFTVAL : : SELECT S.NOM, S.PRENOM, A.NOMAGENCE : : FROM STAGIAIRE S, AGENCE A WHERE S.NOAGENCE = A.NOAGENCE : : UNION SELECT NOM, PRENOM, 'INCONNUE ' : : FROM STAGIAIRE S WHERE NOT EXISTS : : (SELECT * FROM AGENCE where : : NOAGENCE = S.NOAGENCE) /order by possible : :..........................................................................: |
............................................................................ : o Ordre de jonction des fichiers (JORDER) Valide uniquement avec JDFTVAL: : : : *ANY : : Vous pouvez indiquer l'ordre de jonction de votre choix, le : : système le prendra en compte lors de la création : : d'enregistrements d'analyse. Il est possible qu'une analyse : : renvoie dans un ordre différent les enregistrements obtenus si : : la même analyse est lancée deux fois de suite (en fonction de : : facteurs tels que le nombre d'enregistrements figurant dans les : : fichiers concernés). La valeur *ANY permet au système : : d'améliorer plus facilement les performances du traitement des : : enregistrements par la commande OPNQRYF, et ce plus que toute : : autre valeur de l'invite Ordre de jonction des fichiers : : (paramètre JORDER). : : : : *FILE : : L'ordre de déclaration dans le paramètre FILE est respecté. : : : : SDD non : : SQL non : :..........................................................................: |
............................................................................ : o Noms zones récapitulatives (GRPFLD) : : : : Indique les noms de zones utilisés pour grouper les résultats : : d'analyse. Un enregistrement d'analyse est créé pour chaque groupe : : d'enregistrements (après jonction, si nécessaire) choisi en regard : : de l'invite Expression de sélection (paramètre QRYSLT). : : : : Permet d'utiliser les fonctions récapitulatives %COUNT(), %AVG() etc : : : : : : SDD non : : : : SQL GROUP BY : : : : Meme principe, mêmes fonctionnalités. : : : : : : : : : : : :..........................................................................: |
............................................................................ : o Expression sélection récap (GRPSLT) : : : : Indique les valeurs de sélection permettant de déterminer après : : groupage les enregistrements accessibles par la commande OPNQRYF. : : : : (Sélection sur le résultat d'un traitement récapitulatif) : : : : Meme possibilités que QRYSLT : : : : SDD non : : : : : : SQL HAVING : : : : Meme principe, : : : : : : : : : : : :..........................................................................: |
............................................................................ : o Spécifications zone mappée (MAPFLD) : : : : Ce paramètre permet de qualifier une zone dont le nom apparait : : plusieurs fois et de définir une nouvelle zone en indiquant : : une expression. : : : : nom de zone mappée : : expression de définition zone : : + 'PRODUIT/QTESTO' (nom de zone qualifiée ou non) : : + 'QTESTO * PAMP' (expression numérique) : : + '%AVG(QTESTO)' (fonction récaptitulative) : : + '%SST(NOM 1 2) (traitement chaine de caracteres) : : Type de zone (*CHAR, *ZONED, *DEC) et longueur : : : : SDD JREF et redéfinition de zone : : RENAME, CONCAT, SST, TRNTBL (pas de fonctions récapitulatives) : : : : SQL Suite d'expressions après la clause SELECT : : Memes possibilités que OPNQRYF. : : : :..........................................................................: |
............................................................................ : o Optimisation performance (OPTIMIZE) : : : : Indique quel moyen d'optimisation est utilisé par le système pour : : déterminer la manière d'effectuer la sélection et la jonction : : nécessaires aux autres spécifications relatives à cette commande. : : Si, lorsqu'aucun chemin d'accès existant ne peut être partagé, un : : nouveau chemin d'accès doit être créé pour les invites : : Spécifications de zone-clé (paramètre KEYFLD) ou Noms zones : : récapitulatives (paramètre GRPFLD), celui-ci est entièrement : : constitué sans tenir compte de la valeur indiquée pour ce paramètre. : : L'optimisation concerne en premier lieu la durée de traitement de la : : sélection. : : : : *ALLIO : : : : Le système tente de raccourcir la durée totale de traitement de : : l'analyse, sachant que la totalité des enregistrements d'analyse : : se trouve sur le fichier. : : : : A utiliser en batch ou seul le temps global est à considerer : :..........................................................................: |
............................................................................ : : : *FIRSTIO : : Le système tente de raccourcir la durée de la procédure : : d'ouverture du fichier d'analyse et d'extraction des : : enregistrements contenus dans la première zone tampon. : : : : A utiliser avec SEQONLY(*YES) : : : : Par exemple OPTIMIZE(*FIRSTIO) SEQONLY(*YES 15) : : sera tres interessant avnt un pgm interactif utilisant : : un sous-fichier en chargement page à page avec SFLPAG(15) : : *MINWAIT : : Le système tente de réduire les délais d'attente lorsqu'il lit : : les enregistrements du fichier. : : : : Cette option est à utiliser quand le résultat de votre requete : : sera traité plusieurs fois. : : Le système rend alors les sélections plus éfficaces (sans DYNSLT) : : pour permettre un accès plus rapide aux enregistrements de la part: : des pgms. (==> contruction CA donc OPNQRYF plus lent) : :..........................................................................: |
............................................................................ : o Limite à séquentiel uniquement (SEQONLY) : : : : Indique si un traitement exclusivement séquentiel est utilisé pour : : le fichier et précise le nombre d'enregistrements regroupés lors de : : l'exécution d'opérations de lecture et d'écriture sur le fichier : : d'analyse. : : : : *YES Suivi d'un nombre d'enregistrements : : Si le nombre d'enreg.n'est pas précisé le système calcule le : : nombre d'enregistrements pouvant être placés dans 4096 Octets. : : *NO : : : : Ces paramètres n'existent pas tel quel avec SDD ou SQL : : : : Cependant la commande OVRDBF contient les paramètres SEQONLY et : : NBRRCD : : : : Les options d'optimisations peuvent être pensées à la contruction : : d'un fichier SDD (DYNSLT pour partage implicite d'un CA existant, : : Parametre MAINT pour la maintenance du CA) : :..........................................................................: |
............................................................................ : o Contrôle de validation actif (COMMIT) : : : : Indique si ce fichier est placé sous contrôle de validation. : : : : *NO : : Le fichier d'analyse ouvert n'est pas placé sous contrôle de : : validation. : : : : *YES : : Le fichier d'analyse ouvert est placé sous contrôle de : : validation. : : : : SDD : : C'est le pgm qui indique les fichiers à placer sous contrôle : : de validation (en RPG spécif F K COMMIT) : : (en COBOL UNDER COMMITMENT CONTROL) : : : : SQL : : Ce paramètre est indiqué dans la commande STRSQL : : ou dans la commande CRTSQLxxx : :..........................................................................: |