La macro .foreach_part permet une itération sur chacune des parties d'une expression. Les séparateurs de partie seront spécifiés dans une expression modèle.
Cette macro est très utile pour la génération intermodèle car les modèles peuvent avoir des conventions de dénomination très différentes. Par exemple, le code d'un attribut de classe Java peut s'écrire comme suit : "clientNom" alors que le code d'une colonne de table peut s'écrire comme suit : "CLIENT_NOM".
. foreach_part (<Expression> [, <Separator Pattern>[,<Head> [, <Tail>]]]) [<Block>] .next[(<Separator>)]
Paramètre |
Description |
---|---|
<Expression> |
Désigne une expression balayée par l'itérateur de parties. Cet itérateur marquera une pause sur chacun des caractères spécifiés dans le <PartSeparatorPattern> |
<Separator Pattern> (facultatif) |
Chaîne de caractères définie entre guillemets. Tout caractère y figurant sera utilisé comme séparateur de partie. Voir ci-dessous |
<Block> |
Comprend les variables suivantes : %CurrentPart%: Valeur de la variable CurrentPart, %IsFirst% : détermine si la variable CurrentPart est la première partie de l'expression, %IsLast% : détermine si la variable CurrentPart est la dernière partie de l'expression |
<Separator> (facultatif) |
Vous pouvez ajouter un séparateur (<separator>) entre chacune des parties. Si vous avez défini un séparateur de caractères dans le <PartSeparatorPattern>, la valeur du <separator> sera remplacée par le séparateur de caractères. Si vous avez défini un séparateur d'intervalle dans le <PartSeparatorPattern>, la table de conversion que vous avez sélectionnée retournera la valeur correspondante à la place du séparateur d'intervalle. |
<Head> ou <Tail> (facultatif) |
Expressions qui peuvent être ajoutées respectivement au début ou à la fin de l'expression générée |
Il existe deux types de séparateurs :
Il est également possible de combiner les deux types de séparateurs : (%Nom,"'<car>',[<c1>-<c2>]"). '<char>' désigne n'importe quel caractère spécifié dans <PartSeparatorPattern>, par exemple a, b, c, 0, 9.
[<c1> - <c2>] spécifie un caractère compris dans l'intervalle défini entre les deux caractères <c1> et <c2>. Par exemple, [A-Z], [a-z] ou [0-9] peuvent être utilisés comme des séparateurs de parties.
Par défaut, <PartSeparatorPattern> est initialisé par le pattern suivant " -_,\t". Si le pattern spécifié est vide, il est initialisé par la valeur par défaut.
Script 2 : Convertir un nom en code d'attribut de classe (convention de dénomination JAVA)
.set_value(_First, true, new) .foreach_part(%Name%, "' _-'") .if (%_First%) %.L:CurrentPart% .set_value(_First, false, update) .else %.FU:CurrentPart% .endif .next
Le script de conversion va générer :
Nom = Employé actionnaire => Code = employéActionnaire