Kapitelübersicht



7 Rechnen mit Werten, Zeiten oder Schluesselinhalten (Formeln)
  7.1 Anforderung von Formeln
  7.2 Werteformeln
    7.2.1 Standardannahme fuer Kommastelle und Dimension
    7.2.2 GESAMT-Operand in Werteformeln
    7.2.3 TOTAL -Operand in Werteformeln
    7.2.4 KUMUL -Operand in Werteformeln
    7.2.5 RANG -Operand in Werteformeln
    7.2.6 GRANZ -Operand in Werteformeln
    7.2.7 AKT_MENGE -Operand in Werteformeln
  7.3 Zeitraumformeln
  7.4 Schluesselformeln
  7.5 Zwischen- und Endsummen im Spaltenschluessel
  7.6 Anforderung von Funktionen
  7.7 Restriktionen bei Verwendung von Formeln und Funktionen
  7.8 Rundungsfunktion bei Werten
  7.9 Reihenfolge bei der Abarbeitung von Berechnungsanweisungen (Option SVZ)
  7.10 Die Formelbibliothek (Online)
  7.11 Anforderung von Formeln (ONLINE)
  7.12 Editierfunktionen in der Maske VS114
  7.13 Anforderung von Formeln (BATCH-Sprache)
  7.14 Definition von Formeln durch Formeln aus der Formelbibliothek
  7.15 Bedingungen in Formeln (IF / THEN / ELSE)





                                                      Kap. 7




     Rechnen mit Werten, Zeiten oder Schluesselinhalten (Formeln)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis



                                                      Kap. 7.1




     Anforderung von Formeln


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Formeln sind temporaer aus Elementen der Datenbasis - ueber
    Berechnungen mit Direktwerten - erzeugte Kategorien.
    Entsprechend der drei Grundelemente der Datenbasis gibt es
    drei Arten von Formeln:


       - Werteformeln
       - Zeitraumformeln
       - Schluesselformeln.


    Formeln koennen also an Stellen angefordert werden, an denen


                (1)  - ein Wert
                (2)  - ein Zeitpunkt
                (3)  - eine Schluesselauspraegung
    stehen kann.


    Dabei duerfen maximal zu zwei Spaltenschluesseln Formeln ange-
    fordert werden.


    Weitere Beschraenkungen liegen fuer besondere Funktionen vor.
    (siehe hierzu weiter unten in Kap. 7)


    Aufbau von Formeln
    ------------------


    Formeln bestehen aus einer Formelbezeichnung und einem
    arithmetischen Ausdruck:


    BEZEICHNUNG = arithmetischer Ausdruck



    BEZEICHNUNG ist eine beliebige Zeichenkombination.
    Es gibt zwei Arten von Formeln, die sichtbaren (auflistbar) und
    die unsichtbaren (werden nie aufgelistet).
    Eine unsichtbare Formel erhalten Sie, wenn Sie fuer BEZEICHNUNG
    einen Namen waehlen, der mit "NN" beginnt.





    Beispiel:
      NNFORMEL1 = '0185' + '0285'
      EXFORMEL2 = NNFORMEL1 + 10


    NNFORMEL1 erscheint nicht auf der Liste, ihr Wert fliesst aber
    in EXFORMEL2 ein, die ausgedruckt wird, da sie keinen NN-Formel-
    namen traegt.


    Fuer die Beschreibung der Formel haben wir die Form des
    arithmetischen Ausdrucks gewaehlt. Auf diese Weise koennen sehr
    viele, recht unterschiedliche Berechnungen vorgenommen werden.
    Allerdings bedingt diese Freiheit bei der Erfassung und der
    Kombination einen weitgehenden Verzicht auf Benutzerfuehrung im
    Dialog. Die Erfassung der arithmetischen Ausdruecke in Formeln
    ist daher fuer Dialog und BATCH-Sprache identisch.



    Formeloperationen und -operanden
    --------------------------------


    - Operationen: Addition        +
                   Subtraktion     -
                   Multiplikation  *
                   Division        /
                   Division        % ( a % b = 0, wenn b = 0,
                                                  sonst = a / b )
                   Division        : ( a : b = 1, wenn b = 0,
                                                  sonst = a / b )
                   Exponentiation  **


    - Operanden: - Werte                    bei (1)
                   Zwischensummen               (1)
                   Zeitraeume                   (2)
                   Schluesselauspraegungen      (3)
                 - ganzzahlige Konstanten
                 - Formeln



    Die Prioritaet der Operationen ist die allgemein uebliche:


        1.  **   Exponentiation  (potenzieren und radizieren)
        2.  *    Multiplikation
            /    Division
        3.  +    Addition
            -    Subtraktion.


    Innerhalb gleicher Prioritaet wird von links nach rechts
    ausgewertet. Ist eine andere Reihenfolge gewuenscht, so sind
    runde Klammern zu benutzen.





    Des weiteren gibt es noch folgende Restriktionen:


        Division       x / y     y ^= 0  (Division durch 0)
        Exponentiation x ** y    y ganzzahlig  fuer  x < 0
                                 y >= 0  fuer  x = 0   (0 ** 0 := 1)



    Beispiel:


    Fuer ganzzahliges und positives  n  ist


        potenzieren    x ** n               x beliebig
        radizieren     x ** (1 / n)         x >= 0





                                                      Kap. 7.2




     Werteformeln


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis



    Zulaessige Operanden bei Werteformeln (Erlaeuterungen s. u.)
    ------------------------------------------------------------


     - Ganzzahlige Direktoperanden
     - Werte mit einfacher Anforderung
     - Werte mit Zeitangabe
     - Werte mit Arbeitsgebietsangabe
     - Werte mit Inhaltsbedingungen
     - Werte mit Zwischensummenbedingungen (*-Bedingungen)
     - Werte mit Schluesselbedingungen
     - Werteformeln (ueber Bezeichnung)


    An eine Werteformel kann noch Druckaufbereitungsinformation
    angehaengt werden. Sie wird von der eigentlichen Formel durch
    ein Komma getrennt und in Klammern eingeschlossen.


    Dies ist bei Werteformeln in der Online-Verarbeitung in saemtlichen
    Werten in der Batch-Sprache moeglich.


    Eine Aufbereitung hat folgende Form:
      AUFBEREITUNG   := (STELLENZAHL,NACHKOMMASTELLEN,
                         DIMENSION,SVZ)


    Parameter koennen von hinten einfach weggelassen werden, von vorn
    oder aus der Mitte muessen die nachfolgenden Kommata gesetzt wer-
    den.


    Beispiele:
    ,(6,2,DM,SVZ) : 6 Stellen, davon 2 Nachkommastellen mit Dimension
                    DM und mit einer Abarbeitungsregel (SVZ: Spalte
                    vor Zeile), wenn es sich um eine Formel handelt
    ,(6,2)        : 6 Stellen, davon 2 Nachkommastellen, Dimension
                    ist nicht angegeben (blank)
    ,(6,,DM)      : 6 Stellen, davon 0 Nachkommastellen, Dimension
                    DM
    ,(,,,SVZ)     : Besagt fuer eine Formel, dass zuerst die Spalte
                    und danach die Zeile fuer die Berechnung heran-
                    gezogen werden soll





    Werte mit einfacher Anforderung:
    --------------------------------
     Wird in einer Auswertung mit dem Schluessel ZEITRAUM operiert
     und ist die Arbeitsgebietszuordnung eindeutig, so koennen die
     Werte auch in Werteformeln ueber eine einfache Anforderung
     angesprochen werden.
     Es genuegt dann, die Bezeichnung bzw. Abkuerzung des Wertes
     zu nennen.


     Beispiel:
     AUSZAHLUNG = LEISTUNG - ABZUEGE


    Werte mit erweiterter Anforderung:
    ----------------------------------
     Zu jedem Wert in einer Formel koennen Zusatzangaben definiert
     werden. Diese stehen, durch Kommata getrennt, in einem Klammer-
     ausdruck hinter der Wertebezeichnung oder -abkuerzung.
     Folgende Zusatzangaben sind moeglich:


    Zeitangabe
    ----------
     Wird in einer Auswertung der Schluessel ZEITRAUM weggelassen,
     so muessen zu jedem Wert, also auch zu den Werten in Werte-
     formeln, Zeitangaben definiert werden.
     Zeitangaben erwartet ASS immer als erste Zusatzoption. Werden
     andere Zusatzangaben vorgenommen, ohne Zeitangaben, so muss
     ASS das Fehlen der Zeitangaben durch ein vorausgehendes Komma
     angezeigt werden.


     Beispiele:
      ohne Zusatzoption:
       AUSZAHLUNG = LEISTUNG(0196)
       AUSZAHLUNG = LEISTUNG(0196-1296)
      mit Zusatzoptionen:
       AUSZAHLUNG = LEISTUNG (0199,AGNR=1) - ABZUEGE (0199,AGNR=1)
       AUSZAHLUNG = LEISTUNG (,AGNR=1) - ABZUEGE (,AGNR=1)


     Fuer die Angabe der Zeiten gelten die gleichen Regeln wie fuer
     die Auswahl von Zeiten zum Schluessel ZEITRAUM.
     Es wird daher auf die Kap. 4.5.1 'Absolute Zeitangaben'
     und Kap. 4.5.2 'Relative Zeitangaben' verwiesen.



    Arbeitsgebietsangabe
    --------------------


     Ist die Zuordnung eines Wertes zu den ausgewaehlten Arbeitsge-
     bieten nicht eindeutig, so muss auch in den Werteformeln eine
     Zusatzangabe zum Wert vorgenommen werden.
     Das Arbeitsgebiet wird ueber seine Nummer in dem Ausdruck
     AGNR = referenziert.





     Beispiel:
     AUSZAHLUNG = LEISTUNG (,AGNR=1) - ABZUEGE (,AGNR=1)


    Inhalts-, *- und Schluesselbedingungen
    --------------------------------------
     Zu einem Wert koennen zusaetzlich bis zu 20 Inhalts-, *- und
     Schluesselbedingungen ausgewaehlt werden, die nur fuer diesen
     Wert selektiv wirken. Mehrere Bedingungen zu einem Wert sind
     als UND-Verknuepfungen zu interpretieren.


    ODER-Verknuepfung
    -----------------
      In einer Werteformel kann aber ein Wert mehrmals angesprochen
      werden. Auf diese Weise kann ueber die Summierung mehrerer
      Wertanforderungen desselben Wertes mit verschiedenen Schluessel-
      bedingungen eine ODER-Verknuepfung erreicht werden.


    Form
    ----


      Inhaltsbedingungen werden in der Form


      VERGLEICHSOPERATOR VERGLEICHSINHALT


      angefordert, *-Bedingungen werden in der Form


      = *  oder  ^= *


      angefordert, Schluesselbedingungen werden in der Form


      SCHLUESSEL VERGLEICHSOPERATOR SCHLUESSELINHALT


      angefordert.


      Der Schluessel wird ueber seine Bezeichnung oder seine
      Abkuerzung angesprochen.
      Folgende Vergleichsoperatoren sind zulaessig:


      '=', '^=', '<', '<=', '>', '>='
      Bei Schluesseln mit ZEIT-TYP (siehe ST06) sind auch
      chronologische Vergleiche moeglich, siehe 4.4.1.



    Inhaltsbedingung
    ----------------
      Ein Vergleichsinhalt ist eine (negative) Zahl, die Nachkomma-
      stellen haben kann. Eine negative Zahl wird durch ein voran-
      gestelltes Minus gekennzeichnet, Plus ist als Vorzeichen nicht
      zulaessig. Die Position des Kommas wird durch ein Komma oder
      einen Punkt markiert.





    *-Bedingungen
    -------------
      ERGEBNIS = LEISTUNG(, ^= *) + ABZUEGE (, = *)
      In Zwischen- oder Endsummenzeilen (*-Zeilen) liefert die
      obige Formel die Summe aller ABZUEGE, in den anderen Zeilen
      wird die jeweilige LEISTUNG dargestellt.
      *-Bedingungen werden nur beruecksichtigt, wenn WERTE als
      Spaltenschluessel angefordert ist.



    Schluesselbedingungen
    ---------------------
      Ist der genannte Schluesselinhalt kein ASS-Bezeichner, so
      muss er in Hochkommata gesetzt werden.


      Wird der Vergleichsoperator "=" benutzt, so muss die damit
      angesprochene Schluesselauspraegung existieren. Wird der
      zugehoerige Schluessel als Kopf-, Zeilen- oder Spalten-
      schluessel selektiert, so muss die genannte Auspraegung
      dort auch selektiert worden sein, entweder explizit als
      Einzelauspraegung, als Formeloperand oder als Mitglied einer
      Menge.


      Bei den Vergleichsoperatoren "=" und "^=" ist die Angabe von
      Fragezeichen (Maskierung) im Schluesselinhalt zulaessig (ver-
      gleiche Kap. 4.4.1).


    Beispiel:


      Die Leistungen der Klassen 010 und 020 sollen mit 10 bzw. 20
      Prozent Mehrwertsteuer gewichtet werden und als AUSZAHLUNGswert
      berechnet werden. In Abhaengigkeit von den drei Auspraegungen
      des Schluessels KLASSE soll der Wert LEISTUNG um einen bestimmten
      Mehrwertsteuersatz erhoeht werden:
      7% fuer die Auspraegung 010, 16% fuer die Auspraegung 020, kein
      Mehrwertsteuersatz fuer die Auspraegung 025.
      Eine derartige Aufgabe kann durch folgende Anforderung geloest
      werden:


      ASS;
       AG:  9;
       KS:  ZEITRAUM = ( 0199);
       ZS:  KLASSE = ( 010,020,025);
       SS:  WERTE = (ANTEIL = (LEISTUNG +
                               LEISTUNG (,KLASSE = 010)* 7/100 +
                               LEISTUNG (,KLASSE = 020)* 14/100));
      END;





                                                      Kap. 7.2.1




     Standardannahme fuer Kommastelle und Dimension


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
    Standardannahme fuer die Stellenzahl (vor Komma) ist 15, fuer
    die Nachstelle 0 und fuer die Dimension Blank.



                                                      Kap. 7.2.2




     GESAMT-Operand in Werteformeln (Anteil eines Schluesselinhalts
     an einem Gesamt- oder Teilbetrag eines Wertes)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Bei Berechnungen in den Werten koennen Ergebnisse von Zwischen-
    oder Endsummenbildungen als Operanden verwendet werden, die sich
    auf einen Kopf- oder Zeilenschluessel beziehen. Dazu ist der
    sogenannte GESAMT-Operand erforderlich, der nur in Werteformeln
    zulaessig ist und nur, wenn WERTE als Spaltenschluessel und der
    betreffende (echte) Schluessel als Kopf- oder Zeilenschluessel
    mit Zwischen- oder Endsumme angefordert wird.
    Das allgemeine Format fuer die Verwendung des Gesamt-Operanden
    sieht folgendermassen aus:


            GESAMT(Schluessel,Wert,Summenniveau)


                   oder


            GESAMT(Schluessel,Wert)


    Mit dem Gesamt-Operanden wird eine angeforderte und bei der Aus-
    wertung zur Verfuegung stehende Summenzeile angesprochen.
    Ueber die Angabe des entsprechenden Schluessels und die gewuenschte
    Anzahl an Stern- bzw. Pluszeichen (Summenniveau) wird die jeweilige
    Zeile identifiziert, in der die anvisierte Summe steht, ueber den
    Wert die Spalte. Die erste auftretende Summenzeile, die das ent-
    sprechende Summenniveau repraesentiert, bleibt fuer die Berechnung
    in der Formel solange gueltig, bis in der logischen Reihenfolge
    der Abarbeitung die naechste Summenzeile des gleichen Summen-
    niveaus zur Ermittlung ansteht (d. h. die urspruengliche Summe
    ist nicht mehr relevant) und somit auch in der Formel wirksam
    wird. Zur Berechnung wird also stets die naechste Zwischen- oder
    Endsumme des gewuenschten Summenniveaus, die gerade fuer die
    Ausgabe vorbereitet wird, herangezogen.





    Gibt man beim GESAMT-Operanden kein Summenniveau (Stern oder Plus)
    an, so nimmt ASS eine Endsummenanforderung (SUMME) fuer den
    jeweiligen Schluessel an. Die nachfolgenden Beispielanforderungen
    sind daher in ihrer Wirkung identisch.



    Beispiel:
          GESAMT( REISETARIF , LEISTUNG,*)
                     bzw.
          GESAMT( REISETARIF , LEISTUNG)
    Es soll ermittelt werden, welchen Anteil die Leistungen in den
    einzelnen Tarifen an den gesamten Leistungen haben. Der Schluessel
    REISETARIF habe die Auspraegungen 010, 015, 020.


    Die Anforderung in BATCH-Sprache:
      ASS    ;
       AG :   REISEVERSICHERUNG  ;
       KS :   ZEITRAUM = ( 0199,0299 )  ;
       ZS:    REISETARIF ;
       SS:    WERTE = ( LEISTUNG ,
                        ANTEIL = LEISTUNG * 100 /
                                 GESAMT( REISETARIF , LEISTUNG,*) ,
                        ( 6 ,, % )   )  ;
      END  ;


    oder gleichbedeutend:



      ASS    ;
       AG :   REISEVERSICHERUNG  ;
       KS :   ZEITRAUM = ( 0199,0299 )  ;
       ZS:    REISETARIF ;
       SS:    WERTE = ( LEISTUNG ,
                        ANTEIL = LEISTUNG * 100 /
                                 GESAMT( REISETARIF , LEISTUNG ) ,
                        ( 6 ,, % )   )  ;
      END  ;





    Das Ergebnis:



         +----------------------------------+
         I  ASS                    SEITE 1  I
         I  ZEITRAUM: 0199                  I
         I  REISETARIF I LEISTUNG   ANTEIL  I
         I             I DM         %       I
         +-------------+--------------------+
         I  010        I   600,00       60  I
         I  015        I   300,00       30  I
         I  020        I   100,00       10  I
         I             I                    I
         I  *          I  1000,00      100  I
         +----------------------------------+


    GESAMT bezieht sich hier auf die Summe 1000.



         +----------------------------------+
         I  ASS                    SEITE 2  I
         I  ZEITRAUM: 0299                  I
         I  REISETARIF I LEISTUNG   ANTEIL  I
         I             I DM         %       I
         +-------------+--------------------+
         I  010        I   600,00       40  I
         I  015        I   600,00       40  I
         I  020        I   300,00       20  I
         I             I                    I
         I  *          I  1500,00      100  I
         +----------------------------------+


    GESAMT bezieht sich hier auf die Summe 1500.






    Auch die Ergebnisse von Zwischensummenbildungen koennen, wie
    gesagt, als 'GESAMT'-Operanden in Werteformeln verwendet werden.
    Zum Beispiel soll ermittelt werden, welchen Anteil die Leistung
    im einzelnen Tarif an den Leistungen innerhalb einer Gruppe von
    Tarifen einnimmmt. Die Auswahl der Zwischensumme erfolgt durch
    die Anzahl der Sterne im 'GESAMT'-Operanden.



    Die Anforderung in BATCH-Sprache:


      ASS    ;
       AG :  REISEVERSICHERUNG  ;
       KS :  ZEITRAUM = ( 0199 )  ;
       ZS:   REISETARIF = ( 010, 020, 025, 040, *,
                            081, 082, 090, 100, 110, 120, ** )  ;
       SS:   WERTE = ( LEISTUNG ,
                       ANTEIL = LEISTUNG * 100 /
                                GESAMT( REISETARIF , LEISTUNG , * ) ,
                       ( 6 , 2 , PROZ )   )  ;
      END ;


    Ergebnis:
            +--------------------------------+
            I ASS                    SEITE 1 I
            I REISETARIF I LEISTUNG   ANTEIL I
            I            I DM         PROZ   I
            +------------+-------------------+
            I 010        I   100,00    50,00 I
            I 020        I    20,00    10,00 I
            I 025        I    30,00    15,00 I
            I 040        I    50,00    25,00 I
            I            I                   I
            I *          I   200,00   100,00 I
            I            I                   I
            I 081        I   320,00    71,11 I
            I 082        I    10,00     2,22 I
            I 090        I    40,00     8,88 I
            I 100        I    30,00     6,66 I
            I 110        I    30,00     6,66 I
            I 120        I    20,00     4,44 I
            I            I                   I
            I *          I   450,00   100,00 I
            I            I                   I
            I **         I   650,00    ----- I
            +------------+-------------------+





    Zur Illustration von verschachtelten Formeln ist obiges Beispiel
    erweitert um die Berechnungen der gesamten und der nach maennlich
    und weiblich gegliederten Anteile.



    Anforderung:


     ASS;
      AG: 9;
      KS: ZEITRAUM = ( 0199 );
      ZS: REISETARIF;
      SS: WERTE = ( LEIST ,
                    ANTEIL = 'ANTEIL M' + 'ANTEIL W'       , (6,2,%) ,
                    NNTEIL = GESAMT(REISETARIF,LEIST) / 100, (15,4)  ,
                    'ANTEIL M' = LEIST(,GESCHLECHT=1)/NNTEIL,(6,2,%) ,
                    'ANTEIL W' = LEIST(,GESCHLECHT=2)/NNTEIL, (6,2,%));
      GR: SUMME = ( REISETARIF );
     END;



    Anmerkungen:
    Da  ANTEIL M  und  ANTEIL W  keine gueltigen PL/I-Bezeichner sind
    (sie enthalten ein Leerzeichen), muessen sie in ' eingeschlossen
    werden. Die Formel NNTEIL wird nicht gedruckt, da sie unsichtbar
    ist (der Name beginnt mit dem Buchstabenpaar NN). Die Anordnung
    der einzelnen Formeln unterliegt im Spaltenschluessel keinerlei
    Restriktionen.





    Ergebnis:



    ARBEITSGEBIET:    9: REISEVERSICHERUNG


    ZEITRAUM: 0199


               I WERTE
               I       LEISTUNG    ANTEIL  ANTEIL M  ANTEIL W
    REISETARIF I             DM         %         %         %
    -----------------------------------------------------------
               I
    010        I         100,00     10,00      1,00      9,00
    015        I           1,00      0,10      0,07      0,03
    020        I          20,00      2,00      0,80      1,20
    025        I          30,00      3,00      1,20      1,80
    030        I          40,00      4,00      1,60      2,40
    040        I          50,00      5,00      1,00      4,00
    050        I          60,00      6,00      3,60      2,40
    055        I          70,00      7,00      1,40      5,60
    060        I          80,00      8,00      7,20      0,80
    065        I          99,00      9,90      2,00      7,90
    081        I         320,00     32,00      6,40     25,60
    082        I          10,00      1,00      0,60      0,40
    090        I          40,00      4,00      1,20      2,80
    100        I          30,00      3,00      0,60      2,40
    110        I          30,00      3,00      1,50      1,50
    120        I          20,00      2,00      1,20      0,80
               I
    *          I       1.000,00    100,00     31,37     68,63





                                                      Kap. 7.2.3




     TOTAL-Operand in Werteformeln (Anteil eines Schluesselinhalts
     an der Summe ueber alle Inhalte)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Waehrend der GESAMT-Operand stets auf ausgewaehlte Werte und
    moegliche Zwischen- und Endsummen zu ausgewaehlten Schluessel-
    inhalten eines Schluessels Bezug nimmt, greift der TOTAL-Ope-
    rand immer auf alle Auspraegungen des angeforderten Schluessels
    zu. Dabei werden die Teilbetraege aller Schluesselauspraegungen
    bzgl. des angeforderten Werts zu einer Summe zusammengefasst.


    Fuer den Fall, dass in einer Anforderung alle Schluesselinhalte
    eines Schluessels ausgewaehlt wurden, liefern GESAMT- und TOTAL-
    Operand die gleichen Summen ueber die Teilbetraege aller Ausprae-
    gungen zum angeforderten Wert.


    Bei Anwendung des TOTAL-Operanden sind nachstehende Einschraen-
    kungen zu beachten:
    Dieser darf nur in Werteformeln und hier auch nur dann, wenn
    WERTE als Spaltenschluessel angefordert ist, benutzt werden.
    Bei Rechenwerten ist die Verwendung des TOTAL-Operanden unzu-
    laessig.
    Der echte Schluessel, auf den sich der TOTAL-Operand bezieht,
    darf nur ein Kopf- oder Zeilenschluessel sein.



    In einer Werteformel muss er in folgendem Format angegeben
    werden:


             TOTAL ( Schluessel ,  Wert ).


    Haeufigster Anwendungsfall des TOTAL-Operanden: Berechnungs des
    Anteils eines bestimmten Wertes einer Schluesselauspraegung am
    Gesamtwert aller Schluesselinhalte des betrachteten Schluessels.



    Hierzu ein erlaeuterndes Beispiel:


    Es soll ermittelt werden, welchen Anteil die Leistung eines ein-
    zelnen Tarifs an den Leistungen innerhalb aller Tarife einnimmt.
    Der auszuwertende Schluessel soll REISETARIF heissen und besteht
    aus 10 Einzeltarifen.


    Tarife I Leistung
           I       DM
    -------I---------
      010  I  100,00
      020  I  200,00
      030  I   50,00
      040  I   50,00
      050  I  100,00
      060  I  130,00
      070  I   40,00
      080  I   30,00
      090  I  150,00
      100  I  150,00
      --------------
             1000,00



    Hiervon sollen nun 5 Einzeltarife ausgewaehlt werden.



    Die Anforderung in BATCH-Sprache :


      ASS;
       AG :  REISEVERSICHERUNG ;
       KS :  ZEITRAUM ( 0699 ) ;
       ZS :  REISETARIF = ( 010, 030, 050, 080, 100 , * ) ;
       SS :  WERTE = ( LEISTUNG ,
                       ANTEIL = LEISTUNG * 100 /
                                TOTAL ( REISETARIF , LEISTUNG ) ,
                                ( 6, 2, PROZ )
                     ) ;
      END;



    Ergebnis:


             +-----------------------------------+
             I ASS                               I
             I REISETARIF  I  LEISTUNG    ANTEIL I
             I             I  DM          PROZ   I
             +-------------I---------------------+
             I   010       I  100,00      10,00  I
             I   030       I   50,00       5,00  I
             I   050       I  100,00      10,00  I
             I   080       I   30,00       3,00  I
             I   100       I  150,00      15,00  I
             I             I                     I
             I   *         I  430,00      43,00  I
             +-----------------------------------+


    Anmerkung:


    Eine Besonderheit tritt beim Anwenden des TOTAL-Operanden auf,
    die unserer gewohnten Vorstellung ueber Anteile in Prozent im
    ersten Augenblick zuwiderlaeuft, mathematisch gesehen jedoch
    voellig korrekt ist.


    Ein Beispiel verdeutlicht diesen Zusammenhang:
    Stellen wir uns zum Schluessel Geschaeftsstelle mit den 3 Aus-
    praegungen Muenchen, Hamburg und Koeln und zum WERT Vertragsan-
    zahl folgende Zahlenwerte vor.



        I-------------I----------------I-----------I
        I GESCHAEFTS- I VERTRAGS-      I ANTEIL    I
        I STELLE      I ANZAHL      DM I        %  I
        I-------------I----------------I-----------I
        I  Hamburg    I        2000    I     50,00 I
        I  Muenchen   I      - 5000    I  - 125,00 I
        I  Koeln      I        7000    I    175,00 I
        I-------------I----------------I-----------I
        I  Summe      I        4000    I    100,00 I
        I-------------I----------------I-----------I




    Die Summe der Vertragsanzahl aller drei Geschaeftsstellen ent-
    spricht genau 100 Prozent.
    In der Spalte ANTEIL sieht man nun, dass bei Auswahl von Ge-
    schaeftsstelle Muenchen oder Koeln der Anteil der Vertragsan-
    zahl bzgl. der Summe ueber alle Vertraege einen Wert von ueber
    100 Prozent annehmen kann.
    Dies tritt aber nur auf, wenn der Werteinhalt bei einzelnen Aus-
    praegungen eines Schluessels negative Zahlenwerte besitzt.


                                                      Kap. 7.2.4




     KUMUL-Operand in Werteformeln (Aufgelaufene Summe eines Wertes
     innerhalb eines Schluessels)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Beschreibung:
    ------------


    Fordert man in einer Werteformel den KUMUL-Operanden bezueglich
    eines Wertes und eines Schluessels an, so werden zu allen Aus-
    praegungen dieses Schluessels bzw. zu allen Schluesseln und
    Schluesselauspraegungen, die dem angegebenen Schluessel in der
    Auswertung untergeordnet sind ( KS > ZS > SS, niedrigerer ZS/SS ),
    die aufgelaufenen Wertesummen angezeigt.



    Allgemeine Form des KUMUL-Operanden:
    -----------------------------------


    KUMUL ( Schluessel , Wert ( Optionen )), Aufbereitung


    - Schluessel
      ----------
      Es ist ein Schluessel anzugeben, der in der Anforderung bereits
      als KS, ZS oder SS ausgewaehlt wurde.


    - Wert
      ----
      Im KUMUL-Operanden kann jeder Wert des Arbeitsgebietes ange-
      fordert werden. Dieser Wert muss nicht zusaetzlich in der
      Anforderung ausgewaehlt werden.


    - Optionen
      --------
      Neben der einfachen Werteanforderung ist im KUMUL-Operanden
      auch die erweiterte Werteanforderung mit Zusatzangaben erlaubt
      (Zeitangaben, Schluesselbedingungen).


    - Aufbereitung
      ------------
      Aufbereitungsangaben koennen wahlweise in der Form "Vorkomma-
      stellen, Nachkommastellen, Dimension" angegeben werden.




    Restriktionen:
    -------------


    Fuer die Verwendung des KUMUL-Operanden sind folgende
    Restriktionen zu beachten:


    - Der KUMUL-Operand kann nur in WERTE-Formeln verwendet werden.


    - Wird der Pseudoschluessel WERTE in der Spaltendimension ver-
      wendet, muss der ausgewaehlte Schluessel diesem in der Aus-
      wertung uebergeordnet sein ( KS oder ZS ).


    - Bei Verwendung des Pseudoschluessels WERTE in der Zeilen-
      dimension muss der Schluessel in der Spaltendimension ausge-
      waehlt werden, wobei in der Spaltendimension keine Formel
      verwendet werden darf.




    Beispiel:


    Die Neuauftraege sollen fuer den Monat 0599 nach LAND und WERK
    gegliedert aufgelistet werden.
    Zusaetzlich soll in zwei weiteren Spalten jeweils die kumulierte
    Summe nach den Schluesseln LAND bzw. WERK erscheinen.



    Die Anforderung in BATCH-Sprache :


      ASS;
       AG :  LEISTUNGS_STATISTIK ;
       KS :  ZEITRAUM ( 0599 ) ;
       ZS :  LAND ,
             WERK ;
       SS :  WERTE = ( NEUAUFTRAEGE ,
                       KUMUL_WERK = KUMUL ( WERK , NEUAUFTRAEGE ) ,
                       KUMUL_LAND = KUMUL ( LAND , NEUAUFTRAEGE ));
      END;





    Ergebnis:


    +------------------------------------------------------------+
    I ASS                                                        I
    I ARBEITSGEBIET: LEISTUNGSSTATISTIK                          I
    I ZEITRAUM: 0599                                             I
    I                                                            I
    I                   I NEUAUFTRAEGE   KUMUL_WERK   KUMUL_LAND I
    I LAND      WERK    I           DM           DM           DM I
    +-------------------+----------------------------------------+
    I BAYERN    15      I        2.849        2.849        2.849 I
    I           21      I        1.526        4.375        4.375 I
    I           82      I        3.538        7.913        7.913 I
    I           87      I          768        8.681        8.681 I
    I                                                            I
    I HESSEN    15      I       10.932       10.932       19.613 I
    I           21      I        3.795       14.727       23.408 I
    I           82      I          330       15.057       23.738 I
    I           87      I           18       15.075       23.756 I
    +------------------------------------------------------------+


                                                      Kap. 7.2.5




     RANG-Operand in Werteformeln (Rangfolge nach Wertegroessen
     innerhalb eines Schluessels)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Beschreibung:
    ------------


    Fordern Sie in einer Werteformel den RANG-Operanden bezueglich
    eines echten oder ueber eine andere Werteformel berechneten Wertes
    und eines Schluessels an, wird zu allen Auspraegungen dieses
    Schluessels bzw. zu allen Auspraegungen der Schluessel, die dem
    angegebenen Schluessel in der Auswertung untergeordnet sind
    ( KS > ZS > SS, niedrigerer ZS/SS ), eine aufsteigende Rangfolge
    nach absteigender Wertegroesse geliefert.



    Allgemeine Form des RANG-Operanden:
    -----------------------------------


    RANG ( Schluessel , Wert ( Optionen )), Aufbereitung


    - Schluessel
      ----------
      Es ist ein Schluessel anzugeben, der in der Anforderung bereits
      als KS, ZS oder SS ausgewaehlt wurde.


    - Wert
      ----
      Im RANG-Operanden kann jeder Wert des Arbeitsgebietes ange-
      fordert werden. Dieser Wert muss nicht zusaetzlich in der
      Anforderung ausgewaehlt werden.
      Ausserdem kann als Wert auch die Bezeichnung einer in der
      Anforderung formulierten Werteformel verwendet werden.


    - Optionen
      --------
      Neben der einfachen Werteanforderung ist im RANG-Operanden bei
      echten Werten auch die erweiterte Anforderung mit Zusatzangaben
      ( Zeitangaben, Schluesselbedingungen ) erlaubt.


    - Aufbereitung
      ------------
      Aufbereitungsangaben koennen wahlweise in der Form "Vorkomma-
      stellen, Nachkommastellen, Dimension" angegeben werden.




    Restriktionen:
    -------------


    Fuer die Verwendung des RANG-Operanden sind folgende Restriktionen
    zu beachten:


    - Der RANG-Operand kann nur in WERTE-Formeln verwendet werden.


    - Wird der Pseudoschluessel WERTE in der Spaltendimension ver-
      wendet, muss der ausgewaehlte Schluessel diesem in der Aus-
      wertung uebergeordnet sein ( KS oder ZS ).


    - Im Dialog koennen bei Verwendung des Pseudoschluessels WERTE in
      der Spaltendimension bisher maximal 18 Rangspalten verarbeitet
      werden.


    - Bei Verwendung des Pseudoschluessels WERTE in der Zeilen-
      dimension muss der Schluessel in der Spaltendimension ausge-
      waehlt werden, wobei in der Spaltendimension keine Formel
      verwendet werden darf. Die WERTE muessen dabei im niedrig-
      sten Zeilenschluessel stehen, bei den uebrigen Kopf- und
      Zeilenschluesseln duerfen keine Formeln angegeben sein.


    - Werden beim RANG-Operanden Formeln angesprochen, so muss
      der Pseudoschluessel WERTE ein Spaltenschluessel sein.



    Beispiel:


    Die Neuauftraege sollen fuer die Monate 0190 und 0290 nach LAND
    und WERK gegliedert aufgelistet werden.
    Ueber eine Werteformel soll die Steigerung von 0190 bis 0290
    berechnet werden.
    Die Rangfolge soll zunaechst nach Neuauftraegen 0190 ueber alle
    Laender und Werke bzw. ueber alle Werke innerhalb eines Landes
    ermittelt werden.
    In zwei weiteren Spalten soll diese Rangfolge jetzt bezueglich
    der Steigerung der Neuauftraege berechnet werden.
    Die Anforderung in BATCH-Sprache :
      ASS;
       AG :  LEISTUNGS_STATISTIK ;
       ZS :  LAND = ( 110, 112 ),
             WERK ;
       SS :  WERTE = ( NEU (0190)   ,
                       NEU (0290)   ,
                       STEIG  = NEU (0290) - NEU (0190) ,
                       RG_W   = RANG ( WERK , NEU (0190)) ,
                       RG_L   = RANG ( LAND , NEU (0190));
                       RG_WST = RANG ( WERK , STEIG ));
                       RG_LST = RANG ( LAND , STEIG ));
      END;





    Ergebnis:


    +--------------------------------------------------------------+
    I ASS                                                          I
    I ARBEITSGEBIET: LEISTUNGSSTATISTIK                            I
    I              I    NEU    NEU  STEIG  RG_W RG_L RG_WST RG_LST I
    I LAND    WERK I   0190   0290                                 I
    +--------------+-----------------------------------------------+
    I BAYERN  15   I  2.849  3.000    151    2    4    3      6    I
    I         21   I  1.526  1.600     74    3    5    4      7    I
    I         82   I  3.538  3.800    262    1    3    1      2    I
    I         87   I    768  1.000    232    4    6    2      3    I
    I                                                              I
    I HESSEN  15   I 10.932  9.500  1.432-   1    1    4      8    I
    I         21   I  3.795  5.000  1.205    2    2    1      1    I
    I         82   I    330    500    170    3    7    3      5    I
    I         87   I     18    200    182    4    8    2      4    I
    +--------------------------------------------------------------+




    Besonderheit:
    ------------


    Wird der RANG-Operand in Verbindung mit Spaltenbedingungen
    verwendet, ergibt sich eine Besonderheit: die RANG-Operatoren
    werden grundsaetzlich vor den Spaltenbedingungen ermittelt.
    Dadurch ergeben sich u. U. Luecken in der Rangfolge.


                                                      Kap. 7.2.6




     GRANZ-Operand in Werteformeln (Gruppenwechsel bei einem Kopf-
     oder Zeilenschluessel zaehlen)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Beschreibung:
    ------------


    Fordert man in einer Werteformel den GRANZ-Operanden bezueglich
    eines Schluessels an, so werden die Gruppenwechsel bezueglich
    des genannten Schluessels gezaehlt.
    Die genaue Zaehlweise erkennt man am besten am unten aufgefuehrten
    Beispiel.



    Allgemeine Form des GRANZ-Operanden:
    -----------------------------------


    GRANZ ( Schluessel ), Aufbereitung


    - Schluessel
      ----------
      Es ist ein Schluessel anzugeben, der in der Anforderung bereits
      als KS oder ZS ausgewaehlt wurde.


    - Aufbereitung
      ------------
      Aufbereitungsangaben koennen wahlweise in der Form "Vorkomma-
      stellen, Nachkommastellen, Dimension" angegeben werden.


    Restriktionen:
    -------------


    Fuer die Verwendung des GRANZ-Operanden sind folgende
    Restriktionen zu beachten:


    - Der GRANZ-Operand kann nur in WERTE-Formeln verwendet werden.


    - Der Pseudoschluessel WERTE darf nur in der Spaltendimension
      verwendet werden.




    Beispiel:


    Es soll festgestellt werden, fuer wie viele Laender bzw. Werke
    Neuauftraege vorliegen.



    Die Anforderung in BATCH-Sprache :


      ASS;
       AG :  LEISTUNGS_STATISTIK ;
       KS :  ZEITRAUM ( 0508 ) ;
       ZS :  LAND ,
             WERK ;
       SS :  WERTE = ( NEUAUFTRAEGE ,
                       GRANZ_WERK = GRANZ ( WERK ) ,
                       GRANZ_LAND = GRANZ ( LAND ));
       GR : SUMME ...
      END;


    Ergebnis:


    +------------------------------------------------------------+
    I ASS                                                        I
    I ARBEITSGEBIET: LEISTUNGSSTATISTIK                          I
    I ZEITRAUM: 0508                                             I
    I                                                            I
    I                   I NEUAUFTRAEGE   GRANZ_WERK   GRANZ_LAND I
    I LAND      WERK    I           DM           DM           DM I
    +-------------------+----------------------------------------+
    I BAYERN    15      I        2.849            1            1 I
    I           21      I        1.526            1            0 I
    I           82      I        3.538            1            0 I
    I           87      I          768            1            0 I
    I                   I                                        I
    I HESSEN    15      I       10.932            1            1 I
    I           21      I        3.795            1            0 I
    I           82      I          330            1            0 I
    I           87      I           18            1            0 I
    I                   I                                        I
    I      *            I       23.756            8            2 I
    +------------------------------------------------------------+


                                                      Kap. 7.2.7




     AKT_MENGE-Operand in Werteformeln
     Beschreibung:


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Der AKT_MENGE-Operand stellt eine starke Verallgemeinerung der
    Schluesselbedingungen zum Wert dar. Sollen z.B. alle Tarife,
    die zu Lebensversicherungen gehoeren abgefragt werden und es sind
    mehr als 20 Tarife, so laesst sich dies mit Schluesselbedingungen
    nicht mehr darstellen, abgesehen von der umfangreichen Schreib-
    arbeit und Wartung. Auch eine Anforderung mit Hilfe von Intervallen
    ist i.a. auch nicht moeglich.
    Bestehen die Lebensversicherungen z.B. aus den Tarifen
    L01, L05, L47, A35, X47, ...
    so koennte eine Menge LEBEN definiert werden als
    LEBEN ('L??', A35, X47 , ... ), wobei hier vorausgesetzt wird,
    dass alle Tarife, die mit dem Buchstaben 'L' beginnen, Lebensver-
    sicherungen sind und ausserdem noch einige weitere, die diese
    Namenskonvention nicht beruecksichtigen, dazugehoeren.
    Durch Bezugnahme auf die Menge LEBEN koennen also komplexe
    Fragestellungen beantwortet werden. Insbesondere laesst die
    Definition von Auspraegungmengen auch Auspraegungsintervalle,
    Auspraegungsmasken und Negativselektionen zu.
    Speichert man darueber hinaus Mengendefinitonen als Schluessel-
    gruppierungen (und fordert sie dann auch an), so kann die
    Wartung der Mengendefinitionen zentralisiert werden.
    Es duerfen bei einem Schluessel mehrere Mengen definiert werden.
    Ebenso darf AKT_MENGE mehrfach auf denselben Schluessel und
    denselben Wert mit unterschiedlichen Mengen angewendet werden.




    Allgemeine Form des AKT_MENGE-Operanden:
    ---------------------------------------


    AKT_MENGE ( Schluessel, Wert (Optionen) ) & Mengenbezeichner


    - Schluessel
      ----------
      Es ist ein Schluessel anzugeben, der in der Anforderung bereits
      als KS oder ZS ausgewaehlt wurde.
      Bei diesem Schluessel muss die Option NUR_MENGEN oder NUR_M_NOTA
      gesetzt sein (siehe hierzu 4.3.16 Aktuelle Auspraegungsmengen).
      Darueberhinaus muessen bei diesem Schluessel mit Hilfe der
      Auspraegungsauswahl Auspraegungsmengen definiert sein.


    - Wert
      ----
      Es ist ein Wert anzugeben, der in einem der angeforderten
      Arbeitsgebiete vorkommt. Formeln sind nicht zulaessig.


    - Optionen
      --------
      Hier sind nur die Zeitangaben zum Wert (falls erforderlich)
      und die Angabe des gewuenschten Arbeitsgebiets (falls er-
      forderlich) in der ueblichen Syntax zulaessig.


    - Mengenbezeichner
      ----------------
      Hier ist der Name einer der beim betreffenden Schluessel
      definierten Mengen anzugeben.


    Restriktionen:
    -------------


    Fuer die Verwendung des AKT_MENGE-Operanden sind folgende
    Restriktionen zu beachten:


    - Der AKT_MENGE-Operand kann nur in WERTE-Formeln verwendet werden.


    - Der Pseudoschluessel WERTE darf nur in der Spaltendimension
      verwendet werden.




    Beispiel:


    Es gibt den Wert ANZAHL und den Schluessel TARFIF (Nummer = 100).


    Der Schluessel TARIF wird als Zeilenschluessel angefordert.


    Folgende Mengen werden definiert:
    100 = ('LEBEN'   ('L??','A20'-'A30','X25'),
           'KRANKEN' ('K??','A40'-'A50'),
           'SACH'    ('S??','A70'-'A90','Y34'),
           'Z00'                          );
    LEBEN, KRANKEN UND SACH stellen echte Mengen dar, Z00 hingegen
    ist eine Einzelauspraegung. Die Mengenbezeichner von Einzelaus-
    praegungen sind die Auspraegungen selbst.


    Der Schluessel WERTE wird als Spaltenschluessel angefordert.
    WERTE = ( FO1 = AKT_MENGE (TARIF, ANZAHL) & 'LEBEN'   ,
              FO2 = AKT_MENGE (TARIF, ANZAHL) & 'KRANKEN' ,
              FO3 = AKT_MENGE (TARIF, ANZAHL) & 'SACH'    ,
              FO4 = AKT_MENGE (TARIF, ANZAHL) & 'Z00'       );


    Weiterhin wird KUNDE als weiterer Zeilenschluessel angefordert.


    FO1 ermittelt dann pro Kunde die Anzahl der Lebensversichungen,
    FO2 ermittelt dann pro Kunde die Anzahl der Krankenversichungen,
    FO3 ermittelt dann pro Kunde die Anzahl der Sachversichungen,
    FO4 ermittelt dann pro Kunde die Anzahl der Tarife Z00.


    Die Ausgangssituation sei:


    KUNDE   TARIF I ANZAHL
    -----------------------
    MEIER   A21   I      1
            K10   I      1
                  I
    MUELLER A25   I      1
            K11   I      2
            S00   I      1
                  I
    SCHMIDT K10   I      1
            S00   I      1
            Y34   I      1
            Z00   I      3


    Mit der Option NUR_MENGEN bei Tarif fuehrt dies zu folgendem
    Ergebnis:


    KUNDE   TARIF            I  FO1  FO2  FO3  FO4
    -----------------------------------------------
    MEIER   A21,K10          I    1    1    0    0
                             I
    MUELLER A25,K11,S00      I    1    2    1    0
                             I
    SCHMIDT K10,S00,Y34,Z00  I    0    1    2    3


    Man beachte:
    Die Mengendefinitionen beim Schluessel TARIF haben keinen
    Einfluss auf die Schluesselauspraegungen, die im Listbild
    angezeigt werden. Angezeigt werden immer alle Auspraegungen, die
    auch bei einer offenen Anforderung des Schluessels dargestellt
    wuerden, nur eben nebeneinander und durch Kommata getrennt.
    Die Mengendefinitionen haben also nur Auswirkungen auf das
    Ergebnis der betreffenden Werteformel.


                                                     Kap. 7.3




     Zeitraumformeln


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Zulaessige Operanden bei Zeitraumformeln sind:


     - Ganzzahlige Direktoperanden
     - Zeitraumangaben, eingeschlossen durch Hochkommata, um sie von
       Direktoperanden unterscheiden zu koennen
     - Zeitraumformeln


    Hinweis: An eine Zeitraumformel kann noch Druckaufbereitungs-
    information angehaengt werden. Sie wird analog zu Werteformeln
    von der eigentlichen Zeitraumformel durch ein Komma getrennt
    und in Klammern eingeschlossen (siehe Kap. 7.2.). Eine
    Dimensionsangabe ist jedoch nicht zulaessig.
    Beispiele:
    ,(6,2,,SVZ) : 6 Stellen, davon 2 Nachkommastellen, ohne Dimen-
                  sion und mit einer Abarbeitungsregel (SVZ: Spalte
                  vor Zeile), wenn es sich um eine Formel handelt.
    ,(,,,SVZ)   : Besagt fuer eine Formel, dass zuerst die Spalte
                  und danach die Zeile fuer die Berechnung heran-
                  gezogen werden soll.


    Hinweis: Hat man Bestandswerte angefordert, so ist eine
    Zeitraumangabe nicht zulaessig (denn es ist kaum sinnvoll,
    Bestaende verschiedener Zeitpunkte zu addieren).
    Eine Ausnahme waere z. B. eine Mittelwertbildung.
    In solch einem Fall kann mit Hilfe von OPT die betreffende
    Pruefung ausgeschaltet werden, die sonst derartige Additionen
    verhindert (Option NOZEITPRUEF). Ansonsten gelten fuer die
    Angabe der Zeiten die gleichen Regeln wie fuer die Auswahl
    von Zeiten zum Schluessel ZEITRAUM.
    Es wird daher auf die Kap. 4.5.1. 'Absolute Zeitangaben'
    und Kap. 4.5.2 'Relative Zeitangaben' verwiesen.


    Beispiel 1:


    Arbeitsgebiet 9 enthaelt die Werte LEISTUNG und ABZUEGE.
    Die Entwicklung dieser Werte ueber 2 Monate soll parallel
    dargestellt werden. Einmal die Aenderung im Februar gegenueber
    dem Januar in absoluten Zahlen, und einmal in Prozent fuer Januar.
    absolut     : AEND1 = '0299' - '0199'
    relativ in %: AEND2 =( '0299' - '0199' ) * 100 / '0199'


    Eine moegliche Abfrage in der BATCH-Sprache:


       ASS ;
        AG:  9  ;
        SS:  WERTE = ( LEISTUNG  , ABZUEGE  )  ;
        ZS:  ZEITRAUM = ( 0199 , 0299 , AEND1 = '0299' - '0199' ,
             AEND2 = ( '0299' - '0199' ) * 100 / '0199' ) ;
       END ;





    In einer Zeitraumformel muessen Zeitangaben in Hochkommata
    eingeschlossen sein, um so eine Unterscheidung zwischen
    Zeitangaben und konstanten Zahlen zu ermoeglichen. Mit dem
    Ausdruck '0299' - '0199' wird eine Differenz der Werte des
    Zeitraeume '0299' und '0199' angefordert. Eine Berechnung
    der Angabe 0299 - 0199 wuerde dagegen als Ergebnis 100 liefern.



    Ergebnis:


            +---------------------------------------+
            I ASS                          SEITE 1  I
            I ZEITRAUM  I LEISTUNG      ABZUEGE     I
            I           I DM            DM          I
            +---------------------------------------+
            I 0189      I    10.250,10      410,30  I
            I 0289      I    11.600,60      205,15  I
            I AEND1     I     1.350,50      205,15- I
            I AEND2     I        13,01       50,00- I
            +---------------------------------------+



    Die obige Abfrage kann auch wie folgt angefordert werden:



       ASS;
        AG:  9;
        ZS:  ZEITRAUM = ( 0199 ,
                          0299 ,
                          AEND1 = '0299' - '0199' ,
                          AEND2 = AEND1 * 100 / '0199' );
        SS:  WERTE = ( LEISTUNG ,
                       ABZUEGE  );
       END;



    ANMERKUNG:
    ----------


    Da ZEITRAUM als Zeilenschluessel angefordert wird, gilt folgende
    Restriktion (vgl. Kap. 7.7 Restriktionen bei Formeln/Funktionen):
    Die Formel AEND1 muss vor der sichtbaren Formel AEND2 aufgefuehrt
    werden. Dies gilt auch fuer unsichtbare Formeln, etwa bei
    Umbenennung von AEND1 in NNAEND1.


                                                      Kap. 7.4




     Schluesselformeln


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Zulaessige Operanden bei Schluesselformeln
    ------------------------------------------


     - Ganzzahlige Direktoperanden
     - Schluesselinhalte (KEINH)
     - mit "?" maskierte Auspraegungen
     - Bezeichner von Auspraegungsmengen (und damit Auspraegungsmengen)
     - Schluesselformeln
    Schluesselinhalte sollten stets in Hochkommata eingeschlossen
    werden, damit sie von Direktoperanden unterschieden werden koennen.
    Bezeichner von Auspraegungsmengen bzw. Schluesselformeln muessen in
    Hochkommata eingeschlossen werden, wenn sie keine ASS-Bezeichner
    sind. Im Zweifelsfall koennen sie immer in Hochkommata einge-
    schlossen werden.
    Fuer Schluesselformeln besteht die Moeglichkeit, Aufbereitungs-
    optionen anzugeben. Die Form der Aufbereitungsoption stimmt mit
    der bei Zeitraumformeln ueberein (s. o.).
    Beispiel:
    ,(6,2,,SVZ) : 6 Stellen, davon 2 Nachkommastellen mit Dimension
                  DM und mit einer Abarbeitungsregel (SVZ: Spalte
                  vor Zeile), wenn es sich um eine Formel handelt.


    Beispiel:
     GESAMTANTEIL = '010' * 100 / ('010' + '020' + '030' + '040')
     wobei 010, 020, 030 und 040 Auspraegungen (Inhalte) z. B. des
     Schluessels TARIF sind.


    Beispiel:


    Fuer bestimmte Auspraegungen des Schluessels REISETARIF
    sollen die Unterschiede im Wert LEISTUNG und im Wert ABZUEGE
    dargestellt werden:


         DIFF1 = '010' - '015': Unterschied zwischen 010 und 015
         DIFF2 = '020' - '025': Unterschied zwischen 020 und 025
         DIFF3 = '050' - '055': Unterschied zwischen 050 und 055



    Eine moegliche Abfrage in BATCH-Sprache:


     ASS    ;
      KS :   ZEITRAUM = ( 0199 )  ;
      ZS:    REISETARIF = ( 010, 015, DIFF1 = '010' - '015' ,
                            020, 025, DIFF2 = '020' - '025' ,
                            050, 055, DIFF3 = '050' - '055'  ) ;
      SS:    WERTE = ( LEISTUNG ,  ABZUEGE     )  ;
     END  ;





    Ergebnis:


            +---------------------------------+
            I ASS                     SEITE 1 I
            I REISETARIF I  LEISTUNG  ABZUEGE I
            I            I  DM        DM      I
            +------------+--------------------+
            I 010        I   100,00     9,10  I
            I 015        I     1,00     0,00  I
            I DIFF1      I    99,00     9,10  I
            I 020        I    20,00     1,10  I
            I 025        I    30,00     1,90  I
            I DIFF2      I    10,00-    0,80- I
            I 050        I   260,00    20,90  I
            I 055        I    70,00     7,40  I
            I DIFF3      I   190,00    13,50  I
            +---------------------------------+



    Der Anteil des Wertes LEISTUNG soll nach bestimmten Auspraegungen
    der Schluessel ALTERSGRUPPE und REISETARIF, einmal getrennt nach
    Geschlechtern innerhalb einer Gruppe und dann ueber alle Gruppen
    errechnet werden.



    Anforderung in BATCH-Sprache:



    ASS;
     AG:  9;
     KS:  ALTERSGRUPPE = ( 'ALT 1' ('01','02') ,
                           'ALT 2' ('00')      );
     ZS:  REISETARIF = ( 'TAR A' ('010','020') ,
                         'TAR B' ('030','040') ,
                         'TAR C' ('050','060') ),
          GESCHLECHT = ( NNM      = '1'                 ,
                         NNW      = '2'                 ,
                         NN       = NNM + NNW           ,
                         'ANT. M' = NNM * 100 / NN      ,
                         'ANT. W' = NNW * 100 / NN      ,
                         ANTEIL   = 'ANT. M' + 'ANT. W' );
     SS:  ZEITRAUM = ( 0199 ,
                       0299 ),
          WERTE = ( LEIST                                  , (6,2,%) ,
                    'ANT. GES' = LEIST * GESAMT(GESCHLECHT,LEIST) /
                                  GESAMT(REISETARIF,LEIST) , (6,2,%) );
    END;





    Ergebnis:
    ---------



    ARBEITSGEBIET:    9: REISEVERSICHERUNG


    ALTERSGRUPPE: ALT 1


                          I ZEITRAUM           I                    I
                          I 01.99              I 02.99              I
                          I WERTE              I                    I
                          I LEISTUNG  ANT. GES I LEISTUNG  ANT. GES I
    REISETARIF GESCHLECHT I        %         % I        %         % I
    ------------------------------------------------------------------
                          I                    I                    I
    TAR A      ANT. M     I    80,00     20,00 I    16,67      5,00 I
               ANT. W     I    20,00      5,00 I    83,33     25,00 I
               ANTEIL     I   100,00     25,00 I   100,00     30,00 I
                          I                    I                    I
               *          I xxxx      xxxx     I xxxx      xxxx     I
                          I                    I                    I
    TAR B      ANT. M     I    37,50     15,00 I    33,33     10,00 I
               ANT. W     I    62,50     25,00 I    66,67     20,00 I
               ANTEIL     I   100,00     40,00 I   100,00     30,00 I
                          I                    I                    I
               *          I xxxx      xxxx     I xxxx      xxxx     I
                          I                    I                    I
    TAR C      ANT. M     I   100,00     35,00 I    62,50     25,00 I
               ANT. W     I     0,00      0,00 I    37,50     15,00 I
               ANTEIL     I   100,00     35,00 I   100,00     40,00 I
                          I                    I                    I
               *          I xxxx      xxxx     I xxxx      xxxx     I
                          I                    I                    I
    *                     I xxxx      -------- I xxxx      -------- I




    Die zweite Seite hat einen entsprechenden Aufbau.


                                                      Kap. 7.5




     Zwischen- und Endsummen im Spaltenschluessel


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Die Abarbeitungsreihenfolgen der Formeln ist prinzipiell wie
    folgt festgelegt: Kopf-/ Zeilenformeln vor Spaltenformeln, in den
    Spalten von oben nach unten. Dabei werden zunaechst die Formeln im
    Kopfbereich berechnet, beginnend mit der niedrigsten Positions-
    nummer, entsprechend gefolgt von den Zeilenformeln.


    In sehr vielen Anwendungsfaellen entspricht diese Reihenfolge den
    Anforderungen. Insbesondere koennen auf diesem Weg auch Summationen
    ueber Schluesselauspraegungen und somit Zwischen- und Endsummen bei
    Schluesseln im Spaltenschluessel erreicht werden.


    Es gibt jedoch Anwendungsfaelle, wo eine andere Reihenfolge der
    Formelabarbeitung erwuenscht ist; dazu ein Beispiel:


    WERTE sei der Zeilenschluessel. Es werden drei Werte angefordert:


      LEISTUNG (0197) ,
      LEISTUNG (0198) und die prozentuale Veraenderung
      AENDERUNG = 100 *(LEISTUNG(0198)-LEISTUNG(0197))/LEISTUNG(0197)


    Im Spaltenschluessel werde der Schluessel SPARTE mit den
    Auspraegungen FEUER, UNFALL, HAUSRAT angefordert.
    Dies fuehrt zu folgender Liste:



    WERTE          I FEUER    UNFALL    HAUSRAT
    --------------------------------------------
                   I
    LEISTUNG(0197) I 10.000     5000       9000
    LEISTUNG(0198) I 12.000     4000     10.000
    AENDERUNG      I     20       20-        11



    Es soll jetzt eine vierte Spalte eingefuehrt werden, in der ueber
    die Sparten addiert wird.





    1. Summenbildung ueber eine Formel


    SUMME = FEUER + UNFALL + HAUSRAT


    In diesem Fall werden auch die prozentualen Veraenderungen der
    dritten Zeile aufaddiert, da die oben angefuehrte Abarbeitungs-
    regel wirksam wird. Dies liefert jedoch nicht das gewuenschte
    Ergebnis. In der dritten Zeile der vierte Spalte moechte man
    folgendes Ergebnis erhalten:


    100 * ((LEISTUNG(0198) fuer FEUER   +
            LEISTUNG(0198) fuer UNFALL  +
            LEISTUNG(0198) fuer HAUSRAT)
         - (LEISTUNG(0197) fuer FEUER   +
            LEISTUNG(0197) fuer UNFALL  +
            LEISTUNG(0197) fuer HAUSRAT))
         /
           (LEISTUNG(0197) fuer FEUER   +
            LEISTUNG(0197) fuer UNFALL  +
            LEISTUNG(0197) fuer HAUSRAT)


    Dies wird mit der folgenden 2. Moeglichkeit erreicht:



    2. Summenbildung ueber eine Menge


    SS: SPARTE=(FEUER,UNFALL,HAUSRAT,SUMME(FEUER,UNFALL,HAUSRAT));


    In diesem Fall wird die vierte Spalte in Form einer Ausprae-
    gungsmenge gebildet. Da in diesem Fall keine Formel verwendet
    wird, werden zunaechst in der vierten Spalte die Sparten
    zusammengefasst und anschliessend die Werteformeln im Zeilen-
    schluessel angewendet.


    Man erhaelt folgendes Ergebnis:


    WERTE          I FEUER    UNFALL    HAUSRAT    SUMME
    -----------------------------------------------------
                   I
    LEISTUNG(0197) I 10.000     5000       9000   24.000
    LEISTUNG(0198) I 12.000     4000     10.000   26.000
    AENDERUNG      I     20       20-        11        8





    Anmerkung:


    Die 2. Moeglichkeit beruht darauf, dass ein- und dieselbe
    Auspraegung eines Schluessels mehrfach angefordert werden kann,
    im obigen Beispiel als Einzelauspraegung und als Element einer
    Auspraegungsmenge. Dies ist nur im Spaltenschluessel moeglich.


    Die mehrfache Anforderung von Schluesselauspraegungen eines
    Schluessels sowohl als Einzelauspraegung und als Element in
    einer Auspraegungsmenge ist auch moeglich, wenn im Zeilen-
    schluessel nicht mit Formeln gearbeitet wird.
    Zu beachten ist jedoch, dass stets als erstes die Auspraegungs-
    mengen ermittelt werden, bevor irgendwelche Formeln angewendet
    werden.


    Ingesamt gibt es also zwei Moeglichkeiten im Spaltenschluessel
    Aufsummierungen zu erreichen:


       - mit Hilfe von Formeln
       - mit Anforderung von Auspraegungsmengen.


    Durch richtigen Einsatz der beiden Moeglichkeiten koennen Sie
    darueber hinaus die Reihenfolge Summation und Formelabarbeitung
    so beeinflussen, dass Sie das gewuenschte Resultat erhalten.
    Eine weitere Moeglichkeit, die Reihenfolge zu bearbeiten wird im
    Kap. 7.9 dargestellt.


                                                      Kap. 7.6




     Anforderung von Funktionen


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Allgemein:
    ---------


    ASS bietet bekanntlich die Moeglichkeit, mit Werten, Zeiten und
    Schluesselinhalten zu rechnen.


    Neben den bereits erwaehnten Formeln kennt ASS einen bestimmten
    Umfang sogenannter Funktionen, die in logischer Verwandtschaft
    zu den Formeln zu sehen sind.


    Eine Funktion im Sinne von ASS kann man als feste Regel ansehen,
    nach der aus bestimmten Eingaben (Operanden) eine Zahl ermittelt
    wird.


    Als Operanden kommen explizit genannte Zahlen (Direktoperanden)
    oder in der Auswertung selbst ermittelte Zahlen in Betracht.


    Folgende Funktionen koennen zur Zeit bei ASS-Auswertungen ver-
    wendet werden:



    Funktions- I Bedeutung      I Kurzbeschreibung
    bezeichner I                I
    -----------I----------------I------------------------------------
      MIN      I Minimum        I Auswahl der kleinsten durch die
               I                I Operanden OP1,.....,OPm bestimmten
               I                I Zahl fuer 1 <= m <= 50
    -----------I----------------I------------------------------------
      MAX      I Maximum        I Auswahl der groessten durch die
               I                I Operanden OP1,.....,OPm bestimmten
               I                I Zahl fuer 1 <= m <= 50
    -----------I----------------I------------------------------------
      ABS      I Absolutbetrag  I Absolutbetrag einer durch "einen"
               I                I Operanden bestimmten Zahl
               I                I ABS(X) =   X  falls X >= 0
               I                I ABS(X) =  -X  falls X <  0
               I                I Dynamische Verwendung unzulaessig
    -----------I----------------I------------------------------------
      SUMME    I Summenbildung  I Summierung ueber alle durch die
               I                I Operanden OP1,.....,OPm bestimmten
               I                I Zahlen fuer 1 <= m <= 50
               I                I SUMME  =  X1 + X2 + ...... Xm
    -----------------------------------------------------------------





    -----------------------------------------------------------------
      ARM      I Arithmetisches I Mittelwert ueber alle durch die
               I Mittel         I Operanden OP1,.....,OPm bestimmten
               I Mittelwert,    I Zahlen fuer 1 <= m <= 50
               I Erwartungswert I           1
               I                I ARM   =  --- * ( X1 + X2 + .. Xm )
               I                I           m
    -----------I----------------I------------------------------------
      VAR      I Varianz        I Varianz ueber alle durch die
               I                I Operanden OP1,.....,OPm bestimmten
               I                I Zahlen fuer 1 <= m <= 50
               I                I             m            m
               I                I         1  --- 2     1  ---    2
               I                I VAR   = -  > Xi  - ( -  > Xi )
               I                I         m  ---       m  ---
               I                I            i=1          i=1
    -----------I----------------I------------------------------------
       *       I Standard-      I Nicht als eigene Funktion vorhanden,
               I abweichung,    I aber direkt aus der Varianz zu
               I Streuung       I berechnen
               I                I Streuung = (Varianz) ** ( 1 / 2 )
    -----------------------------------------------------------------



    Verwendung von Funktionen
    -------------------------


    Entsprechend der 3 Grundelemente der Datenbasis koennen Funktionen
    bei echten Schluesseln, Werten und Zeitraeumen verwendet werden.


    Analog zu den Formeln spricht man deshalb auch von SCHLUESSEL-,
    WERTE- und ZEITRAUM-Funktionen.



    Allgemeine Form der Anforderung einer Funktion:
    ----------------------------------------------


    Online:    FUNKTIONSNAME  =  < OP1,......,OPm >,AUFBEREITUNG
    Batch:     FUNKTIONSNAME     < OP1,......,OPm >,AUFBEREITUNG




    - FUNKTIONSNAME:
      -------------


      Der Funktionsname kann maximal aus folgenden 3 Komponenten
      bestehen:


        1. Teil:  optional        NN fuer unsichtbare Funktionen


        2. Teil:  obligatorisch   Funktionsbezeichner (MIN, MAX..)


        3. Teil:  optional        positive Zahl zur Abgrenzung
                                  mehrerer Funktionsnamen mit
                                  gleichem Funktionsbezeichner


        Beispiele:                NNMIN, MAX01, ABS, NNARM326


    - OPERANDEN:
      ---------
      Syntax:
      -------


      Als Operanden einer Funktion sind folgende Angaben zulaessig:


      OPERAND-Beschreibung      I BEISPIEL                OPERAND
      ==========================I==================================
      Direktoperanden           I Zahl 2100            -> 2100
      (nur ganze Zahlen)        I
      --------------------------I----------------------------------
      Angaben in Hochkommata    I Auspraegung '025'    -> '025'
      fuer Auspraegungen,       I Zeitraum Januar 1998 -> '0198'
      Zeitraeume und Werte      I Wertebez. BEITRAG    -> 'BEITRAG'
      --------------------------I----------------------------------
      Einfache Werteanforderung I Wertebez. BEITRAG    -> BEITRAG
      (Bezeichnung/ Abkuerzung) I Werteabk. JBR        -> JBR
      --------------------------I----------------------------------
      Erweiterte Werteanfor-    I Zeitangaben:
      derung mit Zusatzangaben  I         -> BEITRAG(0199-0699)
                                I Schluesselbedingungen:
                                I         -> BEITRAG(,TARIF=050)
      --------------------------I----------------------------------
      Andere Formeln und        I Formel ANTEIL        -> ANTEIL
      Funktionen                I Funktion MIN02       -> MIN02
      (Schachtelung:            I GESAMT-Operand:
       Innere Funktion ohne     I         -> GESAMT(TARIF,BEITRAG)
       Angabe von Operanden)    I TOTAL-Operand:
                                I         -> TOTAL(TARIF,BEITRAG)
      -------------------------------------------------------------




      Anzahl der Operanden:
      --------------------


      In Abhaengigkeit von der Anzahl der angegebenen Operanden m
      unterscheidet man zwei verschiedene Verwendungsmoeglichkeiten
      einer Funktion.


      - Statische Verwendung:  1 <= m <= 50    (Ausnahme: ABS)


        Die einzelnen Operanden werden explizit angegeben.


      - Dynamische Verwendung: m = 0


        Es werden alle Operanden beruecksichtigt, die vor dieser
        Funktion und nach der davor aufgefuehrten dynamischen Funktion
        zu finden sind.


        D. h. es wird rueckwaerts gesucht, bis eine weitere Funktion
        mit dynamischer Verwendung gefunden wird.


        Dabei werden evtl. vorhandene statische Funktionen als Direkt-
        operanden behandelt.


        ACHTUNG:


        Eine dynamische Verwendung von unsichtbaren Funktionen
        ( NN-Funktionen ) ist nicht sinnvoll, weil diese intern
        zuerst verarbeitet werden.


        Dieser Zusammenhang wird nachfolgend in einem Beispiel
        verdeutlicht.



    - AUFBEREITUNG:
      ------------
      Analog zu den Formeln sind auch in den Funktionen wahlweise
      Aufbereitungsangaben moeglich, die durch Komma getrennt an
      die Anforderung gefuegt werden.


      Syntax:    Vorkommastellen, Nachkommastellen, Dimension
                 (Angabe einer Dimension nur bei Werten)


      Beispiel:  MAX<>,(9,2,DM)




    Beispiel:


    Der Schluessel "1904" liegt mit folgenden Auspraegungen und
    den zugehoerigen Werten "ANZAHL" vor:


        Auspraegungen  I  ANZAHL
        ---------------I--------
           '010'       I    100
           '015'       I    200
           '020'       I    300
           '025'       I    400
           '030'       I    500
           '035'       I    600
           '040'       I    700
           '045'       I    800
           '050'       I    900
           '055'       I   1000



    In einer Auswertung werden folgende Auspraegungen und Funktionen
    zu diesem Schluessel in der angegebenen Reihenfolge angefordert:


          Anforderung                   I  Ergebnis
       ---------------------------------I-------------
          '020'                         I    300
          '025'                         I    400
          MIN01<>                       I    300
          '030'                         I    500
          MIN02<'010','015','035',400>  I    100
          MAX01<MIN02,500>              I    500
          '040'                         I    700
          MIN03<>                       I    100
          '050'                         I    900


    Die verwendeten Funktionen haben folgende Bedeutung:


        Funkt.- I Verwendung I Operanden
        Name    I            I
        --------I------------I---------------------------------
        MIN01   I dynamisch  I Auspraegungen '020','025'
        --------I------------I---------------------------------
        MIN02   I statisch   I Auspraegungen '010','015','035'
                I            I Direktoperand 400
        --------I------------I---------------------------------
        MAX01   I statisch   I Ergebnis Funktion MIN02
                I            I Direktoperand 500
        --------I------------I---------------------------------
        MIN03   I dynamisch  I Auspraegungen '030','040'
                I            I Ergebnis Funktion MIN02
                I            I Ergebnis Funktion MAX01
        -------------------------------------------------------


                                                      Kap. 7.7




     Restriktionen bei Verwendung von Formeln und Funktionen


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    - In einer Abfrage sind maximal 250 Formeln bzw. Funktionen
      moeglich. Werden Formeln beim Spaltenschluessel verwendet
      und es existiert mehr als ein Spaltenschluessel, so wird
      eine Formel eines Spaltenschluessels i.a. auf mehrere Spalten
      angewendet. Dies ist bei der Grenze von 250 Formeln zu
      beruecksichtigen.


    - Die Laenge einer Formel sowie die tiefste Klammerung
      sind praktisch unbegrenzt.


    - In SPALTENSCHLUESSELN sind keine dynamischen Funktionen erlaubt.


    - Es duerfen nur in maximal zwei SPALTENSCHLUESSELN Formeln und
      Funktionen verwendet werden.


    - Bei verschachtelten Funktionen muessen die inneren Funktionen
      mit ihren Operanden vorher definiert sein, damit diese Angaben
      in der aeusseren Funktion verwendet werden koennen.


    - Fuer ZEILENSCHLUESSEL existieren folgende zusaetzliche
      Restriktionen:
        - vor einer sichtbaren Formel bzw. Funktion sind deren unter-
          geordnete Formeln bzw. Funktionen bzw. Mengen aufzufuehren,
          d.h. alle Operanden des Zeilenschluessels, die selber Formeln
          oder Funktionen oder Mengen sind, muessen vor der Formel
          gedruckt werden, weil im Zeilenschuessel nur von "oben" nach
          "unten" gerechnet wird.
          Beispiel:


                  F11 = A11 + B11
                  F12 = A12 + B12
                  F13 = A13 + B13
                  F14 = A14 + B14
                DURCHSCHNITT = (F11 + F12 + F13 + F14) / 4


          Im obigen Beispiel wird richtig von oben nach unten
          gerechnet.




                  F11 = A11 + B11
                  F12 = A12 + B12
                DURCHSCHNITT = (F11 + F12 + F13 + F14) / 4
                  F13 = A13 + B13
                  F14 = A14 + B14


          Das letzte Beispiel ist nicht ausfuehrbar, weil nicht von
          "oben" nach "unten" gerechnet wird. Die beiden Zeilen fuer
          F13 und F14 werden erst nach der Formel, in der sie benutzt
          werden, gedruckt.



          Benutzt man NN-Formeln, so laesst sich die obige Darstellung
          erreichen:


                  NN1 = A13 + B13
                  NN2 = A14 + B14
                  F11 = A11 + B11
                  F12 = A12 + B12
                DURCHSCHNITT = (F11 + F12 + NN1 + NN2) / 4
                  F13 = NN1
                  F14 = NN2


                                                      Kap. 7.8




     Rundungsfunktion bei Werten


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Jeder Wert kann in der Auswertung gegenueber seiner Speicherung
    in gerundeter Form dargestellt werden.


    Rundungen koennen in folgender Weise angefordert werden:


    - Echte Werte koennen ueber ihre Aufbereitungsangaben (WZ) auf
      entsprechende Nachkommastellen oder auch auf Zehner (A),
      Hunderter (B) usw. bis (E) gerundet werden.



      NR     BEZEICHNUNG                 DIM     AUFBEREIT.
      100..  NEUGESCHAEFT.........       DM_PF.  ( .. , . )
      100..  NEUGESCHAEFT.........       DM....  ( 10 , 0 )
      100..  NEUGESCHAEFT.........       ZDM...  ( 10 , A )


             I WERTE
             I NEUGESCHAEFT    NEUGESCHAEFT    NEUGESCHAEFT
      BEZIRK I        DM_PF              DM             ZDM
      --------------------------------------------------------
      10     I   423.420,20         423.420          42.342
      11     I    81.241,50          81.242           8.124



    - In Werteformeln kann man ebenfalls ueber Aufbereitungsangaben
      eine Rundung auf gewuenschte Nachkommastellen erreichen.
      Weitere Rundungen auf Zehner, Hunderter usw. muessen in der
      Formel berechnet werden.


      NEUGESCHAEFT_DM...  =  NEUGESCHAEFT , (10,0,DM)
      NEUGESCHAEFT_ZDM..  =  NEUGESCHAEFT / 10 , (10,0,ZDM)



    Rundungsprobleme bei konkurrierenden Berechnungen
    -------------------------------------------------


    Sobald zusaetzlich zur Rundung eine Summierung oder Berechnung mit
    diesen Werten erfolgt, koennen sich entsprechend der Berechnungs-
    reihenfolge Rundungsdifferenzen ergeben.


    Konkurrierende Berechnungen koennen sein


    - Sternsummen in Kopf- und Zeilenschluessel
    - Formel- und Funktionsberechnungen in Zeilen- und Spalten-
      schluessel
    - Mengenanforderung von Schluesselauspraegungen




    Durchfuehrung der Rundung bei echten Werten
    -------------------------------------------


    1. Darstellung der Werte in der Spaltendimension
       ---------------------------------------------


    In diesem Fall gilt immer folgende Verarbeitungsreihenfolge:


    - Mengenbildung von Auspraegungen
    - Berechnungsanweisungen in der jeweils angeforderten Reihenfolge
    - Rundung der Werte


           I WERTE
           I NEUGESCHAEFT     2. Schritt     NEUGESCHAEFT
    BEZIRK I        DM_PF                              DM
    -----------------------                 ---------------
    10     I   423.420,20         -->             423.420
    11     I    81.241,50         -->              81.242
    12     I   126.320,30         -->             126.320
    13     I   187.768,40         -->             187.768
    14     I   116.172,00         -->             116.172
    15     I    90.955,10         -->              90.955


             1. Schritt                       ( 1.025.877 )


    *      I 1.025.877,50         -->           1.025.878



    Ergebnis:
    --------


    Die berechnete Summe weist Rundungsdifferenzen auf, ist allerdings
    in ihrer Aussage genauer, weil mit ungerundeten Werten gerechnet
    wird.




    2. Darstellung der Werte in der Zeilendimension
       --------------------------------------------


    - Summierung ueber Spaltenschluesselformel


    Es wird zunaechst die Rundung der Werte vorgenommen (Zeile vor
    Spalte), danach die Berechnung in der Spalte.


                 I BD
    WERTE        I       10        11        26        30     FORMEL
    -----------------------------------------------------------------
    NEUGESCHAEFT I  4.902,7   2.955,9   9.555,5   3.576,2   20.990,3
    GERUNDET     I    4.903     2.956     9.556     3.576     20.991


    Bei Angabe des Parameters SVZ in der Spaltenschluesselformel kann
    die Reihenfolge umgekehrt werden.


                 I BD
    WERTE        I       10        11        26        30    FO(SVZ)
    -----------------------------------------------------------------
    NEUGESCHAEFT I  4.902,7   2.955,9   9.555,5   3.576,2   20.990,3
    GERUNDET     I    4.903     2.956     9.556     3.576     20.990



    - Summierung ueber Auspraegungsmengen


    Auspraegungsmengen werden immer vor Berechnungen gebildet, sodass
    bei dieser Variante das gleiche Ergebnis entsteht wie bei einer
    Formelberechnung mit SVZ.


                 I BD
    WERTE        I       10        11        26        30      MENGE
    -----------------------------------------------------------------
    NEUGESCHAEFT I  4.902,7   2.955,9   9.555,5   3.576,2   20.990,3
    GERUNDET     I    4.903     2.956     9.556     3.576     20.990



    Durchfuehrung der Rundung in Werteformeln
    -----------------------------------------


    Fordert man einen Wert ueber eine Werteformel an, wird auch die
    Rundungsanweisung in dieser Formel abgelegt.


    Da bei Werteformeln Moeglichkeiten bestehen, die Abarbeitungs-
    reihenfolge der angeforderten Berechnungsanweisungen festzulegen,
    kann so auch der Zeitpunkt der Rundung beeinflusst werden.


    Die Reihenfolge der Abarbeitung von Formeln und Funktionen ist
    im folgenden Kapitel beschrieben.




                                                      Kap. 7.9




     Reihenfolge bei der Abarbeitung von Berechnungsanweisungen


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Allgemein:
    ---------


    In einer Anforderung koennen vor allem in der Zeilen- und Spalten-
    dimension Berechnungsanweisungen definiert werden.


    Solche Berechnungen koennen sein:


    - Formeln und Funktionen
    - Sternsummen
    - VON-BIS-Zeitangaben
    - Auspraegungsmengen


    Beim Aufeinandertreffen mehrerer Berechnungen ist das Auswertungs-
    ergebnis von der Reihenfolge der Abarbeitung dieser Operationen
    abhaengig (siehe auch Kap. 7.5.).


    Innerhalb des ASS gelten zunaechst folgende Standardregeln:


    - Kopf- bzw. Zeilenberechnungen werden vor Spaltenberechnungen,
      ausgefuehrt, d. h. ZEILEN VOR SPALTE.


    - Spalten werden von oben nach unten abgearbeitet.


    - Die Aufbereitungsoptionen aus den Spalten ueberschreiben die
      aus den Zeilen.


    Diese Standardabarbeitungsreihenfolge kann durch Angabe der Option
    "SVZ" (SPALTE VOR ZEILEN) uebersteuert werden, die in der Spalten-
    formel/-funktion als zusaetzliche Aufbereitungsangabe erscheint.


    Dabei ist die Option SVZ ein Positionsparameter, der immer an der
    vierten Stelle der Aufbereitungsangaben stehen muss. Werden andere
    Aufbereitungsangaben nicht gebraucht, so sind die entsprechenden
    Positionen durch leere Eintraege zu besetzen.


    Beispiele:


    ,(8,2,DM,SVZ) ; ,(8,,,SVZ) ; ,(,,,SVZ)




    Beispiele:


    Ein einfaches Beispiel soll den Sachverhalt verdeutlichen.


    - ZEILEN VOR SPALTE (Standard)


      ZS: Sternsumme
      SS: Formel  DURCHSCHNITT = PRODUKTION / ANZAHL , (8,0,DM)


      Ergebnis:


          I WERTE
          I   ANZAHL      PRODUKTION  < 2. Schritt >  DURCHSCHNITT
      BD  I   STUECK              DM                            DM
      -------------------------------                 -------------
      1   I    2.142      41.407.135        -->             19.331
      2   I    1.856      60.294.669        -->             32.486
      3   I      574      62.102.318        -->            108.192
      <           1. Schritt       >
      *   I    4.572     163.804.122        -->             35.828


      Abarbeitungsreihenfolge:
      -----------------------
      1. Ermittlung der Summen ANZAHL und PRODUKTION
      2. Berechnung der durchschnittlichen PRODUKTION fuer jede BD
         und fuer die schon berechnete Summenzeile.



    - SPALTE VOR ZEILEN (SVZ)


      ZS: Sternsumme
      SS: Formel  DURCHSCHNITT = PRODUKTION / ANZAHL , (8,0,DM,SVZ)


      Ergebnis:


          I WERTE
          I   ANZAHL      PRODUKTION  < 1. Schritt >  DURCHSCHNITT
      BD  I   STUECK              DM                            DM
      -------------------------------                 -------------
      1   I    2.142      41.407.135        -->             19.331
      2   I    1.856      60.294.669        -->             32.486
      3   I      574      62.102.318        -->            108.192
      <           2. Schritt       >
      *   I    4.572     163.804.122                       160.009


      Abarbeitungsreihenfolge:
      -----------------------
      1. Berechnung der durchschnittlichen PRODUKTION fuer jede BD
      2. Summierung von ANZAHL, PRODUKTION und berechneter
         durchschnittlicher PRODUKTION




    Abarbeitungsreihenfolge bei komplexeren Anforderungen
    -----------------------------------------------------


    Werden in der Spaltendimension mehrere Berechnungen angefordert,
    ist zunaechst die Reihenfolge der Spaltenschluessel fuer die
    Abarbeitung entscheidend.


    Es gilt:  1. Spaltenschluessel vor  2. Spaltenschluessel


    Durch Verwendung der Option SVZ in den Spaltenformeln kann man
    die gewuenschte Verarbeitungsreihenfolge erreichen.


    Weiterhin gilt: 1. Kopfschluessel vor 2. Kopfschluessel vor ...
                vor 1. Zeilenschluessel vor 2. Zeilenschluessel


    Beispielanforderungen:


    1.) Anforderung:
        ZS: Sternsumme / Schluesselformel
        SS: 1. Werteformel
            2. Zeitraumformel ( J/F = '0190' + '0290' )


        Abarbeitung:


        - Summierung der Zeilen


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000       I   40 3000       I
          2  I   15  750       I   20  800       I
          3  I   40 1200       I   50 2000       I
          *  I   80 2950       I  110 5800       I


        - Ausfuehrung Werteformel (mit Rundung)


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I            ----
          2  I   15  750    50 I   20  800    40 I            ----
          3  I   40 1200    30 I   50 2000    40 I            ----
          *  I   80 2950    42 I  110 5800    53 I            ----




        - Ausfuehrung Zeitraumformel


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000  ----
          2  I   15  750    50 I   20  800    40 I   35 1550  ----
          3  I   40 1200    30 I   50 2000    40 I   90 3200  ----
          *  I   80 2950    42 I  110 5800    53 I  190 8750  ----



    2.) Anforderung:
        ZS: Sternsumme / Schluesselformel
        SS: 1. Werteformel
            2. Zeitraumformel (SVZ)
        oder
        ZS: Sternsumme / Schluesselformel
        SS: 1. Zeitraumformel (SVZ)
            2. Werteformel


        Abarbeitung:


        - Ausfuehrung Zeitraumformel


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000       I   40 3000       I   65 4000
          2  I   15  750       I   20  800       I   35 1550
          3  I   40 1200       I   50 2000       I   90 3200
          *  I                 I                 I


        - Summierung der Zeilen


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000       I   40 3000       I   65 4000
          2  I   15  750       I   20  800       I   35 1550
          3  I   40 1200       I   50 2000       I   90 3200
          *  I   80 2950       I  110 5800       I  190 8750




        - Ausfuehrung Werteformel (mit Rundung)


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000    62
          2  I   15  750    50 I   20  800    40 I   35 1550    44
          3  I   40 1200    30 I   50 2000    40 I   90 3200    36
          *  I   80 2950    42 I  110 5800    53 I  190 8750    49



    3.) Anforderung:
        ZS: Sternsumme / Schluesselformel
        SS: 1. Werteformel (SVZ)
            2. Zeitraumformel
        oder
        ZS: Sternsumme / Schluesselformel
        SS: 1. Zeitraumformel
            2. Werteformel (SVZ)


        - Ausfuehrung Werteformel (mit Rundung)


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I            ----
          2  I   15  750    50 I   20  800    40 I            ----
          3  I   40 1200    30 I   50 2000    40 I            ----
          *  I                 I                 I


        - Summierung der Zeilen


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I            ----
          2  I   15  750    50 I   20  800    40 I            ----
          3  I   40 1200    30 I   50 2000    40 I            ----
          *  I   80 2950   120 I  110 5800   135 I            ----




        - Ausfuehrung Zeitraumformel


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000  ----
          2  I   15  750    50 I   20  800    40 I   35 1550  ----
          3  I   40 1200    30 I   50 2000    40 I   90 3200  ----
          *  I   80 2950   120 I  110 5800   135 I  190 8750  ----



    4.) Anforderung:


        ZS: Sternsumme / Schluesselformel
        SS: 1. Werteformel (SVZ)
            2. Zeitraumformel (SVZ)


        Abarbeitung:


        - Ausfuehrung Werteformel (mit Rundung)


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I            ----
          2  I   15  750    50 I   20  800    40 I            ----
          3  I   40 1200    30 I   50 2000    40 I            ----
          *  I                 I                 I


        - Ausfuehrung Zeitraumformel


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000  ----
          2  I   15  750    50 I   20  800    40 I   35 1550  ----
          3  I   40 1200    30 I   50 2000    40 I   90 3200  ----
          *  I                 I                 I            ----




        - Summierung der Zeilen


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000  ----
          2  I   15  750    50 I   20  800    40 I   35 1550  ----
          3  I   40 1200    30 I   50 2000    40 I   90 3200  ----
          *  I   80 2950   120 I  110 5800   135 I  190 8750  ----



    5.) Anforderung:
        ZS: Sternsumme / Schluesselformel
        SS: 1. Zeitraumformel
            2. Werteformel


        Abarbeitung:
        - Summierung der Zeilen


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000       I   40 3000       I
          2  I   15  750       I   20  800       I
          3  I   40 1200       I   50 2000       I
          *  I   80 2950       I  110 5800       I


        - Ausfuehrung Zeitraumformel


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000       I   40 3000       I   65 4000
          2  I   15  750       I   20  800       I   35 1550
          3  I   40 1200       I   50 2000       I   90 3200
          *  I   80 2950       I  110 5800       I  190 8750




        - Ausfuehrung Werteformel (mit Rundung)


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000    62
          2  I   15  750    50 I   20  800    40 I   35 1550    44
          3  I   40 1200    30 I   50 2000    40 I   90 3200    36
          *  I   80 2950    42 I  110 5800    53 I  190 8750    49



    6.) Anforderung:
        ZS: Sternsumme / Schluesselformel
        SS: 1. Zeitraumformel (SVZ)
            2. Werteformel (SVZ)


        Abarbeitung:


        - Ausfuehrung Zeitraumformel


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000       I   40 3000       I   65 4000
          2  I   15  750       I   20  800       I   35 1550
          3  I   40 1200       I   50 2000       I   90 3200
          *  I                 I                 I


        - Ausfuehrung Werteformel (mit Rundung)


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000    62
          2  I   15  750    50 I   20  800    40 I   35 1550    44
          3  I   40 1200    30 I   50 2000    40 I   90 3200    36
          *  I                 I                 I




        - Summierung der Zeilen


             I WERTE
             I  ANZ  NEU DURCH I  ANZ  NEU DURCH I  ANZ  NEU DURCH
             I ZEITRAUM        I
          BD I 0190 0190  0190 I 0290 0290  0290 I  J/F  J/F   J/F
          ---------------------------------------------------------
          1  I   25 1000    40 I   40 3000    75 I   65 4000    62
          2  I   15  750    50 I   20  800    40 I   35 1550    44
          3  I   40 1200    30 I   50 2000    40 I   90 3200    36
          *  I   80 2950   120 I  110 5800   135 I  190 8750   142




    Rechnen mit gerundeten Werten
    -----------------------------
    Oft weicht in Auswertungen die betrachtete Wertedimension vom
    ungerundeten, gespeicherten Format ab.


    Statt einer Auswertung in DM und PF sollen die Werte z. B. in TDM
    ausgewiesen werden.


    Erfolgen nun Berechnungen mit diesen Werten, wird stets auf die
    ungerundete Wertebasis zurueckgegriffen.


    Ueber den Parameter SVZ kann zwar die Abarbeitungsreihenfolge und
    damit auch der Zeitpunkt der Rundung gesteuert werden, Rundungs-
    differenzen sind aber dadurch nicht vermeidbar.


    Soll weiterhin eine Rundung auf Zehner erfolgen, gilt statt des
    bereits berechneten DM-Wertes wiederum der ungerundete Wert als
    Ausgangsbasis.


    Beispiel:


    FO01 = PRAEMIE , (8,0,DM) oder echter Wert: PRAEMIE, (8,0)
    FO02 = PRAEMIE , (8,0,DM,SVZ)
    FO03 = PRAEMIE / 10 , (8,0,ZDM) oder echter Wert: PRAEMIE, (8,A)
    FO04 = PRAEMIE / 10 , (8,0,ZDM,SVZ)


              I  WERTE
              I    PRAEMIE      FO01     FO02     FO03     FO04
      GEBIET  I      DM_PF        DM       DM      ZDM      ZDM
      ----------------------------------------------------------
      01      I     224,65       225      225       22       22
      02      I      29,74        30       30        3        3
      GESAMT  I     254,39       254      255       25       25




    Dieses Problem koennen Sie vermieden, indem Sie mittels einer
    NN-Formel eine Rundung auf volle DM vornehmen, und danach mit
    diesem NN-Formelwert weiterrechnen.
    In der NN-Formel ist der Parameter SVZ anzugeben, um die Rundung
    vor allen anderen Berechnungen auszufuehren.


    NNPR = PRAEMIE , (8,0,DM,SVZ)
    FO01 = NNPR , (8,0,DM)
    FO02 = NNPR / 10 , (8,0,ZDM)


              I  WERTE
              I    PRAEMIE      FO01     FO02
      GEBIET  I      DM_PF        DM      ZDM
      -----------------------------------------
      01      I     224,65       225       23
      02      I      29,74        30        3
      GESAMT  I     254,39       255       26




    Auspraegungsmengen und VON-BIS-Zeitangaben
    ------------------------------------------


    Statt mit Sternsummen oder Formeln zu arbeiten, koennen Sie auch
    mit Auspraegungsmengen und VON-BIS-Zeitangaben Summierungen
    ausloesen.


    Allerdings ist in diesen Faellen die Verarbeitungsreihenfolge
    nicht zu veraendern, weil diese Anweisungen immer vor allen
    anderen Berechnungsanweisungen durchgefuehrt werden.


    Durchsetzen der Aufbereitungsangaben
    ------------------------------------
    Anhand der obigen Beispiele ist leicht erkennbar, dass
    die Abarbeitungsreihenfolge immer in Kreuzungspunkten von
    Zeilen- und Spaltenformeln eine Rolle spielt. Analog zur Be-
    rechungsreihenfolge setzen sich auf die Nachkommastellen bzw.
    Aufbereitungsangaben durch. Hierbei gilt, dass im Gegensatz
    zu Zeitraum- und Schluesselformeln Werteformeln per Definition
    stets eine Aufbereitungsangabe besitzen (Voreinstellung ohne
    Nachkommastellen). Entsprechend der Berechnungsreihenfolge setzen
    sich diese Angaben durch, wobei gegebenenfalls Zwischenergebnisse
    gerundet werden.


    HINWEIS
    -------
    Etwaige Spaltenbedingungen (vergleiche Kap. 8.7) werden nach
    jedem Abarbeitungsschritt angewandt.


                                                    Kap. 7.10




     Die Formelbibliothek (Online)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Formeln, die fuer Listanforderungen erfasst werden, speichert
    das System in der Formelbibliothek. Abgespeicherte Formeln
    koennen Sie spaeter wieder aus der Formelbibliothek in einer
    aktuell zu bearbeitenden Listanforderung aufrufen. Jede
    Formel in der Formelbibliothek wird durch einen achtstelligen
    Namen identifiziert. Dieser Name muss ein ASS-Bezeichner sein.


    Zu unterscheiden sind zwei Umgebungen aus denen heraus die
    Formel bearbeitet wird. Geschieht dieses innerhalb einer List-
    anforderung, so gilt folgendes:


    Abspeichern von Formeln:
    Fuer den Namen der abzuspeichernden Formel werden die ersten
    acht Stellen aus dem Feld fuer die Formelbezeichnung hergenommen.
    Sie tragen dort einfach den Namen der zu speichernden Formel
    ein und druecken PF7.
    Existiert bereits eine Formel mit diesem Namen, so wird ein
    Hinweis ausgegeben. Ein Ueberschreiben ist nur nach nochmaliger
    Betaetigung von PF7 moeglich.


    Lesen von Formeln:
    Wie beim Schreiben von Formeln gibt man im Feld fuer die
    Formelbezeichnung den Namen der zu lesenden Formel ein und
    drueckt PF8. Ist der gewuenschte Formelname nicht bekannt,
    so kann mit PF5 in die Bibliotheksuebersicht verzweigt werden.
    Hier koennen dann durch einfache Markierung Formeln ausgewaehlt
    werden. Im Feld fuer den Formelnamen kann bei PF5 sofort eine
    ?-Maskierung mitgegeben werden, um die Menge der anzuzeigenden
    Formeln einzuschraenken (siehe hierzu auch die Beschreibung der
    Bibliotheksuebersicht).


    Eine andere Moeglichkeit ist die zentrale Pflege von Formeln
    aus der Maske VS100 heraus. Hierzu geben Sie einen achtstelligen
    Formelnamen in der Maske ein und markieren das entsprechende Feld
    fuer die Erstellung von Formeln. Anschliessend wird in die Maske
    VS114 verzweigt, wo sie diese Formel verarbeiten koennen. Dabei
    ist es zunaechst unerheblich, ob diese Formel spaeter in List-
    anforderungen als Wert-, Zeit- oder Schluesselformel verwendet
    wird. Das Abspeichern erfolgt analog zu Listanforderungen via
    Endeverarbeitung (Eingabe von E im Kommandofeld). In dieser
    Umgebung ist es auch moeglich, die Formeln mit Kommentaren
    zu versehen, die man sich in der Bibliotheksuebersicht anzeigen
    lassen kann.

    Formeln in der Formelbibliothek koennen ebenso wie Listanfor-
    derungen mit der Bibliotheksverwaltung (Maske VS117) verwaltet
    werden. Mit der Bibliotheksuebersicht (VS122) koennen sie
    nach bestimmten Auswahlkriterien angezeigt werden.


    Beim Abspeichern von Formeln werden keine syntaktischen oder
    semantischen Pruefungen der betreffenden Formel durchgefuehrt.
    Sie koennen daher beliebige Texte in der Formelbibliothek
    abspeichern.








    Zeitpunkt der semantischen Pruefung
    -----------------------------------


    Mit PF6 kehren Sie zu der Maske zurueck, aus der Sie die
    Maske VS114 angesteuert haben.
    Die Pruefung der Semantik wird wegen des hohen Aufwands nicht
    bei der Bearbeitung der Maske VS114 durchgefuehrt, sondern
    erst vor der Anzeige des Listbildes oder vor der Anzeige
    der Statistik oder in der Abschlussbearbeitung der Listan-
    forderung, weil in den drei genannten Faellen die Listanforderung
    sowieso nochmals vollstaendig durchgeprueft wird.
    In der Maske VS114 werden Eingaben nur auf korrekte Syntax
    geprueft.


                                                      Kap. 7.11




     Anforderung von Formeln (Online)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Formeln werden in der Maske VS114 erfasst. Diese Maske kann
    aus mehreren anderen Masken angesteuert werden und zwar


       - aus Maske VS110 (Auswahl von Auspraegungen eines Kopf-,
                          Zeilen- oder Spaltenschluessels)


       - aus Maske VS111 (Erweiterte Wertanforderung ueber WZ)


       - aus Maske VS113 (Anforderung von Zeiten ueber ZE)


       - aus Maske VS100


       - aus Maske VS117 (Bibliotheksuebersicht durch Selektion)


       - aus Maske VS122 (Bibliotheksverwaltung durch Selektion)


    Aus den ersten drei genannten Bildern heraus kommt man jeweils
    in die Maske VS114, indem man die gewuenschte Reihenfolgenummer
    vergibt und jeweils das Feld FORMEL markiert. In der Maske VS100
    ist fuer das Verzweigen ein Formelname anzugeben und das ent-
    sprechende Feld fuer die Formelbearbeitung zu markieren. Aus der
    Bibliotheksverwaltung bzw. aus der Bibliotheksuebersicht heraus
    verzweigt man durch Selektion der gewuenschten Formel.


    In das erste Eingabefeld von VS114 muss ein Formelbezeichner
    eingetragen sein. Dieser kann bis zu 20 beliebige Zeichen
    enthalten, mit Ausnahme des einfachen Hochkommas.
    Beim Abspeichern einer Formel in die Bibliothek werden nur die
    ersten acht Zeichen der Formelbezeichnung beruecksichtigt.
    In diesem Fall sollten die Formelbezeichnungen nur aus ASS-
    Bezeichnern bestehen.


    Der eigentliche Formelausdruck wird nach den gleichen Regeln
    wie in der BATCH-Sprache beschrieben.


    Abhaengig davon, ob eine Formeln innerhalb einer Listanforderung
    bearbeitet wird oder ob diese Formel unabhaengig gepflegt wird
    (Ansteuerung aus VS100, VS117 oder VS122), stehen verschiedene
    Funktionen via PF-Taste zur Verfuegung.





    Mit PF4 und Eingabe einer Formelbezeichnung koennen Sie sich eine
    eventuell in der aktuellen Anforderung bereits existierende Formel
    als Vorlage fuer eine neue Formel einlesen lassen.
    Mit PF8 und Eingabe einer Formelbezeichnung kann die entsprechen-
    de Formel aus der Formelbibliothek eingelesen werden.
    Mit PF5 kann bei unbekanntem Formelnamen zur Formelauswahl auch
    in die Bibliotheksuebersicht verzweigt werden (vgl. auch Kap. 7.10
    'Die Formelbibliothek (Online)').
    ACHTUNG: Dabei muss die Art der Formel auch wirklich zur aktuellen
    Anforderungsumgebung passen. Wird z. B. eine Werteformel als
    Schluesselformel eingelesen, so ist diese Anforderung ein Verstoss
    gegen die ASS-Syntax und wird deshalb nicht ausgefuehrt.
    Diese Funktionstasten sind nur bei der Verarbeitung von Formeln
    innerhalb von Anforderungen sinnvoll und stehen daher auch nur
    in dieser Umgebung zur Verfuegung.


    Mit der PF3-Taste wird zu den Zeileninhalten zurueckgekehrt, die
    zuletzt als gueltig vorgemerkt wurden (durch Einstieg in die Maske
    oder durch Druecken der Enter-Taste). Hierbei werden durch
    Betaetigen der PF3-Taste leere Zeilen (also auch die, die durch
    das i-Einfuegekommando erzeugt wurden) wieder zusammengeschoben.
    Sollen lediglich die Zeilen des angezeigten Bildschirms um die
    Leerzeilen zusammengeschoben werden, ist vor dem Betaetigen der
    PF3-Taste der Bildschirminhalt mit Enter-Taste vorzumerken, wobei
    keine Fehlermeldung auftreten darf.


                                                      Kap. 7.12




     Editierfunktionen fuer die Maske VS114


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
    Es stehen folgende Editierfunktionen bei der Erfassung einer
    Formel zur Verfuegung :


    - Einfuegen einer Leerzeile
    - Wiederholen einer Zeile
    - Kopieren einer Zeile oder eines Blockes von Zeilen
    - Bewegen  einer Zeile oder eines Blockes von Zeilen


    Alle Editierkommandos bestehen aus einem Kommando-Kuerzel (ein
    Buchstabe), gefolgt von einem Blank. Sie muessen linksbuendig in
    den betreffenden Zeilen eingegeben werden.
    Der Inhalt der entsprechenden Zeilen wird dann nicht aus der
    aktuellen Maske geholt (da er ja teilweise ueberschrieben worden
    sein kann durch das Editierkommando), sondern aus der vorher-
    gehenden Eingabe, bzw. von der Anforderungsdatenbank, falls
    die Formel gerade zuvor mit PF8 eingelesen wurde.
    Letzteres ist natuerlich nur dann moeglich, wenn die Formel nicht
    zwischendurch von einem anderen Benutzer von der Anforderungs-
    datenbank geloescht wurde.


    Die einzelnen Kommandos :


    Kommando I  Wirkung
    ------------------------------------------------
     i,I     I Eine Leerzeile wird eingefuegt, die folgenden Zeilen
             I ruecken um eine Zeile nach unten.
     r,R     I Die entsprechende Zeile wird dupliziert.
     c,C     I Die entsprechende Zeile (ein 'c' eingeben) oder der ent-
             I sprechende Block (zwei 'c' eingegeben, der Block reicht
             I vom ersten 'c' bis zum zweiten 'c') wird kopiert, und
             I zwar hinter die mit 'a' gekennzeichnete Zeile bzw. vor
             I die mit 'b' gekennzeichnete Zeile.
     m,M     I Wie 'c', aber der Quellbereich wird geloescht.
     a,A     I Hinter dieser Zeile beginnt der Zielbereich fuer
             I Copy/Move
     b,B     I Vor dieser Zeile beginnt der Zielbereich fuer Copy/Move


    Verschachtelte Kommandos:
       Ein r-Kommando innerhalb eines c-Block-Kommandos:
          das r-Kommando wird zuerst ausgefuehrt.
       Ein m-Kommando innerhalb eines r-Block-Kommandos:
          das m-Kommando wird zuerst ausgefuehrt.


                                                      Kap. 7.13




     Anforderung von Formeln (BATCH-Sprache)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    In der BATCH-Sprache werden Formeln wie normale Schluessel-
    inhalte, Zeiten der Werte ueber ihre Bezeichnung angesprochen.
    Ist die Bezeichnung kein ASS-Bezeichner, muss die Bezeichnung
    zwischen einfache Hochkommata gesetzt werden.
    Der Bezeichnung folgt ein Gleichheitszeichen. Dahinter folgt
    der eigentliche Formelausdruck, dessen moegliche Bestandteile
    oben beschrieben wurden.


    Beispiel: Schluesselformel
    ZS: TARIF = (050, 060, 070, SONDERTARIF = '061' + '062', 080);






                                                      Kap. 7.14




     Definition von Formeln durch Formeln aus der Formelbibliothek


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    Wird eine Formel oder Funktion in vielen Anforderungen verwendet,
    so besteht die Moeglichkeit, diese Formel bzw. Funktion dynamisch
    von der Formelbibliothek zu ergaenzen. Der Vorteil liegt darin,
    dass bei einer Aenderung der Formel auf der Bibliothek andern-
    falls saemtliche betreffende Anforderungen anzupassen waeren.


    Angefordert werden derartige Formeln / Funktionen durch
    FONAME1 = <<FONAME2, wobei FONAME2 auf der Formelbibliothek
    bekannt sein muss. Handelt es sich um eine Funktion, so muss
    FONAME1 die Konventionen fuer Funktionsnamen (vgl, Kap. 7.6)
    erfuellen.


    Ferner ist bei der Definition von FONAME1 die Angabe von Aufbe-
    reitungsangaben moeglich, wobei schon vorhandene Aufbereitungs-
    angaben bei FONAME2 uebersteuert werden.
    Weitere Angaben, z. B. die Verwendung innerhalb eines arithme-
    tischen Ausdrucks, sind nicht zulaessig. Derartige Konstrukte
    lassen sich jedoch auf einfache Weise durch die Verwendung von
    Hilfsformeln (NN-Formeln) erreichen.





                                                      Kap. 7.15




     Bedingungen in Formeln (IF / THEN / ELSE)


Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis


    In bestimmten Anwendungsfaellen ist es erforderlich, den Wert
    einer Formel in Abhaengigkeit einer (logischen) Bedingung
    zu bestimmen.
    Die Syntax hierfuer lautet:


      Foname = IF Bedingung THEN arithmetischer Ausdruck 1
                            ELSE arithmetischer Ausdruck 2
               ENDIF


    Die Art des arithmetischen Ausdrucks haengt davon ab, ob
    es sich um eine Zeitraum-, Schluessel- oder Werteformel
    handelt.
    In der Bedingung ist die Verwendung der Vergleichsoperatoren
    '<', '<=', '>', '>=', '=' und '^=' sowie die Verknuepfung
    zweier Bedingungen durch '&' (logisches und)  oder   '!'
    (logisches oder) erlaubt. Die Bedingung gilt als 'wahr', wenn
    die Auswertung ein von 0 verschiedenes Ergebnis liefert. Im
    anderen Fall gilt die Bedingung als nicht erfuellt.
    Bei Schluesseln mit Zeit-Typ (siehe ST06) sind auch
    chronologische Zeitvergleiche zulaessig, siehe 4.4.1.


    Beispiel:


       BESTANDSENTWICKLUNG
          = IF BESTAND_ALT = 0
              THEN 0
              ELSE ((BESTAND_NEU - BESTAND_ALT) / BESTAND_ALT) * 100
            ENDIF


    Der Formel kann wie ueblich eine Aufbereitungsangabe folgen.
    Die Schachtelung von Bedingungen ist direkt nicht erlaubt.
    Jedoch koennen die arithmetischen Ausdruecke im THEN-Zweig
    bzw. ELSE-Zweig Formeln beinhalten, deren Wert wiederum durch
    eine IF-Bedingung bestimmt ist.
    Innerhalb einer Werteformel kann bei der Bedingung auch auf andere
    Schluessel Bezug genommen werden. Um dabei einen Schluessel-
    bezeichner von einem Wertebezeichner unterscheiden zu koennen,
    ist ersterer durch die Angabe von SCHLUESSEL(Schluesselbezeichner)
    kenntlich zu machen.




    Beispiel:


       PRAEMIE_KFZ
          = IF SCHLUESSEL(SPARTE) = KFZ
              THEN VERS_SUMME * FAKTOR
              ELSE 0
            ENDIF


    Auch in diesem Fall ist die Verknuepfung verschiedener Bedingungen
    zulaessig (Klammerung ist empfehlenswert).
    Die hierbei angesprochenen Schluessel muessen explizit angefordert
    als Kopf-, Zeilen- oder Spaltenschluessel angefordert sein.
    Installationsabhaengig kann es aufgrund der internen Abarbeitungs-
    reihenfolge notwendig sein, den THEN-Teil oder ELSE-Teil als
    NN-Formel auszugliedern. Dieses ist dann der Fall, wenn
    gleichzeitig Rechenwerte und Mengen angefordert werden.


    Im obigen Beispiel wird auf eine Schluessel-Auspraegung abgefragt.
    Es gibt auch die Moeglichkeit auf Auspraegungsmengen abzufragen:


       PRAEMIE_KFZ
          = IF SCHLUESSEL(SPARTE) = MENGE('Sach')
              THEN VERS_SUMME * FAKTOR
              ELSE 0
            ENDIF


    wobei alle Mengen, die in der betreffenden Anforderung mit 'Sach'
    bezeichnet sind, beruecksichtigt werden.


    In Werte-, Zeitraum- oder Schluessel-Formeln kann bei
    Bedingungen auch ein sogenannter String-Vergleich verwendet
    werden.


    Beispiel:


       IF '&&MONAT' < '04'
         THEN 0
         ELSE NEUBEITRAG
       ENDIF


    Beim Stringvergleich ist darauf zu achten, dass beide
    Operanden als String definiert sind, d.h. in Hochkommata
    eingeschlossen werden. Im obigen Beispiel ist das
    Ergebnis abhaengig vom Inhalt des Parameters &&MONAT und damit
    in der gesamten Anforderung immer gleich.


    In Werteformeln darf auch die rechte Seite vom Vergleichs-Operator
    einen Schluessel, der in der aktuellen Anforderung als KS, ZS
    oder SS angefordert ist, adressieren.


    Beispiel:


       PRAEMIE_KFZ
          = IF SCHLUESSEL(SPARTE) = SCHLUESSEL(SPARTE_NEU)
              THEN VERS_SUMME * FAKTOR
              ELSE 0
            ENDIF



Vorheriges Kapitel: 6 Kommentare in ASS-Auswertungen

Nächstes Kapitel:   8 Druckaufbereitungs- und Selektionsoptionen