Zukunftswerte verwenden
Es ist möglich, Werten zu verwenden, die erst in der Zukunft berechnet werden. Dies kann mit der Hilfe von zwei Funktionen realisiert werden.
Neues Profil anlegen

Wir legen wir ein einfaches CSV-Mapping an (Trennzeichen NL), das aus einem Kopfsatz und n Positionen besteht. In der Ausgabe soll im Kopfsatz die Anzahl der Positionen erscheinen (Zielstrukturfeld Positionen). Die Eingangsdaten sehen wie folgt aus.
K;4711;Lobster
P;A-1;Artikel 1
P;A-2;Artikel 2
P;A-3;Artikel 3
Auf den Knoten in der Quellstruktur gilt Trennzeichen ;. Die Satzarterkennungen sind Beginnt mit K und Beginnt mit P.
Die Zielstruktur erzeugen Sie bitte mit 1:1 Mapping und fügen ein neues Feld Positionen im Kopf der Zielstruktur ein.
Anschließend legen Sie ein neues Berechnungsfeld Calc_Pos im Knoten Position der Zielstruktur an.
Variable anlegen
Legen Sie eine neue Variable vom Typ Integer im Profil an, der Name ist var__COUNT_POS.
Positionen berechnen
Im Berechnungsfeld Calc_Pos fügen Sie die Funktion calculate and save variable(a,b,c,d,[e]) ein, wie in der Abbildung zu sehen ist. Damit wird pro Durchlauf des Knotens Position der Wert um 1 erhöht, d. h. wir zählen die Anzahl der Positionen.
Anzahl der Positionen im Kopfsatz schreiben

Weil unsere Variable var__COUNT_POS erst später berechnet werden wird, müssen wir im Kopf-Feld Positionen einen vorläufigen Wert schreiben. Das kann mit der Funktion mark for future value(a) getan werden. Wir nennen unseren "zukünftigen" Wert pos_counter.
Was passiert hier?
Der Kopfsatz Kopf wird vor dem Knoten Position abgearbeitet. Zu diesem Zeitpunkt haben wir unsere Variable var__COUNT_POS aber noch nicht berechnet. Deswegen setzen wir den "zukünftigen" Wert pos_counter mit der Funktion auf dieses Feld. Lobster_data "notiert" sich intern, dass der Wert später ersetzt werden soll.
Positionsanzahl jetzt schreiben
Um zu veranlassen, dass nach Durchlauf aller Positionen der Wert im Kopfsatz ersetzt wird, legen wir einen neuen Knoten Ende mit einem Berechnungsfeld Wert_setzen an. Dieses Feld verwendet die Funktion replace marked value(a,b). Diese Funktion erlaubt es sozusagen rückwirkend den damals zukünftigen Wert pos_counter mit einem tatsächlichen Wert zu füllen.
Was passiert hier?
Der Knoten Ende wird am Schluss des Mappings betreten. Die Funktion replace marked value(a,b) bewirkt, dass unser damals zukünftiger Wert pos_counter nun mit dem Wert unserer mittlerweile berechneten Variable VAR_POS_COUNTER belegt wird.
Testen

Wenn alle Angaben korrekt sind, sollte das Ergebnis im Teste Mapping-Dialog genauso aussehen wie oben.
Folgendes geht nicht
Die Verwendung von Zielfeldern als Parameter in Funktionen wird unterbunden, wenn es sich um Felder handelt, die diese Funktion verwenden - da der Wert ja noch nicht bekannt ist.
Es werden nur Werte pro Datenblatt ersetzt! Es können also nicht Werte über Datenblätter hinweg ersetzt werden.
Leere Werte bzw. Empty Flag
Wird die Funktion replace marked value(a,b) nicht ausgeführt, wird für das Feld Positionen das Empty Flag gesetzt.