Chapter 9 Guide de référence de la génération (GTL)


Macro foreach_item

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> ')']

Définition de collections

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ètres

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

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

Résultat

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;

Remarque

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.