Page tree
Skip to end of metadata
Go to start of metadata

In diesem Abschnitt wird die Formalsprache (Pseudocode), welche im Datenmodell für die Darstellung von Algorithmen sowie für Überleitungen aus dem Basic-Cube, etc. verwendet wird, beschrieben und mit konkreten Beispielen untermauert. Ziel der hier beschriebenen Formalsprache ist es, die erforderlichen Algorithmen möglich kompakt sowie leserlich und verständlich darzustellen, ohne dabei den Anspruch auf Eindeutigkeit zu verlieren. Dabei soll der Pseudocode für eine möglichst breite Gruppe verständlich sein, ohne dass dafür spezielle Programmierkenntnisse erforderlich wären. 

Logische Operatoren und Bedingungen

Formalsprache
Äquivalent Programmiersprache (JAVA / C++)
Beschreibung

Beispiel

ISTGLEICH==Vergleichsoperator (Übereinstimmung)(Land ISTGLEICH AT)
UNGLEICH!=Vergleichsoperator (Ungleich)(Land UNGLEICH AT)
NICHT(...)!(...)logisches Nicht (Negation)NICHT(Land ISTGLEICH AT)
<<Vergleichsoperator (Kleiner)(x < 5)
<=<=Vergleichsoperator (Kleinergleich)(x <= 5)
>>Vergleichsoperator (Groesser)(x > 5)
>=>=Vergleichsoperator (Groessergleich)(x >= 5)
UND&&

logisches UND, Verbinden mehrerer logischer Bedingungen

(Land ISTGLEICH AT) UND (x ISTGLEICH 0)
ODER||logisches ODER

(Land ISTGLEICH AT) ODER (LAND ISTGLEICH DE) 

x = 10x = 10Eine Variable auf einen bestimmten Wert setzen.

x=10  (hier wird der Variablen x der Wert 10 zugeordnet)

WENN (Bedingung1) DANN

Anweisung(en)1

SONST

Anweisung(en)2

ENDE

Bei mehreren Bedingungen:

WENN (Bedingung1) DANN

Anweisung(en)1

SONST WENN (Bedingung2) DANN

Anweisung(en)2

SONST

Anweisung(en)3

ENDE

if (Bedingung1){

Anweisung(en)1}

else{

Anweisung(en)2}


Bei mehreren Bedingungen

if (Bedingung1){

Anweisung(en)1}

else if (Bedingung2){

Anweisung(en)2}

else{

Anweisung(en)3}

IF-Statement, um Bedingungen zu formulieren

WENN (LAND ISTGLEICH "AT") DANN

x = 1

SONST

x = 0

ENDE

ITERIERE i VON a,b 

Anweisung(en)

ENDE ITERATION

for (int  i = a; i <= b; i++) {

Anweisung(en)

}

 

Der Wert i wird von a bis b iteriert. Das bedeutet, dass der Wert i alle Werte zwischen a und b annimmt. (Einschließlich a und b) In jedem Iterationsschritt wird/werden die Anweisung(en) ausgeführt.


BEENDE ITERATIONBREAK

Der Befehl wird nur innerhalb einer Iteration verwendet. Die Iteration ist sofort zu beenden.


UEBERLEITUNG(Name der Tabelle, Liste der identifizierenden Spalten mit deren gewünschten Ausprägungen) 

kein Äquivalent vorhanden

Der Befehl UEBERLEITUNG holt den Wert einer speziellen Kombination von identifizierenden Ausprägungen (Spalten) aus einer Überleitungstabelle. Dabei ist der Name der Überleitungstabelle, sowie die identifizierenden Ausprägungen(Spalten) und das Zielelement anzugeben. Bei Algorithmen etc. sind die Überleitungsalgorithmen unterhalb der Templates hinzuzufügen, wobei über die Tabelle immer die entsprechende Bezeichnung der Tabelle anzugeben ist.

z = UEBERLEITUNG

(Tabelle1,

WertA ISTGLEICH X,

WertB ISTGLEICH Y, WertC)

