Attribution de numéros de référence de colonne

Dans cette section :

Comment :

La notation de colonne attribue un numéro de colonne séquentiel à chaque colonne de la matrice interne créée pour une requête de rapport. Si vous souhaitez contrôler la création des numéros de référence de colonne pour les colonnes utilisées dans votre rapport, utilisez la commande de notation de colonne CNOTATION.

Comme les numéros de colonne font référence aux colonnes dans la matrice interne, ils sont attribués après que la récupération et l'agrégation de données soient terminées. Les colonnes créées et affichées dans un rapport sont stockées dans la matrice interne, et celles qui ne sont pas affichées dans un rapport peuvent aussi être générées et stockées dans la matrice interne. Les colonnes stockées dans la matrice interne comprennent les valeurs calculées, les valeurs de champ recalculées, les champs BY, les champs avec l'option NOPRINT et certains calculs RECAP, tels que FORECAST et REGRESS. On attribue un numéro de colonne par défaut à toutes les deux colonnes dans la matrice interne, ce qui implique de rendre compte de toutes les colonnes générées à l'intérieur si vous souhaitez faire référence à la valeur de colonne appropriée dans votre requête.

Vous pouvez modifier l'attribution par défaut des numéros de référence à l'aide de la commande SET CNOTATION qui ne peut attribuer des numéros de colonnes qu'aux colonnes qui s'affichent dans la sortie du rapport ou à tous les champs référencés dans le requête du rapport. Vous pouvez employer la notation de colonne dans les commandes COMPUTE et RECAP afin de faire référence à ces colonnes dans votre requête.


Haut de page

x
Syntaxe : Contrôler la création de numéros de référence de colonne
SET CNOTATION={ALL|PRINTONLY|EXPLICIT}

où :

ALL
Attribue des numéros de référence de colonne à toutes les colonnes dans la matrice interne. ALL est la valeur par défaut.
PRINTONLY
Attribue des numéros de référence de colonne uniquement aux colonnes qui s'affichent dans la sortie de rapport.
EXPLICIT
attribue des numéros de référence de colonne à tous les champs référencés dans la requête, qu'ils s'affichent ou non.

Haut de page

x
Utilisation de la notation de colonne dans une requête de rapport

Référence :

Pour créer une référence de colonne dans une requête, vous pouvez :



Exemple : Utilisation de la notation de colonne dans une requête non FML avec CNOTATION=ALL

Dans la requête suivante contenant CNOTATION=ALL, le produit de C1 et C2 ne calcule pas TRANSTOT multiplié par QUANTITY car le reformatage génère des colonnes supplémentaires.

SET CNOTATION = ALL
TABLE FILE VIDEOTRK
SUM TRANSTOT/D12.2 QUANTITY/D12.2 
AND COMPUTE
PRODUCT = C1 * C2;
BY TRANSDATE
END

La sortie est :

TRANSDATE        TRANSTOT        QUANTITY         PRODUCT
---------        --------        --------         -------
 91/06/17           57.03           12.00        3,252.42
 91/06/18           21.25            2.00          451.56
 91/06/19           38.17            5.00        1,456.95
 91/06/20           14.23            3.00          202.49
 91/06/21           44.72            7.00        1,999.88
 91/06/24          126.28           12.00       15,946.63
 91/06/25           47.74            8.00        2,279.11
 91/06/26           40.97            2.00        1,678.54
 91/06/27           60.24            9.00        3,628.85
 91/06/28           31.00            3.00          961.00

Comme les champs BY n'ont pas de référence de colonne, la première référence de colonne est pour TRANSTOT, à son format d'origine, suivi de la version reformatée. La prochaine référence est pour QUANTITY, à son format d'origine, suivi de la version reformatée. La dernière référence est pour la valeur calculée, PRODUCT.



Exemple : Utilisation de la notation de colonne dans une requête non FML avec CNOTATION=PRINTONLY

La définition de CNOTATION=PRINTONLY attribue des références de colonne uniquement aux colonnes de sortie. Dans ce cas, le produit de C1 et C2 calcule TRANSTOT multiplié par QUANTITY.

SET CNOTATION = PRINTONLY
 
TABLE FILE VIDEOTRK
SUM TRANSTOT/D12.2 QUANTITY/D12.2
AND COMPUTE
PRODUCT = C1 * C2;
BY TRANSDATE
END

La sortie est :

