La page Générateurs comporte deux zones principales. La zone de gauche contient une vue de l'arborescence présentant tous les générateurs et leurs divers composants. Vous pouvez utiliser les boutons en regard de la vue d'arborescence pour ajouter, copier et supprimer des composants de la vue. La zone de droite est utilisée pour éditer les divers attributs du composant sélectionné dans la zone de gauche.
Les composants d'un générateur sont les entrées, les dépendances de ressources, les générateurs référencés et les jeux de commandes. Vous les définirez généralement dans ce même ordre.
Les générateurs eux-mêmes possèdent des propriétés qui peuvent être éditées. Lorsque vous sélectionnez un générateur, trois sections apparaissent fournissant ces propriétés.
Utilisez la section Détails du générateur pour entrer le nom du générateur. Ce nom est l'identificateur du générateur et il est obligatoire. Le nom du générateur peut contenir n'importe quel caractère à l'exception des espaces et des virgules et est d'une longueur maximale de 50 caractères. Il est utilisé pour faire référence à ce générateur en tant que dépendance. Vous pouvez également entrer une description du générateur. Celle-ci est facultative.
La section Objets de sortie décrit les objets qui sont créés à l'aide du générateur. L'exécution de la génération vérifiera l'existence et la qualité de ces objets et sélectionnera la section de jeu de commandes qu'il conviendra d'exécuter. Si le générateur crée un objet à partir de la source, vous pouvez utiliser la variable prédéfinie &N pour nommer l'objet généré. Si le générateur est utilisé pour la configuration, il ne peut pas créer ou modifier réellement des objets et cette section peut rester vide.
Des variables de générateur peuvent être utilisées pour fournir les valeurs de variables dans des jeux de commandes et des objets générés. Vous pouvez définir toutes les variables de substitution que vous voulez dans cette section. Ces variables peuvent ensuite être référencées à partir des jeux de commandes utilisés par ce générateur. Si vous utilisez plusieurs jeux de commandes dans ce générateur, vous pouvez définir ici des variables qui seront partagées par les jeux de commandes.
Une liste d'entrée fournit des valeurs aux jeux de commandes référencés par ce générateur. Les jeux de commandes utilisés par le générateur peuvent avoir des variables spécifiées dans leurs définitions. Utilisez la liste d'entrée pour fournir des valeurs pour ces variables.
Chaque liste d'entrée a un nom qui peut être utilisé dans la table des variables de jeux de commandes. L'entrée spécifie une liste de ressources en définissant les éléments à inclure à la liste et, éventuellement, les éléments à en exclure. Par exemple, vous pouvez spécifier qu'une entrée soit une liste de tous les membres de QRPGLESRC sauf du membre ABC.
Certaines entrées sont destinées à être traitées en une seule fois par le générateur, par exemple, une liste de membres source fournie pour un jeu de commandes de compilation. D'autres entrées devront être traitées sous forme d'un groupe, par exemple, les objets de module qui sont destinés à être combinés dans un programme de service. Vous spécifiez le type d'entrée lorsque vous fournissez ses propriétés. Il est improbable d'avoir à traiter ces deux types d'entrées dans le même générateur, mais l'éditeur de génération ne l'interdit pas.
Répétition de tâches pour chaque élément d'une liste d'entrée
Si la liste d'entrée doit être traitée en une seule fois, les jeux de commande de ce générateur doivent être exécutés pour chaque élément de la liste. L'élément de liste fournit les valeurs des variables prédéfinies &N, &X, &L et &F. Les jeux de commandes s'exécuteront dans l'ordre dans lequel vous les spécifiez dans le générateur.
Substitution de toute une liste d'entrée par une variable
Si la liste d'entrée doit être traitée en tant que groupe, le générateur combine tous les éléments de la liste en une seule valeur, en séparant chacun des éléments par un blanc et en les mettant au format sélectionné dans la table des variables de jeu de commandes. Vous pouvez utiliser cette liste pour entrer des paramètres pour les commandes qui prennent des listes en tant que valeurs. Un bon exemple est les modules qui doivent être combinés en un programme de service.
Les dépendances que ce générateur peut avoir sur des ressources sont très similaires aux listes d'entrée, excepté qu'elles n'ont pas de nom. Par exemple, vous pouvez inclure une bibliothèque fournie par un fournisseur. Vous pouvez spécifier cette bibliothèque d'inclusion comme une dépendance de ressource. Si cette bibliothèque est modifiée, le moteur de génération entraînera l'exécution de ce générateur.
Pour utiliser des dépendances de ressources, sélectionnez le composant "Dépendances de ressource" du générateur spécifié dans la vue d'arborescence située dans la partie gauche de la page, et utilisez les formulaires de la partie droite de la page pour ajouter ou modifier des dépendances. Le formulaire exact de la dépendance dépend du type de dépendance : membre ou objet.
La section Générateurs de prérequis permet de spécifier les dépendances d'un générateur par rapport à un autre. Le moteur de génération utilise ces informations pour déterminer l'ordre dans lequel exécuter les générateurs. Par exemple, vous pouvez spécifier que le générateur B dépend du générateur A en faisant référence au générateur A dans la définition du générateur B. Le générateur A étant requis par B, le moteur de génération vérifie si le générateur A doit être construit avant le générateur B. Si c'est le cas, alors le moteur de génération construit d'abord le générateur A puis, comme le générateur B dépend du générateur A nouvellement construit, construit le générateur B.
Les générateurs référencés n'ont généralement pas besoin d'être utilisés. Les générateurs sont garantis pour s'exécuter dans l'ordre dans lequel ils sont spécifiés dans la liste des générateurs. Les générateurs référencés peuvent être utilisés pour affiner cet ordre.
Les références de jeu de commandes sont utilisées par des générateurs pour définir le traitement utilisé lorsqu'ils sont exécutés. Elles sont définies à l'aide de l'identificateur affecté au jeu de commandes. Pour ajouter une référence de jeu de commandes à un générateur, sélectionnez la section Jeux de commandes du générateur dans l'arborescence située dans la partie gauche de la page et utilisez les boutons du formulaire pour ajouter un nouveau jeu de commandes ou copier le jeu de commandes actuellement sélectionné pour modification.
Vos jeux de commandes doivent être relativement petits et exécuter une seule opération. Par exemple, un jeu de commandes peut n'avoir qu'une commande de compilation et une commande CHGOBJOWN. De même, vos générateurs doivent être limités à la génération d'un type d'objet IBM®. Par exemple, vous pouvez définir un générateur pour compiler tous les membres sources RPG d'un fichier source particulier dans des programmes.
Vous pouvez référencer plusieurs jeux de commandes dans un générateur. Le moteur de génération traite ces jeux de commandes dans l'ordre dans lequel ils sont définis dans le générateur. Si un jeu de commandes est conditionnel, l'objet de sortie est testé pour savoir s'il existe et, si c'est le cas, s'il n'est pas à jour. Ces vérifications sont ensuite utilisées pour sélectionner la section de traitement du jeu de commandes appropriée.
Les jeux de commandes peuvent disposer de variables de substitution qui sont définies en interne. Vous indiquez des valeurs pour ces variables en définissant des valeurs globalement au niveau du projet sur la page de présentation, au niveau du générateur dans les propriétés du générateur ou localement à l'aide de la table de variables du jeu de commandes. La table de variables d'un jeu de commandes s'affiche lorsque vous sélectionnez la commande dans la vue d'arborescence située dans la partie gauche de la page Générateurs. Dans la table de variables, vous pouvez faire correspondre une variable à une chaîne littérale ou à une liste d'entrée. Les listes d'entrée reçoivent un format lorsqu'elles sont utilisées dans une table de variables. Ce format décrit comment leurs valeurs sont remplacées dans une commande. Le seul format actuellement pris en charge est un format de nom qualifié permettant aux listes d'entrée d'être utilisées pour fournir des valeurs aux commandes qui considèrent ces noms d'objets qualifiés complets comme des paramètres.
Voir Jazz.net pour plus d'informations.