summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.stand der kursbildung analysieren
blob: f1999784acfba1079ad72a194cafb1153aefbf20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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