###   Projekte und Informationen rund um den KC85   ### 

Bereits im Zusammenhang mit der Fluss Steuerung kamen andeutungsweise die Vorzüge von Makros zur Sprache. Vornehmlich wiederkehrende Arbeitsabläufe lassen sich unter dem Z-System automatisieren.

 

Die vom Benutzer einzugebenden Befehle oder Aktionen lassen sich auf ein Minimum reduzieren. Anfangs tut man sich ein wenig schwer, ein Makro für ZFILER oder ein ARUNZ-Script zu "programmieren", doch macht sich die Mühe schnell bezahlt, wenn stets dieselben Befehle einzugeben sind.

So unterschiedlich die zur Verfügung stehenden Möglichkeiten für automatisierte Abläufe sind, so verschieden ist auch der Komfort der jeweiligen Programme. Am besten fangen wir mit der einfachsten Software an (SALIAS) und arbeiten uns dann zu den komplexen vor (ARUNZ).

SALIAS ist ein komfortables Programm zur bildschirmorientierten Erstellung eines Alias. Laut Handbuch ist das ein einzelnes Wort bzw. ein Befehl, der stellvertretend für einen längeren oder zusammengesetzten Befehl steht. Konkret heißt das also, daß unter einem Kommando eine Reihe von Befehlen zusammengefaßt werden kann. Diese werden nacheinander abgearbeitet, wenn der Aliasname (das Kommando) aufgerufen wird. Dadurch kann man sich also eine ganze Menge Tipperei ersparen.

Nach dem Aufruf von SALIAS erscheint die einer Textverarbeitung ähnliche Oberfläche. Die oberste Bildschirmzeile fungiert als Statuszeile, in der vor allem die Angabe von "Free" sehr interessant ist, denn dort werden die noch verfügbaren Zeichen angezeigt. Nach dem Eingabebereich folgt in der untersten Bildschirmzeile die Befehlszeile. Drückt man ESC, dann werden dort die möglichen Aktionen angezeigt, die über den jeweiligen Großbuchstaben ausgeführt werden.

Während des Editiermodus können nahezu alle von WordStar (bzw. TPKC) bekannten Control-Codes benutzt werden. Im Zweifelsfall hilft die Eingabe von Control-J weiter, die eine kurze Auflistung aller Codes anzeigt. Die von SALIAS erzeugten Aliasdateien sind ausführbare Programme und erhalten den Dateityp COM, wodurch sie "echten" Programmen nicht zu unterscheiden sind. Wird ein derartiger Alias aufgerufen, so geschieht folgendes: Der im Alias enthaltene Programmcode lädt die eingegebenen Befehle in den Mehrfach-Kommandozeilenpuffer. Anschließend wird die Kontrolle wieder an den Kommandoprozessor übergeben, der dann diese (Mehrfach-)Kommandozeile ausführt.

Davon bekommt man aber als Anwender nichts mit. Man kann sich beruhigt zurücklehnen und dem Rechner bei der Abarbeitung der Befehle zusehen. Leider hat diese sehr einfache und bequeme Variante ein paar Nachteile. Zum einen wird für jeden Alias Disketten- und Directoryplatz beansprucht. Auf einer Festplatte mit 4k-Blöcken werden für die kleinen Dateien jeweils 4 kB belegt (ganz zu schweigen von den ohnehin knappen Directory-Einträgen). Außerdem hat man mit SALIAS keinen Einfluß auf bestimmte Parameter der Kommandozeile wie z. B. Dateinamen/-typ oder Verzeichnis. Der Alias wird so abgearbeitet wie eingegeben; es kann keine Rücksicht auf Spezialfälle genommen werden.

Ganz anders sieht es da mit den ZFILER-Makros aus. Durch die Verbindung mit der zweifellos komfortablen Shell "ZFILER" bieten sich ganz besondere Vorzüge. So ist es möglich, die zu be-/verarbeitenden Dateien nicht nur über eine Auswahl mittels der Jokerzeichen "?" und "*" auszuwählen, sondern individuell durch das Markieren in der angezeigten Dateiliste. Darüber hinaus bietet ZFILER bereits ein beachtliches Arsenal eigener Befehle für Dateioperationen (z. B. Kopieren, Löschen oder Betrachten). Die Makrodatei muß sich im Root-Verzeichnis befinden, sonst kann sie ZFILER nicht finden und demzufolge auch nicht verwenden.

Im Gegensatz zu SALIAS werden hier nicht alle Makros in einzelnen Dateien gespeichert, sondern in der Datei ZFILER.CMD zusammengefaßt. Dies bietet neben der Tatsache, daß alle Makros gleich "auf einen Blick" verfügbar sind, auch die Vorteile der Einsparung von Disketten- und Directoryplatz. Da es sich bei ZFILER.CMD um eine normale Textdatei handelt, ist zur Berarbeitung ein Editor oder ein Textverarbeitungsprogramm (Nondocument-Modus) notwendig.

Die Makrodatei hat einen einfachen Aufbau. Nach dem Anzeigebereich folgen die Makros, die später in den Kommandozeilenpuffer übertragen werden. Die Gestaltung des Anzeigebereiches steht jedem Benutzer vollkomen frei. Diese Zeilen werden als eine Art Hilfeseite angezeigt, wenn man am ZFILER-Prompt ein "#" eingibt. Ein Makro wird über den zugeordneten Buchstaben aufgerufen. Dieser steht in der ersten Spalte einer Makrodefinition. Nach einem Leerzeichen folgt die auszuführende Kommandozeile. Mehrere Befehle werden entsprechend den ZCPR-Konventionen durch Semikolon voneinander getrennt. Gegenüber SALIAS bietet ZFILER den entscheidenden Vorteil von Platzhaltern. Spezielle Zeichenkombinationen werden als Symbol verwendet, das stellvertretend für Komponenten der jeweiligen Dateiangabe steht.

