Figure D-5.4.4, (N), p. 4
Figure D.6.4.1 (comme tableau) [T39.100], p. 13
MONTAGE: § D.7 SUR LE RESTE DE CETTE PAGE

delim @@

| 5i'

D.5.4

Directives applicables a la representation´ en fonction des etats´ et aux el´ ements´

graphiques



Le present´ paragraphe decrit´ la representation´ en fonction des etats´ du LDS/GR et des el´ ements´ graphiques utilises.´

Le § D.5.4.1 contient des observations d'ordre gen´ eral´ sur la
caracteristiques,´ applications pertinentes et variantes.

representation´ en fonction des

etats:´


Le § D.5.4.2 explique la description d'etats´ au moyen d'el´ ements´ graphiques.

D.5.4.1 Observations d'ordre gen´ eral´ sur la representation´ en fonction des etats´

Le LDS/GR offre trois versions differentes´ pour decrire´ un diagramme de processus.



exclusivement par des symboles d'action explicites.

La seconde est appelee´ version du LDS/GR orientee´ vers les etats´ ou extension graphique du LDS orientee´ vers



qu'implicitement, par les differences´ entre les etats´ de depart´ et d'arrivee.´



On trouvera des exemples de ces trois versions dans l'annexe E du present´ fascicule.

La version orientee´ vers les transitions convient lorsque la sequence´ des actions presente´ plus d'importance que la description detaill´ ee´ des etats.´



l'explication graphique intuitive est souhaitable et qu'il est interessant´ de conna| tre les ressources ainsi que leurs relations avec les etats.´

Les illustrations d'etat´ sont gen´ eralement´ exprimees´ par des el´ ements´ graphiques indiquant les ressources



el´ ements´ graphiques
en definissant´

graphiques appropries;´ l'utilisateur peut donc employer cette representation´
des el´ ements´ graphiques appropries´ selon les besoins.

pour n'importe quelle application




et les descriptions detaill´ ees´ des etats.´

D.5.4.2 Illustration d'etat´ et el´ ement´ graphique

D.5.4.2.1 Element´ graphique et texte qualificatif

Si l'on a choisi l'option illustration d'etat,´ celle-ci se compose d'el´ ements´ graphiques et d'un texte qualificatif,



Cette combinaison rend comprehensibles´ les illustrations d'etat.´ A titre d'exemple, la figure D-5.4.1 a) donne la



numerotation´ emettant´ un signal permanent vers l'environnement.

A noter que les signaux de sortie (signaux non permanents) et les ressources pertinentes ne sont pas decrits´ dans les illustrations d'etat;´ les signaux de sortie peuvent | tre decrits´ dans un diagramme de transition.

L'exemple c) montre un temporisateur dont l'expiration est toujours represent´ ee´ par une entree.´ A noter que l'illustration graphique recommandee´ pour le temporisateur comporte le signal d'entree´ pertinent t1.

Le dernier exemple, d), signifie qu'un enregistreur de messages vocaux est en cours de fonctionnement.







Chaque illustration d'etat´ doit comporter un nombre suffisant d'el´ ements´ graphiques afin de montrer:

a) quelles ressources le processus met en oeuvre au cours de l'etat´ represent´ e.´ Exemples: trajets de commutation, recepteurs´ de signalisation, emetteurs´ de signaux permanents et modules de commutation;

b) s'il y a en ce moment un ou plusieurs temporisateurs qui contr| lent le processus;



cours et quels abonnes´ sont taxes´ au cours de cette phase de l'appel;



relation avec des ressources du processus pendant l'etat´ en cours;

e) les signaux permanents de sortie qui sont emis´ dans cet etat;´

f ) la relation entre les signaux et ressources existants dans l'etat;´

g) l'inventaire des ressources concernant l'etat´ en cours du processus.

Figura D-5.4.1, (N), p. 1

D.5.4.2.3 Exemple

A titre d'exemple d'application des principes exposes´

ci-dessus, considerons´

l'etat´

de la figure D-5.4.2. On peut

voir que, dans cet etat:´




organes;

b) un

un temporisateur t0 surveille le processus;

c) aucune

d) l'abonn

aucune taxation n'est en cours;

l'abonne´ est identifie´ comme l'abonne´ A mais aucune autre information de categorie´

n'est prise en

consideration;´

e) les signaux d'entree´ suivants sont attendus: A on hook (A raccroche),´ digit (chiffre) (chiffre numerot´ e)´




f ) le signal permanent de sortie DT (tonalite´ de numerotation)´ a et´ e´ mis avant cet etat´ et pendant celui-ci.

D.5.4.2.4 Verification´ de la coherence´ de diagrammes LDS avec el´ ements´ graphiques

Figure D-5.4.2, (N), p. 2





d'informations; cependant, l'identification de la serie´ exacte d'operations´ accomplies au cours de la transition exige un



En outre, une simple observation de l'illustration d'etat´
transition.

ne permet pas de determiner´

l'ordre des actions dans la




directement commandes´ par ce processus. Par exemple, le processus d'appel partiellement specifi´ e´ dans la figure D-5.4.3 peut allouer ou liberer´ l'emetteur´ de tonalite´ d'appel, l'emetteur´ de sonnerie et les trajets de conversation; il peut egalement´ declencher´ ou arr| ter le temporisateur T4, mais il ne peut commander directement la condition du combine´ de l'abonne.´



normalement inlus dans une illustration d'etat:´

a) soit parce qu'ils indiquent les ressources et l'etat´

de l'environnement concernes´

par le signal d'entree´

du

processus pendant l'etat´ donne;´

b) soit pour ameliorer´ l'intelligibilite´ du diagramme.

D.5.4.2.5 Utilisation du symbole <<temporisateur>>

Que l'on emploie ou non des el´ ements´ graphiques, l'expiration d'un delai´ de temporisation est toujours represent´ ee´ par une entree.´

La presence´ d'un symbole de temporisateur dans une illustration d'etat´ implique qu'un temporisateur fonctionne pendant cet etat.´

Conformement´ au principe gen´ eral´

expose´ dans les Recommandations, le demarrage,´

Figure D-5.4.3, (N), p. 3 l'arr| t, le redemarrage´ et



a) pour montrer qu'une temporisation commence au cours d'une transition donnee,´ le symbole



b) inversement, pour montrer qu'une temporisation s'arr| te au cours d'une transition, le symbole temporisateur doit appara| tre sur l'illustration d'etat´ qui correspond au debut´ de cette transition et non sur celle qui



c) pour montrer qu'une temporisation est relancee´ au cours d'une transition un symbole explicite de t| che doit | tre represent´ e´ dans cette transition (on en voit deux exemples sur la figure D-5.4.4);



