System-Skriptsprache: Allgemeine Funktionen, Funktionen für Listen (List functions))

Mithilfe der Funktionen für Listen lassen sich Listen erzeugen und bearbeiten. Zu den Funktionen für Listen gehören:

Grundlegende Informationen zu den allgemeinen Funktionen der System-Skriptsprache erhalten Sie im Dokument System-Skriptsprache: Allgemeine Funktionen.

add

Name add
Beschreibung add fügt einer Liste ein weiteres Element hinzu.
Signaturen add(Unknown[] list, Unknown element)
Parameter list ist eine Liste.

element ist ein Element, das der Liste list hinzugefügt werden soll.

Ergebnis Das Element element wird der Liste list als letztes Element hinzugefügt. Der Elementdatentyp von element bleibt dabei erhalten.
Fehlerquellen Ein Element element kann nur dann der Liste list hinzugefügt werden, wenn der Datentyp des Elements mit dem Elementdatentyp der Liste übereinstimmt oder in diesen umgewandelt werden kann. Besitzt die Liste list1 beispielsweise den Datentyp Number[], dann führt der Ausdruck add(list1, "1")zu einem syntaktischen Fehler, da eine Zeichenkette nicht in eine Zahl umgewandelt werden kann. Ist list1 dagegen als String[]deklariert, dann ist der Ausdruck add(list1, 1)syntaktisch korrekt, da eine Zahl in eine Zeichenkette umgewandelt werden kann.
Beispiele add(list1, 3) fügt der Liste list1 das Element 3 hinzu.

add(list1, now()) fügt der Liste list1 den aktuellen Zeitpunkt als neues Element hinzu.

Kontext ALL
Hinweise
Siehe auch addAll, list, union

Folgendes Beispiel aus der Aktivitätsdefinition help.add erzeugt eine Liste vom Datentyp String[] mit einem Element für jedes Wort im Text parameters.TEXT:

function create()
{
var p_text := trim(parameters.TEXT);

var p_text := trim(parameters.TEXT);
var r_wordList as String[];
var word as String;
var startPos := 0;
var i := 0;

while (i < length(p_text)) {
if (substring(p_text, i, i + 1) = " ") {
word := trim(substring(p_text, startPos, i));
startPos := i;
if (word <> "")
add(r_wordList, word);
}
i := i + 1;
}
word := trim(substring(p_text, startPos));
if (word <> "")
add(r_wordList, word);

result.VALUE := r_wordList;
}

 

Beispiel: Parametersliste mit verschiedenen Datentypen

Besitzt die Liste den Datentypen Unknown[], dann können Elemente beliebiger Datentypen hinzugefügt werden, da alle Datentypen in Unknownumgewandelt werden können. Daher können Sie die Funktion addbeispielsweise dazu verwenden, eine Parameterliste für die Funktion getCisObjectListzu erzeugen, wenn die OQL-Abfrage Parameter unterschiedlicher Datentypen besitzt, die nicht automatisch in den Datentyp des ersten Parameters umgewandelt werden können.

Das folgende Beispiel verwendet eine Parameterliste vom Datentyp Unknown[], um mithilfe der Funktion getCisObjectListdie ersten 100 internen Personen zu ermitteln und auf der Konsole auszugeben:

const PartnerType as valueSet(com.cisag.app.general.PartnerType);
const BlockSize := 100;

function create()
{
var partnerList as CisObject(com.cisag.app.general.obj.Partner)[];
var params as Unknown[];
var OQL :=
"SELECT FROM com.cisag.app.general.obj.Partner p " +
"WHERE p:type = ? AND p:human = ? " +
"ORDER BY p:number";

add(params, PartnerType.INTERNAL);
add(params, true);

var cisObjectList := getCisObjectList(OQL, params, BlockSize);

for (p as CisObject(com.cisag.app.general.obj.Partner) : cisObjectList)
echo(p:number);
}

 

addAll

Name addAll
Beschreibung addAll fügt einer Liste alle Elemente einer weiteren Liste hinzu.
Signaturen addAll(Unknown[] list, Unknown[] listToAdd)
Parameter list ist eine Liste, der Elemente einer anderen Liste hinzugefügt werden sollen.

listToAdd ist eine Liste, deren Elemente der Liste list hinzugefügt werden sollen.

