Spaltenverweisnummern zuweisen

In diesem Abschnitt:

Vorgehensweise:

Die Spaltennotation weist jeder Spalte in der internen Matrix, die für eine Reportanfrage erstellt wurde, eine sequentielle Spaltennummer zu. Wenn Sie die Erstellung von Spaltenverweisnummern für die Spalten steuern möchten, die in Ihrem Report verwendet werden, verwenden Sie den CNOTATION-Befehl für die Spaltennotation.

Da sich Spaltennummern auf die Spalten in der internen Matrix beziehen, werden Sie zugewiesen, nachdem die Daten vollständig abgerufen und summiert wurden. Spalten, die in einem Report erstellt und angezeigt wurden, sind in der internen Matrix gespeichert und Spalten, die nicht in einem Report angezeigt werden, können auch in der internen Matrix erzeugt und gespeichert werden. Spalten, die in der internen Matrix gespeichert werden, enhalten berechnete Werte, neu formatierte Feldwerte, BY-Felder, Felder mit der NOPRINT-Option und bestimmte RECAP-Berechnungen wie z. B. FORECAST und REGRESS. Jeder zweiten Spalte in der internen Matrix wird standardmäßig eine Spaltennummer zugewiesen, was bedeutet, dass Sie alle intern erzeugten Spalten ausweisen müssen, wenn Sie auf den entsprechenden Spaltenwert in Ihrer Anfrage verweisen möchten.

Sie können die defaultmäßige Zuweisung von Spaltenverweisnummern ändern, indem Sie den Befehl SET CNOTATION verwenden, der Spaltennummern nur Spalten zuweisen kann, die in der Reportausgabe angezeigt werden, oder allen Feldern, auf die in der Reportanfrage verwiesen wird. Sie können die Spaltennotation in COMPUTE- und RECAP-Befehlen verwenden, um auf diese Spalten in Ihrer Anfrage zu verweisen.


Nach oben

x
Syntax: Die Erstellung von Spaltenverweisnummern steuern
SET CNOTATION={ALL|PRINTONLY|EXPLICIT}

Hierbei gilt:

ALL
Weisen Sie jeder Spalte in der internen Matrix Spaltenverweisnummern zu. ALL ist der Defaultwert.
PRINTONLY
Weist nur den Spalten Spaltenverweisnummern zu, die in der Reportausgabe angezeigt werden.
EXPLICIT
Weist allen Feldern, auf die in der Anfrage verwiesen wird, Spaltenverweisnummern zu, unabhängig davon, ob diese angezeigt werden oder nicht.

Nach oben

x
Spaltennotation in einer Reportanfrage verwenden

Referenz:

Um einen Spaltenverweis in einer Anfrage zu erstellen, können Sie Folgendes tun:



Beispiel: Spaltenschreibweise in einer nicht-FML-Anfrage mit CNOTATION=ALL verwenden

In der folgenden Anfrage mit CNOTATION=ALL berechnet das Produkt von C1 und C2 nicht TRANSTOT mal QUANTITY, da die Neuformatierung zusätzliche Spalten erzeugt.

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

Die Ausgabe ist:

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

BY-Felrder erhalten keinen Spaltenverweis, so dass der erste Spaltenverweis für TRANSTOT ist mit dem ursprünglichen Format, dann die neu formatierte Version. Als nächstes kommt QUANTITY im ursprünglichen Format und dann die neu formatierte Version. Als letztes kommt der berechnete Wert (PRODUCT).



Beispiel: Spaltenschreibweise in einer nicht-FML-Anfrage mit CNOTATION=PRINTONLY verwenden

Wenn Sie CNOTATION=PRINTONLY einstellen, werden Spaltenverweise nur den Ausgabespalten zugewiesen. In diesem Fall berechnet das Produkt aus C1 und C2 TRANSTOT mal QUANTITY.

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

Die Ausgabe ist:

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


Beispiel: CNOTATION=PRINTONLY mit Spaltennummern in einer FML-Anfrage verwenden

In der folgenden Anfrage erzeugt die Neuformatierung von Feldern zusätzliche Spalten in der internen Matrix. Beachten Sie, dass in der zweiten RECAP-Formel wegen der CNOTATION-Einstellung Folgendes zutrifft:

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

Die Ausgabe ist:

 
 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


Beispiel: CNOTATION=PRINTONLY verwenden, um RECAP auf zusammenhängende Spalten in einer FML-Anfrage anzuwenden

In diesem Beispiel tritt die RECAP-Berechnung für ATOT nur für die angezeigten Spalten 2 und 3 auf, wie es in der Anfrage angegeben wurde. Für die angezeigte Spalte 1 wird keine Berechnung durchgeführt.

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

Die Ausgabe ist:

 
 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


Beispiel: CNOTATION=PRINTONLY mit relativer Spaltenadressierung in einer FML-Anfrage verwenden

Dieses Beispiel berechnet die Veränderung in Bargeld (CHGCASH) für die angezeigten Spalten 1 und 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

Die Ausgabe ist:

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


