Macro .foreach_part

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".

Syntaxe

. foreach_part (<Expression> [, <Separator Pattern>[,<Head> [, <Tail>]]])
[<Block>]
.next[(<Separator>)]

Paramètres

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

Séparateur

Il existe deux types de séparateurs :


  • Un séparateur de caractères qui doit comporter des apostrophes supplémentaires et qui s'écrit comme suit : (%Nom,"'<car>'")

  • Un séparateur d'intervalles qui doit être utilisé avec une table de conversion et qui s'écrit comme suit : (%Nom,"[<c1>-<c2>]")

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.

Exemples


  • Script 1 : Convertir un nom en code de classe (conventions de dénomination JAVA)

    .foreach_part(%Name%, "' _-'")
    %.FU:CurrentPart%
    .next

    Le script de conversion va générer :

    Nom = Employé actionnaire => Code = EmployéActionnaire

  • 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


Created October 8, 2009. Send feedback on this help topic to Sybase Technical Publications: pubs@sybase.com