Ergebnis Die Liste list wird um alle Elemente der Liste listToAdd erweitert. Die Elementdatentypen der Elemente der Liste listToAdd bleiben dabei erhalten.
Fehlerquellen Ein Element der Liste listToAdd kann nur dann hinzugefügt werden, wenn der Datentyp des Elements mit dem Elementdatentyp der Liste list übereinstimmt oder in diesen umgewandelt werden kann. Besitzt list beispielsweise den Datentyp Number[]und ein Element der Liste listToAdd besitzt den Elemendatentypen String, dann kann das Element list nicht hinzugefügt werden, da eine Zeichenkette nicht in eine Zahl umgewandelt werden kann. Besitzt list dagegen den Datentyp String[]und ein Element der Liste listToAdd den Elementdatentyp Number, dann kann das Element list hinzugefügt werden, da eine Zahl in eine Zeichenkette umgewandelt werden kann.
Beispiele addAll(list1, list2) fügt der Liste list1 alle Elemente der Liste list2 hinzu. Die Elementdatentypen bleiben dabei erhalten.

addAll(list1, list(now())) fügt der Liste list1 den aktuellen Zeitpunkt als neues Element vom Elementdatentyp Timestamphinzu.

addAll(list1, minus(list2, list1)) fügt der Liste list1 alle Elemente der Liste list2 hinzu, die noch nicht in der Liste list1 enthalten sind.

Kontext ALL
Hinweise Die Funktion union(list1, list2)gibt die Vereinigungsmenge der Listen list1 und list2 zurück. Verwenden Sie die Funktion union, um doppelte Werte auszuschließen.
Siehe auch add, list, union

Folgendes Beispiel aus der Aktivitätsdefinition help.AddAll fügt einer Liste alle Elemente einer weiteren Liste hinzu:

function create()
{
var p_list1 as Unknown[];
var p_list2 as Unknown[];

add(p_list1, "carpe");
add(p_list1, "diem");
add(p_list2, now());
addAll(p_list1, p_list2);

result.VALUE := p_list1;
}

 

contains

Name contains
Beschreibung contains prüft, ob eine Liste ein bestimmtes Element enthält.
Signaturen Boolean contains(Unknown[] list, Unknown element)
Parameter list ist eine Liste.

element ist ein Element.

Ergebnis Enthält die Liste list das Element element, so wird der Wahrheitswert true zurückgegeben, andernfalls false.
Fehlerquellen Keine.
Beispiele contains(list(1, 2, 3), 1) gibt true zurück.

contains(list(1, 2, 3), 4) gibt false zurück.

contains(list(1, 2, 3), "1") gibt false zurück.

Kontext ALL
Hinweise
Siehe auch intersection

Folgendes Beispiel aus der Aktivitätsdefinition help.contains prüft, ob ein Zeichen in einer Zeichenkette vorkommt:

function create()
{
var p_text := parameters.TEXT;
var p_element := parameters.ELEMENT;

var p_list := new(String[], length(p_text));

var i := 0;
while (i < size(p_list)) {
p_list[i] := substring(p_text, i, i + 1);
i := i + 1;
}
result.VALUE_LIST := p_list;
result.VALUE := contains(p_list, p_element);
}

 

intersection

Name intersection
Beschreibung intersection gibt die Schnittmenge von zwei oder mehr Listen zurück.
Signaturen Unknown[] intersection(Unknown[] list1,

Unknown[] list2)

Unknown[] intersection(Unknown[] list1,

Unknown[] list2,…,Unknown[] listN)

Parameter list1 ist die erste Liste.

list2 ist die zweite Liste.

listN ist die letzte Liste.

Ergebnis Die Schnittmenge der übergebenen Listen als Liste mit demselben Datentyp wie list1. Die Schnittmenge besteht aus den Elementen, die in allen übergebenen Listen list1, list2,…, listN enthalten sind und den gleichen Elementdatentyp besitzen.
Fehlerquellen Um die Differenzmenge bilden zu können, müssen die Elementdatentypen der Listen list2, list3,…,listN in den Elementdatentyp der Liste list1 umgewandelt werden können. Ist z. B. list1 als Number[]und list2 als String[]deklariert, dann verursacht intersection(list1, list2)einen syntaktischen Fehler, intersection(list2, list1)aber nicht.
Beispiele intersection(list(1, 2, 3), list(1, 2), list(2, 3)) gibt eine Liste vom Datentyp Number[]mit der Schnittmenge 2 mit dem Elementdatentyp Numberzurück.

intersection(list(1), list(2)) gibt eine leere Liste vom Datentyp Number[]zurück.

