summaryrefslogtreecommitdiff
path: root/doc/user-manual/1.7.3-pd/doc/pd.Handbuch.Teil2
blob: c70ddfcd748717cb7eac275ef1b8b6e1f6b90c9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
                        EUMEL-Benutzerhandbuch 
 
                       TEIL 2: Supervisor/Monitor                   
 
 
1. Task-Organisation 
 
In diesem Kapitel wird die Task-Verwaltung und der Task-Baum beschrieben. 
 
Alle Tasks des EUMEL-Systems werden in einen Task-Baum eingebunden. Das be- 
deutet, daß die Task eines Benutzers automatisch einen "Vater" besitzt, aber 
auch neue Tasks ("Söhne") erzeugen kann. In einem EUMEL-System gibt es in 
der Regel zwei spezielle Tasks (#ib#UR#ie# und #ib#SUPERVISOR#ie#). Alle 
anderen Tasks sind Söhne oder Enkel dieser Tasks. Zum Beispiel: 
 
Die mit großen Buchstaben geschriebenen Tasknamen sind "System"-Tasks; die 
mit kleinen Buchstaben geschriebenen Tasknamen sind Benutzer-Tasks (dies 
ist nicht zwingend, sondern Konvention). 
 
- SUPERVISOR: Übernimmt das Einrichten bzw. Löschen von Tasks. 
 
- OPERATOR:   Übernimmt u.a. die Aufgaben für das Ein- bzw. Ausschalten des 
              EUMEL-Systems. 
 
- ARCHIVE:    Übernimmt die Auslagerung von Dateien auf Archive. 
 
- UR:         Ist der "Urvater" des EUMEL-Systems, enthält u.a. den 
              ELAN-Compiler. 
 
- PUBLIC:     Enthält Dateien, die längerfristig gehalten werden müssen und 
              die alle Benutzer des Systems benötigen. 
 
 
Der Task-Baum hat folgende Bedeutung: 
 
Eine Task, die sich "unter" einer anderen befindet, ist ein "Sohn" dieser 
"Vater"-Task. Beispielsweise ist die Task PUBLIC ein Sohn von UR (und UR ist 
somit Vater von PUBLIC). 
 
Die für eine Task zur Verfügung stehenden Datentypen und Operationen (d.h. 
die Objekte, die aus insertierten ELAN-Paketen herausgereicht werden), sind 
durch die direkte aufsteigende Linie im Task-Baum vorgegeben. Die in "Vater- 
Tasks" insertierten und über die Schnittstelle herausgereichten Objekte 
stehen in den "Söhnen" automatisch zur Verfügung. Beispielsweise stehen einer 
Sohn-Task von 'user 1' alle insertierten Objekte aus der 'user 1'-Task zur 
Verfügung (zusätzlich zu denen, die in UR und PUBLIC insertiert wurden). 
Somit ist leicht möglich, unterschiedliche Sprachmengen des ELAN-Compilers 
zur Verfügung zu stellen. Vergl. dazu auch das Kapitel über den ELAN- 
Compiler.  
Ähnliches gilt bei Dateien. So ist es erlaubt, Dateien zu direkten Vätern und 
Söhnen im Taskbaum zu transportieren, aber nicht unmittelbar in "parallele" 
Tasks. Man kann somit in der 'user 1'-Task Dateien von UR oder PUBLIC be- 
ziehen, aber nicht von 'user 2' (da diese Task eine "parallele" Task ist). 
Soll das trotzdem geschehen, so muß eine Datei erst von 'user 1' zu PUBLIC 
geschickt werden und dann von 'user 2' dort abgeholt werden. Genaueres über 
solche Operationen findet man im Benutzerhandbuch über die Datenräume. 
 
Einige Tasks sind speziell dafür eingerichtet, Dateien für mehrere Nutzer 
aufzubewahren. So sind UR und PUBLIC Tasks, die Dateien verwalten, die 
längerfristig gehalten werden sollen. Solche Tasks werden "Manager"-Tasks 
genannt. 
 
 
2. Supervisor und Tasks 
 
Eine Task ist für einen Benutzer ein "eigener Rechner", in der er Programme 
bearbeiten lassen und/oder Daten aufbewahren kann, ohne von anderen Nutzern, 
die gleichzeitig im System arbeiten, gestört zu werden. Der Supervisor er- 
möglicht u.a. die Einrichtung, Weiterbearbeitung und Beendigung einer Task. 
 
 
Überblick 
 
Eine Task ist im EUMEL-System ein selbständiger Prozeß. Zu jedem Program- 
mierer an einem Terminal gehört eine damit verbundene Task. Für den Benutzer 
ist diese Task sozusagen ein "eigener Rechner". In einem EUMEL-System sind 
zur gleichen Zeit noch weitere Tasks vorhanden, so z.B. zum Start und Ab- 
schalten des Systems (OPERATOR), zur Druckersteuerung (SPOOLER), zur Ver- 
waltung längerfristig benötigter Dateien u.a.m.. 
 
Der Supervisor ist auf der ELAN-Ebene des EUMEL-Systems der Betriebssystem- 
kern. Seine Aufgabe ist im wesentlichen die Task-Verwaltung, nämlich die Er- 
richtung und das Löschen von Tasks. Im einfachsten Fall kommt ein Benutzer 
des EUMEL-Systems mit dem Supervisor also nur bei den Supervisor-Kommandos 
in Kontakt, die den Beginn und das Ende einer Task steuern. 
 
Jede Task wird in einen "Taskbaum" eingeordnet. Jede Benutzer-Task ist 
"Sohn" einer bereits vorhandenen "Vater"-Task und "erbt" von dieser vorüber- 
setzte Programme. Man kann Dateien zu einer Vater-Task schicken oder von 
dieser empfangen. 
 
 
Eine neue Task beginnen 
 
Mit dem Supervisor-Kommando 'begin' kann eine neue Task eingerichtet werden. 
 
Soll eine neue Arbeit im EUMEL-System begonnen werden, muß eine neue Task 
eingerichtet werden. Dazu muß das Supervisor-Kommando 'begin' gegeben 
werden. Jedes Supervisor-Kommando muß durch die Betätigung der SV-Taste 
eingeleitet werden. Dadurch meldet sich das EUMEL-System mit 
 
     gib supervisor kommando : 
 
Jetzt kann eines der Supervisor-Kommandos gegeben werden. In unserem Fall 
wollen wir mit dem 'begin'-Kommando eine neue Task einrichten. Beispiel: 
 
     begin ("rainer") 
 
errichtet eine neue Task in dem EUMEL-System mit dem Namen 'rainer'. Die 
Task meldet sich mit 
 
     gib kommando : 
 
Nun kann ein beliebiges Monitor-Kommando gegeben werden. 
 
Wird eine Task in der geschilderten Weise eingerichtet, ist diese Task im 
Taskbaum automatisch ein "Sohn" der Task 'PUBLIC'. 'PUBLIC' ist in der Lage, 
Dateien von der neuen Sohn-Task zu empfangen ('save'-Kommando) oder man kann 
Dateien von 'PUBLIC' in die Sohn-Task holen ('fetch'-Kommando). Solche Tasks, 
die Dateien verwalten können, werden 'manager' genannt. 
 
Merke: Nach dem Betätigen der SV-Taste meldet sich der Supervisor. 
       Mit dem 'begin'-Kommando wird eine neue Task eingerichtet. 
 
 
 
Eine Task ab- und ankoppeln 
 
Mit dem 'break'- und 'continue'-Kommandos können die Arbeiten in einer Task 
unterbrochen und später wieder aufgenommen werden. 
 
Soll die Arbeit in einer Task unterbrochen werden, so kann man das (Monitor-) 
Kommando 
 
     break 
 
geben, welches die Task vom Benutzer-Terminal abkoppelt. Die Task wird dann 
vom System als "Hintergrund-Task" geführt, bleibt also weiterhin bestehen. 
Mit dem Supervisor-Kommando 
 
    continue ("meine task") 
 
kann eine solche "abgekoppelte" Task wieder an ein Terminal angekoppelt und 
die unterbrochenen Arbeiten weitergeführt werden. 
 
Mit 'break' wird eine Task unterbrochen, während durch das 'continue'-Kom- 
mando die Arbeiten fortgesetzt werden können. 
 
 
 
Eine Task beenden 
 
Mit dem 'end'-Kommando wird eine Task beendet und gelöscht. 
 
Sind die Arbeiten in einer Task beendet, so sollte sie aus dem System ent- 
fernt werden. Dies erfolgt mit dem Kommando 
 
    end 
 
Nach einer Rückfrage des Systems wird die Task gelöscht. Beachte, daß mit dem 
Löschen der Task auch alle in ihr befindlichen Dateien gelöscht werden. 
 
Merke: Mit dem 'end'-Kommando wird eine Task beendet und alle in ihr befind- 
lichen Daten werden gelöscht. 
 
 
 
Eine Task als Sohn einer Task einrichten 
 
Mit dem 'begin'-Kommando ist es auch möglich, eine Task als Sohn einer be- 
stimmten Task einzurichten. Damit die Vater-Task auch Dateien der einzu- 
richtenden Sohn-Task verwalten kann, muß man sie vorher zu einer 'manager'- 
Task machen. 
 
In der Regel richtet man seine Task als Sohn von PUBLIC ein. Das erfolgt 
automatisch, sofern man im 'begin'-Kommando nichts anderes als den neuen 
Tasknamen angibt. Manchmal ergibt sich aber die Notwendigkeit, eine Task als 
Sohn einer bestimmten Task einzurichten. Gründe können dafür u.a. sein: 
 
- Man will eine eigene Datei-Hierarchie über mehrere Tasks einrichten. 
 
- Man will ein Programmsystem anderen Benutzern zur Verfügung stellen. 
 
Damit eine Task als Vater für andere, noch einzurichtende Task arbeiten kann, 
muß man sie zuerst zu einer 'manager'-Task machen. Das erfolgt mit dem 
Kommando 
 
     global manager 
 
Dies Kommando muß in der Task gegeben werden, die eine Vater-Task werden 
soll. Damit wird die Task befähigt, Söhne einzurichten und Dateien, die von 
einem (oder mehreren) Söhnen geschickt werden, zu verwalten. 
 
Durch das 'global manager'-Kommando wird implizit ein 'break'-Kommando ge- 
geben, so daß der Benutzer in der Supervisor-Ebene landet. Koppelt man nun 
zu irgendeinem Zeitpunkt diese (zunächst potentielle) Vater-Task wieder an 
('continue'-Kommando), meldet sich die Task nicht wie gewohnt mit 'gib 
kommando :', sondern mit 
 
     maintenance : 
 
um anzudeuten, daß es sich um eine 'manager'-Task handelt. 
 
Um eine Sohn-Task "unterhalb" der 'manager'-Task einzurichten, gibt man das 
'begin'-Kommando, wobei man die Vater-Task mit angibt. Beispiel: 
 
     begin ("rainer", "vatername") 
 
richtet eine neue Task 'rainer' ein, die als Sohn der Vater-Task 'vatername' 
in den Taskbaum eingeordnet wird. 
 
Merke: Das Kommando 'global manager' macht eine Task zu einer 'manager'-Task. 
Mit dem 'begin'-Kommando kann man auch eine Task als Sohn einer bestimmten 
Task einrichten. 
 
 
 
Ein laufendes Programm unterbrechen 
 
Mit dem Betätigen der SV-Taste und dem Supervisor-Kommando 'halt' kann ein 
Programm abgebrochen werden. 
 
Soll ein Programm, welches gerade ausgeführt wird, vorzeitig abgebrochen 
werden, so betätigt man die SV-Taste und gibt das Supervisor-Kommando 
 
    halt 
 
Anschließend kann man wieder ein Monitor-Kommando geben, weil man durch das 
'halt'-Kommando automatisch wieder in seine Task gelangt. 
 
Merke: Mit dem 'halt'-Kommando wird ein Programm abgebrochen. 
 
 
 
Eine Task mit Paßwort schützen 
 
Man kann eine Task durch ein Paßwort vor unberechtigtem Zugriff schützen. 
 
Das Kommando 
 
    task password 
 
welches nur im Monitor gegeben werden kann, sorgt dafür, daß eine Task fort- 
an nur wieder mit einem 'continue'-Kommando 'betreten' werden kann, wenn man 
vorher das richtige Paßwort angibt. Beispiel: 
 
     task passwort ("mein geburtstag") 
 
Versucht nun ein Benutzer, die mit dem Paßwort geschützte Task mit dem 
'continue'-Kommando an sein Terminal anzukoppeln, wird er zunächst nach dem 
'Paßwort' gefragt. Nur unter Angabe des Paßwortes wird die Task angekoppelt. #count("1")#) 
 
Man sollte Paßwörter möglichst behalten! Durch Paßwörter geschützte Tasks 
kann niemand - außer durch die Angabe des korrekten Paßworts - die Task 
wieder ankoppeln. Hat man das Paßwort vergessen, kann man nur noch die Task 
löschen. 
 
Damit ist gewährleistet, daß kein unberechtigter Benutzer an die Dateien und 
Programme der Task gelangen kann. Es gibt jedoch noch zwei Situationen, die 
einen unberechtigten Zugang zu Dateien erlauben: 
 
a) Dateien in die Vater-Task schicken: 
   Transportiert man Dateien in die Vater-Task ('save'-Kommando, vergl. auch 
   Teil 7: Datei-Verwaltung), können Benutzer auf diese Dateien zugreifen 
   (sofern sie Zugang zu dieser Task haben). Dies kann man verhindern, in dem 
   man ein Datei-Paßwort angibt (siehe Teil 7 für die Beschreibung dieser 
   Paßworte). Man beachte, daß das Paßwort für Dateien und das oben be- 
   schriebene Paßwort für Tasks nichts miteinander zu tun haben. 
 
