Rexx - Rexx

Rexx
Rexx-img-lg.png
Paradigma multiparadigm : procedurální , strukturovaný
Navrhl Mike Cowlishaw
Vývojář Mike Cowlishaw, IBM
Poprvé se objevil 1979 ; Před 42 lety ( 1979 )
Stabilní uvolnění
ANSI X3.274 / 1996 ; Před 25 lety ( 1996 )
Kázeň při psaní Dynamický
Rozšíření názvu souboru .cmd, .bat, .exec, .rexx, .rex, EXEC
Hlavní implementace
VM/SP R3, TSO/E V2, SAAREXX, ARexx , BREXX, Regina, Personal REXX, REXX/imc
Nářečí
NetRexx , Object REXX , nyní ooREXX , KEXX
Ovlivněn
PL/I , ALGOL , EXEC , EXEC 2
Ovlivněn
NetRexx , Object REXX

Rexx ( Přepracovaná Extended vykonavatel ) je vykládán programovací jazyk vyvinutý v IBM od Mike Cowlishaw . Jedná se o strukturovaný programovací jazyk na vysoké úrovni navržený pro snadné učení a čtení. Proprietární a open source tlumočníky Rexx existují pro širokou škálu výpočetních platforem; pro počítače na sálových počítačích IBM existují kompilátory .

Rexx se používá jako skriptovací a makro jazyk a často se používá ke zpracování dat a textu a generování zpráv; tyto podobnosti s Perlem znamenají, že Rexx funguje dobře v programování Common Gateway Interface (CGI) a skutečně se k tomuto účelu používá. Rexx je primární skriptovací jazyk v některých operačních systémech, např. OS/2 , MVS , VM , AmigaOS , a používá se také jako interní makro jazyk v některém dalším softwaru, jako je SPFPC , KEDIT , THE a emulátor terminálu ZOC . Kromě toho lze jazyk Rexx použít pro skriptování a makra v jakémkoli programu, který používá jazyky skriptovacích strojů Windows Scripting Host ActiveX (např. VBScript a JScript), pokud je nainstalován jeden z motorů Rexx.

Rexx je dodáván s verzí VM/SP Release 3 up up, TSO/E verze 2 up up, OS/2 (1.3 a novější, kde je oficiálně pojmenován Procedures Language/2 ), AmigaOS verze 2 up up, PC DOS ( 7.0 nebo 2000 ), ArcaOS a Windows NT 4.0 (Resource Kit: Regina). Skripty REXX pro OS/2 sdílejí příponu souboru .cmd s jinými skriptovacími jazyky a první řádek skriptu určuje interpret, který má být použit. Makra REXX pro aplikace podporující REXX používají rozšíření určená aplikací. Na konci 80. let se Rexx stal běžným skriptovacím jazykem pro IBM Systems Application Architecture , kde byl přejmenován na „SAA Procedurální jazyk REXX“.

Skript nebo příkaz Rexx je někdy označován jako EXEC v kývnutí na typ souboru CMS používaný pro skripty EXEC , EXEC 2 a REXX na CP/CMS a VM/370 až z/VM .

Funkce

Rexx má následující vlastnosti a vlastnosti:

  • Jednoduchá syntaxe
  • Možnost směrovat příkazy do více prostředí
  • Schopnost podporovat funkce, postupy a příkazy spojené s konkrétním vyvolávajícím prostředím.
  • Vestavěný zásobník se schopností spolupracovat s hostitelským zásobníkem, pokud existuje.
  • Malá instrukční sada obsahující jen dvě desítky instrukcí
  • Volná forma syntaxe
  • Tokeny bez rozlišování malých a velkých písmen, včetně názvů proměnných
  • Základ řetězce znaků
  • Dynamické zadávání dat , žádná deklarace
  • Žádná vyhrazená klíčová slova , kromě místního kontextu
  • Žádné zahrnutí zařízení souborů
  • Libovolná numerická přesnost
  • Desítková aritmetika, plovoucí desetinná čárka
  • Bohatý výběr vestavěných funkcí, zejména zpracování řetězců a textu
  • Automatická správa úložiště
  • Ochrana proti nárazu
  • Obsahově adresné datové struktury
  • Asociativní pole
  • Přímý přístup k systémovým příkazům a zařízením
  • Jednoduché zpracování chyb a integrované trasování a ladicí program
  • Několik umělých omezení
  • Zjednodušená I/O zařízení
  • Netradiční operátoři
  • Pouze částečně podporuje parametry příkazového řádku ve stylu Unixu, kromě konkrétních implementací
  • Neposkytuje žádné základní ovládání terminálu jako součást jazyka, s výjimkou konkrétních implementací
  • Neposkytuje žádný obecný způsob, jak zahrnout funkce a podprogramy z externích knihoven, s výjimkou konkrétních implementací

