TapHome Symbol

Mehrzeilige Skriptsprache mit Syntaxhervorhebung, verwendbar in intelligenten Regeln (Equation, Formula und Script) sowie in Modbus- und Paket-Parser-Schnittstellen.

Beispiel für Syntaxhervorhebung

Grundlagen

Zuordnung

1
Mu := Se + 2;

Mehrzeiliger Algorithmus

Jede Zeile wird durch ein Semikolon getrennt.

1
2
Last := Current;
Current := 0;

Rückgabewert

  • Ergebnis der letzten Codezeile
  • RETURN(expression) stoppt die Ausführung des Algorithmus und gibt den Inhalt in Klammern zurück.
1
2
3
(Co2 > 800) AND (Wind < 10);
equals:
RETURN((CO2 > 800) and (Wind < 10));

Temporäre Variable

Gilt nur für die einzelne Ausführung des Skripts.

1
VAR X := 5;

IF-Klausel

Excel-Stil

1
2
IF(logical_expression, value_if_true, value_if_false);
IF(logical_expression, value_if_true);

Mehrzeilige Form

1
2
3
4
5
6
7
IF X < 5
  RETURN(1);
ELSEIF X > 10
  RETURN(3);
ELSE
  RETURN(0);
END

Switch

Überprüft einen Ausdruck anhand einer Liste von Fällen und gibt den entsprechenden Wert des ersten übereinstimmenden Falls zurück, mit einem Standardwert, falls nichts zutrifft.

1
SWITCH(expression, case1, value1, [case2, ...], [value2, ...], default_value)

Beispiel:

1
2
3
4
5
6
7
8
9
SWITCH( MODBUSR(H, 168, UInt16),
  0, 0,
  0x0002, 1,
  0x0004, 2,
  0x0008, 3,
  0x0010, 4,
  0x0040, 5,
  0x0800, 6,
  NaN)
SWITCH Example

Schleife

LOOP / WHILE … wiederholen eine Reihe von Befehlen basierend auf einer angegebenen Bedingung, bis diese Bedingung nicht mehr erfüllt ist. CONTINUE … überspringt die Ausführung von Befehlen und fährt mit dem nächsten Zyklus fort. BREAK … beendet die Schleife.

Beispiel mit Bedingung am Anfang:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
int i := 10;
while i > 0
    i := i - 1;
    
    if i > 5
        continue;
    else
        break;
    end
loop

Beispiel mit Bedingung am Ende:

1
2
3
4
int i := 10;
do
    i := i + i;
loop while i < 10

NaN-Wert (not a number)

NaN kann als Wert zurückgegeben werden, falls der tatsächliche Wert nicht bekannt ist.

1
2
IF Temperature > 250 
  RETURN(NaN);

Die Funktion ISNAN(expression) gibt TRUE zurück, wenn der Ausdruck keine Zahl ist.

ISNULL

Gibt true zurück, wenn der Parameter NULL ist, andernfalls false. Wird für String- und Bytearray-Typen verwendet. Beispiel: Wenn ein XML-Element nicht gefunden wird, ist der zurückgegebene Wert NULL und ISNULL gibt true zurück.

Die Syntax der Funktion lautet:

1
ISNULL(object)

Sleep

Pausiert das Skript für eine angegebene Millisekundenanzahl. Nur in sehr spezifischen Fällen verwenden.

1
SLEEP(5);

Kommentare

Neue Zeile beginnend mit dem Zeichen #.

1
# Kommentar

Numerische Literale

Hexadezimalzahlen

Ausdrücke können auch Hexadezimalzahlen interpretieren. Das Präfix 0x ist erforderlich, und der Rest ist nicht groß-/kleinschreibungssensibel.

0x0A = 10

1
2
0xA0A0   (41120)
0xa0a0   (41120)

Binärzahlen

0b1010 = 10

1
0b10101010   (170)

Mathematische Ausdrücke

+, -, *, /

1
(20.5 + 9.5) / 2    (15)

Logische Ausdrücke

UND, ODER, !, =, !=, >, <

1
2
(!IsRaining OR (Wind>30))
MultiValueSwitchState != 2 (Not equal to 2)

Funktionen

LINEAR

Gibt einen linear skalierten Wert zurück – lineare Interpolation.

1
LINEAR(input, value1_input, value1_output, value2_input, value2_output, [type])

Parameter

  • input … Eingabewert
  • value1_input … Wert am Eingang am unteren Rand
  • value1_output … Wert am Ausgang am unteren Rand
  • value2_input … Wert am Eingang am oberen Rand
  • value2_output … Wert am Ausgang am oberen Rand
  • [type] … optionaler Parameter. Legt fest, wie das Ergebnis aussehen soll, wenn der Eingabewert außerhalb des Bereichs value1_input ↔︎ value2_input liegt:
    • ohne Parameter (entspricht BOUNDS) … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird der Ausgabewert auf einen der Endwerte (Minimum oder Maximum) gesetzt.
    • INFINITE … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird ein extrapolierter Wert zurückgegeben.
    • STRICT … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird der Ausgabewert NaN (not a number).
LINEAR Function Graph

Beispiele

1
2
3
4
5
Example 1: LINEAR(250,  0,0,  50,500)   (Result is 25°C)

Example 2: LINEAR(Co2,  400,0,  1200,1)
          (If value from Co2 sensor is 400ppm, output for air recovery will be 0%. 
           If Co2 is 1200, output will be 100%. And if e.g. Co2=800, output will be 50%)

Beispiele für verschiedene [type]-Attribute:

  • input = 11
  • value1_input = 0, value1_output = 400
  • value2_input = 10, value2_output = 2000

Ergebnis für verschiedene [type]-Parameter:

  • BOUNDS (Standardwert) = 2000
  • INFINITE = 2160
  • STRICT = NaN

HYSTERESIS

Hysterese kann verwendet werden, um Signale zu filtern, sodass die Ausgabe langsamer reagiert, indem sie die jüngere Systemhistorie berücksichtigt. Zum Beispiel könnte ein Thermostat, der eine Heizung steuert, die Heizung einschalten, wenn die Temperatur unter A fällt, die Heizung aber erst ausschalten, wenn die Temperatur über B steigt.