intersection(list("1"), list(1)) gibt eine leere Liste vom Datentyp String[] zurück.

Kontext ALL
Hinweise
Siehe auch contains, minus, union

Folgendes Beispiel aus der Aktivitätsdefinition help.intersection ermittelt alle Zeichen, die in beiden Zeichketten parameters.TEXT1und parameters.TEXT2enthalten sind:

function create()
{
var p_text1 := parameters.TEXT1;
var p_text2 := parameters.TEXT2;

var p_list1 := new(String[], length(p_text1));
var p_list2 := new(String[], length(p_text2));

var i := 0;
while (i < size(p_list1)) {
p_list1[i] := substring(p_text1, i, i + 1);
i := i + 1;
}
i := 0;
while (i < size(p_list2)) {
p_list2[i] := substring(p_text2, i, i + 1);
i := i + 1;
}

result.VALUE := intersection(p_list1, p_list2);
}

 

Beispiel: Bearbeiter einer Workflow-Aktivität ermitteln

Sie können die Funktionen union, intersectionund minusverwenden, um die Bearbeiter einer Workflow-Aktivität kontextbezogen zu ermitteln, wie das folgende Beispiel zeigt.

Die Bearbeiter einer Workflow-Aktivität zur Genehmigung eines Beschaffungsauftrags sollen mithilfe der Workflowrolle PO_APPROVERS ermittelt werden. Dazu wählen Sie zunächst den Bearbeiter Ausdruck in der Aktivitätsdefinition. Im Feld Ausdruck für Bearbeiter tragen Sie workers

ein und deklarieren die globale Variable workers außerhalb der Funktionen.

var workers as Guid[];

Innerhalb der Funktion create

weisen Sie workers die Benutzer-Guids der Inhaber der Workflowrolle zu.

function create()
{
/* approvers of purchase orders */
workers := resolveRole("PO_APPROVERS");
}

 

Übersteigt der Bruttobetrag des Beschaffungsauftrags 10.000,00 Euro (in der 1. Hauswährung), dann soll zusätzlich der zuständige Mitarbeiter des Rechnungsempfängers den Beschaffungsauftrag genehmigen.

In der Funktion createverwenden Sie dazu die Funktion union. Um zu verhindern, dass die Funktion union den Wert Nullzurückgibt, wenn für den Rechnungsempfänger kein zuständiger Mitarbeiter hinterlegt ist, prüfen Sie das Ergebnis der Funktion loadResponsibleOfPartnermithilfe der Funktion isNull.

/* additional approver of large purchase orders */
if (parameters.object:totalValues.grossValueDomestic.amount1 > 10000) {
var responsibleOfPartner := loadResponsibleOfPartner(parameters.object->InvoiceRecipientData:partner);
if (not isNull(responsibleOfPartner))
workers := union(workers, resolvePartner(responsibleOfPartner:guid));
}

Falls der Antragssteller seinen eigenen Beschaffungsauftrag nicht genehmigen darf, schließen Sie den Auslöser des Ereignisses und den zuständigen Mitarbeiter des Beschaffungsauftrags mithilfe der Funktion minusaus der Menge der Bearbeiter aus.

/* remove requester */
workers := minus(workers, list(parameters.userGuid));
if (not isNull(parameters.object:responsible))
workers := minus(workers, resolvePartner(parameters.object:responsible), list(parameters.userGuid));

Um auch Mitarbeiter, die gerade abwesend sind, als Bearbeiter auszuschließen, verwenden Sie die Funktion minus.

/* remove absent workers */
var absentees as Guid[];
for (u as Guid : workers)
if (userAbsent(u))
add(absentees, u);
workers := minus(workers, absentees);

Ist die Menge der Bearbeiter leer, dann soll der Vorgesetzte des Auslösers des Ereignisses den Beschaffungsauftrag genehmigen. Wenn Sie Stellen verwenden, können Sie den Vorgesetzten mithilfe der Funktion superiorermitteln.

/* use superior of user who triggered the event as default */
if (isEmpty(workers))
workers := superior(parameters.userGuid);

Das fertige Beispiel sieht dann wie folgt aus:

var workers as Guid[];

