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
ENDNotez 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
| WebFOCUS |