Funktionen - Aps.Function

Die unter diesem Kapitel beschriebenen Funktionen könnten auch als "Expression-Funktionen" bezeichnet werden. Sie stehen generell zur Verfügung und können deshalb jederzeit und überall in einem F-Script genutzt werden.
Wenn in der nachfolgenden Beschreibung von "String" die Rede ist, dann ist damit sowohl der Inhalt eines Attributs als auch ein fixer Wert gemeint.
Notiz
Notiz
Mit der F-Script- und BlockScript-Extension stehen die Aps.Functions (Expressions) im Editor VS Code als Snippets zur Verfügung.
Notiz
Notiz
Beachten Sie, dass bei der direkten Verwendung von F-Script Befehlen mit alphanumerischem Inhalt (z.B. «NAME» oder «VORNAME»), diese Attribute jeweils in " " gesetzt werden müssen. Beispiel: «(length("«NAME»"))\E».
Bei F-Script Befehlen welche ein Datum oder eine Zahl zurückgeben, ist dies nicht nötig.
Code Name Info
abs
abs(integer/number)
Gibt den absoluten Wert einer Zahl zurück. Negative Zahlen werden in positive Zahlen umgewandelt.
Beispiele F-Script:
«(abs(-5.72))\E»
«X(Number=-123456.50)»
«(abs(Number))\E»
Beispiel BlockScript:
var resultValue:= abs(-123456.50)
append
append(string1,string2)
Verbindet zwei Strings miteinander.
Beispiele F-Script:
«X(ValueA=Zahlungsziel: )»
«X(ValueB=30 Tage netto)»
# 
«(append(ValueA,ValueB))\E»
«X(ValueA=Hello World! )»
«X(ValueB=This is Mars calling...)»
«(append(ValueA,ValueB))\E»
Beispiel BlockScript:
var resultValue:= append('Hello World! ','This is Mars calling...')
ascii
ascii(string)
Gibt den Code-Wert des ersten Zeichens eines Strings zurück.
Beispiel: Es sollen alle Adressen ausgeben werden, bei denen der Ort mit 'A' anfängt. Um das zu erreichen, können Sie dem Service GetBo folgenden Filter mitgeben: ascii(Addr.City) = 65.
Achtung
Achtung
Diese Funktion ist nicht Unicode-tauglich - bei Bedarf stattdessen uc_int() verwenden!
Beispiel F-Script:
«X(Charater=@)»
«(ascii(Charater))\E»
Beispiel BlockScript:
var resultValue:= ascii('@')
asDate
asDate(string)
Wandelt den übergebenen Wert (string) in ein Datum um, sofern dies möglich ist. Ist eine Umwandlung nicht möglich, wird nichts zurückgegeben. Repräsentiert der String kein korrektes Datum, wird nichts zurückgegeben.
Beispiel F-Script:
«X(Value=01.01.2018)»
«(asDate(Value))\E»
Beispiel BlockScript:
var resultValue:= asDate('01.01.2018')
asInteger
asInteger(val)
Wandelt den übergebenen Wert (val) in einen Integer um, sofern dies möglich ist. Ist eine Umwandlung nicht möglich, wird 0 zurückgegeben. Repräsentiert der String keine Zahl, wird 0 zurückgegeben.
Beispiel F-Script:
«X(Value=123456)»
«(asInteger(Value))\E»
Beispiel BlockScript:
var resultValue:= asInteger('123456')
asNumber
asNumber(val)
Wandelt den übergebenen Wert (val) in eine Zahl (Number) um, sofern dies möglich ist. Ist eine Umwandlung nicht möglich, wird 0.0 zurückgegeben. Repräsentiert der String keine Zahl, wird 0.0 zurückgegeben.
Beispiel F-Script:
«X(Value=123456.50)»
«(asNumber(Value))\E»
Beispiel BlockScript:
var resultValue:= asNumber('123456.50')
center(string,length)
Gibt Attribute oder fixe Werte zentriert aus.
Die Ausgabe erfolgt in der vorgegebenen Länge. Dabei wird der auszugebende String innerhalb der gewünschten Ausgabelänge zentriert.
Beispiel F-Script:
«X(ValueA=Hello World!)»
***«(center(ValueA,20))\E»***
Beispiel BlockScript:
var resultValue:= center('Hello World!',20)
character(byte)
Wandelt einen Code-Wert in ein Zeichen um.
Beispiel: Der Ausdruck character(241) liefert das Zeichen ±.
Achtung
Achtung
Diese Funktion ist nicht Unicode-tauglich - bei Bedarf stattdessen uc_char() verwenden!
Beispiel F-Script:
«X(ByteNumber=64)»
«(character(ByteNumber))\E»
Beispiel BlockScript:
var resultValue:= character(64)
computeMd5
computeMd5(string)
Liefert MD5-Hash für den übergebenen Input-String resp. dessen Bytes in UTF-8-Codierung.
Beispiel F-Script:
«nX(MemberNo=1234567)» 
«nX(UserName=TestUser_01)» 
«nX(Password=PW4$DirectLogin)» 
«nX(Date=21112016)» 

