PACKET ispmanagerschnittstelleDEFINES gibdatenbankkennung,oeffnedatenbank, initmaske,maskegibtes,maskeloeschen,maskespeichern,maskeumbenennen, maskekopieren,maskenliste,setzemaske,baumverarbeitung,ladesystembaum, schulisdbname,#08.02.88dr#baisydbname,#08.02.88dr#setzeschulisdbname,#08.02. 88dr#setzebaisydbname,#08.02.88dr##dnrausk,dnrbenutz,dnrmeld,fnrauskunftsname ,fnrschlverz,fnrauskunftstext,fnrbenutzbestand,fnrbenutzname, fnrbenutzgeheimwort,fnrbenutzberecht,fnrmeldungsname,fnrmeldungstext#:LET PARAM =STRUCT (TEXT textkey1,textkey2,TAG maske);LET pruefen=40,init=41, loeschen=42,speichern=43,umbenennen=44,kopieren=45,liste=46,newtree=52;#dr06. 07.88indasPACKET "isp schulis db nummern"übernommenLET dnrauskuenfte=2, fnrauskname=3,fnrauskverz=4,fnrausktext=5,dnrbenutzer=7,fnrbenbestand=8, fnrbenname=9,fnrbengwort=10,fnrbenrecht=11,dnrmeldungen=12,fnrmeldname=13, fnrmeldtext=14;#LET ack=0,error=2,ende=3,baumverarbeitungbasis=53;DATASPACE VAR ds;BOUND PARAM VAR p;LET manager="baisy server";TASK VAR newmanager;INT VAR replycode;TEXT VAR schulisdatenbank:="EUMELbase.schulis",baisydatenbank:= "EUMELbase.baisy";PROC initdbsneu:neuanmelden;neuinitialisieren.neuanmelden: newmanager:=baisyserver;.END PROC initdbsneu;PROC neuinitialisieren:forget(ds );ds:=nilspace;p:=dsEND PROC neuinitialisieren;LET KENNUNGALT =STRUCT (TASK managerbaisy,managerschulis,INT baisy,schulis);LET DATENBANKKENNUNG =STRUCT ( TASK newmanager,KENNUNGALT oldmanager);PROC gibdatenbankkennung(DATASPACE VAR ds):BOUND DATENBANKKENNUNG VAR dbkennung:=ds;dbkennung.newmanager:= newmanager;DATASPACE VAR d:=nilspace;BOUND KENNUNGALT VAR kennung:=d; dbkennung.oldmanager:=kennung;forget(d)END PROC gibdatenbankkennung;PROC oeffnedatenbank(DATASPACE CONST ds):BOUND DATENBANKKENNUNG VAR dbkennung:=ds; newmanager:=dbkennung.newmanager;DATASPACE VAR d:=nilspace;BOUND KENNUNGALT VAR kennung:=d;kennung:=dbkennung.oldmanager;oeffneeumelbasebaisydatenbank;# oeffnedatenbankalt(d);ersetztdurch#kennung.managerbaisy:=/"ei";kennung. managerschulis:=/"ei";kennung.baisy:=999;kennung.schulis:=999; neuinitialisierenEND PROC oeffnedatenbank;PROC oeffnedatenbank: oeffneeumelbasebaisydatenbank;#oeffnedatenbankalt;#initdbsneuEND PROC oeffnedatenbank;PROC oeffnedatenbank(TEXT CONST db):fetchdd(db);IF dbopen(db) THEN setzeschulisdbname(db);oeffnedatenbank;systemdboffELSE errorstop( "Datenbank der Anwendung konnte nicht geöffnet werden")FI ENDPROC oeffnedatenbank;PROC setzebaisydbname(TEXT CONST bdbname):baisydatenbank:= bdbnameEND PROC setzebaisydbname;PROC setzeschulisdbname(TEXT CONST sdbname): schulisdatenbank:=sdbnameEND PROC setzeschulisdbname;TEXT PROC baisydbname: baisydatenbankEND PROC baisydbname;TEXT PROC schulisdbname:schulisdatenbank END PROC schulisdbname;PROC oeffneeumelbasebaisydatenbank:fetchdd(baisydbname );IF NOT systemdbopen(baisydbname)THEN errorstop("Datenbank "+baisydbname+ " konnte nicht geöffnet werden")FI ;ENDPROC oeffneeumelbasebaisydatenbank;# dr06.07.88indasPACKET "isp.schulis db nummern"übernommenINT PROC dnrausk: dnrauskuenfteENDPROC dnrausk;INT PROC fnrauskunftsname:fnrausknameENDPROC fnrauskunftsname;INT PROC fnrschlverz:fnrauskverzENDPROC fnrschlverz;INT PROC fnrauskunftstext:fnrausktextENDPROC fnrauskunftstext;INT PROC dnrbenutz: dnrbenutzerENDPROC dnrbenutz;INT PROC fnrbenutzbestand:fnrbenbestandENDPROC fnrbenutzbestand;INT PROC fnrbenutzname:fnrbennameENDPROC fnrbenutzname;INT PROC fnrbenutzgeheimwort:fnrbengwortENDPROC fnrbenutzgeheimwort;INT PROC fnrbenutzberecht:fnrbenrechtENDPROC fnrbenutzberecht;INT PROC dnrmeld: dnrmeldungenENDPROC dnrmeld;INT PROC fnrmeldungsname:fnrmeldnameENDPROC fnrmeldungsname;INT PROC fnrmeldungstext:fnrmeldtextENDPROC fnrmeldungstext;# PROC initmaske(TAG VAR t,TEXT CONST name):p.textkey1:=name;sendeauftrag(init) ;t:=p.maskeEND PROC initmaske;BOOL PROC maskegibtes(TEXT CONST name):p. textkey1:=name;sendeauftrag(pruefen);replycode=ackEND PROC maskegibtes;PROC maskeloeschen(TEXT CONST name):p.textkey1:=name;sendeauftrag(loeschen)END PROC maskeloeschen;PROC maskespeichern(TEXT CONST name):p.textkey1:=name; sendeauftrag(speichern)END PROC maskespeichern;PROC maskeumbenennen(TEXT CONST alt,neu):p.textkey1:=alt;p.textkey2:=neu;sendeauftrag(umbenennen)END PROC maskeumbenennen;PROC maskekopieren(TEXT CONST alt,neu):p.textkey1:=alt;p .textkey2:=neu;sendeauftrag(kopieren)END PROC maskekopieren;PROC maskenliste( TEXT CONST dateiname):p.textkey1:=dateiname;sendeauftrag(liste);copy(ds, dateiname);neuinitialisierenEND PROC maskenliste;PROC setzemaske(TAG CONST t) :p.maske:=tEND PROC setzemaske;PROC ladesystembaum(DATASPACE VAR d,TEXT CONST name):p.textkey1:=name;sendeauftrag(newtree);d:=ds;neuinitialisieren END PROC ladesystembaum;PROC baumverarbeitung(TEXT VAR dateiname,INT CONST aktion):INT VAR wastun:=baumverarbeitungbasis+aktion;IF aktion>4THEN wastun DECR 2ELIF (aktion=2)COR (aktion=0)THEN FILE VAR f:=sequentialfile(input, dateiname);INT CONST ch:=channel(myself);TEXT CONST cht:=dateiname+text(ch,2) ;headline(f,cht);break(quiet)FI ;DATASPACE VAR datei:=old(dateiname);INT VAR re:=0;call(newmanager,wastun,datei,re);IF (aktion=2)COR (aktion=0)THEN continue(ch)FI ;IF re<>ackTHEN IF re<0THEN errorstop("Keine Managertask") ELSE IF re=errorTHEN BOUND TEXT VAR t:=datei;errorstop(t)ELSE SELECT aktion OF CASE 2:dateiname:=headline(sequentialfile(input,datei));copy(datei, dateiname);forget(datei)CASE 3,4:forget(dateiname,quiet);forget(datei); dateiname:=""OTHERWISE standard;dateiname:=""END SELECT FI FI ELSE standard FI .standard:forget(dateiname,quiet);copy(datei,dateiname);forget(datei).END PROC baumverarbeitung;PROC sendeauftrag(INT CONST auftragsnr):call(newmanager ,auftragsnr,ds,replycode);IF (replycode<>ack)CAND (replycode<>ende)THEN IF nomanagerTHEN errorstop(no)ELSE BOUND TEXT VAR t:=ds;TEXT VAR fehlermeldung:= t;neuinitialisieren;errorstop(fehlermeldung)FI ELSE p:=dsFI .nomanager: replycode<0.no:"Keine Managertask".END PROC sendeauftrag;END PACKET ispmanagerschnittstelle;