Manipulation de champs d'affichage avec des opérateurs préfixes

Dans cette section :

Vous pouvez utiliser les opérateurs préfixes pour effectuer des calculs directement sur la valeur des champs.

Remarque : à moins que vous ne modifiez une colonne ou un titre ACROSS avec une phrase AS, l'opérateur préfixe est ajouté automatiquement au titre. Sans une phrase AS, le titre de colonne est construit à l'aide de l'opérateur de préfixe, du nom de champ ou l'attribut TITLE dans le fichier maître (s'il a été créé) :

Pour consulter une liste des opérateurs préfixes et leurs fonctions, consultez Fonctions à effectuer avec les opérateurs préfixes.


Haut de page

x
Aspects fondamentaux des Opérateurs préfixes

Comment :

Référence :

Cette rubrique décrit la syntaxe et les notes de base pour l'utilisation des opérateurs préfixes.



x
Syntaxe : Utiliser des opérateurs préfixes

Chaque opérateur préfixe s'applique à un seul champ, et influence uniquement ce champ-là.

{SUM|COUNT} prefix.fieldname AS 'coltitle'
{PRINT|COMPUTE} RNK.byfield

où :

préfixe
Est tout opérateur préfixe.
fieldname
Est le nom du champ à afficher dans le rapport.
'coltitle'
Est le titre de colonne pour la colonne du rapport, entre guillemets simples.
byfield
est le nom d'un critère de tri vertical à classer dans le rapport.


x
Référence : Notes à propos des opérateurs préfixe


x
Référence : Fonctions à effectuer avec les opérateurs préfixes

La table suivante liste des opérateurs préfixe et en décrit leur fonctionnalité.

Préfixe

Fonction

ASQ.

Calcule la somme moyenne des carrés pour l'écart type dans les analyses statistiques.

AVE.

Calcule la valeur moyenne du champ.

CNT.

Compte le nombre d'instance d'un champ. Le type de données du résultat est toujours un nombre entier.

CNT.DST.

Compte le nombre de valeurs distinctes dans un champ.

CT.

Produit un total cumulatif du champ spécifié. Cet opérateur n'est valable qu'avec les en-têtes secondaires et les pieds de page secondaires. Pour plus d'informations, consultez Utilisation d'en-têtes, pieds de page, titres et étiquettes.

DST.

Détermine le nombre total de valeurs distinctes en un seul passage d'une source de données.

FST.

Génère la première instance physique du champ. Peut être utilisé avec des champs numériques ou de texte.

LST.

Génère la dernière instance physique du champ. Peut être utilisé avec des champs numériques ou de texte.

MAX. 

Génère la valeur maximale du champ.

MDE.

Calcul le mode des valeurs de champ.

MDN.

Calcul la médiane des valeurs de champ.

MIN.

Génère la valeur minimale du champ.

PCT.

Calcule le pourcentage d'un champ en fonction du total des valeurs du champ. L'opérateur PCT peut être utilisé avec des champs détailés ou récapitulatifs.

PCT.CNT.

Calcule le pourcentage d'un champ en fonction du nombre d'instances trouvées. Le résultat est toujours au format F6.2 et ne peut pas être reformaté.

RNK.

Classe les instances d'un critère de tri BY dans la requête. Peut être utilisé dans les commandes PRINT, les commandes COMPUTE et les tests IF ou WHERE TOTAL.

RPCT.

Calcule le pourcentage d'un champ en fonction du total des valeurs du champ sur une ligne.

ST.

Produit un sous-total d'un champ spécifié à un saut de tri dans le rapport. Cet opérateur n'est valable qu'avec les en-têtes secondaires et les pieds de page secondaires. Pour plus d'informations, consultez Utilisation d'en-têtes, pieds de page, titres et étiquettes.

SUM.

Cumule les valeurs des champs.

TOT.

Compte les valeurs de champ à utiliser dans un en-tête (y compris les pieds de page, les en-têtes secondaires et les pieds de page secondaires).



x
Moyenne de valeurs d'un champ

Le préfixe AVE. calcule la valeur moyenne d'un champ donné. Le calcul s'effectue au niveau le plus bas de la commande d'affichage. C'est le total des valeurs de champ dans un groupe divisé par le nombre d'enregistrements du groupe de tri. Si la requête ne comprend pas de phrase de tri, AVE. calcule la moyenne pour le rapport entier.



Exemple : Moyenne de valeurs d'un champ

Cette requête calcule le nombre moyen d'heures de formation allouées à chaque département.

TABLE FILE EMPLOYEE
SUM AVE.ED_HRS BY DEPARTMENT
END

L'image suivante montre les résultats de la procédure de rapport.

            AVE   
DEPARTMENT  ED_HRS
----------  ------
MIS          38.50
PRODUCTION   20.00

Haut de page

x
Moyenne de la somme des champs carrés

Le préfixe ASQ. calcule la somme des carrés, qui sert de composant de l'écart type dans les analyses statistiques (présenté comme formule à l'image suivante).