Rexx má jen třiadvacet, do značné míry samozřejmý, instrukce (například call, parsea select) s minimálním interpunkce a formátování požadavky. Je to v podstatě téměř volný jazyk s jediným datovým typem, znakovým řetězcem; tato filozofie znamená, že jsou všechna data viditelná (symbolická) a je zjednodušeno ladění a trasování.

Syntaxe Rexx vypadá podobně jako PL/I , ale má méně zápisů; proto je těžší analyzovat (podle programu), ale snáze se používá, kromě případů, kdy návyky PL/I mohou vést k překvapením. Jedním z cílů návrhu REXX byl princip nejmenšího úžasu .

Dějiny

před rokem 1990

Rexx byl navržen a poprvé implementován v sestavovacím jazyce jako projekt „pro vlastní čas“ od 20. března 1979 do poloviny roku 1982 Mike Cowlishawem z IBM, původně jako skriptovací programovací jazyk, který nahradil jazyky EXEC a EXEC 2 . Byl navržen tak, aby byl makro nebo skriptovací jazyk pro jakýkoli systém. Jako takový je Rexx považován za předchůdce Tcl a Pythonu . Rexx byl také jeho tvůrcem zamýšlen jako zjednodušená a snadněji se učící verze programovacího jazyka PL/I . Některé rozdíly oproti PL/I však mohou neopatrné zakopnout.

Poprvé byl veřejně popsán na konferenci SHARE 56 v Houstonu v Texasu v roce 1981, kde reakce zákazníků, kterou proslavil Ted Johnston ze společnosti SLAC , vedla k tomu, že byla v roce 1982 dodávána jako produkt IBM.

V průběhu let IBM zahrnula Rexx do téměř všech svých operačních systémů ( VM/CMS , MVS TSO/E , IBM i , VSE/ESA , AIX , PC DOS a OS/2 ) a zpřístupnila verze pro Novell NetWare , Windows , Java a Linux .

První verzi od jiného výrobce než IBM napsal pro PC DOS Charles Daney v letech 1984/5 a na trh ji uvedla společnost Mansfield Software Group (založil ji Kevin J. Kearney v roce 1986). První verze kompilátoru se objevila v roce 1987, napsaná pro CMS Lundinem a Woodruffem. Byly také vyvinuty další verze pro Atari , AmigaOS , Unix (mnoho variant), Solaris , DEC , Windows , Windows CE , Pocket PC , DOS , Palm OS , QNX , OS / 2 , Linux , BeOS , EPOC32 / Symbian , AtheOS , OpenVMS , Apple Macintosh a Mac OS X .

Amiga verze Rexx, tzv ARexx , byla zahrnuta AmigaOS 2 kupředu a byl populární pro skriptování, stejně jako ovládání aplikace. Mnoho aplikací Amiga má v sobě zabudovaný „port ARexx“, který umožňuje ovládání aplikace z Rexx. Jeden skript Rexx mohl dokonce přepínat mezi různými porty Rexx, aby bylo možné ovládat několik spuštěných aplikací.

1990 do současnosti

V roce 1990 uspořádala Cathie Dager ze SLAC první nezávislé sympozium Rexx, které vedlo ke vzniku Jazykové asociace REXX. Sympozia se konají každoročně.

K dispozici je několik bezplatných verzí Rexx. V roce 1992 se objevily dva nejpoužívanější open-source porty: REXX/imc Iana Colliera pro Unix a Regina Anderse Christensena (později adoptovaná Markem Hesslingem) pro Windows a Unix. BREXX je dobře známý pro platformy WinCE a Pocket PC a byl „zpětně portován“ na VM/370 a MVS .

