Funktionen

Zur erweiterten Bearbeitung von Werten und Texten stehen einige eingebaute Funktionen zur Verfügung:

Arithmetische Funktionen
SHL bitweises linksschieben
SHR bitweises rechtsschieben
Stringverarbeitung
MID liefert einen mittleren Teil einer Zeichenkette
LEN liefert die Länge einer Zeichenkette
LEFT liefert den linken Teil einer Zeichenkette
RIGHT liefert den rechten Teil einer Zeichenkette
FIND liefert die erste Fundstelle einer Zeichenkette in einer anderen Zeichenkette
CONCAT verbindet zwei Zeichenketten
REPLACE ersetzt einen Abschnitt in einer Zeichenkette durch einen anderen
REPLACEALL ersetzt alle Zeichenfolgen in einer Zeichenkette durch andere.
FORMAT formatiert einen numerischen Wert
GETCSV liefert einen Eintrag aus einer mit Kommas getrennten Liste (CSV)
Datenbankfunktionen
DBLOOKUP liefert einen Wert aus einer Datenbankabfrage
DBREAD Setzt Variablen mit dem Ergebnis einer Datenbankabfrage
DBFIELD Zugriff auf Felder mit speziellen Namen
DBWRITE Schreibt einen Datensatz mit dem Inhalt von Variablen
DBCOUNT liefert die Anzahl der Datensätze einer Datenbankabfrage
DBXML liefert das einer Datenbankabfrage im XML Format
DBTABLE liefert das Ergebnis einer Datenbankabfrage in tabellarischem Format
Sonstige Funktionen
SEL wählt zwischen zwei Werten abhängig von einem Ausdruck
INILOOKUP liest einen Wert aus einer INI Datei
INIWRITE schreibt einen Wert in eine INI Datei
FILETEXT liefert den Text, der in einer Datei abgelegt ist
QIMPULSE gibt einen Impuls auf einem digitalen Ausgang aus
EXECUTE Ausführen eines externen Programms
DDEEXEC Ausführen eines DDE Befehls

 

MID(Text, AbZeichen)

Liefert den Teiltext von Text ab dem angegebenen Zeichen.

MID('abcdefghij', 5) liefert "fghij"

 

MID(Text, AbZeichen, Länge)

Liefert den Teiltext von Text ab dem angegebenen Zeichen und der angegebenen Länge.

MID('abcdefghij', 5, 2) liefert "fg"

 

LEN(Text)

Liefert die Länge der angegebenen Zeichenkette.

LEN('abcdef') liefert 6

 

LEFT(Text, Länge)

Liefert den linken Teil von Text mit der angegebenen Länge.

LEFT('abcdefghij', 5) liefert "abcde"

 

RIGHT(Text, Länge)

Liefert den rechten Teil von Text mit der angegebenen Länge.

LEFT('abcdefghij', 5) liefert "fghij"

 

FIND(Text, Suchtext)

Liefert die erste Fundstelle von Suchtext innerhalb der Zeichenkette Text. Wird der Suchtext nicht gefunden, so ist das Ergebnis Null.

FIND('abcdefghij', 'de') liefert 4

 

CONCAT(Text1{, Text2})

Verbindet mehrere Zeichenketten, so dass eine Zeichenkette entsteht.

CONCAT('abc', 'def') liefert "abcdef"

CONCAT('abc', 'def', 'ghi') liefert "abcdefghi"

CONCAT($TIME, CONCAT(':', $SECOND)) liefert (z.B.) "11:12:48"

CONCAT($TIME, ':', $SECOND) liefert auch (z.B.) "11:12:48"

 

REPLACE(Text, ReplText, Len, Pos)

Ersetzt einen Abschnitt in einer Zeichenkette durch einen anderen.

REPLACE('ABCDE', 'X', 2, 3) liefert "ABXE"

 

REPLACEALL(Text, SearchText, ReplText)

Ersetzt alle Zeichenfolgen in einer Zeichenkette durch andere.

REPLACEALL('Diest ist ein Test', 'e', 'X') liefert "DiXs ist Xin TXst"

REPLACEALL('CSV,123,abc,456', ',', ';') liefert "CSV;123;abc;456"

 

SEL(Bedingung, AusdruckWahr, AusdruckFalsch)

Liefert, abhängig ob die angegebene Bedingung wahr oder falsch ist, den Wert von AusdruckWahr oder AusdruckFalsch.