Si le champ est au format de nombre entier et que vous recevez un ensemble de chiffres important, le résultat ASQ. peut être négatif par conséquent d'un dépassement de capacité de champs.



Exemple : Moyenne de la somme des champs carrés

Cette requête calcule la somme et la somme des champs carrés pour le champ DELIVER_AMT.

TABLE FILE SALES
SUM DELIVER_AMT AND ASQ.DELIVER_AMT
BY CITY
END

L'image suivante montre les résultats de la procédure de rapport.

                              ASQ        
CITY             DELIVER_AMT  DELIVER_AMT
----             -----------  -----------
NEW YORK                 300          980
NEWARK                    60          900
STAMFORD                 430         3637
UNIONDALE                 80         1600

Haut de page

x
Calcul des valeurs de champ maximales et minimales

Les préfixes MAX. et MIN. produissent les valeurs maximales et minimales, respectivement, dans un groupe de tri. Si une requête ne comprend pas de phrase de tri, MAX. et MIN. produisent les valeurs maximales et minimales pour le rapport complet.



Exemple : Calcul des valeurs de champ maximales et minimales

Cette requête de rapport calcule les valeurs maximales et minimales du champ SALARY.

TABLE FILE EMPLOYEE
SUM MAX.SALARY AND MIN.SALARY
END

L'image suivante montre les résultats de la procédure de rapport.

    MAX              MIN   
    SALARY           SALARY
    ------           ------
$29,700.00        $8,650.00

Haut de page

x
Calcul des valeurs Mode et Médiane pour un champ

Vous pouvez utiliser MDN. (médiane) et MDE. opérateurs de préfixe (mode), en conjonction avec une commande d'affichage d'agrégation (SUM, WRITE) est un champ de date intelligente ou numérique, afin de calculer le mode et la médiane statistiques des valeurs dans le champ.

Ces calculs ne sont pas supportés dans une commande DEFINE, avec les expressions WHERE ou IF, ni dans une commande de résumé. S'ils sont utilisés dans une requête multi-verbe, ils doivent être utilisés au plus bas niveau de l'agrégation.

La médiane est la valeur de milieux (50ème centile). S'il y a un nombre égal de valeurs, la médiane représente la moyenne du milieu des deux valeurs. Le mode est la valeur existant le plus fréquemment au sein d'un jeu de valeurs donné. Si aucune valeur n'existe plus fréquemment que les autres, MDE. renvoie la plus petite valeur.



Exemple : Calcul de la médiane et du mode

La requête suivante sur la source de données EMPLOYEE affiche les salaires en cours et calcule la moyenne (moyen), la médiane, et le mode au sein de chaque département.