TRANSDATE        TRANSTOT        QUANTITY         PRODUCT
---------        --------        --------         -------
 91/06/17           57.03           12.00          684.36
 91/06/18           21.25            2.00           42.50
 91/06/19           38.17            5.00          190.85
 91/06/20           14.23            3.00           42.69
 91/06/21           44.72            7.00          313.04
 91/06/24          126.28           12.00        1,515.36
 91/06/25           47.74            8.00          381.92
 91/06/26           40.97            2.00           81.94
 91/06/27           60.24            9.00          542.16
 91/06/28           31.00            3.00           93.00


Exemple : Utilisation de CNOTATION=PRINTONLY avec des numéros de colonne dans une requête FML

Dans la requête suivante, le reformatage de champs génère des colonnes supplémentaires dans la matrice interne. Dans la deuxième expression RECAP, notez qu'en raison de la définition CNOTATION :

SET CNOTATION=PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
END
TABLE FILE LEDGER
SUM CUR_YR/F9.2 AS 'CURRENT,YEAR'
LAST_YR/F9.2 AS 'LAST,YEAR'
 
FOR ACCOUNT
1010 AS 'CASH ON HAND'                             OVER
1020 AS 'DEMAND DEPOSITS'                          OVER
1030 AS 'TIME DEPOSITS'                            OVER
BAR                                                OVER
RECAP TOTCASH/F9.2C= R1 + R2 + R3; AS 'TOTAL CASH' OVER
" "                                                OVER
RECAP GROCASH(2)/F9.2C=100*TOTCASH(1)/TOTCASH(2) - 100;
AS 'CASH GROWTH(%)'
END

La sortie est :

 
 CURRENT 
    YEAR
    LAST  
    YEAR
CASH ON HAND
 8784.00
 7216.00
DEMAND DEPOSITS
 4494.00
 3483.00
TIME DEPOSITS
 7961.00
 6499.00
 
--------
--------
TOTAL CASH
21239.00
17198.00
   
CASH GROWTH(%)
 
   23.50


Exemple : Utilisation de CNOTATION=PRINTONLY pour récapituler les colonnes contiguës dans une requête FML

Dans cet exemple, le calcul RECAP pour ATOT s'effectue uniquement pour les colonnes 2 et 3 affichées, comme le spécifie la requête. Aucun calcul ne s'effectue pour la colonne 1.

SET CNOTATION=PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
NEXT_YR/I5C=1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM NEXT_YR/F9.2 CUR_YR/F9.2 LAST_YR/F9.2
FOR ACCOUNT
10$$ AS 'CASH'                      OVER 
1100 AS 'ACCOUNTS RECEIVABLE'       OVER 
1200 AS 'INVENTORY'                 OVER 
BAR                                 OVER 
RECAP ATOT(2,3)/I5C = R1 + R2 + R3;
AS 'ASSETS  ACTUAL'
END

La sortie est :

 
 NEXT_YR
  CUR_YR
 LAST_YR
CASH
25992.00
21239.00
17198.00
ACCOUNTS RECEIVABLE
21941.00
18829.00
15954.00
INVENTORY
31522.00
27307.00
23329.00
 
--------
--------
--------
ASSETS ACTUAL
 
  67,375
  56,478


Exemple : Utilisation de CNOTATION=PRINTONLY avec l'adressage de colonne relatif dans une requête FML

Cet exemple calcule le changement d'argent liquide (CHGCASH) pour les colonnes 1 et 2.

SET CNOTATION=PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
NEXT_YR/I5C=1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM NEXT_YR/F9.2 CUR_YR/F9.2 LAST_YR/F9.2
FOR ACCOUNT
10$$ AS 'TOTAL CASH' LABEL TOTCASH           OVER
" "                                          OVER
RECAP CHGCASH(1,2)/I5SC = TOTCASH(*) - TOTCASH(*+1); AS 'CHANGE IN CASH'
END

La sortie est :

 
  NEXT_YR
  CUR_YR
 LAST_YR
TOTAL CASH
 25992.00
21239.00
17198.00
    
CHANGE IN CASH
    4,752
   4,044
 


Exemple : Utilisation de CNOTATION=PRINTONLY avec la notation de cellule dans une requête FML

Dans cette requête, deux expressions RECAP tirent des variances (EVAR et WVAR) en soustrayant des valeurs de quatre colonnes affichées (1, 2, 3, 4) sur la ligne 3 (PROFIT) ; ces valeurs sont identifiées en utilisant la notation de cellule (r,c).

