ADELIA |
VADELIA |
SADELIA |
WADELIA |
MADELIA |
(I/B) |
(I/B) (C/S) |
(B) (S) |
(I/B) (C/S) |
(I) (C/S) |
Paragraphe d'utilisation
Tous
Syntaxe
SI IdVar1 OpérateurLogique IdVar2
TANT_QUE IdVar1 OpérateurLogique IdVar2
Description
Les différents opérateurs logiques permettent de tester le contenu ou la valeur de certaines zones dans des expressions de comparaison (SI... ou TANT_QUE...). Il est possible de combiner plusieurs tests dans une même expression avec les opérateurs de liaison ET et OU.
Si des zones numériques sont comparées, les zones de longueur différente sont alignées au niveau du point décimal.
Si des zones alphanumériques sont comparées, les zones de longueur différente sont alignées à partir du caractère le plus à gauche. La zone la plus courte est comblée avec des espaces pour pouvoir être égale (en taille) à la plus grande.
Une zone positive est toujours plus grande qu'une zone négative.
Il n'est pas possible de comparer une zone numérique avec une zone alphanumérique.
Il est possible d'utiliser un niveau de parenthèses.
Pour l'opérateur = (égal à), il est possible d'écrire :
SI VAR = A;B;C;D
Dans ce cas, le programme teste si la variable VAR est égale à A, à B, à C ou à D. La liaison OU est implicite.
Pour l'opérateur <> (différent de), il est possible d'écrire :
SI VAR <> A;B;C;D
Dans ce cas, le programme teste si la variable VAR est différente de A et de B et de C et de D. La liaison ET est implicite.
Remarque : les comparaisons >, <, >= et <= se font en fonction de la séquence des caractères EBCDIC pour le module RPG, et des caractères ANSI pour les modules C.
Par exemple
SI CODE_OPTION <> '2';'3';'4'
ERREUR
FIN
*SI TOTAL <> 0 ET CODE_REGLEMENT <> 'CHEQUE'
RESULTAT = TOTAL + ( TOTAL * TAX_1 / 100 )
SINON
RESULTAT = TOTAL + ( TOTAL * TAX_2 / 100 )
FIN
*
SI REPONSE = 'YES';'JA';'SI';'OUI';'DA'
APPELER IMPR_LISTE
FIN
*
LIRE_AVANT CLIENT
TANT_QUE CLIENTS EXISTE ET NUMERO_LIGNE <= 50
EDITER INFOS_CLIENTS
NUMERO_LIGNE = NUMERO_LIGNE + 1
LIRE_AVANT CLIENT
REFAIRE