PATTERN : Générer un modèle à partir d'une chaîne

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 :


Haut de page

x
Syntaxe : Créer un modèle à partir d'une chaîne d'entrée
PATTERN (length, source_string,  output)

où :

length

Numérique

est la longueur de source_string.

source_string

Alphanumérique

est la chaîne source encadrée par des guillemets simples, ou un champ contenant celle-ci.

output

Alphanumérique

est le nom du champ à contenir le résultat ou le format du champ entre guillemets simples.



Exemple : Création d'un modèle à partir de données alphanumériques

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