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.