Beispiel: CNOTATION=PRINTONLY mit Zellenschreibweise in einer FML-Anfrage verwenden

In dieser Anfrage leiten RECAP-Formeln VARIANCEs (EVAR und WVAR) ab, indem sie Werte in vier angezeigten Spalten (1, 2, 3, 4) in der Reihe drei (PROFIT) subtrahieren. Diese Werte werden durch die Zellenschreibweise (r,c) identifiziert.

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

Die Ausgabe ist:

Ausgabe



Beispiel: NOPRINT, Feldneuformatierung und COMPUTE mit Spaltenschreibweise verwenden

Die folgende Anfrage enthält ein Feld, das nicht gedruckt wird, mehrere neu formatierte Felder und drei berechnete Werte. Mit SET CNOTATION=PRINTONLY ergeben die Spaltenverweise richtige Ausgabe.

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

Die Ausgabe ist:

Ausgabe



Beispiel: Spaltenschreibweise mit NOPRINT in einer nicht-FML-Anfrage verwenden

Die folgende Anfrage summiert TRANSTOT, QUANTITY und TRANSCODE nach TRANSDATE. TRANSTOT hat die Option NOPRINT, so dass es nicht in der Reportausgabe angezeigt wird. Die Anfrage berechnet auch die folgenden Felder mit COMPUTE-Befehlen:

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

Mit dieser Anfrage erzeugt nur CNOTATION=EXPLICIT die richtige Ausgabe. Die folgende Diskussion zeigt, weshalb die Einstellung EXPLICIT nötig ist.

Mit CNOTATION=ALL werden allen Feldern in der internen Matrix Spaltennummern zugewiesen. Die Anfrage erstellt im Besonderen die folgenden Spaltenverweise:

UNIT_COST1 ist C1/C2. Diese Spaltennummern wurden beide TRANSTOT zugewiesen, so dass UNIT_COST1 immer gleich 1 ist. UNIT_COST2 ist C1 (TRANSTOT) geteilt durch QUANTITY. Die Ausgabe ist:

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

Mit CNOTATION = PRINTONLY werden dem Feld TRANSTOT, welches die Option NOPRINT hat, keine Spaltennummern hinzugefügt. Es wird QUANTITY im ursprünglichen Format keine Spaltennummer zugewiesen, da es in der Reportausgabe nicht angezeigt wird. Das neu formatierte Feld QUANTITY wird angezeigt und es wird ihm eine Spaltennummer zugewiesen. Es erstellt daher die Anfrage die folgenden Spaltenverweise:

UNIT_COST1 ist C1/C2, QUANTITY/TRANSCODE. UNIT_COST2 ist C1 (QUANTITY) geteilt durch QUANTITY. UNIT_COST2 ist daher immer gleich 1. Die Ausgabe ist:

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

Mit CNOTATION = EXPLICIT wird auf das neuformatierte Feld TRANSTOT in der Anfrage explizit verwiesen, so dass ihm eine Spaltennummer zugewiesen wird, obwohl es nicht angezeigt wird. Es wird jedoch dem Feld TRANSTOT im ursprünglichen Format keine Spaltennummer zugewiesen. Es wird dem Feld QUANTITY im ursprünglichen Format keine Spaltennummer zugewiesen, da darauf in der Anfrage nicht explizit verwiesen wird. Dem neu formatierten Feld QUANTITY wird eine Spaltennummer zugewiesen. Es erstellt daher die Anfrage die folgenden Spaltenverweise:

UNIT_COST1 ist C1/C2, TRANSTOT/QUANTITY. UNIT_COST2 ist C1 (TRANSTOT) geteilt durch QUANTITY. UNIT_COST2 ist daher immer gleich UNIT_COST1. Die Ausgabe ist:

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


Beispiel: Zellenschreibweise in einer FML-Anfrage verwenden

In der folgenden Anfrage hat CUR_YR die Option NOPRINT. Die Formel CHGCASH RECAP soll CUR_YR von LAST_YR und NEXT_YR subtrahieren.

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

Wenn CNOTATION = ALL bezieht sich C1 auf das Feld CUR_YR im ursprünglichen Format, C2 bezieht sich auf den neu formatierten Wert, C3 ist LAST_YR und C4 ist NEXT_YR. Da eine zusätzliche Spalte vorhanden ist und RECAP sich nur auf die Spalten 1 und 3 bezieht, wird die Berechnung für NEXT_YR - CUR_YR nicht durchgeführt. Die Ausgabe ist:

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

Wenn CNOTATION = PRINTONLY, wird dem Feld CUR_YR keine Spaltennummer zugewiesen, so dass es keine Spalte 3 gibt. Es werden daher keine Berechnungen durchgeführt. Die Ausgabe ist:

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

Wenn CNOTATION = EXPLICIT, ist die neu formatierte Version des Feldes CUR_YR C1, da darauf in der Anfrage verwiesen wird, obwohl es nicht angezeigt wird. Beide Berechnungen werden richtig durchgeführt. Die Ausgabe ist:

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


x
Referenz: Verwendungshinweise für Spaltennummern

WebFOCUS