OS/2 má vizuální vývojový systém od Watcom VX-REXX . Dalším dialektem byl VisPro REXX od Hockware.

Portable Rexx od Kilowatt a Personal Rexx od Quercus jsou dva tlumočníky Rexx určené pro DOS a lze je spustit i pod Windows pomocí příkazového řádku. Od poloviny 90. let se objevily dvě novější varianty Rexx:

  • NetRexx : sestavuje do Java byte-kódu pomocí Java zdrojového kódu; toto nemá žádná vyhrazená klíčová slova a používá objektový model Java, a proto není obecně kompatibilní s „klasickým“ Rexx.
  • Object REXX : objektově orientovaná, obecně nahoru kompatibilní verze Rexx.

V roce 1996 American National Standards Institute (ANSI) publikoval standard pro Rexx: ANSI X3.274–1996 „Informační technologie - programovací jazyk REXX“. Od roku 1985 vyšly na Rexx více než dvě desítky knih.

Dne 20. března 2004 oslavila společnost Rexx své 25. výročí, které bylo oslaveno na 15. mezinárodním sympoziu REXX Language Association v německém Böblingenu v květnu 2004.

12. října 2004 oznámila společnost IBM svůj plán na vydání zdrojů implementace jejich Object REXX pod licencí Common Public License . Nedávná vydání Object REXX obsahují skriptovací stroj ActiveX Windows Scripting Host (WSH) implementující tuto verzi jazyka Rexx.

22. února 2005 bylo oznámeno první veřejné vydání Open Object Rexx (ooRexx). Tento produkt obsahuje skriptovací engine WSH, který umožňuje programování operačního systému Windows a aplikací s Rexx stejným způsobem, jakým jsou implementovány Visual Basic a JScript pomocí výchozí instalace WSH a skriptovacích strojů třetích stran Perl , Tcl , Python .

V lednu 2017 byl REXX uveden v indexu TIOBE jako jeden z padesáti jazyků ve své první stovce, která nepatří do první padesátky.

V roce 2019 oslavilo 30. symposium Rexx Language Association 40. výročí Rexx. Sympozium se konalo v Hursley v Anglii, kde byl Rexx poprvé navržen a implementován.

Sady nástrojů

Rexx/Tk, sada nástrojů pro grafiku, která má být použita v programech Rexx stejným způsobem jako Tcl/Tk, je široce dostupná.

Rexx IDE, RxxxEd, bylo vyvinuto pro Windows. Byl vyvinut RxSock pro síťovou komunikaci a další doplňky a implementace Regina Rexx a ve většině Resource Kits pro různé verze Windows je dodáván interpret Rexx pro příkazový řádek Windows a funguje pod všemi DOS.

Pravopis a velká písmena

Původně se jazyk jmenoval Rex ( reformovaný vykonavatel ); navíc bylo přidáno „X“, aby se zabránilo kolizím s názvy jiných produktů. REX byl původně psán velkými písmeny, protože kód sálového počítače byl orientován velkými písmeny. Styl v té době byl mít všechna velká písmena, částečně proto, že téměř celý kód byl tehdy ještě celý. Pro produkt se stal REXX a obě edice knihy Mike Cowlishaw používají všechna písmena. Rozšíření na REstructured eXtended eXecutor bylo použito pro systémový produkt v roce 1984.

Syntax

Opakování

Struktura řízení smyčky v Rexx začíná na DOa končí na, ENDale přichází v několika variantách. NetRexx používá klíčové slovo LOOPmísto DOpro smyčku, zatímco ooRexx zachází LOOPa DOjako ekvivalent při smyčce.

Podmíněné smyčky

Rexx podporuje řadu tradičních smyček strukturovaného programování při testování podmínky před ( do while) nebo po ( do until), kdy se provede seznam pokynů:

 do while [condition]
 [instructions]
 end
 do until [condition]
 [instructions]
 end

Opakující se smyčky

Jako většina jazyků, Rexx může cyklovat při zvyšování indexové proměnné a zastavit, když je dosaženo limitu:

 do index = start [to limit] [by increment] [for count]
 [instructions]
 end

Přírůstek lze vynechat a výchozí je 1. Limit lze také vynechat, což způsobí, že smyčka bude pokračovat navždy.

