PACKET konsistenzpruefunginkursdatenDEFINES konsistenzpruefunginkursdatenstarten, konsistenzpruefunginkursdatenprotokolldrucken:LET meldnrblankomeldung=343; LET protname="Protokoll zur Konsistenzprüfung";FILE VAR prot;LET schuljahr= "Schuljahr",schulhalbjahr="Schulhalbjahr",schulname="Schulname",schulort= "Schulort";LET ueberschrift="Konsistenzprüfung in Kursdaten",untertitel1= "Kursdaten zum Schuljahr ",texthalbjahr=". Halbjahr",untertitel2= "Prüfung am ",beginnderfehlerliste=" festgestellte Inkonsistenzen:";LET strich="-",schraegstrich="/",blank=" ",kennzhell="#";TEXT VAR aktsj:="",akthj :="",gewsj:="",gewhj:="",bearbschuljahr;INT VAR ihalbjahr;LET maxhalbjahre=7; LET ersteshj="1";INT VAR jgst,gewjgst,jgstinkrement,startjgst;LET jgst10=10, jgst11=11,jgst13=13;TEXT VAR auszeile;TEXT VAR gueltigekurse,alleplanbloecke, allekursedesplanblocks,planblock,kurs;LET kennungkurse="K";LET laengeplanblock=3,laengekurs=6,laengekursangaben=10;INT VAR posplanblock, poskurs;BOOL VAR keinfehleraufgetreten;PROC konsistenzpruefunginkursdatenstarten:IF aktsj=""THEN aktsj:=schulkenndatum( schuljahr);akthj:=schulkenndatum(schulhalbjahr)FI ;gewsj:=aktsj;gewhj:=akthj; protokollvorbereiten;ausgabekopfaufbereiten;pruefunginkursdatendurchfuehren; zeigedatei(protname,"").protokollvorbereiten:forget(protname,quiet);prot:= sequentialfile(output,protname).ausgabekopfaufbereiten:putline(prot, schulkenndatum(schulname));putline(prot,schulkenndatum(schulort));line(prot,2 );putline(prot,20*blank+ueberschrift);putline(prot,20*blank+length( ueberschrift)*strich);line(prot);auszeile:=untertitel1;auszeileCAT aufberschuljahr;auszeileCAT ", ";auszeileCAT akthj;auszeileCAT texthalbjahr; putline(prot,auszeile);auszeile:=untertitel2;auszeileCAT date;auszeileCAT blank;auszeileCAT timeofday;putline(prot,auszeile);line(prot,2).END PROC konsistenzpruefunginkursdatenstarten;PROC pruefunginkursdatendurchfuehren:IF akthj=ersteshjTHEN startjgst:=jgst11ELSE startjgst:=jgst10FI ;FOR jgstFROM startjgstUPTO jgst13REP kurswahlserveraktualisieren(text(jgst),"","")#spr16. 01.91#PER ;jgstinkrement:=0;FOR ihalbjahrFROM 1UPTO maxhalbjahreREP gewhalbjahrbearbeiten;halbjahrerhoehenPER .halbjahrerhoehen: geplanteshjundsjberechnen(gewhj,gewsj);IF gewhj=ersteshjTHEN jgstinkrement INCR 1FI .gewhalbjahrbearbeiten:FOR jgstFROM startjgstUPTO jgst13REP gewjgst :=jgst+jgstinkrement;IF gewjgst<=13THEN kurswahlinitialisieren(text(jgst), text(gewjgst),gewhj,"",bearbschuljahr);IF istkurswahlbasisvorhandenTHEN bearbeiteFI ;FI ;PER .bearbeite:kontrollmeldungausgeben; datenmeldunginprotokollausgeben;fehlerschalterinitialisieren;IF aktuellesodergeplanteshalbjahrTHEN INT VAR fehlerstatus;kurswahlbasisholen( fehlerstatus);pruefeplanblockschemamitkursen;kurswahl1sichern(fehlerstatus) FI ;fehlerschalterauswerten.aktuellesodergeplanteshalbjahr:ihalbjahr=1COR ihalbjahr=2.kontrollmeldungausgeben:auszeile:="Daten zu Jgst. ";auszeileCAT text(gewjgst);auszeileCAT ".";auszeileCAT gewhj;auszeileCAT " in ";auszeile CAT aufberschuljahr;auszeileCAT " werden geprüft.";auszeileCAT kennzhell; standardmeldung(meldnrblankomeldung,auszeile).datenmeldunginprotokollausgeben :auszeile:="Wahldaten für Schüler der Jgst. ";auszeileCAT text(jgst);auszeile CAT ": Schuljahr ";auszeileCAT aufberschuljahr;auszeileCAT " Jgst. ";auszeile CAT text(gewjgst);auszeileCAT ".";auszeileCAT gewhj;putline(prot,auszeile). fehlerschalterinitialisieren:keinfehleraufgetreten:=TRUE . fehlerschalterauswerten:IF keinfehleraufgetretenTHEN putline(prot, beginnderfehlerliste+" keine")FI ;line(prot,2).pruefeplanblockschemamitkursen :gueltigekurse:=allekurse;alleplanbloecke:=alleplanblockbezeichner; posplanblock:=1;WHILE posplanblock0REP IF findposMOD laenge=1THEN LEAVE suchposWITH findposELSE findpos:=pos(quelle,suchtext,findpos+1);FI PER ;findposEND PROC suchpos;END PACKET konsistenzpruefunginkursdaten