etat´ dont l'illustration porte le symbole <<temporisateur>> correspondant. Il peut naturellement arriver que plusieurs



Figure D-5.4.4, (N), p. 4

D.5.5

Diagrammes auxiliaires

Figure D-5.4.5, (N), p. 5

Pour faciliter la lecture et la comprehension´ de diagrammes de processus de grande taille et/ou complexes, l'auteur peut y ajouter des diagrammes auxiliaires informels. De tels documents ont pour but de donner une description synoptique ou simplifiee´ du comportement du processus (ou d'une partie de celui-ci). Les documents auxiliaires ne



On trouvera dans la presente´ section des exemples de certains diagrammes auxiliaires couramment utilises,´
notamment des diagrammes synoptiques d'etat,´ des matrices etat/signal,´ et des diagrammes de sequencement.´ (Le diagramme en arbre de bloc decrit´ au § D.4.4 est egalement´ un diagramme auxiliaire.)

D.5.5.1 Diagramme synoptique d'etat´

Son objectif est de donner une vue d'ensemble des etats´ d'un processus, et d'indiquer quelles transitions sont possibles entre eux. Etant donne´ qu'il s'agit de donner un apercu,¸ l'on peut negliger´ les etats´ ou les transitions de peu d'importance.



symboles de debut´ et d'arr| t.

Le symbole d'etat´ doit indiquer le nom de l'etat´ ref´ erenc´ e.´ Plusieurs noms d'etat´ peuvent | tre inscrits dans le symbole, et il est possible d'employer un asterisque´ (*) pour designer´ tous les etats.´



nom du signal ou de l'ensemble de signaux qui declenchent´ la transition.

On trouvera dans la figure D-5.5.1 un exemple de diagramme synoptique d'etat.´

Figure D-5.5.1, (MC), p. 6

Il est possible de repartir´
diagrammes obtenus porte
defaillance,´ etc.

sur plusieurs diagrammes le diagramme synoptique d'etat´ d'un processus; chacun des alors sur un aspect particulier, comme <<cas normal>>, traitement en cas de

Figure D-5.5.2, (N), p. 7


D.5.5.2 Matrice etat/signal´

La matrice etat/signal´ doit servir

doit servir de document <<preliminaire>>´

a un diagramme de processus important. Elle



Le diagramme se compose d'une matrice bidimensionnelle; celle-ci presente´ sur un axe tous les etats´ d'un processus, et sur l'autre tous les signaux d'entree´ valides d'un processus. L'etat´ suivant est donne´ pour chaque el´ ement´ de matrice, de m| me que les sorties possibles au cours de la transition. Une ref´ erence´ peut | tre indiquee´ pour permettre de trouver la combinaison donnee´ par les indices, si elle existe.



initial du processus.

Figure D-5.5.3, (MC), p. 8

Il est possible de fractionner la matrice en sous-parties reparties´
qu'emploie normalement l'usager dans la documentation.

Les signaux et les etats´ doivent | tre de pref´ erence´ regroupes´ de fa

sur plusieurs pages. Les ref´ erences´ sont celles de facon¸ que chaque partie de la matrice porte sur

un aspect particulier du comportement du processus.

D.5.5.3 Diagramme de sequencement´





ou plusieurs processus et leur environnement.



evidence.´

Les colonnes du diagramme indiquent les entites´ en communication (services, processus, blocs ou l'environnement).

Leurs interactions sont illustrees´ par un ensemble de lignes flech´ ees,´ dont chacune represente´ un signal ou un ensemble de signaux.

On peut annoter chaque sequence´
Chaque ligne est accompagnee´ d'une annotation
procedures).´

Figure D-5.5.4, (N), p. 9

afin de faire appara| tre clairement l'ensemble d'informations echang´ ees.´
d'une annotation qui donne les renseignements requis (noms des signaux ou de


On peut placer un symbole de decision´ dans les colonnes pour indiquer que la sequence´ suivante est valide si la condition indiquee´ est vraie. Dans ce cas, le symbole de decision´ appara| t gen´ eralement´ plusieurs fois; il indique les differentes´ sequences´ produites par chacune des valeurs de la condition.

Ce diagramme peut representer´ la totalite´ ou seulement un sous-ensemble significatif des sequences´ de signaux echang´ es.´

La representation´ de l'interaction reciproque´ des services resultant´ de la subdivision d'un processus represente´

une application utile de ce type de diagramme.

Les diagrammes de sequencement´ ne comprennent gen´ eralement´

pas toutes les sequences´

possibles; ils



D.6 Definition´ des donnees´ en LDS

D.6.1 Directives applicables aux donnees´ en LDS

On trouvera dans la presente´ section des renseignements complementaires´ sur les concepts definis´ au § 5 de la Recommandation concernant le LDS. La principale difference´ entre la presente´ section et l'ancienne



avec l'ISO. Certains des mots cles´ ont et´ e´ modifies´ et des adjonctions ont et´ e´ faites mais la coherence´ de la semantique´ a et´ e´ assuree´ avec le Livre rouge. L'emploi des donnees´ decrites´ aux § 2, 3 et 4 de la nouvelle

Recommandation (auparavant Z.101-Z.103) est reste´ tel quel.

D.6.1.1 Introduction gen´ erale´

Les types de donnees´ du LDS sont fondes´ sur l'approche de <<types de donnees´ abstraits>>: on ne decrit´ pas la



valeurs.

Lorsque l'on definit´ des donnees´

abstraites, chaque segment de la definition,´ appelee´ <<definition´

de type

partielle>> est introduit par le mot-cle´ NEWTYPE. Chaque definition´ de type partielle a une incidence sur les autres,



leur ensemble constitue, avec les definitions´ de niveau superieur,´ une definition´ de type de donnees.´
un point quelconque de la specification,´ il n'existe qu'une seule definition´ de type de donnees.´

En substance, la definition´ de type de donnees´ comprend trois parties:

a) definitions´ de sortes;

b) definitions´ d'operateurs;´

c) equations.´

Cela signifie qu'en


Chacune de ces parties fait l'objet d'explications dans les paragraphes qui suivent. La definition´ de type de donnees´ est structuree´ en definitions´ de type de donnees´ partielles, chacune introduisant une sorte. Les definitions´

d'operateurs´

D.6.1.2

et les equations´ recouvrent les definitions´ de type de donnees´

Sortes

partielles.

}

Une sorte est un ensemble de valeurs qui peut avoir un nombre fini ou infini d'el´ ements´ mais ne peut | tre vide.

