Ein FML-Report kann sowohl auf explizite Spalten als auch auf explizite Zeilen verweisen. Sie können auf Spalten mit Folgendem verweisen:
Die folgende Anfrage erstellt eine FML-Matrix mit vier Zeilen und drei Datenspalten.
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
END
TABLE FILE LEDGER
SUM CUR_YR AS 'CURRENT,YEAR'
LAST_YR AS 'LAST,YEAR'
COMPUTE CHANGE/I5C = CUR_YR - LAST_YR;
FOR ACCOUNT
1010 AS 'CASH ON HAND' OVER
1020 AS 'DEMAND DEPOSITS' OVER
1030 AS 'TIME DEPOSITS' OVER
BAR OVER
RECAP TOTCASH/I5C = R1 + R2 + R3; AS 'TOTAL CASH'
END
Sowohl auf die Spalten im Report als auch auf die Zellen der Matrix kann in einem anderen FML-Report verwiesen werden.
Die Ausgabe wird im folgenden Bild illustriert.
Beispielsweise können Sie den Wert 6.499 in einem anderen FML-Report verwenden, indem Sie auf Spalte 2, Zeile 3 verweisen. Weitere Informationen finden Sie unter Auf Zellen in Berechnungen verweisen.
Sie können eine Berechnung für eine Spalte oder für eine bestimmte Spaltengruppe durchführen. Geben Sie die Spaltennummer in Klammern nach dem Labelnamen an, um Spalten zu identifizieren.
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
END
TABLE FILE LEDGER
SUM CUR_YR AS 'CURRENT,YEAR'
LAST_YR 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/I5C = R1 + R2 + R3; AS 'TOTAL CASH' OVER
" " OVER
RECAP GROCASH(2)/F5.2 = 100*TOTCASH(1)/TOTCASH(2) - 100;
AS 'CASH GROWTH(%)'
END
Beachten Sie Folgendes in der zweiten RECAP-Formel:
Der RECAP-Wert wird nur für die angegebene Spalte berechnet.
Die Ausgabe wird im folgenden Bild illustriert.
Nachdem der Datenabruf beendet ist, wird eine einzelne Spalte auf einmal berechnet und mehrere Spalten nacheinander.
Wenn innerhalb eines RECAP mehrere zusammenhängende Spalten benötigt werden, können Sie die erste und die letzte Spaltennummer mit Komma trennen. Beispielsweise gibt DIFFERENCE (2,5) an, dass Sie die Ergebnisse für die Spalten 2 bis 5 berechnen möchten.
In diesem Beispiel tritt die RECAP-Berechnung für ATOT nur für die Spalten 2 und 3 auf, wie es in der Anfrage angegeben wurde. Für die Spalte 1 wird keine Berechnung durchgeführt.
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 CUR_YR LAST_YR
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 wird im folgenden Bild illustriert.
Vorgehensweise: |
Wenn Sie nicht für jede einzelne Spalte sondern für jede zweite oder dritte Spalte eine Berechnung benötigen, können Sie dafür einen Faktor oder eine Spaltenadresse angeben. Spaltenadressierung ist besonders dann nützlich, wenn in allen Werten einer Spaltensortierung mehrere Datenfelder angezeigt werden.
Die linke Seite der Formel ist:
value(s,e,i)[/format]=
Hierbei gilt:
Ist der Name, den Sie dem Ergebnis der RECAP-Berechnung zuweisen.
Ist die Anfangsspalte.
Ist die Endspalte (Sie können * angeben, um alle Spalten zu kennzeichnen).
Ist der Inkrementfaktor.
Ist das USAGE-Format des berechneten Wertes. Der Defaultwert ist das Format der ursprünglichen Spalte.
In der folgenden Anweisung gibt es zwei Spalten für jeden Monat:
SUM ACTUAL AND FORECAST ACROSS MONTH
Falls Sie eine Berechnung nur für die ACTUAL-Daten durchführen möchten, steuern Sie die Platzierung der Ergebnisse über ein RECAP im Formular:
RECAP calcname(1,*,2)=expression;
Das Sternchen (*) bedeutet, dass Sie den RECAP für ungerade Spaltennummern (von Spalte 1 an mit einem Inkrement von 2) fortsetzen möchten.
Eine Berechnung kann eine bestimmte Spalte als Basisspalte verwenden und auf alle anderen Spalten über deren Position in Bezug auf diese Spalte verweisen. Die Spalte links von der Basisspalte ist relativ zur Basisspalte -1 platziert. Die Spalte rechts von der Basisspalte ist relativ zu dieser +1 platziert. Beispiel,
COMP=FIX(*)-FIX(*-1);
auf Änderungen in der Anlage zwischen zwei Zeiträumen verweisen. Der Verweis auf COMP=FIX(*) entspricht COMP=FIX.
Wenn Sie auf eine vorherige Spalte verweisen, muss die Spalte schon vorher abgerufen worden sein, ansonsten ist ihr Wert Null.
Dieses Beispiel berechnet die Veränderung in Bargeld (CHGCASH) für die Spalten 1 und 2.
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 CUR_YR LAST_YR
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 wird im folgenden Bild illustriert.
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 Default-Zuweisung von Spaltenverweisnummer ändern, indem Sie den SET CNOTATION=PRINTONLY-Befehl verwenden, der nur Spalten Nummern zuweist, die in der Reportausgabe angezeigt werden. 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:
Weisen Sie jeder Spalte in der internen Matrix Spaltenverweisnummern zu. ALL ist der Defaultwert.
Weist nur den Spalten Spaltenverweisnummern zu, die in der Reportausgabe angezeigt werden.
Weist allen Feldern, auf die in der Anfrage verwiesen wird, Spaltenverweisnummern zu, unabhängig davon, ob diese angezeigt werden oder nicht.
Hinweis: CNOTATION wird in ON TABLE-Phrasen nicht unterstützt.
Wenn ein Report mit einer ACROSS-Phrase sortiert wird, werden alle abgerufenen Werte in den entsprechenden Spalten ausgerichtet. Jede Spalte hat einen Titel, der aus einem Wert des ACROSS-Feldes besteht. Die gesamte Datenspalte kann direkt über diesen Wert in einer RECAP-Berechnung adressiert werden.
Die folgende Anfrage verwendet einen Faktor, der vom Wert des ACROSS-Feldes (YEAR) abhängt, um die Lagerkosten für jedes Jahr zu berechnen. Sie berechnet danach den Gewinn, indem alle Anlagen summiert werden und dann die Lagerkosten für jedes Jahr abgezogen werden.
TABLE FILE LEDGER
SUM AMOUNT ACROSS YEAR
FOR ACCOUNT
10$$ AS 'CASH' LABEL CASH OVER
1100 AS 'ACCOUNTS RECEIVABLE' LABEL RECEIVE OVER
BAR OVER
1200 AS 'INVENTORY VALUE' LABEL INVENT OVER
RECAP INVENTORY_FACTOR/F5.2 = IF YEAR LT '1986'
THEN 1.1 ELSE 1.25; AS 'INVENTORY COST FACTOR' OVER
RECAP INVENTORY_COST = INVENTORY_FACTOR * INVENT;
AS 'INVENTORY COST' OVER
BAR OVER
RECAP PROFIT = CASH + RECEIVE - INVENTORY_COST;
END
Die Ausgabe wird im folgenden Bild illustriert.
WebFOCUS |