Gibt 0 oder 1 zurück.

1
HYSTERESIS(value, upper_bound, lower_bound, upper_output, lower_output, last_value)

Beispiel: Halten Sie eine Temperatur von 20 °C mit einer Hysterese von 2 °C. Schalten Sie die Heizung ein, wenn die Temperatur unter 18 °C fällt, und aus, wenn sie 22 °C überschreitet.

1
heater := HYSTERESIS(temperature,   22, 18,   0, 1,   heater);

Mathematische Funktionen

MIN

Die MIN-Funktion gibt das Minimum der angegebenen numerischen Werte zurück. Sie akzeptiert 1 bis 100 Argumente oder eine einzelne Sammlung. NaN- und NULL-Werte werden ignoriert.

1
2
MIN( n1, n2, n3, …)
MIN( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
MIN(40, 80)  		= 40
MIN(2, 2, 6) 		= 2
MIN(80, NAN)		= 80
MIN(NAN, NAN)		= NaN

VAR data := {10, 20, 30}; MIN(data) 	= 10
MIN({1, 2, 3})							= 1
MIN({1, NaN, 3})						= 1

VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
MIN(d1, d2)			... Result is d1

MINSTRICT

Die MINSTRICT-Funktion gibt das Minimum der angegebenen numerischen Werte zurück. Sie akzeptiert 1 bis 100 Argumente oder eine einzelne Sammlung. Wenn irgendein Wert NaN oder NULL ist, gibt die Funktion NaN/NULL zurück.

1
2
MINSTRICT( n1, n2, n3, …)
MINSTRICT( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
MINSTRICT(40, 80)  		= 40
MINSTRICT(2, 2, 6) 		= 2
MINSTRICT(80, NAN)		= NaN
MINSTRICT(NAN, NAN)		= NaN

VAR data := {10, 20, 30}; MINSTRICT(data) 	= 10
MINSTRICT({1, 2, 3})						= 1
MINSTRICT({1, NaN, 3})						= NaN

VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
MINSTRICT(d1, NULL, d2)		... Result is NULL

MAX

Die MAX-Funktion gibt das Maximum der angegebenen numerischen Werte zurück. Sie akzeptiert 1 bis 100 Argumente oder eine einzelne Sammlung. NaN- und NULL-Werte werden ignoriert.

1
2
MAX( n1, n2, n3, …)
MAX( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
MAX(40, 80)  			= 80
MAX(2, 2, 6) 			= 6
MAX(80, NAN)			= 80
MAX(NAN, NAN)			= NaN

VAR data := {10, 20, 30}; MAX(data) = 30
MAX({1, 2, 3})						= 3
MAX({1, NaN, 3})					= 3

VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
MAX(d1, d2)				... Result is d2

MAXSTRICT

Die MAXSTRICT-Funktion gibt das Maximum der angegebenen numerischen Werte zurück. Sie akzeptiert 1 bis 100 Argumente oder eine einzelne Sammlung. Wenn irgendein Wert NaN oder NULL ist, gibt die Funktion NaN/NULL zurück.

1
2
MAXSTRICT( n1, n2, n3, …)
MAXSTRICT( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
MAXSTRICT(40, 80)  			= 80
MAXSTRICT(2, 2, 6) 			= 6
MAXSTRICT(80, NAN)			= NaN
MAXSTRICT(NAN, NAN)			= NaN

VAR data := {10, 20, 30}; MAXSTRICT(data) 	= 30
MAXSTRICT({1, 2, 3})				= 3
MAXSTRICT({1, NaN, 3})				= NaN

VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
MAXSTRICT(d1, NULL, d2)		... Result is NULL

AVG

Die AVG-Funktion berechnet den Durchschnitt (Mittelwert) der angegebenen numerischen Werte. Sie akzeptiert 1 bis 100 Argumente oder eine einzelne Sammlung. NaN-Werte werden ignoriert.

1
2
AVG( n1, n2, n3, …)
AVG( collection )

Beispiele:

1
2
3
4
5
6
7
8
9
AVG(40, 80)  		= 60
AVG(2, 2, 6) 		= 3.3333
AVG(80, NAN)		= 80
AVG(‘a’, ‘c’)		= ‘b’
AVG(NAN, NAN)		= NaN

VAR data := {10, 20, 30}; AVG(data) 	= 20
AVG({1, 2, 3})							= 2
AVG({1, NaN, 3})						= 2

AVGSTRICT

Die AVGSTRICT-Funktion berechnet den Durchschnitt (Mittelwert) der angegebenen numerischen Werte. Sie akzeptiert 1 bis 100 Argumente oder eine einzelne Sammlung. Wenn irgendein Wert keine Zahl ist, gibt die Funktion NaN zurück.

1
2
AVGSTRICT( n1, n2, n3, …)
AVGSTRICT( collection )

Beispiele:

1
2
3
4
5
6
7
8
AVGSTRICT(40, 80)  		= 60
AVGSTRICT(2, 2, 6) 		= 3.3333
AVGSTRICT(80, NAN)		= NaN
AVGSTRICT(NAN, NAN)		= NaN

VAR data := {10, 20, 30}; AVGSTRICT(data) 	= 20
AVGSTRICT({1, 2, 3})						= 2
AVGSTRICT({1, NaN, 3})						= NaN

ROUND

1
ROUND(value1)    

Gibt den gerundeten Wert zurück.

1
2
3
4
Beispiel 1: ROUND(2.01)   (Ergebnis ist 2)
Beispiel 2: ROUND(2.49)   (Ergebnis ist 2)
Beispiel 3: ROUND(2.5)    (Ergebnis ist 3)
Beispiel 4: ROUND(2.99)   (Ergebnis ist 3)

ABS

Die ABS-Funktion gibt den absoluten Wert (d. h. Betrag) einer Zahl zurück.

1
ABS(number)

Beispiele:

1
2
ABS(100)  ...   100
ABS(-100)   ...   100

DEWPOINT

1
DEWPOINT(temperature, relativeHumidity)

Gibt den Taupunkt der aktuellen Temperatur und relativen Luftfeuchtigkeit zurück. Der Taupunkt wird gemäß dieser Gleichung berechnet.

1
2
Beispiel 1: DEWPOINT(20, 0.50) (Ergebnis ca. 9.26)
Beispiel 2: DEWPOINT(0, 1.00) (Ergebnis 0)

POWER

Die POWER-Funktion berechnet eine gegebene Zahl, potenziert mit einem vorgegebenen Exponenten.

1
POWER(number, power)

Beispiele:

  • POWER(2,3) … 2^3 = 8
  • POWER(10, -3) … 0,001
  • POWER(25, 0) … 1

MOD

Die MOD-Funktion gibt den Rest einer Division zweier Zahlen zurück.

1
MOD(number, divisor)

Argumente:

  • number – Die zu teilende Zahl.
  • divisor – Der Wert, durch den die Zahl geteilt wird.

Beispiele:

  • MOD(6, 4)  … 2
  • MOD(6, 2.5) … 1

CEIL

Die CEIL-Funktion rundet eine gegebene Zahl vom Betrag her auf das nächste Vielfache einer gegebenen Zahl auf.

1
CEIL(number, significance)

Argumente:

  • number – Die zu rundende Zahl.
  • significance (optional) – Das Vielfache, auf das die Zahl gerundet werden soll. Falls keine Signifikanz angegeben ist, gilt 1. (Sie sollte grundsätzlich das gleiche arithmetische Vorzeichen – positiv oder negativ – wie das Eingabeargument haben.)

Beispiele:

  • CEIL(22.25,0.1) … 22.3
  • CEIL(22.25,1) … 23
  • CEIL(22.25) … 23
  • CEIL(-22.25,-1) … -23
  • CEIL(-22.25,1) … -22
  • CEIL(-22.25) … -22
  • CEIL(-22.25,-5) … -25

FLOOR

Die FLOOR-Funktion rundet eine gegebene Zahl vom Betrag her auf das nächste Vielfache eines angegebenen Werts ab.

1
FLOOR(number, significance)

Argumente:

  • number – Die zu rundende Zahl.
  • significance (optional) – Das Vielfache, auf das die Zahl gerundet werden soll. Falls die Signifikanz nicht angegeben wird, gilt 1. (Sie sollte grundsätzlich das gleiche arithmetische Vorzeichen – positiv oder negativ – wie das Eingabeargument haben.)

Beispiele:

  • FLOOR(22.25,0.1)… 22.2
  • FLOOR(22.25,1) … 22
  • FLOOR(22.25) … 22
  • FLOOR(-22.25,-1) … -22
  • FLOOR(-22.25,1) … -23
  • FLOOR(-22.25) … -23
  • FLOOR(-22.25,-5) … -20

RAND

Die RAND-Funktion generiert eine Zufallszahl zwischen 0 und 1.

1
RAND()

Beispiele:

  • RAND()

RANDINT

Die RANDINT-Funktion erzeugt eine zufällige Ganzzahl zwischen zwei angegebenen Ganzzahlen.

1
RANDINT(bottom, top)

Beispiele:

  • RANDINT(1,5)
  • RANDINT(-2,2)

SIGN

Die SIGN-Funktion gibt das arithmetische Vorzeichen (+1, -1 oder 0) einer Zahl zurück. D. h. ist die Zahl positiv, gibt SIGN +1 zurück, ist sie negativ, -1, und wenn sie 0 ist, 0.

1
SIGN(number)

Beispiele:

  • SIGN(100) … 1
  • SIGN(0) … 0
  • SIGN(-100) … -1

SQRT

Die SQRT-Funktion berechnet die positive Quadratwurzel einer Zahl.

1
SQRT(number)

Beispiele:

  • SQRT(25) … 5

LOG

Die LOG-Funktion berechnet den Logarithmus einer gegebenen Zahl zu einer angegebenen Basis.

1
LOG(number, base)

Argumente:

  • number – Die positive reelle Zahl, deren Logarithmus berechnet werden soll.
  • base (optional) – Ein optionaler Parameter, der die Basis angibt, zu der der Logarithmus berechnet werden soll. Wenn der Parameter nicht angegeben wird, gilt die Standardbasis 10.

Beispiele:

  • LOG(4,0.5) … -2
  • LOG(100) … 2

LN

Die LN-Funktion berechnet den natürlichen Logarithmus einer gegebenen Zahl.

1
LN(number)

wobei der Zahlenparameter die positive reelle Zahl ist, deren natürlicher Logarithmus berechnet werden soll.

Beispiele:

  • LN(100) … 4,60517

Bit-Operationen

GETBIT

Gibt den Wert eines Bits an einer bestimmten Position zurück.

1
GETBIT(number, bit_position)

Argumente:

  • number – Zahl, aus der das Bit extrahiert werden soll
  • bit_position – Position des Bits, beginnend bei 0, von rechts

Beispiele:

  • GETBIT(2, 0) → erstes Bit der Zahl 2 (0b0010) ist 0
  • GETBIT(4,2) → drittes Bit der Zahl 4 (0b0100) ist 1

GETBITS

Gibt den Wert der angegebenen Anzahl Bits an der angegebenen Position zurück.

1
GETBITS(number, start_bit, number_of_bits)

Beispiele:

  • GETBITS(216, 3, 2) → Zahl 216 = 0b1101 1000; Wert des 4. Bits von rechts ist 1, das 5. Bit ist 1, daher ergibt sich 0b0011 = 3
  • GETBITS(0xFF, 0, 4) → Zahl 0xFF = 255 = 0b1111 1111; Wert der ersten 4 Bits von rechts ist 0b1111 = 0xF = 15

GETBYTE

Gibt den Wert eines Bytes an der angegebenen Stelle zurück.

1
GETBYTE( number, byte_position )

Argumente:

  • number – Zahl, aus der das Byte extrahiert wird
  • byte_position – Position des Bytes, beginnend bei 0, von rechts

Beispiele:

1
2
3
GETBYTE(256, 0)  →  0001 0000 0000 →  0
GETBYTE(256, 1)   →  0001 0000 0000  →  1
GETBYTE(259, 0)   →  0001 0000 0011   →  3

SETBYTE

Weist dem angegebenen Byte der bereitgestellten Zahl einen neuen Wert zu und gibt die neue Zahl zurück.

1
SETBYTE( number, byte_position, new_value )

Beispiele:

1
2
3
4
SETBYTE(1, 0, 0)   →   0
SETBYTE(256, 0, 255)   →   511
SETBYTE(256, 1, 1)	  →   256
SETBYTE(259, 1, 2)	  →   515

SETBIT

Weist dem angegebenen Bit der Zahl einen neuen Wert zu und gibt eine neue Zahl zurück.

1
SETBIT(number, bit_position, new_value)

Argumente:

  • number – zu bearbeitende Zahl
  • bit_position – Position des Bits, beginnend bei 0, von rechts
  • new_value – 0 oder 1 – Wert, der dem angegebenen Bit zugewiesen wird

Beispiele:

  • SETBIT(1, 1, 1) → 3
  • SETBIT(3, 1, 1) → 3
  • SETBIT(4, 2, 0) → 4
  • SETBIT(12, 1, 0) → 14

SETBITS

Weist dem angegebenen Bitbereich in der bereitgestellten Zahl einen neuen Wert zu und gibt eine neue Zahl zurück.

1
SETBITS(number, start_bit, number_of_bits, new_value)

Beispiele:

  • SETBITS(192, 4, 2, 3) → 240
  • SETBITS(192, 5, 2, 3) → 224

«   (LEFT BIT SHIFT)

1
8 << 2   (32)

Excel: BITLSHIFT(number, shift_amount)

» (RIGHT BIT SHIFT)

1
32 >> 2   (8)

Excel: BITRSHIFT(number, shift_amount)

& (BITWEISES AND)

1
3 & 1   (1)

Excel: BITAND(number1, number2)

| (BITWEISES OR)

1
2 | 1 (3)

Excel: BITOR(number1, number2)

Siehe das Beispiel zu Bit-Operationen in Google Sheets: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing

Oder probieren Sie das interaktive Tool unter http://bitwisecmd.com/

Text, Zeichenkette und Byte-Array

LENGTH

Gibt die Länge eines Objekts oder die Anzahl der Bytes zurück. Das Objekt kann eine Zahl, ein boolescher Wert, eine Zeichenkette oder eine Sammlung sein.

1
LENGTH( object )

Beispiele:

1
2
3
4
LENGTH(“Hello World”)			(Result is 11)
LENGTH(“40”)				(Result is 2)
LENGTH(40)					(Result is 8)
LENGTH(BYTECOLLECTION(“010203”))	(Result is 3)

BYTECOLLECTION

Erstellt eine Collection aus angegebenen hexadezimalen Werten.

1
BYTECOLLECTION( bytes )

Beispiele:

1
2
BYTECOLLECTION(“010203”) 				(Result is Collection<UInt8> {01, 02, 03})
BYTECOLLECTION(“aa, be1-1,fe”) 			(Result is Collection<UInt8> {aa be 11 fe})

INDEXOF

Gibt den Index eines angegebenen Elements in einer Zeichenkette oder einer Sammlung zurück. Gibt -1 zurück, wenn das Element nicht gefunden wird.

1
INDEXOF( string/collection, element )

Beispiele:

1
2
3
4
5
6
INDEXOF("Hello", “H”)					(Result is 0)
INDEXOF("Hello World", “Wor”)				(Result is 6)
INDEXOF("Hello World", “Wor”)				(Result is 6)
INDEXOF("Hello World", “or12”)				(Result is -1)
INDEXOF(BYTECOLLECTION("ab cd ee ff 01 02"), 2)	(Result is 5)
INDEXOF({1, 2, 3}, 3)						(Result is 2)

COPY

Kopiert eine angegebene Zeichenkette oder Sammlung (oder deren Teil).

1
COPY( string/collection, startIndex, length)

Beispiele:

1
2
3
4
5
COPY("Hello")					(Result is “Hello”)
COPY("Hello World", 2)				(Result is “llo World”)
COPY("Hello World", 2, 4)				(Result is “llo ”)
COPY(BYTEARRAY("01020304"))			(Result is byte array 01020304)
COPY(BYTEARRAY("01020304", 2, 1))		(Result is byte array 03)

REPLACE

Gibt eine neue Zeichenkette oder Sammlung zurück, in der alle Vorkommen des angegebenen Werts durch den neuen Wert ersetzt werden.

1
REPLACE( string/collection, oldValue, newValue)

Beispiele:

1
2
3
REPLACE("Hello", “l”, “”)				(Result is “Heo”)
REPLACE("Hello", “lo”, “22”)			(Result is “Hel22”)
REPLACE(BYTECOLLECTION(“050607”), 5, 9)	(Result is Collection<UInt8>{09, 06, 07})

SPLIT

Teilt eine Zeichenkette in Substrings anhand der Trennzeichen.

1
2
3
4
SPLIT( string, string )
SPLIT( string, char )
SPLIT( string, Collection<string> )
SPLIT( string, Collection<char> )

Beispiele:

1
2
3
SPLIT("1;2;3;4", “;”)			(Result is Collection<String>{“1”, “2”, “3”, “4”})
SPLIT("1;2;3.4", “2;”)		(Result is Collection<String>{“1;”, “3.4”})
SPLIT("1;2;3.4", {“2”, “3.”})		(Result is Collection<String>{“1;”, “;”, “4”})

COMPARE

Vergleicht zwei Zeichenketten und gibt eine Ganzzahl zurück, die ihre relative Position in der Sortierreihenfolge angibt.

1
COMPARE( string, string, CompareOptions )

Beispiele:

1
2
3
COMPARE("abc", “abc”)						(Result is 0)
COMPARE("abc", “ABC”)						(Result is 32)
COMPARE("abc", “ABC”, CompareOptions.IgnoreCase)	(Result is 0)

APPEND

Fügt einem Sammlungs- oder Zeichenkettenwert einen neuen Wert hinzu und gibt das neue Objekt mit dem angehängten Wert zurück.

1
2
APPEND( string, string )
APPEND( Collection, value )

Beispiele:

1
2
APPEND({1, 2}, 3)     (Result is Collection<Double>{1, 2, 3})
APPEND("abc", “def”)  (Result is “abcdef”)

INSERT

Fügt einen Wert in eine Sammlung oder Zeichenkette ein. Gibt die Sammlung oder Zeichenkette mit dem eingefügten Wert zurück.

1
2
INSERT( collection, index, value )
INSERT( string, index, value )

Beispiele:

1
2
3
INSERT(“Hello”, 5, “ World”)      (Result is “Hello World”)
INSERT(“Hello”, 1, “i”)			  (Result is “Hiello”)
INSERT({1, 2, 4}, 2, 3)			  (Result is Collection<Double>{1, 2, 3, 4})

REMOVEAT

Entfernt Elemente aus einer Sammlung oder Zeichenkette basierend auf dem Elementindex und der Länge. Gibt die Sammlung oder Zeichenkette ohne die angegebenen Elemente zurück.

1
2
REMOVEAT( collection, index, length )
REMOVEAT( string, index, length )

Beispiele:

1
2
3
4
REMOVEAT(“Hello”, 1)			(Result is “Hllo”)
REMOVEAT(“Hello”, 3, 2)			(Result is “Ho”)
REMOVEAT({1, 2, 3, 4}, 2)			(Result is Collection<Double>{1, 2, 4})
REMOVEAT({1, 2, 3, 4}, 2, 2)		(Result is Collection<Double>{1, 2})

GETAT

Gibt das Element aus einer Sammlung oder Zeichenkette anhand des angegebenen Index zurück.

1
2
GETAT( collection, index )
GETAT( string, index )

Beispiele:

1
2
GETAT(“Hello”, 2)			(Result is “l”)
GETAT({1, 2, 4}, 2)			(Result is 4)

SETAT

Setzt den Wert eines Elements in einer Sammlung oder Zeichenkette am angegebenen Index.

1
2
SETAT( collection, index, value )
SETAT( string, index, value )

Beispiele:

1
2
3
SETAT(“Hello”, 1, “a”)          (Result is “Hallo”)
SETAT(“Hello”, 4, “o World”)    (Result is “Hello World”)
SETAT({1, 2, 4}, 2, 3)          (Result is Collection<Double>{1, 2, 3})

ENCODE

Kodiert eine angegebene Zeichenkette in eines der Formate und gibt die neue Zeichenkette zurück.

1
ENCODE( string, format )

Unterstützte Formate:

  • XML
  • Base64

Beispiele:

1
2
3
ENCODE("Hello", “xml”)				(Result is “Hello”)
ENCODE("<Hello id=1>", “xml”)		(Result is “&lt;Hello id=1&gt;”)
ENCODE("Hello", “base64”)			(Result is “SGVsbG8=”)

DECODE

Decodiert eine angegebene Zeichenkette mithilfe eines der Formate und gibt die neue Zeichenkette zurück.

1
DECODE( string, format )

Unterstützte Formate:

  • XML
  • Base64

Beispiele:

1
2
3
DECODE("Hello", “xml”)				  (Result is “Hello”)
DECODE("&lt;Hello id=1&gt;", “xml”)   (Result is “<Hello id=1>”)
DECODE("SGVsbG8=", “base64”)		  (Result is “Hello”)

EQUALS

Vergleicht zwei Fließkommazahlen. Die Zahlen gelten als gleich, wenn | n1 - n2 | < epsilon. Der Standardwert des Schwellenwerts (epsilon) ist 0,005 und er ist optional.

1
EQUALS( number1, number2, epsilon=0.005 )

Beispiele:

1
2
3
4
5
EQUALS(1.33, 1.33)          1.0 (true)
EQUALS(1.333, 1.3335)		1.0 (true)
EQUALS(1.333, 1.338)		1.0 (false)
EQUALS(1.333, 1.338, 0.01)	1.0 (true)
EQUALS(NAN, NAN)		    1.0 (true)

Sortierung

Es gibt mehrere ORDER-Varianten:

Aufsteigend

  • ORDER, ORDERSTRICT
  • ORDERINDEX, ORDERINDEXSTRICT

Absteigend

  • ORDERDESC, ORDERDESCSTRICT
  • ORDERINDEXDESC, ORDERINDEXDESCSTRICT

ORDER

Die ORDER-Funktion sortiert die bereitgestellten Eingabewerte aufsteigend und gibt sie in einer neuen Sammlung zurück. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein (z. B. Zahlen, TIMESPAN, DATETIME, Zeichenketten). Mischtypen (z. B. Zahlen und Zeichenketten) sind nicht erlaubt. NaN- und NULL-Werte werden ignoriert und aus der zurückgegebenen Sammlung ausgeschlossen.

1
2
ORDER( n1, n2, n3 , … )
ORDER( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDER(3, 1, 2)				= {1, 2, 3}
ORDER(1)					= {1}
ORDER(3, NaN, 2, NaN)		= {2, 3}
ORDER(NaN)					= {}
ORDER('Z', 'a', 'X')				= {'X', 'Z', 'a'}
ORDER(“str1”, “STR2”, “stR1”) 		= {"STR2", "stR1", "str1"}
ORDER(“str1”, NULL, “STR2”, “stR1”) = {"STR2", "stR1", "str1"}

ORDER(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {TIMESPAN(0,0,0,0,99), TIMESPAN(0,0,0,0,100)}
ORDER(NULL, TIMESPAN(0,0,0,0,99))					= {TIMESPAN(0,0,0,0,99)}

ORDERINDEX

Die ORDERINDEX-Funktion sortiert die bereitgestellten Eingabewerte aufsteigend, ähnlich wie ORDER. Statt der sortierten Werte wird jedoch eine Sammlung von Indizes zurückgegeben, die die Positionen der ursprünglichen Werte in der sortierten Reihenfolge anzeigen. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden ignoriert und aus der zurückgegebenen Sammlung ausgeschlossen.

1
2
ORDERINDEX( n1, n2, n3 , … )
ORDERINDEX( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERINDEX(3, 1, 2)				= {1, 2, 0}
ORDERINDEX(1)					= {0}
ORDERINDEX(3, NaN, 2, NaN)		= {2, 0}
ORDERINDEX(NaN)					= {}
ORDERINDEX('Z', 'a', 'X')				= {2, 0, 1}
ORDERINDEX(“str1”, “STR2”, “stR1”) 		= {1, 2, 0}
ORDERINDEX(“str1”, NULL, “STR2”, “stR1”) = {2, 3, 0}

ORDERINDEX(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {1, 0}
ORDERINDEX(NULL, TIMESPAN(0,0,0,0,99))					= {1}

ORDERSTRICT

Die ORDERSTRICT-Funktion sortiert die bereitgestellten Eingabewerte aufsteigend und gibt sie in einer neuen Sammlung zurück. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden eingeschlossen und immer zuerst im Ergebnis sortiert.

1
2
ORDERSTRICT( n1, n2, n3 , … )
ORDERSTRICT( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERSTRICT(3, 1, 2)			= {1, 2, 3}
ORDERSTRICT(1)					= {1}
ORDERSTRICT(3, NaN, 2, NaN)		= {NaN, NaN, 2, 3}
ORDERSTRICT(NaN)				= {NaN}
ORDERSTRICT('Z', 'a', 'X')		= {'X', 'Z', 'a'}
ORDERSTRICT(“str1”, “STR2”, “stR1”) 		= {"STR2", "stR1", "str1"}
ORDERSTRICT(“str1”, NULL, “STR2”, “stR1”)	= {NULL, "STR2", "stR1", "str1"}

ORDERSTRICT(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {TIMESPAN(0,0,0,0,99), TIMESPAN(0,0,0,0,100)}
ORDERSTRICT(NULL, TIMESPAN(0,0,0,0,99))					= {NULL, TIMESPAN(0,0,0,0,99)}

ORDERINDEXSTRICT

Die ORDERINDEXSTRICT-Funktion sortiert die bereitgestellten Eingabewerte aufsteigend, ähnlich wie ORDERSTRICT. Anstelle der sortierten Werte wird jedoch eine Sammlung von Indizes zurückgegeben, die die Positionen der ursprünglichen Werte in der sortierten Reihenfolge anzeigen. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden eingeschlossen und immer zuerst im Ergebnis sortiert.

1
2
ORDERINDEXSTRICT( n1, n2, n3 , … )
ORDERINDEXSTRICT( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERINDEXSTRICT(3, 1, 2)				= {1, 2, 0}
ORDERINDEXSTRICT(1)						= {0}
ORDERINDEXSTRICT(3, NaN, 2, NaN)		= {1, 3, 2, 0}
ORDERINDEXSTRICT(NaN)					= {0}
ORDERINDEXSTRICT('Z', 'a', 'X')			= {2, 0, 1}
ORDERINDEXSTRICT(“str1”, “STR2”, “stR1”)			= {1, 2, 0}
ORDERINDEXSTRICT(“str1”, NULL, “STR2”, “stR1”) 	= {1, 2, 3, 0}

ORDERINDEXSTRICT(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {1, 0}
ORDERINDEXSTRICT(NULL, TIMESPAN(0,0,0,0,99))						= {0, 1}

ORDERDESC

Die ORDERDESC-Funktion sortiert die bereitgestellten Eingabewerte absteigend und gibt sie in einer neuen Sammlung zurück. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden ignoriert und aus der zurückgegebenen Sammlung ausgeschlossen.

1
2
ORDERDESC( n1, n2, n3 , … )
ORDERDESC( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERDESC(3, 1, 2)					= {3, 2, 1}
ORDERDESC(1)						= {1}
ORDERDESC(3, NaN, 2, NaN)			= {3, 2}
ORDERDESC(NaN)						= {}
ORDERDESC('Z', 'a', 'X')			= {'a', 'Z', 'X'}
ORDERDESC(“str1”, “STR2”, “stR1”) 	= {"str1", "stR1", "STR2"}
ORDERDESC(“str1”, NULL, “STR2”, “stR1”) 	= {"str1", "stR1", "STR2"}

ORDERDESC(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99)}
ORDERDESC(NULL, TIMESPAN(0,0,0,0,99))					= {TIMESPAN(0,0,0,0,99)}

ORDERINDEXDESC

Die ORDERINDEXDESC-Funktion sortiert die bereitgestellten Eingabewerte absteigend, ähnlich wie ORDERDESC. Anstelle der sortierten Werte wird jedoch eine Sammlung von Indizes zurückgegeben, die die Positionen der ursprünglichen Werte in der sortierten Reihenfolge anzeigen. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden ignoriert und aus der zurückgegebenen Sammlung ausgeschlossen.

1
2
ORDERINDEXDESC( n1, n2, n3 , … )
ORDERINDEXDESC( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERINDEXDESC(3, 1, 2)				= {0, 2, 1}
ORDERINDEXDESC(1)					= {0}
ORDERINDEXDESC(3, NaN, 2)			= {0, 2}
ORDERINDEXDESC(NaN)					= {}
ORDERINDEXDESC('Z', 'a', 'X')			= {1, 0, 2}
ORDERINDEXDESC(“str1”, “STR2”, “stR1”) 	= {0, 2, 1}
ORDERINDEXDESC(“str1”, NULL, “STR2”, “stR1”) 	= {0, 3, 2}

ORDERINDEXDESC(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {0, 1}
ORDERINDEXDESC(NULL, TIMESPAN(0,0,0,0,99))					= {1}

ORDERDESCSTRICT

Die ORDERDESCSTRICT-Funktion sortiert die bereitgestellten Eingabewerte absteigend und gibt sie in einer neuen Sammlung zurück. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden eingeschlossen und immer zuerst im Ergebnis sortiert.

1
2
ORDERDESCSTRICT( n1, n2, n3 , … )
ORDERDESCSTRICT( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERDESCSTRICT(3, 1, 2)			= {3, 2, 1}
ORDERDESCSTRICT(1)					= {1}
ORDERDESCSTRICT(3, NaN, 2, NaN)		= {NaN, NaN, 3, 2}
ORDERDESCSTRICT(NaN)				= {NaN}
ORDERDESCSTRICT('Z', 'a', 'X')					= {'a', 'Z', 'X'}
ORDERDESCSTRICT(“str1”, “STR2”, “stR1”) 		= {"str1", "stR1", "STR2"}
ORDERDESCSTRICT(“str1”, NULL, “STR2”, “stR1”) 	= {NULL, "str1", "stR1", "STR2"}

ORDERDESCSTRICT(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99)}
ORDERDESCSTRICT(NULL, TIMESPAN(0,0,0,0,99))					= {NULL, TIMESPAN(0,0,0,0,99)}

ORDERINDEXDESCSTRICT

Die ORDERINDEXDESCSTRICT-Funktion sortiert die bereitgestellten Eingabewerte absteigend, ähnlich wie ORDERDESCSTRICT. Anstelle der sortierten Werte wird jedoch eine Sammlung von Indizes zurückgegeben, die die Positionen der ursprünglichen Werte in der sortierten Reihenfolge anzeigen. Sie akzeptiert n Werte (bis zu 100 Argumente) oder eine einzelne Sammlung. Werte müssen nicht numerisch sein, aber sie müssen vergleichbar sein. Mischtypen sind nicht erlaubt. NaN- und NULL-Werte werden eingeschlossen und immer zuerst im Ergebnis sortiert.

1
2
ORDERINDEXDESCSTRICT( n1, n2, n3 , … )
ORDERINDEXDESCSTRICT( collection )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ORDERINDEXDESCSTRICT(3, 1, 2)				= {0, 2, 1}
ORDERINDEXDESCSTRICT(1)						= {0}
ORDERINDEXDESCSTRICT(3, NaN, 2, NaN)		= {1, 3, 0, 2}
ORDERINDEXDESCSTRICT(NaN)					= {0}
ORDERINDEXDESCSTRICT('Z', 'a', 'X')			= {1, 0, 2}
ORDERINDEXDESCSTRICT(“str1”, “STR2”, “stR1”)	= {0, 2, 1}
ORDERINDEXDESCSTRICT(“str1”, NULL, “STR2”, “stR1”) 	= {1, 0, 3, 2}

ORDERINDEXDESCSTRICT(TIMESPAN(0,0,0,0,100), TIMESPAN(0,0,0,0,99))	= {0, 1}
ORDERINDEXDESCSTRICT(NULL, TIMESPAN(0,0,0,0,99))						= {0, 1}

Datum und Zeit

DATETIME

Erzeugt ein DateTime-Objekt. Die Eigenschaft DateTime.Ticks gibt die Anzahl der Millisekunden seit dem 01.01.0001 00:00:00.000 an. DateTime verfügt über die Eigenschaften: TICKS, YEAR, MONTH, DAY, DAYOFWEEK, DAYOFYEAR, HOUR, MINUTE, SECOND, MILLISECOND, KIND, UTCDATETIME, LOCALDATETIME, UNIXTIME.

1
2
3
4
DATETIME( ticks, DateTimeKind )
DATETIME( string, format )
DATETIME( string, DateTimeKind )
DATETIME( year, month, day, hour, minute, second, millisecond, DateTimeKind  )

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
VAR date:= DATETIME(2014, 12, 8, 23, 54, 12, 456);
VAR date:= DATETIME(2014, 12, 8, 23, 54, 12, 456, DateTimeKind.Local);
VAR date:= DATETIME(2014, 12, 8, 23, 54, 12, 456, DateTimeKind.Utc);
VAR date:= DATETIME("13:36");
VAR date:= DATETIME("2022-08-03T07:39:03.688133+05:00");
VAR date:= DATETIME("03.01 2008 10:00"); 
VAR date:= DATETIME("mar.01 2008 10:00");
VAR date:= DATETIME("03.01 2008 10:00", "dd.MM yyyy hh:mm");
VAR date:= DATETIME(518832000);
VAR date:= DATETIME(518832000, DateTimeKind.Utc);
VAR date := NOW(); date.YEAR := 1999;
DATETIME date; date.UNIXTIME := 123456;

NOW

Gibt ein DateTime-Objekt zurück, das auf das aktuelle Datum und die aktuelle Uhrzeit in der lokalen Zeitzone eingestellt ist.

1
NOW()

Beispiele:

1
VAR now := NOW();

TIMESPAN

Die TIMESPAN-Funktion erstellt eine Variable, die eine Zeitdauer darstellt, angegeben in Tagen, Stunden, Minuten, Sekunden und Millisekunden. TIMESPAN hat Eigenschaften, um auf jede Komponente der Zeitspanne direkt zuzugreifen: DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS. TIMESPAN hat außerdem Eigenschaften, um auf den Gesamtwert der Zeit in bestimmten Einheiten zuzugreifen (einschließlich Bruchteilen): TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDS.

1
TIMESPAN( days, hours, minutes, seconds, milliseconds )

Beispiele:

1
2
3
4
VAR t := TimeSpan(1, 2, 3, 4, 0);
	t.TOTALSECONDS			

Result ... 93784

LOCALTIMEZONE

Gibt die lokale Zeitzone als Anzahl Millisekunden Differenz zur UTC-Zeit zurück.

1
LOCALTIMEZONE()

Beispiele:

1
VAR timezoneDiff := LOCALTIMEZONE();

DATETIMEADD

Addiert eine angegebene Anzahl von Jahren, Monaten, Tagen, Stunden, Minuten, Sekunden und Millisekunden zu einem bestehenden DateTime-Wert und gibt ein neues DateTime zurück.

1
DATETIMEADD(datetime, years, months, days, hours, minutes, seconds, milliseconds)

Beispiele:

1
VAR dt := NOW(); VAR yearBefore := DATETIMEADD(dt, -1);

Datentyp-Konvertierungen

TODOUBLE

Wandelt einen String in eine Zahl um. Gibt NaN bei Fehler zurück.

1
TODOUBLE( text )

Beispiele:

1
2
3
TODOUBLE(“232”) ... 232
TODOUBLE(“-192.332”)  ...  -192.332
TODOUBLE(“some text”)  ...  NaN

TOSTRING

Gibt einen String-Wert des angegebenen Werts oder der Collection gemäß der angegebenen Kodierung zurück. Die Kodierung ist optional (Standard ist iso-8859-1).

1
TOSTRING(value, encoding)

Beispiele:

1
2
3
4
TOSTRING(192, “X”)  …  Result = “C0”
TOSTRING(192, “X4”)  …  Result = “00C0”
TOSTRING(192, “F4”)  …  Result = “123.3400”
TOSTRING(192, “F0”)  …  Result = “123”
1
2
3
TOSTRING(BYTECOLLECTION("48656c6c6f"))			(Result is “Hello”)
TOSTRING(BYTECOLLECTION(\"48656c6c6f\"), “iso-8859-1”)	(Result is “Hello”)
TOSTRING(192, “X4”)							(Result is “00C0”)

TOBCD

Konvertiert die angegebene Zahl in das binär codierte Dezimalformat (BCD). Das Kodierungsschema ist BCD-8421.

1
TOBCD(number)

Beispiele:

1
2
3
TOBCD(1)  ...  1
TOBCD(9)  ...  9
TOBCD(10)  ...  16

FROMBCD

Dekodiert die angegebene Zahl, die im binär codierten Dezimalformat (BCD) kodiert ist. Das Kodierungsschema ist BCD-8421.

1
FROMBCD(number)

Beispiele:

1
2
FROMBCD(16)  ...  10
FROMBCD(32)  ...  20

TOBYTEARRAY

Konvertiert eine Zeichenkette in ein Byte-Array gemäß der angegebenen Kodierung. Die Kodierung ist optional (Standard ist iso-8859-1).

1
TOBYTEARRAY( string, encoding )

Beispiele:

1
TOBYTEARRAY("Hello")			(Result is byte array 48656c6c6f)

RGBTOHSV

Wandelt RGB-Farbdefinitionen um und gibt die Farbe im Farbmodell Hue/Saturation/Brightness zurück.

1
RGBTOHSV( r, g, b )      (r, g, b … 0 - 0xFF)

Beispiel:

1
2
3
4
VAR HSVColor := RGBTOHSV( r, g, b );
VAR saturation := HSVColor.Saturation;   (Saturation … 0 - 1)
VAR hue := HSVColor.Hue;                 (Hue … 0 - 360)
VAR value := HSVColor.Value;             (Value … 0 - 1)

HSVTORGB

Konvertiert eine Farbe, die durch Hue/Saturation/Brightness definiert ist, und gibt die Farbe im RGB-Format zurück.

1
HSVTORGB( hue, saturation, value )

Beispiel:

1
2
3
4
VAR color := HSVTORGB( hue, saturation, 1)
VAR red := color.red;                   (red … 0 - 0xFF)
VAR green := color.green;               (green … 0 - 0xFF)
VAR blue := color.blue;                 (blue … 0 - 0xFF)

Parsing-Funktionen

PARSETEXT

Gibt einen Teil des Eingabetexts zurück, basierend auf linken und rechten Suchmustern.

1
PARSETEXT( input, left_pattern, right_pattern)

Beispiele:

1
2
3
4
5
6
7
PARSETEXT(“Lorem ipsum dolor sit amet”, “ipsum”, “amet”) (Result is “dolor sit”)
PARSETEXT(“<temp>12.2</temp>”, “<temp>”, “</temp”) (Result is 12.2)
PARSETEXT(“<temp>12.2</temp>”, “<temp>”) (Result is 12.2)
PARSETEXT(“status:ok,error:none”, “status:”) (Result is “ok”)
PARSETEXT(“Lorem ipsum dolor sit amet”, “ipsum”) (Result is “dolor”)
PARSETEXT(“Lorem ipsum dolor sit amet”, “ipsum…sit”) (Result is “amet”)
PARSETEXT(“Lorem ipsum dolor sit amet consectetur adipiscing”, “ipsum…sit”, “adipiscing”) (Result is “amet consectetur”)

PARSEJSON

Gibt den Wert eines Elements aus einem JSON-formatierten String zurück. Das Element wird mit dem JSON-Pfad angegeben.

1
PARSEJSON( json_string, json_path, ignore_error)

Beispiele:

Mit json =

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "firstName": "John",
  "lastName" : "doe",
  "age" : 26,
  "address"  : {
    "streetAddress": "naist street",
    "city"         : "Nara",
    "postalCode"   : "630-0192"
  }
}
1
2
3
4
5
PARSEJSON(json, “firstName”)			(Result is “John”)
PARSEJSON(json, “address.city”)		(Result is “Nara”)
PARSEJSON(json, “address.country”)		(error)
PARSEJSON(json, “address.country”, 0)		(error)
PARSEJSON(json, “address.city”, 1)		(Result is null)

PARSEXML

Gibt den Wert eines Elements aus einer XML-Zeichenkette zurück. Das Element wird mit dem XML-Pfad angegeben.

1
PARSEXML( xml_string, xml_path)

Beispiele:

Mit xml =

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0"?>
<catalog>
	<book id="bk101">
		<author>Gambardella, Matthew</author>
		<title>XML Developer's Guide</title>
		<genre>Computer</genre>
		<price>44.95</price>
		<publish_date>2000-10-01</publish_date>
		<description>An in-depth look at creating...</description>
	</book>
	<book id="bk102">
		<author>Ralls, Kim</author>
		<title>Midnight Rain</title>
		<genre>Fantasy</genre>
		<price>5.95</price>
		<publish_date>2000-12-16</publish_date>
		<description>A former architect battles…</description>
	</book>
</catalog>
1
2
3
4
PARSEXML(xml, "//catalog/book[1]/price") (Result is 44.95)
PARSEXML(xml, "//book[2]/title") (Result is "Midnight Rain")
PARSEXML(xml, "//book[1]/@id") (Result is "bk101")
PARSEXML(xml, "//catalog/magazine[1]/price") (Result is null)

Wenn XML Namensräume enthält, müssen Sie Elementnamen vollständig mit dem Namespace angeben, z. B. PARSEXML(xml, “//DIDL-Lite:container[dc:title=‘My Playlist’’]/DIDL-Lite:res”);

Paket-Parser

Für weitere Informationen siehe die Seite zum Paket-Parser

SENDHTTPREQUEST

SENDDATA

MQTTPUBLISH

FTPDOWNLOAD

FTPUPLOAD

COMPLETESERVICEATTRIBUTE

COMPLETESERVICEACTION

Modbus

Modbus

Ausführliche Informationen zur Modbus-Konfiguration.