b) Dateien werden in eine Sohn-Task geholt: 
   Ist die Task als Vater-Task eingerichtet (Kommando 'global manager') dann 
   ist es möglich, von der Sohn-Task Dateien ('fetch'-Kommando) aus der 
   Vater-Task zu holen, die mit einem Paßwort geschützt ist. Darum muß man 
   verhindern, daß Unberechtigte Söhne einer mit Paßwort geschützten Task 
   einrichten können. Das kann man mit dem Kommando 
 
       begin password ("geheim") 
 
   Wird dieses Kommando gegeben, wird man bei dem Versuch, eine Sohn-Task 
   einzurichten, nach einem Paßwort gefragt. Beachte, daß das 'begin- 
   password' nichts mit dem Task-Paßwort und Datei-Paßwort zu tun hat. 
 
Merke: Mit dem 'task password'-Kommando wird eine Task durch ein Paßwort 
geschützt. 
 
 
 
Informations-Kommandos 
 
(Die Informations-Kommandos können auch vom Monitor aus gegeben werden). 
 
Mit der Informationsprozedur 
 
     task status 
 
können Sie sich über den Zustand einer Task informieren. Beispiele: 
 
     task status            (* informiert über die eigene Task *)                        
     task status (father)   (* informiert über die Vater-Task *) 
 
