Zurück Weiter Kapitel

ARexx-Unterstützung

ED kann auch über ARexx gesteuert werden, indem Befehle über den ARexx-Port von ED gesendet und empfangen werden. Jede laufende ED-Sitzung hat für ihren ARexx-Port einen eigenen Namen, der angegeben werden muß, damit Informationen für die jeweilige Sitzung bearbeitet werden können. Die Namen für die ARexx-Ports werden wie folgt vergeben:

Bei dem Befehl RV wird als Argument der Name der ARexx-Variablen "stem" angegeben, in der die Informationen gespeichert werden sollen. Zum Beispiel in ARexx werden mit

address `Ed' `RV /stem/'

den folgenden Variablen Werte zugeordnet:

stem.LEFT

Linker Rand

stem.Right

Rechter Rand

stem.TABSTOP

Tabulatoreinstellung

stem.LMAX

Maximale Anzahl sichtbarer Zeilen auf dem Bildschirm

stem.WIDTH

Bildschirmbreite in Zeichen

stem.X

X-Position des Cursors im ED-Fenster (1 entspricht dem linken Rand)

stem.Y

Y-Position des Cursors im ED-Fenster (1 entspricht der ersten Zeile)

stem.BASE

Fensterbasis (normalerweise 0, wenn das Fenster nicht nach rechts verschoben wurde)

stem.EXTEND

Wert des erweiterten Rands (Befehl "Extend Margins")

stem.FORCECASE

Kennung für Groß- und Kleinschreibung (1 = ignorieren, 0 = unterscheiden)

stem.LINE

Nummer der aktuellen Zeile (1 entspricht der ersten Zeile)

stem.FILENAME

Name der aktuellen Datei

stem.CURRENT

Inhalt der aktuellen Zeile

stem.LASTCMD

Zuletzt ausgeführter erweiterter Befehl

stem.SEARCH

Letzte gesuchte Zeichenfolge

Sie können für "stem" auch jedes andere gültige ARexx-Symbol verwenden. Geben Sie dieses aber zwischen Begrenzungszeichen ein. Diese Variablen können dann als normale "stem"-Variablen verwendet werden.

ED/ARexx-Beispielprogramm

Das Beispielprogramm "Transpose.ed" zeigt die Verwendung verschiedener erweiterter Befehle von ARexx. Dieses Programm stellt zwei Zeichen um, wenn es von ED aus aufgerufen wird. Enthält eine Zeile zum Beispiel die Zeichenfolge 123 und steht der Cursor auf der 3, ändert Transpose.ed die Zeichenfolge in 213.

Geben Sie dieses Programm ein und speichern Sie es unter REXX:Transpose.ed. Öffnen Sie dann ED und edieren Sie eine vorhandene Datei oder erstellen Sie eine neue. Stellen Sie den Cursor rechts von den beiden Zeichen, die umgestellt (transportiert) werden sollen, drücken Sie Esc und geben Sie folgendes ein:

RX /transpose.ed/

Das Programm wird ausgeführt, und die Zeichen werden umgestellt, wenn ARexx läuft und alle Angaben richtig eingegeben werden. Zur Ausführung des Programms muß der gesamte Dateiname einschließlich Erweiterung eingegeben werden.

Beispielprogramm

/*Transpose.ed: Beispielprogramm zum Vertauschen zweier Zueichen */
/*Gegeben:Zeichenfolge `123', Bedingung: Cursor steht auf 3; */
/* Ergebnis: Zeichenfolge `213'. */
HOST = address () /* Welche ED-Sitzung hat Programm aufgerufen? */
address VALUE HOST /* .Mit dieser Sitzung kommunizieren */
`rv' `/CURR/' /* Daten in stem-Variable CURR speichern */
/* Zwei Informationen abrufen: */
currpos = CURR.X /* 1. Position des Cursors in Zeile */
currlin = CURR.CURRENT /* 2. Inhalt der aktuellen Zeile */
if (currpos > 2) then currpos = currpos - 1 /* Nur in aktueller Zeile */
else do /* Sonst: Fehlermeldung und verlassen */
`sm/Cursor muß mindestens auf Position 2 stehen/'
exit 10
end
/* Die Zeichen auf CURRPOS und CURRPOS-1 werden dann vertauscht, */
/* und die aktuelle Zeile wird durch die neue ersetzt.. */
drop CURR/*. CURR nicht mehr erforderlich; Löschen spart Speicher */
`d' /* ED löscht aktuelle Zeile */
currlin = swapch (currpos,currlin) /* Zeichen vertauschen */
`i/'||currlin||'/' /* Geänderte Zeilen einfügen */
do i = 1 to currpos /* Cursor an Ausgangsposition setzen */
`cr' /* Befehl `Cursor nach rechts' */
end
Exit /* Programm beendet */
/* Funktion zum Vertauschen der Zeichen */
swapch:Procedure
parse arg. Cpos,clin
ch1 = substr(clin,cpos,1) /* Zeichen erfassen */
clin = delstr(clin,cpos,1) /* Aus Zeichenfolge löschen */
clin = insert(ch1,clin,cpos-2,1) /* Wieder einfügen */
return clin /* Geänderte Zeichenfolge zurückgeben

Hoch Zurück Weiter Kapitel