# Signature: md5([Mitgliedsnummer]_base64([Benutzername])_[Passwort]_[Datum]) 
«nX(Signature=)» 
«(assign(Signature, computeMd5(MemberNo + "_" + encodeBase64(UserName) + "_" + Password + "_" + Date)))\E» 

# AuthenticatonCode: urlEncode(base64([Mitgliedsnummer]_base64([Benutzername])_[Signatur])) 
«nX(AuthenticatonCode=)» 
«(assign(AuthenticatonCode, escapeUriData(encodeBase64(MemberNo + "_" + encodeBase64(UserName) + "_" + Signature))))\E»
Beispiel BlockScript:
var resultValue:= computeMd5('Hello World!')
computeSha256
computeSha256(string)
Liefert SHA-256-Hash für den übergebenen Input-String resp. dessen Bytes in UTF-8-Codierung.
Beispiel F-Script:
«X(Value=Hello World!)»
«(computeSha256(Value))\E»
Beispiel BlockScript:
var resultValue:= computeSha256('Hello World!')
computeSha512
computeSha512(string)
Liefert SHA-512-Hash für den übergebenen Input-String resp. dessen Bytes in UTF-8-Codierung.
Beispiel F-Script:
«X(Value=Hello World!)»
«(computeSha512(Value))\E»
Beispiel BlockScript:
var resultValue:= computeSha512('Hello World!')
date
date(dd.mm.yyyy)
Wandelt einen String in ein Datum um.
Beispiel: Es sollen alle Adressen ausgegeben werden, die im Jahr 2014 erstellt wurden. Um das zu erreichen, können Sie dem Service GetBo folgenden Filter mitgeben: Addr.Created >= date(01.01.2014) and Addr.Created <= date(31.12.2014).
Beispiel F-Script:
«X(Value=01.01.2018)»
«(date(Value))\E»
Beispiel BlockScript:
var resultValue:= date('01.01.2018')
dateInTz
dateInTz("targetTimezoneCd" [,timestamp] [,"sourceTimezoneCd"])
Zeitstempel in eine andere Zeitzone umrechnen. Es wird nur das Datum zurückgegeben. Wird kein Zeitstempel mitgegeben, wird der aktuelle Zeitpunkt verwendet. Wird keine Quell-Zeitzone mitgegeben, wird Western Europe Standard Time (Schweizer Zeit; Code-Value WESTp01_DS) verwendet.
timeInTz
timeInTz("targetTimezoneCd" [,timestamp] [,"sourceTimezoneCd"])
Zeitstempel in eine andere Zeitzone umrechnen. Es wird nur die Zeit zurückgegeben. Wird kein Zeitstempel mitgegeben, wird der aktuelle Zeitpunkt verwendet. Wird keine Quell-Zeitzone mitgegeben, wird Western Europe Standard Time (Schweizer Zeit; Code-Value WESTp01_DS) verwendet.
timestampInTz
timestampInTz("targetTimezoneCd" [,timestamp] [,"sourceTimezoneCd"])
Zeitstempel in andere Zeitzone umrechnen. Wird kein Zeitstempel mitgegeben, wird der aktuelle Zeitpunkt verwendet. Wird keine Quell-Zeitzone mitgegeben, wird Western Europe Standard Time (Schweizer Zeit; Code-Value WESTp01_DS) verwendet.
dateStrInTz
dateStrInTz("targetTimezoneCd" [,timestamp] [,"sourceTimezoneCd"] [,"format"])
Analog dateInTz() plus Formatierung als String. Formate gemäss dateToStr(). Wird kein Format übergeben, wird das Default-Format "dd.MM.yyyy" angewendet.
timeStrInTz
timeStrInTz("targetTimezoneCd" [,timestamp] [,"sourceTimezoneCd"] [,"format"])
Analog timeInTz() plus Formatierung als String. Formate gemäss timeToStr() (siehe hierzu APS-5039). Wird kein Format übergeben, wird das Default-Format "HH:mm:ss" angewendet.
timestampStrInTz
timestampStrInTz("targetTimezoneCd" [,timestamp] [,"sourceTimezoneCd"] [,"format"])
Analog timestampInTz() plus Formatierung als String. Formate gemäss timestampToStr() (siehe hierzu APS-5039). Wird kein Format übergeben, wird das Default-Format "dd.MM.yyyy HH:mm:ss" angewendet.
Notiz
Notiz
Die Zeitzonen-Codes finden Sie in der OpaccOXAS LiveDocumentation unter: BIZ Infos > Codes > ApsTimezone.
today
today()
Aktuelles Datum.
Beispiel F-Script:
«(today())\E»
Beispiel BlockScript:
var resultValue:= today()
now
now()
Aktueller Zeitstempel.
Beispiel F-Script:
«(now())\E»
Beispiel BlockScript:
var resultValue:= now()
time
time(value)
Zeit aufgrund eines übergebenen Wertes.
Beispiel F-Script:
«(time())\E»
Beispiel BlockScript:
var resultValue:= time()
timestamp
timestamp(value)
Zeitstempel aufgrund eines übergebenen Wertes.
asTime
asTime(value)
Cast tolerant. Liefert 00:00:00 wenn keine Zeit erkannt werden kann.
Beispiel F-Script:
«X(Value=4.45)»
«(asTime(Value))\E»
Beispiel BlockScript:
var resultValue:= asTime('4.45')
asTimestamp
asTimestamp(value)
Cast tolerant. Liefert 01.01.0001 00:00:00 wenn kein Zeitstempel erkannt werden kann.
isTime
isTime(value)
Prüfung ob Cast möglich ist.
Achtung
Achtung
Leerstring liefert, angelehnt an das Verhalten der übrigen Datentypen, true.
Beispiel F-Script:
«X(Value=04.45)»
«(isTime(Value))\E»
Beispiel BlockScript:
var resultValue:= isTime('04.45')
isTimestamp
isTimestamp(value)
Prüfung ob Cast möglich ist.
Achtung
Achtung
Leerstring liefert, angelehnt an das Verhalten der übrigen Datentypen, true.
Beispiel F-Script:
«X(Value=01.01.2020 04:45:21)»
«(isTimestamp(Value))\E»
Beispiel BlockScript:
var resultValue:= isTimestamp('01.01.2020 04:45:21')
dateToStr
dateToStr(value [,"format"])
Datum formatieren. Default-Format: dd.MM.yyyy
Mögliche Token:
  • "d" // Tag ohne führende 0
  • "dd" // Tag mit führender 0
  • "M" // Monat ohne führende 0
  • "MM" // Monat mit führender 0
  • "yy" // Jahr zweistellig
  • "yyyy" // Jahr vierstellig
Mögliche Delimiter:
  • . (Punkt)
  • , (Komma)
  • : (Doppelpunkt)
  • - (Strich)
  • _ (Unterstrich/Underscore)
  • / (Schrägstrich/Slash)
Beispiel F-Script:
«X(Date=«(today()\E»)»
«(dateToStr(Date,'yyyy-MM-dd'))\E»
Beispiel BlockScript:
var resultValue:= dateToStr(today(),'yyyy-MM-dd')
timeToStr
timeToStr(value [,"format"])
Zeit (Time) formatieren. Default-Format: HH:mm:ss
Mögliche Token:
  • "H" // Stunde (0-23) ohne führende 0
  • "HH" // Stunde (0-23) mit führender 0
  • "m" // Minute ohne führende 0
  • "mm" // Minute mit führender 0
  • "s" // Sekunde ohne führende 0
  • "ss" // Sekunde mit führender 0
Mögliche Delimiter:
  • . (Punkt)
  • , (Komma)
  • : (Doppelpunkt)
  • - (Strich)
  • _ (Unterstrich/Underscore)
  • / (Schrägstrich/Slash)
Beispiel F-Script:
«X(Time=«(time(now()))\E»)»
«(timeToStr(Time,'HH:mm:ss'))\E»
Beispiel BlockScript:
var resultValue:= timeToStr(time(now()),'HH:mm:ss')
timestampToStr
timestampToStr(value [,"format"])
Zeitstempel (Timestamp) formatieren. Default-format: dd.MM.yyyy HH:mm:ss
Mögliche Token:
  • "d" // Tag ohne führende 0
  • "dd" // Tag mit führender 0
  • "M" // Monat ohne führende 0
  • "MM" // Monat mit führender 0
  • "yy" // Jahr zweistellig
  • "yyyy" // Jahr vierstellig
  • "H" // Stunde (0-23) ohne führende 0
  • "HH" // Stunde (0-23) mit führender 0
  • "m" // Minute ohne führende 0
  • "mm" // Minute mit führender 0
  • "s" // Sekunde ohne führende 0
  • "ss" // Sekunde mit führender 0
Mögliche Delimiter:
  • . (Punkt)
  • , (Komma)
  • : (Doppelpunkt)
  • - (Strich)
  • _ (Unterstrich/Underscore)
  • / (Schrägstrich/Slash)
Beispiel F-Script:
«X(DateTimeValue=«(now())\E»)»
«(timestampToStr(DateTimeValue,'dd.MM.yyyy - HH:mm:ss'))\E»
Beispiel BlockScript:
var resultValue:= timestampToStr(now(),'dd.MM.yyyy - HH:mm:ss')
dayOfDate
dayOfDate(date)
Liefert den Tag eines Datums (als Nummer).
Beispiel F-Script:
«(dayOfDate(now()))\E»
Beispiel BlockScript:
var resultValue:= dayOfDate(now())
monthOfDate
monthOfDate(date)
Liefert den Monat eines Datums (als Nummer).
Beispiel F-Script:
«(monthOfDate(now()))\E»
Beispiel BlockScript:
var resultValue:= monthOfDate(now())
yearOfDate
yearOfDate(date)
Liefert das Jahr eines Datums (als Nummer).
Beispiel F-Script:
«(yearOfDate(now()))\E»
Beispiel BlockScript:
var resultValue:= yearOfDate(now())
dateAdd
dateAdd(dateOrTimestamp, count [,"datePartCd"])
Hinzurechnen von Datumswerten (z.B. Anzahl Tage oder Wochen) zu einem Datum.
Notiz
Notiz
Mögliche DatePart-Werte: D (day), W (week), M (month), Y (year).
Beispiel F-Script:
«X(Date=«(now())\E»)»
«X(DatePart=D)»
«X(DaysToAdd=11)»
«SYS(MSG INFO Errechnetes Datum: «(dateAdd(Date,DaysToAdd,DatePart))\E»)»
Beispiel BlockScript:
var resultValue:= dateAdd('28.02.2023',11,'D')
encodeBase64
encodeBase64(string)
Codiert den übergebenen Input-String resp. dessen Bytes in UTF-8-Codierung als Base64-codierten String.
Beispiel F-Script:
«X(Value=Hello World!)»
«(encodeBase64(Value))\E»
Beispiel BlockScript:
var resultValue:= encodeBase64('Hello World!')
decodeBase64
decodeBase64(string)
Decodiert einen Base64-codierten String und gibt die resultierenden Bytes als UTF-8 String zurück.
Beispiel F-Script:
«X(base64String=SGVsbG8gV29ybGQh)»
«(decodeBase64(base64String))\E»
Beispiel BlockScript:
var resultValue:= decodeBase64('SGVsbG8gV29ybGQh')
encrypt
secret, plainString
Verschlüsselt übergebenen Klartext-String mit dem übergebenen Secret.
decrypt
secret, encryptedString
Entschlüsselt übergebenen String mit dem übergebenen Secret.
escapeUriData
escapeUriData(string)
Codiert den übergebenen Input-String als URI-Data (= Daten-Bestandteil einer URL).
Beispiel F-Script:
«X(Value=Hello World!)»
«(escapeUriData(Value))\E»
Beispiel BlockScript:
var resultValue:= escapeUriData('Hello World!')
unescapeUriData
unescapeUriData(string)
Decodiert den übergebenen Input-String als URI-Data (= Daten-Bestandteil einer URL).
Beispiel F-Script:
«X(UriData=Hello%20World!)»
«(unescapeUriData(UriData))\E»
Beispiel BlockScript:
var resultValue:= unescapeUriData('Hello%20World!')
guid
guid()
Liefert eine eindeutige ID (als String) der folgenden Art: ECE3AA77-A248-4D63-9A65-7D95B7D00CE3
Beispiel F-Script:
«(guid())\E»
Beispiel BlockScript:
var resultValue:= guid()
if(expr,valTrue,valFalse)
Klassischer if-then-else - Ausdruck. Trifft die Bedingung (expr) zu, so wird valTrue zurückgegeben, sonst valFalse.
Als Bedingung kann bei expr auch eine Zahl (0=false) oder ein String (leer=false) angegeben werden.
Beispiel F-Script:
«X(ValueA=10)»
«X(ValueB=20)»
«(if(ValueA contains ValueB,"true","false"))\E»
Beispiel BlockScript:
if(valueA < valueB)
{
  // do something
}
insert(insString,string,at)
Fügt einen String an einer bestimmten Position in einen andern ein.
Beispiel: Umwandeln der Hauptstadt der Schweiz in die Hauptstadt Deutschlands.
Beispiel F-Script:
«X(Value=Hello! This is Mars calling...)»
«X(SubString= World)»
«(insert(SubString,Value,6))\E»
Beispiel BlockScript:
var resultValue:= insert(' World','Hello! This is Mars calling...',6)
integer
integer(val)
Wandelt einen String, ein Datum oder eine Realzahl (durch Abschneiden der Nachkommastellen) in eine Ganzzahl um.
Beispiele F-Script:
«X(A=36.758)»
# 
«SYS(MSG INFO «(integer(«X(A)»))\E»)»
«X(A=21.08.2014)»
# 
«SYS(MSG INFO «(integer("«X(A)»"))\E»)»
«X(Value=123456)»
«(integer(Value))\E»
Beispiel BlockScript:
var resultValue:= integer(123456)
isDate
isDate(val)
Prüft ob der übergebene Wert (val) ein korrektes Datum ist oder in ein korrekter Datum umgewandelt werden kann. Rückgabe: 1/0 bzw. true/false.
Beispiel F-Script:
«X(Value=01.01.2018)»
«(isDate(Value))\E»
Beispiel BlockScript:
var resultValue:= isDate('01.01.2018')
isInteger
isInteger(val)
Prüft ob der übergebene Wert (val) ein Integer ist oder in einen Integer umgewandelt werden kann. Rückgabe: 1/0 bzw. true/false.
Beispiel F-Script:
«X(Value=123456)»
«(isInteger(Value))\E»
Beispiel BlockScript:
var resultValue:= isInteger('123456')
isNumber
isNumber(val)
Prüft ob der übergebene Wert (val) eine Zahl (Number) ist oder in eine Zahl (Number) umgewandelt werden kann. Rückgabe: 1/0 bzw. true/false.
Beispiel F-Script:
«X(Value=123456.50)»
«(isNumber(Value))\E»
Beispiel BlockScript:
var resultValue:= isNumber('123456.50')
left(string,length)
Kürzt einen String auf die gewünschte Länge. Siehe auch pad.
Beispiel: left('Zürich',4) ergibt Züri.
Beispiel F-Script:
«X(Value=Zürich)»
«(left(Value,4))\E»
Beispiel BlockScript:
var resultValue:= left('Zürich',4)
length(string)
Gibt die Länge eines Strings zurück.
Beispiel F-Script:
«X(String=Hello World!)»
«(length(String))\E»
Beispiel BlockScript:
var resultValue:= length('Hello World!')
lowercase(string)
Wandelt einen String in Kleinbuchstaben um.
Beispiel F-Script:
«X(String=Hello World! This is Mars calling...)»
«(lowercase(String))\E»
Beispiel BlockScript:
var resultValue:= lowercase('Hello World! This is Mars calling...')
ltrim(string)
Entfernt eventuell vorhandene führende Leerzeichen.
Beispiel F-Script:
«X(Value=Hello World! )»
«(ltrim(Value))\E»
Beispiel BlockScript:
var resultValue:= ltrim(' Hello World! ')
mid(string,length,at)
Gibt einen Substring von string mit der Länge length ab der Position at zurück.
Beispiel: mid('Spanien',3,4) ergibt nie.
Beispiel F-Script:
«X(Value=Spanien)»
«(mid(Value,3,4))\E»
Beispiel BlockScript:
var resultValue:= mid('Spanien',3,4)
Notiz
Notiz
Der Befehl mid ersetzt den alten Befehl MITTE, welcher u.U. noch in alten F-Scripts angetroffen wird.
Beachten Sie, dass beim alten Befehl MITTE die Argumente in einer anderen Reihenfolge stehen: LENGTH,AT,STRING
Wir empfehlen dringend, bei Antreffen des alten Befehls MITTE, diesen durch mid zu ersetzen.
mod(intDividend,intDivisor)
Gibt die Restmenge einer Division (Modulo) aus. Dividend und Divisor sind dabei Integer-Werte. Beachten Sie, dass allfällige Dezimalwerte automatisch auf den nächsten Integer-Wert gerundet werden.
Beispiel: mod(17:5) = 2
Beispiel F-Script:
«X(IntDividend=17)»
«X(IntDivisor=5)»
«(mod(IntDividend,IntDivisor))\E»
Beispiel BlockScript:
var resultValue:= mod(17,5)
not
not(boolean)
Kehrt den Wert eines Boolean um. Das Argument boolean darf dabei auch ein String oder ein Integer sein. Dabei ergeben ein nicht leerer String bzw. ein Integer ungleich 0 den Wert true.
Beispiele F-Script:
«X(A=0)»
# Ausgabe: 1
«SYS(MSG INFO «(not(«X(A)»))\E»)»
«X(A=1)»
# Ausgabe: 0
«SYS(MSG INFO «(not(«X(A)»))\E»)»
«X(ValueA=Hello World!)»
«X(ValueB=Hello Mars!)»
«(not(ValueA = ValueB))\E»
Beispiel BlockScript:
var resultValue:= not('Hello World!' = resultValue)
number
number(var)
Wandelt die Variable var in eine Zahl mit maximal 14 Vor- und 8 Nachkommastellen um.
Beispiel F-Script:
«X(A=422.85)»
# 
«SYS(MSG INFO «(number(«X(A)»))\E»)»
Beispiel BlockScript:
var resultValue:= number(123456.50)
overstrike(newStr,oldStr,at)
Überschreibt einen String oldStr mit einem neuen String newStr ab einer bestimmten Position at.
Beispiel: Um die Hauptstadt Österreichs in die Hauptstadt der Schweiz zu verwandeln, verwenden Sie folgenden Ausdruck: 'overstrike('Ber','Wien',1)'.
pad
pad(string,length)
Gibt einen String in einer fixen Länge aus.
Der String wird dabei entweder rechts abgeschnitten oder mit Leerzeichen ergänzt. Siehe auch left.
Beispiel F-Script:
«X(A=Art-Nr. W-100 ZL)»
# 
«SYS(MSG INFO ***«(pad("«X(A)»",23))\E»***)»
operator_01.jpg
Beispiel BlockScript:
var resultValue:= pad('Hello World!',20)
pos
pos(subString,mainString)
Gibt die Position des ersten Zeichens der ersten Übereinstimmung von subString in mainString zurück. Gibt es keine Übereinstimmung, wird der Wert 0 zurückgegeben.
Beispiele F-Script:
«X(A=30 Tage netto)»
«X(B=netto)»
# Ausgabe: 9 - "netto" steht ab Stelle 9 bei "30 Tage netto"
«SYS(MSG INFO «(pos("«X(B)»","«X(A)»"))\E»)»
«X(Value=Hello World! This is Mars calling...)»
«X(SubString=Mars)»
«(pos(SubString,Value))\E»
Beispiel BlockScript:
var resultValue:= pos('subString','This is a Text with a specific subString...')
random(limit)
Gibt eine zufällige Ganzzahl von 0 bis limit minus 1 zurück.
Beispiel F-Script:
«X(Integer=100)»
«(random(Integer))\E»
Beispiel BlockScript:
var resultValue:= random(100)
regEx
regEx(string,pattern)
Bei Abfragen (GetBo, Filter und virtuelle Attribute) sowie bei Wertzuweisungen (SaveBo) können Sie regular expressions verwenden.
regEx(string,pattern) - Case sensitive Prüfung.
Beispiel F-Script:
«X(Value=10.00)»
«X(RegexPattern=^\d*.{0,1}\d+$)»
«(regEx(Value,RegexPattern))\E»
Beispiel BlockScript:
var resultValue:= regEx('10.00','^\d*.{0,1\d+$'})
regExCi
regExCi(string,pattern)
Bei Abfragen (GetBo, Filter und virtuelle Attribute) sowie bei Wertzuweisungen (SaveBo) können Sie regular expressions verwenden.
regExCi(string,pattern) - Case insensitive Prüfung.
Beispiele F-Script:
«X(Value=hELlo WoRlD)»
«X(RegexPattern=world)»
«(regExCi(Value,RegexPattern))\E»
# Zu prüfender Wert:
«X(myString=105.299999)»
#
# regular expression mit Pattern für "isDigit"
«nz~(«(regExCi(myString,"^(([0-9]*)|(([0-9]*)\.([0-9]*)))$"))\E»)\I»«SYS(MSG CRIT '«X(myString)»' ist kein gültiger Wert!)»
# Pattern für das Prüfen eines gültigen Verzeichnis-Namens
«X(Regex.Pattern=^([a-zA-Z0-9][^*/><?\|:]*)$)»
# 
«nz~(«(regExCi(myString,Regex.Pattern))\E»)\I»«SYS(MSG CRIT '«X(myString)»' ist kein gültiges Verzeichnis!)»
GetBo-Request (Ersetzen von « und »)
Biz.GetBo
SalDocCondText
12996
ne
1
0
1

SalDocCondText.Number,SalDocCondText.Name,SalDocCondText.Text
CleanText=if(regExCi(SalDocCondText.Text,"[(uc_char(171)uc_char(187))]")=0,SalDocCondText.Text,replaces(uc_char(171),replaces(uc_char(187),SalDocCondText.Text,">"),"<"))
Diverse weitere Beispiele für "regular expression Patterns"
Integer                                         ^-{0,1}\d+$
Positive Integers                               ^\d+$
Negative Integers                               ^-\d+$

Number                                          ^-{0,1}\d*.{0,1}\d+$
Positive Number                                 ^\d*.{0,1}\d+$
Negative Number                                 ^-\d*.{0,1}\d+$

only lowercase characters (a-z and not empty)   ^[a-z]{1,}$
                                                ^[a-zA-Z]{1,}$

Check for specific unicode Character («»)       [\u00AB\u00BB]{1,}

Prüfen von Dateinamen auf ungültige Zeichen     ^[\w\-. ]+\.(?i)(pdf|pcl)$
Hinweis: (?i) bedeutet: Ignore Case.
Beispiele
äöüàéèÄÖÜ.pdf >> OK
aaabc.p >> NOK
abc<DDD.pdf >> NOK
abcäöü.P >> NOK
ÄÖ Üabc.pdf >> OK
Beispiel BlockScript:
var resultValue:= regExCi('hELlo WoRlD','world')
remove(string,at,length)
Löscht in einem String ab einer bestimmten Position at eine Anzahl Zeichen length.
Beispiel: Umwandeln der Hauptstadt Deutschlands in die Hauptstadt der Schweiz.
Beispiel F-Script:
«X(Value=Berlin)»
«(remove(Value,4,2))\E»
Beispiel BlockScript:
var resultValue:= remove('Berlin',4,2)
repeat(string,count)
Fügt einen String mehrmals (count) an sich selbst an.
Beispiel F-Script:
«X(Value=Hello World! )»
«(repeat(Value,3))\E»
Beispiel BlockScript:
var resultValue:= repeat('Hello World! ',3)
replace(oldSub,string,newSub)
Ersetzt einen Substring OldSubString in einem String Value durch einen neuen Substring NewSubString.
Beispiel F-Script:
«X(Value=Hello %%THEPLANET%%! This is Mars calling...)»
«X(OldSubString=%%THEPLANET%%)»
«X(NewSubString=World)»
«(replace(OldSubString,Value,NewSubString))\E»
Beispiel BlockScript:
var resultValue:= replace('%%THEPLANET%%','Hello %%THEPLANET%%! This is Mars calling...','World')
replaces(oldSub,string,newSub)
Ersetzt alle Substrings OldSubString in einem String Value durch neue Substrings NewSubString.
Beispiel F-Script:
«X(Value=Hello %%THEPLANET%%! This is another %%THEPLANET%% calling...)»
«X(OldSubString=%%THEPLANET%%)»
«X(NewSubString=World)»
«(replaces(OldSubString,Value,NewSubString))\E»
Beispiel BlockScript:
var resultValue:= replaces('%%THEPLANET%%','Hello %%THEPLANET%%! This is another %%THEPLANET%% calling...','World')
right(string,length)
Gibt eine bestimmte Anzahl Zeichen length von rechts aus.
Beispiel: Verwandeln von Baden-Baden in Baden.
Beispiel F-Script:
«X(Value=Baden-Baden)»
«(right(Value,5))\E»
Beispiel BlockScript:
var resultValue:= right('Baden-Baden',5)
round
round(number)
round(number,roundTo)
round(number,roundTo,roundMode)
Rundet eine Zahl mit Nachkommastellen number auf eine Ganzzahl oder auf Nachkommastellen gemäss Vorgabe.
Beispiele F-Script:
«X(A=522.443)»
# Keine Vorgabe - Das bedeutet "runden auf Ganzzahl" - Ausgabe: 522
«SYS(MSG INFO «(round(«X(A)»))\E»)»

«X(A=688.27)»
# Vorgabe: ,0 - Das bedeutet "nicht runden" - Ausgabe: 688.27
«SYS(MSG INFO «(round(«X(A)»,0))\E»)»

«X(A=688.27)»
# Vorgabe: ,0.05 - Das bedeutet "runden auf 0.05" - Ausgabe: 688.25
«SYS(MSG INFO «(round(«X(A)»,0.05))\E»)»
 
Runden mit Vorgabe des Rundungs-Modus roundMode. Mögliche Werte:
  • 1 - immer aufrunden
  • 0 oder leer - normal runden
  • -1 - immer abrunden
# Runden mit Vorgabe des Rundungs-Modus (roundMode)

«X(A=125.21)»
# 125.21 wird aufgerundet - Ausgabe: 125.25
Aufrunden: «(round(«X(A)»,0.05,1))\E»

«X(A=125.23)»
# 125.23 wird normal gerundet - Ausgabe: 125.25
Normal Runden: «(round(«X(A)»,0.05,0))\E»

«X(A=125.49)»
# 125.49 wird abgerundet - Ausgabe: 125.45
Abrunden: «(round(«X(A)»,0.05,-1))\E»
Beispiel BlockScript:
var resultValue:= round(123456.147,0,0)
rtrim(string)
Entfernt eventuell vorhandene nachfolgende Leerzeichen.
Beispiele F-Script:
«X(Value=Hello World!     )»
«(rtrim(Value))\E»
Beispiel BlockScript:
var resultValue:= rtrim(' Hello World! ')
set_contains
set_contains(valueSet, valueToSearch)
Zeigt an, ob ein Wert enthalten ist (kann auch in einem Query oder GetBo verwendet werden).
«(set_contains(DELIM+ "A" +DELIM+ "B" +DELIM+ "C" +DELIM+ "D" +DELIM, "A"))\E»
# Ergibt den Wert 1 (true)

