Chapter 9 Guide de référence de la génération (GTL)
La macro foreach_item est utilisée pour l'itération des collections d'objets. Le template spécifié au sein du bloc est converti sur tous les objets contenus dans la collection spécifiée. Le bloc définit une nouvelle portée au sein de laquelle l'objet actif à l'itération i est le membre de collection i-ème membre de la collection.
Si une comparaison est spécifiée, les éléments de la collection sont pré-triés en fonction de la règle correspondante avant leur itération :
.foreach_item '(' <portée-collection> [',' <en-tête> [',' <fin> [',' <condition-simple> [',' <comparaison> ]]]]')' <template-complexe> .next ['(' <séparateur> ')']
Toutes les collections sont accessibles pour un objet donné. Chaque objet PowerAMC peut avoir une ou plusieurs collections correspondant aux objets avec lesquels il interagit. Les collections expriment le lien entre les objets, par exemple une table a des collections de colonnes, d'index, de règles de gestion, etc.
Les collections sont représentées dans le métamodèle public PowerAMC par des associations entre objets. Les rôles des associations correspondent aux collections d'un objet.
Pour plus d'informations sur les collections d'objets, reportez-vous à la section "Associations et collections", dans le chapitre "Métamodèle public PowerAMC".
Paramètre | Type | Description |
---|---|---|
<portée-collection> | Template simple | Collection sur laquelle l'itération est effectuée |
<en-tête> (facultatif) | Texte | Généré avant le résultat, s'il y en a un |
<fin> (facultatif) | Texte | Ajouté au résultat, s'il y en a un |
<condition-simple> (facultatif) | Condition simple | Si spécifié, seuls les objets qui satisfont la condition sont considérés lors de l'itération |
<comparaison> | Condition simple | <comparaison> est évalué au sein d'une portée dans laquelle deux objets locaux respectivement nommés 'Item1' et 'Item2' sont définis. Ils correspondent aux éléments dans la collection. <comparaison> doit être évalué comme true si Item1 doit être placé après Item2 dans l'itération |
<séparateur> (facultatif) | Texte | Générer entre deux évaluations de <template-complexe> non vides |
Délimiteurs de paramètres de macro
Les paramètres de macro peuvent être délimités par des guillemets. Les délimiteurs sont requis lorsque la valeur du paramètre inclut des virgules, des accolades et des espaces de début ou de fin. La séquence d'échappement pour les guillemets au sein d'un paramètre est \"
.
Le résultat est formé par les évaluations concaténées de <template-complexe> sur tous les objets dans la collection.
Exemple :
Attribut | Type de données | Valeur initiale |
---|---|---|
cust_name | String | __ |
cust_foreign | Boolean | false |
.foreach_item(Attributes,,,,%Item1.Code% >= %Item2.Code%)) Attribute %Code%[ = %InitialValue%]; .next(\n)
Le résultat est le suivant :
Attribute cust_foreign = false
Attribute cust_name;
Les quatre virgules après (Attributes,,,, signifient que tous les paramètres (en-tête, fin, condition et comparison) sont sautés.
Copyright (C) 2005. Sybase Inc. All rights reserved. |
![]() |