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.
SET CNOTATION={ALL|PRINTONLY|EXPLICIT}
Hierbei gilt:
Referenz: |
Um einen Spaltenverweis in einer Anfrage zu erstellen, können Sie Folgendes tun:
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).
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
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 |
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 |
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 |
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:
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:
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
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
In diesen Fällen ist es nicht möglich, vorherzusehen, wie viele Spalten die Syntax erstellt. Wenn Sie eine Spaltennummer außerhalb des Bereichs in einem anderen Kontext verwenden, wird die folgende Meldung angezeigt:
(FOC258) FIELDNAME OR COMPUTATIONAL ELEMENT NOT RECOGNIZED: column
WebFOCUS |