"case" permet de réaliser une structure de contrôle alternative en fonction de la valeur d'une expression donnée.
Caseexpr_choix
{ When expr_v { , expr_v } [ : ]
instructions exécutées si
[ instructions ] l'expression expr_choix prend
l'une des valeurs de la liste
des expressions expr_v.
}
[ When Default [ : ]
instructions exécutées si
[ instructions ] l'expression expr_choix
n'a pris aucune des valeurs
des expressions expr_v.
]
Endcase
Elément | Description | Restrictions |
expr_choix | Expression dont la valeur permet de choisir une alternative. | Aucune. |
expr_v | Expression dont la valeur est comparée à celle de expr_choix. | Du même type que expr_choix. |
# Selon la valeur de CHOIX, on fera une action particulière
# Si choix vaut "R", rien n'est fait
Case toupper(CHOIX)
When "A","E" : Gosub EFFACEMENT
When "Q","F" : Goto FIN
When "R"
When "M" : Gosub MODIFICATION
When Default
Gosub AIDE
Endcase
# Alternative sur l'expression date$ qui est comparée à
# d'autres variables ou à des expressions complexes
#
Case date$
When [29/05/1959]
Infbox "C'est ma date de naissance"
Gosub ANNIVERSAIRE
When [18/06/1944],[08/05/1945],[11/11/1918]
Infbox "C'est une date historique"
Gosub COMMEMORATION
When DATE_LIMITE+DELAI_GRACE
Infbox "Il faut payer les impôts avant ce soir !"
Gosub PERCEPTEUR
When Default
Infbox "Rien de particulier aujourd'hui"
Endcase
Case permet de réaliser des alternatives au sein d'un traitement, et ce en fonction de la valeur d'une expression qui peut être comparée à des listes de valeurs.
Au plus une alternative est exécutée (un "case" équivaut à une structure If ... Elsif ... Else ... Endif). En l'absence de clause When Default, et si aucune valeur ne correspond à l'expression, aucune instruction délimitée par le "case" ne sera exécutée.
Aucune instruction ne peut être placée entre le "case" et le premier "when" (pas même un commentaire).
Lorsqu'un "when" n'est suivi d'aucune instruction avant le "when" suivant, cela veut dire qu'il n'y a pas d'action à effectuer, contrairement à certains langages tels le C. Pour exécuter un même choix pour une série de valeurs, il faut mettre cette série dans une seule liste précédée d'un "when".