Lade...
 

CX_CURRENCY_RATE::CurrencyCrossConvert

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
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
Funktionsaufruf: Call(CurrencyCrossConvert)