'task status' informiert u.a. über die verbrauchte CPU-Zeit der Task, den 
belegten Speicherplatz (man beachte, daß Dateien mit Vater-Tasks oder Sohn- 
Tasks werden), den Kanal, an dem die Task angekoppelt ist und dem Zustand 
der Task (vergl. auch 'task info'). 
 
Mit der Prozedur 
 
     task info 
 
können Sie eine Übersicht über alle in dem System befindlichen Tasks er- 
halten.
Mit dem Kommando 
 
     storage info 
 
kann man erfahren, wieviel Speicherplatz auf dem EUMEL-Hintergrund (noch) 
zur Verfügung steht. 
 
Durch einige Kommandos, die man nur vom Monitor aus geben kann, kann man 
sich den Namen von Tasks liefern lassen. Die Kommandos 
 
     myself 
     father 
 
liefern den (internen) Task-Namen. Mit dem Kommando 
 
     name 
 
bekommt man den internen Tasknamen in einen Text gewandelt. Beispiel: 
 
     put (name (myself)) 
     put (name (father)) 
 
Mit dem Kommando 
 
     rename myself 
 
kann der Task-Name der Benutzer-Task geändert werden. 
 
Merke: Durch die Informations-Kommandos 'storage info' und 'task info' kann 
man erfahren, wieviel Speicherplatz und welche Tasks in dem EUMEL-System 
sind. Mit den Kommandos 'myself' und 'father' kann man mehrere Dateien auf 
einmal manipulieren (vergl. Teil 7). 
 
 
 
