Comment : |
La fonction PATTERN examine une chaîne source et produit un modèle indiquant la séquence de nombres, de lettres majuscules et de lettres minuscules dans la chaîne d'entrée. Cette fonction est utile pour examiner des données pour vérifier qu'elles suivent un modèle.
Dans le modèle de sortie :
PATTERN (length, source_string, output)
où :
Numérique
est la longueur de source_string.
Alphanumérique
est la chaîne source encadrée par des guillemets simples, ou un champ contenant celle-ci.
Alphanumérique
est le nom du champ à contenir le résultat ou le format du champ entre guillemets simples.
Les 19 enregistrements suivants sont stockés dans le fichier séquentiel à format fixe (avec LRECL 14) TESTFILE :
212-736-6250 212 736 4433 123-45-6789 800-969-INFO 10121-2898 10121 2 Penn Plaza 917-339-6380 917-339-4350 (212) 736-6250 (212) 736-4433 212-736-6250 212-736-6250 212-736-6250 (212) 736 5533 (212) 736 5533 (212) 736 5533 10121 Æ 800-969-INFO
Le fichier principal est :
FILENAME=TESTFILE, SUFFIX=FIX , SEGMENT=TESTFILE, SEGTYPE=S0, $ FIELDNAME=TESTFLD, USAGE=A14, ACTUAL=A14, $
La requête suivante produit un modèle pour toutes les instances de TESTFLD et affiche celles-ci sous forme du modèle créé. Elle montre le compte de chaque modèle et le pourcentage que représente chaque modèle du compte total. La commande PRINT montre quelles valeurs de TESTFLD ont produit chaque modèle.
FILEDEF TESTFILE DISK testfile.ftmDEFINE FILE TESTFILE
PATTERN/A14 = PATTERN (14, TESTFLD, 'A14' ) ;
END
TABLE FILE TESTFILE
SUM CNT.PATTERN AS 'COUNT' PCT.CNT.PATTERN AS 'PERCENT'
BY PATTERN
PRINT TESTFLD
BY PATTERN
ON TABLE COLUMN-TOTAL
END
Notez que comme l'avant-dernière ligne a produit un modèle à partir d'une chaîne d'entrée contenant un caractère non imprimable, celui-ci a été changé en un X. Dans toutes les autres instances, chaque chiffre numérique a produit un 9 dans la chaîne de sortie, chaque lettre majuscule a produit un « A » et chaque lettre minuscule a produit un « a ». La sortie est :
PATTERN COUNT PERCENT TESTFLD ------- ----- ------- ------- (999) 999 9999 3 15.79 (212) 736 5533 (212) 736 5533 (212) 736 5533 (999) 999-9999 2 10.53 (212) 736-6250 (212) 736-4433 9 Aaaa Aaaaa 1 5.26 2 Penn Plaza 999 999 9999 1 5.26 212 736 4433 999-99-9999 1 5.26 123-45-6789 999-999-AAAA 2 10.53 800-969-INFO 800-969-INFO 999-999-9999 6 31.58 212-736-6250 917-339-6380 917-339-4350 212-736-6250 212-736-6250 212-736-6250 99999 1 5.26 10121 99999 X 1 5.26 10121 Æ 99999-9999 1 5.26 10121-2898 TOTAL 19 100.00
Information Builders |