Az RPG programozási nyelv

Bevezetés

Előszó

Már a neve is mutatja (RPG - Report Program Generator), hogy alapvetően nem általános célra készült a nyelv, hanem kifejezetten adatbáziskezelési feladatok rendkívül hatékony és megfelelően biztonságos végrehajtására. A nyelv célorientált, alkalmazási területe az adatfeldolgozást öleli fel.A COBOL-lal összehasonlítva az RPG nyelvű kódok jóval rövidebbek (természetesen tudni kell "olvasni" a kódot ahhoz, hogy értsük -ez az RPG esetében nem triviális feladat), és még szorosabb kapcsolatot tart fenn az OS/400-zal, ami tovább növeli a hatékonyságot. Az RPG formai jegyeit erősen meghatározza az, hogy abban a korban született, amikor a programokat meg kártyákon tárolták, onnan vitték be a számítógép központi tárába. A lyukkártya 92 oszlopa 92 karaktert, azaz 1 sornyi információt képes hordozni.

A következő kártyákat különbözteti meg a nyelv:
(Az alábbi jelek a kártyák első (nem folytatósort jelölő) pozícióin találhatók meg.)

(Az RPG programnál a különböző kártyák mindig a fent említett sorrendben követik egymást.)

Az RPG (bár vannak újabb verziói) máig megőrizte azt a fentiekből következő jellemvonását, hogy kötött pozíciójú nyelv. Ez egyfelől előny, másfelől viszont kezdetben meglehetős erőfeszítést kíván a programozótól az RPG kódok megértése. Hogy mi lehet előnyös a kötött szerkezetben? Rendkívüli információtömörséget ad.

Pl. FZCOMDC0PIF E K DISK
A fenti sor például a könyvtárlistában található zcomdc0p nevű fájlt és annak rekordszerkezetét specifikálja, megmondja, hogy input file, teljesen procedurális a feldolgozása, kulcsozott file, es a lemezen van tárolva. Fordításkor az operációs rendszer erős támogatásával a rekordszerkezet és annak mezői mint változók ismertté válnak a program számára, beolvasódnak a típusai (bár itt egy kisse más, egyszerűbb a típusfogalom, mint a modernebb nyelvekben). Az RPG arra készült, hogy nagy, kulcsozott adatfájlok listázását elvégezze. Egy ilyen program rendkívül röviden megírható RPG-ben, úgy, hogy megmondtuk azt is, hogy a különböző szintű kulcsváltásokkor milyen lábléc ill. fejléc íródjék ki. Ezt az RPG programciklusa teszi lehetővé, amely elsődlegesen vagy másodlagosan kulcsozott fájlok elemenkénti feldolgozását különösebb kód irása nélkül maga elvégzi. A gyakorlatban természetesen nem így, hanem hagyományos procedurális nyelvként használjuk Hogy az RPG lehetőségei ennél sokkal tágabbak, azt mutatja például az, hogy komplett banki tranzakciókezelő és számlavezető rendszert írtak RPG-ben Telebank, Commercial Access, ATM screenek, PIN levélboriték nyomtató támogatással, és a program a bankok számára megfelelő sebességgel, biztonsággal, titkositással működni képes.

A nyelv történetéről

Az RPG első változatát az 1960-as évek elején mutatta be az IBM, az első fordítóprogram a TOS (Tape Operating System) szalagvezérlőrendszer alatt futott. 1970-ben jelent meg a nyelv továbbfejlesztett változata, az RPG II. Az igazi sikert ugyanakkor az IBM S/3 rendszere (az AS/400 elődje) hozta, amely olcsóságával és RPG-ben programozhatóságával nagy sikert aratott, ugyanis mivel az RPG kevéssé hasonlított az akkor elterjedt programozási nyelvekhez (COBOL, FORTRAN, stb.), segítségével eloszlatható lett a a potenciális számítógépvásárlókat könnyen elriasztó misztikum a programozás körül. A nyelv tovább élt (és fejlődött) a a S/3 utódain is (RPG III, RPG IV), és az AS/400-ra írt programok túlnyomó része még ma is RPG-ben születik.

Elérhető fordítók, irodalom

Mivel a nyelv meglehetősen kötődik az IBM AS/400 rendszereihez, ezért RPG fordítókat is ezekre a rendszereken találhatunk. (Esetleg még az IBM mainframe-jein (IBM S/390, ill. zSeries), de az sem igazán jellemző.) Fontos tudni, hogy az OS/400 két programozási környezetéhez (OPM, ILE) külön fordító (és nyelvváltozat) illeszkedik, előbbi az RPG/400, utóbbi az ILE RPG IV. A nyelvváltozatok referenciái az IBM weboldalain találhatók meg (pontosabbat nehéz lenne írni, mert az IBM folyton változtatja az URL-jeit, az ismert keresők segítségével egy ILE RPG reference vagy egy ILE RPG Programmer's Guide megtalálása nem okozhat gondot).

Megjegyzés

Mielőtt elmerülnénk a részletekben, szükséges megemlíteni, hogy az RPG nyelv egyes verziói nagy különbséget mutatnak mind tudásban, mint konkrét szintaktikai eszközeiben (pl. a nyelv legújabb verziói már tartalmaznak -- a nyelv korábbi verzióitól teljesen idegen -- lehetőséget a szabad indentálhatóságra). Az alábbiakban, ha külön nem jelöljük az ILE RPG IV. verziójáról lesz szó.