Pré. | Proc. |
Branchement des macros
Les macros de ramification fournissent des constructions if-then-else. Le CTF supporte une forme limitée de ramification via ces macros :
- si
- sinonSi
- autre
- finSi
- endTemplate (qui sort du gabarit actuel)
%si <test> <opérateur> <test>%
où <opérateur> peut être l'un des éléments suivants :
- ==
- !=
- < (comparaison mathématique, inférieur à)
- > (comparaison mathématique, supérieur à)
- <= (comparaison mathématique, inférieur ou égal à)
- >= (comparaison mathématique, supérieur ou égal à)
- une string littérale, entourée de guillemets doubles
- une macro de substitution directe, sans les signes de pourcentage qui l'entourent
- une référence variable
Les branches peuvent être imbriquées et plusieurs conditions peuvent être spécifiées à l'aide de l'une des méthodes suivantes :
- et, ou
- ou
Si les instructions conditionnelles sur les chaînes sont sensibles à la casse, « une String » n'est pas égale à « une CHAÎNE ». Par conséquent, dans certaines situations, il est préférable de définir la variable $str=TO_LOWER(variable) ou TO_UPPER(variable) puis de comparer à un cas spécifique.
Les macros ne sont pas prises en charge dans les instructions conditionnelles. Il est préférable d'affecter les résultats d'une macro ( string ) à une variable, puis d'utiliser la variable dans la comparaison.
$fldType = % TO_LOWER ($paramètre1)%
$COMMENT = "Utilisez les 4 premiers caractères pour les types de champs Date et Heure"
$fldType4 = % GAUCHE ($fldType, 4)%
%si $fldType4 == "date"%
Date et heure
%endif%
Cela prend un paramètre de valeur « Datetime », « DATETIME » ou « Date » et renvoie « Datetime ».
Les macros endif ou endTemplate doivent être utilisées pour signifier la fin d'une branche. De plus, la macro endTemplate provoque le retour immédiat du gabarit , si la branche correspondante est en cours d'exécution.
Exemple 1
%si elemType == "Interface"%
;
%autre%
%OpérationBody%
%finSi%
Dans ce cas:
- Si l'élément Type est « Interface », un point-virgule est renvoyé
- Si l'elemType n'est pas "Interface", un gabarit appelé Operation Body est appelé
Exemple 2
$bases="ClassBase"
$interfaces=""%
%si $bases != " " et $interfaces != ""%
:$bases, $interfaces
%elseIf $bases != ""%
:$bases
%elseIf $interfaces != ""%
: $interfaces
%finSi%
Dans ce cas, le texte renvoyé est ':ClassBase'.
Conditions utilisant une valeur booléenne
Lors de la configuration d'une ramification à l'aide de conditions impliquant une case à cocher système (champs booléens), comme Attribute.Static (attStatic), l'instruction conditionnelle serait écrite comme suit :
%si attStatic == "T"%
Par exemple:
% si attCollection == "T" ou attOrderedMultiplicity == "T" %
% fin du modèle %