Exemples:

a) l'ensemble de valeurs de la sorte booleenne´ est { rue (vrai), False (faux }

b) l'ensemble de valeurs de la sorte Natural (naturel) est l'ensemble infini des nombres naturesls { , 1, 2, . |


c) l'ensemble de valeurs de la sorte Couleur primaire est { ert, Rouge, Ble }



Tous les el´ ements´ d'une sorte ne doivent pas | tre directement fournis par l'utilisateur (cela exigerait un temps



NEWTYPE est directement suivi par le nom de la sorte (certaines autres possibilites´ seront indiquees´ plus loin). Ce nom est surtout utilise´ dans les definitions´ d'operateurs,´ comme explique´ au § D.6.1.3, et dans les declarations´ de variables.

D.6.1.3 Operateurs,´ litteraux´ et termes




a) par une enum´ eration:´ les valeurs sont definies´ dans la section des litteraux;´

b) par des operateurs:´ les valeurs sont donnees´ comme les resultats´ d'<<applications>> d'operateurs;´

c) par une combinaison d'enum´ erations´ et d'operateurs.´



l'aide d'equations.´ Les paragraphes qui suivent traitent des litteraux,´ des operateurs´ et des termes; le § D.6.1.4 traite des equations.´

D.6.1.3.1 Litteraux´

Les litteraux´ sont des valeurs enum´ er´ ees´ d'une sorte. Une definition´ de type partiel ne doit pas necessairement´
comporter de litteraux:´ tous les el´ ements´ de la sorte peuvent | tre definis´ au moyen d'operateurs.´ Les litteraux´ peuvent | tre consider´ es´ comme des operateurs´ depourvus´ d'arguments. Une relation entre les litteraux´ peut | tre exprimee´



Exemples:




definition´

NEWTYPE

LITERALS

. | |

ENDNEWTYPE

du type booleen´ se presente´

NEWTYPE Boolean

LITERALS True, False

. | |

ENDNEWTYPE Boolean;

comme suit:


au moyen de ce litteral´ et d'operateurs;´




NEWTYPE Primary colour



LITERALS Red, Green, Blue

. | |

ENDNEWTYPE Primary colour;



D.6.1.3.2 Operateurs´

Un operateur´ est

est une fonction mathematique´

qui met en concordance une ou plusieurs valeurs (eventuellement´



les sortes de leur ou leurs arguments et la sorte de resultat´ sont egalement´ indiquees´ (on parle de signature des operateurs).´

Exemples:

a)

Exemples:

a) dans le type booleen,´ un operateur´ appele´ <<not>> peut | tre defini;´ il aura un argument de sorte booleen´

et egalement´

NEWTYPE

LITERALS

OPERATORS

. | |

ENDNEWTYPE

b)

un resultat´ de sorte booleen.´ Dans la definition´ du type booleen,´ il se presente´ comme suit:

NEWTYPE Boolean

LITERALS True, False

OPERATORS <<Not>>: Boolean->Boolean;

. | |

ENDNEWTYPE Boolean;

b) l'operateur´ susmentionnne´ necessaire´ pour construire tous les nombres naturels est Next. Cet operateur´

prend un argument de sorte naturelle et donne une valeur naturelle (la valeur superieure´ suivante) en tant que resultat;´

c) il est possible de definir´ pour des couleurs un nouveau type qui n'a pas de litteraux´ mais utilise des litteraux´ de la sorte couleur primaire et certains operateurs:´

NEWTYPE Color

OPERATORS

Take: Primary colour->Colour;



Mix: Primary colour, Colour->Colour;



. | |

ENDNEWTYPE Colour;



melanger´ plusieurs couleurs primaires afin d'obtenir d'autres couleurs.

D.6.1.3.3 Termes

A l'aide de litteraux´ et d'operateurs,´ il est possible de construire comme suit l'ensemble des termes:

1) Rassembler tous les litteraux´ dans un ensemble de la sorte dans laquelle ils sont definis´ -- chaque litteral´
est un terme.



les combinaisons possibles de termes de la sorte correcte cre´ es´ prec´ edemment:´

a) pour la sorte <<Boolean>>, l'ensemble de litteraux´ est { rue (vrai), False (faux } Le resultat´

de cette

etape´ est { ot (True), Not (False } parce que nous avons seulement l'operateur´ Not (non);

b) pour la sorte <<Natural>>, le resultat´ de cette etape´ est { ext(0 }


c) pour la sorte <<Colour>> l'ensemble de litteraux´ est vide mais le resultat´ de cette etape´ est { ake(Red), Take(green), Take(Blue }

3) Les termes des ensembles cre´ es´ au cours de l'etape´ prec´ edente´ sont tous la sorte du resultat´ de l'operateur´ applique;´ par exemple, tous les resultats´ de l'operateur´ Not sont de la sorte booleenne.´ Alors, on reunit´
tous les ensembles de la m| me sorte, aussi bien des ensemble initiaux que les ensembles nouvellement cre´ es:´

a) pour la sorte booleenne,´ on obtient l'ensemble { rue, False, Not(True), Not(False }

b) pour les nombres naturels cette etape´ donne l'ensemble { , Next(0 }



de termes:

a) l'ensemble de termes booleens´ gen´ er´ es´ par les litteraux´ True et False et l'operateur´
Not(True), Not(False), Not(Not(True)), Not(Not(False)), Not(Not(Not(True))), . | | }

b) l'ensemble des termes naturels gen´ er´ es´ par le litteral´ 0 et l'operateur´ Next

Not est { rue, False, Next est { , Next(0),

Next(Next(0)), Next(Next(Next(0))), . | | }


c) l'ensemble des termes de couleur gen´ er´ es´ par les litteraux´ Red, Green et Blue de la sorte Primary colour



Take(Green)), Mix(Red, Take(Blue)), Mix(Green, Take(Red)), Mix(Green, Take(Green)), Mix(Green, Take(Blue)), Mix(Blue, Take(Red)), Mix(Blue, Take(Green)), Mix(Blue, Take(Blue)), . | | }

D.6.1.4 Equations et axiomes




valeurs de la sorte. A titre d'exemple, il existe deux valeurs booleennes´ mais l'ensemble de termes booleens´ a un



Deux types particuliers d'equations,´
et D.6.1.4.3.

les axiomes et les equations´

conditionnelles, font l'objet des § D.6.1.4.2




mot-cle´ AXIOMS. Ce mot-cle´ a et´ e´ conserve´ pour des raisons d'ordre historique.

D.6.1.4.1 Equations

