IBM RPG

RPG
Report Program Generator
Paradigmatöbbelvű
Megjelent1959
FejlesztőIBM
Utolsó kiadásRPG IV version 7 release 1 (2010-04-23)
Típusosságerősen típusos, statikus tipus
DialektusokRPG, RPG II, RPG III, RPG 400, RPG IV, RPG/ILE; RPG/Free, Baby/36, Baby/400, Lattice RPG
Hatással volt rá9PAC, FARGO
Befolyásolt nyelvekRPG II
Operációs rendszerCPF, SSP, OS/400, OS/VS1, z/OS, VS/9, PRIMOS, OpenVMS, Burroughs MCP, Windows


Az RPG (Report Program Generator) vagy RPG IV egy az IBM által kialakított, általános célú programnyelv. Az iSeries (AS/400) natív programnyelveként ismert, de az 1970-es években elterjedten használták mainframe környezetben is (IBM/360, IBM/390). A legutolsó változata (RPG LE) tartalmaz egyszerű funkciókat és eljárásokat statikus és dinamikus linkeket, eszközöket C-ben megirt rutinok hívására, rekurzív és újrahívható (re-entrant) kódot.

Á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 programnyelvvé vált. Az AS400-as gépek bevezetésekor ezt az IBM 50 éves amerikai népszámlálási adatokat tartalmazó lyukkártyakötegekkel demonstrálta.

Az RPG legnagyobb erénye és egyben unikális tulajdonsága az úgynevezett RPG programciklus. 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 ugyanannak a feladatnak az elvégzésére COBOL-ban 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.

Más nyelveken