• Aucun résultat trouvé

DATETIME.

{voir "Formats de lecture et d'écriture SAS"). La constante est mise entre quotes suivie d'un D (pour DATE), d'un T (pour TIME), ou d'un DT (pour DATETIME). Exemple '1JAN87' D '01JAN87' '9: 25'T '9: 25: 19'T '20JAN87: 9: 27: 05'DT

Exemple : utilisation d'une constante date. IF BEGIN='01JAN1990'D THEN END='31DEC1990'D 3 Opérateurs SAS

Ce sont des symboles permettant de réaliser des comparaisons, des opérations logiques, des calculs. SAS utilise 2 sortes d'opérateurs:

les opérateurs préfixes; les opérateurs infixes.

Un opérateur préfixe s'applique à une variable, une constante, une fonction, une expression entre parenthèses. (Ex: + , - , NOT, -).

Exemple : opérateurs préfixes. +Y

-25

-COS (ANGLE) + {X*Y)

Un opérateur infixe s'applique à un opérande de chaque côté d'un opérateur. (Ex: 6<8). Il y a

4

sortes d'opérateurs infixes:

arithmétique; comparaison;

logique ou booléen;

autres (minimum, maximum, concaténation).

Le test du bit caché est un cas spécial d'opération de comparaisons (voir "Test du bit").

Les expressions SAS

3. 1 Nombre d'opérateurs - Expressions simples et composées

Quand il y a un seul opérateur (ex: A/B) on a une expression simple. Quand il y a plus d'un opérateur (Ex: 1-EXP (A/B)) l'expression est composée. 3. 2 Ordre d'exécution des opérations

Les règles ci-dessous décrivent l'ordre d'évaluation des expressions composées.

3. 2. 1 Règle 1 : les expressions entre parenthèses sont évaluées en premier lieu (ex : 18/3*2=12 18/ (3*2)=3).

3. 2. 2 Règle 2 : on a les groupes de priorité suivant (de la plus forte à la plus faible} . (On notera que + ou - peuvent apparaître comme préfixe ou comme infixe).

groupel: ** groupe2:

*

groupe3: + (infixe)

- (infixe) + (préfixe) - (préfixe) - ou NOT > < (MINIMUM} < > (MAXIMUM) groupe4:

1 1

groupe7:

1

(OR)

/

groupe5: < <= groupe6: & (AND)

= = >=

>

- > - <

3. 3. 3 Règle 3 : en général, quand les opérateurs ont la même priorité , les opérations sont réalisées de la gauche vers la droite sauf:

- pour les opérateurs du groupel,

- quand il y a 2 opérateurs de comparaison, évaluée comme si un AND était présent (ex: 12 comme si on réalisait les comparaisons suivantes 3. 3 Opérateurs arithmétiques On distingue: ** élévation à une multiplication; division; addition;

*

/

+ soustraction. puissance;

l'expression est alors < AGE < 30 est évaluée 12 < AGE AND AGE < 30).

A**3 signifie A à la puissance 3; 2*Y signifie 2 multiplié par Y. Si une valeur est manquante dans un opérande le résultat est valeur manquante.

Les expressions SAS

3. 4 Opérateurs de comparaisons

Ils permettent de comparer 2 quantités. Si la comparaison est vraie son résultat est 1 , si la comparaison est fausse son résultat est O.

On distingue les opérateurs de comparaison suivants:

= ou EQ égal à = ou NE différent de

> ou GT strictement plus grand que < ou LT strictement plus petit que > = ou GE plus grand ou égal à < = ou LE plus petit ou égal à

Considérons l'expression A <= B. Si A vaut 4 et B 3, alors A <= B est fausse et a la valeur O. Si A vaut 5 et B 9 l'expression est vraie et a la valeur 1.

Les opérateurs de comparaison apparaissent fréquemment dans les instructions IF.

Exemple:

IF X < Y THEN C = 15 ELSE C = 12

Les comparaisons peuvent être aussi utilisées dans des expressions ayant des instructions ASSIGNATION.

Exemple : comme les quantités entre parenthèses sont évaluées en premier, les expressions (X < Y) et (X > = Y) sont d'abord évaluées et le résultat

(1 ou O) est substitué dans chaque expression entre parenthèses. Avec X=6 et Y=8 on aura C = 5* (1)+12* (0) = 5 dans l'instruction:

C = 5* ( X < Y ) + 12* ( X >= Y )

Dans une opération de comparaison une valeur manquante est toujours plus petite que toute valeur numérique.

Comparaisons de caractères :

On peut comparer les chaînes de caractères et le résultat un nombre (1 ou 0). Les chaînes sont comparées caractères par caractères de la gauche vers la droite. L'ordre des caractères dépend de la machine (voir la procédure SORT).

Exemple : ces 2 expressions sont vraies: 'GERARD' > 'ALFRED'

'JEAN C. '< 'JEAN CHRISTIAN'

2 chaînes de longueurs inégales sont comparées comme si des "blancs" étaient ajoutés au bout de la plus courte. Ainsi:

Les expressions SAS

Exemple : on désire créer un fichier SAS contenant une variable NOM et ne conserver que les observations pour lesquelles la valeur de NOM s'étend de la lettre S à la lettre Z.

IF NOM >= 'S' (équivalente à IF NOM >= 'S)

Exemple : pour comparer à S la 1ère lettre de la valeur de NOM on peut utiliser le caractère 2 points ( : ) après l'opérateur de comparaison. Toutes les valeurs ayant la variable NOM commençant par T et au delà sont retenues.

IF NOM > : ' S' ;

3.5

Opérateurs logiques

Les opérateurs logiques (appelés opérateurs "Booléen") sont utilisés habituellement dans des expressions pour enchaîner des suites de comparaisons. On distingue les opérateurs logiques suivants:

& AND 1 OR NOT

* Si les 2 quanti tés de part et d'autre de AND sont vraies alors le résultat de l'opérateur est vrai.

A < B & C > 0 est vrai quand A<B et C>O

* Si 1 ' une des quantités de part et d'autre de OR est vraie alors le résultat de l'opérateur OR est vrai.

A < B C > 0 est vrai quand A<B ou C>O

Attention : il faut être prudent avec l'opérateur OR car IF X = 1 OR 2 ;

n'a pas la même signification que IF X = 1 OR X = 2

La 1ère expression est toujours vraie car si le résultat de X=l peut être vrai ou faux, celui de 2 (évalué comme la comparaison de 2=2 ) est toujours vrai. L'expression dans le 2ème IF par contre n'est pas toujours vraie.

Le préfixe NOT est aussi un opérateur logique. Le résultat d'une application de NOT sur une exppression vraie (fausse) est faux (vrai} . (ex:. Si X=Y est faux (O} , NOT(X=Y) est vraie (1) ) .

Le résultat de NOT devant une quantité dont la valeur est manquante est vrai (1) .

Le résultat de NOT devant une quantité dont la valeur est non manquante et non nulle est faux (0) .

Les expressions SAS Exemple :

NOT ( NOM = 'DUPOND' A ( A & B )

A ( A I B )

Documents relatifs