So wird z. B. $fn als Platzhalter für den Dateinamen der aktivierten Datei benutzt. Das ist bei einer einfachen Operation die Datei, auf die der Markierungspfeil zeigt. ZFILER-Makros können aber auch auf eine Dateigruppe angewendet werden. Bei einer Gruppenoperation wird der gewählte Befehl der Reihe nach für alle markierten Dateien ausgeführt, d. h. es wird nacheinander jeweils eine Datei aktiviert und der Befehl/Makro auf sie angewendet. Dadurch können Programme benutzt werden, die normalerweise nicht imstande sind, mehrere Dateien zu bearbeiten.

Durch die verschiedenen Platzhalter kann man während der Makroprogrammierung Einfluß auf Spezialfälle nehmen und so bestimmte Fehlersituationen von vornherein ausschließen. Auch der Wechsel in ein bestimmtes Verzeichnis zur Ausführung des Makros und die anschließende Rückkehr zum Herkunftsverzeichnis läßt sich mittels Platzhalter bewerkstelligen. Wie man sieht, ist ein ZFILER-Makro um einiges mächtiger als ein normaler Alias, allerdings ist die Änderung der Datei ZFILER.CMD nicht so schnell erledigt wie die eines Alias. Erschwerend kommt hinzu, daß für den Einsteiger die kryptisch anmutenden Symbole der Platzhalter nicht gerade zum leichten Verständnis beitragen.

Die ZFILER-Makros haben aber neben den genannten Vorzügen auch einen entscheidenden Nachteil: Man muß ZFILER starten, um sie ausführen zu können. Das stellt im Normalfall kein Problem dar, ist aber mitunter hinderlich, wenn eine Aktion ausgeführt werden soll, die nicht unmittelbar dateibezogen ist oder Programme aufruft, die den Shell Stack löschen.

Mit den ARUNZ-Scripts erhält man die wohl eleganteste und komplexeste Möglichkeit der Ablaufautomatisierung. Doch gerade die Komplexität "erschlägt" den Anwender und läßt ihn nur spärlich Fortschritte machen. Ist ein ARUNZ-Script jedoch einmal programmiert, gibt es nur selten Anlaß zu späteren Änderungen.

Im Normalfall wird ARUNZ als Erweiterter Kommandoprozessor eingesetzt. Dazu muß sich das Programm unter dem Namen CMDRUN.COM im Root-Verzeichnis befinden; ebenso die Datei ALIAS.CMD mit den Scripts. Alle Kommandos, die weder in den internen Systempaketen noch als COM- oder SUB-Datei entlang den Verzeichnissen des Kommandosuchpfades gefunden werden können, werden dem Erweiterten Kommandoprozessor übergeben. Durch die Angabe von Jokerzeichen in Dateibezeichnungen können Scripts auf mehrere Dateien angewendet werden (sofern die aufgerufenen Programme dies unterstützen). Eine derart komfortable Möglichkeit, Dateien wie in ZFILER als Gruppen zu markieren, besteht leider nicht.

Doch dafür bietet ARUNZ eine fast unüberschaubare Vielfalt an Platzhaltern für (fast) alle Anwendungsbereiche. Die Platzhalter bestehen hier nicht nur aus einigen festgelegten Symbolen, sondern sie werden aus verschiedenen Parametern kombiniert. Daraus resultiert ein immenser Funktionsumfang. Darüber hinaus bietet ARUNZ sogar den Zugriff auf Bestandteile des Z-Systems (z. B. User-Register, Adressen der Systemelemente) und auf den Namen des Scripts.

Eine wichtige Eigenschaft soll hier nicht unerwähnt bleiben, die sowohl ein von SALIAS erzeugter Alias als auch ein ARUNZ-Script hat. Beide Arten können rekursiv gestaltet werden, d. h. sie können sich selbst aufrufen. Allerdings muß dabei beachtet werden, daß der Name des Alias oder des Scripts (also der eigene Wiederaufruf) der letzte Befehl der Kommandozeile ist. Anderenfalls läuft der Kommandozeilenpuffer über.

Selbstverständlich kann der Einsatz von Makros, Scripts usw. auch auf die Spitze getrieben werden. so ist es möglich, innerhalb eines Alias als Befehl den Namen eines ARUNZ-Scripts anzugeben. Der Kommandoprozessor fügt die entsprechende Kommandozeile des Scripts in die des Alias ein und arbeitet dann alles Schritt für Schritt ab. Eine derartige Verknüpfung birgt aber mehrere Risiken in sich.

Schon die kleinsten Veränderungen des Systems, z. B. ein anderer Dateiname oder ein umbenanntes Verzeichnis, können einen gewaltigen Arbeitsaufwand nach sich ziehen. Das ist gerade in einer dynamischen Umgebung wie dem Z-System von großer Bedeutung. Außerdem kann es durch die Auflösung der Platzhalter im Script durch ARUNZ und das anschließende Einfügen in den Alias sehr schnell zum Überlauf des Kommandozeilenpuffers kommen. Man halte sich vor Augen, daß die nur zwei Zeichen lange Angabe $1 für das erste Token nach der Auflösung durchaus sechzehn Zeichen lang sein kann (z. B. "A15:BEISPIEL.TXT").