Rexx povoluje počítané smyčky, kde je výraz vypočítán na začátku smyčky a instrukce uvnitř smyčky jsou provedeny mnohokrát:

 do expression
 [instructions]
 end

Rexx může dokonce smyčkovat, dokud není program ukončen:

 do forever
 [instructions]
 end

Program se může z aktuální smyčky vymanit pomocí leaveinstrukce, což je normální způsob, jak do foreversmyčku ukončit , nebo ji může zkratovat pomocí iterateinstrukce.

Kombinované smyčky

Nejneobvykleji Rexx umožňuje kombinovat podmíněné i opakující se prvky ve stejné smyčce:

 do index = start [to limit] [by increment] [for count] [while condition]
 [instructions]
 end
 do expression [until condition]
 [instructions]
 end

Podmíněné

Podmínky testování s IF:

 if [condition] then
 do
 [instructions]
 end
 else
 do
 [instructions]
 end

ELSEKlauzule je volitelné.

U jednotlivých pokynů DOa ENDlze je také vynechat:

 if [condition] then
 [instruction]
 else
 [instruction]

Odsazení je volitelné, ale pomáhá zlepšit čitelnost.

Testování pro více podmínek

SELECTje struktura CASE Rexx , stejně jako mnoho jiných konstrukcí odvozených z PL/I . Stejně jako některé implementace konstrukcí CASE v jiných dynamických jazycích, WHENklauzule Rexx určují úplné podmínky, které spolu nemusí souviset. V tom jsou spíše jako kaskádové sady IF-THEN-ELSEIF-THEN-...-ELSEkódu, než jako příkaz C nebo Java switch.

 select
 when [condition] then
 [instruction] or NOP
 when [condition] then
 do
 [instructions] or NOP
 end
 otherwise
 [instructions] or NOP
 end

Tyto NOPinstrukce provádí „žádná akce“, a je používán když programátor chce dělat nic na místě, kde by byla vyžadována jedna nebo více instrukcí.

Klauzule OTHERWISE je volitelná. Pokud je vynecháno a nejsou splněny KDYŽ podmínky, je vyvolána podmínka SYNTAX.

Jednoduché proměnné

Proměnné v Rexx jsou bez typů a zpočátku jsou vyhodnocovány jako jejich jména s velkými písmeny. Typ proměnné se tedy může lišit v závislosti na použití v programu:

 say hello /* => HELLO */
 hello = 25
 say hello /* => 25 */
 hello = "say 5 + 3"
 say hello /* => say 5 + 3 */
 interpret hello /* => 8 */
 drop hello
 say hello /* => HELLO */

Složené proměnné

Na rozdíl od mnoha jiných programovacích jazyků nemá klasický Rexx žádnou přímou podporu pro pole proměnných adresovaných číselným indexem. Místo toho poskytuje složené proměnné . Složená proměnná se skládá ze stonku následovaného ocasem. A. (tečka) se používá ke spojení stonku s ocasem. Pokud jsou použité ocasy číselné, je snadné vytvořit stejný efekt jako pole.

 do i = 1 to 10
 stem.i = 10 - i
 end

Poté existují následující proměnné s následujícími hodnotami: stem.1 = 9, stem.2 = 8, stem.3 = 7...

Na rozdíl od polí index pro kmenovou proměnnou nemusí mít celočíselnou hodnotu. Platný je například následující kód:

 i = 'Monday'
 stem.i = 2

V Rexx je také možné nastavit výchozí hodnotu pro kmen.

 stem. = 'Unknown'
 stem.1 = 'USA'
 stem.44 = 'UK'
 stem.33 = 'France'

Po těchto úkolech stem.3by tento termín vytvořil 'Unknown'.

Celý kmen lze také vymazat příkazem DROP.

 drop stem.

To má také za následek odstranění jakékoli výchozí hodnoty nastavené dříve.

Podle konvence (a nikoli jako součást jazyka) se sloučenina stem.0často používá ke sledování počtu položek ve stonku, například postup pro přidání slova do seznamu může být kódován takto:

 add_word: procedure expose dictionary.
 parse arg w
 n = dictionary.0 + 1
 dictionary.n = w
 dictionary.0 = n
 return

