RPG

A Wikipédiából, a szabad enciklopédiából.

(RPG programozási nyelv szócikkből átirányítva)
További jelentéséhez (Role Playing Game) lásd a szerepjáték szócikket

RPG (Report Program Generator) vagy RPG IV egy az IBM által kialakított programnyelv. Jelenleg, mint az iSeries (AS/400) natív programnyelve ismert, de a múlt század 70-es éveiben elterjedten használták mainframe környezetben is (IBM360, IBM390). A legutolsó változata (RPG LE) tartalmaz egyszerű funkciókat és eljárásokat statikus és dinamikus linkeket, eszközöket C-ben megirt rutinuk hívására, rekurzív és újrahívható (re-entrant) kódot.

Tartalomjegyzék

[szerkesztés] Áttekintés

Az eredetileg az 1928-tól az IBM által gyártott lyukkártya feldolgozását végző kártyaválogató gépek mechanikai algoritmusának digitális megvalósítását biztosító query eszközből, nagy teljesítményű funkcionális programnyelvé vált.

Az RPG legnagyobb erénye és egyben unikális tulajdonsága az úgy nevezett RPG program ciklus volt. Ez azt jelenti, hogy minden RPG program önmagában egy implicit ciklust hajt végre. Ez a ciklus egy vagy több fájl minden rekordján végezhet műveleteket. A ciklus folyamán, amíg a programciklus explicit módon be nem fejeződik, lehetőség van interaktív lépések beiktatására is. Ez az implicit RPG ciklus a szekvenciális adathordozók korában rendkívüli módon megkönnyítette a programozók dolgát, egy RPG-ben megírt táblázó program mindössze pár kártyából (sorból) állt, míg ugyan annak a feladatnak az elvégzésére COBOL-ban sokszor több száz soros programot kellett írni. A közvetlen hozzáférésű adathordozó megjelenését követően az RPG ciklus elveszítette jelentőségét. Napjainkban az RPG programozók a nyelvben egyébként megtalálható cikluskezelő eljárásokat (do until, do while) használják.

Az AS400-as gépek bevezetésekor ezt az IBM 50-évs amerikai népszámlálási adatokat tartalmazó lyukkártya kötegekkel demonstrálta.

[szerkesztés] Története

Az RPG az egyetlen még napjainkban is használt programnyelv, amelyet lyukkártya feldolgozó gépek vezérlésére készítettek. Eredetileg az IBM az 1960-as évek elején fejlesztette ki az akkor legelterjedtebb IBM 1401 számítógépre. Eredeti elnevezése: Report Program Generator jelzi, hogy adat fájlokból kimutatások, táblázatok generálása használták: részösszegek, összegek stb. automatikus képzésére. Az akkor létező alternatív programnyelvek mellett, COBOL vagy FORTRAN (az egyik nagyon munkaigényes, a másik tudományos célra készült) az RPG IBM gépeken, gazdasági környezetben, verhetetlen volt.

Az RPG fejlesztését az IBM változatlanul folytatta a nagygépes rendszerei (mainframe) számára is, így került piacra a S/390 programnyelveként az RPG II.

Az IBM a System/3-as rendszerét eredetileg, mint könyvelő gépet (Tabulátor machine) fejlesztették ki, de alkalmassá tették RPG-ben írt programok futtatására is. Így a System/3-nak és továbbfejlesztet változatainak (System/32, System/34, és System/36) is az RPG volt a natív programnyelve.

Gyökeres változást az RPG III. hozott, ezt a System/38 számára fejlesztettek ki. Az RPG III már korlátozottan közvetlen hozzáférésű (DASD) eszközök kezelésére alkalmas utasításokat is tartalmazott. Legjelentősebb újítások a RPG III-ban a modern struktúrák IF-ENDIF blokkok, DO ciklusok, és a szubrutinok bevezetése volt A System/38 utódja az AS/400. Ez egy középkategóriás számítógép család (eServer, iServer) ennek a natív programnyelve az RPG/400 a korábbinál sokkal letisztultabb szintaxissal és integrált adatbázis-kezelő eszközökkel. Rendelkezett saját szerkesztő programmal, ez megfelelő maszkokkal támogatta a különböző típusú utasítások beírását.

