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 61238
1 files changed, 1161 insertions, 77 deletions
diff --git a/dialog/ls-DIALOG 6 b/dialog/ls-DIALOG 6
index b27eae2..7d28f7f 100644
--- a/dialog/ls-DIALOG 6
+++ b/dialog/ls-DIALOG 6
@@ -22,81 +22,1165 @@
*)
-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;{}
+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;
+