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:
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:
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.