CX_CURRENCY_RATE::CurrencyCrossConvert
Beschreibung:
Diese Funktion konvertiert ähnlich der Funktion CurrencyConvert eine Währung in eine andere. Dabei wird zunächst versucht, die Ausgangs- direkt in die Zielwährung zu konvertieren. Ist dieses nicht möglich, so wird überprüft, ob die Ausgangswährung einer der beiden Währungen in der Währungsparität entspricht. Ist dieses der Fall, so wird sie in die andere Währung konvertiert. In diesem Fall wird das Ergebnis in die Ausgangs- und nicht in die Zielwährung gespeichert. Der Rückgabewert der Funktion zeigt schließlich an, ob eine Konversion durchgeführt wurde. Diese Funktion kann somit zum Konvertieren "über mehrere Währungen hinweg", einem sog. Cross-Convert benutzt werden. Existieren z.B. die Währungsparitäten "1,62 DEM = 1 USD" und "2,5 DEM = 1 LTD", so kann mit dieser Funktion eine Menge an U.S.-Dollar in britisches Pfund umgerechnet werden, ohne dass zwischen diesen beiden Währungen ein (direkter) Umrechnungskurs definiert wurde. Um solche Umrechnungen durchzuführen, empfiehlt sich die Benutzung einer Konvertierungs-Tabelle.
Code-Beispiel:
In dem Beispiel-Programm wird eine Konvertierung von "5 LTD" in
U.S.-Dollar probiert, wobei angenommen wird, das ein Einheiten-Verhältnis von
"2,5 DEM = 1 LTD" definiert wurde, welches immer gültig ist und
sowohl für den An- als auch Verkauf gilt.
Var(currencyRate, valuePer, fromValue, toValue)
CreateTransObject(CX_CURRENCY_RATE) -> currencyRate
CreateTransObject(CX_VALUE_PER) -> valuePer
"2,5 DEM / 1 LTD" valuePer Put
CreateTransObject(CX_VALUE) -> fromValue
"5 LTD" fromValue Put
CreateTransObject(CX_VALUE) -> toValue
"0 USD" toValue Put
fromValue toValue 0 currencyRate Call(CurrencyCrossConvert)
In diesem Beispiel ist eine Konvertierung von britischem Pfund in U.S.-Dollar
nicht möglich, allerdings eine in Deutsche Mark. Daher wird der Wahrheitswert
TRUE zurückgeliefert, da eine Konvertierung möglich war. Da aber nicht in die
gewünschte Zieleinheit konvertiert wurde, ändert sich der Wert von fromValue
auf "12,5 DEM", der Wert von toValue bleibt unverändert.
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_CURRENCY_RATE | die Währungsparität |
Top-1 | INTEGER | die Konvertierungsart | |
Top-2 | CX_VALUE | die Zielwährung | |
Top-3 | CX_VALUE | die Ausgangswährung | |
Stack(Out) | Top | INTEGER | der Wahrheitswert, der anzeigt, ob eine Konvertierung durchgeführt wurde |