ENTHAELT(Ausprägung 1,
Ausprägung 2, ..., Ausprägung n)

IN (Ausprägung 1, Ausprägung 2, ..., Ausprägung n)

Abfrage, ob das betrachtete Objekt Ausprägung 1, Ausprägung 2, ..., Ausprägung n enthält


ISTLEER(Argument)IS NULL

Abfrage, ob ein Objekt vorhanden ist bzw. ob diesem Objekt ein Wert zugeordnet wurde. Wurde einem Objekt kein Wert zugeordnet, so ist dieses leer oder aus technischer Sicht NULL. ISTLEER kann nur WAHR oder FALSCH sein.


MAX

Gibt das Maximum einer Reihe von numerischen Werten zurück.


MIN

Gibt das Minimum einer Reihe von numerischen Werten zurück.


ABS
Gibt den absolut Wert eines numerischen Wertes zurück
VERBINDE+ / strcat()Verbindet Zeichenketten miteinander
LINKS (String, n)
Gibt die ersten n Zeichen eines gegebenen Strings zurück.LINKS("abcde",3) = "abc"
RECHTS (String, n)
Gibt die letzen n Zeichen eines gegebenen Strings zurück.RECHTS("abcde",3) = "cde"
LAENGE (String)
Gibt die Länge eines Strings zurück.LAENGE("abcde") = 5
GROESSE(Menge)size()Gibt die Größe eine Menge zurückGROESSE({a,b,c}) = 3
Menge1 UNION Menge2Menge1.addAll(Menge2)Bildet die Vereinigung zweier Mengen

{a, b, c} UNION {d, e, c} =

{a, b, c, d, e}

DURCHSCHNITT(Wert, Gewicht)
Bildet den Durchschnitt über Werte, nach einem zweiten Wert gewichtet. Siehe auch XVD_Kapitalgewichteter_Durchschnittszinssatz
QUANTIL(Wert, p)
Empirisches p-Quantil (im Fall dass das Quantil zwischen zwei Datenpunkten liegt, so ist der Mittelwert der beiden Datenpunkte zu verwenden).
ATTRIBUTWERT(Attribut)
Liefert den Wert des Attributs zurück.
ATTRIBUTWERT(Attribut,Gruppenliste)
Liefert den Wert des Attributs mit Einschränkung auf die angegebene Gruppenliste zurück.
[TOP(n) Attribut WITH (Bedingung), Wertart]
Gibt die n größten Attribute einer Menge zurück, wobei die "Größe" auf Basis der angegebenen Wertart gemessen wird. Die Bedingung dient zur Einschränkung der Grundmenge.


[TOP(10) AI_Geschaeftsfall_ID WITH GF00_Geschaeftsfallkategorie_Code == "Derivat (Q)", WERTART("Nominale (NN)")]

→ Selektiert die AI_Geschaeftsfall_IDs der 10 Derivate aus der Tabelle GF_Geschaeftsfall, deren Nominale am größten (unter allen Derivaten) ist.

rownum

rownum bezieht sich auf die Reihung des Datensatz auf der entsprechenden Entität (ggf. ist davor eine Filterung durchzuführen)


rownum == 1 selektiert den ersten Datensatz von der entsprechenden Entität


Select-Abfragen auf den Basic-Cube

Formalsprache
Äquivalent SQL
Beschreibung
SELEKTIERE Attribut VON Objekt MIT BedingungenSELECT //Attribut angeben// FROM database WHERE //Bedingung einfügen//Selektiert Attribute unter bestimmten Bedingungen aus einzelnen Entitäten des Basic-Cube


Bei allen "Selektiere"-Abfragen auf den Basic-Cube wird immer davon ausgegangen, dass folgende Attribute:

gegeben sind. Diese müssen daher in den Überleitungen und anderen Funktionen nicht explizit angeführt werden. Die zentralen Entitäten GF_Geschaeftsfall und SK_Sachkonto stehen in den verschiedensten Beziehungen mit den anderen Entitäten des Datenmodells. Manche dieser Beziehungen sind nicht direkt, so ist z.B. die Entität EM_Einheit_MS nicht direkt mit der Entität GF_Geschaeftsfall verbunden. Die Verbindung zwischen GF_Geschaeftsfall und EM_Einheit_MS wird über die Entität KR_Kundenrollen hergestellt. Das Statement x = SELEKTIERE  EM_Einheit_MS VON GF_Geschaeftsfall ist also nicht eindeutig, da es zu einem Geschäftsfall viele Einheiten mit unterschiedlichen Kundenrollen gaben kann. Eine Eindeutigkeit kann daher erst durch die Angabe der entsprechenden Kundenrolle erreicht werden. Erweitert man das Statement auf  x = SELEKTIERE EM_Einheit_MS von GF_Geschaeftsfall MIT (KR.AI_Rolle_Code ISTGLEICH "Inhaber") wird jene Einheit mit der Kundenrolle Inhaber ausgewählt.

Hat die Überleitung eine oder mehrere Bedingungen, welche sich auf eine oder mehrere Entitäten beziehen, so sind diese Bedingungen wie folgt zu definieren:

Das Kürzel der entsprechenden Entität ist anzugeben, gefolgt von einem Punkt und anschließend ist das entsprechende Attribut anzuführen mit der Bedingung. Bezieht sich die Bedingung auf eine Ausprägung einer Codeliste, so ist diese Ausprägung mit " " anzuführen.

Beispiel 1: Bedingung bei einer Überleitung aus dem Basic-Cube

GFW.AI_Wertart_Code ISTGLEICH " Buchwert (BW) "

Beispiel 2: Selektiere den aktuellen Geschäftsfall (in einer Funktion)

SELEKTIERE GF_Geschaeftsfall MIT ... oder SELEKTIERE SK_Sachkonto MIT ...

Hier wird der entsprechende Geschäftsfall mit bestimmten Eigenschaften, die über MIT selektiert werden (siehe folgende Beispiele) ausgewählt.

Beispiel 3: Greife auf einen bestimmten Wert (Buchwert) des Geschäftsfalles zu:

SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert VON GF_Geschaeftsfall MIT ((GFW.AI_Wertart_Code ISTGLEICH " Buchwert (BW) ") UND (GFW.AI_Wertmesseinheit_Code ISTGLEICH " Euro-Gegenwert (EUR) "))

Beispiel 4: Greife auf ein bestimmtes Objekt zu:

SELEKTIERE EM_Einheit_MS VON GF_Geschaeftsfall MIT (KR.AI_Rolle_Code ISTGLEICH " Inhaber (IH) ")

Hier wird zu einem betrachteten Geschäftsfall die zugehörige Einheit als Objekt ermittelt.

Beispiel 5: Selektiere eine Menge von Geschäftsfallen mit spezifischen Ausprägungen

SELEKTIERE ALLE GF_Geschaeftsfall MIT (GF.GF00_Geschaeftsfallkategorie_Code ISTGLEICH " Kreditkartenkredit (C) ")

Beschreibung von Funktionen/Algorithmen

Eine Funktion ordnet einem oder mehreren Parametern einen Wert zu. Eine Funktion hat im Rahmen des Datenmodells einen Funktionskopf, der die relevanten Information auf einen Blick zusammenfasst, diese sind:

  • Name der Funktion
  • Eingabe Parameter der Funktion (wenn verfügbar auch den Typ des Eingabeparameters angeben)

Einer Funktion müssen standardmäßig folgende Parameter übergeben werden:

Somit wird sichergestellt, dass Zugriffe auf GF_Geschaeftsfall ohne weitere Einschränkung dieser Parameter den zum Mandanten, Stichtag und Geschaeftsfall-ID passenden Geschäftsfall auswählen (analoges gilt natürlich auch für Sachkonten).

Des Weiteren gibt es in Funktionen keine Möglichkeit Fehler auszugeben. 