Je také možné mít více prvků na konci složené proměnné. Například:

 m = 'July'
 d = 15
 y = 2005
 day.y.m.d = 'Friday'

K zajištění efektu vícerozměrného pole lze použít více numerických koncových prvků.

Funkce podobné složeným proměnným Rexx se nacházejí v mnoha dalších jazycích (včetně asociativních polí v AWK , hash v Perlu a Hashtables v Javě ). Většina těchto jazyků poskytuje instrukce k iteraci všech klíčů (nebo chvostů v Rexx termínech) takové konstrukce, ale to v klasickém Rexx chybí. Místo toho je nutné podle potřeby udržovat pomocné seznamy koncových hodnot. Například v programu pro počítání slov lze k zaznamenání každého výskytu slova použít následující postup.

 add_word: procedure expose count. word_list
 parse arg w .
 count.w = count.w + 1 /* assume count. has been set to 0 */
 if count.w = 1 then word_list = word_list w
 return

a potom později:

 do i = 1 to words(word_list)
 w = word(word_list,i)
 say w count.w
 end

Za cenu určité jasnosti je možné tyto techniky spojit do jednoho kmene:

 add_word: procedure expose dictionary.
 parse arg w .
 dictionary.w = dictionary.w + 1
 if dictionary.w = 1 /* assume dictionary. = 0 */
 then do
 n = dictionary.0+1
 dictionary.n = w
 dictionary.0 = n
 end
 return

a později:

 do i = 1 to dictionary.0
 w = dictionary.i
 say i w dictionary.w
 end

Rexx zde neposkytuje žádnou záchrannou síť, takže pokud je jedno ze slov o celé číslo menší, než dictionary.0tato technika záhadně selže.

Nedávné implementace Rexx, včetně IBM Object REXX a implementace open source, jako je ooRexx, zahrnují novou jazykovou konstrukci pro zjednodušení iterace nad hodnotou kmene nebo nad jiným objektem kolekce, jako je pole, tabulka nebo seznam.

 do i over stem.
 say i '-->' stem.i
 end

Pokyny pro klíčová slova

PARSE

PARSEInstrukce je zvláště silný; kombinuje některé užitečné funkce zpracování řetězců. Jeho syntaxe je:

 parse [upper] origin [template]

kde původ určuje zdroj:

  • arg (argumenty, na nejvyšší úrovni ocas příkazového řádku)
  • linein (standardní vstup, např. klávesnice)
  • pull (Datová fronta Rexx nebo standardní vstup)
  • source (informace o tom, jak byl program spuštěn)
  • value(výraz) with: klíčové slovo withje povinné k označení, kde výraz končí
  • var (proměnná)
  • version (číslo verze/vydání)

a šablona může být:

  • seznam proměnných
  • oddělovače čísel sloupců
  • doslovné oddělovače

upperje volitelný; pokud je zadáno, budou data před analýzou převedena na velká písmena.

Příklady:

Použití seznamu proměnných jako šablony

 myVar = "John Smith"
 parse var myVar firstName lastName
 say "First name is:" firstName
 say "Last name is:" lastName

zobrazí následující:

 First name is: John
 Last name is: Smith

Použití oddělovače jako šablony:

 myVar = "Smith, John"
 parse var myVar LastName "," FirstName
 say "First name is:" firstName
 say "Last name is:" lastName

také zobrazuje následující:

 First name is: John
 Last name is: Smith

Použití oddělovačů čísel sloupců:

 myVar = "(202) 123-1234"
 parse var MyVar 2 AreaCode 5 7 SubNumber
 say "Area code is:" AreaCode
 say "Subscriber number is:" SubNumber

zobrazí následující:

 Area code is: 202
 Subscriber number is: 123-1234

Šablona může používat kombinaci proměnných, oddělovačů literálů a oddělovačů čísel sloupců.

INTERPRETOVAT

Instrukce INTERPRET vyhodnotí svůj argument a považuje jeho hodnotu za příkaz Rexx. Někdy je INTERPRET nejjasnějším způsobem provedení úkolu, ale často se používá tam, kde je možné srozumitelnější kód, např value().

