Dans cette section :
Comment : |
Une requête TABLE normale trie les rangées d'un rapport selon la phrase BY utilisée. Les données récupérées sont triées dans l'ordre croissant ou décroissant, comme demandé. Les rangées peuvent être limitées par une phrase de présélection à un sous-ensemble particulier, mais :
ON DIVISION SUBFOOT
ON DIVISION RECAP
Contrairement, la phrase FML FOR crée une matrice dans laquelle vous pouvez structurer votre rapport rangée par rangée. Grâce à cette organisation, vous avez plus de contrôle sur les données incorporées dans un rapport, ainsi que sur sa présentation. Vous pouvez :
Voici la syntaxe pour spécifier des rangées :
FOR fieldname [AS 'coltitle'] value [OR value OR...] [AS 'text'] [LABEL label] OVER . . . [value [OR value ...]] [AS 'text'] [LABEL label] END
où :
est le champ FOR du rapport FML.
est le titre de colonne pour le champ FOR dans la sortie de rapport.
est la valeur (également connu sous le nom de valeur de balise) qui décrit les données récupérées pour cette rangée du rapport.
Vous permet d'attribuer un nom à une valeur de balise, qui remplace celle dans la sortie. Saisissez le texte entre guillemets simples.
Attribue une étiquette à la ligne pour référence dans une expression RECAP. Le label peut compter jusqu'à 66 caractères et ne peut pas contenir d'espaces vierges ou de caractères spéciaux. Chaque label doit être unique.
Même si vous attribuez un label explicite, le label de position (R1, R2, etc,) est retenu à l'intérieur.
Par défaut, une valeur de balise pour un champ FOR, par exemple 1010, ne peut être ajoutée qu'une fois à la matrice FML. Cependant, si vous souhaitez ajouter la même valeur d'un champ FOR à la matrice plus qu'une fois, vous pouvez activer le paramètre FORMULTIPLE (la définition par défaut est OFF). Pour plus d'informations, reportez-vous à Utiliser la même valeur du champ FOR dans des rangées multiples.
Pour plus d'informations sur les fonctions FMLFOR, FMLLIST, FMLCAP, et FMLINFO, qui renvoient les valeurs de balises utilisées dans une requête FML, consultez Utilisation des Fonctions.
Supposez que vous avez une source de données simple avec des données financières pour chaque compte appartenant à une société, comme suit :
CHART OF ACCOUNTS ACCOUNT DESCRIPTION 1010 CASH ON HAND 1020 DEMAND DEPOSITS 1030 TIME DEPOSITS 1100 ACCOUNTS RECEIVABLE 1200 INVENTORY . . . . . .
En utilisant la phrase FOR dans FML, vous pouvez lancer la requête TABLE suivante dans laquelle chaque valeur de ACCOUNT est représentée par une balise (1010, 1020, .), et s'affiche en tant que ligne distincte.
TABLE FILE LEDGER SUM AMOUNT FOR ACCOUNT 1010 OVER 1020 OVER 1030 OVER 1100 OVER 1200 END
La sortie est montrée comme ce qui suit :
AMOUNT ------ 1010 8,784 1020 4,494 1030 7,961 1100 18,829 1200 27,307
Comment : |
Il y a différentes façons de combiner des valeurs multiples de votre source de données dans une rangée de rapport FML. Vous pouvez utiliser:
Par défaut, une valeur du champ FOR ne peut être comprise que dans une rangée unique de la matrice FML. Cependant, en activant le paramètre FORMULTIPLE, vous pouvez inclure la même valeur de données dans des rangées multiples de la matrice FML. Par exemple, la même valeur peut exister comme valeur solitaire dans une rangée unique, faire partie d'une gamme dans une autre rangée et être utilisée dans le calcul d'une troisième rangée. Pour plus d'informations, reportez-vous à Utiliser la même valeur du champ FOR dans des rangées multiples.
En plus de ces méthodes, vous pouvez extraire des balises multiples pour une rangée d'un fichier externe.
Pour ajouter les valeurs de deux balises ou plus dans une seule rangée de rapport, utilisez la phrase OR dans la phrase FOR. La syntaxe est :
FOR fieldname value1 OR value2 [OR valuen...] [AS 'text'] [LABEL label] [OVER] . . .
où :
Est un nom de champ dans la source de données.
Sont les valeurs de balise à récupérer et ajouter.
Attribue un titre aux valeurs de balise combinées. Saisissez le texte entre guillemets simples (').
Attribue une étiquette à la ligne pour référence dans une expression RECAP. Le label peut compter jusqu'à 66 caractères et ne peut pas contenir d'espaces vierges ou de caractères spéciaux. Chaque label doit être unique.
Même si vous attribuez un label explicite, le label de position (R1, R2, etc,) est retenu à l'intérieur.
Le modèle suivant ajoute les valeurs de trois balises (1010, 1020, 1030) comme CASH.
TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT
1010 OR 1020 OR 1030 AS 'CASH' OVER
1100 AS 'ACCOUNTS RECEIVABLE' OVER
1200 AS 'INVENTORY'
END
La sortie est montrée comme ce qui suit :
AMOUNT ------ CASH 21,239 ACCOUNTS RECEIVABLE 18,829 INVENTORY 27,307
Pour ajouter les valeurs d'une gamme de balises dans une seule rangée de rapport, utilisez la phrase TO dans la phrase FOR. La syntaxe est :
FOR fieldname value1 TO value2 [AS 'text'] [LABEL label] [OVER]
où :
Est un nom de champ dans la source de données.
Est la valeur de balise de la limite inférieure de la rangée.
Est la phrase requise.
Est la valeur de balise de la limite supérieure de la rangée.
Attribue un titre aux valeurs de balise combinées. Saisissez le texte entre guillemets simples (').
Attribue une étiquette à la ligne pour référence dans une expression RECAP. Le label peut compter jusqu'à 66 caractères et ne peut pas contenir d'espaces vierges ou de caractères spéciaux. Chaque label doit être unique.
Même si vous attribuez un label explicite, le label de position (R1, R2, etc,) est retenu à l'intérieur.
Comme les comptes CASH dans le système LEDGER sont identifiés par les balises 1010, 1020 et 1030, vous pouvez spécifier la rangée comme1010 à 1030 :
TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT
1010 TO 1030 AS 'CASH'
END
Si le champ de balise comprend le format de caractères (alphanumérique), vous pouvez effectuer une correspondance masquée. Utilisez le symbole du dollar ($) comme le masque. Par exemple,
A$$D
correspond à toute valeur à quatre caractères qui commence par A et qui termine par D. Les deux autres places peut être n'importe quel caractère. Ce caractère est utile pour spécifier un groupe entier de valeurs de balise sans à avoir à les nommer individuellement.
Dans cet exemple, les quantités associées à tous les comptes à quatre caractères commençant par 10, dont le masque est 10$$, sont utilisées pour créer la ligne CASH du rapport.
TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT
10$$ AS 'CASH' OVER
1100 AS 'ACCOUNTS RECEIVABLE' OVER
1200 AS 'INVENTORY'
END
La sortie est montrée comme ce qui suit :
AMOUNT ------ CASH 21,239 ACCOUNTS RECEIVABLE 18,829 INVENTORY 27,307
Vous pouvez utiliser la même valeur que pour un champ FOR dans différentes lignes, que ce soit toute seule, dans une ligne, ou dans un calcul) en incluant la syntaxe suivante avant ou au sein d'une requête FML :
SET FORMULTIPLE={ON|OFF}
ou
ON TABLE SET FORMULTIPLE {ON|OFF}
où :
Vous permet de faire référence à la même valeur d'un champ FOR dans une ou plusieurs rangée(s) d'une requête FML.
Où FORMULTIPLE égale ON, une valeur récupérée de la source de données est comprise sur chaque ligne de la sortie pour laquelle elle correspond aux références de balise.
Ne vous permet pas d'inclure une même valeur dans des rangées multiples. OFF est la valeur par défaut.
Où FORMULTIPLE égale OFF, les balises référencées de n'importe laquelle de ces manières (OR, TO, *) sont évaluées d'abord pour une référence d'extrait ou pour les points de terminaison d'une rangée, ensuite pour un masque et finalement dans une rangée. Par exemple, si une valeur est spécifiée comme une référence d'extrait et puis comme faisant partie d'une rangée, la référence exacte s'affiche. Notez que le résultat est imprévisible si une valeur va dans plus d'une rangée dont les balises ont la même priorité (par exemple, une référence exacte et le point de terminaison d'une rangée).
Pour plus d'informations, consultez Reporting dynamique depuis une hiérarchie.
Cette requête récupère les valeurs de balise pour les comptes 1010, 1020 et 1030, et liste les valeurs correspondantes individuellement. Ensuite, il regroupe les mêmes valeurs et affiche le total comme TOTAL CASH. De la même façon, les valeurs de balise pour les comptes 1100 et 1200 sont affichées comme éléments détaillés et puis résumées comme TOTAL NON-CASH ASSETS.
SET FORMULTIPLE=ON TABLE FILE LEDGER SUM AMOUNT FOR ACCOUNT 1010 AS 'CASH ON HAND' OVER 1020 AS 'DEMAND DEPOSITS' OVER 1030 AS 'TIME DEPOSITS' OVER BAR OVER 1010 OR 1020 OR 1030 AS 'TOTAL CASH' OVER " " OVER 1100 AS 'ACCOUNTS RECEIVABLE' OVER 1200 AS 'INVENTORY' OVER BAR OVER 1100 TO 1200 AS 'TOTAL NON-CASH ASSETS' END
La sortie est montrée comme ce qui suit :
AMOUNT ------ CASH ON HAND 8,784 DEMAND DEPOSITS 4,494 TIME DEPOSITS 7,961 ------ TOTAL CASH 21,239 ACCOUNTS RECEIVABLE 18,829 INVENTORY 27,307 ------ TOTAL NON-CASH ASSETS 46,136
Dans cet exemple, les valeurs d'une ligne du rapport FML proviennent d'un fichier externe appelé CASHSTUF, qui comprend les balises suivantes :
1010 1020 1030
La requête TABLE suivante utilise les valeurs de balise du fichier externe, totalisant les sommes dans les comptes 1010, 1020 et 1030 pour faire la ligne CASH du rapport FML :
TABLE FILE LEDGER SUM AMOUNT FOR ACCOUNT (CASHSTUF) AS 'CASH' OVER 1100 AS 'ACCOUNTS RECEIVABLE' END
Notez que le nom de fichier doit être entre paranthèses.
Seulement une phrase FOR est autorisée dans une requête. Elle remplace en partie une phrase BY, qui contrôle le tri de séquence. Cependant, la requête peut aussi inclure jusqu'à 32 phrases BY. En général, les phrases BY spécifient les champs de tri majeurs (extérieurs) dans les rapport FML et la phrase FOR spécifie les champs de tri mineurs (intérieures). Notez que la phrase BY ROWS OVER n'est pas prise en charge dans une requête qui utilise la phrase FOR.
Dans cet exemple, les résultats de rapport pour ACCOUNT (le critère de tri intérieur) sont triés selon REGION (le critère de tri extérieur) :
DEFINE FILE REGION
CUR_YR=E_ACTUAL;
LAST_YR=.831*CUR_YR;
REGION/A4=IF E_ACTUAL NE 0 OR E_BUDGET NE 0 THEN 'EAST' ELSE 'WEST';
END
TABLE FILE REGION
HEADING CENTER
"CURRENT ASSETS FOR REGION <REGION"
" "
SUM CUR_YR LAST_YR
BY REGION NOPRINT
FOR ACCOUNT
10$$ AS 'CASH' OVER
1100 AS 'ACCOUNTS RECEIVABLE' OVER
1200 AS 'INVENTORY' OVER
BAR OVER
RECAP CUR_ASSET/I5C = R1 + R2 + R3;
END
La sortie est montrée comme ce qui suit :
CURRENT ASSETS FOR REGION EAST CUR_YR LAST_YR ------ ------- CASH 9,511.00 7,903.64 ACCOUNTS RECEIVABLE . . INVENTORY . . -------------- -------------- CUR_ASSET 9,511 7,903
Une valeur de champ de tri peut être utilisée dans une commande RECAP pour permettre au modèle d'effectuer différentes actions dans chaque rupture de tri majeure. Par exemple, le calcul suivant calcule une valeur non-zéro uniquement pour la région EAST :
RECAP X=IF REGION EQ 'EAST' THEN .25*CASH ELSE 0; AS 'AVAILABLE FOR DIVIDENDS'
Pour plus d'informations, consultez Exécution de calculs interlignes.
WebFOCUS |