www.wikidata.de-de.nina.az
REXX Restructured Extended Executor ist eine von Mike Cowlishaw bei IBM entwickelte Skriptsprache REXXBasisdatenErscheinungsjahr 1979Designer Michael F CowlishawEntwickler Mike CowlishawAktuelle Version ANSI X3 274 1996 Typisierung dynamischWichtige Implementierungen Regina ARexxBeeinflusst von EXEC 2 PL IBetriebssystem z OS Windows Linux AIX OS 2 PC DOS OS 400 AmigaOS uvm Inhaltsverzeichnis 1 Herkunft 2 Grundlegende Konzepte 2 1 Alles ist ein String 2 2 Auswertungslogik 3 Literatur 4 WeblinksHerkunft BearbeitenREXX stammt aus dem Grossrechnerbereich Mike Cowlishaw hatte es in den 1980er Jahren als Nachfolger der Skriptsprache EXEC 2 unter VM zuerst implementiert der Unterschied zwischen dem relativ simplen und nicht sehr machtigen EXEC 2 und REXX ist ahnlich gross wie der zwischen der MS DOS Batch Sprache und BASIC REXX steht dabei fur Restructured EXtended eXecutor Language REXX wurde auf TSO und andere Umgebungen wie OS 2 portiert Eine angepasste Version genannt ARexx erfreut sich seit 1987 auch auf dem Amiga grosser Beliebtheit da beinahe jedes wichtige Programm damit fernsteuerbar ist Mittlerweile sind auch Interpreter fur fast alle Umgebungen bis hin zum Palm OS erhaltlich 1996 wurde REXX zum ANSI Standard ANSI X3 274 1996 Information Technology Programming Language REXX REXX kann besonders leicht erweitert werden indem dynamische Programmbibliotheken zum eigentlichen Interpreter hinzugeladen werden Insbesondere unter OS 2 ist eine Vielfalt solcher Bibliotheken mit mathematischen Datenbank Socket und System Funktionen verfugbar die wie normale REXX Funktionen angesprochen werden konnen REXX ist in der Regel eine interpretierte Sprache aber fur Linux und fur IBM Grossrechner Betriebssysteme sind auch REXX Compiler verfugbar Grundlegende Konzepte BearbeitenAlles ist ein String Bearbeiten In klassischem Rexx im Unterschied zum hier nicht behandelten jedoch kompatiblen Objektorientierten Rexx ist jeder Wert ein String auch Zahlen Es ist also ohne weiteres moglich Zahlenwerte mit String Manipulationen zu andern und das Ergebnis sofort wieder als Zahl zu verwenden a 2 a a 00 say a 2 Durch Anhangen zweier Nullen wird a mit 100 multipliziert das Ergebnis die Zeichenkette 200 kann sofort wieder als Zahl verwendet werden Ausgegeben wird 100 Folgerichtig ist die Arbeit mit Strings in Rexx sehr einfach Die obige Verkettungsoperation kann auch als a a 00 geschrieben werden Ein oder mehrere Leerzeichen zwischen a und 00 fuhren hingegen dazu dass bei der impliziten Verkettung ein Leerzeichen eingefugt wird was unerwunscht ist wenn das Ergebnis eine Zahl sein soll Wenn eine Zahl benotigt wird weil der verwendete Operator mit Zahlen arbeitet versucht Rexx den vorliegenden Wert als Zahl zu interpretieren say 1 2 gibt 3 aus Im Normalfall rechnet Rexx auf neun Dezimalstellen genau durch Angabe einer hoheren Anzahl kann jedoch fast beliebig genau gerechnet werden Diese wenig hardwarenahe Methode von Rexx fuhrt dazu dass arithmetische Operationen vergleichsweise langsam ausgefuhrt werden Auswertungslogik Bearbeiten Rexx wurde unter anderem entwickelt um auf einfache Weise Kommandos an eine Umgebung absetzen zu konnen Dies wird unterstutzt durch die folgende Strategie bei der Auswertung einer Anweisung welche Rexx Programme unempfindlich gegenuber neu eingefuhrten Schlusselwortern macht und die ein Alleinstellungsmerkmal der Sprache darstellt 1 Wenn das zweite Token mit einem Gleichheitszeichen beginnt handelt es sich um eine WertzuweisungHieraus folgt dass z B if 1 eine gultige Anweisung ist die der Variablen IF den Wert 1 zuweist Hingegen ware if 1 zwar ein gultiger logischer Ausdruck der pruft ob die Variable if exakt den Wert 1 hat als eigenstandige Anweisung ergibt sie jedoch einen Syntaxfehler weil der zuzuweisende Wert 1 eben kein gultiger Ausdruck ist 2 Ist das zweite Token ein Doppelpunkt handelt es sich um eine MarkeMarken werden benotigt um Prozeduren und Funktionen zu realisieren diese notiert man in Rexx nach dem ausfuhrbaren Teil des Programms Beispiel say funk dir x exit funk return Arg 1 Man konnte erwarten dass dir x zur Standardausgabe ausgegeben wird Das Schlusselwort say fungiert hier jedoch nur als Marke der Ausdruck funk dir x bildet schon die nachste Anweisung Gemass Regel 4 siehe unten wird also funk aufgerufen und dir x zur Ausfuhrung an die Umgebung ubergeben Es ginge auch ohne die Funktion funk dies nur als einfaches Beispiel fur einen Funktionsaufruf Es ist auch moglich mit signal value i Ausdruck i eine bestimmte Marke anzusteuern dies ist eher unublich und nur in bestimmten Fallen sinnvoll z B als Alternative zu sehr grossen select Anweisungen 3 Wenn das erste Token ein Schlusselwort ist erfolgt die Auswertung entsprechend dieser SchlusselwortanweisungSolche Schlusselworter sind z B if do say Die spate Auswertung der Schlusselworter begunstigt Erweiterungen Zukunftige Versionen der Sprache konnen so neue Schlusselworter einfuhren ohne dass existierende Programme uberarbeitet werden mussen sowohl Variablen als auch Marken konnen ihren Namen behalten 4 In jedem anderen Fall wird die Anweisung als Ausdruck ausgewertet und das Ergebnis an die Umgebung ubergebenDies bedeutet dass die folgende Rexx Anweisung unter DOS Windows OS 2 den Inhalt des aktuellen Verzeichnisses ausgibt dir oder auch dir Im ersten Fall ist dir eine Variable wurde ihr kein Wert zugewiesen so ist ihr Wert DIR ihr Name in Grossbuchstaben und es wird DIR an die Umgebung ubergeben und ausgefuhrt Im zweiten Fall wird garantiert dir ubergeben und ausgefuhrt Es konnte sein dass eine zukunftige Rexx Version ein Schlusselwort dir einfuhrt Um sicherzugehen dass das Programm auch dann noch funktioniert kann z B durch dir erzwungen werden dass die Anweisung als Ausdruck Verkettung der Variablen mit dem Leerstring erkannt wird oder man verwendet einfach die Variante das Kommando als Stringkonstante zu ubergeben Literatur BearbeitenMichael Cowlishaw The Rexx Language A Practical Approach to Programming ISBN 0 13 780651 5 Johann Deuring REXX Grundlagen fur die z OS Praxis 2005 ISBN 978 3 486 20025 6 Michael Metz et al ARexx Eine Einfuhrung und mehr ISBN 3 930733 00 5 Karlheinz Wittemann REXX unter MVS TSO E ISBN 3 446 17956 9 Karlheinz Wittemann Inside z OS Das grosse TSO REXXikon 2009 ISBN 978 3 00 029410 5 Howard Fosdick Rexx Programmer s Reference Wiley Wrox 2005 ISBN 0 7645 7996 7 Merrill Callaway The ARexx Cookbook A Tutorial Guide to the ARexx Language on the Commodore Amiga Personal Computer 1992 ISBN 978 0963277305 Weblinks Bearbeiten nbsp Commons REXX Sammlung von Bildern Videos und Audiodateien nbsp Wikibooks REXX Lern und Lehrmaterialien RexxLA Rexx Language Association Regina Open Source Implementierung fur Unix und Windows Open Object Rexx Open Source Projekt unter Obhut der Rexx Language Association RexxLA das IBMs Object REXX weiterentwickelt REXX fur Palm OS REXX 400 Programmers Guide PDF 854 kB Normdaten Sachbegriff GND 4196484 6 lobid OGND AKS Abgerufen von https de wikipedia org w index php title REXX amp oldid 210343449