Bei L3 haben Sie zwei Ebenen, in denen Sie als Benutzer mit dem System umgehen. Die erste Ebene wird durch ein Systemmenü gebildet, wie in Kapitel 4 beschrieben. Auf dieser Ebene können Sie das Tasksystem 'überblicken', Tasks erzeugen oder Tasks an den Bildschirm holen ('ankoppeln').
Der normale Umgang mit dem Rechner, nämlich die Arbeit mit Benutzerprogrammen und derartiges, findet auf Ebene irgendeiner Task statt. Hier können Sie Dateien edieren, Texte gestalten und drucken oder mit irgendwelchen Programmen irgendwelche Dinge machen.
Die Gestalt, in der eine Task sich zur Interaktion präsentiert, ist nicht einheitlich. Typische Ausprägungen sind eine mehr oder weniger aufwendige Menüoberfläche mit der z.B. die Systemtasks "OPERATOR" oder "configurator" versehen sind, oder auch die kärgliche Kommandozeile einer neuerzeugten Task unter "PUBLIC".
Im folgenden soll die Systematik und die Möglichkeiten beschrieben werden, die sich Ihnen auftun, wenn Sie in den schwarzen Bildschirm sehen und eine neu erzeugte Task anzeigt:
neuetask:\ (PRIVAT) _
An dieser Stelle verfügt eine neue Task über keine Datei und einige hundert durchaus nützlicher Kommandos. Im Unterschied zu DOS oder Unix liegen die vom System vorgegebenen Möglichkeiten aber nicht in Form ausführbarer Dateien vor, sondern 'verstecken sich in der Task'.
Eine Task läßt sich als sehr großes Programm auffassen, das aus einem großen Vorrat fertig übersetzter Programme besteht und zeitlebens Aufträge entgegennimmt. Diese Aufträge werden dann durch eines (oder viele) der fertigen Programme ausgeführt. Dadurch daß eine Task auch einen passenden Compiler beinhaltet, können auch neue Programme hinzugefügt werden.
Aus Benutzersicht heißt das: jedes Programm, das zur Erzeugung des L3 Tasksystems benutzt wurde, ist ein gültiges Kommando und jedes Kommando wird compiliert. Noch einfacher gesagt: es gibt furchtbar viele Kommandos und man kann leicht beliebige neue bauen.
Nach derzeit aktueller Sprechweise ist eine Task ein (recht großes) Objekt, das über eine stattliche Anzahl von Methoden verfügt. Modifikationen eines Objekts vom Typ Task können durch Aktivierung anderer Basismethoden (z.B. free manager) oder auch Hinzufügen neuer Methoden vorgenommen werden.
Das L3 Tasksystem selbst ist in der Programmiersprache ELAN programmiert. Die Syntax für Kommandos ist also die ELAN Syntax. Eine Beschreibung der Sprachkonstrukte finden Sie in Kapitel 8: ELAN im Schnelldurchgang. An dieser Stelle ist ausreichend zu wissen:
Traditionell ist die erste Aktivität, die man einem frei programmierbaren System abringt, das Programm "Hallo Welt".
Wenn Sie Ihr System eingeschaltet haben, meldet sich L3 nach dem Vortest mit dem System-Menü. Sie können an dieser Stelle noch keine Arbeiten ausführen, sondern müssen zuerst eine Task, in der Sie arbeiten wollen, an den Bildschirm holen. Legen Sie für diese erste Sitzung eine neue Task an, indem Sie die entsprechende Menüfunktion mit den Cursortasten aktivieren und einen beliebigen Tasknamen eingeben. Da der Name der neuen Task natürlich nicht dem einer bereits im System vorhandenen Task gleichen darf, sollten Sie beim ersten Versuch auf Nummer Sicher gehen und vielleicht mit Ihrem Vornamen und/oder ein wenig Phantasie etwas Neues schaffen, z.B. "meine 1. task".
L3 SYSTEM Menü CONSOLE
PUBLIC
meine 1. task
Task ankoppeln
aus Taskliste auswählen
neue Task erzeugen
Speicherbelegung anzeigen
H i l f e
Tasknamen für neue Task festlegen und Vatertask bestimmen
Als Vatertask schlägt Ihnen das System-Menü die Task "PUBLIC" vor; bestätigen Sie diesen Vorschlag mit CR .
Eine neue Task mit dem angegebenen Namen wird nun angelegt (falls nicht schon zufällig eine Task
mit diesem Namen existiert, in diesem unwahrscheinlichen Fall wiederholen Sie die Eingabe mit
einem noch unwahrscheinlicheren Namen).
Anschließend wird die Task an das Terminal gekoppelt. Sie sehen den Tasknamen als Prompt. Der Cursor steht in der Zeile darunter.
meine 1. task:\ (PRIVAT) _
Hinter dem Tasknamen steht in der Mitte der Zeile '(PRIVAT)'. Diese Anzeige gibt den Managerstatus der Task an. 'PRIVAT' bedeutet, daß die Dateien dieser Task nur vom Besitzer dieser Task bearbeitet werden können, wenn die Task an einen Bildschirm gekoppelt ist. Andere Task stellen Dateien für ihre Nachkommen zur Verfügung (family manager) oder sogar für alle Tasks (free manager).
Nach L3 Sprechweise sind Sie nun in der Task "meine 1. task". Dieser Zustand entspricht etwa der Situation, die Sie auf einem 'normalen PC' nach dem Booten vorfinden. Sie haben einen eigenen Arbeitsbereich, nämlich die Task (nicht den gesamten Rechner, wie unter DOS) und können Kommandos eingeben.
meine 1. task:\ (PRIVAT) out ("Hallo Welt")
In der Erkenntnis, daß alle Kommandos compilert werden, können Sie die Prozedur (= Kommando) out mit dem Textparameter "Hallo Welt" aufrufen. Nach CR wird Ihre Eingabe compilert und ausgeführt.
Falls der schwarze Bildschirm Ihnen zu trostlos ist, können Sie mit set attibute (31) eine freundliche Blaufärbung (oder mit einem anderen Attribut als '31' irgendeine andere Farbe) einstellen. Falls Sie durchprobieren möchte, welche Farbe recht angenehm ist:
ESC k bringt das zuletzt eingegebene Kommando wieder in die Zeile.
Eine weitere Möglichkeit, "Hallo Welt" auszugeben, besteht darin, ein Programm zu schreiben, das genau dieses tut. Zum Schreiben des Quellprogrammes besitzt L3 natürlich einen passenden Editor. Zunächst legen Sie die neue Datei "hallo" an:
meine 1. task:\ (PRIVAT) edit ("hallo") "hallo" neu einrichten (j/n) ? »j«
Beantworten Sie die Kontrollfrage mit »j«.
Die leere Datei "hallo" erscheint auf dem Bildschirm. Zur Bedienung des Editors reicht zunächst:
..........................hallo........................ Zeile 1 page ; out ("Hallo Welt") ; pause;
Verlassen Sie den Editor mit der Tastenfolge ESC q .
Sie haben ein Programm mit dem Namen "hallo" geschrieben. Das Programm besteht aus den Prozeduren page (Bildschirm löschen), der Ausgabe out ("Hallo Welt") und einer Pause, die durch Tastendruck beendet wird.
Sie befinden sich wieder auf der Kommandoebene und können das Programm direkt starten:
meine 1. task:\ (PRIVAT) run ("hallo")
run("hallo") läßt den Compiler den Inhalt der Datei 'hallo' übersetzen und anschließend direkt ausführen. Sie erhalten einige Meldungen des Compilers, anschließend wird das Programm ausgeführt: der Bildschirm wird gelöscht und "Hallo Welt" wird ausgegeben. Nach einem Tastendruck sind sie wieder in der Kommandoebene Ihrer Task.
Geben Sie nun auf der Kommandoebene der Task die Tastenfolge ESC q ein. Damit verlassen Sie die Task und sind wieder im System-Menü.
In dieser kleinen Beispielsitzung sollten mehrere wichtige L3 Eigenschaften deutlich werden:
Bevor Sie sich Ihrer Task ein zweites Mal zuwenden, sollten noch zwei wichtige Informationen vorangestellt sein:
Nun aber zurück zu Ihrer ersten Task.
Aktivieren Sie im System-Menü mit CR die Funktion "Auswahl aus Taskinfo" und sehen Sie sich zunächst im rechten Fenster des Menüs an, wie die von Ihnen angelegte Task in das L3 System eingegliedert wurde:
L3 SYSTEM Menü CONSOLE
PUBLIC
Ankoppeln einer Task meine 1. task
tabellen
Auswahl aus Taskinfo datenbank
UTILITIES
Neue Task erzeugen kopieren
gendos
Speicherbelegung anzeigen proflog
PRINTER
H i l f e SCREEN PRINTER
POST
SYSUR
OPERATOR
shutup
Liste aller Tasks wird zum Auswählen angeboten
Auswahl durch <ENTER>, Abbruch durch <ESC>.
Die von Ihnen angelegte Task erscheint unterhalb der Task PUBLIC.
Koppeln Sie sie nun durch Auswahl mit den Cursortasten und Eingabe von CR an Ihr Terminal an.
Die Task ist am Prompt erkenntlich. Falls Sie die Farbeinstellung geändert haben, ist das eingestellt geblieben. Auch das sollten Sie als wichtig verbuchen: Einstellungen in Tasks wirken lokal. Das bedeutet, daß die Einstellung einer Hintergrundfarbe oder 'Booten' von L3DOS nur in der Task wirkt und keine Auswirkung auf andere Tasks hat. Werfen Sie zunächst wieder einen Blick auf die Dateiliste Ihrer Task. Nach dem Kommando list wird die Datei "hallo" angezeigt:
.................. meine 1. task:\ ................. Zeile 1 15.09.92 13:00 "hallo"
Zurück auf Kommandoebene dieser Task (mit der Tastenfolge ESC q können Sie eine verbesserte Version von "hallo" beginnen: edit("hallo version 2")
.................. hallo version 2 .................... Zeile 1
INT VAR aktuelles attr ;
page;
get attribute (aktuelles attr);
set cursor pos (25,8);
set attribute (112);
out (" Hallo Welt ");
pause (20) ;
set attribute (aktuelles attr) ;
list;
Nach Verlassen des Editors mit der Tastenfolge ESC q können Sie das Programm durch run starten. Die Aktionen sind den Prozedurnamen annähernd zu entnehmen: set attribute setzt die Attribute für die Bildschirmausgabe, »112« ist üblicherweise die Einstellung für Inversdarstellung, »7« ist die Normaleinstellung.
Experimentieren Sie mit einem derartigen Programm auch mit Unterstützung des L3 Referenzhandbuchs ruhig ein wenig herum. Wichtig dazu: edit ("dateiname") startet den Editor, run ("dateiname") übersetzt das ELAN Programm in der angegebenen Datei und führt es direkt aus. Falls das Programm Fehler aufweist, wird der Quelltext direkt wieder angezeigt und in der unteren Bildschirmhälfte erscheint eine Anzeige der Fehlermeldungen.
ESC q beendet die Anzeige oder Bearbeitung einer Datei, aber auch die Ankopplung einer Task an den Bildschirm. Falls Sie auf Kommandoebene diese Tastenkombination eingeben, müssen Sie die Task vor der weiteren Arbeit wieder ankoppeln.
Damit ist die erste Kontaktaufnahme mit L3 abgeschlossen. Sie haben das System-Menü benutzt, um eine neue Benutzertask anzulegen und um Informationen über das Tasksystem zu erhalten und Sie haben in der eigenen Task ein kleines Programm geschrieben.
Einen Überblick über alle Kommandos, die für eine gerade anstehende Aufgabe nützlich sein könnten, zu gewinnen, gelingt am ehesten durch Lesen im L3 Referenzhandbuch. Hilfreich ist desweiteren, sich ein wenig Zeit und die brause zu nehmen. 'brause' wird in einer beliebigen Task durch die Taste F1 aktiviert. Mit dieser 'Hypertext-Hilfe' können Sie Themen und Begriffe durchsuchen.
Die folgende Zusammenstellung liefert einen ersten Eindruck zur Handhabung von L3. Neben einer Kurzbeschreibung ist angegeben, wie die Prozeduren als Kommandos benutzt werden können, da z.B. eine wertliefernde Prozedur erst per out zu einer Ausgabe bewegt wird. Falls der Begriff (d.h. die Prozedur) direkt als Kommando eingegeben werden kann, entfällt diese Erläuterung. Da ELAN als L3 Kommandosprache eine eher sprechende Programmiersprache ist, sind manche Beispielkommandos zur Erläuterung einfach in Umgangssprache übersetzt.
bbrause
Falls das gewünschte Stichwort ungefähr bekannt ist, kann es als Parameter gegeben werden. Wenn der Begriff so nicht gefunden wird, wird automatisch versucht einen Begriff zu finden, in dem der Suchbegriff enthalten ist.
bbrause ("task")
Lies: Suche Erklärungen, in denen der Begriff "task" vorkommt.
out(version)
bulletin
help ("edit")
Es kann auch das Jokerzeichen * an Wortanfang und/oder Ende benutzt werden.
help ("*list");
Lies: Zeige alle Prozeduren an, die mit "list" enden.
storage info
w storage info
Insbesondere bei der Analyse von Störungen liefert diese Ausgabe wertvolle Hinweise. Die Eingabe von inf liefert die Anzeige für das gesamte Tasksystem.
inf (/"SYSHW")
Lies: Zeige inf für die Task "SYSHW" und Nachkommen.
edit ("hallo")
edit ("Nanu\Hallo") (* Datei Hallo in Verzeichnis "Nanu" *)
edit (* Zuletzt benutzte Datei *)
list
list (/"SYSIO")
xlist
xlist (/"PUBLIC")
Lies: Zeige Dateien und Verzeichnisse der Task "PUBLIC".
create ("datei")
create ("spez", ds)
create ("mein Verzeichnis", dir)
delete ("datei")
erase ("datei", archivea)
Lies: Lösche "datei" auf der Diskette in Laufwerk A:
fetch ("adaption", /"SYSIO")
Lies: Hole "adaption" aus der Task "SYSIO".
fetch (SOME /"PUBLIC", /"PUBLIC")
Lies: Hole einige Dateien der Task "PUBLIC" aus der Task "PUBLIC".
save ("datei", /"PUBLIC")
save (all, /"Sicherungstask")
Lies: Sende alle meine Dateien in die Task "Sicherungstask".
copy (archive a, "\VZ", "\")
Lies: Kopiere aus der Task "ARCHIVE A" alle Dateien des Verzeichnisses "VZ" in das Wurzelverzeichnis dieser Task.
rename ("alter name", "neuer name")
print (all LIKE "*.p")
Lies: Drucke alle Dateien, deren Namen auf ".p" endet.
THESAURUS
Um eine Menge von Namen, z.B. Dateinamen, zusammenzufassen, gibt es den Datentyp THESAURUS. Durch Benutzung eines Thesaurus kann man ein Kommando auf eine Menge von Dateien anwenden und ist nicht gezwungen denselben Befehl zig-mal zu geben oder für winzige Problemchen schon ein Programm zu schreiben. Viele Kommandos (=Prozeduren) im L3 System sind sowohl für ein einzelnes Objekt (z.B. eine Datei), als auch für eine Liste von Objekten, definiert. So lautet etwa das Kommando um per L3-Post eine Datei in eine andere Task zu senden mail("dateiname", "taskname"). Um einige Dateien zu schicken, formulieren Sie: mail (some, "taskname"). Es wird eine Datei angezeigt, in der Sie zeilenweise alle Dateinamen der eigenen Task gelistet finden. Wenn Sie alle Namen löschen, die nicht betroffen sein sollen, werden alle Dateien, deren Namen Sie in der Thesaurusdatei gelassen haben, in die Task gesendet. Noch kürzer läßt sich formulieren, alle Dateien zu senden: mail(all, "taskname").
Gerade auch Dateinamenslisten von anderen Tasks werden durch Thesauri geliefert. So lassen sich 'einige Dateien von der Diskette' durch SOME archive a bezeichnen. archive a ist die Task, die das erste Diskettenlaufwerk verwaltet, SOME meint 'einige davon'. Es werden alle Dateinamen der einliegenden Diskette gelistet, die Auswahl treffen Sie durch Entfernen der nicht gewünschten Namen.
Selbstverständlich können Sie auch selbst Thesauri zusammenstellen: Erzeugen Sie einfach eine Textdatei, in die Sie zeilenweise alle gewünschten Namen, die später von einem Kommando abgearbeitet werden sollen, eintragen.
edit ("mein thes")
Sie können dann mit irgendwelchen Kommandos auf diese Liste Bezug nehmen:
print (ALL "mein thes")
fetch (ALL /"PUBLIC", /"PUBLIC")
Lies: hole alle Dateien der Task 'PUBLIC' aus der Task 'PUBLIC'.
fetch (SOME /"PUBLIC", /"PUBLIC")
Lies: hole einige Dateien der Task 'PUBLIC' aus der Task 'PUBLIC'.
save (all, streamer)
save (some, archive b)
Lies: Sichere die ausgewählten Dateien auf Laufwerk B:
save (all LIKE "L3 Handbuch Kap*", /"SICHERUNG")
Lies: Sende alle Dateien, deren Namen mit "L3 Handbuch Kap" anfängt, in die Task "SICHERUNG".
save (remainder, archive a)
der Rest auf die nächste eingelegte Diskette gesichert werden.
Managertasks sind solche, die Dateien für andere Tasks verwalten. Es gibt sie im L3 System in verschiedenster Ausprägung, so als mailmanager (POST) oder als archive manager (ARCHIVE A und weitere).
Um eine Task mit der Eigenschaft zu versehen, daß sie Dateien von anderen Tasks annehmen (save, copy) oder an sie abgeben kann (fetch, copy), kann man Sie einfach zur Managertask machen:
Um Dateien zwischen Task zu senden, ohne daß diese besondere 'manager' sein müssen, gibt es die POST. Eine Task kann Dateien an einen beliebigen Empfänger senden. Die Dateien werden in der Post aufbewahrt und können vom Empfänger dort abgeholt werden.
mail ("datei", "taskname")
mail (some, "taskname")
Um sicherzustellen, daß es die Task wirklich gibt und der Taskname richtig geschrieben ist, muß statt des Namens die Task angegeben werden.
mail (all LIKE "Text*", /"Texte")
Lies: Sende per Post alle meine Dateien, deren Name mit "Text" anfängt, an eine Task mit dem Namen "Texte".
Disketten und 'ähnliche' Medien, wie Bandlaufwerke oder DOS Partitionen auf der Festplatte, werden durch besondere Managertasks verwaltet. Gemeinsam ist ihnen, daß sie einer Reservierungslogik gehorchen. Man kann nicht einfach eine Datei auf Diskette schreiben, sondern muß zunächst das Laufwerk (in Gestalt der zugehörigen Managertask) reservieren. Die dann folgenden Aktionen (Holen/Schicken von Dateien) werden durch die üblichen Kommandos wie fetch, save und copy ausgelöst. Anschließend sollte das Laufwerk für andere Tasks wieder freigegeben werden.
reserve (archive b)
Die Medien (Disketten etc.) können gegen versehentliche Benutzung durch Benamung geschützt werden. Wenn ein Name vergeben wurde, werden alle Zugriffe nur ausgeführt, wenn das Laufwerk unter dem Namen reserviert wurde.
reserve ("Harry", archive a)
Falls keine Name benutzt werden soll, können Sie ihn einfach weglassen.
release (archive b)
Falls Sie das Laufwerk nicht freigegeben haben und mindestens 5 Minuten keinen Zugriff mehr auf das Laufwerk hatten, kann es durch eine andere Task reserviert werden.
format (archive a)
Alle Druckaufträge, die von anderen Tasks zur Task "PRINTER" geschickt werden, werden von dieser in einer Warteschlange verwaltet. Mit den folgenden Kommandos, die Sie in der Task "PRINTER" geben, können Sie diese Warteschlange bearbeiten.
Um eine Task zu bezeichnen, ist es nötig ihren Namen als Task zu qualifizieren. Prinzipiell geschieht das durch den Operator "/". Als Schreibvereinfachung gibt es für etliche Tasks des Systems, wie zum Beispiel die Archivmanager, Prozeduren, die die Task spezifizieren.
put (storage (myself))
Lies: zeige wieviel Plattenplatz diese Task logisch belegt.
list (father(father(father)))
Lies: Zeige Dateiliste der 'Urgroßvatertask'.
Kommandos, die direkt eine Task betreffen, gibt es nur wenige. Während Tasks als globale Objekte des L3 Systems in beliebiger Gestalt erzeugbar sind und damit auch beliebige Aufträge, die weit über list und dergleichen herausgehen, möglich sind, sind die Möglichkeiten, eine Task selbst zu behandeln, recht überschaubar.
link (/"OPERATOR")
halt (/"eine wildgewordene Benutzertask")
begin ("name")
Falls aus Versehen eine Task gelöscht wurde, hilft eventuell ein RESET des Rechners um auf den letzten Fixpunkt zurückzufallen. Falls zwischen end und RESET ein Fixpunkt war, gibt es definitiv kein Mittel mehr irgendetwas zu restaurieren.