Další použití INTERPRETu je (desítková) libovolná přesná aritmetika Rexx (včetně fuzzy srovnání), použití příkazu PARSE s programovými šablonami, kmenovými poli a řídkými poli.

 /* demonstrate INTERPRET with square(4) => 16 */
 X = 'square'
 interpret 'say' X || '(4) ; exit'
 SQUARE: return arg(1)**2

Zobrazí se 16 a ukončí se. Protože proměnný obsah v Rexx jsou řetězce, včetně racionálních čísel s exponenty a dokonce celými programy, Rexx nabízí interpretovat řetězce jako vyhodnocené výrazy.

Tuto funkci lze použít k předání funkcí jako parametrů funkcí , jako je například předání SIN nebo COS proceduře pro výpočet integrálů.

Rexx nabízí pouze základní matematické funkce jako ABS, DIGITS, MAX, MIN, SIGN, RANDOM a kompletní sadu hex plus binárních převodů s bitovými operacemi. Složitější funkce, jako je SIN, byly implementovány od nuly nebo byly získány z externích knihoven třetích stran . Některé externí knihovny, obvykle implementované v tradičních jazycích, nepodporovaly rozšířenou přesnost.

Pozdější verze (neklasické) podporují CALL variablekonstrukce. Spolu s vestavěnou funkcí VALUElze CALL použít místo mnoha případů INTERPRET. Toto je klasický program:

 /* terminated by input "exit" or similar */
 do forever ; interpret linein() ; end

Trochu propracovanější „kalkulačka Rexx“:

 X = 'input BYE to quit'
 do until X = 'BYE' ; interpret 'say' X ; pull X ; end

PULLje zkratka pro parse upper pull. Stejně tak ARGje zkratka pro parse upper arg.

Síla instrukce INTERPRET měla další využití. Software Valor balíček spoléhat interpretační schopnosti Rexx k provedení programu OOP prostředí. Další využití bylo nalezeno v nevydaném produktu Westinghouse s názvem Time Machine, který se po fatální chybě dokázal plně zotavit.

NUMERICKÉ

 say digits() fuzz() form() /* => 9 0 SCIENTIFIC */
 say 999999999+1 /* => 1.000000000E+9 */
 numeric digits 10 /* only limited by available memory */
 say 999999999+1 /* => 1000000000 */

 say 0.9999999999=1 /* => 0 (false) */
 numeric fuzz 3
 say 0.99999999=1 /* => 1 (true) */
 say 0.99999999==1 /* => 0 (false) */

 say 100*123456789 /* => 1.23456789E+10 */
 numeric form engineering
 say 100*123456789 /* => 12.34567890E+9 */

 say 53 // 7   /* => 4   (rest of division)*/
  Vypočítá 2 Vypočítá e
kód
 numeric digits 50
 n=2
 r=1
 do forever /* Newton's method */
 rr=(n/r+r)/2
 if r=rr then leave
 r=rr
 end
 say "sqrt" n ' = ' r
 numeric digits 50
 e=2.5
 f=0.5
 do n=3
 f=f/n
 ee=e+f
 if e=ee then leave
 e=ee
 end
 say "e =" e
výstup sqrt 2 = 1,414213562373095048801688724209698078569671875377 e = 2,7182818284590452353602874713526624977572470936998

SIGNÁL

Instrukce SIGNAL je určena pro abnormální změny v toku řízení (viz další část). Lze jej však zneužít a zacházet s ním jako s příkazem GOTO v jiných jazycích (i když není zcela ekvivalentní, protože ukončuje smyčky a jiné konstrukce). To může způsobit obtížně čitelný kód.

Zpracování chyb a výjimky

V Rexx je možné pomocí instrukcí SIGNAL zachytit a řešit chyby a další výjimky. Existuje sedm systémových podmínek: ERROR, FAILURE, HALT, NOVALUE, NOTREADY, LOSTDIGITS a SYNTAX. Zpracování každého z nich lze ve zdrojovém kódu podle potřeby zapínat a vypínat.

Následující program poběží, dokud jej uživatel neukončí:

 signal on halt;
 do a = 1
	 say a
	 do 100000 /* a delay */
	 end
 end
 halt:
 say "The program was stopped by the user"
 exit

