ENSEMBLES DE CARACTÈRES

Les données en entrée qui doivent être traitées peuvent être définies:

Une des caractéristiques des plus simples et des plus utiles est l'appartenance à un intervalle de caractères:

'0':'9'est un patron de fouille qui se vérifie lorsqu'un caractère en entrée est un caractère numérique compris entre '0' et '9' inclusivement.

'A':'Z'se vérifie lorsqu'un caractère en entrée est une lettre majuscule, c.à.d un caractère entre 'A' et 'Z' inclusivement, car on a indiqué les bornes entre apostrophes ( ' ).

"a":"z"se vérifie lorsque le caractère en entrée est une lettre, qu'elle soit majuscule ou minuscule, accentuée ou pas, car on a indiqué les bornes entre guillemets ( " ).

" ":"~"se vérifie pour n'importe quel caractère affichable.


Un intervalle de caractères est une portion de la table des caractères possibles pour votre ordinateur.

Un intervalle se définit par deux bornes, séparées par un deux-points (:):

Borne inférieur: Borne supérieur

Ces bornes s'écrivent comme des chaînes mais ne peuvent contenir qu'un seul caractère.



Un caractère appartient à un intervalle de caractères s'il se trouve parmi la suite de caractères allant de la borne inférieurjusqu'à la borne supérieur.

Un patron de fouille défini au moyen d'un intervalle de caractères se vérifie lorsque le caractère en entrée appartient à cet intervalle.


Les directives suivantes permettent de supprimer tous les codes postaux canadiens présents dans un texte:

(1)/PlusDeCode:
(2) 'A':'Z','0':'9','A':'Z',' ','0':'9','A':'Z','0':'9' = .

La transformation PlusDeCode débute à la ligne (1) et comporte une seule règle (ligne (2)).

Cette règle est formée de sept patrons de fouille qui définissent les caractères permis pour chacune des sept positions d'un code postal canadien.
Ce code postal est composé d'une lettre, un chiffre, une lettre, un espace, un chiffre, une lettre, un chiffre (Z9Z 9Z9).

La règle s'applique donc lorsque les sept patrons se vérifient consécutivement sur les données en entrée.

Lorsque la règle s'applique, le résultat correspondant ( = . )(c'est à dire rien !) est inscrit en sortie.

Lorsque la règle ne s'applique pas, les données en entrée sont copiées telles quelles en sortie.

Le fichier de sortie sera donc une copie du fichier d'entrée, mais sans aucun code postal.

UTILISATION DE VARIABLES

Etudions maintenant en détail l'exemple utilisé dans différents pamphlets publicitaires de ADAPT: les directives suivantes permettent de transformer les dates produites par un logiciel américain (mm/jj/aa) en dates conformes au système international (SI) (aa-mm-jj):

(1)/International:
(2)MOIS 2 '0':'9','/',JOUR 2 '0':'9','/',ANNEE 2 '0':'9'
(3)= ANNEE,'-',MOIS,'-',JOUR.

L'entête du rapport suivant:

Bilan mensuel produit le 05/12/85 Page 1
Période du 04/01/85 au 04/30/85

devient, grâce à la transformation International:

Bilan mensuel produit le 85-05-12 Page 1
Période du 85-04-01 au 85-04-30

La première ligne des directives identifie le début de la transformation International.

Cette transformation ne comporte qu'une seule règle qui débute à la ligne (2) et se termine à la ligne (3).


ADAPT permet d'écrire une directive sur plusieurs lignes, à condition de ne pas couper un nom, un symbole, un chiffre ou une chaîne de caractères.


Donc l'unique règle de la transformation International:

(2)MOIS 2 '0':'9','/',JOUR 2 '0':'9','/',ANNEE 2 '0':'9'
(3)= ANNEE,'-',MOIS,'-',JOUR.

débute par la définition de la structure des données à retrouver dans le fichier d'entrée (ligne (2)). Elle indique qu'il faut rencontrer deux chiffres ( MOIS) suivis d'une barre oblique, suivis de deux autres chiffres (JOUR) suivis d'une barre oblique, suivis de deux chiffres (ANNEE). (N.B. Le facteur de répétition 2 qui se trouve devant quelques uns des patrons de cette règle est expliqué en détail au chapitre suivant REGROUPEMENTS ET REPETITIONS).

