A GPSS programozási nyelv

Címzési módok

A GPSS-ben az alkotóelemek – a blokkokat is beleértve – végső soron sorszámuk alapján meghatározottak. E sorszám közvetlen vagy közvetett megadásával bármely alkotóelem elérhető. Lehetőség van azonban e sorszámokhoz szimbólumokat hozzárendelni. A hozzárendelés után a szimbólum a sorszámot helyettesíti.
A sorszámok - alkotóelemenként külön-külön – mindig 1-től kezdődnek, és folyamatosan egyesével növekedve a számukra engedélyezett maximális darabszámig tartanak.
A címzés célja egy adott alkotóelem elérése. Az alkotóelem típusa mindig meghatározott a típusával vagy az operandus helyével. Az alkotóelemeknek tehát a sorszáma érdekes. Ezt többfajta címzéssel adhatjuk meg. Ezek a címzési módok azonban nem minden blokkban, nem minden operanusban alkalmazhatók egyformán . Azt, hogy egy adott operandusban mely címzési mód megengedett, azt a k, *n, SNAj, SNA$SYM, és SYM jelekkel fogjuk jelezni. Valamelyik hiánya a neki megfelelő címzési mód tiltottságát jelzi.

Direkt címzés. Az alkotóelemre történő hivatkozás a sorszám közvetlen megadásával történik. Blokkok esetén ez a sorszám a programlista 2..6 oszlopában található. Más alkotóelemek sorszámai kiíratva nem jelennek meg. Alkalmazásának lehetőségét k-val jelöljük.

Indirekt címzés. Az indirekt címzés lényege az, hogy ha egy számot adunk meg, az még nem (közvetlenül) az alkotóelem sorszáma lesz, hanem csak kijelöl egy tárterületet, ahol az igazi sorszám megtalálható. Ilyenfajta címzés a GPSS-ben háromféle van:

  1. Paraméteren keresztül. Ilyenkor a megadott szám egy paraméter sorszámának felel meg (méghozzá mindig a szóban forgó tranzakció paramétereiről van szó), és ennek tartalma adja a tényleges sorszámot. Alkalmazásának lehetőségét *n-nel jelöltük.

  2. Egy SNA-n keresztül. Ilyenkor meg kell adnunk az SNA jelét és sorszámát. Ezen SNA tartalma adja a végső címet. Alkalmazásának lehetőségét SNAj-vel jelöljük.

  3. Paraméteren és SNA-n keresztül. (Kettős indirekt címzés) Ilyenkor az előbbi kettő kombinációját alkalmazzuk paraméter – SNA sorrendben. A SNA jelét egy paraméter sorszáma követi. Az SNA jele és a jelzett paraméter tartalma egy SNA-t jelöl ki. Az SNA tartalma adja meg a végső sorszámot (azaz a paraméter tartalma által meghatározott SNA tartalma által kijelölt alkotóelemről van szó). Alkalmazásának lehetőségét SNA *n-nel jelöltük.

    • Szimbolikus címzés. A szimbólum 3..5 alfanumerikus karakterből áll, amelynek első három karaktere csak betű lehet. Erre a megkötésre azért van szükség, hogy a szimbólumok még véletlenül se essenek egybe az SNA-kkal. A szimbólum és a sorszám egymáshoz rendelése vagy az EQU utasítás segítségével, vagy automatikusan történik. Az utóbbi esetben a szimbólumok alkotóelem-típusonként különálló csoportokat alkotnak (pl. az AAA szimbólum blokkoknál egészen más sorszámot jelenthet, mint kiszolgálóegységeknél vagy függvényeknél). Egy-egy alkotóelem-típuson belül egy szimbólumot a legnagyobb lefoglalt sorszámot követő sorszámhoz kell hozzárendelni. Ilyen szempontból a feldolgozás a lyukkártyák (így tehát a hivatkozások) beolvasásának sorrendjében történik. A szimbólumok és a hozzájuk rendelt sorszámok az alkotóelem-típusok szerint rendezve ábécésorrendben mindig megjelennek a programlistában. Kiértékeléskor a szimbólum mindig helyettesítődik a neki megfelelő sorszámmal. Alkalmazásának lehetőségét SYM-mel jelöljük.

    • Relatív címzés. Csak a szimbolikus címzéssel együtt alkalmazható. Ekkor is csak SYM±k formában, ahol k egy pozitív egész szám. A sorszám ilyenkor mindig a szimbólumnak megfelelő sorszám plusz/mínusz k lesz. Alkalmazni mindig csak akkor lehet, mikor a szimbolikus címzés is megengedett. A blokkok relatív címzésének egy speciális esete, mikor nem adunk meg szimbólumot, hanem a blokk sorszámát, ahol a szóban forgó relatív cím megjelenik, *-gal jelezzük, és ehhez adunk hozzá vagy vonunk le egy konstanst: *±k alakban (pl. a TRANSFER, *+3 az e blokkra következő 3. blokkra ugratja át a tranzakciót).

    • Szimbolikus indirekt címzés. Ilyenkor a szimbólumnak megfelelő sorszám egy SNA-t jelöl ki, és ennek tartalma adja a végső sorszámot. Az SNA jelét és a Szimbólumot egy $ kapcsolja össze (így különbözik a SALAK szimbólum a S$ALAK-tól, azaz az ALAK nevű raktár pillanatnyi tartalmától). Alkalmazásának lehetőségét SNA$SYM-mel jelöljük.