SEL(LEFT($MESSAGE), 1) = '>', 'kommt', 'geht')

liefert "kommt", wenn die Meldung mit dem Zeichen ‘>’ beginnt, sonst "geht"

 

FORMAT(NumerischerWert, AusgabeFormat)

Liefert einen numerischen Wert gemäß AusgabeFormat formatiert.

FORMAT(123.4567, '0000.##')

liefert "0123.45"

FORMAT(123.4, '####.00')

liefert " 123.40"

FORMAT(123.4, '##.00')

liefert "123.40"

 Ab 21-Mar-2006 erweiterte Formatierungsmöglichkeiten.

[ + | - ] { # } { 0 } [ * ] [ . [ { 0 } { # } ] ]
Zeichen Bedeutung
+ Erzwungenes Vorzeichen. Es wird ein Plus oder Minus ausgegeben.
- Optionales Vorzeichen. Es wird bei negativen werten ein Minus, bei positiven ein Leerzeichen ausgegeben.
# Optionale Stelle. Ist die Zahl kürzer, so wird ein Leerzeichen ausgegeben.
0 Erzwungene Ziffer. Es wird die Ziffer oder eine Null ausgegeben.
* Formatüberlauf. Mit dieser Angabe werden zu große Zahlen als Überlauf angezeigt.
. Dezimalpunkt.
0 Erzwungene Nachkommastelle. Es wird die Ziffer oder eine Null ausgegeben.
# Optionale Nachkommastelle. Ist die Zahl kürzer, so erfolgt keine Ausgabe.

Beispiele für die Formatierung. Leerzeichen in der Ausgabe sind als □ dargestellt.

Wert Formatangabe Ausgabe Bemerkung
1.23 0#0.## 1.23 ungültige Formatangabe
1.23 #0 □1  
1.23 ## □1  
1.23 #00 □01  
-1.23 ## -□1  
-1.23 0 -1  
-1.23 -00 -01  
1.23 00 01  
1.23 -00  01 Vorzeichen nur bei negativen Werten
1.23 +00 +01 erzwungenes Vorzeichen
1.23 ##.## □1.23  
1.2345 ##.## □1.23 Abrundung
1.2356 ##.## □1.24 Aufrundung
1.23 #00.## □01.23  
1.23 ##.0000 □01.2300  
1.23 ##.000# □01.230 optionale vierte Nachkommastelle wird unterdrückt
1.1234 ##.000# □01.1234 optionale vierte Nachkommastelle wird ausgegeben
1.12345 ##.000# □01.1235 Aufrundung
-1.1234 ##.000# -□1.1234  
-1.12345 ##.000# -□1.1235 Aufrundung
92345.23 00000.### 92345.23  
92345.23 00000.000 92345.230  
92345.23 000*.### ####.### Formatüberlauf, Wert kann nicht vierstellig ausgegeben werden
123.0 * # Formatüberlauf, Wert kann nicht einstellig ausgegeben werden
123.0 #* ## Formatüberlauf, Wert kann nicht zweistellig ausgegeben werden
123.0 ##* 123  
123.0 ###* □123  
123.0 #000* □0123  
1234.0 0000* 01234  
12345.0 0000* 12345  
123456.0 0000* ##### Formatüberlauf, Wert kann nicht fünfstellig ausgegeben werden
123456.0 ####* ##### Formatüberlauf, Wert kann nicht fünfstellig ausgegeben werden

 

GETCSV(WerteListe, ElementNummer[, Trennzeichen])

Liefert einen Eintrag aus einer mit Kommas getrennten Liste (CSV).
Für Listen mit einem anderen Trennzeichen kann dieses wahlweise angegeben werden.
Die Zählung der Elementnummer beginnt bei eins.

GETCSV('12.03.2003,Störung,Anlage 1,kommend', 1)

liefert "12.03.2003"

GETCSV('12.03.2003,Störung,Anlage 1,kommend', 3)

liefert "Anlage 1"

Angabe alternativer Trennzeichen:

Strichpunkt:    GETCSV('12.03.2003;Störung;Anlage 1;kommend', 3, ';')

Tabulator:       GETCSV('12.03.2003$tStörung$tAnlage 1$tkommend', 3, '$t')

 

INILOOKUP(Abschnitt, IniDatei, Schlüssel)

Wandelt den angeben Wert gemäß dem Abschnitt in der INI Datei. Der Wert darf hierbei sowohl numerisch oder textuell sein. Es können mehrere Abschnitte in einer Datei enthalten sein. Es muss der volle Dateipfad angegeben werden. Wird kein passender Eintrag gefunden, so ist das Ergebnis ein leerer Text.

Beispiel: Wandelung einer Störungsnummer (hier fest Nummer 17) in den zugehörigen Text (hier 'Überstromabschaltung Rührwerk 2')

Ausdruck: INILOOKUP('MsgText', 'C:\Programme\informel\PageControl\MTexte.ini', 17)

Inhalt der Datei C:\Programme\informel\PageControl\MTexte.ini:

[MsgText]
1=Störung Pumpe 2
17=Überstromabschaltung Rührwerk 2
20=Steuerungsstörung Anlage 2

 

INIWRITE(IniDatei, Abschnitt, Schlüssel, Wert)

Schreibt den angeben Wert gemäß dem Abschnitt und dem Schlüssel in die INI Datei. Der Wert darf hierbei sowohl numerisch oder textuell sein. Es können mehrere Abschnitte in einer Datei enthalten sein. Es muss der volle Dateipfad angegeben werden. Wird die Datei bzw. der Abschnitt nicht gefunden so werden sie automatisch angelegt.

Beispiel: Schreibt den Text für Störungsnummer 18 in die INI Datei

Ausdruck: INIWRITE('C:\Programme\informel\PageControl\MTexte.ini', 'MsgText', 18, 'Pegel unterschritten')

Inhalt der Datei C:\Programme\informel\PageControl\MTexte.ini nach Ausführung des Befehls:

[MsgText]
1=Störung Pumpe 2
17=Überstromabschaltung Rührwerk 2
18=Pegel unterschritten
20=Steuerungsstörung Anlage 2

 

FILETEXT(DateiName) oder FILETEXT(DateiName, Modus)

Diese Funktion liefert den Text, der in der Datei mit dem Namen DateiName abgelegt ist. Ohne die Angabe des Modusses wird nur die erste Zeile geliefert.

Es stehen folgende Modi zur Verfügung

FT_FirstLine Liefert nur die erste Zeile (Standard)
FT_NoCrLf Liefert alle Zeilen wobei die Zeilenvorschübe durch Leerzeichen ersetzt werden.
FT_AllLines Liefert alle Zeilen unverändert.

Achtung !
Diese Funktion begrenzt die Größe des Ergebnisses auf eine Länge von 4kB.

 

QIMPULSE(Ausgang, Impulsdauer)

Es wird ein Impuls auf dem digitalen Ausgang ausgegeben. Die Impulsdauer wird hierbei in Zehntelsekunden angegeben. Eine negative Impulsdauer gibt einen negativen Impuls aus.

QIMPULSE(%Q3, 30) setzt den Ausgang 3 für drei Sekunden

Das Ergebnis der Funktion ist der Zustand des betroffenen Ausgangs vor Ausführung des Befehls.

 

SHL(Wert, Anzahl)

Liefert den um Anzahl Bits nach links verschobenen Wert.

SHL(1, 2) liefert 4

 

SHR(Wert, Anzahl)

Liefert den um Anzahl Bits nach rechts verschobenen Wert.

SHR(8, 2) liefert 2

 

EXECUTE(Kommandozeile[, FensterSichtbar])

Startet ein externes Programm. Wahlweise kann das Fenster des gestarteten Programms sichtbar (=1, Standardwert) oder unsichtbar (=0) sein. 

EXECUTE('Notepad') startet den Windows Editor

Hinweis !
Soll ein Kommandozeilenbefehl ausgeführt werden so muss ausdrücklich der Kommandointerpreter angegeben werden.

Soll zum Beispiel ein externes VBScript Programm ausgeführt werden so muss der Befehl wie folgt angegeben werden.
Es ist sinnvoll in diesem Fall das Fenster des Kommandointerpreters zu verstecken.

EXECUTE('CMD /c MyProg.vbs', 0) 

Ergebnis
Die Funktion liefert als Ergebnis Null, wenn der Prozess fehlerfrei gestartet werden konnte, sonst den Fehlercode des Betriebssystems.

 

DDEEXEC(Server, Topic, Command)

Server Name der DDE Anwendung
Topic Bezeichnung des DDE Themas

Führt einen DDE Befehl für das angegebene Programm aus.

DDEEXEC('Excel', 'System', '[open("C:\TEST.XLS")]')

    Excel öffnet die Datei C:\TEST.XLS.