Une equation´ indique quels sont les termes consider´ es´ comme designant´ la m| me valeur. Une equation´ relie deux termes separ´ es´ par le symbole d'equivalence´ ==.

Par exemple <<Not(True) == False>> indique que les termes Not(True) et False sont equivalents;´
que l'on trouve Not(True), on peut le remplacer par False sans changement de sens et vice versa.

chaque fois


Dans certaines equations,´ l'ensemble de termes est divise´ en sous-ensembles discontinus de termes qui designent´
la m| me valeur. Ces sous-ensembles sont appeles´ classes d'equivalence.´ Dans le langage courant, les classes d'equivalence´ sont identifiees´ aux valeurs.

Exemples:

a) L'ensemble de termes de la sorte booleenne´

est divise´ en deux classes d'equivalence´

de termes par les

deux axiomes suivants:

Not(True) == False;

Not(False) == True;

Les classes d'equivalence´ qui en resultent´ sont:


{ rue, Not(False), Not(Not(True)), Not(Not(Not(False))),

Not(Not(Not(Not(True)))), Not(Not(Not(Not(Not(False))))), . | | }

et

{ alse, Not(True), Not(Not(False)), Not(Not(Not(True))),

Not(Not(Not(Not(False)))), Not(Not(Not(Not(Not(True))))) } . | |

Ces deux classes d'equivalence´ sont identifiees´ aux valeurs True (Vrai) et False (Faux);

b) Dans le cas de couleurs, on peut desirer´ specifier´ que le
couleur qui contient cette couleur primaire ne fait pas de difference.´ De
melang´ es´ est sans importance. Cela peut | tre enonc´ e´ dans les equations´

Mix(Red, Take(Red)) == Take(Red);

que le melange´ d'une couleur primaire avec une
De plus, l'ordre dans lequel les primaires sont
suivantes:


Mix(Red, Mix(Red, Take(Green))) == Mix(Red, Take(Green));

Mix(Red, Mix(Red, Take(Blue))) == Mix(Red Take(Blue));

Mix(Red, Mix(Green, Take(Red))) == Mix(Green, Take(Red));

Mix(Red, Mix(Blue, Take(Red))) == Mix(Blue, Take(Red)); etc.

Cela demande beaucoup de travail car des equations´ similaires apparaissent pour toutes les permutations de Red, Green et Blue. C'est pourquoi le LDS comporte la construction FOR-ALL qui introduit les noms de valeur



tre decrites´ en quelques lignes sous la forme suivante:

FOR ALL p1, p2 IN Primary colour



/*1*/

/*2*/

/*3*/

/*4*/

/*4*/

/*5*/

/*6*/

/*4*/

Mix(p1, Take(p1)) == Take(p1);

Mix(p1, Mix(p1, Take(p2))) == Mix(p1, Take(p2));

Mix(p1, Mix(p2, Take(p1))) == Mix(p2, Take(p1));

Mix(p1, Take(p2)) == Mix(p2, Take(p1));

FOR ALL c IN Colour

( Mix(p1, Mix(p2, c)) == Mix(p2, Mix(p1, c));

( Mix(p1, Mix(p2, c)) == Mix(Mix(p1, Take(p2)) c))

)




equations´

Les

ne se contredisent pas mutuellement.

Les equations´ susmentionnees´ creent´ 7 classes d'equivalence´

dans l'ensemble de termes de la sorte Colour, de

sorte qu'avec ces equations,´ il y a sept valeurs de couleurs. Les termes suivants sont dans les classes d'equivalence´

differentes:´

Take(Red), Take(Green), Take(Blue),

Take(Red, Take(Green)),

Mix(Green, Take(Blue)),

Mix(Blue, Take(Red)),

Mix(Blue, Mix(Green, Take(Red))).




Dans les exemples d'equations´ comportant la construction FOR-ALL, appelees´ equations´ explicitement quantifiees,´ l'information que p1 et p2 sont des identificateurs de valeur de sorte Primary colour est redondante;



quantification si la sorte des identificateurs de valeur peut | tre deduite´
est implicitement quantifiee.´

Exemple:

Les equations´ 4 et 5 ci-dessus sont les m| mes que:

Mix(p1, Take(p2)) , c)) == Mix(p2, Take(p1));

Mix(p1, Mix(p2, c)) == Mix(p2, Mix(p1, c));

D.6.1.4.2 Axiomes

du contexte. Dans ce cas, on dit que l'equation´






Exemple:

Admettons qu'un operateur´ soit defini´ pour une couleur type: Contains: Colour, Primary colour-> Boolean; ce



contraire. Voici un exemple des equations´ dont il s'agit:

FOR ALL p IN Primary colour



( Contains(Take(p), p)

FOR ALL c IN Colour

( Contains(Mix(p,c), p)

== True;

== True)

)


La partie <<== True>> de ces equations´ peut | tre omise et les resultats´ sont appeles´ axiomes. Des axiomes



valeur True (vrai) de la sorte booleenne.´



D.6.1.4.3 Equations conditionnelles

Les equations´ conditionnelles constituent un moyen d'ecrire´ des equations´ qui ne
certaines conditions. Ces conditions sont design´ ees´ par la m| me syntaxe que les equations´
separ´ ees´ par un symbole ==> de l'equation´ qui est valable si la condition est remplie.

Exemple:

qui ne sont valables que dans
non conditionnelles et sont





FOR ALL x, z IN Real

( z/= 0 == True ==> (x/z) * z == x)



sorte Real etait´ divisee´ par 0. Si l'on veut specifier´
equation´ conditionnelle de la forme suivante:

FOR ALL x, z IN Real

( z = 0 == True ==> (x/z) * z == . | | ).

ce qui se passe en cas de division par zero,´

il faudrait creer´

une


En pareil cas, cependant, il est recommande´ de placer un <<terme conditionnel>> du c| te´ droit, pour faciliter la lecture. Dans le cas ci-dessus l'equation´ deviendrait:

FOR ALL x, z IN Real

