I. Ismerkedés a REXX-szel

1. A REXX története

A REXX programozási nyelvet Mike Cowlishaw fejlesztette ki 1979-ben az IBM nagygépeken futó VM operációs rendszerre. A 80-as évek elején a REXX a VM rendszer részévé vált, s az IBM-tôl független cégek elkészítették a REXX Atari, UNIX, DEC, Amiga, Windows és DOS-os változatát is. Az OS/2 szerves részévé az OS/2 1.3 megjelenésével vált, s rövid idôn belül nagy népszerûségre tett szert. Ennek az is oka volt, hogy a REXX-et a felhasználók véleménye alapján tervezték, s az elsôdleges cél a felhasználó kényelmének biztosítása volt. Talán az egyetlen kellemetlen tulajdonsága a teljes neve: REstructured eXtended eXecutor (kb. átstrukturált és kiterjesztett végrehajtó).

2. A REXX elônyös tulajdonságai

Könnyû használhatóság
A legtöbb REXX parancs közönséges angol szavakból áll, mint pl. a SAY vagy a PARSE, így könnyen tanulhatók és nem kell rövidítéseket vagy zsargonokat megjegyeznünk. Ugyanakkor a REXX tartalmazza a modern programozási nyelvekre jellemzô strukturált felépítést, így a más nyelvek használatakor szerzett programozási tapasztalat könnyen átültethetô. A kód formátumára nézve igen kevés megkötés van, s a felhasználó majdnem teljesen szabadon formázhatja programját. A REXX ún. interpretált nyelv, ami azt jelenti, hogy a megírt kód azonnal futtatható és nincs szükség a pl. C vagy Pascal nyelvek esetében elmaradhatatlan közbensô lépésre, a fordításra.

Beépített függvények sokasága
A REXX nagyon sok beépített függvénnyel rendelkezik, amelyekkel szinte minden feladatot (fájlok manipulálása, adatfeldolgozás, debuggolás stb.) megoldhatunk. Más nyelvek esetében sokszor magunknak kell megírni azokat a függvényeket, amelyek a REXX-ben eleve benne vannak.

Ingyen adják az OS/2-höz
Mivel a REXX már évek óta az OS/2 szerves része, ezért minden OS/2 vásárló automatikusan és ingyen hozzájut.

Megsokszorozza az OS/2 erejét
A REXX OS/2-es változata olyan kiegészítéseket is tartalmaz, amelyekkel pl. a WPS (Workplace Shell) objektumok és az OS/2 INI fájljai is manipulálhatóak. REXX programokkal könnyedén automatizálhatunk olyan folyamatokat, amelyek egyébként igen idôigényesek. Aki pl. sokszor telepít rendszert és nem akarja a Munkaasztal egyedi beállításait minden esetben kézzel megcsinálni, annak érdemes a kívánt átalakításokat egy REXX programmá "fordítania". Késôbb aztán a programot futtatva bármikor pillanatokon belül elkészíthetô a kívánt felépítésû Munkaasztal!

3. A REXX programok és a batch (köteg) fájlok kapcsolata

Már az elsô alkalommal szembetûnik, hogy a REXX programok és a batch fájlok nagyon sok közös tulajdonsággal rendelkeznek. Azonos pl., hogy mindkét fajta állomány CMD kiterjesztéssel rendelkezik és hogy az OS/2 parancssorból futtathatók. A REXX azonban jóval több, mint egy közönséges batch-nyelv, s sokkal inkább közelebb áll a jól ismert strukturált programozási nyelvekhez (BASIC, PASCAL). A közös kiterjesztés miatt azonban sajnos "kívülrôl" nem láthatjuk, hogy REXX, vagy pedig batch programmal van-e dolgunk. Ennek eldöntéséhez sajnos bele kell néznünk a kérdéses fájlba. Amennyiben megjegyzés (comment) sorral (pl. /* Ez egy REXX program elsô sora */) kezdôdik a fájl, akkor van csak REXX programról szó.

4. Felkészülés REXX programozásra

A REXX programozás legfontosabb kelléke a szövegszerkesztô. Elvileg bármilyen szövegszerkesztô használható, amennyiben ASCII módban mentjük el a kódot. Ennek ellenére az a legegyszerûbb, ha az OS/2 beépített szerkesztôit (e.exe, epm.exe) használjuk. A fejlett szövegszerkesztô (Enhanced Editor, epm.exe) különösen ajánlott, mivel REXX programozást támogató funkciókat is integráltak bele. A szövegszerkesztôn kívül természetesen szükség van még az OS/2 REXX komponensére is. Amennyiben az alapértelmezés szerinti beállításokkal telepítettük az OS/2-t, akkor a REXX támogatás adott. Ha nem, akkor a REXX komponenst a Módosító Telepítô (Selective Install) futtatásával tehetjük fel. Amennyiben nem tudjuk eldönteni, hogy jelen van-e a REXX támogatás, akkor írjuk be OS/2 parancssorba a VIEW REXX utasítást. Ha minden rendben van, akkor az online REXX segítség kell, hogy megjelenjen.

