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