Au lieu de saisir des valeurs de test dans une phrase WHERE ou IF, vous pouvez les stocker dans un fichier et faire référence au fichier dans la requête de rapport. Vous pouvez, par la suite sélectionner des enregistrements selon des tests d'égalité ou d'inégalité effectués sur les valeurs stockées dans le fichier.
Cette méthode vous offre les avantages suivants :
Si vous utilisez un fichier HOLD, il doit être soit au format BINARY (le format par défaut) soit au format ALPHA (caractères simples). Si vous utilisez un fichier SAVE, il doit être au format ALPHA (le format par défaut). Vous avez aussi la possibilité d'utiliser un fichier SAVB si les valeurs de sélection sont alphanumériques. Pour plus de détails sur les fichiers HOLD et SAVE, consultez Enregistrer et réutiliser la sortie de rapport.
Notez quedans z / OS, un fichier HOLD en format BINARY utilisé pour les valeurs de sélection doit être attribué à ddname HOLD (la valeur par défaut). Les autres fichiers d'extraction utilisés à cet effet peuvent être attribués à tout ddname.
WHERE [NOT] fieldname IN FILE file
où :
Il s'agit du ddname attribué par une commande DYNAM ou TSO ALLOCATE pour z/OS.
Pour plus d'informations, consultez Notes d'utilisation à prendre en compte lors de la lecture de valeurs d'un fichier.
WHERE field1 operator1 (file1) [{OR|AND} field2 operator2 (file2) ... ]
où :
Est tout nom de champ ou alias valide.
Peut s'agir de l'opérateur EQ, IS, NE, ou IS-NOT.
Sont les noms des fichiers.
Il s'agit des ddnames attribués par une commande DYNAM ou TSO ALLOCATE pour z/OS.
IF fieldname operator (file) [OR (file) ... ]
où :
Il s'agit du ddname attribué par une commande DYNAM ou TSO ALLOCATE pour z/OS.
Afin de pouvoir lire des critères de sélection dans un fichier, le fichier doit se conformer aux règles suivantes :
Pour IF, plus d'informations peuvent s'afficher sur une ligne, mais seulement la première valeur de données rencontrée sur la ligne est utilisée.
Si votre liste de littéraux est trop grande, un message d'erreur s'affiche.
IF fieldname operator (filename) OR literal...etc...
Créez un fichier appelé EXPER, qui contient les valeurs B141 et B142.
Cette requête utilise des critères de sélection du fichier EXPER. Tous les enregistrements pour lesquels le champ PRODUCT_ID a une valeur de B141 ou de B142 sont sélectionnés :
TABLE FILE GGPRODS SUM UNIT_PRICE BY PRODUCT_DESCRIPTION WHERE PRODUCT_ID IN FILE EXPER END
Si vous incluez les critères de sélection directement après la requête, la phrase WHERE spécifie les valeurs explicitement :
WHERE PRODUCT_DESCRIPTION EQ 'B141' or 'B142'
La sortie est :
Unit Product Price ------- ----- French Roast 81.00 Hazelnut 58.00
La requête suivante contre la source de données GGPRODS crée un fichier HOLD nommé EXPER1 qui contient les IDs des produits B141, B142, B143, et B144.
TABLE FILE GGPRODS BY PRODUCT_ID BY PRODUCT_DESCRIPTION WHERE PRODUCT_ID EQ 'B141' OR 'B142' OR 'B143' OR 'B144' ON TABLE HOLD AS EXPER1 FORMAT ALPHA END
La requête suivante contre la source de données GGPRODS crée un fichier HOLD nommé EXPER2 qui contient les IDs des produits B144, F101, et F102.
TABLE FILE GGPRODS BY PRODUCT_ID BY PRODUCT_DESCRIPTION WHERE PRODUCT_ID EQ 'B144' OR 'F101' OR 'F102' ON TABLE HOLD AS EXPER2 FORMAT ALPHA END
La requête suivante sélectionne les valeurs qui existent dans EXPER1 et EXPER2.
TABLE FILE GGPRODS SUM PRODUCT_DESCRIPTION BY PRODUCT_ID WHERE PRODUCT_ID EQ (EXPER1) AND PRODUCT_ID IS (EXPER2) ON TABLE SET PAGE NOPAGE END
La sortie est :
Product Code Product ------- ------- B144 Kona
Créez un fichier appelé EXPER, qui contient les valeurs B141 et B142.
Cette requête utilise des critères de sélection du fichier EXPER. Tous les enregistrements pour lesquels le champ PRODUCT_ID a une valeur de B141 ou de B142 sont sélectionnés :
TABLE FILE GGPRODS SUM UNIT_PRICE BY PRODUCT_DESCRIPTION IF PRODUCT_ID IS (EXPER) END
Si vous incluez les critères de sélection directement dans la requête, la phrase IF spécifie les valeurs explicitement :
IF PRODUCT_DESCRIPTION EQ 'B141' or 'B142'
La sortie est :
Unit Product Price ------- ----- French Roast 81.00 Hazelnut 58.00
WebFOCUS |