Übersicht über Supervisor- und Task-Kommandos 
 
In diesem Abschnitt werden alle Supervisor- und Task-Kommandos in der ELAN- 
Notation dargestellt. 
 
Die Supervisor-Kommandos entsprechen - wie alle anderen Kommandos im EUMEL- 
System - der ELAN-Syntax (Kommando-Namen werden klein geschrieben, Parameter 
in Klammern, mehrere Parameter durch Kommata getrennt, TEXT-Parameter in 
Anführungstrichen usw.). Dabei ist jedoch zu beachten, daß diese Kommandos 
zum Teil nur im Supervisor-Zustand (vorheriges Betätigen der SV-Taste) ge- 
geben werden können. Die Kommandos 'break', 'end', 'storage info' und 
'task info' können auch im Monitor gegeben werden. 
Folgende Supervisor-Kommandos stehen zur Verfügung: 
 
begin 
     PROC begin (TEXT CONST task name) 
     Zweck: Richtet eine neue Task als Sohn von PUBLIC ein. 
 
     PROC begin (TEXT CONST task name, father task name) 
     Zweck: Richtet eine neue Task als Sohn der 'father task name'-Task ein. 
 
begin password 
     PROC begin password (TEXT CONST geheim) 
     Zweck: Verhindert das unberechtigte Einrichten einer Sohn-Task. 
 