SET CNOTATION=PRINTONLY
TABLE FILE REGION
SUM E_ACTUAL/F9.2 E_BUDGET/F9.2 W_ACTUAL/F9.2 W_BUDGET/F9.2
FOR ACCOUNT
3000 AS 'SALES'                         OVER
3100 AS 'COST'                          OVER
BAR                                     OVER
RECAP PROFIT/I5C = R1 - R2;             OVER
" "                                     OVER
RECAP EVAR(1)/I5C = E(3,1) - E(3,2);
AS 'EAST  VARIANCE'                     OVER
RECAP WVAR(3)/I5C = E(3,3) - E(3,4);
AS 'WEST  VARIANCE'
END

La sortie est :

output



Exemple : Utilisation de NOPRINT, le reformatage de champs et COMPUTE avec la notation de champ

La requête suivante comprend un champ non imprimé, plusieurs champs reformatés et trois valeurs calculées. Où SET CNOTATION=PRINTONLY, les références de colonne produisent la sortie correcte.

SET CNOTATION = PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
NEXT_YR/I5C=1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM NEXT_YR NOPRINT CUR_YR
COMPUTE AMT2/D6 = AMOUNT *2;
LAST_YR/D5   AMOUNT NEXT_YR
COMPUTE AMT3/D6  = AMOUNT*3;
COMPUTE AMT4/D6  = AMOUNT*4;
FOR ACCOUNT
10$$ AS 'CASH'                                 OVER
1100 AS 'ACCTS. REC.'                          OVER
1200 AS 'INVENTORY'                            OVER
BAR                                            OVER
RECAP ATOT/I8C = R1 + R2 + R3; AS 'TOTAL'      OVER
RECAP DIFF(2,10,2)/D8  = ATOT(*) - ATOT(*-1);
END

La sortie est :

output



Exemple : Utiliser la notation de colonne avec NOPRINT dans une requête non FML

La requête suivante, totalise TRANSTOT, QUANTITY et TRANSCODE par TRANSDATE. TRANSTOT dispose de l'option NOPRINT, donc TRANSTOT ne s'affiche pas dans la sortie de rapport. La requête calcule également les champs suivants grâce aux commandes COMPUTE :

SET CNOTATION = ALL
TABLE FILE VIDEOTRK
SUM TRANSTOT/D7.2 NOPRINT QUANTITY/D7.2 TRANSCODE
  COMPUTE TTOT2/D7.2 = C1;
  COMPUTE UNIT_COST1/D7.2 = C1/C2;
  COMPUTE UNIT_COST2/D7.2 = C1/QUANTITY;
BY TRANSDATE
END

Dans cette requête, seule CNOTATION=EXPLICIT crée la sortie correcte. L'explication suivante illustre pourquoi le paramètre EXPLICIT est nécessaire.

Avec CNOTATION=ALL, tous les champs dans la matrice interne ont des numéros de colonnes qui leur sont attribué. La requête crée les références de colonnes en particulier :

UNIT_COST1 est C1/C2. Ces numéros de colonne ont tous deux été attribués à TRANSTOT, de sorte que UNIT_COST1 soit toujours égal à 1. UNIT_COST2 est C1 (TRANSTOT) divisé par QUANTITY. La sortie est :

TRANSDATE  QUANTITY  TRANSCODE     TTOT2  UNIT_COST1  UNIT_COST2
---------  --------  ---------     -----  ----------  ----------
 91/06/17     12.00         10     57.03        1.00        4.75
 91/06/18      2.00          2     21.25        1.00       10.63
 91/06/19      5.00          4     38.17        1.00        7.63
 91/06/20      3.00          3     14.23        1.00        4.74
 91/06/21      7.00          6     44.72        1.00        6.39
 91/06/24     12.00          9    126.28        1.00       10.52
 91/06/25      8.00          7     47.74        1.00        5.97
 91/06/26      2.00          2     40.97        1.00       20.48
 91/06/27      9.00          7     60.24        1.00        6.69
 91/06/28      3.00          3     31.00        1.00       10.33

Avec CNOTATION = PRINTONLY, le champ TRANSTOT, qui contient l'option NOPRINT, n'a aucun numéro de colonne qui lui est attribué. Aucun numéro de colonne n'est affecté à QUANTITY avec son format original car il ne s'affiche pas dans la sortie de rapport. Le champ reformaté QUANTITY s'affiche et un numéro de colonne lui est attribué. Donc, la requête crée les références de colonnes suivantes :

UNIT_COST1 est C1/C2, QUANTITY/TRANSCODE. UNIT_COST2 est C1 (QUANTITY) divisé par QUANTITY. Donc UNIT_COST2 est toujours égal à 1. La sortie est :

