(* ********************************************************* ********************************************************* ** ** ** ls-DIALOG 7 ** ** Dateihandling ** ** 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 7 DEFINES menu dateien verzeichnis, menu dateien loeschen, menu dateien drucken, menu dateien kopieren, menu dateien umbenennen, menu dateien speicherplatz, menu dateien aufraeumen: LET filetype = 1003, maxlaenge = 60, breite = 40, niltext = ""; TEXT CONST dateibez :: "Dateiliste bei internen Operationen"; PROC menu dateien verzeichnis: forget (dateibez, quiet); liste dateien auf; regenerate menuscreen. liste dateien auf: erstelle liste; gib liste aus; forget (dateibez, quiet). erstelle liste: menufootnote (menubasistext (21) + menubasistext (28)); FILE VAR f :: sequential file (output, dateibez); list (f); modify (f); headline (f, menubasistext (43)); to line (f, 1); insert record (f); write record (f, menubasistext (161)); entferne eigenen namen aus der liste. 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, dateibez) > 0 THEN delete record (f); LEAVE entferne eigenen namen aus der liste FI PER. gib liste aus: to line (f, 1); cursor on; menuwindowshow (f); cursor off END PROC menu dateien verzeichnis; PROC menu dateien loeschen: lasse dateien auswaehlen; loesche ausgewaehlte dateien; regenerate menuscreen. lasse dateien auswaehlen: IF NOT not empty (ALL myself) THEN noch keine datei; LEAVE menu dateien loeschen ELSE biete auswahl an FI. biete auswahl an: THESAURUS VAR angekreuzte := menuanswersome ( center (breite, invers (menubasistext(162))) + menubasistext (163), "", ALL myself, menubasistext (162), menubasistext (91) + menubasistext (104) + menubasistext (92), FALSE). loesche ausgewaehlte dateien: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (menubasistext (162)))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operation aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (menubasistext (93) + menubasistext (104)); menuwindowstop. fuehre einzelne operation aus: INT VAR k; FOR k FROM 1 UPTO highest entry (angekreuzte) REP IF name (angekreuzte, k) = niltext THEN LEAVE fuehre einzelne operation aus ELIF NOT exists (name (angekreuzte, k)) THEN menuwindowout (" """ + name (angekreuzte, k) + """"); menuwindowline; menuwindowout (menubasistext (188)); menuwindowline; LEAVE fuehre einzelne operation aus ELSE disable stop; IF menuwindowyes (" """ + name (angekreuzte, k) + """ " + menubasistext (111)) THEN forget (name (angekreuzte, k), quiet) FI; fehlerbehandlung FI PER. steige ggf bei leerem thesaurus aus: IF NOT not empty (angekreuzte) THEN menuwindowline (2); menuwindowout (menubasistext (94)); menuwindowstop; regenerate menuscreen; LEAVE menu dateien loeschen FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE menu dateien loeschen FI END PROC menu dateien loeschen; PROC menu dateien drucken: lasse programme auswaehlen; drucke programme; regenerate menuscreen. lasse programme auswaehlen: IF NOT not empty (ALL myself) THEN noch keine datei; LEAVE menu dateien drucken ELSE biete auswahl an FI. biete auswahl an: THESAURUS VAR angekreuzte := menuanswersome ( center (breite, invers (menubasistext(164))) + menubasistext (163), "", ALL myself, menubasistext (164), menubasistext (91) + menubasistext (165) + menubasistext (92), FALSE). drucke programme: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (menubasistext (164)))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operation aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (menubasistext (93) + menubasistext (165)); menuwindowstop. fuehre einzelne operation aus: INT VAR k; FOR k FROM 1 UPTO highest entry (angekreuzte) REP IF name (angekreuzte, k) = niltext THEN LEAVE fuehre einzelne operation aus ELIF NOT exists (name (angekreuzte, k)) THEN menuwindowout (" """ + name (angekreuzte, k) + """"); menuwindowline; menuwindowout (menubasistext (188)); menuwindowline; LEAVE fuehre einzelne operation aus ELSE disable stop; menuwindowout ( " """ + name (angekreuzte, k) + """ " + menubasistext (166)); menuwindowline; print (name (angekreuzte, k)); fehlerbehandlung FI PER. steige ggf bei leerem thesaurus aus: IF NOT not empty (angekreuzte) THEN menuwindowline (2); menuwindowout (menubasistext (94)); menuwindowstop; regenerate menuscreen; LEAVE menu dateien drucken FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE menu dateien drucken FI. END PROC menu dateien drucken; PROC menu dateien kopieren: ermittle alten dateinamen; erfrage neuen dateinamen; kopiere ggf die datei. ermittle alten dateinamen: IF NOT not empty (ALL myself) THEN noch keine datei; LEAVE menu dateien kopieren ELSE hole den namen FI. hole den namen: TEXT VAR alter name := menuanswerone ( center (breite, invers (menubasistext(167))) + menubasistext (163), "", ALL myself, menubasistext (167), menubasistext (168) + menubasistext (169) + menubasistext (170), TRUE); IF alter name = niltext THEN LEAVE menu dateien kopieren ELIF NOT exists (alter name) THEN menuinfo (menubasistext (188)); LEAVE menu dateien kopieren FI. erfrage neuen dateinamen: TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5). ausgabe: ueberschrift + menubasistext (171) + bisheriger name + menubasistext (172). ueberschrift: center (maxlaenge, invers (menubasistext (167))) + ""13""13"". bisheriger name: ""13""13" " + invers (alter name) + ""13""13"". kopiere ggf die datei: IF neuer name = niltext THEN menuinfo (invers (menubasistext (173))); LEAVE menu dateien kopieren ELIF exists (neuer name) THEN mache vorwurf; LEAVE menu dateien kopieren ELSE copy (alter name, neuer name) FI. mache vorwurf: menuinfo (menubasistext (174)). END PROC menu dateien kopieren; PROC menu dateien umbenennen: ermittle alten dateinamen; erfrage neuen dateinamen; benenne ggf die datei um. ermittle alten dateinamen: IF NOT not empty (ALL myself) THEN noch keine datei; LEAVE menu dateien umbenennen ELSE hole den namen FI. hole den namen: TEXT VAR alter name := menuanswerone ( center (breite, invers (menubasistext(175))) + menubasistext (163), "", ALL myself, menubasistext (175), menubasistext (168) + menubasistext (176) + menubasistext (170), TRUE); IF alter name = niltext THEN LEAVE menu dateien umbenennen ELIF NOT exists (alter name) THEN menuinfo (menubasistext (188)); LEAVE menu dateien umbenennen FI. erfrage neuen dateinamen: TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5). ausgabe: ueberschrift + menubasistext (171) + bisheriger name + menubasistext (177). ueberschrift: center (maxlaenge, invers (menubasistext (175))) + ""13""13"". bisheriger name: ""13""13" " + invers (alter name) + ""13""13"". benenne ggf die datei um: IF neuer name = niltext THEN menuinfo (invers (menubasistext (173))); LEAVE menu dateien umbenennen ELIF exists (neuer name) THEN mache vorwurf; LEAVE menu dateien umbenennen ELSE rename (alter name, neuer name) FI. mache vorwurf: menuinfo (menubasistext (174)). END PROC menu dateien umbenennen; PROC menu dateien speicherplatz: lasse dateinamen auswaehlen; ermittle den speicherplatz; regenerate menuscreen. lasse dateinamen auswaehlen: IF NOT not empty (ALL myself) THEN noch keine datei; LEAVE menu dateien speicherplatz ELSE biete auswahl an FI. biete auswahl an: THESAURUS VAR angekreuzte := menuanswersome ( center (breite, invers (menubasistext(178))) + menubasistext (163), "", ALL myself, menubasistext (178), menubasistext (179), FALSE). ermittle den speicherplatz: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (menubasistext (178)))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operation aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (menubasistext (180)); menuwindowstop. fuehre einzelne operation aus: INT VAR k; FOR k FROM 1 UPTO highest entry (angekreuzte) REP IF name (angekreuzte, k) = niltext THEN LEAVE fuehre einzelne operation aus ELIF NOT exists (name (angekreuzte, k)) THEN menuwindowout (" """ + name (angekreuzte, k) + """"); menuwindowline; menuwindowout (menubasistext (188)); menuwindowline; LEAVE fuehre einzelne operation aus ELSE disable stop; menuwindowout ( " """ + name (angekreuzte, k) + """ " + menubasistext (181) + speicherplatz (name (angekreuzte, k))); menuwindowline; fehlerbehandlung FI PER. steige ggf bei leerem thesaurus aus: IF NOT not empty (angekreuzte) THEN menuwindowline (2); menuwindowout (menubasistext (94)); menuwindowstop; regenerate menuscreen; LEAVE menu dateien speicherplatz FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE menu dateien speicherplatz FI. END PROC menu dateien speicherplatz; TEXT PROC speicherplatz (TEXT CONST dateiname): DATASPACE VAR ds :: old (dateiname); INT CONST platz :: storage (ds); forget (ds); " " + text (platz) + menubasistext (182) END PROC speicherplatz; PROC menu dateien aufraeumen: lasse dateinamen auswaehlen; raeume die dateien auf; regenerate menuscreen. lasse dateinamen auswaehlen: IF NOT not empty (ALL myself) THEN noch keine datei; LEAVE menu dateien aufraeumen ELSE biete auswahl an FI. biete auswahl an: THESAURUS VAR angekreuzte := menuanswersome ( center (breite, invers (menubasistext(183))) + menubasistext (163), "", ALL myself, menubasistext (183), menubasistext (91) + menubasistext (184) + menubasistext (92), FALSE). raeume die dateien auf: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (menubasistext (183)))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operation aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (menubasistext (93) + menubasistext (184)); menuwindowstop. fuehre einzelne operation aus: INT VAR k; FOR k FROM 1 UPTO highest entry (angekreuzte) REP IF name (angekreuzte, k) = niltext THEN LEAVE fuehre einzelne operation aus ELIF NOT exists (name (angekreuzte, k)) THEN menuwindowout (" """ + name (angekreuzte, k) + """"); menuwindowline; menuwindowout (menubasistext (188)); menuwindowline; LEAVE fuehre einzelne operation aus ELIF dateityp ist ok THEN disable stop; menuwindowline; menuwindowout ( " """ + name (angekreuzte, k) + """ " + menubasistext (185) ); menuwindowline; menuwindowout (" "); reorganize (name (angekreuzte, k)); fehlerbehandlung ELSE menuwindowout ( " """ + name (angekreuzte, k) + """ " + menubasistext (186)) FI PER. dateityp ist ok: type (old (name (angekreuzte, k))) = filetype. steige ggf bei leerem thesaurus aus: IF NOT not empty (angekreuzte) THEN menuwindowline (2); menuwindowout (menubasistext (94)); menuwindowstop; regenerate menuscreen; LEAVE menu dateien aufraeumen FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE menu dateien aufraeumen FI. END PROC menu dateien aufraeumen; PROC noch keine datei: menuinfo (menubasistext ( 187)) END PROC noch keine datei; END PACKET ls dialog 7;