break 
     PROC break 
     Zweck: Die zum Terminal aktuell zugeordnete Task wird abgekoppelt. Sie 
            wird damit zu einer Hintergrund-Task, d.h. sie wird entweder bis 
            zu ihrem Ende oder bis zur nächsten angeforderten Terminal-Ein-/ 
            Ausgabe oder bis zum nächsten 'continue'- Kommando weiter be- 
            arbeitet. 
 
continue 
     PROC continue (TEXT CONST task name) 
     Zweck: Eine im Hintergrund laufende Task wird an das Terminal des 
            Benutzers angekoppelt. 
 
end 
     PROC end 
     Zweck: Die zum Terminal aktuell gehörende Task wird abgebrochen und 
            gelöscht. Das Kommando ist im Monitor verfügbar. 
 
father 
     TASK PROC father 
     Zweck: Liefert den internen Tasknamen. 
 
global manager 
     PROC global manager 
     Zweck: Macht eine Task zur 'manager'-Task. Erst nach Aufruf dieser 
            Prozedur sind Sohn-Tasks möglich. 
 
halt 
     PROC halt 
     Zweck: Das laufende Programm der dem Terminal aktuell zugeordneten Task 
            wird abgebrochen. Im Gegensatz zum 'end'-Kommando wird nur das 
            laufende Programm abgebrochen, aber die Task wird nicht gelöscht. 
            Genauer: 
            Es wird der Fehler 'halt from terminal' induziert. Normalerweise 
            wird das Programm dadurch wie durch jeden anderen Fehler abge- 
            brochen. Genaueres findet man im Systemhandbuch unter Fehler- 
            behandlung. 
 
name 
     TEXT PROC name (TASK CONST interner name) 
     Zweck: Wandelt den internen Task-Namen in einen TEXT. 
 
rename myself 
     PROC rename myself (TEXT CONST neuer name) 
     Zweck: Umbenennen einer Benutzer-Task. 
 
myself 
     TASK PROC myself 
     Zweck: Liefert den internen Task-Namen der Benutzer-Task. 
 
storage info 
     PROC storage info 
     Zweck: Informationsprozedur über den verfügbaren Hintergrund-Speicher. 
 
task info 
    PROC task info 
    Zweck: Informiert über alle Tasknamen im System unter gleichzeitiger An- 
           gabe der Vater/Sohn-Beziehungen (Angabe durch Einrückungen). 
 
    PROC task info (INT CONST art) 
    Zweck: Informiert über alle Tasks im System. Mit 'art' kann man die Art 
           der Zusatz-Information auswählen. Für 'art' sind zur Zeit 
           folgende Werte zugelassen: 
 
           1: entspricht 'task info' ohne Parameter, d.h. gibt nur die 
              Tasknamen unter angabe der Vater/Sohn-Beziehungen aus. 
 
           2: gibt die Tasknamen aus. Zusätzlich erhalten Sie Informationen 
              über die verbrauchte CPU-Zeit der Task, die Priorität, den 
              Kanal, an dem die Task angekoppelt ist und den eigentlichen 
              Taskstatus. Hierbei bedeuten: 
 
              0    -busy-        Task ist aktiv. 
              1    i/o           Task wartet auf Beendigung des Outputs 
                                 oder auf Eingabe. 
              2    wait          Task wartet auf Sendung von einer anderen 
                                 Task. 
              4    busy-blocked  Task ist rechenwillig, aber blockiert. 
              5    i/o -blocked  Task wartet auf I/O, ist aber blockiert. 
              6    wait-blocked  Task wartet auf Sendung, ist aber blockiert. 
                                 Achtung: Die Task wird beim Eintreffen einer 
                                 Sendung automatisch entblockiert. 
 
           3: wie 2, aber zusätzlich wird der belegte Speicher angezeigt. 
              (Achtung: Prozedur ist aufwendig!). Beachten Sie, daß Dateien 
              mit Väter/Söhnen "geshared" werden. Beispiel: 
              Mit 'begin ("sohn", "vater")' wird eine neue Task eingerichtet. 
              Für 'sohn' wird in diesem Zustand der gleiche belegte Speicher 
              angezeigt wie für 'vater'. Erst wenn (Datei-)Operationen in 
              der Sohn- oder Vater-Task vorgenommen werden, wird ein unter- 
              schiedlicher Speicherplatz angezeigt. 
 
