Literale
Ganzzahlige Literale
Dezimal
| 18
|
Binär
| 2#10010
|
Oktal
| 8#22
|
Hexadezimal
| 16#12
|
Der gleiche ganzzahlige Wert in dezimaler, binärer, oktaler und hexadezimaler Schreibweise.
Real-Literale
Notation der reellen Werte
1.0
1.602E-19
Boolesche Literale
Notation der booleschen Werte
0
1
TRUE
FALSE
Getypte Literale
<typename>#<literal>
Getypte Literale, bei denen Typname ein nativer Typ (z. B. Word oder LReal) oder ein Aufzählungstyp ist (um Mehrdeutigkeiten zu vermeiden).
Die Typisierung von Literalen ist in der Regel in GST nicht notwendig, da der Interpreter ein Typisierungssystem implementiert, das ungetypte Literale korrekt behandelt. Es gibt einige wenige Ausnahmen, in denen der Typ eines Literals für die Semantik von Bedeutung ist, wie im folgenden Beispiel.
Beispiel:
Die erste Zuweisung weist w den Wert 16#80 zu, während die zweite Zuweisung den Wert 16#8000 w zuweist.
{
VAR w: word; END_VAR
w := ror(BYTE#1,1);
w := ror(WORD#1,1);
}
Zeichenfolge-Literale
"abc"
'abc'
Notation einer 2-Byte- bzw. einer 1-Byte-Zeichenfolge Beachten Sie, dass es keine implizite Konvertierung zwischen beiden Typen gibt. Die folgenden Escape-Sequenzen können in beiden Arten von Literalen verwendet werden:
| Zeilenvorschub
|
| Zeilenumbruch
|
| Seitenvorschub
|
| Carriage return
|
| Tabulator
|
| Anführungszeichen
|
| Zeichen des angegebenen Codes
|
.
Dauer-Literale
T#[+/-]<value><unit>[…]<value><unit>
TIME#[+/-] <value><unit>[…]<value><unit>
LT#[+/-]<value><unit>[…]<value><unit>
LTIME#[+/-]<value><unit>[…]<value><unit>
Zeitliterale vom Typ TIME oder LTIME. Das Literal besteht aus einem optionalen Zeichen (+/-) und einer Folge von value/ unit Paaren. Value muss eine ganze Zahl sein, mit Ausnahme der letzten Zahl, die auch eine Fließkommazahl sein kann. Values darf nicht negativ sein und kann beliebig groß sein. Units müssen in der folgenden Reihenfolge erscheinen.
| Tag
|
| Stunde
|
| Minute
|
| Sekunde
|
| Millisekunde
|
| Mikrosekunde
|
| Nanosekunde
|
Eine beliebige Untermenge von units kann in einem Literal verwendet werden. So ist zum Beispiel das Literal T#1d15ms1500.01us gültig.
Datumsliterale
DATE#<yyyy>-<mm>-<dd>
D#<yyyy>-<mm>-<dd>
LDATE#<yyyy>-<mm>-<dd>
LD#<yyyy>-<mm>-<dd>
Datumsliteral vom Typ DATE oder LDATE. Das Literal wird als UTC interpretiert, d. h. Zeitzone, Sommerzeit und Schaltsekunden werden nicht berücksichtigt. Die Jahreszahl darf nicht kleiner als 1970 sein. Die Werte yyyy, mm und dd müssen ganzzahlige Werte sein, d.h. D#1980-20-10 ist z.B. ein gültiges Datumsliteral.
Tageszeit-Literale
TIME_OF_DAY#<hh>:<mm>:<ss>
TOD#<hh>:<mm>:<ss>
LTIME_OF_DAY#<hh>:<mm>:<ss>
LTOD#<hh>:<mm>:<ss>
Tageszeit-Literal vom Typ TOD oder LTOD. Das Literal wird als UTC interpretiert, d. h. Zeitzone, Sommerzeit und Schaltsekunden werden nicht berücksichtigt. hh und mm müssen ganzzahlige Werte sein. ss kann eine Ganzzahl oder eine Fließkommazahl sein, d. h. TOD#7:30:3.1415 ist beispielsweise ein gültiges Literal.
Datums- und Zeitformeln
DATE_AND_TIME#<yyyy>-<mm>-<dd>-<hh>:<mm>:<ss>
DT#<yyyy>-<mm>-<dd>-<hh>:<mm>:<ss>
LDATE_AND_TIME#<yyyy>-<mm>-<dd>-<hh>:<mm>:<ss>
LDT#<yyyy>-<mm>-<dd>-<hh>:<mm>:<ss>
Datums- und Zeitliteral vom Typ DT oder LDT. Das Literal wird als UTC interpretiert, d. h. Zeitzone, Sommerzeit und Schaltsekunden werden nicht berücksichtigt. Dieses Literal ist eine Kombination aus dem Datumsliteral und dem Tageszeitliteral. Die entsprechenden Regeln für diese beiden Teile gelten analog.