( (x/z) * z == IF z/=0

( (x/z) * z == THEN x

x

( (x/z) * z == ELSE . | |

( (x/z) * z == FI

)

D.6.1.5 Informations complementaires

. | |

ementaires´ concernant les equations´ et les axiomes

Les deux sections qui suivent traitent de certaines difficultes´ que l'on peut rencontrer lorsque des operateurs´



d'une equation.´

D.6.1.5.1 Coherence´ de la hierarchie´

En un point quelconque d'une specification´ en LDS, il existe une seule et unique definition´ de type de donnees.´
Cette definition´ de type de donnees´ contient les sortes, operateurs´ et equations´ pred´ efinis´ et l'ensemble des sortes, operateurs´ et equations´ definis´ par l'utilisateur dans les definitions´ de type partielles visibles en ce point. (C'est la raison pour laquelle un texte NEWTYPE . | | ENDNEWTYPE est appele´ definition´ de type partielle .)

Il en resulte´

Il en resulte´ certaines consequences´ pour les definitions´ de type aux niveaux inferieurs.´

Cette influence sur le

type pourrait
equivalents,´

Il n'est

pourrait | tre peu souhaitable. A titre d'exemple, on pourrait specifier´ de facon¸ erronee´
les rendant ainsi equivalents´ alors qu'ils ne sont pas dans une portee´ englobante.

Il n'est pas admis de donner des equations´ telles que:

que deux termes sont




equivalentes;´





l'utilisateur contenant un operateur´ ayant un resultat´ pred´ efini´ doivent rapporter tous les termes produits par cet



Exemples:

a) Si, pour une raison quelconque, on donne l'axiome:

FOR ALL n, m IN Integer

( (Fact(n) = Fact(m)) => (n = m))

afin de specifier´ que si les resultats´ de l'operateur´ Fact sont les m| mes, les arguments sont alors les m| mes. (A noter que => est l'implication booleenne;´ cela a peu de relation avec le signe d'equation´ conditionnellle ==>). Ainsi, par accident, les valeurs sont unifiees.´ Des equations´ des exemples prec´ edents´ on peut deduire´ que Fact(0) = Fact(1) et




me resultat´ de l'operateur´ Fact sur n et m implique n = m. En Led:

FOR ALL n, m IN Integer

( n/=0, m/=0 ==> (Fact(n) = Fact(m)) => (n = m))

A noter que cette derniere equation´ n'ajoute rien a la semantique´ des nombres entiers; c'est un theoreme´

qui



peut | tre deduit´ des autres
d'inconvenient.´

equations.´

Par ailleurs, l'adjonction d'une equation´ prouvable ne presente´

pas


b) Admettons que l'on decouvre´ la necessit´ e´ d'un operateur´ pour les factorielles lors de la specification´ d'un type donne.´ Dans la definition´ de type partielle de ce type, l'operateur´ Fact est introduit:

Fact: Integer -> Integer;

et les equations´ suivantes sont donnees´

pour definir´

cet operateur:´

Fact(0) == 1;

FOR ALL n IN Integer

( n > 0 ==> Fact(n) == n * Fact(n--1))


Ces equations´ ne definissent´ pas Fact(--1) et ainsi, c'est un terme de la sorte Integer qui n'a pas de relation avec d'autres termes de cette sorte. En consequence,´ Fact(--1) est une nouvelle valeur de la sorte entier (et il en va de m| me pour Fact(--2), Fact(--3), etc). Cela n'est pas admis. L'exemple b) du § D.6.1.5.3 donne une definition´ correcte de fact.

D.6.1.5.2 Egalite´ et inegalit´ e´

Dans chaque type, les operateurs´ d'egalit´
introduit une sorte S, il y a alors des definitions´

"=": S, S -> Boolean;

"/=": S, S -> Boolean;

(Remarque -- Les guillemets specifient´ que

d'egalit´ e
implicites

que

e´ et d'inegalit´ e´ sont implicites. Ainsi, si une definition´
implicites d'operateur:´

que = et/= sont utilises´ comme operateurs´ infixes.)

de type partielle


L'operateur´ d'egalit´ e´ presente´ les propriet´ es´ previsibles:´

a = a,

a = b

a = b

a = b

a = b

Ces

a = a,

a = b => b = a,

a = b AND b = c => a = c,

a = b => a == b,

a = b => op(a) = op(b) for all operators op.

Ces propriet´ es´ ne sont pas ecrites´ en syntaxe LDS

LDS et ne doivent pas | tre enonc´ ees´ dans des axiomes ou des

equations´

car elles sont implicites. La valeur booleenne´

obtenue lorsque cet operateur´ est applique´ est True (vrai) si

les termes de la partie gauche et de la partie droite sont de m| me classe d'equivalence;´ sinon la valeur obtenue est False (faux). S'il n'est pas explicitement specifi´ e,´ que la valeur est True (vrai) ou False (faux), la specification´ est



Pour l'operateur´ d'inegalit´ e,´ c'est par une equation´ en LDS que l'on peut le mieux expliquer la semantique:´

FOR ALL a, b IN S

( a/= b == Not(a = b))

Il n'y a pas de difference´ entre l'egalit´ e´ et l'equivalence.´ Deux termes qui sont equivalents´ designent´ la m| me valeur et l'operateur´ d'egalit´ e´ entre eux donne le resultat´ True (vrai).

D.6.1.5.3 Erreur

On a juge´ necessaire,´ pour les exemples qui precedent,´ de specifier´ que l'application de l'operateur´

a certaines



valeurs est consider´ ee´ comme une erreur. Le LDS a un moyen de le specifier´ formellement: l'el´ ement´ ERROR.





est indefini>>.´



operateur.´

Lorsque Error resulte´ de l'application d'un operateur´ et que cette application est un argument d'un autre operateur,´ l'application d'operateur´ exterieur´ porte egalement´ Error dans son resultat´ (propagation-d'erreurs). Dans un terme conditionnel, la partie THEN ou la partie ELSE est evalu´ ee,´ de sorte que l'une d'elle peut | tre une erreur sans que celle-ci soit evalu´ ee´ (etant´ donnee´ que l'autre partie de l'alternative est evalu´ ee).´

Exemples:

a) Dans l'exemple de division de valeurs de sorte Real, les poids peuvent | tre remplaces´ comme suit:

FOR ALL x, z IN Real

