diff options
Diffstat (limited to 'app/baisy/2.2.1-schulis/src/isp.sicherungsmonitor')
-rw-r--r-- | app/baisy/2.2.1-schulis/src/isp.sicherungsmonitor | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/app/baisy/2.2.1-schulis/src/isp.sicherungsmonitor b/app/baisy/2.2.1-schulis/src/isp.sicherungsmonitor new file mode 100644 index 0000000..67ebbfb --- /dev/null +++ b/app/baisy/2.2.1-schulis/src/isp.sicherungsmonitor @@ -0,0 +1,141 @@ +PACKET sicherungsmonitorDEFINES ladenstarten,sichernstarten,formatieren, +endeformatieren,initialisieren,disketteueberpruefen,floppylisten, +floppylistingzeigen,endefloppylisting,meldungquittieren, +dbverzeichniserstellen,dbverzeichniszeigen,endedbverzeichnis,archiveanmelden, +archiveabmelden,bestimmendersicherungstask,sicherungsloop,beendenarchivieren: +LET initcode=25,listcode=26,checkcode=27,formatcode=40,logonarchivecode=45, +logoffarchivecode=46,dbvomserver=47,dbzumserver=48,dbaufdisk=49,dbvondisk=50, +dddrucken=51,endemeldung=0,errornak=2,nak=1,keinedaten=59,floppyzuranzeige= +180,formatkorrekt=181,initkorrekt=182,sichernkorrekt=183,ladenkorrekt=184, +opkorrekt=185,unbekanntercode=186,inkonsicherung=187,floppyzurpruefung=199; +LET yescode=10,outcode=11,showcode=12;LET meldungsfeld=1;LET +ankreuzauffloppyladen=6,ankreuzauffloppysichern=7,floppynamefeld=8, +ankreuzschulis=2,ankreuzbaisy=3,ankreuzida=4,ankreuzstatistik=5, +fragekennzeichnung=" ?";LET manager2="baisy",manager1="schulis",manager3= +"ida",manager4="statistik";LET meldpattern1="Archiv",meldpattern2="e", +meldpattern3="Diskette",patternlaenge=6;LET sicherung=" sicherung";INT VAR +quittung,stufe:=1,letzterauftragscode;TEXT VAR dbinhalt:="";TASK VAR +dbsicherungstask;DATASPACE VAR ds;BOUND TEXT VAR message;INT VAR +meldungsfeldlaenge,eingabestatus;TEXT VAR dbsicherung:="",anmeldetask:=""; +BOOL VAR endequittungda:=FALSE ,error:=FALSE ;LET logbucheintragsichern= +"Anw. 10.1.1 Sicherung von ",logbucheintragladen="Anw. 10.1.2 Laden von "; +PROC eingabepruefen:standardpruefe(5,ankreuzschulis,ankreuzstatistik,0,"", +eingabestatus);IF eingabestatus=0THEN standardpruefe(5,ankreuzauffloppyladen, +ankreuzauffloppysichern,0,"",eingabestatus);IF eingabestatus=0THEN +parametersetzenFI ;FI .END PROC eingabepruefen;PROC eingabepruefeneinfach: +standardpruefe(5,ankreuzschulis,ankreuzstatistik,0,"",eingabestatus);IF +eingabestatus=0THEN parametersetzenFI .END PROC eingabepruefeneinfach;PROC +parametersetzen:IF standardmaskenfeld(ankreuzschulis)<>""THEN dbsicherung:= +manager1;dbinhalt:="EUMELbase.schulis-DB-Verzeichnis"ELIF standardmaskenfeld( +ankreuzbaisy)<>""THEN dbsicherung:=manager2;dbinhalt:= +"EUMELbase.baisy-DB-Verzeichnis"ELIF standardmaskenfeld(ankreuzida)<>""THEN +dbsicherung:=manager3;dbinhalt:="EUMELbase.schulis-DB-Verzeichnis"ELSE #25.09 +.90#dbsicherung:=manager4;dbinhalt:="EUMELbase.schulis-DB-Verzeichnis"FI ; +dbsicherungCAT sicherung;infeld(floppynamefeld);meldungsfeldlaenge:= +standardfeldlaenge(meldungsfeld).END PROC parametersetzen;PROC +beendenarchivieren:archiveabmelden;enter(2)ENDPROC beendenarchivieren;PROC +ladenstarten:IF stufe=2THEN sicherungsloopELSE stufe1behandlungFI . +stufe1behandlung:eingabepruefen;IF eingabestatus<>0THEN infeld(eingabestatus) +;return(1)ELSE IF auffloppyTHEN archiveanmelden;IF anmeldetask=""THEN return( +1);LEAVE ladenstartenELSE stufe:=2;logeintrag(logbucheintragladen+ +logbuchbehandeltedaten);archiveoperation(dbvondisk,dbsicherung);IF +endequittungdaOR errorTHEN return(1)FI FI ELSE logeintrag(logbucheintragladen ++logbuchbehandeltedaten);archiveoperation(dbzumserver,dbsicherung);return(1) +FI FI .auffloppy:standardmaskenfeld(ankreuzauffloppyladen)<>"".END PROC +ladenstarten;PROC sichernstarten:IF stufe=2THEN sicherungsloopELSE +stufe1behandlungFI ;.stufe1behandlung:eingabepruefen;IF eingabestatus<>0THEN +infeld(eingabestatus);return(1)ELSE IF auffloppyTHEN archiveanmelden;IF +anmeldetask=""THEN return(1);LEAVE sichernstartenELSE stufe:=2; +archiveoperation(dbaufdisk,dbsicherung);IF endequittungdaOR errorTHEN return( +1)FI FI ELSE logeintrag(logbucheintragsichern+logbuchbehandeltedaten); +archiveoperation(dbvomserver,dbsicherung);return(1)FI FI .END PROC +sichernstarten;TEXT PROC logbuchbehandeltedaten:IF standardmaskenfeld( +ankreuzschulis)<>""THEN "Anwendungsdaten"ELIF standardmaskenfeld(ankreuzbaisy +)<>""THEN "Systemdaten"ELIF standardmaskenfeld(ankreuzida)<>""THEN +"Anwenderspezifischen Druckausgaben"ELSE "Amtliche Statistik"FI END PROC +logbuchbehandeltedaten;BOOL PROC auffloppy:standardmaskenfeld( +ankreuzauffloppysichern)<>""ENDPROC auffloppy;PROC formatieren: +archiveanmelden;IF anmeldetask<>""THEN archiveoperation(formatcode, +dbsicherung)FI ;infeld(2);return(2)END PROC formatieren;PROC endeformatieren: +archiveabmelden;enter(2)ENDPROC endeformatieren;PROC initialisieren: +archiveanmelden;IF anmeldetask<>""THEN archiveoperation(initcode,dbsicherung) +FI ;infeld(2);return(2)END PROC initialisieren;PROC disketteueberpruefen: +eingabepruefeneinfach;IF eingabestatus<>0THEN infeld(eingabestatus);return(1) +ELSE standardmeldung(floppyzurpruefung,"");archiveanmelden;IF anmeldetask<>"" +THEN archiveoperation(checkcode,dbsicherung)FI ;infeld(2);return(1)FI END +PROC disketteueberpruefen;PROC floppylisten:eingabepruefeneinfach;IF +eingabestatus<>0THEN infeld(eingabestatus);return(1)ELSE standardmeldung( +floppyzuranzeige,"");archiveanmelden;IF anmeldetask<>""THEN archiveoperation( +listcode,dbsicherung);IF errorTHEN return(1)FI ELSE return(1)FI FI END PROC +floppylisten;PROC dbverzeichniserstellen:eingabepruefeneinfach;IF +eingabestatus<>0THEN infeld(eingabestatus);return(1)ELIF standardmaskenfeld( +ankreuzstatistik)<>""THEN standardmeldung(keinedaten,"");return(1)ELSE +archiveoperation(dddrucken,dbsicherung);FI END PROC dbverzeichniserstellen; +PROC melde(TEXT CONST mt):TEXT CONST mtext:=""+subtext(mt,1, +meldungsfeldlaenge-5)+" ";INT VAR textl:=length(mtext);INT VAR seitenlaenge +:=meldungsfeldlaenge-textl;seitenlaenge:=seitenlaengeDIV 2;TEXT CONST fueller +:=seitenlaenge*" ";TEXT VAR meldung:=fueller+mtext+fueller; +evtlteiltextersetzen;meldungIN meldungsfeld.evtlteiltextersetzen:INT VAR +archpos:=pos(meldung,meldpattern1);IF archpos>0THEN IF NOT (pos(meldung, +meldpattern3)>0)THEN TEXT VAR ergaenztemeldung:=subtext(meldung,1,archpos-1)+ +meldpattern3;INT VAR patternpos2:=archpos+patternlaenge;IF (meldungSUB +patternpos2)=meldpattern2THEN ergaenztemeldungCAT subtext(meldung,patternpos2 ++1)ELSE ergaenztemeldungCAT subtext(meldung,patternpos2)FI ;meldung:= +ergaenztemeldungFI FI .END PROC melde;TEXT PROC frage(TEXT CONST mess):# +subtext(#mess#,textbeginn)#+fragekennzeichnungEND PROC frage;PROC +archiveoperation(INT CONST auftragscode,TEXT CONST sicherungstask):TASK VAR +sendingtask;letzterauftragscode:=auftragscode;dbsicherungstask:=/ +sicherungstask;forget(ds);ds:=nilspace;endequittungda:=FALSE ;error:=FALSE ; +call(dbsicherungstask,auftragscode,ds,quittung);loop.loop:REP SELECT quittung +OF CASE yescode:questionCASE showcode:showenCASE outcode:meldenCASE +endemeldung:beendenCASE errornak:fehlermeldenOTHERWISE :unknowncodeENDSELECT +;UNTIL endequittungdaPER .question:message:=ds;melde(frage(message));LEAVE +archiveoperation.showen:IF auftragscode=listcodeTHEN floppyELSE dbFI .floppy: +forget(dbsicherung,quiet);copy(ds,dbsicherung);floppylistingzeigen;LEAVE +archiveoperation.db:forget(dbinhalt,quiet);copy(ds,dbinhalt); +dbverzeichniszeigen;LEAVE archiveoperation.melden:message:=ds;standardmeldung +(message,"");wartenaufnaechstesendung.wartenaufnaechstesendung:REP forget(ds) +;wait(ds,quittung,sendingtask);IF NOT (sendingtask=dbsicherungstask)THEN +sendnakELSE LEAVE wartenaufnaechstesendungFI PER .beenden:IF +ungleichanmeldenundabmeldenTHEN standardmeldung(meldnr,"");archiveabmelden; +FI ;stufe:=1;endequittungda:=TRUE .meldnr:SELECT auftragscodeOF CASE +formatcode:formatkorrektCASE initcode:initkorrektCASE dbvomserver,dbaufdisk: +sichernkorrektCASE dbzumserver,dbvondisk:ladenkorrektOTHERWISE :opkorrekt +ENDSELECT .ungleichanmeldenundabmelden:auftragscode<>logonarchivecodeCAND +auftragscode<>logoffarchivecode.fehlermelden:message:=ds;standardmeldung( +message,"");IF ungleichanmeldenundabmeldenTHEN archiveabmeldenFI ;stufe:=1; +error:=TRUE ;#return(1);#LEAVE archiveoperation.unknowncode:standardmeldung( +unbekanntercode,": "+text(quittung)+"#");stufe:=1;#return(1);#LEAVE loop. +sendnak:send(sendingtask,nak,ds).ENDPROC archiveoperation;PROC +floppylistingzeigen:editiere(dbsicherung)ENDPROC floppylistingzeigen;PROC +dbverzeichniszeigen:editiere(dbinhalt,FALSE )ENDPROC dbverzeichniszeigen; +PROC endedbverzeichnis:killundenter(2)ENDPROC endedbverzeichnis;PROC +endefloppylisting:archiveabmelden;killundenter(2)ENDPROC endefloppylisting; +PROC archiveanmelden:eingabepruefeneinfach;IF eingabestatus<>0THEN infeld( +eingabestatus);return(1)ELSE archiveoperation(logonarchivecode,dbsicherung); +IF #quittung=endemeldung#endequittungdaCAND NOT errorTHEN anmeldetask:= +dbsicherungELSE anmeldetask:=""FI FI ENDPROC archiveanmelden;PROC +archiveabmelden:IF anmeldetask<>""THEN archiveoperation(logoffarchivecode, +anmeldetask);anmeldetask:=""FI ENDPROC archiveabmelden;PROC meldungquittieren +(BOOL CONST b):BOUND BOOL VAR boolds;forget(ds);ds:=nilspace;boolds:=ds; +boolds:=b;send(/dbsicherung,yescode,ds);forget(ds);IF bTHEN enter(1)ELSE +standardmeldung(inkonsicherung,"");archiveabmelden;#enter(2)#return(2)FI +ENDPROC meldungquittieren;PROC bestimmendersicherungstask: +eingabepruefeneinfach;IF eingabestatus<>0THEN infeld(eingabestatus);return(1) +FI ENDPROC bestimmendersicherungstask;PROC sicherungsloop:TASK VAR +sendingtask;endequittungda:=FALSE ;REP wartenaufnaechstesendung;SELECT +quittungOF CASE yescode:questionCASE outcode:meldenCASE endemeldung:beenden +CASE errornak:fehlermeldenOTHERWISE :unknowncodeENDSELECT ;PER .question: +message:=ds;melde(frage(message));LEAVE sicherungsloop.melden:message:=ds; +standardmeldung(message,"");#wartenaufnaechstesendung#. +wartenaufnaechstesendung:REP forget(ds);wait(ds,quittung,sendingtask);IF NOT +(sendingtask=dbsicherungstask)THEN sendnakELSE LEAVE wartenaufnaechstesendung +FI PER .beenden:standardmeldung(meldnr,"");archiveabmelden;stufe:=1;return(1) +;endequittungda:=TRUE ;LEAVE sicherungsloop.meldnr:SELECT letzterauftragscode +OF CASE dbvomserver,dbaufdisk:sichernkorrektCASE dbzumserver,dbvondisk: +ladenkorrektOTHERWISE :opkorrektENDSELECT .fehlermelden:message:=ds; +standardmeldung(message,"");archiveabmelden;error:=TRUE ;stufe:=1;return(1); +LEAVE sicherungsloop.unknowncode:standardmeldung(unbekanntercode,"");stufe:=1 +;return(1);LEAVE sicherungsloop.sendnak:send(sendingtask,nak,ds).ENDPROC +sicherungsloop;END PACKET sicherungsmonitor + |