function create()
{
/* approvers of purchase orders */
workers := resolveRole("PO_APPROVERS");

/* additional approver of large purchase orders */
if (parameters.object:totalValues.grossValueDomestic.amount1 > 10000) {
var responsibleOfPartner := loadResponsibleOfPartner(parameters.object->InvoiceRecipientData:partner);
if (not isNull(responsibleOfPartner))
workers := union(workers, resolvePartner(responsibleOfPartner:guid));
}

/* remove requester */
workers := minus(workers, list(parameters.userGuid));
if (not isNull(parameters.object:responsible))
workers := minus(workers, resolvePartner(parameters.object:responsible), list(parameters.userGuid));

/* remove absent workers */
var absentees as Guid[];
for (u as Guid : workers)
if (userAbsent(u))
add(absentees, u);
workers := minus(workers, absentees);
..
/* use superior of user who triggered the event as default */
if (isEmpty(workers))
workers := superior(parameters.userGuid);
}

Ist die Menge der Bearbeiter leer und in der Anwendung Stellen ist keine Vorgesetzten-Beziehung für den Auslöser definiert, dann werden die Inhaber der in der Customizing-Funktion Workflow-Management hinterlegten OLTP-Workflowrolle für Administratoren als Bearbeiter herangezogen. Ist in der Customizing-Funktion keine Workflowrolle hinterlegt oder sie besitzt keine gültigen Inhaber, dann wird der Benutzer ADMINISTRATOR als Bearbeiter herangezogen.

isEmpty

Name isEmpty
Beschreibung isEmpty bestimmt, ob eine Liste leer ist.
Signaturen Boolean isEmpty(unknown[] list)
Parameter list ist die Liste, die geprüft werden soll.
Ergebnis Die Funktion gibt truezurück, wenn list leer ist. Besitzt list mindestens ein Element, dann wird falsezurückgegeben.
Fehlerquellen Keine
Beispiele isEmpty(list()) gibt truezurück.

isEmpty(list(3)) gibt falsezurück.

isEmpty(new(String[3])) gibt falsezurück.

Kontext ALL
Hinweise
Siehe auch size

Folgendes Beispiel aus der Aktivitätsdefinition help.isEmpty bestimmt, ob eine Liste leer ist:

function create()
{
var p_element := parameters.ELEMENT;
var r_isEmpty as Boolean;

var elementList as String[];
if (p_element <> "")
add(elementList, p_element);

result.VALUE := isEmpty(elementList);
result.VALUE_LIST := elementList;
}

 

list

Name list
Beschreibung list erzeugt eine neue Liste mit den angegebenen Elementen.
Signaturen List list(Unknown e1, Unknown e2,…,Unknown eN)
Parameter e1, e2,…, eN sind die Elemente der zu erzeugenden Liste. Alle Parameter sind optional.
Ergebnis Die Funktion listerzeugt eine neue, gefüllte Liste mit den Elementen e1, e2,…,eN. Der Elementdatentyp des ersten Elements e1 bestimmt den Datentyp der Liste. Wird kein Parameter angegeben, dann gibt die Funktion eine leere Liste vom Datentyp Unknown[]zurück.

Weisen Sie mithilfe von list einer vorhandenen Liste Werte zu, dann steht der Datentyp der Liste bereits fest und wird nicht mehr geändert. In diesem Fall können Sie nur Elemente zuweisen, deren Elementdatentypen in den Datentyp der Liste umgewandelt werden können. Die Elemente nehmen dann den Elementdatentyp der Liste an.

Möchten Sie eine Liste mit Elementen unterschiedlicher Elementdatentypen erzeugen (z. B. als Parameterliste einer Hintergrundanwendung), dann müssen Sie das erste Element so wählen, dass die weiteren Elemente in dessen Elementdatentyp umgewandelt werden können. Beispielsweise können Zahlen in Zeichenketten umgewandelt werden, aber nicht umgekehrt. Ist das nicht möglich, dann können Sie die Liste als Unknown[]deklarieren und ihr mithilfe der Funktion add Elemente zuweisen.

Fehlerquellen Sind die Elemente e2, e3,…, eN nicht vom gleichen Elementdatentyp wie e1 und können nicht in den Elementdatentyp von e1 umgewandelt werden, dann verursacht die Funktion einen syntaktischen Fehler.
Beispiele list() gibt eine leere Liste vom Datentyp Unknown[]zurück.

list(1, 2, 3) gibt eine Liste vom Datentyp Number[]mit 3 Elementen vom Elementdatentyp Numberzurück.

list("now", now()) gibt eine Liste vom Datentyp String[]mit 2 Elementen vom Elementdatentyp Stringbzw. Timestampzurück.list(1, 2, "drei")und list(1, 2, list(3))verursachen einen syntaktischen Fehler, da der Datentyp String bzw. Number[]nicht in den Datentyp Numberumgewandelt werden kann.