TABLE FILE EMPLOYEE
SUM CURR_SAL AS 'INDIVIDUAL,SALARIES'
AVE.CURR_SAL WITHIN DEPARTMENT AS 'DEPARTMENT,AVERAGE'
MDN.CURR_SAL WITHIN DEPARTMENT AS 'DEPARTMENT,MEDIAN'
MDE.CURR_SAL WITHIN DEPARTMENT AS 'DEPARTMENT,MODE'
BY DEPARTMENT
BY CURR_SAL NOPRINT
BY LAST_NAME NOPRINT BY FIRST_NAME NOPRINT
ON TABLE SET PAGE NOPAGE
END

Les deux départements ont un nombre égal d'employés. Pour le département MIS, les deux valeurs de milieux sont les mêmes, faisant de cette valeur ($18,480.00) à la fois la médiane et le mode. Pour le département PRODUCTION, la médiane est représentée par la moyenne de deux valeurs de milieu ($16,100.00 et $21,120.00) et, puisqu'il n'existe pas de valeur dupliquées, le mode est la valeur la plus petite ($9,500.00).


Haut de page

x
Calcul des pourcentages d'une colonne et d'une ligne

Pour chaque valeur individuelle d'une colonne, PCT. calcule sa part de pourcentage dans la valeur totale de la colonne. Vous pouvez contrôler la façon dont les valeurs sont distribuées dans la colonne en utilisant la phrase BY pour trier la colonne. La nouvelle colonne de pourcentages est au même format que le champ original.

Vous pouvez aussi déterminer les pourcentages des valeurs de champ. Pour chaque valeur individuelle dans une ligne triée par la phrase ACROSS, l'opératuer RPCT. L'opérateur calcule quel pourcentage il crée pour la valeur totale de la ligne. Les valeurs de pourcentage sont au même format que le champ original.



Exemple : Calculer la colonne Pourcentages

Pour calculer la part des heures de formation de chaque employé, lancez la requête suivante :

TABLE FILE EMPLOYEE
SUM ED_HRS PCT.ED_HRS BY LAST_NAME
ON TABLE COLUMN-TOTAL
END

La sortie est :

                         PCT   
LAST_NAME        ED_HRS  ED_HRS
---------        ------  ------
BANNING             .00     .00
BLACKWOOD         75.00   21.37
CROSS             45.00   12.82
GREENSPAN         25.00    7.12
IRVING            30.00    8.55
JONES             50.00   14.25
MCCOY               .00     .00
MCKNIGHT          50.00   14.25
ROMANS             5.00    1.42
SMITH             46.00   13.11
STEVENS           25.00    7.12
                               
TOTAL            351.00  100.00

Puisque PCT. et RPCT sont au même format que le champ, il est possible que la colonne ne totalise pas exactement 100 en raison de la nature de l'arithmétique de point flottant.



Exemple : Calculer la ligne Pourcentages

Cette requête calcule le total des unités vendues de chaque produit (la colonne UNIT_SOLD), ainsi que le pourcentage que compose le total par rapport à la somme de tous les produits vendus (la colonne RPCT.UNIT_SOLD) dans chaque ville.

TABLE FILE SALES
SUM UNIT_SOLD RPCT.UNIT_SOLD ROW-TOTAL
BY PROD_CODE
ACROSS CITY    WHERE
CITY EQ 'NEW YORK' OR 'STAMFORD'
END

La sortie est :

Comme la colonne UNIT_SOLD est au format de nombre entier, les colonnes créées par RPCT. sont aussi aux formats de nombre entier (I). Par conséquent, les pourcentages individuels peuvent être tronqués et le pourcentage total peut être inférieur à 100%. Si vous avez besoin des totaux précis, attribuez au champ un format utilisant les points de la décimale (D, F).


Haut de page

x
Création d'un pourcentage direct d'un décompte

Lorsque vous comptez les occurences dans un fichier, un rapport commun doit déterminer le pourcentage relatif de chaque décompte de rangée dans le nombre total d'instances. Vous pouvez ce faire, uniquement pour les colonnes, en utilisant la syntaxe suivante :

PCT.CNT.fieldname

Le format est une valeur décimale à six chiffres avec deux décimales (F6.2).