( (x/z) * z == IF z/=0

( (x/z) * z == THEN x

( (x/z) * z == ELSE Error!

( (x/z) * z == FI

)

Pour plus de clarte,´ on pourrait ajouter:

FOR ALL x IN Real

( x/0 == Error!)

b) Dans l'exemple comportant l'operateur´ Fact, on pourrait specifier´ que

que l'application de cet operateur´ sur

des entiers negatifs´ est consider´ ee´ comme une erreur (Error). Cela permet d'eviter´
deviennent de nouvelles valeurs de la sorte Integer (entier). Il conviendrait de definir´ l'op

n < 0 ==> Fact(n) == Error!;

que Fact(--1), Fact(--2), . | | ne
l'operateur´ Fact comme suit:


Fact(0) == 1;

n > 0 ==> Fact(n) == Fact(n--1) * n;



le terme conditionnel devrait | tre utilise´ s'il y a deux cas complementaires;´
l'equation´ illisible, comme on peut le voir ci-dessous:

Fact(n) == IF n > 0

Fact(n) == THEN Fact(n--1) * n

Fact(n) == ELSE IF n = 0

Fact(n) == ELSE THEN 1

Fact(n) == ELSE ELSE Error!

Fact(n) == ELSE FI

Fact(n) == FI

D.6.2 Gen´ erateurs´ et heritage´

l'embo| tage de termes conditionnels rend

Le present´ paragraphe traite de deux constructions qui peuvent | tre utilisees´ pour specifier´ des types ayant des parties communes. Le gen´ erateur´ specifie´ non un type mais un schema,´ qui devient un type lorsque les sortes, operateurs,´ litteraux´ et constantes formels sont remplaces´ par des termes reels.´



et d'operateurs´ peuvent | tre renommes´ et il est possible de specifier´ des litteraux,´ des operateurs´ et des equations´

supplementaires.´

D.6.2.1 Gen´ erateurs´

Une definition´ de gen´ erateur´ definit´ un schema´ parametr´ e´ par des noms formels de sortes, de litteraux,´ de



consultation, des tableaux.



partie de la definition´ de type de cet ensemble d'entiers.

Toutes les equations´

Figure D.6.2.1 (comme tableau) [T37.100], p. 10 ont une quantification implicite. La premiere equation´ indique que la suppression d'un



ensemble s'il est le dernier el´ ement´ ajoute´ ou s'il se trouvait dans l'ensemble avant l'adjonction du dernier el´ ement.´ La



Dans l'exemple de la figure D-6.2.1 Int set (ensemble d'entiers) n'est qu'un exemple d'un ensemble et si l'on a





plusieurs fois. La figure D-6.2.2 presente´ le gen´ erateur.´ (A noter que les noms de sortes formels sont introduits par le mot cle´ TYPE, cela uniquement pour des raisons d'ordre historique.)



formel.

Figure D.6.2.2 (comme tableau) [T38.100], p. 11

Avec ce gen´ erateur,´ le type Int set peut | tre construit comme suit:



NEWTYPE Int set Set (Integer, empty int set)



ENDNEWTYPE Int set;



Si l'on compare les figures D-6.2.1 et D-6.2.2, on constate que:

a) GENERATOR et ENDGENERATOR sont remplaces´ par NEWTYPE et ENDNEWTYPE respectivement;



supprimes;´

c) Set, Item et empty set sont remplaces´ dans tout le gen´ erateur´ par Int set, Integer et empty int set,




Ainsi, il n'y a en fait aucune difference´ entre cet Int set et celui de la figure D-6.2.1, mais . | |



NEWTYPE PId-set Set(PId, empty pid set)



ENDNEWTYPE PId set;



-- si l'on a besoin d'un ensemble d'abonnes,´ dans lequel les abonnes´ sont represent´ es´ par un type



NEWTYPE Subscr set Set(Subscr, empty subscr set)



ENDNEWTYPE Subscr set;



Cela permet d'economiser´ du papier, de plus, le travail est facilite´ parce qu'il suffit de penser une fois aux



Exemple:

Cet exemple montre un gen´ erateur´ utilisant une sorte, un operateur,´ un litteral´ et une constante formels. Il decrit´
une rangee´ d'el´ ements´ ayant une longueur maximale max length. La sorte comprend un litteral´ designant´ la rangee´



rangees,´ le choix d'une sous-rangee´ et la determination´ de la longueur d'une rangee.´ Ce dernier operateur´
formel ce qui permet de la nommer a nouveau.

est rendu


GENERATOR Row (TYPE Item, OPERATOR Length, LITERAL Empty,

CONSTANT max length)



LITERALS Empty

OPERATORS

Length: Row -> Integer;

Insert: Row, Item, Integer -> Row;

Delete: Row, Integer, Integer -> Row;

"//": Row, Row -> Row;

Select: Row, Integer, Integer -> Row

/* and other operators relevant for rows of items */

AXIOMS

/* The equations for the operators above, among *

/ * which the following two (or equivalents) */


Length(r) = max length ==> Insert(r, itm, int) == Error!;



Length(r1) + Length(r2) > max length ==> r1//r2 == Error!



ENDGENERATOR Row;

A noter que l'operateur´ formel Length (longueur) et le litteral´ Empty (vide) sont donnes´ une fois de plus dans le corps du gen´ erateur´ parce qu'ils sont renommes´ lors de leur instantiation. Dans le cas de l'operateur,´ les arguments et



pages et des livres, comme suit:

NEWTYPE Line Row(Character, Width, Empty line, 80)



ENDNEWTYPE Line;

NEWTYPE Page Row(Line, Length, Empty page, 66)



ENDNEWTYPE Page;

NEWTYPE Book Row(Page, Nr of pages, Empty book, 10000)



ENDNEWTYPE Book;

D.6.2.2 Heritage´

L'heritage´ constitue un moyen d'etablir´ toutes les valeurs de la sorte dite parente, certains ou tous les operateurs´
du type parent et toutes les equations´ du type parent. Pour les litteraux´ et les operateurs,´ il existe une possibilite´ de les



contexte qu'il s'agit d'un autre type, m| me si les litteraux´ sont les m| mes.



que les operateurs´ sont encore presents´ signifie que toutes les equations´ du type parent sont encore presentes´ (avec des operateurs´ portant un autre nom). Cela garantit que les valeurs parentes sont herit´ ees.´

Avec la possibilite´ d'emp| cher l'utilisation d'un operateur´ (lorsqu'il n'est pas herit´ e),´ on assure la possibilite´



equations´ comme dans un type ordinaire. Toutefois, il faut faire attention aux nouveaux litteraux´ et aux confusions possibles entre operateurs´ herit´ es´ et ajoutes.´



tre compatibles avec les equations´ comportant des operateurs´ herit´ es´ et non herit´ es.´



a) Supposons que le newtype couleur est complet et disponible. Ce type est fonde´ sur le choix et le melange´



quelque chose de semblable pour le choix et le melange´ de peinture.



uniquement deux remplacements:



NEWTYPE Colour

devient

GENERATOR Colour (TYPE Primary colour)



2) le mot-cle´ ENDNEWTYPE devient ENDGENERATOR.



Primary colour soit appelee´ Light primary, et que la sorte Paint primary soit definie´ comme:



NEWTYPE Paint primary



LITERALS Red, Yellow, Blue

ENDNEWTYPE Paint primary;



NEWTYPE Light colours Colour (Light primary) ENDNEWTYPE;



NEWTYPE Paint colours Colour (Paint primary) ENDNEWTYPE;




