mark for future value(a)
Gruppe |
Diese Funktion setzt eine Markierung a auf ein Zielfeld. Später kann diese Markierung dann mit der Funktion replace marked value(a,b) durch einen tatsächlichen Wert ersetzt werden.
Markieren und Ersetzen funktioniert nur innerhalb eines Datenblattes. Mit dem Start eines neuen Datenblattes werden Markierungen zurückgesetzt und durch ein Empty Flag ersetzt.
Es wird empfohlen, die Funktion nicht in einer Funktionskette einzusetzen, sondern diese alleine auf ein Feld zu legen. Wird das Feld als Sortierfeld eines Knotens verwendet, findet die Sortierung nach der Ersetzung mit dem eigentlichen Wert statt.
Parameterbeschreibung
Parameter |
Beschreibung |
a |
Name der Markierung. |
Beispiel
Gegeben sei folgendes Eingangsdateiformat.
H;Sender;Receiver;2011-10-21;20:06:32
P;10000;200;Article 1
P;20000;100;Article 2
P;30000;500;Article 3
das über das folgende (auf den für dieses Beispiel relevanten Teil gekürzte) Mapping in eine XML-Struktur gebracht werden soll.
Im Header soll neben anderen Dingen, die Anzahl an Positionen übergeben werden. Diese Information ist zu diesem Zeitpunkt aber nicht vorhanden. Eine Lösung wäre ein weiterer Knoten am Anfang des Mappings, der durch die Positionen im Eingang iteriert und einen Zähler hochzählt. Da aber für die Erzeugung der Positionen im Ausgang dieser Schritt schon gemacht wird, nutzt man die Funktionalität der hier beschriebenen Funktionen. NumberPositions hat diese Funktion mit dem Markierungswert MARK_POSCOUNT definiert.
1) mark for future value(a)
a constant: MARK_POSCOUNT
Im Berechnungsfeld increaseCounter wird die Integer-Variable POSITION_COUNTER jeweils um 1 hochgezählt.
1) calculate and save variable(a,b,c,d,[e])
a constant: POSITION_COUNTER
b constant: +
c constant: 1
d constant:
e constant:
Der finale Schritt findet im Berechnungsfeld setNumberPositions statt. Dort werden alle mit der Markierung MARK_POSCOUNT durch den Inhalt der Variablen POSITION_COUNTER ersetzt.
1) replace marked value(a,b)
a constant: MARK_POSCOUNT
b variable: POSITION_COUNTER
Bei einem Beispiel wie diesem ist der Unterschied in der Laufzeit der beiden Varianten vernachlässigbar. Je mehr Positionen aber verarbeitet werden müssen, umso stärker wirkt sich dies aus.