Exemple : Création d'un pourcentage direct d'un décompte

Cette requête illustre le pourcentage relatif des valeurs du champ EMP_ID pour chaque département.

TABLE FILE EMPLOYEE
SUM PCT.CNT.EMP_ID
BY DEPARTMENT
END

La sortie est :

PCT.CNT
DEPARTMENT
----------
 EMP_ID
 ------
MIS
  50.00
PRODUCTION
  50.00


x
Agrégation et listage de valeurs uniques

Comment :

Référence :

L'opérateur préfixe distince (DST.). peut être utilisé pour agréger et lister des valeurs uniques de tout champ de source de données. Comparable aux opérateurs préfixe SQL COUNT, SUM, et AVG (la colonne DISTINCT) en ce qui est de fonctionnalité, l'opérateur .DST vous permet de déterminer le nombre total de valeurs individuelles en un seul passage de la source de données.

L'opérateur préfixe .DST peut être utilisé avec les commandes SUM, PRINT ou COUNT, et conjointement avec les opérateurs préfixe agrégés SUM., CNT. et AVE. Les opérateurs préfixe DST. multiples. ne sont pas pris en charge dans les requêtes TABLE et TABLEF. Ils sont pris en charge dans les requêtes qui utilisent les phrases BY, ACROSS, et FOR.

Notez que dans une requête qui utilise la commande PRINT et les opérateurs préfixe DST. multiples, vous devriez lancer la commande SET PRINTDST=NEW. Pour plus d'informations, consultez le guide DévelopperReportingApplications.



x
Syntaxe : Utilisation de l'opérateur distinct
command DST.fieldname

ou

SUM [operator].DST.fieldname

où :

command
indique la commande SUM, PRINT ou COUNT.
Les champs d'affichage
Indique l'opérateur distinct.
fieldname
indique l'objet de champ d'affichage ou le nom de champ.
opérateur
Indique l'opérateur SUM., CNT. ou AVE.


Exemple : Utiliser l'opérateur distinct

Le procédure demandant un compte des valeurs uniques ED_HRS est :

TABLE FILE EMPLOYEE
SUM CNT.DST.ED_HRS
END

ou

TABLE FILE EMPLOYEE
COUNT DST.ED_HRS
END

La sortie est :

COUNT   
DISTINCT
ED_HRS  
--------
       9

Notez que le compte comprend des enregistrements pour les deux employés avec le nom de famille SMITH, mais exclut les seconds enregistrements pour les valeurs 50.00, 25.00, et .0, qui ont pour résultat neuf valeurs ED_HRS uniques.



Exemple : Dénombrer les valeurs des champs distinctes avec des commandes d'affichage multiples

La requête suivante contre la source de données GGSALES compte le nombre total d'enregistrements par région, puis le nombre d'enregistrements, de catégories distinctes, et de produits distincts par région et par état. L'opérateur .DST ou CNT.DST peut être utilisé qu'avec la dernière commande d'affichage :

TABLE FILE GGSALES                     
COUNT CATEGORY AS 'TOTAL,COUNT'        
  BY REGION                            
SUM CNT.CATEGORY AS 'STATE,COUNT'      
    CNT.DST.CATEGORY    CNT.DST.PRODUCT
  BY REGION                            
  BY ST                                
END

La sortie est :

                                  COUNT     COUNT   
             TOTAL         STATE  DISTINCT  DISTINCT
Region       COUNT  State  COUNT  CATEGORY  PRODUCT 
------       -----  -----  -----  --------  --------
Midwest       1085  IL       362         3         9
                    MO       361         3         9
                    TX       362         3         9
Northeast     1084  CT       361         3        10
                    MA       360         3        10
                    NY       363         3        10
Southeast     1082  FL       361         3        10
                    GA       361         3        10
                    TN       360         3        10
West          1080  CA       721         3        10
                    WA       359         3        10


x
Référence : Limitations de l'opérateur distinct

Haut de page

x
Extraction des premiers et derniers enregistrements