1994-ben jelentették be az RPG IV-et (RPG/LE vagy RPG/ILE). Ez a C-2 specifikációk körében nagyszámú és változatos új utasítást tartalmazott: funkciókat és eljárásokat, statikus és dinamikus linkeket, eszközöket C-ben megirt rutinuk hívására, rekurzív és újrahívható (re-entrant) kódot.

2001-ben a i5/OS V5R1 változata az RPG-nek mégnagyobb szabadságot hozott a programozóknak a szabad formátum (free-format) bevezetésével, megszabadítva őket az eredeti kötött, oszlopfüggő forrásnyelvi formátumtól.

A /FREE „C” (calculation) utasítást követően az EVAL és CALLP utasítások tetszőleges oszlopba írhatók, így a szintaxisuk sokkal jobban hasonlít a szokványos programnyelvek szintaxisára.

[szerkesztés] A nyelv szerkezete

Az RPG program feldolgozása egy programciklus végrehajtásával történik. Ennek az RPG programciklusnak a lépései újra és újra végrehajtódnak egészen addig, amíg a program, vagy a futtatási környezet egy kitüntetett kapcsolót (triggert), ez az LR (Last Record), be nem kapcsol. Ez leállítja a program futását. Az első lépés a fejléc (Header) általános leíró információinak a feldolgozása. Ezt követi egy adatrekord beolvasása és ennek a feldolgozása. A következő lépés a feldolgozott adatok kiírása, kivitele. A feldolgozást különböző kapcsolók (triggerek) vezérlik. Legfontosabb a már fentebb említett LR kapcsoló. Ameddig az LR kapcsoló kikapcsolt (OFF) állapotban van, a feldolgozás a következő rekorddal folytatódik. A kapcsoló elnevezése egyébként a szekvenciálisan feldolgozott adathordozó utolsó rekordjára utal (Last Record).

Egy egyszerű RPG II programot 5 utasításból össze lehetett állítani:
  • H Fejléc (Header) --- az általános feltételeket és értékeket határozza meg.
  • D Adatleíró (Data description) --- a programban használt fájlokleírása: általában a következő információkat tartalmazza: fájlnév, az adatok felhasználásának módja, rekord formátum és hossz, kimeneti vagy bemeneti egység hozzárendelése.
  • I Bemeneti utasítások (Input) --- a konstansok és adatstruktúrák mezőinek leírása.
  • C Végrehajtandó utasítások (Calculation) --- az adatok feldolgozására használt utasítások
  • O Kimeneti utasítások (Output) --- a kimeneti rekordok mezőinek egyéb feltételeinek és formátumának leírása.

[szerkesztés] Mintaprogram

 1   H
 2   H*
 3   H* VEVŐ KÁRTYÁK FELVITELE (1-2) EGY, A VEVŐKET TARTALMAZÓ MÁGNESSZALAGRA
 4   H*
 5   FINCARDS IPE F  80  80            READ40
 6   FOUTTAPE O   F2900 116            TAPE         S
 7   IINCARDS 011 01   1 C1
 8   I                                        3   90CUST#
 9   I                                       11  21 VNEEV
10   I                                       25  34 KNEEV
11   I                                       36  60 CIIM
12   I        021 02   1 C2
13   I                                        3   90CUST#
14   I                                       11  30 VAROS
15   I                                       32  33 MEGYE
16   I                                       35  39 ISZAM
17   OOUTTAPE D        03
18   O                         ISZAM     81
19   O                         MEGYE     76
20   O                         VAROS     74
21   O                         CIIM      54
22   O                         KNEEV     29
23   O                         VNEEV     18
24   O                         CUST#      7

  • Rákosi Miklós, Az RPG programozási nyelvek. Budapest, Műszaki Könyvkiadó. 1979. 330 p



Főbb programozási nyelvek (továbbiak) +/-

Imperatív: FortranCC++C#JavaPascalDelphiAda

Script: JavaScriptVisual BasicPHPPythonPerlsh

Funkcionális: HaskellLispScheme

Egyéb: ABAPAwkCOBOLPL/SQLSASSQLEiffelLogoScratchSMLSmalltalk

Történelmi: ALGOLAPLBASICClipperMUMPSPL/IRPGSimula

A lap eredeti címe "http://hu.wikipedia.org/wiki/RPG"
Személyes eszközök