Beispiel: BestimmeSektor(ISO-Land Land1, Parameter2, Parameter 3)

  • Der Funktionsname ist "BestimmeSektor"
  • Die Funktion gibt einen validen ESVG-Sektor zurück 
  • Die Funktion "BestimmeSektor" hat drei Eingabeparameter, wobei Land1 den Typ ISO-Land hat.

Jede Funktion muss einen Wert zurückgeben. Dieser ist in der Funktion mit RUECKGABE auszuweisen. Das Ende einer Funktion ist mit FUNKTIONSENDE zu kennzeichnen. Eine Funktion kann entweder durch einen prozedualen Algorithmus (einen Programmcode) oder auch durch eine Überleitungstabelle formuliert werden. Auf eine Überleitungstabelle wird mit dem Befehl UEBERLEITUNG zugegriffen.

Wird eine Funktion durch eine Überleitungstabelle dargestellt, sind folgende Dinge zu beachten:

  • Jede mögliche Kombination muss auch eine Überleitung haben.
  • Jede mögliche Kombination, welche einen Wert identifiziert, darf auch nur einmal vorkommen.

Anwendungsbeispiel Überleitungstabelle

Tabelle 1

SpalteASpalteBWert
XY1
YX2

Der Zugriff auf die Überleitungstabelle (Tabelle 1) erfolgt mittels UEBERLEITUNG.

z = UEBERLEITUNG(Tabelle1,SpalteA ISTGLEICH X, SpalteB ISTGLEICH Y, Wert)

Mit dem Befehl UEBERLEITUNG kann auf die Überleitungstabelle (Tabelle 1) zugegriffen werden, dabei identifizieren die Ausprägungen in SpalteA und SpalteB genau einen Wert.

Der Befehl z = UEBERLEITUNG(Tabelle1,SpalteA ISTGLEICH Y, SpalteB ISTGLEICH X, Wert) würde also der Variablen z den Wert 2 zuordnen (z= 2).


Beispiel einer Funktion (prozedualer Algorithmus):

FUNKTION XUB_Kredithoehenklasse_Wertart (AI_MandantAI_Geschaeftsfall_IDAI_Stichtag_Datum, Wertart)

kreditvolumen = SELEKTIERE GFW_Geschaeftsfall_Wert VON GF_Geschaeftsfall MIT ((GFW.AI_Wertart_Code ISTGLEICH  Wertart ) UND (GFW.AI_Wertmesseinheit_Code ISTGLEICH " Euro-Gegenwert (EUR) "))

WENN (ISTLEER(kreditvolumen)) DANN

RUECKGABE NULL

SONST

//Es gibt einen numerischen Wert für die übergebene Wertart zum betrachteten Geschäftsfall

WENN (kreditvolumen > 0 UND kreditvolumen <= 250.000) DANN

RUECKGABE " bis zu 0,25 Mio. (KHK1) "

SONST

WENN (kreditvolumen > 250.000 UND kreditvolumen <= 1.000.000) DANN

RUECKGABE " 0,25 bis 1 Mio. (KHK2) "

SONST

WENN (kreditvolumen > 1.000.000) DANN

RUECKGABE " über 1 Mio. (KHK3) "

ENDE

ENDE

ENDE

ENDE

FUNKTIONSENDE

Die Funktion hat den Namen XUB_Kredithoehenklasse_Wertart und hat, wie man im Funktionskopf erkennen kann, vier Eingabe-Parameter, nämlich:

In weiterer Folge lädt die Funktion den Geschäftsfall anhand der AI_Geschaeftsfall_ID und selektiert den zugehörigen Wert anhand der Wertart aus der Datenbank. Dieser wird nun mit den vorgegebenen Kredithöhenklassen verglichen und die entsprechende Kredithöhenklasse wird mit RUECKGABE ausgegeben. Das Ende der Funktion ist deutlich mit FUNKTIONSENDE gekennzeichnet.

  • No labels