FST. est un préfixe qui affiche le premier des enregistrements récupérés sélectionné pour un champ donné. LST. affiche le dernier des enregistrements récupérés sélectionné pour un champ donné.

Lors de l'utilisation des opérateurs préfixes FST. et LST., il est indispensable que vous compreniez la structure de votre source de données.

Pour plus d'informations sur les types de segment et la conception de fichier, consultez Description de données en langage WebFOCUS . Si vous souhaitez réorganiser les données dans la source de données ou restructurer la source de données lors du reporting, consultez Amélioration du traitement de rapports.



Exemple : Récupération du premier enregistrement

La requête suivante récupère le premier enregistrement logique du champ EMP_ID :

TABLE FILE EMPLOYEE
SUM FST.EMP_ID
END

La sortie est :

FST      
EMP_ID   
------   
071382660


Exemple : Types de segments et récupération d'enregistrements

La source de données EMPLOYEE contient le segment DEDUCT, qui met les champs DED_CODE et DED_AMT dans l'ordre croissant (type de segment S1). Le champ DED_CODE indique le type de déduction, telle que CITY, STATE, FED, et FICA. La requête suivante extrait le premier enregistrement logique du champ SALARY pour chaque employé :

TABLE FILE EMPLOYEE
SUM FST.DED_CODE
BY EMP_ID
END

La sortie est :

           FST     
EMP_ID     DED_CODE
------     --------
071382660  CITY    
112847612  CITY    
117593129  CITY    
119265415  CITY    
119329144  CITY    
123764317  CITY    
126724188  CITY    
219984371  CITY    
326179357  CITY    
451123478  CITY    
543729165  CITY    
818692173  CITY

Il est important, cependant, de noter que la commande SUM LST.DED_CODE aurait récupéré le dernier enregistrement logique du champ DED_CODE pour chaque employé.

Si l'enregistrement est dans un segment dont les valeurs sont organisées dans l'ordre décroissant (type de segment SH1), le premier enregistrement logique récupéré par l'opérateur préfixe FST. est la plus grande valeur de l'ensemble de valeurs. L'opérateur préfixe LST. récupère donc la plus petite valeur de l'ensemble de valeurs.

Par exemple, la source de données EMPLOYEE contient le segment PAYINFO, qui met les champs JOBCODE, SALARY, PCT_INC et DAT_INC dans l'ordre décroissant (type de segment SH1). La requête suivante récupère le premier enregistrement logique du champ SALARY pour chaque employé :

TABLEF FILE EMPLOYEE
SUM FST.SALARY
BY EMP_ID
END

La sortie est :

                    FST   
EMP_ID              SALARY
------              ------
071382660       $11,000.00
112847612       $13,200.00
117593129       $18,480.00
119265415        $9,500.00
119329144       $29,700.00
123764317       $26,862.00
126724188       $21,120.00
219984371       $18,480.00
326179357       $21,780.00
451123478       $16,100.00
543729165        $9,000.00
818692173       $27,062.00

Cependant, la commande SUM LST.SALARY aurait récupéré le dernier enregistrement logique du champ SALARY pour chaque employé.


Haut de page

x
Addition et compte de valeurs

Vous pouvez compter des instances et résumer des valeurs avec une seule commande d'affichage à l'aide des opérateurs préfixe CNT., SUM. et TOT. De la même façon que la commande COUNT, CNT. compte les instances du champ qu'il préfixe. De la même façon que la commande SUM, l'opérateur préfixe SUM. totalise les valeurs du champ qu'il précède. TOT. additionne les valeurs du champ qu'il précède lorsqu'il est utilisé dans un en-tête (y compris les pieds de page, les en-têtes secondaires et les pieds de page secondaires).



Exemple : Compte de valeurs avec CNT

La requête suivante compte les instances du champ PRODUCT_ID, et additionne la valeur de UNIT_PRICE.

TABLE FILE GGPRODS
SUM CNT.PRODUCT_ID AND UNIT_PRICE
END

