@SA1 @ZS2  Der ARexx-Kurs für Einsteiger Teil 2 @ZS0  Von Carsten Drücke Ein- und Ausgabe Begriffe : -> Kanal Dieses Symbol stellt die Beschreibung eines Ein/Ausgabekanals dar. Der Wert ist nur intern von Bedeutung, und sollte auf keinen Fall in irgendeiner Weise verändert werden ! -> Text Als Text wird hier die Aneinanderreihung von ASCII-Texten und Variablen bezeichnet. Weitere Informationen dazu, sind in dem Beispiel für SAY zu finden. Ausgabe ======= Name : SAY(Text) SAY ist eine Anweisung, mit der Zeichen auf dem Bildschirm ausgegeben werden können. ------------------------------------------------------------------------------ /* SAY mit verschiedenen Variationen von Texten */ say(Text) /* -> TEXT */ Text = "Hallo" say(Text) /* -> Hallo */ say(Text 'Nase') /* -> Hallo Nase */ say(Text || 'Nase') /* -> HalloNase */ say(pi) /* -> PI */ pi = 3.141 say(pi) /* -> 3.141 */ say('pi') /* -> pi */ ------------------------------------------------------------------------------ Name : WRITELN(Kanal,Text) WRITELN dient ebenfalls zur Ausgabe von Zeichen. Im Gegensatz zu SAY kann man aber bestimmen, wohin die Ausgabe erfolgt. Setzt man als Kanal das Symbol stdout ein, erfolgt die Ausgabe auf dem Bildschirm. stdout ist ein festgeleg- tes Symbol und beschreibt den Standard-Ausgabekanal. Es ist möglich, diesen Kanal beim Aufruf des ARexx-Programmes zu ändern :  rx >RAM:Text Programm Dadurch werden alle Ausgaben des ARexx-Programmes in die Datei RAM:Text umge- lenkt. Statt stdout kann man einen beliebigen Filedescriptor angeben, der zu einer vorher geöffneten Datei gehört:  call open('MyFile','RAM:Text','W') call writeln('MyFile','Hello World !') call close('MyFile') Die Funktion WRITELN hängt automatisch an jede Ausgabe ein LineFeed an. Name : OPEN(Kanal,Name,Modus) OPEN benötigt drei Parameter. Der erste Parameter ist der Name des Symbols, welches den Descriptor aufnehmen soll. Der zweite ist der Name der Datei. Der letzte Parameter bestimmt, ob die Datei zum Lesen (R = READ), zum Schreiben (W = WRITE) oder zum Verlängern (A = APPEND) geöffnet werden soll. Im Schreib-Modus wird eine neue Datei erzeugt. Falls schon eine Datei gleichen Names existiert, wird diese ohne Vorwarnung gelöscht. Im Append-Modus wird eine schon vorhandene Datei geöffnet. Unter Kickstart 1.3 muß die Datei bereits existieren. Bei Kickstart 2+ wird die Datei automatisch erzeugt, falls sie nicht vorhanden ist. Name : CLOSE(Kanal) Mit CLOSE wird die Datei wieder geschlossen. Falls man vergißt, die Datei zu schließen, wird dieses beim beenden des ARexx-Programmes automatisch erledigt. Name : CALL Sowohl OPEN, WRITELN und auch CLOSE geben einen Rückgabewert zurück. Dieser Rückgabewert muß einem Symbol zugewiesen werden, etwa  Anzahl = writeln(MyFile,'Hello World !') Falls man diesen Rückgabewert nich benötigt, kann man vor die Funktion das Wort CALL stellen. Dadurch wird die Bereitstellung eines Rückgabewertes unterdrückt. Name : WRITECH(Kanal,Text) Diese Funktion ist weitgehend identisch mit WRITELN, es wird aber kein Line- Feed an die Ausgabe angehängt. Eingabe ======= Name : READLN(Kanal) Mit READLN wird eine Eingabe von einer Datei geholt, bis ein Linefeed auf- taucht. Das Linefeed ist nicht Bestandteil der Zeichenkette. Die Datei muß selbstverständlich zuvor geöffnet werden:  call open('MyFile','S:Startup-Sequence','R') text = readln('MyFile') say(text) call close('MyFile') In diesem Beispiel würde die erste Zeile der Startup-Sequence ausgegeben. Name : READCH(Kanal,Länge) Mit READCH kann eine beliebige Anzahl von Bytes aus einer Datei gelesen werden. Die Eingabe stoppt nicht bei einem Linefeed, sondern erst, wenn die Länge erreicht ist, das Ende der Datei erreicht wurde, ein Fehler auftrat oder 65536 Zeichen gelesen wurden.  call writech(stdout,'Eingabe -> ') In = readln(stdin) say('Deine Eingabe war :' In) Ebenso wie stdout, ist die Bedeutung von stdin festgelegt. stdin bezeichnet den Standard-Eingabestrom, also im Normalfall Eingaben, die per Tastatur in der Shell erfolgen. stdin und stdout werden von ARexx automatisch geöffnet, so daß beide Symbole immer zur Verfügung stehen. Man sollte darauf verzichten, die beiden Symbole anderweitig zu benutzen ! Damit ist dann der zweite Teil des ARexx-Überblicks beendet. Im nächsten Teil kommen dann Kontrollstrukturen wie DO, IF, u.a. dran. Danach können wir uns dann endlich dem Geheimnis zuwenden, wie man von ARexx aus andere Programme steuern kann. - C.D.