«(set_contains(DELIM+ "A" +DELIM+ "B" +DELIM+ "C" +DELIM+ "D" +DELIM, "X"))\E»
# Ergibt den Wert 0 (false)
set_add
set_add(valueSet, valueToAdd)
Fügt einen Wert zur Liste hinzu und gibt die Liste zurück.
«(set_add(DELIM+ "A" +DELIM+ "B" +DELIM+ "C" +DELIM+ "D" +DELIM,"E"))\E»
# Liefert: A B C D E getrennt durch Ogham Space Mark 

«(set_add(DELIM+ "A" +DELIM+ "B" +DELIM+ "C" +DELIM+ "D" +DELIM,"A"))\E»
# Liefert: A B C D getrennt durch Ogham Space Mark (Die Liste kann keine doppelten Werte enthalten.)
set_remove
set_remove(valueSet, valueToRemove)
Entfernt einen Wert aus der Liste und gibt die Liste zurück.
«(set_remove(DELIM+ "A" +DELIM+ "B" +DELIM+ "C" +DELIM+ "D" +DELIM,"A"))\E»
# Liefert: B C D getrennt durch Ogham Space Mark 

«(set_remove(DELIM+ "A" +DELIM+ "B" +DELIM+ "C" +DELIM+ "D" +DELIM,"E"))\E»
# Liefert: A B C D getrennt durch Ogham Space Mark (Das Entfernen eines nicht enthaltenen Werts hat keinen Einfluss auf die Liste.)
DELIM
Delimiter: Ogham Space Mark
In den obigen drei Fällen werden die einzelnen Werte mittels Ogham Space Mark (Unicode U+1680) getrennt. Dieses Zeichen (Ogham Space Mark) kann dabei mit dem Befehl DELIM verwendet werden:
«(DELIM)\E»
Dieser Befehl ist insbesondere beim Splitten von Listen hilfreich.
string
string(number)
Wandelt eine Zahl oder ein Datum in einen String um.
«X(A=522.443)»
# 
«SYS(MSG INFO «(string(«X(A)»))\E»)»
«X(A=29.07.2015)»
# 
«SYS(MSG INFO «(string(«X(A)»))\E»)»
sqrt
sqrt(number)
Berechnet die Quadratwurzel einer Zahl.
Beispiele F-Script:
«X(Nmb=9)»
# 
«SYS(MSG INFO «(sqrt(«X(Nmb)»))\E»)»
«X(Integer=9)»
«(sqrt(Integer))\E»
Beispiel BlockScript:
var operationResult:= sqrt(9)
trim(string)
Entfernt eventuell vorhandene führende und abschliessende Leerzeichen. Siehe auch ltrim und rtrim.
Beispiel F-Script:
«X(Value=   Hello World!   )»
«(trim(Value))\E»
Beispiel BlockScript:
var resultValue:= trim(' Hello World! ')
uc_char(integer)
Liefert für einen Unicode (siehe auch http://unicode-table.com) das entsprechende Zeichen. Das Resultat des Ausdrucks uc_char(8364) ist beispielsweise das Zeichen .
Beispiel F-Script:
«X(A=8364)»
# Ausgabe: €
«SYS(MSG INFO «(uc_char(«X(A)»))\E»)»
Beispiel BlockScript:
var resultValue:= uc_char(64)
uc_int(string)
Liefert für das erste Zeichen eines String den Unicode (siehe auch http://unicode-table.com). Das Resultat des Ausdrucks uc_int('$') lautet beispielsweise 36.
Beispiel F-Script:
«X(A=$)»
# Ausgabe: 36
«SYS(MSG INFO «(uc_int("«X(A)»"))\E»)»
Beispiel BlockScript:
var resultValue:= uc_int('@')
uppercase(string)
Wandelt einen String in Grossbuchstaben um.
Beispiel F-Script:
«X(Value=Hello World! This is Mars calling...)»
«(uppercase(Value))\E»
Beispiel BlockScript:
var resultValue:= uppercase('Hello World! This is Mars calling...')
split
split(str, delimiter, [oneBasedItemIndex], [removeEmptyItems])
Splittet Strings innerhalb von F-Script, sowie beispielsweise innerhalb eines GetBo-Request.
Notiz
Notiz
Innerhalb von F-Script Blöcken sollten Sie aus Effizienzgründen nach wie vor die F-Script Funktion SPLIT.IntoXArr() verwenden.
least
least(nmb1,nmb2)
Liefert die kleinere der beiden Zahlen zurück.
greatest
greatest(nmb1,nmb2)
Liefert die grössere der beiden Zahlen zurück.
nmbToStr
nmbToStr(nmb, format)
Aufbau des Format-String: [minNmbOfDigitsBefore][decimalSeparatorChar][fixNmbOfDigitsAfter][groupingBeforeDecimalSeparator]
Beispiel F-Script:
nmbToStr(123456.789, ",4'")
# Ergebnis: 123'456,7890
Beispiel BlockScript:
var resultValue:= nmbToStr(123456.789,"")
nmbToStrEx
nmbToStrEx(nmb, format)
Aufbau des Format-String: [digitsBeforeDecimalSeparator], [digitsAfterDecimalSeparator], [decimalSeparator], [groupingBeforeDecimalSeparator], [groupingAfterDecimalSeparator]
Diese Expression-Funktion erlaubt zusätzlich digits und Gruppierung bei den Nachkommastellen und kann für die Umsetzung von ganz speziellen Anforderungen verwendet werden.
nmbToStrEx(-123456.789, "8..", "7", ",", "'", ".")
# Ergebnis: "-00'123'456,789.000.0"
Notiz
Notiz
Es sind maximal 14 Vor- bzw. Nachkommastellen möglich.
lPad (Left Pad)
lPad(str, length, [character])
Füllt den übergebenen String mit dem übergebenen Zeichen (standardmässig Leerzeichen) links auf, bis die gewünschte Länge erreicht ist.
Im Gegensatz zum bisherigen "pad()" wird hier nicht abgeschnitten, wenn der String zu lang ist.
Beispiel F-Script:
«X(Value=Hello World!)»
«(lPad(Value,20 ))\E»
Beispiel BlockScript:
var resultValue:= lPad('Hello World!',20 )
rPad (Right Pad)
rPad(str, length, [character])
Füllt den übergebenen String mit dem übergebenen Zeichen (standardmässig Leerzeichen) rechts auf, bis die gewünschte Länge erreicht ist.
Im Gegensatz zum bisherigen "pad()" wird hier nicht abgeschnitten, wenn der String zu lang ist.
Beispiel F-Script:
«X(Value=Hello World!)»
«(rPad(Value,20 ))\E»
Beispiel BlockScript:
var resultValue:= rPad('Hello World!',20 )
lTruncPad (Left Truncate or Pad)
lTruncPad(str, length, [character])
Kürzt den übergebenen String, sofern nötig, auf die gewünschte Länge, wobei die Zeichen links abgeschnitten werden.
Wenn der übergebene String zu kurz ist, wird mit dem übergebenen Zeichen (standardmässig Leerzeichen) links aufgefüllt, bis die gewünschte Länge erreicht ist.
Beispiel F-Script:
«X(Value=Hello World!)»
«(lTruncPad(Value,20 ))\E»
Beispiel BlockScript:
var resultValue:= lTruncPad('Hello World!',20 )
rTruncPad (Right Truncate or Pad)
rTruncPad(str, length, [character])
Kürzt den übergebenen String, sofern nötig, auf die gewünschte Länge, wobei die Zeichen rechts abgeschnitten werden.
Wenn der übergebene String zu kurz ist, wird mit dem übergebenen Zeichen (standardmässig Leerzeichen) rechts aufgefüllt, bis die gewünschte Länge erreicht ist.
Beispiel F-Script:
«X(Value=Hello World!)»
«(rTruncPad(Value,20 ))\E»
Beispiel BlockScript:
var resultValue:= rTruncPad('Hello World!',20 )