ARexx I.

Jan Petkov

Má to ARexx? Tak tohle určitě není vaše první otázka máte-li před svými zraky nový software. Ale měla by být. Proč? To si povíme právě v tomto novém seriálu.

Překládáte cizojazyčný text a z neustálého přepínání mezi editorem a slovníkem už vám šedivý vlasy? Nestalo se vsím že váš draze zaplacený software nedisponoval samozřejmými funkcemi a chcete vědět jak na něj vyznít Neptáte se proč v každém druhé utilitě narazíte na tajemné okénko pod značkou Arexxu? Neumí váš image processing zpracovávat animace? Nevadí, stačí Arexx port! (A šikovný uživatel.)
Arexx skutečně není pro počítačový svět úplnou novinkou, tento jazyk je postaven na starším bratříčkovi jménem REXX, který byl vyvinut, tak jako téměř vše v oblasti „nul a jedniček“, v laboratořích firmy IBM. Původně byl nový jazyk navržen pro širokou obec uživatelů, u kterých se nepředpokládají a hlavně nevyžadují hlubší programátorské znalosti. Z toho pro nás plynou velmi potěšující skutečnosti: REXX je snadno instalovatelný, lehce pochopitelný a velmi přístupný. Na Amize se z Arexxu stal mocný nástroj využívaný především pro komunikaci mezi aplikacemi. K jeho ovládnutí postačí obyčejný textový editor (doporučujeme CED nebo GED), rezidentní interprety RexxMast a tento kurz z časopisu AMIGA Review.
Tímto vás oficiálně vítám u vzniku nového seriálu, tentokráte o jazyku AREXX. Nebudeme od vás vyžadovat víc jak základní znalosti programování. Na oplátku ani vy od nás neočekávejte, že se po přečtení dnešního čísla stanete neprůstřelnými agenty s vizitkou Arexx. Ty z vás, kterým by náš přehled nestačil v rychlosti ani síle, odkazuji na dokumentaci ze sítě AMINET a to jmenovitě ArexxGuide od Robina Evanse nebo ArexxGuide od South West Amiga Group.

Instalace
Uživatelé novějšího sytému naleznou v „SYS:System/“ rezidentní ovladač RexxMast, který je nutné spustit ze všeho nejdříve. Doporučuji přesunout pod pokličku (do adresáře) „SYS:WBstartup“. Adresář „SYS:Rexxc“ vám nabídne pomocné utility, které musí být dostupné v seznamu cest (path SYS:Rexxc ADD). Pro úplnost ještě podotýkám, že potřebujete knihovny „mathieeedoubbas.library“ a „rexsyslib.library“, které jsou ve standardní výbavě. Arexx běží velmi dobře i ve starších verzích AmigaDOSu (1.3 a níže), bohužel si jej však musí tito skalní uživatelé Amigy opatřit od svých bohatších kolegů.

Adresář „REXX:“
Arexxovské programy se spouštějí pomocí utility „RX“, která implicitně prohledává tento adresář. Máte-li uložen zdrojový text pod „REXX:test.rexx“ lehce jej spustíte voláním „RX test“.

Začínáme
Téměř každý z nás se už setkal s nějaký programovacím jazykem vyšší úrovně. Následující příklady nám osvětlí nejednu podobnost. Vyzkoušejme si je.

Program č. 1
Opište si následující program, jenž se stal ve všech programovacích jazycích legendou.

/* ARexx#1 pro nezletilé */
SAY „Hello, world!“

Uložte do „RAM:test.rexx“. V Shellu napište „RX RAM:TEST.REXX“. Reakce okamžitá. Buď chybu nebo krásný výpis. V prvním případě překontrolujte program a následně proces instalace. Jinak pokračujeme. První řádek našeho zdrojáku je poznámka. Poznámkuje libovolný text mezi znaky „/*“ a „*/“, který se nevykonává. Poznámky se vnořují. Každý arexxovský program musí začínat poznámkou. Není ovšem pravidla bez výjimky, tedy program, který se vám podaří vměstnat na jeden řádek nemusí poznámkou začínat (to už je ovšem o něčem jiném). Druhý řádek je už hotovým příkazem, jenž vypíše řetězec „Hello, world!“.

Program č. 2
Následující program, přečte informaci ze vstupu a něco pěkného nám řekne.

/* Arexx#2 - stáří */
SAY „Kolik máte let?“
PULL Roky
SAY „Dnes máte asi“ Roky*365 „dnů“

Instrukce PULL přečte hodnotu ze vstupu do proměnné „Roky“. Pozor! Arexx nerozlišuje malá a velká písmena (Roky = ROKY). Všimněte si, že proměnná se nemusí deklarovat, typ její hodnoty je kontrolován až podle použité operace. Rozlišují se jen dva základní typy proměnných čísla a řetězce (čísluje třeba 122; řetězec slovo „Ahoj“). Zkuste programu zadat místo věku třeba jméno vaší babičky.

Program č. 3
Žádný jazyk se neobejde bez cyklů, Arexx není výjimkou.

/* Arexx#3 - cyklíme */
DO i = 1 TO 10
SAY i i**2 i**3
END
SAY „Hotovo“

Desetkrát nám program vypíše hodnotu řídící proměnné „i“ a její druhé a třetí mocniny, výpočet nám zajistí operátor „**“.

Program č. 4
Každá otázka se řeší testem, každý problém podmínkou.

/* ARexx#4 - lichýsudec */
DO i = 1 TO 10
IF i//2 = 0 THEN typ = „sudé“
ELSE typ = „liché“
SAY i „je“ typ
END

Příklad představil operaci „//“, jenž vypočítá zbytek po celočíselném dělení.

Program č. 5
Není funkce bez fce, definici a volání funkcí v Arexxu ukáže tento výpis:

/* Arexx#4 - fce */
DO i=1 TO5
SAY i Mocnina(i,2)
END
EXIT
Mocnina: ARG x,y RETURN x**y

Pětkrát nám proběhne cyklus, ve kterém se volá námi definovaná fce „Mocnina“. Tato funkce spočte „x na y“ v našem případě „i na druhou“. Parametry se zadávají v závorkách. Samotná fce sedí až na konci programu. Každá fce začíná svým jménem ukončeným dvojtečkou, „ARG x,y“ definuje počet parametrů a pomocí RETURN se vrací vypočtená hodnota. Podobnost s „Céčkem“ se nedá popřít. Příkaz EXIT zajistí ukončení programu na správném místě ve správný čas.

Program č. 6
Nakonec ještě něco netradičního. Spusťte si to a uvidíte. Snad už jen jednu poznámku: třetí řádek ukazuje, jak vměstnat vedle sebe více příkazů. Středník je jeden ze znaků se speciálním významem. Více se dozvíme v příštím čísle.

/* Arexx#6-krokujeme */
TRACE RESULTS
suma=0; suma2=0:
DO i=1 TO 5
suma = suma + i
suma2 = suma2 + i**2
END
SAY „Suma=“ suma „Suma**2=“ suma2



Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.

Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing