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 bestimmenAls 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.