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:

$L

 

Zeilenvorschub

 

$N

 

Zeilenumbruch

 

$P

 

Seitenvorschub

 

$R

 

Carriage return

 

$t

 

Tabulator

 

$' oder $"

 

Anführungszeichen

 

$<2 or 4 hexadecimal digits>

 

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.

d

 

Tag

 

h

 

Stunde

 

m

 

Minute

 

s

 

Sekunde

 

ms

 

Millisekunde

 

us

 

Mikrosekunde

 

ns

 

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.