list(null, now(), 1, "zwei", 3) erzeugt eine Liste vom Datentyp Unknown[]mit 5 Elementen unterschiedlicher Elementdatentypen. Der Elementdatentyp des ersten Elements nullist Unknown.

Kontext ALL
Hinweise Beim Verwenden der Listenelemente übernehmen diese zunächst den Datentyp der Liste. Besitzt die Liste Elemente unterschiedlicher Elementdatentypen, müssen Sie ggf. die Elemente mithilfe der Funktion cast typisieren, bevor Sie sie verwenden können.

Beispiel
var list1 as Unknown[];
list1 := list(null, now(), 1, "zwei", 3);
result.VALUE := cast(Number, list1[2]) + cast(Number, list1[4]); /* -> 4 */

Siehe auch add, addAll

Folgendes Beispiel aus der Aktivitätsdefinition help.list erzeugt eine Liste mit zwei Elementen:

function create()
{
var p_element1 := parameters.ELEMENT1;
var p_element2 := parameters.ELEMENT2;
var r_list as String[];

r_list := list(p_element1, p_element2);

result.VALUE := r_list;
}

 

minus

Name minus
Beschreibung minus gibt die Differenzmenge von zwei oder mehr Listen zurück.
Signaturen Unknown[] minus(Unknown[] list1, Unknown[] list2)

Unknown[] minus(Unknown[] list1, Unknown[] list2,…,Unknown[] listN)

Parameter list1 ist die erste Liste.

list2 ist die zweite Liste.

listN ist die letzte Liste.

Ergebnis Die Differenzmenge der übergebenen Listen als Liste mit demselben Datentyp wie list1. Die Differenzmenge besteht aus allen Elementen der Liste list1, die mit dem gleichen Elementdatentyp nicht in einer der Listen list2, list3,…,listN enthalten sind.
Fehlerquellen Um die Differenzmenge bilden zu können, müssen die Elementdatentypen der Listen list2, list3,…,listN in den Elementdatentyp der Liste list1 umgewandelt werden können. Ist z. B. list1 als Number[]und list2 als String[]deklariert, dann verursacht minus(list1, list2)einen syntaktischen Fehler, minus(list2, list1)aber nicht.
Beispiele minus(list(1, 2, 3), list(1), list(2)) gibt eine Liste vom Datentyp Number[]mit der Schnittmenge 3 und dem Elementdatentyp Numberzurück.

minus(list(1), list(2)) gibt eine leere Liste vom Datentyp Number[]zurück.

minus(list("1"), list(1)) gibt eine leere Liste vom Datentyp String[]zurück.

Kontext ALL
Hinweise
Siehe auch intersection, union

Folgendes Beispiel aus der Aktivitätsdefinition help.minus ermittelt alle Zeichen, die in der ersten Zeichenkette parameters.TEXT1, aber nicht in der zweiten Zeichenkette parameters.TEXT2enthalten sind:

function create()
{
var p_text1 := parameters.TEXT1;
var p_text2 := parameters.TEXT2;

var p_list1 := new(String[], length(p_text1));
var p_list2 := new(String[], length(p_text2));

var i := 0;
while (i < size(p_list1)) {
p_list1[i] := substring(p_text1, i, i + 1);
i := i + 1;
}
i := 0;
while (i < size(p_list2)) {
p_list2[i] := substring(p_text2, i, i + 1);
i := i + 1;
}

result.VALUE_LIST1 := p_list1;
result.VALUE_LIST2 := p_list2;
result.VALUE := minus(p_list1, p_list2);
}

 

size

Name size
Beschreibung size bestimmt die Anzahl der Elemente einer Liste oder einer HashMap.
Signaturen Number size(Unknown[] list)

Number size(HashMap hashMap)

Parameter list ist eine Liste.

hashMap ist eine Hash-Tabelle (HashMap).

Ergebnis Die Anzahl der Elemente der Liste list bzw. der Hash-Tabelle hashMap.
Fehlerquellen Keine
Beispiele size(list(1, 2, 3)) gibt 3 zurück.

size(new(String[10])) gibt 10 zurück.

size(new(HashMap)) gibt 0 zurück.

Kontext ALL
Hinweise Die beiden Ausdrucke size(list1) = 0und isEmpty(list1)prüfen beide, ob die Liste list1leer ist.
Siehe auch isEmpty