TRANSDATE  QUANTITY  TRANSCODE     TTOT2  UNIT_COST1  UNIT_COST2
---------  --------  ---------     -----  ----------  ----------
 91/06/17     12.00         10     12.00        1.20        1.00
 91/06/18      2.00          2      2.00        1.00        1.00
 91/06/19      5.00          4      5.00        1.25        1.00
 91/06/20      3.00          3      3.00        1.00        1.00
 91/06/21      7.00          6      7.00        1.17        1.00
 91/06/24     12.00          9     12.00        1.33        1.00
 91/06/25      8.00          7      8.00        1.14        1.00
 91/06/26      2.00          2      2.00        1.00        1.00
 91/06/27      9.00          7      9.00        1.29        1.00
 91/06/28      3.00          3      3.00        1.00        1.00

Comme CNOTATION = EXPLICIT, le champ TRANSTOT reformaté est explicitement référencé dans la requête, un numéro de colonne lui est donc attribué bien qu'il ne s'affiche pas. Toutefois, aucun numéro de colonne n'est attribué au champ TRANSTOT avec son format original. Aucun numéro de colonne n'est attribué au champ QUANTITY avec son format orignal car il n'est pas explicitement référencé dans la requête. Un numéro de colonne est attribué au champ QUANTITY reformaté. Donc, la requête crée les références de colonnes suivantes :

UNIT_COST1 est C1/C2, TRANSTOT/QUANTITY. UNIT_COST2 est C1 (TRANSTOT) divisé par QUANTITY. Donc UNIT_COST2 est toujours égal à 1. La sortie est :

TRANSDATE  QUANTITY  TRANSCODE     TTOT2  UNIT_COST1  UNIT_COST2
---------  --------  ---------     -----  ----------  ----------
 91/06/17     12.00         10     57.03        4.75        4.75
 91/06/18      2.00          2     21.25       10.63       10.63
 91/06/19      5.00          4     38.17        7.63        7.63
 91/06/20      3.00          3     14.23        4.74        4.74
 91/06/21      7.00          6     44.72        6.39        6.39
 91/06/24     12.00          9    126.28       10.52       10.52
 91/06/25      8.00          7     47.74        5.97        5.97
 91/06/26      2.00          2     40.97       20.48       20.48
 91/06/27      9.00          7     60.24        6.69        6.69
 91/06/28      3.00          3     31.00       10.33       10.33


Exemple : Utiliser la notation de cellule dans une requête FML

Dans la requête suivante, CUR_YR dispose de l'option NOPRINT. L'expression CHGCASH RECAP est supposée soustraire CUR_YR de LAST_YR et NEXT_YR.

SET CNOTATION = ALL
DEFINE FILE LEDGER
CUR_YR/I7C = AMOUNT;
LAST_YR/I5C = .87*CUR_YR - 142;
NEXT_YR/I5C = 1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM CUR_YR/I5C NOPRINT LAST_YR NEXT_YR
FOR ACCOUNT
10$$ AS 'TOTAL CASH ' LABEL TOTCASH OVER
" " OVER
RECAP CHGCASH(1,3)/I5SC=(TOTCASH(*) - TOTCASH(1));
  AS 'CHANGE FROM CURRENT'
END

Lorsque CNOTATION = ALL, C1 désigne le champ CUR_YR avec son format original, C2 désigne la valeur reformatée, C3 est LAST_YR et C4 est NEXT_YR. Comme il y a une colonne supplémentaire et que RECAP fait référence uniquement aux colonnes 1 et 3, le calcul pour NEXT_YR - CUR_YR n'est pas effectué. La sortie est :

                     LAST_YR  NEXT_YR
                     -------  -------
TOTAL CASH            17,195   25,991
 
CHANGE FROM CURRENT   -4,044

Lorsque CNOTATION = PRINTONLY, aucun numéro de colonne n'est attribué au champ CUR_YR. Il n'y a donc pas de colonne 3. Aucun calcul n'est donc effectué. La sortie est :

                     LAST_YR  NEXT_YR
                     -------  -------
TOTAL CASH            17,195   25,991
 
CHANGE FROM CURRENT

Lorsque CNOTATION = EXPLICIT, la version reformatée du champ CUR_YR est C1 parce qu'elle est référencée dans la requête, bien qu'elle ne soit pas affichée. Les deux calculs sont effectués correctement. La sortie est :

                     LAST_YR  NEXT_YR
                     -------  -------
TOTAL CASH            17,195   25,991
 
CHANGE FROM CURRENT   -4,044    4,752


x
Référence : Notes d'utilisation pour les numéros de colonnes

WebFOCUS