La sortie est :

Product          
Code        Unit 
COUNT       Price
-------     -----
     10    660.00


Exemple : Addition de valeurs avec SUM

La requête suivante compte les instances du champ PRODUCT_ID, et additionne la valeur de UNIT_PRICE.

TABLE FILE GGPRODS
COUNT PRODUCT_ID AND SUM.UNIT_PRICE
END

La sortie est :

Product          
Code        Unit 
COUNT       Price
-------     -----
     10    660.00


Exemple : Additionner les valeurs avec TOT

La requête suivante utilise l'opérateur préfixe TOT pour montrer le total des salaires actuels pour tous les employés.

TABLE FILE EMPLOYEE
PRINT LAST_NAME
BY DEPARTMENT
ON TABLE SUBFOOT
"Total salaries equal: <TOT.CURR_SAL"
END

La sortie est :

DEPARTMENT  LAST_NAME                
----------  ---------                
MIS         SMITH                    
            JONES                    
            MCCOY                    
            BLACKWOOD                
            GREENSPAN                
            CROSS                    
PRODUCTION  STEVENS                  
            SMITH                    
            BANNING                  
            IRVING                   
            ROMANS                   
            MCKNIGHT                 
Total salaries equal:     $222,284.00

Haut de page

x
Classement des valeurs de critères de tri avec RNK.

Comment :

RANKED BY fieldname, utilisé dans une expression de tri d'une requête TABLE, trie non seulement les données par le champ spécifié, mais affecte une valeur RANK aux instances. L'opérateur préfixe RNK détermine également le classement tout en autorisant l'impression de la valeur RANK n'importe où sur la page. Vous utilisez cet opérateur en spécifiant RNK.fieldname, où fieldname est un champ BY dans la requête.

Le processus de classement a lieu après la sélection des enregistrements de tri. Donc, l'opérateur de préfixe RNK ne peut être utilisé dans un test de sélection WHERE ou IF ou dans un champ virtuel (DEFINE). Toutefois, RNK.fieldname peut être utilisé dans un test WHERE TOTAL ou TOTAL ou dans une valeur calculée (COMPUTE). Vous pouvez modifier le titre de colonne par défaut du champ de classement grâce à une phrase AS.

Vous pouvez appliquer l'opérateur RNK à des champs de tri multiples, auquel cas le classement de chaque champ BY est déterminé au sein de son champ BY de niveau supérieur.



x
Syntaxe : Calculer des classements avec l'opérateur de préfixe Opérateur préfixe

Dans une commande PRINT, l'expression COMPUTE ou l'expression IF/WHERE TOTAL :

RNK.field  ...

où :

field
est un critère de tri (BY) vertical dans la requête.


Exemple : Classement au sein de groupes de tri

La requête suivante classe les années de service dans un département et classe le salaire par année de service et département. Notez que la valeur Années de service dépend de la valeur de TODAY. La sortie pour cet exemple était valide lorsqu'il était exécuté en Septembre 2006 :

DEFINE FILE EMPDATA
  TODAY/YYMD = &YYMD;
  YRS_SERVICE/I9 = DATEDIF(HIREDATE,TODAY,'Y');
END
TABLE FILE EMPDATA
PRINT SALARY
  RNK.YRS_SERVICE AS 'RANKING,BY,SERVICE'
  RNK.SALARY AS 'SALARY,RANK'
     BY DEPT
     BY HIGHEST YRS_SERVICE
     BY HIGHEST SALARY NOPRINT
WHERE DEPT EQ 'MARKETING' OR 'SALES'
ON TABLE SET PAGE NOPAGE
END

La sortie est :

                                                    RANKING
                                                    BY       SALARY
DEPT                  YRS_SERVICE           SALARY  SERVICE  RANK
----                  -----------           ------  -------  ------
MARKETING                      17       $55,500.00        1       1
                                        $55,500.00        1       1
                               16       $62,500.00        2       1
                                        $62,500.00        2       1
                                        $62,500.00        2       1
                                        $58,800.00        2       2
                                        $52,000.00        2       3
                                        $35,200.00        2       4
                                        $32,300.00        2       5
                               15       $50,500.00        3       1
                                        $43,400.00        3       2
