Elemi típusok
Diszkrét típusok
- LONG vagy LONG UNSIGNED 0 és 232-1 közötti előjel nélküli egész szám
- LONG SIGNED: -231 és 231-1 közötti előjeles egész szám
- WORD vagy WORD UNSIGNED 0 és 216-1 közötti előjel nélküli egész szám
- WORD SIGNED: -215 és 215-1 közötti előjeles egész szám
- BYTE vagy BYTE UNSIGNED 0 és 28-1 közötti előjel nélküli egész szám
- BYTE SIGNED: -27 és 27-1 közötti előjeles egész szám
Típuskonstrukciók
Tömb típusok
- VECTOR [ méret, típusméret, előjel ] egydimenziós tömb, adott mérettel, (byte-ban) adott méretű típusból (ha ez nincs megadva, akkor 4, azaz LONG) és előjellel (SIGNED) vagy előjel nélkül (alapértelmezés vagy UNSIGNED)
- BITVECTOR [ méret ] adott számú bitből álló bitvektor, helyfoglalás szempontjából a méret a következő 8-cal osztható számra kerekítődik fel
- BLOCK [ blokkméret, típusméret ] tulajdonképpen a rekord megfelelője. Használatát lásd a 6. fejezetben
- BLOCKVECTOR [ méret, blokkméret, típusméret ] blokkokból álló vektor
Változó-deklarációk
Azonosítók
Betűkből, számjegyekből valamint aláhúzás és dollár jelekből álló karaktersorozatok, amelyek nem számjeggyel kezdődnek.
Permanens deklarációk
Permanens deklaráció esetén az adatterület a program indításakor lefoglalásra kerül, és az adatok az egész program futása során megmaradnak benne.
OWN név : típus INITIAL ( kezdőérték ) - egy blokkra lokális változót deklarál adott típussal (alapértelmezett LONG) és opcionálisan kezdőértékkel, amit a változó a blokk első futásakor vesz fel.
Példa:
ROUTINE KILO =
BEGIN
OWN
X : INITIAL ( 0 );
X = .X + 1;
IF .X LEQ 1000 THEN 1 ELSE 0
END;
GLOBAL név : típus INITIAL ( kezdőérték ) - hasonló az előzőhöz, de az itt deklarált változó más blokkokban is látható (explicit deklaráció mellett).
FORWARD név : típus INITIAL ( kezdőérték ) - előre deklarál egy változót, ami később OWN-ként vagy GLOBAL-ként deklarálásra kerül.
Példa:
FORWARD
Y;
OWN
X : INITIAL ( Y ),
Y : INITIAL ( X );
EXTERNAL név : típus INITIAL ( kezdőérték ) - egy másik blokkban GLOBAL-ként deklarált változót az aktuális blokkban láthatóvá tesz
Ideiglenes deklarációk
Ideiglenes deklaráció esetén az adatterület csakis a blokk futása alatt van lefoglalva, blokkból való kilépéskor a benne lévő adatok is elveszhetnek
LOCAL név : típus INITIAL ( kezdőérték ) - egy blokkra lokális változót deklarál adott típussal (alapértelmezett LONG) és opcionálisan kezdőértékkel, amit a változó a blokk minden futásakor felvesz.
REGISTERnév = regiszterszám : típus INITIAL ( kezdőérték ) - a LOCAL-hoz hasonló, de a változó egy előre meghatározott gépi regiszterben fog helyet foglalni. Ha a regiszter száma nincs megadva, a fordító választ egy regisztert.
Példa:
REGISTER
STATUS = 5 : BITVECTOR [ 10 ],
BETA;
GLOBAL REGISTERnév = regiszterszám : típus INITIAL ( kezdőérték ) - az előzőhöz hasonló, de egy, a blokkból hívott rutin is hozzáférhet a változóhoz, ha abban szerepel ugyanez a deklaráció EXTERNAL-ként.
EXTERNAL REGISTER név = regiszterszám : típus INITIAL ( kezdőérték ) - az előző párja a hívott rutinban.
MAP név : típus - egy már deklarált változónak változtatja meg az attribútumait (pl. a típusát).
Kifejezések
Elsődleges kifejezések
Numerikus literálok
Példák:
- 15 ! Decimális szám
- %B'1111' ! Bináris szám
- %O'17' ! Oktális szám
- %DECIMAL'15 ! Decimális szám
- %X'F' ! Hexadecimális szám
- %C'A' ! Karakter
Karakterfüzér-literálok
Példák:
- %ASCII'ABCD' ! Egyszerű karakterfüzér
- %ASCIIZ'ABC' ! Nullával terminált karakterfüzér
- %ASCIIC'ABC' ! Karakterfüzér, amelynél az első karakter előtti bájtban a karakterek száma található
- %ASCIID'ABCD' ! Karakterfüzér leírója, amely tartalmazza a címét és a hosszát
- %RAD50_11'ABC123' ! Csak nagybetűket, számjegyeket, pontot, dollár-jelet és szóközt tartalmazhat, Radix-50 formátum
- %P'+123' ! Csak számjegyeket és előjelet (+ vagy -) tartalmazhat, BCD formátum
Aritmetikai kifejezések
Operátor kifejezések
- Unáris prefix operátorok: + - (előjel) NOT (logikai vagy bitenkénti tagadás)
- Bináris operátorok: ^ (biteltolás) * / MOD + - (aritmetikai operátorok) EQL EQLU EQLA (egyenlő) NEQ NEQU NEQA (nem egyenlő) LSS LSSU LSSA (kisebb) LEQ LEQU LEQA (kisebb vagy egyenlő) GTR GTRU GTRA (nagyobb) GEQ GEQU GEQA (nagyobb vagy egyenlő) (U: előjel nélküli összehasonlítás; A: címek összehasonlítása) AND OR XOR EQV (logikai vagy bitenkénti operátorok)
Beépített függvények:
- ABS, SIGN (egy argumentum, abszolut érték és előjel)
- MAX, MAXU, MAXA, MIN, MINU, MINA (maximum illetve minimum kiválasztás tetszőleges számú előjeles számra, előjel nélküli számra vagy címre)
Struktúra hivatkozások:
X=.A [ .I ]
TABLE [ Q ( .X + 2 ) + 3 ] = 5
F ( ALPHA [ FIELDNAME, .J - 1 ] )