NEWTYPE Light

INHERITS Light colours



OPERATORS (Beam=Take, Mix, Contains)

ADDING

LITERALS White

AXIOMS

White == Mix (Red, Mix (Yellow, Beam (Blue)))

ENDNEWTYPE Light;




L'axiome ajoute´ indique que ce litteral´ ajoute´ devient un el´ ement´ de l'ensemble de termes dans lequel les trois couleurs primaires sont melang´ ees.´

Le newtype Palette a les litteraux´ de Paint colours et l'operateur´ Take est remplace´ par Paint (peinture):



NEWTYPE Palette

INHERITS Paint colours



OPERATORS (Paint Take, Mix, Contains)



ENDNEWTYPE Palette;

b) Admettons que l'on veuille etendre´ l'ensemble de types entiers (sorte Int set), introduit dans la section



choses.



el´ ements´ (PId par exemple) et il peut | tre pref´ erable´ de creer´ un newtype ayant la sorte New int set comportant un




NEWTYPE New int set



INHERITS Int set



OPERATORS ALL

ADDING

OPERATORS

Min: New int set-> Integer



AXIOMS

Min(Empty int set) == Error!;



Min(Add(Empty int set, x))==x;



Min(Add(Add(nis,x),y))==

IF y <Min(Add(nis,x))

THEN y

ELSE Min(Add(nis,x))

FI


ENDNEWTYPE New int set;



l'instantiation de gen´ erateur.´ On en trouvera un exemple au § 5.4.1.12 de la Recommandation.

D.6.3 Observations relatives aux equations´

Lorsque l'on introduit un nouveau type de donnees,´

il est essentiel d'introduire suffisamment d'equations.´ Dans

les paragraphes qui suivent, trois observations sont
l'etablissement.´

D.6.3.1 Conditions gen´ erales´

present´ ees´ concernant les equations´ qui en faciliteront





a) chaque operateur´ appara| t au moins une fois dans l'ensemble des equations´ (sauf pour les cas <<pathologiques>>);

b)
deduits´

tous les enonc´ es´ vrais peuvent | tre tires´ des equations.´ Ils sont soit indiques´
par substitution de termes equivalents´ dans les equations;´

comme des axiomes, soit




Vrai = Faux.

Une procedure´ permettant
figure D-6.3.1.

D.6.3.2 Application

permettant de trouver des equations´ peut | tre exprimee´

de fonctions aux constructeurs

en LDS informel, comme indique´ dans la




d'equivalence)´ de la sorte. Dans cette approche, les litteraux´ sont consider´ es´ comme des operateurs´ sans argument.

Exemples:

a) le type booleen´ a ses litteraux´

pour constructeurs;

b) le type naturel a le litteral´
construit seulement avec 0 et Next;

0 et l'operateur´ Next comme

constructeurs; un naturel quelconque peut | tre


c) le gen´ erateur´ pour les ensembles a le litteral´ ensemble vide et l'operateur´ additif comme constructeurs;



d) le type entier peut | tre construit au moyen des litteraux´ 0 et 1, des operateurs´ + et moins unaires.

Figura D-6.3.1, (N), p. 12

A noter qu'il y a parfois plusieurs choix possibles pour l'ensemble de constructeurs. Tout choix sera valable pour le reste de la presente´ section mais les petits ensembles sont gen´ eralement´ les meilleurs.

Ensuite, les fonctions sont traitees´ une par une. Pour chaque argument d'une fonction, seuls sont enum´ er´ es´ tous



faut appliquer la quantification.

Exemples:




0



b)

empty

Pour les ensembles, la liste eventuelle´

set

peut | tre:



Si, dans le terme de droite d'une equation´ ayant (s,i) du c| te´ gauche, il y a une difference´ entre s etant´ vide ou n'etant´ pas vide, on peut re´ ecrire´ la liste comme suit:

empty set




une combinaison d'arguments tires´ de la liste. Les identificateurs de valeurs de differents´ arguments recoivent¸ des noms differents.´ La procedure´ indiquee´ ci-dessus pour les fonctions peut | tre appliquee´ aux constructeurs; dans ce



Exemples:

a) Pour l'operateur´ de multiplication de nombres naturels portant la signature

<<*>>:Natural, Natural -> Natural

Cette procedure´ donne la partie de gauche des equations´

(incompletes) suivantes. L'utilisateur devra ajouter la



partie de droite.

Next (n) 0*0 ==

Next (n) 0*Next (n)

. | | ;

==

. | | ;

Next (n)*0 ==

Next (n)*Next (m)

. | | ;

==

. | | ;


