app/schulis/2.2.1/src/2.stand der kursbildung analysieren

Raw file
Back to index

PACKET standderkursbildunganalysierenDEFINES 
standderkursbildunganalysierenvorbereiten,
standderkursbildunganalysierenstarten,standderkursbildunganalysierendrucken:
LET maskeeingang="ms stand der kursbildung analysieren";LET fnrgewjgst=2,
fnrhalbjahr=3,fnraktjgst=4,fnrneuanjgst=5,fnralleschueler=6;FILE VAR prot;
LET protname="Zuordnung von Schülern zu Kursen";LET schulhalbjahr=
"Schulhalbjahr",schulname="Schulname",schulort="Schulort";LET jgst10=10,
jgst11=11,jgst13=13,hj1=1,hj2=2;LET meldnrdatenwerdengeprueft=57,
meldnrbittewarten=69,meldnrbearbeitetwird=102,meldnrbitteangabeergaenzen=129,
meldnrfalschejgstfolge=410,meldnrfalschebezugsjgst=411,meldnrkurswahlfehler=
416;LET feldanzmaskeeingang=6;ROW feldanzmaskeeingangTEXT VAR feldbs1;INT 
VAR letztecursorfnr:=fnrgewjgst,pruefstatus,kurswahlstatus;TEXT VAR 
aktuelleshalbjahr:="",aktjgst,gewjgst,gewhalbjahr,neuanjgst,gewschuljahr;
BOOL VAR alleschueler,fehlerinschuelerwahl;TEXT VAR gewschueler;LET 
nuraktuelleschueler="O",nurneuangemeldete="N";INT VAR ischueler;TEXT VAR 
wahldaten,schuelername,anfangsbuchstabe,kurs,gueltigekurse;INT VAR ikurs;LET 
maxkurse=13;ROW maxkurseSTRUCT (TEXT eintrag,TEXT pb1,TEXT pb2)VAR 
kurshinweis;TEXT VAR planbloecke,belegtebloecke,pbnr,pbkennung,pruefblock;
LET pbkennunga="a",pbkennungb="b",pbleer="   ";INT VAR poskurs;LET laengekurs
=6,laengeschuelerkurs=15,laengekursangaben=10,laengeplanblock=3;LET trenner=
"�",schraegstrich="/",doppelpunkt=":",kennzhell="#";LET kennungname="N",
kennungkurse="K",kennungplanblock="P";TEXT VAR auszeile,fachzeile,kurszeile,
fehlerzeile;LET ueberschrift="Zuordnung von Schülern zu Kursen",untertitel1=
"Jgst. ",erklaerung1="(Fehlende Zuordnungen sind mit ""_"" hervorgehoben,",
erklaerung2="Überschneidungen in Planblöcken mit ""*"",",erklaerung3=
"ungültige Kursbezeichnungen mit ""$"" markiert.)",blank=" ",zeilenbeginn=
"   ",leereintrag="    :",ungueltigerkurs="$$$$:",fehlenderkurs="____:",
gleichzeitigerkurs="****:";initfelderdeseingangsbildschirms;PROC 
standderkursbildunganalysierenvorbereiten:standardstartproc(maskeeingang);
wertedeseingangsbildschirmsholen;infeld(fnrgewjgst);standardfelderausgeben;
infeld(letztecursorfnr);standardnprocEND PROC 
standderkursbildunganalysierenvorbereiten;PROC 
standderkursbildunganalysierenstarten:eingangsbehandlung;IF pruefstatus>0
THEN infeld(pruefstatus);return(1)ELSE wertedeseingangsbildschirmsmerken;
standardmeldung(meldnrbittewarten,"");kurswahlinitialisieren(aktjgst,gewjgst,
gewhalbjahr,gewschueler,gewschuljahr);kurswahlbasisholen(kurswahlstatus);IF 
kurswahlstatus<>0THEN kurswahlfehlerbehandeln;return(1)ELSE 
protokollvorbereiten;kurszuordnungenanalysieren;zeigedatei(protname,"")FI FI 
.protokollvorbereiten:forget(protname,quiet);prot:=sequentialfile(output,
protname);putline(prot,schulkenndatum(schulname));auszeile:=text(
schulkenndatum(schulort),60);auszeileCAT date;putline(prot,auszeile);line(
prot,2);putline(prot,20*blank+ueberschrift);auszeile:=22*blank;auszeileCAT 
untertitel1;auszeileCAT aktjgst;auszeileCAT " für ";auszeileCAT gewjgst;
auszeileCAT ".";auszeileCAT gewhalbjahr;auszeileCAT blank;auszeileCAT 
aufberschuljahr;putline(prot,auszeile);line(prot,2);auszeile:=erklaerung1;
putline(prot,auszeile);auszeile:=erklaerung2;putline(prot,auszeile);auszeile
:=erklaerung3;putline(prot,auszeile).END PROC 
standderkursbildunganalysierenstarten;PROC kurswahlfehlerbehandeln:
standardmeldung(meldnrkurswahlfehler,"");pause(10)END PROC 
kurswahlfehlerbehandeln;TEXT PROC aufberschuljahr:TEXT VAR aufbersj:=subtext(
gewschuljahr,1,2);aufbersjCAT schraegstrich;aufbersjCAT subtext(gewschuljahr,
3,4);aufbersjEND PROC aufberschuljahr;PROC kurszuordnungenanalysieren:
gueltigekurse:=allekurse;anfangsbuchstabe:="";FOR ischuelerFROM 
ersterschuelerUPTO letzterschuelerREP schuelerwahluntersuchenPER .
schuelerwahluntersuchen:fachzeile:=zeilenbeginn;kurszeile:=zeilenbeginn;
wahldaten:=wahldatenzumindex(ischueler,kennungkurse);schuelername:=
wahldatenzumindex(ischueler,kennungname);IF (schuelernameSUB 1)<>
anfangsbuchstabeTHEN anfangsbuchstabe:=schuelernameSUB 1;standardmeldung(
meldnrbearbeitetwird,anfangsbuchstabe+kennzhell)FI ;fehlerinschuelerwahl:=
FALSE ;belegtebloecke:="";poskurs:=1;FOR ikursFROM 1UPTO maxkurseREP kurs:=
subtext(wahldaten,poskurs+3,poskurs+laengekurs+2);IF kurs<>""THEN 
facheintragen;kurseintragen;kurshinweiseintragenELSE leereintraegeergaenzen
FI ;poskursINCR laengeschuelerkursPER ;fehlerzeilezusammenstellen;IF 
fehlerinschuelerwahlCOR alleschuelerTHEN line(prot);changeall(schuelername,
trenner,", ");putline(prot,schuelername);putline(prot,fachzeile);putline(prot
,kurszeile);putline(prot,fehlerzeile)FI .facheintragen:fachzeileCAT subtext(
kurs,1,2);fachzeileCAT "  :".kurseintragen:IF subtext(kurs,3,6)<>"    "THEN 
kurszeileCAT subtext(kurs,3,6)ELSE kurszeileCAT subtext(wahldaten,poskurs+1,
poskurs+2);kurszeileCAT "  "FI ;kurszeileCAT doppelpunkt.kurshinweiseintragen
:IF subtext(kurs,3,6)="    "THEN kurshinweis(ikurs).eintrag:=fehlenderkurs
ELIF suchpos(gueltigekurse,kurs,laengekursangaben)=0THEN kurshinweis(ikurs).
eintrag:=ungueltigerkursELSE kurshinweis(ikurs).eintrag:="";planbloecke:=
kursdaten(kurs,kennungplanblock);kurshinweis(ikurs).pb1:=subtext(planbloecke,
1,3);kurshinweis(ikurs).pb2:=subtext(planbloecke,4,6);belegtenblockeintragen(
kurshinweis(ikurs).pb1);belegtenblockeintragen(kurshinweis(ikurs).pb2)FI .
fehlerzeilezusammenstellen:fehlerzeile:=zeilenbeginn;FOR ikursFROM 1UPTO 
maxkurseREP IF kurshinweis(ikurs).eintrag=""THEN doppelbelegungpruefen;
fehlerzeileCAT kurshinweis(ikurs).eintrag;ELIF kurshinweis(ikurs).eintrag=
leereintragTHEN fehlerzeileCAT leereintragELSE fehlerzeileCAT kurshinweis(
ikurs).eintrag;fehlerinschuelerwahl:=TRUE FI PER .leereintraegeergaenzen:
fachzeileCAT leereintrag;kurszeileCAT leereintrag;kurshinweis(ikurs).eintrag
:=leereintrag.doppelbelegungpruefen:pruefblock:=kurshinweis(ikurs).pb1;IF 
schnittliegtvorTHEN kurshinweis(ikurs).eintrag:=gleichzeitigerkurs;
fehlerinschuelerwahl:=TRUE ELSE pruefblock:=kurshinweis(ikurs).pb2;IF 
schnittliegtvorTHEN kurshinweis(ikurs).eintrag:=gleichzeitigerkurs;
fehlerinschuelerwahl:=TRUE ELSE kurshinweis(ikurs).eintrag:=leereintragFI FI 
.schnittliegtvor:IF pruefblock=pbleerTHEN FALSE ELSE pos(belegtebloecke,
pruefblock,suchpos(belegtebloecke,pruefblock,laengeplanblock)+1)>0FI .END 
PROC kurszuordnungenanalysieren;PROC belegtenblockeintragen(TEXT VAR 
belegterpb):IF belegterpb<>pbleerTHEN pbnr:=subtext(belegterpb,1,2);pbkennung
:=belegterpbSUB laengeplanblock;belegtebloeckeCAT pbnr;belegtebloeckeCAT 
pbkennung;IF pbkennung=blankTHEN belegtebloeckeCAT pbnr;belegtebloeckeCAT 
pbkennunga;belegtebloeckeCAT pbnr;belegtebloeckeCAT pbkennungb;ELSE 
belegtebloeckeCAT pbnr;belegtebloeckeCAT blankFI ;FI END PROC 
belegtenblockeintragen;PROC standderkursbildunganalysierendrucken(BOOL CONST 
drucken):IF druckenTHEN print(protname)FI ;forget(protname,quiet);enter(2)
END PROC standderkursbildunganalysierendrucken;PROC eingangsbehandlung:
pruefstatus:=0;standardmeldung(meldnrdatenwerdengeprueft,"");aktjgst:=
standardmaskenfeld(fnraktjgst);gewhalbjahr:=standardmaskenfeld(fnrhalbjahr);
gewjgst:=standardmaskenfeld(fnrgewjgst);neuanjgst:=standardmaskenfeld(
fnrneuanjgst);alleschueler:=standardmaskenfeld(fnralleschueler)<>"";IF 
aktuelleshalbjahr=""THEN aktuelleshalbjahr:=schulkenndatum(schulhalbjahr)FI ;
allgemeinefelderpruefen.allgemeinefelderpruefen:standardpruefe(3,fnrgewjgst,
jgst11,jgst13,"",pruefstatus);IF pruefstatus>0THEN LEAVE 
allgemeinefelderpruefenFI ;standardpruefe(3,fnrhalbjahr,hj1,hj2,"",
pruefstatus);IF pruefstatus>0THEN LEAVE allgemeinefelderpruefenFI ;IF aktjgst
<>""THEN IF int(aktuelleshalbjahr)=hj2THEN standardpruefe(3,fnraktjgst,jgst10
,jgst13,"",pruefstatus)ELSE standardpruefe(3,fnraktjgst,jgst11,jgst13,"",
pruefstatus)FI ;IF pruefstatus>0THEN LEAVE allgemeinefelderpruefenFI ;FI ;IF 
neuanjgst<>""THEN standardpruefe(3,fnrneuanjgst,jgst11,jgst13,"",pruefstatus)
;IF pruefstatus>0THEN LEAVE allgemeinefelderpruefenFI ;FI ;IF aktjgst<>""
THEN IF neuanjgst<>""THEN IF int(neuanjgst)<>int(aktjgst)+1THEN 
standardmeldung(meldnrfalschejgstfolge,"");pruefstatus:=fnraktjgst;LEAVE 
allgemeinefelderpruefenFI ;gewschueler:=""ELSE gewschueler:=
nuraktuelleschuelerFI ELIF neuanjgst=""THEN standardmeldung(
meldnrbitteangabeergaenzen,"");pruefstatus:=fnraktjgst;LEAVE 
allgemeinefelderpruefenELSE gewschueler:=nurneuangemeldete;aktjgst:=text(int(
neuanjgst)-1)FI ;IF aktjgst>gewjgstCOR (aktjgst=gewjgstAND aktuelleshalbjahr>
gewhalbjahr)THEN standardmeldung(meldnrfalschebezugsjgst,"");pruefstatus:=
fnrgewjgst;LEAVE allgemeinefelderpruefenFI .END PROC eingangsbehandlung;INT 
PROC suchpos(TEXT CONST quelle,suchtext,INT CONST laenge):INT VAR findpos:=
pos(quelle,suchtext);WHILE findpos>0REP IF findposMOD laenge=1THEN LEAVE 
suchposWITH findposELSE findpos:=pos(quelle,suchtext,findpos+1);FI PER ;
findposEND PROC suchpos;PROC initfelderdeseingangsbildschirms:INT VAR i;FOR i
FROM 1UPTO feldanzmaskeeingangREP feldbs1(i):=""PER END PROC 
initfelderdeseingangsbildschirms;PROC wertedeseingangsbildschirmsmerken:INT 
VAR i;letztecursorfnr:=infeld;FOR iFROM 1UPTO feldanzmaskeeingangREP feldbs1(
i):=standardmaskenfeld(i)PER END PROC wertedeseingangsbildschirmsmerken;PROC 
wertedeseingangsbildschirmsholen:INT VAR i;FOR iFROM 1UPTO 
feldanzmaskeeingangREP standardmaskenfeld(feldbs1(i),i)PER END PROC 
wertedeseingangsbildschirmsholen;END PACKET standderkursbildunganalysieren