task status 
    PROC task status 
    Zweck: Informationsprozedur über den Zustand der eigenen Task. 
           Informiert u.a. über 
           - Name der Task, Datum und Uhrzeit; 
           - verbrauchte CPU-Zeit; 
           - belegten Speicherplatz; 
           - Kanal, an den die Task angekoppelt ist; 
           - Zustand der Task (rechnend u.a.m.); 
           - Priorität. 
 
    PROC task status (TASK CONST t) 
    Zweck: Wie obige Prozedur, aber über die Task mit dem internen Task- 
           namen 't'. Beispiel: task status (father) 
 
task password 
     PROC password (TEXT CONST geheim) 
     Zweck: Einstellen eines Paßworts für eine Task im Monitor. Das Kommando 
            'task password' ist ein Monitor-Kommando. Ist eine Task mit einem 
            Paßwort geschützt, so wird durch den Supervisor nach dem 
            'continue'-Kommando das Paßwort angefragt. Nur nach Eingabe des 
            richtigen Paßworts gelangt man in die gewünschte Task. Das Paß- 
            wort kann durch nochmaligen Aufruf von 'task password' geändert 
            werden, z.B., wenn es in regelmäßigen Abständen geändert werden 
            muß, um personenbezogene Daten zu schützen. 
 
            Es gibt keine Möglichkeit, ein einmal eingestelltes Paßwort in 
            Erfahrung zu bringen. Sollte das Paßwort vergessen werden, kann 
            somit die Task nur noch gelöscht werden. 
 
            Wird als Paßwort ein '-'-Zeichen eingegeben, so wird verhindert, 
            daß die betreffende Task jemals wieder mit dem 'continue'-Kom- 
            mando angekoppelt werden kann. Dies ist z.B. für Manager-Tasks 
            sinnvoll. 
 
 
 
3. Der Monitor 
 
Der EUMEL-Monitor führt den Dialog mit dem Benutzer innerhalb einer Task. In 
diesem Kapitel werden nur die Ausführung der Kommandos und die Kommando- 
Arten  beschrieben, während die einzelnen Kommandos selbst in den jeweiligen 
Kapiteln des Benutzerhandbuchs erläutert werden. 
 
Der Monitor ermöglicht es, Leistungen im Dialog mit Hilfe von Kommandos 
(ELAN-Prozeduraufrufen) vom EUMEL-Betriebssystem anzufordern. Nach dem 
Beginn einer Sitzung meldet sich der Monitor mit 
 
     gib kommando : 
 
Danach kann der Benutzer Monitor-Kommandos geben. Erfolgt dabei ein Schreib- 
fehler, so kann er (wie beim Editor) innerhalb der Zeile positionieren, über- 
schreiben, löschen, einfügen u.a.m.. Die Ausführung des/der Kommandos wird 
mit der Taste RETURN ausgelöst. Nach Abschluß einer Kommando-Ausführung er- 
scheint wieder obige Meldung. Die Tastenfolge ESC k stellt das zuletzt gege- 
bene Kommando wieder dar. 
 
Monitor-Kommandos müssen gemäß der ELAN-Syntax geschrieben werden (Kommando- 
Namen werden klein geschrieben, Parameter in Klammern, mehrere Parameter 
durch Kommata getrennt, TEXT-Parameter in Anführungstrichen usw.). Beispiele: 
 
     edit ("meine datei") 
     copy ("meine datei", "Duplikat") 
 
