From afd4c3c448381f6eb706090911a15c162fdaf8af Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 9 Oct 2016 11:28:19 +0200 Subject: Decompress source files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EUMEL’s TEXT dataspaces wastes a lot of storage space. Some files were therefore “compressed” by storing them as a single line, reducing overhead significantly. --- dialog/ls-DIALOG 6 | 1238 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 1161 insertions(+), 77 deletions(-) (limited to 'dialog/ls-DIALOG 6') 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; + -- cgit v1.2.3