Příkaz zachycuje použití nedefinovaných proměnných, které by jinak za svou hodnotu získaly vlastní (velká písmena). Bez ohledu na stav podmínky lze stav proměnné vždy zkontrolovat pomocí vestavěné funkce, která vrací VAR pro definované proměnné. signal on novalueNOVALUESYMBOL

VALUEFunkce může být použita pro získání hodnoty proměnné, aniž by vyvolalo NOVALUEstav, ale jeho hlavním úkolem je číst a nastavit prostředí proměnné, podobně jako POSIX getenv a putenv.

Podmínky

ERROR
Pozitivní RC z příkazu systému
FAILURE
Negativní RC pro systémový příkaz (např. Příkaz neexistuje)
HALT
Abnormální ukončení
NOVALUE
Byla odkazována nenastavená proměnná
NOTREADY
Chyba vstupu nebo výstupu (např. Pokusy o čtení za koncem souboru)
SYNTAX
Neplatná syntaxe programu nebo jiný chybový stav
LOSTDIGITS
Významné číslice jsou ztraceny (ANSI Rexx, není ve druhém vydání TRL)

Je-li podmínka ovládal SIGNAL ONse SIGLa RCmohou být systémové proměnné analyzovány pochopit situaci. RC obsahuje kód chyby Rexx a SIGL obsahuje číslo řádku, kde došlo k chybě.

Počínaje Rexx verze 4 mohou podmínky získat názvy a existuje také CALL ONkonstrukce. To je užitečné, pokud externí funkce nutně neexistují:

 ChangeCodePage: procedure /* protect SIGNAL settings */
 signal on syntax name ChangeCodePage.Trap
 return SysQueryProcessCodePage()
 ChangeCodePage.Trap: return 1004 /* windows-1252 on OS/2 */

Viz také

Reference

Další čtení

  • Callaway, Merrille. Kuchařka ARexx: Výukový průvodce jazykem ARexx na osobním počítači Commodore Amiga . Whitestone, 1992. ISBN  978-0963277305 .
  • Callaway, Merrille. Kuchařka Rexx: výukový průvodce jazykem Rexx v OS/2 a Warp na osobním počítači IBM . Whitestone, 1995. ISBN  0-9632773-4-0 .
  • Cowlishaw, Michaeli. Jazyk Rexx: Praktický přístup k programování . Sál Prentice, 1990. ISBN  0-13-780651-5 .
  • Cowlishaw, Michaeli. Jazyk NetRexx . Sál Prentice, 1997. ISBN  0-13-806332-X .
  • Daney, Charlesi. Programování v REXX . McGraw-Hill, TX, 1990. ISBN  0-07-015305-1 .
  • Ender, Tome. Objektově orientované programování s Rexx . John Wiley & Sons, 1997. ISBN  0-471-11844-3 .
  • Fosdick, Howarde. Reference programátora Rexx . Wiley/Wrox, 2005. ISBN  0-7645-7996-7 .
  • Gargiulo, Gabriel. REXX s funkcemi OS/2, TSO a CMS . MVS Training, 1999 (třetí vydání 2004). ISBN  1-892559-03-X .
  • Goldberg, Gabriel a Smith, Philip H. Příručka Rexx . McGraw-Hill, TX, 1992. ISBN  0-07-023682-8 .
  • Goran, Richard K. Referenční souhrnná příručka REXX . CFS Nevada, Inc., 1997. ISBN  0-9639854-3-4 .
  • Redbooky IBM. Implementace podpory Rexx v Sdsf . Vervante, 2007. ISBN  0-7384-8914-X .
  • Kiesel, Peter C. Rexx: Pokročilé techniky pro programátory . McGraw-Hill, TX, 1992. ISBN  0-07-034600-3 .
  • Marco, Lou Vývoj ISPF/REXX pro zkušené programátory . CBM Books, 1995. ISBN  1-878956-50-7
  • O'Hara, Robert P. a Gomberg, David Roos. Moderní programování pomocí Rexx . Sál Prentice, 1988. ISBN  0-13-597329-5 .
  • Rudd, Anthony S. 'Praktické využití TSO REXX'. CreateSpace, 2012. ISBN  978-1475097559 .
  • Schindler, William. Dolů k Zemi Rexx . Perfect Niche Software, 2000. ISBN  0-9677590-0-5 .

externí odkazy