SALES                          17      $115,000.00        1       1
                                        $54,100.00        1       2
                               16       $70,000.00        2       1
                                        $43,000.00        2       2
                               15       $43,600.00        3       1
                                        $39,000.00        3       2
                               15       $30,500.00        3       3


Exemple : Avec RNK. dans un test WHERE TOTAL

La requête affiche uniquement les lignes dont les deux salaires les plus élevés sont classés au sein de la catégorie années de service : Notez que la valeur Années de service dépend de la valeur de TODAY. La sortie pour cet exemple était valide lorsqu'il était exécuté en Septembre 2006 :

DEFINE FILE EMPDATA
  TODAY/YYMD = &YYMD;
  YRS_SERVICE/I9 = DATEDIF(HIREDATE,TODAY,'Y');
END
TABLE FILE EMPDATA
PRINT LASTNAME FIRSTNAME RNK.SALARY
BY HIGHEST YRS_SERVICE BY HIGHEST SALARY
WHERE TOTAL RNK.SALARY LE 2
END

La sortie est :

                                                           RANK
YRS_SERVICE           SALARY  LASTNAME         FIRSTNAME   SALARY
-----------           ------  --------         ---------   ------
         17      $115,000.00  LASTRA           KAREN            1
                  $80,500.00  NOZAWA           JIM              2
         16       $83,000.00  SANCHEZ          EVELYN           1
                  $70,000.00  CASSANOVA        LOIS             2
         15       $62,500.00  HIRSCHMAN        ROSE             1
                              WANG             JOHN             1
                  $50,500.00  LEWIS            CASSANDRA        2


Exemple : Avec RNK. Dans une commande COMPUTE

La requête suivante affecte un indicateur Y aux enregistrements dont le classement de salaire de département est inférieur ou égal à 5 et dont le classement des années de service au sein du salaire et du département est inférieur ou égal à 6. Dans le cas contraire, l'indicateur a la valeur N. Notez que la valeur « années de service » dépend de la valeur de TODAY. La sortie pour cet exemple était valide lorsqu'il était exécuté en Septembre 2006 :

DEFINE FILE EMPDATA
  TODAY/YYMD = &YYMD;
  YRS_SERVICE/I9 = DATEDIF(HIREDATE,TODAY,'Y');
END
TABLE FILE EMPDATA
PRINT RNK.SALARY RNK.YRS_SERVICE
COMPUTE FLAG/A1 = IF RNK.SALARY LE 5  AND RNK.YRS_SERVICE LE 6
    THEN 'Y' ELSE 'N';
BY DEPT BY SALARY BY YRS_SERVICE
WHERE DEPT EQ 'MARKETING' OR 'SALES'
ON TABLE SET PAGE NOPAGE
END

La sortie est :

                                                 RANK   RANK
DEPT                          SALARY YRS_SERVICE SALARY YRS_SERVICE FLAG
----                          ------ ----------- ------ ----------- ----
MARKETING                 $32,300.00          16      1           1 Y
                          $35,200.00          16      2           1 Y
                          $43,400.00          15      3           1 Y
                          $50,500.00          15      4           1 Y
                          $52,000.00          16      5           1 Y
                          $55,500.00          17      6           1 N
                                                      6           1 N
                          $58,800.00          16      7           1 N
                          $62,500.00          16      8           1 N
                                                      8           1 N
                                                      8           1 N
SALES                     $30,500.00          15      1           1 Y
                          $39,000.00          15      2           1 Y
                          $43,000.00          16      3           1 Y
                          $43,600.00          15      4           1 Y
                          $54,100.00          17      5           1 Y
                          $70,000.00          16      6           1 N
                         $115,000.00          17      7           1 N

WebFOCUS