b) Pour les operateurs´ Is in (est dans) et Delete (supprimer, dans le gen´ erateur´ Set (voir le § D.6.2.1),





§ D.6.1.4.2 doit | tre defini´ pour les arguments.







operateur:´

Contains(Take(p),q) ==p=q;

Contains(Mix(p,c),q) ==(p=q) OR Contains(c,q);

Cette procedure´ de construction peut donner plus d'equations´

que cela n'est necessaire,´

mais elle est tres s| re.



Dans l'exemple susmentionne´ de multiplication des nombres naturels, il est vraisemblable que la propriet´ e´ de



La procedure´ decrite´ dans cette section peut | tre appliquee´ en combinaison avec la procedure´ decrite´ dans la




D.6.3.3 Specification´ d'ensemble d'essai

On peut aussi considerer´ les equations´ du point de vue de la mise en oeuvre. Si les operateurs´ sont mis en oeuvre sous la forme de fonctions dans un langage de programmation, les equations´ montrent comment ces fonctions doivent | tre testees.´



la partie droite de cette equation´ et de voir si elles sont equivalentes.´ C'est la construction FOR ALL qui pourrait poser



Au lieu de tif de test peut utiliser FOR ALL i IN Integer

le dispositif de test peut utiliser FOR ALL i IN { (em10,--1,0,1,1 } et proceder´ ainsi dans la plupart des cas.



D.6.4 Caracteristiques´

La presente´ section decrit´

certains dispositifs du LDS qui sont rarement necessaires´

dont on peut pratiquement

se passer, mais qui rendent quelquefois la t| che plus facile.

D.6.4.1 Operateurs´ caches´

Il arrive que l'ensemble des equations´

puisse | tre simplifie´ ou rendu plus lisible gr| ce a l'introduction d'un



operateur´ supplementaire,´ mais cet operateur´ ne devrait pas | tre utilise´ dans les processus. Cela signifie que l'operateur´ est visible de l'interieur´ mais cache´ en dehors de la definition´ de type.



le type herit´ e´ qui doit | tre utilise.´ On peut s'assurer qu'il est correctement employe´ en examinant toutes les declarations´ de variables (aucune variable de sorte introduite par le type cache´ ne doit appara| tre).

Ce qui caracterise´ les operateurs´ caches,´ c'est qu'ils peuvent | tre atteints par une restriction de leur visibilite´ aux



Exemple:




Add(empty set,x)



et c'est ainsi que doit le faire chaque utilisateur. Dans les equations,´
par exemple:

le specificateur´ peut utiliser un operateur´

special,´


Mk set!:Item->Set;



defini´ par l'equation:´

Mk set!(itm) == Add(empty set,itm);



qui peut | tre utilise´ dans des definitions´ de type partiel mais non dans le corps de processus en LDS.

D.6.4.2 Relations d'ordre

Lorsqu'il faut specifier´ une relation d'ordre sur les el´ ements´

d'une sorte, cela signifie en gen´ eral´ qu'il faut definir´

quatre operateurs´ (<,<=,>,>=) et les propriet´ es´ mathematiques´
litteraux,´ il faut egalement´ donner de nombreuses equations.´ Par

ordinaires (transitivite,´ etc.). S'il y a de nombreux Par exemple, le type de donnees´ pred´ efinies´ Character



Le LDS comporte une caracteristique´ qui permet d'abreger´
ennuyeuses: c'est l'abreviation´ ORDERING (relation d'ordre).

ces definitions´

de type longues, peu lisibles et




d'introduire des operateurs´ de relation d'ordre et les equations´ normales. Lorsque ORDERING est specifi´ e,´ il faut donner les litteraux,´ s'il en existe, dans l'ordre ascendant.

Exemple:

NEWTYPE Even decimal digit



LITERALS 0,2,4,6,8

OPERATORS

ORDERING

ENDNEWTYPE Even decimal digit;



Maintenant, l'ordre 0<2<4<6<8 est implicite.



convient d'en indiquer ici la raison.

Admettons que l'on desire´ l'extension suivante de la sorte Even decimal digit:



NEWTYPE Decimal digit



INHERITS Even decimal digit



OPERATORS ALL

ADDING

LITERALS 1,3,5,7,9

AXIOMS

0<1; 1<2;

2<3; 3<4;

4<5; 5<6;

6<7; 7<8;

8<9

ENDNEWTYPE

OPERATORS ALL

ADDING

LITERALS 1,3,5,7,9

AXIOMS

0<1; 1<2;

2<3; 3<4;

4<5; 5<6;

6<7; 7<8;

8<9

Decimal

digit;


Les axiomes donnes´

0<2<4<6<8

ici ne peuvent | tre omis. Sans ces axiomes, il ne peut y avoir qu'un ordre dit partiel:

et

1<3<5<7<9.

Avec les axiomes ci-dessus, on obtient un ordre complet:

0<1<2<3<4<5<6<7<8<9

mais

avec l'axiome <<9<0>> au lieu de l'ensemble d'axiomes ci-dessus, l'ordre complet serrait le suivant:

1<3<5<7<9<0<2<4<6<8.

D.6.4.3 Sortes avec champs

Comme indique´ au § 5.4.1.10 de la Recommandation, on peut definir´ une sorte structuree´ sans constructions



supplementaires´ dans le langage.

Une sorte structuree´ devrait | tre utilisee´ lorsqu'une valeur d'objet est formee´ par l'association de valeurs de plusieurs sortes. Chaque valeur de cette association est caracteris´ ee´ par un nom, appele´ nom de champ. La sorte d'un champ est fixe.

Exemples:

NEWTYPE Subscriber

STRUCT numbers Number key;



name Name key;



admin Administrative;

ENDNEWTYPE Subscriber;

NEWTYPE Name key



STRUCT name,

street Charstring;

number Integer;

city Charstring;


ENDNEWTYPE Name Key;



Avec une sorte structuree,´ certains operateurs´ sont definis´ implicitement:



b) les operateurs´ de selection´ de champ, les variables de la sorte structuree´ suivies par un ! et le nom de



l'operateur´ cache´ (§ D.6.4.1).

On trouvera un exemple dans la figure D-6.4.1.

Figure D.6.4.1 (comme tableau) [T39.100], p. 13

D.6.4.4 Sortes indexees´

Une sorte indexee´ est une sorte pour laquelle le type a pour nom d'operateur´ Extract! (extraction). Dans les types de donnees´ pred´ efinies,´ le gen´ erateur´ Array est un tel type. Array est l'un des exemples les plus courants de type indexe.´



definitions´ de type.

On peut penser que le type Index dans le gen´ erateur´ pred´ efini´ Array doit | tre un type <<simple>> comme Integer, Natural ou Character. Toutefois, il n'y a pas de raison pour qu'une structure comme Name key ne puisse pas



Exemple:

NEWTYPE Subsc data base



Array (Name key, Subscriber)



ENDNEWTYPE Subsc data base;



Les sortes Name key et Subscriber sont celles qui ont et´ e´ definies´ dans la section prec´ edente.´ Supposons qu'il



processus qui comporte aussi une variable Sub db de la sorte Subsc data base. Dans ce processus, l'appel suivant




CALL Bill (Sub db) (. `P.M.`, `Downingstreet`10. `Londres`.)));



D.6.4.5 Valeur par defaut´ de variables

Comme indique´ dans la section concernant la declaration´

de variables (§ D.3.10.1), il est possible d'affecter des



(presque) toujours la valeur initiale d'une variable. Il existe une caracteristique´ qui permet d'eviter´ d'ecrire´ la valeur initiale pour chaque declaration:´ la clause DEFAULT.



ensemble imaginaire, seront initialisees´ avec empty set.



La notation:

DEFAULT empty set



valeur empty set de cette instantiation, sauf s'il y a une initialisation explicite (voir le § D.3.10.1.)



S'il n'est par s| r que la valeur initiale de toutes les variables d'une sorte soit la m| me, il ne faut pas utiliser la clause DEFAULT, sinon il est difficile d'eviter´ des surprises.

D.6.4.6 Operateurs´ actifs

Les utilisateurs qui connaissent la Recommandation Z.104 de 1984 concernant le LDS pourraient se demander ce qui est arrive´ aux operateurs´ dits actifs. En fait, cette caracteristique´ a et´ e´ supprimee,´ pour les raisons suivantes:

a) elle n'est pas necessaire´ car les operateurs´ courants et les procedures´
capacite´ d'expression;

b) elle compromet la lisibilite´ des equations;´

et/ou macros offrent la m| me






MONTAGE: § D.7 SUR LE RESTE DE CETTE PAGE