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
|