Folgendes Beispiel aus der Aktivitätsdefinition help.size bestimmt die Anzahl der Wörter in einem Text, indem es jedes Wort einer Liste hinzufügt und anschließend mithilfe der Funktion size die Länge der Liste ermittelt:

function create()
{
var p_text := trim(parameters.TEXT);
var r_wordList as String[];
var word as String;
var startPos := 0;
var i := 0;

while (i < length(p_text)) {
if (substring(p_text, i, i + 1) = " ") {
word := trim(substring(p_text, startPos, i));
startPos := i;
if (word <> "")
add(r_wordList, word);
}
i := i + 1;
}
word := trim(substring(p_text, startPos));
if (word <> "")
add(r_wordList, word);

result.VALUE_WORD_LIST := r_wordList;
result.VALUE := size(r_wordList);
}

 

toCharList

Name toCharList
Beschreibung toCharList wandelt eine Zeichenkette in eine Liste von Zeichen um.
Signaturen String[] toCharList(String text)
Parameter text ist eine Zeichenkette.
Ergebnis Eine Liste mit einem Element für jedes Zeichen in der Zeichenkette.
Fehlerquellen Keine
Beispiele toCharList("ABC") gibt eine Liste mit den Elementen [„A“], [„B“] und [„C“] zurück.
Kontext ALL
Hinweise
Siehe auch

Folgendes Beispiel aus der Aktivitätsdefinition help.toCharList wandelt eine Zeichenkette in eine Liste von Zeichen um:

function create()
{
var p_text := parameters.TEXT;
var r_toCharList := "";

var charList := new(String[]);
var lenText := length(p_text);
var i := 0;
while (i < lenText) {
add(charList, substring(p_text, i, i + 1));
i := i + 1;
}
for (char : charList)
r_toCharList := r_toCharList + " [" + char + "]";

result.IS_EMPTY := isEmpty(charList);
result.VALUE := trim(r_toCharList);
}

 

union

Name union
Beschreibung union gibt die Vereinigungsmenge von zwei oder mehr Listen zurück.
Signaturen Unknown[] union(Unknown[] list1, Unknown[] list2)

Unknown[] union(Unknown[] list1, Unknown[] list2,…,Unknown[] listN)

Parameter list1 ist die erste Liste.

list2 ist die zweite Liste.

listN ist die letzte Liste.

Ergebnis Die Vereinigungsmenge der übergebenen Listen als Liste mit demselben Datentyp wie list1. Die Vereinigungsmenge besteht aus allen Elementen, die in einer der Listen list1, list2,…, listN enthalten sind und vom selben Elementdatentyp sind.
Fehlerquellen Um die Vereinigungsmenge bilden zu können, müssen die Elementdatentypen der Listen list2, list3,…,listN in den Elementdatentyp der Liste list1 umgewandelt werden können. Ist z. B. list1 als Number[]und list2 als String[]deklariert, dann verursacht union(list1, list2)einen syntaktischen Fehler, union(list2, list1)aber nicht.
Beispiele union(list(1, 2, 3), list(1), list(2)) gibt eine Liste vom Datentyp Number[]mit den Elementen 1, 2, 3 vom Elementdatentyp Numberzurück.

union(list(1), list(2)) gibt eine Liste vom Datentyp Number[]mit den Elementen 1, 2 vom Elementdatentyp Numberzurück.

union(list("1"), list(1)) gibt eine Liste vom Datentyp String[]mit den Elementen “1” und 1 von den Elementdatentypen Stringbzw. Numberzurück.

Kontext ALL
Hinweise
Siehe auch add, intersection, minus

Folgendes Beispiel aus der Aktivitätsdefinition help.minus ermittelt alle Zeichen, die in entweder der ersten Zeichenkette parameters.TEXT1oder der zweiten Zeichenkette parameters.TEXT2enthalten sind:

function create()
{
var p_text1 := parameters.TEXT1;
var p_text2 := parameters.TEXT2;

var p_list1 := new(String[], length(p_text1));
var p_list2 := new(String[], length(p_text2));

var i := 0;
while (i < size(p_list1)) {
p_list1[i] := substring(p_text1, i, i + 1);
i := i + 1;
}
i := 0;
while (i < size(p_list2)) {
p_list2[i] := substring(p_text2, i, i + 1);
i := i + 1;
}

result.VALUE_LIST1 := p_list1;
result.VALUE_LIST2 := p_list2;
result.VALUE := union(p_list1, p_list2);
}

Czy ten artykuł był pomocny?