summaryrefslogtreecommitdiff
path: root/dialog/ls-DIALOG 6
diff options
context:
space:
mode:
Diffstat (limited to 'dialog/ls-DIALOG 6')
-rw-r--r--dialog/ls-DIALOG 61186
1 files changed, 0 insertions, 1186 deletions
diff --git a/dialog/ls-DIALOG 6 b/dialog/ls-DIALOG 6
deleted file mode 100644
index 7d28f7f..0000000
--- a/dialog/ls-DIALOG 6
+++ /dev/null
@@ -1,1186 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 6 **
- ** Archiv-/Taskhandling **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog 6 DEFINES
- menu archiv notizort setzen,
- menu archiv grundeinstellung,
- menu archiv zieltask einstellen,
- menu archiv zieltask aendern,
- menu archiv reservieren,
- menu archiv neue diskette,
- menu archiv schreiben,
- menu archiv checken,
- menu archiv schreibcheck,
- menu archiv holen,
- menu archiv loeschen,
- menu archiv verzeichnis,
- menu archiv verzeichnis drucken,
- menu archiv initialisieren,
-
- menu archiv reservierung aufgeben,
- archiv:
-LET menukartenname = "ls-MENUKARTE:Archiv";
-LET ack = 0,
- schreiben = 1,
- checken = 2,
- schreibcheck = 3,
- holen = 4,
- loeschen = 5,
- list code = 15,
- reserve code = 19;
-BOOL VAR zieltask ist archivmanager :: TRUE,
- archiv gehoert mir :: FALSE,
- fehlerfall :: FALSE,
- kontakt mit zieltask erfolgt :: FALSE;
-
-TEXT VAR zieltaskname :: "ARCHIVE",
- aktueller archivname :: "";
-INT VAR stationsnummer :: station (myself),
- letzte funktion :: 11,
- notizort :: 3;
-PROC archiv:
- install menu (menukartenname, FALSE);
- handle menu ("ARCHIV")
-END PROC archiv;
-PROC melde zieltaskerror (TEXT CONST meldung):
- IF meldung = menubasistext (47)
- THEN menuinfo (menubasistext (123))
- ELIF meldung = menubasistext (46)
-
- THEN menuinfo (menubasistext (124))
- ELIF pos (meldung, "inkonsistent") > 0
- THEN menuinfo (menubasistext (125))
- ELIF pos (meldung, "Lesen unmoeglich") > 0
- COR pos (meldung, "Schreiben unmoeglich") > 0
- THEN menuinfo (menubasistext (126))
- ELIF pos (meldung, "Archiv heisst") > 0 AND pos (meldung, "?????") > 0
- THEN menuinfo (menubasistext (127))
- ELIF pos (meldung, "Archiv heisst") > 0
- THEN menuinfo (menubasistext (128))
- ELIF pos (meldung, "Schreibfehler") > 0 CAND pos (meldung, "Archiv") > 0
-
- THEN menuinfo (menubasistext (129))
- ELIF pos (meldung, "Lesefehler") > 0
- THEN menuinfo (menubasistext (130))
- ELIF pos (meldung, "Kommando") > 0 AND pos (meldung, "unbekannt") > 0
- THEN menuinfo (menubasistext (131))
- ELIF pos (meldung, "falscher Auftrag fuer Task") > 0
- THEN menuinfo (menubasistext (132))
- ELIF meldung = menubasistext (41)
- THEN menuinfo (menubasistext (133))
- ELIF meldung = menubasistext (42)
- THEN menuinfo (menubasistext (134))
-
- ELIF pos (meldung, "Collector") > 0 AND pos(meldung, "fehlt") > 0
- THEN menuinfo (menubasistext (135))
- ELIF pos (meldung, "kein Zugriffsrecht auf Task") > 0
- THEN menuinfo (menubasistext (132))
- ELIF pos (meldung, "nicht initialisiert") > 0
- THEN menuinfo (menubasistext (136))
- ELIF pos (meldung, "ungueltiger Format-Code") > 0
- THEN menuinfo (menubasistext (137))
- ELSE menuinfo (invers (meldung))
- FI
-END PROC melde zieltaskerror;
-PROC menu archiv notizort setzen (INT CONST wert):
-
- SELECT wert OF
- CASE 1,2,3,4,5 : notizort := wert
- OTHERWISE notizort := 3
- END SELECT
-END PROC menu archiv notizort setzen;
-PROC menu archiv grundeinstellung (INT CONST ort):
- menu archiv zieltask aendern ("ARCHIVE", station (myself), TRUE);
- menu archiv notizort setzen (ort);
- zieltask anzeigen
-END PROC menu archiv grundeinstellung;
-PROC menu archiv zieltask einstellen:
- TEXT VAR taskname :: "";
- INT VAR stationsnr, auswahl;
- BOOL VAR ist amanager;
- erfrage daten;
-
- kontrolliere daten;
- menu archiv zieltask aendern (taskname, stationsnr, ist amanager);
- refresh submenu;
- zieltask anzeigen.
- erfrage daten:
- auswahl := menualternative (menubasistext (51), menubasistext (52),
- menubasistext (53), 5, TRUE);
- SELECT auswahl OF
- CASE 1, 101 : menu archiv zieltask aendern
- ("ARCHIVE", station (myself), TRUE );
- ausstieg
- CASE 2, 102 : menu archiv zieltask aendern
-
- (name (father), station (myself), FALSE);
- ausstieg
- CASE 3, 103 : menu archiv zieltask aendern
- ("PUBLIC", station (myself), FALSE);
- ausstieg
- CASE 4, 104 : handeinstellung
- OTHERWISE ausstieg
- END SELECT.
- ausstieg:
- refresh submenu;
- zieltask anzeigen;
- LEAVE menu archiv zieltask einstellen.
- handeinstellung:
- taskname := menuanswer (menubasistext (81), zieltaskname, 5);
-
- stationsnr := int (menuanswer (menubasistext (82),
- text (station (myself)), 5));
- ist amanager := menuyes (menubasistext (83), 5).
- kontrolliere daten:
- IF compress (taskname) = ""
- OR compress (taskname) = "-"
- OR taskname = name (myself)
- THEN menuinfo (menubasistext (64));
- LEAVE menu archiv zieltask einstellen
- FI.
-END PROC menu archiv zieltask einstellen;
-PROC menu archiv zieltask aendern (TEXT CONST taskname,
-
- INT CONST stationsnr,
- BOOL CONST ist archivmanager):
- menufootnote (menubasistext (21) + menubasistext (23));
- gib ggf archiv frei;
- IF ist archivmanager
- THEN archivmanager einstellen
- ELSE sonstige task einstellen
- FI;
- aktiviere gueltige archivmenupunkte.
- gib ggf archiv frei:
- IF archiv gehoert mir
- THEN archivreservierung aufgeben
- FI.
- archivmanager einstellen:
- zieltask ist archivmanager := TRUE;
-
- zieltaskname := taskname;
- stationsnummer := stationsnr;
- kontakt mit zieltask erfolgt := FALSE;
- aktueller archivname := "";
- archiv gehoert mir := FALSE;
- letzte funktion := 11.
- sonstige task einstellen:
- zieltask ist archivmanager := FALSE;
- zieltaskname := taskname;
- stationsnummer := stationsnr;
- aktueller archivname := "";
- archiv gehoert mir := FALSE;
-
- letzte funktion := 6.
-END PROC menu archiv zieltask aendern;
-PROC menu archiv reservieren:
- TEXT VAR archivname :: "", meldung :: "";
- kontrolliere einstellung;
- menufootnote (menubasistext (21) + menubasistext (24));
- versuche archiv zu reservieren (meldung);
- werte meldung aus;
- archiv anmelden (archivname, meldung, TRUE);
- IF archivname = ""
- THEN behandle archivfehler
- ELSE aktueller archivname := archivname
- FI;
- aktiviere gueltige archivmenupunkte;
-
- refresh submenu;
- zieltask anzeigen.
- kontrolliere einstellung:
- IF NOT zieltask ist archivmanager
- THEN aktiviere gueltige archivmenupunkte;
- refresh submenu;
- LEAVE menu archiv reservieren
- ELIF NOT kontakt mit zieltask erfolgt
- THEN versuche kontakt herzustellen
- FI.
- versuche kontakt herzustellen:
- TEXT VAR fehler :: "";
- IF NOT task ist kommunikativ (fehler)
- THEN melde zieltaskerror (fehler);
- melde rigoros ab;
-
- LEAVE menu archiv reservieren
- ELSE kontakt mit zieltask erfolgt := TRUE
- FI.
- werte meldung aus:
- IF meldung <> ""
- THEN melde zieltaskerror (meldung);
- melde rigoros ab;
- LEAVE menu archiv reservieren
- FI.
- behandle archivfehler:
- melde zieltaskerror (meldung);
- archivreservierung aufgeben;
- melde rigoros ab
-END PROC menu archiv reservieren;
-PROC melde rigoros ab:
- aktueller archivname := "";
- archiv gehoert mir := FALSE;
-
- kontakt mit zieltask erfolgt := FALSE
-END PROC melde rigoros ab;
-PROC versuche archiv zu reservieren (TEXT VAR fehler):
- IF NOT kontakt mit zieltask erfolgt
- THEN fehler := menubasistext (44);
- archiv gehoert mir := FALSE;
- LEAVE versuche archiv zu reservieren
- FI;
- disable stop;
- IF eigene station
- THEN reserve ("beknackter archivename",/zieltaskname )
- ELSE reserve ("beknackter archivename", stationsnummer/zieltaskname)
- FI;
- IF is error
- THEN fehler := errormessage;
-
- melde rigoros ab;
- clear error
- ELSE archiv gehoert mir := TRUE;
- fehler := "";
- FI;
- enable stop
-END PROC versuche archiv zu reservieren;
-PROC archiv anmelden (TEXT VAR archivname, fehler, BOOL CONST mit anfrage):
- ueberpruefe archivbesitz;
- fuehre archivanmeldung aus.
- ueberpruefe archivbesitz:
- IF NOT archiv gehoert mir OR NOT kontakt mit zieltask erfolgt
- THEN fehler := menubasistext (45);
- melde rigoros ab;
- LEAVE archiv anmelden
-
- FI.
- fuehre archivanmeldung aus:
- IF mit anfrage
- THEN frage nach eingelegter diskette und melde an
- ELSE melde archiv unter richtigem namen an
- FI.
- frage nach eingelegter diskette und melde an:
- IF menuyes (menubasistext (84), 5)
- THEN menufootnote (menubasistext (21) + menubasistext (25));
- melde archiv unter richtigem namen an
- ELSE fehler := menubasistext (46);
- aktueller archivname := "";
- LEAVE archiv anmelden
-
- FI.
- melde archiv unter richtigem namen an:
- disable stop;
- IF eigene station
- THEN reserve ("beknackter archivename",/zieltaskname);
- list (/zieltaskname);
- ELSE reserve ("beknackter archivename", stationsnummer/zieltaskname);
- list (stationsnummer/zieltaskname)
- FI;
- IF is error
- THEN fehler := errormessage;
- behandle die fehlermeldung
- ELSE archivname := "beknackter archivename";
- fehler := "";
- enable stop
-
- FI.
- behandle die fehlermeldung:
- IF subtext (fehler, 1, 14) = menubasistext (61)
- CAND subtext (fehler, 16, 20) <> menubasistext (62)
- THEN clear error; enable stop;
- archivname := subtext (fehler, 16, length (fehler) - 1);
- melde archiv nun wirklich richtig an;
- fehler := "";
- enable stop
- ELIF subtext (fehler, 1, 14) = menubasistext (61)
- CAND subtext (fehler, 16, 20) = menubasistext (62)
- THEN clear error; enable stop;
-
- archivname := "";
- fehler := menubasistext (62)
- ELSE clear error; enable stop;
- archivname := ""
- FI.
- melde archiv nun wirklich richtig an:
- IF eigene station
- THEN reserve (archivname,/zieltaskname);
- ELSE reserve (archivname, stationsnummer/zieltaskname)
- FI.
-END PROC archiv anmelden;
-PROC menu archiv neue diskette:
- ueberpruefe reservierung;
- melde neue diskette an.
- ueberpruefe reservierung:
- IF NOT (archiv gehoert mir AND kontakt mit zieltask erfolgt)
-
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE menu archiv neue diskette
- FI.
- melde neue diskette an:
- TEXT VAR archivname :: "", meldung :: "";
- menufootnote (menubasistext (21) + menubasistext (26));
- archiv anmelden (archivname, meldung, FALSE);
- IF archivname = ""
- THEN behandle archivfehler
- ELSE aktueller archivname := archivname
- FI;
- zieltask anzeigen.
- behandle archivfehler:
- melde zieltaskerror (meldung);
- aktueller archivname := "".
-
-END PROC menu archiv neue diskette;
-PROC menu archiv schreiben:
- dateioperation mit zieltask (schreiben);
- regenerate menuscreen
-END PROC menu archiv schreiben;
-PROC menu archiv checken:
- dateioperation mit zieltask (checken);
- regenerate menuscreen
-END PROC menu archiv checken;
-PROC menu archiv schreibcheck:
- dateioperation mit zieltask (schreibcheck);
- regenerate menuscreen
-END PROC menu archiv schreibcheck;
-PROC menu archiv holen:
- dateioperation mit zieltask (holen);
- regenerate menuscreen
-
-END PROC menu archiv holen;
-PROC menu archiv loeschen:
- dateioperation mit zieltask (loeschen);
- regenerate menuscreen
-END PROC menu archiv loeschen;
-PROC dateioperation mit zieltask (INT CONST wahl):
- ueberpruefe kommunikationsbasis und sinnhaftigkeit;
- lasse dateien auswaehlen;
- operiere mit ausgewaehlten dateien.
- ueberpruefe kommunikationsbasis und sinnhaftigkeit:
- IF unzulaessiger zieltaskname
- THEN LEAVE dateioperation mit zieltask
- ELIF zieltaskname = name (myself)
-
- THEN melde zieltaskerror (menubasistext (48));
- LEAVE dateioperation mit zieltask
- ELIF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE dateioperation mit zieltask
- ELIF NOT zieltask ist archivmanager
- AND (wahl = checken OR wahl = schreibcheck)
- THEN gib hinweis auf unmoeglich;
- LEAVE dateioperation mit zieltask
- ELIF NOT zieltask ist archivmanager
-
- THEN stelle kontakt mit zieltask her
- ELIF wahl < schreiben OR wahl > loeschen
- THEN LEAVE dateioperation mit zieltask
- FI.
- stelle kontakt mit zieltask her:
- TEXT VAR fehler :: "";
- IF task ist kommunikativ (fehler)
- THEN kontakt mit zieltask erfolgt := TRUE
- ELSE melde zieltaskerror (fehler);
- LEAVE dateioperation mit zieltask
- FI.
- gib hinweis auf unmoeglich:
- menuinfo (menubasistext (121) + taskname + menubasistext (122)).
-
- taskname:
- IF eigene station
- THEN zieltaskname
- ELSE text (stationsnummer) + "/" + zieltaskname
- FI.
- lasse dateien auswaehlen:
- THESAURUS VAR angekreuzte;
- disable stop;
- IF wahl = schreiben OR wahl = schreibcheck
- THEN angekreuzte := menusome (ALL myself, operationshinweis,
- ankreuzhinweis, FALSE)
- ELSE angekreuzte := menusome (zieltaskthesaurus, operationshinweis,
- ankreuzhinweis, FALSE)
-
- FI;
- fehlerbehandlung.
- zieltaskthesaurus:
- IF eigene station
- THEN ALL /zieltaskname
- ELSE ALL (stationsnummer/zieltaskname)
- FI.
- ankreuzhinweis:
- menubasistext (91) + operationskennzeichnung (wahl) + menubasistext (92).
- operationshinweis:
- operationsbezeichnung (wahl) + zieltaskhinweis.
- operiere mit ausgewaehlten dateien:
- bereite bildschirm vor;
- steige ggf bei leerem thesaurus aus;
- IF wahl = schreiben OR wahl = schreibcheck
- THEN zuerst loeschen
-
- FI;
- IF wahl = schreibcheck
- THEN fehlerfall := FALSE;
- dateioperation ausfuehren (angekreuzte, schreiben, FALSE);
- IF NOT fehlerfall
- THEN dateioperation ausfuehren (angekreuzte, checken, TRUE)
- FI
- ELSE dateioperation ausfuehren (angekreuzte, wahl, TRUE)
- FI.
- bereite bildschirm vor:
- show menuwindow.
- steige ggf bei leerem thesaurus aus:
- IF NOT not empty (angekreuzte)
- THEN menuwindowline (2);
- menuwindowout (menubasistext (94));
-
- menuwindowstop;
- LEAVE dateioperation mit zieltask
- FI.
- zuerst loeschen:
- menuwindowout (menuwindowcenter (menubasistext (21) + menubasistext (31)));
- menuwindowline;
- IF not empty (angekreuzte)
- THEN disable stop;
- THESAURUS CONST zu loeschende ::
- angekreuzte / zieltaskthesaurus;
- fehlerbehandlung;
- biete ggf dateien zum loeschen an
- ELSE menuwindowpage
- FI.
- biete ggf dateien zum loeschen an:
-
- IF not empty (zu loeschende)
- THEN menuwindowout (menuwindowcenter (invers (menubasistext (108))));
- menuwindowline;
- menuwindowout (menuwindowcenter (menubasistext (109)));
- menuwindowline (2);
- dateien rausschmeissen
- ELSE menuwindowpage
- FI.
- dateien rausschmeissen:
- command dialogue (FALSE);
- biete dateien einzeln zum loeschen an;
- menuwindowpage;
- command dialogue (TRUE).
- biete dateien einzeln zum loeschen an:
-
- INT VAR z, index;
- FOR z FROM 1 UPTO highest entry (zu loeschende) REP
- disable stop;
- IF name (zu loeschende, z) <> ""
- THEN stelle frage und fuehre aus
- FI;
- fehlerbehandlung
- PER.
- stelle frage und fuehre aus:
- IF menuwindowyes ("'" + name (zu loeschende, z) + "' "
- + menubasistext (111))
- THEN erase (name (zu loeschende, z), task (zieltaskname))
- ELSE menuwindowout (menubasistext (110));
- menuwindowline;
-
- delete (angekreuzte, name (zu loeschende, z), index);
- pause (20)
- FI.
- fehlerbehandlung:
- IF is error
- THEN regenerate menuscreen;
- melde zieltaskerror (errormessage);
- clear error; enable stop;
- LEAVE dateioperation mit zieltask
- FI.
-END PROC dateioperation mit zieltask;
-PROC dateioperation ausfuehren (THESAURUS CONST angekreuzte,
- INT CONST wahl,
- BOOL CONST mit schlussbemerkung):
-
- INT VAR spalte :: 1, zeile :: 3, k, anzahl :: 0;
- menuwindowout (menuwindowcenter (invers (operationsbezeichnung (wahl)
- + zieltaskhinweis)));
- command dialogue (FALSE);
- fuehre einzelne operationen aus;
- command dialogue (TRUE);
- IF mit schlussbemerkung
- THEN schreibe schlussbemerkung
- ELSE menuwindowpage
- FI.
- fuehre einzelne operationen aus:
- FOR k FROM 1 UPTO highest entry (angekreuzte) REP
- IF name (angekreuzte, k) <> ""
-
- THEN disable stop;
- bildschirmausgabe;
- operation ausfuehren;
- anzahl INCR 1;
- fehlerbehandlung
- FI
- PER.
- bildschirmausgabe:
- spalte := 1;
- IF remaining menuwindowlines < 2
- THEN menuwindowpage; zeile := 1
- ELSE zeile INCR 1
- FI;
- menuwindowcursor (spalte, zeile);
- ergaenzter dateiname.
- ergaenzter dateiname:
- INT VAR windowcolumn, windowrow;
- SELECT wahl OF
- CASE schreiben : menuwindowout (menubasistext (105) + dateiname)
-
- CASE checken : get menuwindowcursor (windowcolumn, windowrow);
- menuwindowout (dateiname + menubasistext (106));
- menuwindowcursor (windowcolumn, windowrow);
- CASE holen : menuwindowout (menubasistext (107) + dateiname)
- END SELECT.
- dateiname:
- " """ + name (angekreuzte, k) + """ ".
- operation ausfuehren:
- IF eigene station
- THEN fuehre eigenstationoperation aus
- ELSE fuehre fremdstationoperation aus
- FI.
-
- fuehre eigenstationoperation aus:
- SELECT wahl OF
- CASE schreiben : save (name (angekreuzte, k), /zieltaskname)
- CASE checken : check (name (angekreuzte, k), /zieltaskname);
- bestaetige
- CASE holen : ueberschreiben erfragen eigene station
- CASE loeschen : loeschen erfragen eigene station
- END SELECT.
- ueberschreiben erfragen eigene station:
- IF exists (name (angekreuzte, k))
- THEN menuwindowline;
- IF menuwindowyes (dateiname + menubasistext (112))
-
- THEN zeile INCR 2;
- menuwindowline;
- forget (name (angekreuzte, k), quiet);
- fetch (name (angekreuzte, k), /zieltaskname)
- FI
- ELSE fetch (name (angekreuzte, k), /zieltaskname)
- FI.
- loeschen erfragen eigene station:
- IF menuwindowyes (dateiname + menubasistext (111))
- THEN erase (name (angekreuzte, k), /zieltaskname)
- FI.
- fuehre fremdstationoperation aus:
- SELECT wahl OF
- CASE schreiben : save (name (angekreuzte, k), ziel)
-
- CASE checken : check (name (angekreuzte, k), ziel); bestaetige
- CASE holen : ueberschreiben erfragen fremde station
- CASE loeschen : loeschen erfragen fremde station
- END SELECT.
- ueberschreiben erfragen fremde station:
- IF exists (name (angekreuzte, k))
- THEN menuwindowline;
- IF menuwindowyes (dateiname + menubasistext (112))
- THEN zeile INCR 2;
- menuwindowline;
- forget (name (angekreuzte, k), quiet);
-
- fetch (name (angekreuzte, k), ziel)
- FI
- ELSE fetch (name (angekreuzte, k), ziel)
- FI.
- loeschen erfragen fremde station:
- IF menuwindowyes (dateiname + menubasistext (111))
- THEN erase (name (angekreuzte, k), ziel)
- FI.
- ziel:
- stationsnummer/zieltaskname.
- bestaetige:
- IF NOT is error
- THEN menuwindowout (dateiname + menubasistext (114))
- FI.
- schreibe schlussbemerkung:
- IF remaining menuwindowlines < 7
- THEN menuwindowpage; menuwindowline
-
- ELSE menuwindowline (2)
- FI;
- IF anzahl > 0
- THEN menuwindowout (menubasistext (93) +
- operationskennzeichnung (wahl))
- ELSE menuwindowout (menubasistext (94))
- FI;
- menuwindowstop.
- fehlerbehandlung:
- IF is error
- THEN fehlerfall := TRUE;
- regenerate menuscreen;
- melde zieltaskerror (errormessage);
- clear error; enable stop;
- LEAVE dateioperation ausfuehren
- FI.
-END PROC dateioperation ausfuehren;
-
-TEXT PROC operationsbezeichnung (INT CONST nr):
- SELECT nr OF
- CASE schreiben : menubasistext (95)
- CASE checken : menubasistext (97)
- CASE schreibcheck : menubasistext (99)
- CASE holen : menubasistext (101)
- CASE loeschen : menubasistext (103)
- OTHERWISE ""
- END SELECT
-END PROC operationsbezeichnung;
-TEXT PROC operationskennzeichnung (INT CONST nr):
- SELECT nr OF
- CASE schreiben : menubasistext (96)
- CASE checken : menubasistext (98)
-
- CASE schreibcheck : menubasistext (100)
- CASE holen : menubasistext (102)
- CASE loeschen : menubasistext (104)
- OTHERWISE ""
- END SELECT
-END PROC operationskennzeichnung;
-BOOL PROC not empty (THESAURUS CONST t):
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
- IF name (t, i) <> ""
- THEN LEAVE not empty WITH TRUE
- FI
- PER;
- FALSE
-END PROC not empty;
-TEXT PROC zieltaskhinweis:
- IF zieltaskname = "ARCHIVE"
- THEN "(" + menubasistext (78) + ")"
-
- ELIF zieltaskname = name (father)
- THEN "(" + menubasistext (79) + ")"
- ELSE menubasistext (80) + zieltaskname + ")"
- FI
-END PROC zieltaskhinweis;
-PROC menu archiv verzeichnis:
- forget("Interne Dateiliste bei Archivoperation", quiet);
- ueberpruefe kommunikationsbasis;
- liste dateien der zieltask auf;
- regenerate menuscreen.
- ueberpruefe kommunikationsbasis:
- IF unzulaessiger zieltaskname
- THEN LEAVE menu archiv verzeichnis
- ELIF zieltaskname = name (myself)
-
- THEN LEAVE ueberpruefe kommunikationsbasis
- ELIF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE menu archiv verzeichnis
- ELIF NOT zieltask ist archivmanager
- THEN stelle kontakt mit zieltask her
- FI.
- stelle kontakt mit zieltask her:
- TEXT VAR fehler :: "";
- IF task ist kommunikativ (fehler)
- THEN kontakt mit zieltask erfolgt := TRUE
- ELSE melde zieltaskerror (fehler);
-
- LEAVE menu archiv verzeichnis
- FI.
- liste dateien der zieltask auf:
- erstelle liste;
- gib liste aus;
- forget ("Interne Dateiliste bei Archivoperation", quiet).
- erstelle liste:
- menufootnote (menubasistext (21) + menubasistext (28));
- FILE VAR f :: sequential file (output, "Interne Dateiliste bei Archivoperation");
- disable stop;
- IF eigene station
- THEN list (f, /zieltaskname)
- ELSE list (f, stationsnummer/zieltaskname)
- FI;
- IF is error
-
- THEN melde zieltaskerror (errormessage);
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- clear error; enable stop;
- LEAVE menu archiv verzeichnis
- FI;
- enable stop.
- gib liste aus:
- modify (f);
- IF NOT (zieltaskname = name (myself))
- THEN to line (f, 1);
- insert record (f);
- notiere kopfzeile;
- headline (f, menubasistext (43));
- ELSE entferne eigenen namen aus der liste
- FI;
-
- to line (f, 1);
- cursor on; menuwindowshow (f); cursor off.
- notiere kopfzeile:
- IF zieltask ist archivmanager
- THEN write record (f, headline (f));
- ELSE write record (f, zieltaskbezeichnung)
- FI.
- entferne eigenen namen aus der liste:
- TEXT VAR zeile :: ""; INT VAR i;
- FOR i FROM lines (f) DOWNTO 1 REP
- to line (f, i);
- read record (f, zeile);
- IF pos (zeile, "Interne Dateiliste bei Archivoperation") > 0
- THEN delete record (f);
-
- LEAVE entferne eigenen namen aus der liste
- FI
- PER
-END PROC menu archiv verzeichnis;
-PROC menu archiv verzeichnis drucken:
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- ueberpruefe kommunikationsbasis;
- erstelle listing;
- drucke listing aus.
- ueberpruefe kommunikationsbasis:
- IF unzulaessiger zieltaskname
- THEN LEAVE menu archiv verzeichnis drucken
- ELIF zieltaskname = name (myself)
- THEN LEAVE ueberpruefe kommunikationsbasis
-
- ELIF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE menu archiv verzeichnis drucken
- ELIF NOT zieltask ist archivmanager
- THEN stelle kontakt mit zieltask her
- FI.
- stelle kontakt mit zieltask her:
- TEXT VAR fehler :: "";
- IF task ist kommunikativ (fehler)
- THEN kontakt mit zieltask erfolgt := TRUE
- ELSE melde zieltaskerror (fehler);
- LEAVE menu archiv verzeichnis drucken
-
- FI.
- erstelle listing:
- LET dummy name pos = 18;
- FILE VAR listfile; INT VAR i; TEXT VAR record :: "";
- TEXT CONST head :: 70 * "=", end :: 70 * "-";
- IF menuno (menubasistext (90), 5)
- THEN LEAVE menu archiv verzeichnis drucken
- FI;
- menufootnote (menubasistext (21) + menubasistext (29));
- disable stop;
- listfile := sequential file (output, "Interne Dateiliste bei Archivoperation");
- IF eigene station
- THEN list (listfile, /zieltaskname)
- ELSE list (listfile, stationsnummer/zieltaskname)
-
- FI;
- IF is error
- THEN melde zieltaskerror (errormessage);
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- clear error; enable stop;
- LEAVE menu archiv verzeichnis drucken
- FI;
- enable stop.
- drucke listing aus:
- schreibe dateikopf;
- loesche dummy names;
- schreibe fuss;
- drucke und loesche listing.
- schreibe dateikopf:
- modify (listfile);
- to line (listfile, 1);
- FOR i FROM 1 UPTO 6 REP insert record (listfile) PER;
-
- to line (listfile, 1);
- write record (listfile, "#type (""elanlist"")#"); down (listfile);
- write record (listfile, "#start (2.5,0.0)##limit (20,5)#"
- + "#pagelength (26.0)#"); down (listfile);
- write record (listfile, head); down (listfile);
- schreibe erkennungszeile; down (listfile);
- write record (listfile, " Listing vom " + date + ", "
- + time of day + " Uhr"); down (listfile);
- write record (listfile, head).
-
- schreibe erkennungszeile:
- IF zieltask ist archivmanager
- THEN write record (listfile, "Archiv: " + headline (listfile))
- ELSE write record (listfile, "Task : " + taskbezeichnung)
- FI.
- taskbezeichnung:
- IF eigene station
- THEN zieltaskname
- ELSE text (stationsnummer) + "/" + zieltaskname
- FI.
- loesche dummy names:
- to line (listfile, 8);
- WHILE NOT eof (listfile) REP
- read record (listfile, record);
- IF (record SUB dummy name pos) = "-"
-
- OR pos (record, "Interne Dateiliste bei Archivoperation") > 0
- THEN delete record (listfile)
- ELSE down (listfile)
- FI
- PER.
- schreibe fuss:
- output (listfile);
- putline (listfile, end).
- drucke und loesche listing:
- menufootnote (menubasistext (21) + menubasistext (30));
- disable stop;
- print ("Interne Dateiliste bei Archivoperation");
- IF is error
- THEN melde zieltaskerror (errormessage);
- clear error; enable stop;
-
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- LEAVE menu archiv verzeichnis drucken
- FI;
- enable stop;
- forget ("Interne Dateiliste bei Archivoperation", quiet)
-END PROC menu archiv verzeichnis drucken;
-TEXT PROC zieltaskbezeichnung:
- IF eigene station
- THEN menubasistext (77) + taskbezeichnung
- ELSE menubasistext (76) + text (stationsnummer) + " " +
- menubasistext (77) + zieltaskname
- FI.
- taskbezeichnung:
- IF zieltaskname = "ARCHIVE"
-
- THEN menubasistext (78)
- ELIF zieltaskname = name (father)
- THEN menubasistext (79) + " (" + zieltaskname + ")"
- ELSE zieltaskname
- FI
-END PROC zieltaskbezeichnung;
-BOOL PROC unzulaessiger zieltaskname:
- IF compress (zieltaskname) = "" OR compress (zieltaskname) = "-"
- THEN TRUE
- ELSE FALSE
- FI
-END PROC unzulaessiger zieltaskname;
-PROC menu archiv initialisieren:
- TEXT VAR archivname :: "", meldung :: "";
- klaere zieltaskart;
- formatiere ggf;
-
- initialisiere ggf.
- klaere zieltaskart:
- IF NOT zieltask ist archivmanager
- THEN menuinfo (menubasistext (121) + zieltaskname +
- menubasistext (122));
- LEAVE menu archiv initialisieren
- FI.
- formatiere ggf:
- IF menuyes (menubasistext (85), 5)
- THEN nimm archiv in beschlag;
- fuehre formatierung aus
- FI.
- nimm archiv in beschlag:
- stelle archivbesitz sicher;
- IF aktueller archivname <> ""
- THEN archivname := aktueller archivname
-
- ELSE archivname := menubasistext (75)
- FI;
- IF eigene station
- THEN reserve (archivname,/zieltaskname)
- ELSE reserve (archivname, stationsnummer/zieltaskname)
- FI;
- aktueller archivname := archivname;
- archiv gehoert mir := TRUE;
- zieltask anzeigen.
- stelle archivbesitz sicher:
- IF NOT archiv gehoert mir OR NOT kontakt mit zieltask erfolgt
- THEN versuche kommunikation;
- versuche archiv zu reservieren (meldung);
- werte meldung aus
-
- FI.
- versuche kommunikation:
- TEXT VAR fehler :: "";
- IF NOT task ist kommunikativ (fehler)
- THEN melde zieltaskerror (fehler);
- melde rigoros ab;
- LEAVE menu archiv initialisieren
- ELSE kontakt mit zieltask erfolgt := TRUE
- FI.
- werte meldung aus:
- IF meldung <> ""
- THEN melde zieltaskerror (meldung);
- aktueller archivname := "";
- zieltask anzeigen;
- LEAVE menu archiv initialisieren
- FI.
-
- fuehre formatierung aus:
- INT VAR auswahl :: menualternative (menubasistext (54),
- menubasistext (55),
- menubasistext (56), 5, TRUE);
- IF auswahl = 0
- THEN LEAVE fuehre formatierung aus
- FI;
- IF auswahl > 100
- THEN auswahl DECR 100
- FI;
- command dialogue (FALSE);
- disable stop;
- menufootnote (menubasistext (21) + menubasistext (27));
- IF eigene station
- THEN formatiere auf eigener station
-
- ELSE formatiere auf fremder station
- FI;
- IF is error
- THEN melde zieltaskerror (errormessage);
- clear error; enable stop;
- command dialogue (TRUE);
- LEAVE formatiere ggf
- ELSE enable stop;
- command dialogue (TRUE);
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
- zieltask anzeigen
- FI.
- formatiere auf eigener station:
- IF auswahl < 5
- THEN format (auswahl, /zieltaskname)
-
- ELSE format (/zieltaskname)
- FI.
- formatiere auf fremder station:
- IF auswahl < 5
- THEN format (auswahl, stationsnummer/zieltaskname)
- ELSE format (stationsnummer/zieltaskname)
- FI.
- initialisiere ggf:
- stelle archivbesitz sicher;
- archiv anmelden (archivname, meldung, FALSE);
- IF archivname <> ""
- THEN aktueller archivname := archivname;
- archiv gehoert mir := TRUE;
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
-
- zieltask anzeigen;
- frage nach ueberschreiben
- ELIF meldung = menubasistext (63) OR meldung = menubasistext (62)
- THEN frage nach initialisieren
- ELSE melde zieltaskerror (meldung);
- aktueller archivname := "";
- zieltask anzeigen;
- LEAVE menu archiv initialisieren
- FI.
- frage nach ueberschreiben:
- IF menuyes (menubasistext (86) + archivname + menubasistext (87), 5)
- THEN erfrage neuen namen und initialisiere
-
- ELSE LEAVE menu archiv initialisieren
- FI.
- frage nach initialisieren:
- IF menuyes (menubasistext (88), 5)
- THEN erfrage neuen namen und initialisiere
- ELSE LEAVE menu archiv initialisieren
- FI.
- erfrage neuen namen und initialisiere:
- TEXT VAR neuer name := compress(menuanswer (menubasistext (89),
- aktueller archivname, 5));
- IF neuer name <> ""
- THEN archivname := neuer name
- ELIF neuer name = "" AND archivname = ""
-
- THEN archivname := menubasistext (75)
- FI;
- command dialogue (FALSE);
- disable stop;
- IF eigene station
- THEN reserve (archivname, /zieltaskname);
- clear (/zieltaskname)
- ELSE reserve (archivname, stationsnummer/zieltaskname);
- clear (stationsnummer/zieltaskname)
- FI;
- IF is error
- THEN melde zieltaskerror (errormessage);
- clear error; enable stop;
- command dialogue (TRUE);
- melde rigoros ab;
-
- archivreservierung aufgeben;
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
- zieltask anzeigen;
- LEAVE menu archiv initialisieren
- ELSE enable stop; command dialogue (TRUE);
- aktueller archivname := archivname;
- archiv gehoert mir := TRUE;
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
- zieltask anzeigen
- FI
-END PROC menu archiv initialisieren;
-PROC archive (TEXT CONST archive name,task, INT CONST station):
-
- call (reserve code, archive name, station/task)
-END PROC archive;
-PROC menu archiv reservierung aufgeben:
- IF archiv gehoert mir
- THEN menufootnote (menubasistext (21) + menubasistext (22));
- archivreservierung aufgeben;
- FI;
- erase menunotice;
- old menufootnote
-END PROC menu archiv reservierung aufgeben;
-PROC archivreservierung aufgeben:
- command dialogue (FALSE);
- disable stop;
- IF eigene station
- THEN release (/zieltaskname)
- ELSE release (stationsnummer/zieltaskname);
-
- FI;
- IF is error
- THEN clear error
- FI;
- enable stop;
- command dialogue (TRUE);
- archiv gehoert mir := FALSE;
- aktueller archivname := ""
-END PROC archivreservierung aufgeben;
-BOOL PROC eigene station:
- IF stationsnummer = 0 OR stationsnummer = station (myself)
- THEN TRUE
- ELSE FALSE
- FI
-END PROC eigene station;
-PROC aktiviere gueltige archivmenupunkte:
- IF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN aktiviere nur grundfunktionen
-
- ELSE aktiviere alle momentan gueltigen punkte
- FI.
- aktiviere alle momentan gueltigen punkte:
- IF letzte funktion = 11
- THEN activate (1); activate (2);
- activate (4); activate (5); activate (6); activate (7); activate (8);
- activate (10); activate (11);
- activate (13); activate (14);
- ELIF letzte funktion = 6
- THEN deactivate (1); deactivate (2);
- activate (4); deactivate (5); deactivate (6); activate (7); activate (8);
-
- activate (10); activate (11);
- deactivate (13); activate (14);
- FI.
- aktiviere nur grundfunktionen:
- activate (1); deactivate (2);
- deactivate (4); deactivate (5); deactivate (6); deactivate (7); deactivate (8);
- deactivate (10); deactivate (11);
- activate (13); activate (14).
-END PROC aktiviere gueltige archivmenupunkte;
-PROC zieltask anzeigen:
- IF zieltask ist archivmanager
- THEN schreibe taskname und archivname
- ELSE schreibe taskname
-
- FI.
- schreibe taskname:
- write menunotice (menubasistext (59) + ""13"" + name der task, notizort).
- schreibe taskname und archivname:
- write menunotice (menubasistext (59) + ""13"" + name der task +
- ""13"" + menubasistext (60) + ""13"" + archivname,
- notizort).
- name der task:
- IF zieltaskname = "ARCHIVE" AND eigene station
- THEN " " + menubasistext (71)
- ELIF zieltaskname = "PUBLIC" AND eigene station
- THEN " " + menubasistext (72)
-
- ELIF zieltaskname = name (father)
- THEN " " + menubasistext (73)
- ELSE " " + ggf gekuerzter zieltaskname
- FI.
- ggf gekuerzter zieltaskname:
- TEXT VAR interner name;
- IF eigene station
- THEN interner name := zieltaskname;
- ELSE interner name := text (stationsnummer) + "/" + zieltaskname
- FI;
- IF length (interner name) < 20
- THEN ""15"" + interner name + " "14""
- ELSE ""15"" + subtext (interner name, 1 , 18) + ".." + " "14""
- FI.
-
- archivname:
- IF NOT archiv gehoert mir OR aktueller archivname = ""
- THEN " " + menubasistext (74)
- ELSE " "15"" + ggf gekuerzter archivname + " "14""
- FI.
- ggf gekuerzter archivname:
- IF eigene station AND length (aktueller archivname) > 20
- THEN subtext (aktueller archivname, 1, 18) + ".."
- ELIF NOT eigene station AND length (aktueller archivname) > 17
- THEN subtext (aktueller archivname, 1, 15) + ".."
- ELSE aktueller archivname
- FI.
-
-END PROC zieltask anzeigen;
-BOOL PROC task ist kommunikativ (TEXT VAR fehler):
- INT VAR antwort;
- DATASPACE VAR dummy space := nilspace;
- IF zieltask ist archivmanager
- THEN schicke reservierungscode
- ELSE schicke listcode
- FI.
- schicke reservierungscode:
- disable stop;
- IF eigene station
- THEN pingpong (/zieltaskname, reserve code, dummy space, antwort);
- ELSE pingpong (stationsnummer/zieltaskname, reserve code,
- dummy space, antwort)
-
- FI;
- werte antwort aus.
- schicke listcode:
- disable stop;
- IF eigene station
- THEN pingpong (/zieltaskname, list code, dummy space, antwort);
- ELSE pingpong (stationsnummer/zieltaskname, list code,
- dummy space, antwort)
- FI;
- werte antwort aus.
- werte antwort aus:
- IF is error
- THEN clear error
- FI;
- BOUND TEXT VAR inhalt := dummy space;
- enable stop;
- IF antwort = 0 THEN fehler := ""
- ELIF antwort = -1 THEN fehler := menubasistext (41)
-
- ELIF antwort = -2 THEN fehler := menubasistext (42)
- ELSE fehler := inhalt
- FI;
- forget (dummy space);
- IF antwort = ack
- THEN kontakt mit zieltask erfolgt := TRUE; TRUE
- ELSE kontakt mit zieltask erfolgt := FALSE; FALSE
- FI
-END PROC task ist kommunikativ;
-END PACKET ls dialog 6;
-
-