La règle se termine par la définition du résultat à produire lorsque les patrons de fouille se vérifient (ligne (3)).


Une variable est une zone de la mémoire de l'ordinateur qui porte un nom et qui peut contenir des données.

Un nom de variable peut se trouver au début de chaque patron de fouille: Lorsque ce patron se vérifie, la portion des données en entrée qui lui correspond est stockée dans la variable.


L'unique règle de la transformation International comporte cinq patrons de fouille:

MOIS 2 '0':'9':ce patron se vérifie lorsque deux chiffres sont rencontrés consécutivement dans les données en entrée. Ces deux caractères sont alors conservés dans la variable MOIS.

'/':ce patron se vérifie si une barre oblique est rencontrée dans les données immédiatement après les deux chiffres.

JOUR 2 '0':'9':ce patron se vérifie lorsque deux chiffres sont ensuite rencontrés. Ces deux caractères sont alors conservés dans la variable JOUR.

'/':ce patron se vérifie si une barre oblique est rencontrée dans les données immédiatement après les deux chiffres indiquant le jour.

ANNEE 2 '0':'9':ce patron se vérifie lorsque deux chiffres sont finalement rencontrés. Ces deux caractères sont alors conservés dans la variable ANNEE.

La ligne (3) de cet exemple correspond au résultat produit lorsque le patron de fouille est complètement vérifié. A ce moment là, les variables MOIS, JOUR et ANNEE contiennent chacune des éléments de la date rencontrée. Il ne suffit plus que de les indiquer dans l'ordre désiré pour produire le résultat requis:

ANNEE, '-', MOIS, '-', JOUR


Dans le résultat à produire, il suffit de nommer une variable pour que son contenu soit inscrit dans le fichier de sortie.

Le contenu d'une variable peut être restitué aussi souvent que nécessaire: vous pouvez donc nommer plusieurs fois une variable pour inscrire son contenu plusieurs fois dans le fichier de sortie.


Dans notre exemple, le contenu de la variable ANNEE est inscrit en sortie, suivi d'un tiret
( '-' ), puis du contenu de MOIS, d'un autre tiret ( '-' ), et enfin du contenu de JOUR.

Vous voyez donc comment une série d'informations est d'abord retrouvée au moyen des critères indiqués par les patrons de fouille et comment elle peut ê tre ensuite retranscrite sous une toute autre forme.


Un nom (que ce soit un nom de transformation, de variable ou de toutes autre structure, ADAPT documentée plus loin (types de données, constantes,etc.)) débute par une lettre ou un souligné (_) et peut ensuite être suivi de lettres, de chiffres ou du caractère souligné (_).

Les lettres majuscules, minuscules ou accentuées y sont considérées équivalentes:

ChangerLesRôles est équivalent à CHANGERLESROLES

Le souligné (_) est donc permis dans un nom:Code postal N° Assurance sociale, ce qui permet de relier ensemble les mots d'un nom composé.


Dans la transformation International, il est possible de mieux s'assurer de la validité de la date en indiquant plus précisément l'intervalle de caractè res auquel doit appartenir chacun des caractères de cette date:

(1)/International:
(2)MOIS_DIZAINES '0':'1' ,
(3)MOIS_UNITES '0':'9' , '/' ,
(4)JOUR_DIZAINES '0':'3' ,
(5)JOUR_UNITES '0':'9' , '/' ,
(6)ANNEE_DIZAINES '0':'9' ,
(7)ANNEE_UNITES '0':'9' =
(8)ANNEE_DIZAINES, ANNEE_UNITES,
(9)'-', MOIS_DIZAINES, MOIS_UNITES,
(10)'-', JOUR_DIZAINES, JOUR_UNITES .

Les lignes (2) à (7) définissent, pour chacun des caractères qui composent une date, les intervalles de caractères permis. Le chiffre des dizaines peut alors être limité aux seules valeurs valides pour le numéro du mois (ligne (2),'0' ou '1') et pour le numéro du jour (ligne (4), '0' à '3').

Les lignes (8) à (10) définissent le résultat à produire lorsque des données en entrée respectent toutes ces conditions.