Bei den meisten Kommandos mit einem TEXT-Parameter kann der Parameter fort- 
gelassen werden. Der Monitor versorgt das Kommando immer mit dem zuletzt an- 
gegebenen Parameter und zeigt dies auch auf dem Bildschirm des Benutzers an. 
Beispiel: 
 
     edit ("Datei vom 17.4.") 
 
schreibt der Nutzer nun z.B. 
 
     run 
 
und betätigt RETURN, dann ergänzt der Monitor das Kommando: 
 
     run ("Datei vom 17.4.") 
 
Monitor-Kommandos sind einzeilige ELAN-Programme, die dem ELAN-Compiler zur 
Übersetzung und anschließender Ausführung zugeleitet werden. Darum können 
die Monitor-Kommandos auch von Programmen aus verwendet werden. Falsch ge- 
schriebene oder nicht vorhandene Kommandos werden vom ELAN-Compiler mit ent- 
sprechender Fehlermeldung abgewiesen. Oft benutzte Kommandos werden aus 
Effizienzgründen vom Monitor selbst interpretiert und ausgeführt. Durch die 
automatische Überleitung von Kommandos zum ELAN-Compiler ist es möglich 
 
a) einzeilige ELAN-Programme direkt in der Monitor-Ebene ausführen zu 
   lassen, d.h. ohne das Programm in eine Datei zu schreiben. Beispiel: 
 
     put (sin (0.5)) 
 
b) mehrere Kommandos (ELAN-Anweisungen), durch ";" getrennt, auf einmal zu 
   schreiben. Beispiele: 
 
     edit ("datei"); lineform ("datei"); print ("datei") 
     INT VAR i; FOR i FROM 1 UPTO90 REP print ("x") ENDREP 
 
c) eine Erweiterung des Kommando-Vorrats jederzeit vorzunehmen, indem man 
   die gewünschte Prozedur (in einem PACKET "verpackt") 'insertiert'. 
 
Im folgenden werden die am häufigsten benutzten Kommandos aufgeführt. 
Genauere Informationen über die einzelnen Kommandos findet man in den 
entsprechenden Kapiteln des Benutzerhandbuchs. 
 
Informations-Kommandos 
 
     storage info               Belegter externer Speicher 
     task info                  Zeigt die im System befindlichen Tasks 
     task status                Zustände der im System befindlichen Tasks 
 
 
Verbindung zum Supervisor 
 
     end                        Task und die in ihr befindlichen Dateien 
                                löschen 
     break                      Task abkoppeln 
     task password ("geheim")   Paßwort einstellen 
 
 
Editor-Kommandos 
 
     edit ("datei")             Datei editieren 
     edit ("datei1", "datei2")  Parallel-Editor 
 
 
Compiler-Kommandos 
 
     run ("datei")              Übersetzen und ausführen eines ELAN-Programms 
     run again                  Letztes übersetztes Programm nochmal aus- 
                                führen 
     insert ("datei")           Übersetztes Programm eintragen 
 
 
Datei-Kommandos 
 
     copy ("datei", "duplikat") Datei kopieren 
     rename ("alt", "neu")      Datei umbenennen 
     reorganize ("datei")       Datei "reorganisieren" 
     fetch      ("datei")       Datei von Vater-Task holen 
     save       ("datei")       Datei zur Vater-Task schicken 
     erase      ("datei")       Datei in Vater-Task löschen 
     forget     ("datei")       Datei in Benutzer-Task löschen 
     list                       Dateien der Benutzer-Task anzeigen 
 
 
Archiv-Kommandos 
 
     archive ("name")           Archiv mit einem Namen reservieren 
     release   (archive)        Archiv freigeben 
     clear     (archive)        Löscht ein Archiv 
     list      (archive)        Dateien des Archivs anzeigen 
     save all  (archive)        Archiviert alle Dateien einer Task 
     fetch all (archive)        Holt alle Dateien eines Archivs in eine Task 
     save  ("datei", archive)   Datei archivieren 
     fetch ("datei", archive)   Datei vom Archiv holen 
 
 
Textkosmetik und Drucker 
 
     lineform ("datei")         Zeilenweises Formatieren 
     pageform ("datei")         Seitenweises Formatieren 
     index    ("datei")         Stichwort- und Inhaltsverzeichnis 
     print    ("datei.p")       Drucken