PACKET logbuchverwaltungDEFINES logbuchverwaltungstart,logbuchzeigen, logbuchdrucken,logbucheditordateidrucken,logbuchloeschen, logbuchzurueckzummenue:LET maskeeingang="ms logbuch verwaltung";LET fnrzeilenaktuell=2,fnrzeilenmaximal=3,fnrzeilenkritisch=4,fnrauswahl1=5, fnrlogname1=6,fnrauswahl2=7,fnrlogname2=8,fnrauswahl3=9,fnrlogname3=10, fnrauskunftsfeld=11;LET meldnrfalscheauswahl=56,meldnrfehlerbeimloeschen=74, meldnrlogbuchwurdegelöscht=94,meldnrnochnichtgesichert=95, meldnrlogbuchwirdgedruckt=96;LET logbuchpraefix="logbuch.*";LET zusätzlicherlaubtetasten="vr";LET laengelogname=45;INT VAR zeilenaktuell, zeilenmaximal,zeilenkritisch;THESAURUS VAR thes;INT VAR thesindex;LET maxlogdateien=3;ROW maxlogdateienTEXT VAR logname;INT VAR ilogname, aktletzteslog;TEXT VAR dateinamezumzeigen;INT VAR ifnr,auswahl;INT VAR replycode;LET ack=0,nak=1,dateinichtgesichertack=11,readloglimitsorder=202, logholenorder=301,gesichertvermerk=306,loeschenorder=307,logmanagername="LOG" ;DATASPACE VAR ds;INT VAR reply;TASK VAR ordertask;BOUND TEXT VAR msgtext; LET letzteslogack=8;PROC logfetch:FILE VAR f;forget(ds);ds:=nilspace;auftrag( logholenorder,reply);f:=sequentialfile(input,ds);copy(ds,headline(f));forget( ds);WHILE reply<>letzteslogackREP warteauflogmanager;f:=sequentialfile(input, ds);copy(ds,headline(f));forget(ds);ds:=nilspace;send(ordertask,ack,ds);PER . warteauflogmanager:wait(ds,reply,ordertask);WHILE name(ordertask)<> logmanagernameREP forget(ds);wait(ds,reply,ordertask);PER .END PROC logfetch; PROC loggetloglimits(INT VAR anzzeilen,anzzeilenbenutzt,anzzeilenkritisch): LET LLIMITS =STRUCT (INT zeilen,zeilenbenutzt,zeilenkritisch);BOUND LLIMITS VAR loggrenzenmsg;forget(ds);ds:=nilspace;loggrenzenmsg:=ds;auftrag( readloglimitsorder,reply);anzzeilen:=CONCR (loggrenzenmsg).zeilen; anzzeilenbenutzt:=CONCR (loggrenzenmsg).zeilenbenutzt;anzzeilenkritisch:= CONCR (loggrenzenmsg).zeilenkritisch;forget(ds)END PROC loggetloglimits;PROC logsetsavedmark(TEXT CONST logbuchdateiname,INT VAR reply):forget(ds);ds:= nilspace;msgtext:=ds;msgtext:=logbuchdateiname;auftrag(gesichertvermerk,reply );forget(ds)END PROC logsetsavedmark;PROC logerasesavedlogs(TEXT CONST logbuchdateiname,INT VAR reply):forget(ds);ds:=nilspace;msgtext:=ds;msgtext:= logbuchdateiname;auftrag(loeschenorder,reply);forget(ds)END PROC logerasesavedlogs;PROC auftrag(INT CONST opcode,INT VAR reply):schickeauftrag ;WHILE auftragnichtangenommenREPEAT pause(10);schickeauftragEND REPEAT . auftragnichtangenommen:reply=nak.schickeauftrag:call(/logmanagername,opcode, ds,reply).END PROC auftrag;PROC logbuchverwaltungstart:loggetloglimits( zeilenmaximal,zeilenaktuell,zeilenkritisch);vorhandenelogbuchdateienloeschen; FOR ilognameFROM 1UPTO maxlogdateienREP logname(ilogname):=""PER ;logfetch; thes:=allLIKE logbuchpraefix;thesindex:=0;ilogname:=0;get(thes, dateinamezumzeigen,thesindex);WHILE thesindex>0REP IF ilogname"".auswahl2:standardmaskenfeld( fnrauswahl2)<>"".auswahl3:standardmaskenfeld(fnrauswahl3)<>"".fehlermeldung: standardmeldung(meldnrfalscheauswahl,"").END PROC auswahlbestimmen;PROC logbuchzurueckzummenue:vorhandenelogbuchdateienloeschen;enter(2)END PROC logbuchzurueckzummenue;PROC vorhandenelogbuchdateienloeschen:INT VAR kanal:= channel;commanddialogue(FALSE );break(quiet);forget(allLIKE logbuchpraefix); continue(kanal);commanddialogue(TRUE )END PROC vorhandenelogbuchdateienloeschen;END PACKET logbuchverwaltung