LET versionsnummer=" 2.2.1";INT VAR kanal:=0,meinestation:=0;ROW 2TEXT VAR ausbaustufe;ausbaustufe(1):="0,1,6,";ausbaustufe(2):="0,1,6,3,4,2,5,";INT VAR ausbaustufenr:=1;LET teilsystem4="4",teilsystem6="6",teilsystem2="2", teilsystem5="5";LET praefixtrenner=".",teilsystemtrenner=",",allgemeinedatei= "0";TEXT VAR gueltigepraefixe:=",";TEXT VAR installverzeichnis:="";TASK VAR tasksourcequelle,testtask;BOOL VAR fehlerbeiinsert:=FALSE , idanichtinstallierbar:=FALSE ;LET stundenplanpraefix="Stundenplan-*";LET kurswahlpraefix="Kurswahl-*";TEXT VAR qtt:="SCHULIS-Quellen";page;TEXT VAR procaufruf1:="setze schulis zeichensatz(""",procaufruf2:= "setze ida zeichensatz(""",procaufrufende:=""")",gewzeichensatz:="";BOOL VAR exists:=TRUE ;disablestop;gewzeichensatz:=font(1);IF iserrorTHEN clearerror; line;putline("Vor Installation bitte Fonttabelle in "+ "Task 'configurator' laden!");enablestop;ELSE enablestop;WHILE existsREP page ;cursor(10,10);put("Bitte gewünschten Schrifttyp für Listen und andere"); cursor(10,11);put("Druckausgaben angeben : ");editget(gewzeichensatz);exists :=NOT fontexists(gewzeichensatz)PER ;procaufruf1CAT gewzeichensatz; procaufruf1CAT procaufrufende;procaufruf2CAT gewzeichensatz;procaufruf2CAT procaufrufende;startinsertinggesamtsystem;commanddialogue(FALSE );forget(all) ;commanddialogue(TRUE );FI ;BOOL PROC einzurichten(TEXT CONST teilsystemnr): pos(gueltigepraefixe,teilsystemtrenner+teilsystemnr+teilsystemtrenner)>0END PROC einzurichten;TEXT PROC inv(TEXT CONST txt):""+txt+"�"ENDPROC inv;PROC startinsertinggesamtsystem:TASK VAR t;INT VAR msgcode;DATASPACE VAR ds:= nilspace;maske;maskentexteinitialisieren;maskentexte;IF NOT maskeeditiert THEN LEAVE startinsertinggesamtsystemFI ;line;kanal:=channel;taskpassword( taskpasswort);beginpassword(beginnpasswort);fetch((ALL sourcetaskbaisydb) LIKE "*BAISY-0",sourcetaskbaisydb);INT VAR pospraefixende;THESAURUS VAR thes :=allLIKE "*.BAISY-0";TEXT VAR datenraumname;INT VAR indexthes:=0;get(thes, datenraumname,indexthes);WHILE indexthes>0REP pospraefixende:=pos( datenraumname,praefixtrenner);ausbaustufenr:=int(subtext(datenraumname,1, pospraefixende-1));forget(datenraumname,quiet);get(thes,datenraumname, indexthes)PER ;gueltigepraefixeCAT ausbaustufe(ausbaustufenr); tasksourcequelle:=sourcetaskbaisy;checkoff;fetchundinsert("BASIS.files"); break(quiet);disablestop;IF NOT fehlerbeiinsertTHEN begin("ACCESS",PROC startinsertingaccess,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert :=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("baisy server",PROC startinsertingbaisyserver,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("ida server", PROC startinsertingidaserver,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin( "anschreiben server",PROC startinsertinganschreibenserver,t);call(t,0,ds, msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("statistik server",PROC startinsertingstatistikserver,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin( "kurswahl server",PROC startinsertingkurswahlserver,t);call(t,0,ds,msgcode); IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("stundenplan server",PROC startinsertingstundenplanserver,t);call(t,0, ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("DB.kom",PROC startinsertingdbkom,t);call(t,0,ds, msgcode);IF msgcodeMOD 2=0THEN fehlerbeiinsert:=TRUE FI ;IF msgcode>=2THEN idanichtinstallierbar:=TRUE FI FI ;clearerror;enablestop;continue(kanal); putline("Hier ist wieder "+name(myself));putline("SCHULIS ist "+fehler+ " eingerichtet !");IF idanichtinstallierbarTHEN putline( "Das Modul ""Anwenderspezifische Druckausgaben"" wurde nicht eingerichtet,"); putline("da die EUMEL-Textverarbeitung fehlt !");lineFI ;IF NOT fehlerbeiinsertTHEN putline( "Bitte Task ""isp.archive"" unter SYSUR einrichten!");putline( "Bitte Task ""LOG"" unter SYSUR einrichten! ")ELSE putline( "Bitte beliebige Taste (außer STOP und SV) drücken !")FI ;pause; freeglobalmanager.fehler:IF fehlerbeiinsertTHEN "FEHLERHAFT"ELSE "ordnungsgemäß"FI .END PROC startinsertinggesamtsystem;PROC startinsertingbaisyserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name (myself));tasksourcequelle:=sourcetaskbaisy;line;IF taskpasswort=""THEN taskpassword("-")ELSE taskpassword(taskpasswort)FI ;beginpassword( beginnpasswort);disablestop;fetch((ALL sourcetaskbaisydb)LIKE "*BAISY-*", sourcetaskbaisydb);INT VAR pospraefixende;THESAURUS VAR thes:=allLIKE (text( ausbaustufenr)+".BAISY-*");TEXT VAR datenraumname,neuername;INT VAR indexthes :=0;get(thes,datenraumname,indexthes);WHILE indexthes>0REP pospraefixende:= pos(datenraumname,praefixtrenner);neuername:=subtext(datenraumname, pospraefixende+1);rename(datenraumname,neuername);get(thes,datenraumname, indexthes)PER ;fetchundinsert("BAISY SERVER.files");IF iserrorTHEN putline( errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;putline(name( myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0 ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("baisy server")END PROC startinsertingbaisyserver;PROC startinsertingidaserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));tasksourcequelle:= sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line;IF taskpasswort=""THEN taskpassword("-")ELSE taskpassword(taskpasswort)FI ;beginpassword( beginnpasswort);disablestop;fetchundinsert("0.IDA SERVER.files");IF iserror THEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop; putline(name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("ida server" )END PROC startinsertingidaserver;PROC startinsertingstundenplanserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt, msgcodert,ruftask);continue(kanal);line;putline(name(myself));# fehlerbeiinsert:=FALSE ;#line;taskpassword("-");beginpassword("-");fetch(( ALL sourcetaskschulisdb)LIKE stundenplanpraefix,sourcetaskschulisdb);putline( name(myself)+" ist komplett.");break(quiet);msgcodert:=1;send(ruftask, msgcodert,dsrt);freeglobalmanager;END PROC startinsertingstundenplanserver; PROC startinsertingstatistikserver:TASK VAR ruftask;INT VAR msgcodert; DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal); line;putline(name(myself));tasksourcequelle:=sourcetaskschulis;# fehlerbeiinsert:=FALSE ;#line;IF taskpasswort=""THEN taskpassword("-")ELSE taskpassword(taskpasswort)FI ;beginpassword(beginnpasswort);disablestop; fetchundinsert("5.STATISTIK SERVER.files");IF iserrorTHEN putline( errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;putline(name( myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0 ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("statistik manager")END PROC startinsertingstatistikserver;PROC startinsertingkurswahlserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt, msgcodert,ruftask);continue(kanal);line;putline(name(myself));# fehlerbeiinsert:=FALSE ;#line;taskpassword("-");beginpassword("-");fetch(( ALL sourcetaskschulisdb)LIKE kurswahlpraefix,sourcetaskschulisdb);putline( name(myself)+" ist komplett.");break(quiet);msgcodert:=1;send(ruftask, msgcodert,dsrt);freeglobalmanager;END PROC startinsertingkurswahlserver;PROC startinsertinganschreibenserver:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline( name(myself));#fehlerbeiinsert:=FALSE ;#line;taskpassword(taskpasswort); beginpassword(beginnpasswort);disablestop;fetch("VORDRUCKE.files", sourcetaskvordrucke);fetch(ALL "VORDRUCKE.files",sourcetaskvordrucke); clearerror;enablestop;putline(name(myself)+" ist komplett.");break(quiet); msgcodert:=1;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertinganschreibenserver;PROC startinsertingdbdd:TASK VAR t,ruftask; INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt ,msgcodert,ruftask);continue(kanal);line;putline(name(myself));line; taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop; tasksourcequelle:=sourcetaskschulis;fetchundinsert("0.IDA SICHERUNG.files"); tasksourcequelle:=sourcetaskbaisy;fetchundinsert("SICHERUNG.files");do( "postfix ("""")");do("ausgabe namen");do("kf (TRUE)");IF iserrorTHEN putline( errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;IF NOT fehlerbeiinsertTHEN erzeugeeumelbasebaisy;erzeugeeumelbaseschulis;FI ;break( quiet);IF NOT fehlerbeiinsertTHEN begin("statistik sicherung",PROC startinsertingstatistiksich,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin( "schulis sicherung",PROC startinsertingschulissich,t);call(t,0,ds,msgcode); IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("baisy sicherung",PROC startinsertingbaisysich,t);call(t,0,ds,msgcode); IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("ida sicherung",PROC startinsertingidasich,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF fehlerbeiinsertTHEN msgcodert :=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanagerEND PROC startinsertingdbdd;PROC startinsertingstatistiksich:TASK VAR ruftask; INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort); beginpassword(beginnpasswort);break(quiet);msgcodert:=1;send(ruftask, msgcodert,dsrt);do("statistik(TRUE)");do(" postfix ("""") ");commanddialogue( FALSE );do("isp monitor sicherungstask(""Statistik"")")END PROC startinsertingstatistiksich;PROC startinsertingidasich:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort); beginpassword(beginnpasswort);break(quiet);msgcodert:=1;send(ruftask, msgcodert,dsrt);do("ida(TRUE)");do("open mit loeschen (FALSE)");do( " postfix ("""") ");do(" fetch dd (""EUMELbase.schulis"") ");do( " BOOL VAR b:: db open (""EUMELbase.schulis"") ");commanddialogue(FALSE );do( "isp monitor sicherungstask(""EUMELbase.schulis"")")ENDPROC startinsertingidasich;PROC startinsertingschulissich:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort); beginpassword(beginnpasswort);tasksourcequelle:=sourcetaskschulisdb;fetch(( ALL tasksourcequelle)LIKE "EUMELbase.schulis*",tasksourcequelle);break(quiet) ;msgcodert:=1;send(ruftask,msgcodert,dsrt);do( "isp monitor sicherungstask(""EUMELbase.schulis"")")ENDPROC startinsertingschulissich;PROC startinsertingbaisysich:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));line;taskpassword(taskpasswort); beginpassword(beginnpasswort);tasksourcequelle:=sourcetaskbaisydb;fetch((ALL tasksourcequelle)LIKE "EUMELbase.baisy*",tasksourcequelle);fetch((ALL tasksourcequelle)LIKE "*BAISY-*",tasksourcequelle);rename(text(ausbaustufenr) +".BAISY-0","BAISY-0");rename(text(ausbaustufenr)+".BAISY-1","BAISY-1");break (quiet);msgcodert:=1;send(ruftask,msgcodert,dsrt);do( "isp monitor sicherungstask(""EUMELbase.baisy"")")ENDPROC startinsertingbaisysich;PROC startinsertingdbkom:TASK VAR t,ruftask;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt, msgcodert,ruftask);continue(kanal);line;putline(name(myself)); tasksourcequelle:=sourcetaskbaisy;#fehlerbeiinsert:=FALSE ;# idanichtinstallierbar:=FALSE ;line;taskpassword(taskpasswort);beginpassword( beginnpasswort);disablestop;fetch("EUMELbase.schulis",sourcetaskschulisdb); fetchundinsert("DB.files");IF iserrorTHEN putline(errormessage);clearerror; fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin("DB.dd",PROC startinsertingdbdd,t);call(t,0,ds,msgcode);IF msgcode=0 THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin( "standard",PROC startinsertingstandard,t);call(t,0,ds,msgcode);IF msgcodeMOD 2=0THEN fehlerbeiinsert:=TRUE FI ;IF msgcode>=2THEN idanichtinstallierbar:= TRUE FI FI ;continue(kanal);putline(name(myself)+" ist komplett.");break( quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;IF idanichtinstallierbarTHEN msgcodert:=msgcodert+2FI ;send(ruftask,msgcodert, dsrt);freeglobalmanager;END PROC startinsertingdbkom;PROC startinsertingstandard:TASK VAR t,ruftask;INT VAR msgcodert,msgcode; DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));tasksourcequelle:=sourcetaskbaisy; #fehlerbeiinsert:=FALSE ;#idanichtinstallierbar:=FALSE ;line;taskpassword( taskpasswort);beginpassword(beginnpasswort);disablestop;fetchundinsert( "STANDARD.files");IF iserrorTHEN putline(errormessage);clearerror; fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF einzurichten(teilsystem6 )THEN IF NOT fehlerbeiinsertTHEN IF procexists("autopageform")THEN begin( "ida",PROC startinsertingida,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ELSE idanichtinstallierbar:=TRUE FI FI ;FI ; fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN begin( "anschrlist werkzeuge",PROC startinsertinganschrlistwerkzeuge,t);call(t,0,ds, msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:= FALSE ;IF NOT fehlerbeiinsertTHEN begin("erfassungen",PROC startinsertingerfassungen,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert THEN begin("anwendung",PROC startinsertinganwendung,t);call(t,0,ds,msgcode); IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal);putline(name( myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0 ELSE msgcodert:=1FI ;IF idanichtinstallierbarTHEN msgcodert:=msgcodert+2FI ; send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertingstandard;PROC startinsertingaccess:TASK VAR t,ruftask;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt, msgcodert,ruftask);continue(kanal);line;putline(name(myself)); tasksourcequelle:=sourcetaskeumelbase;#fehlerbeiinsert:=FALSE ;#line; taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop; fetchundinsert("ACCESS.files");IF iserrorTHEN putline(errormessage); clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin("LOCAL",PROC startinsertinglocal,t);call(t,0,ds, msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;IF NOT fehlerbeiinsertTHEN begin("DB REORG",PROC startinsertingdbreorg,t);call(t,0, ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal); putline(name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt); freeglobalmanagerEND PROC startinsertingaccess;PROC startinsertinglocal:TASK VAR t,ruftask;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:= nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name( myself));tasksourcequelle:=sourcetaskschulis;line;taskpassword(taskpasswort); beginpassword(beginnpasswort);disablestop;fetchundinsert("0.LOCAL.files");IF iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ; enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin("MM",PROC startinsertingmm,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:= TRUE FI ;FI ;continue(kanal);putline(name(myself)+" ist komplett.");break( quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask, msgcodert,dsrt);freeglobalmanagerEND PROC startinsertinglocal;PROC startinsertingdbreorg:TASK VAR t,ruftask;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal); line;putline(name(myself));tasksourcequelle:=sourcetaskbaisy;line; taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop; fetchundinsert("DB REORG.files");IF iserrorTHEN putline(errormessage); clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;putline(name(myself)+ " ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do("db reorganisation manager") END PROC startinsertingdbreorg;PROC startinsertingmm:TASK VAR ruftask;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));tasksourcequelle:= sourcetaskeumelbase;line;taskpassword(taskpasswort);beginpassword( beginnpasswort);disablestop;fetchundinsert("MM BAISY.files");IF iserrorTHEN fehlerbeiinsert:=TRUE ;putline(errormessage);clearerrorFI ;enablestop;putline (name(myself)+" ist komplett.");enablestop;break(quiet);IF fehlerbeiinsert THEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);do( "generate db manager")END PROC startinsertingmm;PROC erzeugeeumelbasebaisy: disablestop;testtask:=/"EUMELbase.baisy";IF iserrorTHEN clearerror; tasksourcequelle:=sourcetaskbaisydb;fetch((ALL tasksourcequelle)LIKE "EUMELbase.baisy*",tasksourcequelle);do( "BOOL VAR b:: create db (""EUMELbase.baisy"")");do( "restore db (""EUMELbase.baisy"")");commanddialogue(FALSE );forget(all); commanddialogue(TRUE );FI ;enablestopENDPROC erzeugeeumelbasebaisy;PROC erzeugeeumelbaseschulis:disablestop;testtask:=/"EUMELbase.schulis";IF iserror THEN clearerror;tasksourcequelle:=sourcetaskschulisdb;fetch((ALL tasksourcequelle)LIKE "EUMELbase.schulis*",tasksourcequelle);do( "BOOL VAR b:: create db (""EUMELbase.schulis"")");do( "restore db (""EUMELbase.schulis"")");commanddialogue(FALSE );forget(all); commanddialogue(TRUE );FI ;enablestopENDPROC erzeugeeumelbaseschulis;PROC startinsertinganwendung:TASK VAR ruftask,t;INT VAR msgcodert,i;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name (myself));tasksourcequelle:=sourcetaskschulis;line;taskpassword(taskpasswort) ;beginpassword(beginnpasswort);disablestop;tasksourcequelle:=sourcetaskbaisy; checkoff;fetchundinsert("ANWENDUNG.files");IF iserrorTHEN putline( errormessage);clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet); FOR iFROM 1UPTO anzahlschulistasksREP IF NOT fehlerbeiinsertTHEN begin( "schulis"+text(i),PROC startschulis1,t);FI ;PER ;continue(kanal);putline(name (myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0 ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertinganwendung;PROC startinsertinganschrlistwerkzeuge:TASK VAR ruftask,t;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace ;wait(dsrt,msgcodert,ruftask);continue(kanal);line;putline(name(myself)); tasksourcequelle:=sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line; taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop; fetchundinsert("0.ANSCHRLISTWERKZEUGE.files");do(procaufruf1);fetchundinsert( "0.ANSCHRLISTWERKZEUGE TEIL2.files");IF iserrorTHEN putline(errormessage); clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF einzurichten( teilsystem5)THEN fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:="5.STATISTIK.files";begin("statistik",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ;IF einzurichten(teilsystem2)THEN fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:= "2.AUSWERTUNGEN KURSWAHL.files";begin("auswertungen kurswahl",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ;IF einzurichten(teilsystem4)THEN fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:= "4.AUSWERTUNGEN STUNDENPLAN 3.files";begin("auswertungen stundenplan 3",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert THEN installverzeichnis:="4.AUSWERTUNGEN STUNDENPLAN 2.files";begin( "auswertungen stundenplan 2",PROC startinsertinganwendungstask,t);call(t,0,ds ,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:= FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:= "4.AUSWERTUNGEN STUNDENPLAN.files";begin("auswertungen stundenplan",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:="0.ANSCHREIBEN.files";begin( "anschreiben",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:="0.LISTEN 2.files";begin("listen 2", PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert THEN installverzeichnis:="0.LISTEN.files";begin("listen",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal);putline(name(myself)+ " ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertinganschrlistwerkzeuge;PROC startinsertinganwendungstask:TASK VAR ruftask,t;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert, ruftask);continue(kanal);line;putline(name(myself));tasksourcequelle:= sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line;taskpassword(taskpasswort); beginpassword(beginnpasswort);disablestop;fetchundinsert(installverzeichnis); IF iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ; enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin(name(myself)+ " manager",PROC starteaufrufmanager,t);FI ;continue(kanal);putline(name( myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0 ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertinganwendungstask;PROC startinsertingerfassungen:TASK VAR ruftask, t;INT VAR msgcodert,msgcode;DATASPACE VAR dsrt:=nilspace,ds:=nilspace;wait( dsrt,msgcodert,ruftask);continue(kanal);line;putline(name(myself)); tasksourcequelle:=sourcetaskschulis;#fehlerbeiinsert:=FALSE ;#line; taskpassword(taskpasswort);beginpassword(beginnpasswort);disablestop; fetchundinsert("0.ERFASSUNGEN.files");IF iserrorTHEN putline(errormessage); clearerror;fehlerbeiinsert:=TRUE FI ;enablestop;break(quiet);IF einzurichten( teilsystem2)THEN fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:="2.ERFASSUNGEN KURSWAHL 2.files";begin( "erfassungen kurswahl 2",PROC startinsertinganwendungstask,t);call(t,0,ds, msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:= FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:= "2.ERFASSUNGEN KURSWAHL.files";begin("erfassungen kurswahl",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ;IF einzurichten(teilsystem4)THEN IF NOT fehlerbeiinsertTHEN installverzeichnis:="4.ERFASSUNGEN STUNDENPLAN.files"; begin("erfassungen stundenplan",PROC startinsertingerfassungenstundenplan,t); call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ; fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:= "0.ERFASSUNGEN EINZELN 2.files";begin("erfassungen einzeln 2",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsert THEN installverzeichnis:="0.ERFASSUNGEN EINZELN.files";begin( "erfassungen einzeln",PROC startinsertinganwendungstask,t);call(t,0,ds, msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:= FALSE ;IF einzurichten(teilsystem4)THEN IF NOT fehlerbeiinsertTHEN installverzeichnis:="4.ERFASSUNGEN LISTENWEISE 3.files";begin( "erfassungen listenweise 3",PROC startinsertinganwendungstask,t);call(t,0,ds, msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;fehlerbeiinsert:= FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:= "4.ERFASSUNGEN LISTENWEISE 2.files";begin("erfassungen listenweise 2",PROC startinsertinganwendungstask,t);call(t,0,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;FI ;fehlerbeiinsert:=FALSE ;IF NOT fehlerbeiinsertTHEN installverzeichnis:="0.ERFASSUNGEN LISTENWEISE.files"; begin("erfassungen listenweise",PROC startinsertinganwendungstask,t);call(t,0 ,ds,msgcode);IF msgcode=0THEN fehlerbeiinsert:=TRUE FI ;FI ;continue(kanal); putline(name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt); freeglobalmanager;END PROC startinsertingerfassungen;PROC startinsertingerfassungenstundenplan:TASK VAR ruftask,t;INT VAR msgcodert; DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask);continue(kanal); line;putline(name(myself));tasksourcequelle:=sourcetaskschulis;# fehlerbeiinsert:=FALSE ;#line;taskpassword(taskpasswort);beginpassword( beginnpasswort);disablestop;fetchundinsert("4.ERFASSUNGEN STUNDENPLAN.files") ;IF iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ; enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin(name(myself)+ " manager",PROC starteaufrufmanagersingletask,t);FI ;continue(kanal);putline( name(myself)+" ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert :=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertingerfassungenstundenplan;PROC starteaufrufmanager:do( "starte aufruf manager")ENDPROC starteaufrufmanager;PROC starteaufrufmanagersingletask:do("starte aufruf manager(1)")ENDPROC starteaufrufmanagersingletask;PROC startinsertingida:TASK VAR ruftask,t;INT VAR msgcodert;DATASPACE VAR dsrt:=nilspace;wait(dsrt,msgcodert,ruftask); continue(kanal);line;putline(name(myself));tasksourcequelle:= sourcetaskschulis;line;taskpassword(taskpasswort);beginpassword( beginnpasswort);disablestop;fetchundinsert("6.IDA.files");do(procaufruf2);IF iserrorTHEN putline(errormessage);clearerror;fehlerbeiinsert:=TRUE FI ; enablestop;break(quiet);IF NOT fehlerbeiinsertTHEN begin("ida manager",PROC starteaufrufmanager,t);FI ;continue(kanal);putline(name(myself)+ " ist komplett.");break(quiet);IF fehlerbeiinsertTHEN msgcodert:=0ELSE msgcodert:=1FI ;send(ruftask,msgcodert,dsrt);freeglobalmanager;END PROC startinsertingida;PROC startbaisy1:do("monitor")END PROC startbaisy1;PROC startschulis1:disablestop;startschulisunterdisablestop;IF iserrorTHEN clearerrorFI ;enablestop;do("monitor")END PROC startschulis1;PROC startschulisunterdisablestop:enablestop;do( "oeffne datenbank (""EUMELbase.schulis"")");do("starte schulis");END PROC startschulisunterdisablestop;PROC fetchundinsert(TEXT CONST datname):IF fehlerbeiinsertTHEN LEAVE fetchundinsertFI ;disablestop;fetch(datname, tasksourcequelle);putline("Task "+name(myself)+" wird eingerichtet !");INT VAR indexnr:=0;TEXT VAR thesname;THESAURUS VAR thes:=ALL datname;get(thes, thesname,indexnr);WHILE indexnr>0REP IF dateizuberuecksichtigen(thesname) THEN fetch(thesname,tasksourcequelle);putline(thesname);INT VAR taskkanal:= channel;break(quiet);insert(thesname);continue(taskkanal);IF iserrorTHEN fehlerbeiinsert:=TRUE ;put(errormessage);clearerrorFI ;forget(thesname,quiet) FI ;get(thes,thesname,indexnr);PER ;commanddialogue(FALSE );forget(datname, quiet);commanddialogue(TRUE );enablestop.END PROC fetchundinsert;BOOL PROC dateizuberuecksichtigen(TEXT CONST dateiname):INT VAR pospraefixende:=pos( dateiname,praefixtrenner);TEXT VAR dateipraefix:=subtext(dateiname,1, pospraefixende-1);IF dateipraefix=""THEN TRUE ELIF dateipraefix= allgemeinedateiTHEN TRUE ELIF dateipraefix>"9"THEN TRUE ELSE pos( gueltigepraefixe,teilsystemtrenner+dateipraefix+teilsystemtrenner)>0FI END PROC dateizuberuecksichtigen;LET invers="",inversoff="",cdown=10,cup=3,esc= 27,hop=1,zeilenlaenge=80,strichelement="=",maxiofelder=15;TYPE MASKENTEXTE = STRUCT (INT x,y,l,TEXT t,BOOL lfest);ROW maxiofelderMASKENTEXTE VAR mt;TASK PROC sourcetask(INT CONST i):IF int(mt[i+1].t)<>meinestationTHEN int(mt[i+1]. t)/mt[i].tELSE /mt[i].tFI ENDPROC sourcetask;TASK PROC sourcetaskbaisy: sourcetask(1)ENDPROC sourcetaskbaisy;TASK PROC sourcetaskschulis:sourcetask(3 )ENDPROC sourcetaskschulis;TASK PROC sourcetaskeumelbase:sourcetask(5) ENDPROC sourcetaskeumelbase;TASK PROC sourcetaskvordrucke:sourcetask(7) ENDPROC sourcetaskvordrucke;TASK PROC sourcetaskbaisydb:sourcetask(9)ENDPROC sourcetaskbaisydb;TASK PROC sourcetaskschulisdb:sourcetask(11)ENDPROC sourcetaskschulisdb;INT PROC anzahlschulistasks:int(mt[13].t)ENDPROC anzahlschulistasks;TEXT PROC taskpasswort:mt[14].tENDPROC taskpasswort;TEXT PROC beginnpasswort:mt[15].tENDPROC beginnpasswort;PROC writexytext(INT CONST x,y,TEXT CONST t):cursor(x,y);write(t)ENDPROC writexytext;PROC writexyinvers(INT CONST x,y,TEXT CONST t):cursor(x,y);write(invers+t+ inversoff)ENDPROC writexyinvers;PROC strich(INT CONST zeile):writexytext(1, zeile,zeilenlaenge*strichelement)ENDPROC strich;PROC kosmetik:page;strich(1); strich(4);strich(23);kopf.kopf:writexyinvers(27,2," S C H U L I S "); writexytext(10,3,"Installationsprogramm für SCHULIS Version "+versionsnummer) .ENDPROC kosmetik;PROC maske:kosmetik;fuss;rumpf.fuss:writexyinvers(2,24, "ESC HOP = Start CURSOR UP/DOWN = nächstes/voriges Feld ESC ESC = Abbruch" );.rumpf:writexytext(3,5, "BAISY-Quelltexte in Task : auf Station:"); writexytext(3,7, "SCHULIS-Quelltexte in Task : auf Station:"); writexytext(3,9, "EUMELbase-Quelltexte in Task: auf Station:"); writexytext(3,11, "Vordrucke in Task : auf Station:"); writexytext(3,13, "BAISY-Datenbank in Task : auf Station:"); writexytext(3,15, "SCHULIS-Datenbank in Task : auf Station:"); writexytext(3,20,"Anzahl der Arbeitsplätze für SCHULIS:");writexytext(3,22, "Task-Password: Beginn-Password:").ENDPROC maske; TEXT PROC mystation:text(station(myself))ENDPROC mystation;PROC maskentexteinitialisieren:setmt(1,33,5,27,"BAISY-Quellen");setmt(2,75,5,3, mystation,TRUE );setmt(3,33,7,27,"SCHULIS-Quellen");setmt(4,75,7,3,mystation, TRUE );setmt(5,33,9,27,"EUMELbase-Quellen");setmt(6,75,9,3,mystation,TRUE ); setmt(7,33,11,27,"VORDRUCKE");setmt(8,75,11,3,mystation,TRUE );setmt(9,33,13, 27,"BAISY-SCHULIS-DB");setmt(10,75,13,3,mystation,TRUE );setmt(11,33,15,27, "BAISY-SCHULIS-DB");setmt(12,75,15,3,mystation,TRUE );setmt(13,45,20,3,"1", TRUE );setmt(14,18,22,21,"");setmt(15,60,22,21,"");ENDPROC maskentexteinitialisieren;PROC setmt(INT CONST i,px,py,pl,TEXT CONST pt): setmt(i,px,py,pl,pt,FALSE )ENDPROC setmt;PROC setmt(INT CONST i,px,py,pl, TEXT CONST pt,BOOL CONST pf):mt[i].x:=px;mt[i].y:=py;mt[i].l:=pl;mt[i].t:=pt; mt[i].lfest:=pfENDPROC setmt;PROC maskentexte:INT VAR i;FOR iFROM 1UPTO maxiofelderREP writexytext(mt[i].x,mt[i].y,text(mt[i].t,mt[i].l))PER ENDPROC maskentexte;BOOL PROC maskeeditiert:INT VAR fnr:=1,editl;TEXT VAR exitchar:= "";REP cursor(mt[fnr].x,mt[fnr].y);bestimmeeditlaenge;editget(mt[fnr].t,editl ,mt[fnr].l,"� ","��?",exitchar);exitchar:=exitcharSUB length(exitchar); SELECT code(exitchar)OF CASE cup:vorigesfeldCASE cdown:naechstesfeldCASE esc: kosmetik;cursor(8,10);IF yes( "Soll die Installation tatsächlich abgebrochen werden")THEN LEAVE maskeeditiertWITH FALSE ELSE restorescreenFI CASE hop:kosmetik;cursor(1,10); IF yes("Soll mit der Installation von SCHULIS begonnen werden")THEN page; LEAVE maskeeditiertWITH TRUE ELSE restorescreenFI OTHERWISE :naechstesfeld ENDSELECT PER ;FALSE .restorescreen:maske;maskentexte.naechstesfeld:fnr:=(fnr MOD maxiofelder)+1.vorigesfeld:IF fnr=1THEN fnr:=maxiofelderELSE fnrDECR 1FI .bestimmeeditlaenge:IF mt[fnr].lfestTHEN editl:=mt[fnr].lELSE editl:=maxint-1 FI .ENDPROC maskeeditiert;LET endofpermanenttable=32767;DATASPACE VAR bulletinds:=nilspace;FILE VAR bulletinfile;TEXT VAR buffer,objectname,pattern ;INT VAR packetlink,linenumber;BOOL VAR found:=TRUE ;BOOL PROC procexists( TEXT CONST procname):prepbulletin;objectname:=compress(procname);scan( objectname);nextsymbol(pattern);packetlink:=endofpermanenttable;standardhelp. prepbulletin:forget(bulletinds);bulletinds:=nilspace;bulletinfile:= sequentialfile(output,bulletinds);linenumber:=0;buffer:="".standardhelp: toobject(pattern);found.END PROC procexists;PROC toobject(TEXT CONST searchedobject):LET endofhashtable=1023;INT VAR permanentpointer,index,ntlink ;ntlink:=0;FOR indexFROM 1UPTO LENGTH searchedobjectREP ntlinkINCR ntlink;IF ntlink>endofhashtableTHEN ntlinkDECR endofhashtableFI ;ntlink:=(ntlink+code( searchedobjectSUB index))MOD 1024PER ;found:=FALSE ;WHILE yetanotherntentry REP permanentpointer:=cdbint(ntlink+1);objectname:=cdbtext(ntlink+2);IF objectname=searchedobjectTHEN found:=TRUE ;LEAVE toobjectFI PER . yetanotherntentry:ntlink:=cdbint(ntlink);ntlink<>0.END PROC toobject;INT PROC cdbint(INT CONST index):EXTERNAL 116END PROC cdbint;TEXT PROC cdbtext( INT CONST index):EXTERNAL 117END PROC cdbtext;