5. Az elsô REXX program

Indítsuk el a szövegszerkesztônket és gépeljük be az alábbi programot! Vigyázzunk arra, hogy a megjegyzés (elsô) sor a fájl legelsô pozícióján kezdôdjön, különben a parancsértelmezô batch fájlként fogja programunkat kezelni! Az igazi kód tulajdonképpen a harmadik sorral kezdôdik, ahol azt adjuk meg, hogy a program argumentuma (amennyiben létezik) a world változóban kerüljön eltárolásra. Az ötödik sorban kiíratjuk a Hello szót és a world változó tartalmát. Ha a programot argumentum nélkül hívtuk meg (tehát a world változó nem kapott értéket), akkor a REXX (jobb híján) a változó nevét fogja kinyomtatni. Az utolsó sor (exit) a programból való kilépést jelenti.

/* Az elsô REXX program */

If Arg() >< 0 Then 
		ARG world
Say 'Hello 'world'!'

exit

Aki az EPM-et használja a szerkesztéshez, az megfigyelheti, hogy az If begépelése és a szóköz megnyomása után az EPM automatikusan beír még néhány szót. Ezt hívják az EPM automatikus kódkiegészítô funkciójának, ami elsô pillanatban inkább zavaró, mint segítô. A kódkiegészítés kikapcsolható, ha megnyomjuk a CTRL-I billentyûket és a megjelenô ablakocskában beírjuk az expand off parancsot.

Vegyük fel a kódot HELLO.CMD név alatt, majd pedig váltsunk OS/2 parancssorban ahhoz az alkönyvtárhoz, ahová elmentettük a programot és futtassuk a hello parancs begépelésével. Amennyiben helyesen gépeltünk be mindent, a képernyôn az alábbi választ fogjuk látni:

Hello WORLD!

Ha pl. az olvaso paraméterrel indítjuk a programot, akkor a várakozásoknak megfelelô "Hello OLVASO!" választ kapjuk.

Gratulálunk elsô REXX programjához!

6. Hibaüzenetek értelmezése

Nagyon sokszor elôfordul, hogy valamit elrontunk programozás közben. Ilyenkor a REXX egy hibaüzenetet ad vissza és a program futása megáll. Ennek demonstrálására töröljük ki a HELLO.CMD program If Arg() >< 0 Then sorából a Then kulcsszót, mentsük el majd pedig futtassuk az elrontott programot. Erre a következô, tipikusnak mondható REXX hibaüzenetet kapjuk:

     3 +++   Arg world;
REX0018: Error 18 running E:\rexx\hello.cmd, line 3: THEN expected

TIPP: Ha a szerkesztéshez parancssorból indított EPM-et használunk, akkor próbáljuk meg a start epm hello.cmd paranccsal indítani! Ekkor az EPM-ben szerkeszthetjük a fájlt, a parancssorban pedig futtathatjuk anélkül, hogy az EPM-et be kellene zárni.

A REXX automatikusan kinyomtatja a hibásnak talált sort illetve annak számát, amit egy rövid magyarázat is követ. Bôvebb információt kaphatunk, ha begépeljük a hiba kódját a help paramétereként:

C:\>help REX0018

REX0018: ***THEN expected***

EXPLANATION: All IF clauses and WHEN clauses in REXX must be followed
             by a THEN clause.  Some other clause was found when a
             THEN was expected.

Vegyük észre, hogy a REXX nem azt a sort találta hibásnak, amelyikbôl eltávolítottuk a Then kulcsszót, hanem az arra rákövetkezôt. Ez azért van, mert a REXX-nek a következô sort is meg kellett vizsgálnia ahhoz, hogy biztos legyen abban, hogy a Then szó hiányzik. Ez egy viszonylag gyakori jelenség, ezért hibakereséskor ne felejtsük el megvizsgálni a hibaüzenetben megadott sort megelôzô sort sem!

Ez a cikk egy 1 + 20 részesre tervezett REXX tanfolyam bevezetô leckéje. A következô leckével indul az igazi tanfolyam, amikor is a REXX alapszabályairól lesz szó.

Kádár Zsolt
1997. 07. 24.
[ Következô lecke | Tartalom ]