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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
PACKET anschrnachpruefungszulassungDEFINES nachpruefungszulassungeingang,
nachpruefungszulassungende,nachpruefungszulassungstarten,
sonderwertenachpruefungszulassung,multistopnachpruefler:INT VAR
aktuellerindex;TEXT VAR schuelerschluessel1,schuelerschluessel2,
schuelerschluessel3,bestandsschluessel1,bestandsschluessel2,
aktuellesschuljahr;LET schluesselnachpruefung="n";LET vordruck=
"vordruck nachpruefungszulassung";LET maske="ms anschr schueler o. klasse";
LET namefeldnr=2,vornamefeldnr=3,geburtsdatumfeldnr=4,jgstfeldnr=5,
zugtutorfeldnr=6,bildschirmfeldnr=7,druckerfeldnr=8;LET niltext="",
trennsymbol=" ",vollj="v",minderj="m",oder=" oder ",punkt=".",meldkennz="#",
fehlerhalbjnr=167,fehlermeldnr=56,#wartemeldnr=69,#
dieauswahlderjgstistnichtzulaessignr=146,#
anschreibenkannnichterstelltwerdennr=124,#vater=1;LET minjgst=5,jgst11=11,
maxjgst=13;LET swschulhalbjahr=509,swzuname=511,swnamenszusaetze=512,
swvornamen=513,swgeschlecht=514,swvollj=515,swstrhausnr=517,swplzort=518,
swnameerzieher=519,swnamenszusaetzeerzieher=520,swvornameerzieher=521,
swstrhausnrerzieher=522,swplzorterzieher=523,swparagraph=524,
swnachpruefungsfaecher=525,swbemerkung=526;LET maxanzahlderfaecher=100,
karteifachlangtext=2,fachschluesselindex=1,fachlangtextindex=2;ROW
maxanzahlderfaecherROW karteifachlangtextTEXT VAR faecherkartei;INT VAR
anzahlderfaecher:=0;BOOL VAR eingang:=TRUE ,zweitehalbjahr:=TRUE ,
anschreibenzeigen;PROC bildefaecherbestand:LET anzstacktupel=25;
initialisierefaecherkartei;vorbereitung;leseschleife.
initialisierefaecherkartei:INT VAR zaehler1,zaehler2;FOR zaehler1FROM 1UPTO
maxanzahlderfaecherREP FOR zaehler2FROM 1UPTO karteifachlangtextREP
faecherkartei(zaehler1)(zaehler2):=niltextPER PER .vorbereitung:BOOL VAR
wenigergelesen:=FALSE ;INT VAR anztupel;inittupel(dnrfaecher);anztupel:=
anzstacktupel;anzahlderfaecher:=0;multisearchforward(dnrfaecher,anztupel);
evtweniger.leseschleife:WHILE anztupel>0CAND anzahlderfaecher<=
maxanzahlderfaecherREP anzahlderfaecherINCR 1;anztupelDECR 1;multisucc;
faecherkartei(anzahlderfaecher)(1):=wert(dnrfaecher+1);faecherkartei(
anzahlderfaecher)(2):=wert(dnrfaecher+2);IF anztupel=0CAND NOT wenigergelesen
THEN anztupel:=anzstacktupel;multisucc(dnrfaecher,anztupel);evtwenigerFI PER
.evtweniger:IF anztupel<anzstacktupelTHEN wenigergelesen:=TRUE FI .END PROC
bildefaecherbestand;TEXT PROC langtextzufachschluessel(TEXT CONST schluessel)
:INT VAR zaehler:=1;TEXT VAR langtext:="";WHILE zaehler<anzahlderfaecherCAND
schluessel<>faecherkartei(zaehler)(fachschluesselindex)REP zaehlerINCR 1PER ;
IF schluessel=faecherkartei(zaehler)(fachschluesselindex)THEN langtext:=
faecherkartei(zaehler)(fachlangtextindex)FI ;langtextEND PROC
langtextzufachschluessel;PROC nachpruefungszulassungeingang:standardvproc(
maske);IF eingangTHEN setzesonderwerteschulkenndaten;
feststellenobzweitehalbjahr;IF zweitehalbjahrTHEN bildefaecherbestand;FI ;
aendernderflaggeFI .feststellenobzweitehalbjahr:zweitehalbjahr:=int(
sonderwert(swschulhalbjahr))=2.aendernderflagge:eingang:=FALSE .END PROC
nachpruefungszulassungeingang;PROC nachpruefungszulassungende:eingang:=TRUE ;
enter(2)END PROC nachpruefungszulassungende;BOOL PROC
sonderwertenachpruefungszulassung:initialisieresonderwerte;sucheschueler;
sonderwertfuerdenadressaten;sonderwerteschuelerdaten;sonderwerteerzieherdaten
;sonderwertparagraph;sonderwertfuerdienachpruefungsfaecher;
sonderwertfuerbemerkung;TRUE .sucheschueler:inittupel(dnrschueler);
uebernehmeentsprdaten;search(dnrschueler,TRUE ).uebernehmeentsprdaten:putwert
(fnrsufamnames,wert(fnrhjdfamnames));putwert(fnrsurufnames,wert(
fnrhjdrufnames));putwert(fnrsugebdatums,wert(fnrhjdgebdats)).
sonderwertfuerdenadressaten:adressat((wert(fnrsuvornames)SUB 1)+punkt+
trennsymbol+wert(fnrsufamnames)).sonderwerteschuelerdaten:setzesonderwert(
swzuname,wert(fnrsufamnames));setzesonderwert(swnamenszusaetze,wert(
fnrsunamenszusatzs));setzesonderwert(swvornamen,wert(fnrsuvornames));
setzesonderwert(swgeschlecht,wert(fnrsugeschlechts));setzesonderwert(
swstrhausnr,wert(fnrsustrnrs));setzesonderwert(swplzort,wert(fnrsuplzorts));
IF volljaehrig(wert(fnrsugebdatums))THEN setzesonderwert(swvollj,vollj);ELSE
setzesonderwert(swvollj,minderj)FI .sonderwerteerzieherdaten:setzesonderwert(
swnameerzieher,wert(fnrsufamnamee));setzesonderwert(swnamenszusaetzeerzieher,
wert(fnrsunamenszusatze));setzesonderwert(swvornameerzieher,wert(
fnrsuvornamee));sucheerzieheradresse;setzesonderwert(swstrhausnrerzieher,wert
(fnrsustrnrs));setzesonderwert(swplzorterzieher,wert(fnrsuplzorts));.
sucheerzieheradresse:#IF wert(fnradresse)<>""THEN putwert(fnradrkuerzel,wert(
fnradresse));search(dnradressen,TRUE );IF dbstatus=okTHEN
uebernehmeerzieheradresseELSE dbstatus(ok)FI FI #IF wert(fnrsuplzorte)<>""
THEN uebernehmeerzieheradresseFI .uebernehmeerzieheradresse:putwert(
fnrsustrnrs,wert(fnrsustrnre));putwert(fnrsuplzorts,wert(fnrsuplzorte)).
sonderwertparagraph:TEXT CONST paragraphsek1:=
"Nr. 4 der Verordnung über die Abschlüsse und "+
"die Versetzung in Sekundarstufe 1 (AVO - SI)",paragraphsek2:=
"Nr. 11 der Verordnung über den Bildungsgang"+
" und die Abiturprüfung der gymnasialen Oberstufe";IF int(wert(fnrhjdjgst))<
jgst11THEN setzesonderwert(swparagraph,paragraphsek1)ELSE setzesonderwert(
swparagraph,paragraphsek2)FI .sonderwertfuerdienachpruefungsfaecher:TEXT VAR
fachschluessel:="";TEXT VAR nachpruefungsfach:="";TEXT VAR langtext:="";
bestimmungderfaecherindennachpruefungmoeglich;setzesonderwert(
swnachpruefungsfaecher,nachpruefungsfach).
bestimmungderfaecherindennachpruefungmoeglich:fachschluessel:=wert(
fnrhjdnachfach1);langtext:=langtextzufachschluessel(fachschluessel);IF
langtext<>niltextTHEN nachpruefungsfach:=langtext;fachschluessel:=wert(
fnrhjdnachfach2);langtext:=langtextzufachschluessel(fachschluessel);IF
langtext<>niltextTHEN nachpruefungsfach:=nachpruefungsfach+oder+langtext;
fachschluessel:=wert(fnrhjdnachfach3);langtext:=langtextzufachschluessel(
fachschluessel);IF langtext<>niltextTHEN nachpruefungsfach:=nachpruefungsfach
+oder+langtextFI FI FI .sonderwertfuerbemerkung:sucheschluesselbemerkung;
suchelangtextzubemerkungundsetzesonderwert.sucheschluesselbemerkung:TEXT VAR
bemerkungsschluessel:="";bemerkungsschluessel:=wert(fnrhjdbemnach).
suchelangtextzubemerkungundsetzesonderwert:putwert(fnrschlsachgebiet,
"c02 bemerkungen");putwert(fnrschlschluessel,bemerkungsschluessel);search(
dnrschluessel,TRUE );IF dbstatus=okTHEN setzesonderwert(swbemerkung,wert(
fnrschllangtext))ELSE dbstatus(ok);setzesonderwert(swbemerkung,niltext)FI .
END PROC sonderwertenachpruefungszulassung;PROC nachpruefungszulassungstarten
:IF zweitehalbjahrTHEN lesemaskenwerte;IF maskenwerteinordnungTHEN IF
beibestandsauswahlauswahlzulaessigTHEN startenausfuehrenELSE
meldeunzulaessigeschuelergruppenauswahl;zurueckzumdialogFI ELSE
meldedenfehler;zurueckzumdialogFI ELSE meldefalscheshalbjahr;zurueckzumdialog
FI .meldefalscheshalbjahr:LET zweiteshalbjahr="2";standardmeldung(
fehlerhalbjnr,zweiteshalbjahr+meldkennz).lesemaskenwerte:schuelerschluessel1
:=standardmaskenfeld(namefeldnr);schuelerschluessel2:=standardmaskenfeld(
vornamefeldnr);schuelerschluessel3:=standardmaskenfeld(geburtsdatumfeldnr);
bestandsschluessel1:=standardmaskenfeld(jgstfeldnr);bestandsschluessel2:=
standardmaskenfeld(zugtutorfeldnr);anschreibenzeigen:=standardmaskenfeld(
bildschirmfeldnr)<>niltext.maskenwerteinordnung:IF NOT ((standardmaskenfeld(
bildschirmfeldnr)<>niltext)XOR (standardmaskenfeld(druckerfeldnr)<>niltext))
THEN infeld(bildschirmfeldnr);FALSE ELIF ((schuelerschluessel1<>niltextAND
bestandsschluessel1+bestandsschluessel2=niltextAND (schuelerschluessel2<>
niltextXOR (schuelerschluessel2=niltextAND schuelerschluessel3=niltext)))XOR
(schuelerschluessel1+schuelerschluessel2+schuelerschluessel3=niltextAND
bestandsschluessel1<>niltext)XOR (schuelerschluessel1+schuelerschluessel2+
schuelerschluessel3+bestandsschluessel1+bestandsschluessel2=niltext))THEN
TRUE ELSE infeld(namefeldnr);FALSE FI .meldedenfehler:standardmeldung(
fehlermeldnr,niltext).zurueckzumdialog:return(vater).
meldeunzulaessigeschuelergruppenauswahl:standardmeldung(
dieauswahlderjgstistnichtzulaessignr,niltext).
beibestandsauswahlauswahlzulaessig:(bestandsschluessel1=niltext)OR (
bestandsschluessel1<>niltextCAND int(bestandsschluessel1)<=maxjgstCAND int(
bestandsschluessel1)>=minjgst).startenausfuehren:
initialisieredruckerfueranschreiben;dbstatus(ok);parsenooffields(30);
indexnummerbestimmen;uebernimmentsprechendedaten;anschreibenstart(
aktuellerindex,vordruck,anschreibenzeigen,(schuelerschluessel1+
schuelerschluessel2)<>"",BOOL PROC sonderwertenachpruefungszulassung,BOOL
PROC multistopnachpruefler).uebernimmentsprechendedaten:aktuellesschuljahr:=
schulkenndatum("Schuljahr");putwert(fnrhjdsj,aktuellesschuljahr);putintwert(
fnrhjdhj,2);putwert(fnrhjdfamnames,schuelerschluessel1);putwert(
fnrhjdrufnames,schuelerschluessel2);putwert(fnrhjdgebdats,datumskonversion(
schuelerschluessel3));putwert(fnrhjdjgst,bestandsschluessel1);putwert(
fnrhjdkennung,bestandsschluessel2);putwert(fnrhjdversetzung,
schluesselnachpruefung).indexnummerbestimmen:IF schuelerschluessel1<>niltext
THEN aktuellerindex:=#dnrhalbjahresdaten#ixhjdverfamsjhjrufgebELSE
aktuellerindex:=ixhjdversjhjjgstkennFI .END PROC
nachpruefungszulassungstarten;BOOL PROC multistopnachpruefler:BOOL VAR b:=
wert(fnrhjdsj)=aktuellesschuljahrCAND intwert(fnrhjdhj)=2CAND wert(
fnrhjdversetzung)=schluesselnachpruefung;IF bTHEN weitereueberpruefungFI ;b.
weitereueberpruefung:IF aktuellerindex=ixhjdverfamsjhjrufgebTHEN
ueberpruefenamenELSE IF bestandsschluessel1<>""THEN ueberpruefejgstFI FI .
ueberpruefenamen:b:=wert(fnrhjdfamnames)=schuelerschluessel1CAND (
schuelerschluessel2=""COR wert(fnrhjdrufnames)=schuelerschluessel2)CAND (
schuelerschluessel3=""COR wert(fnrhjdgebdats)=datumskonversion(
schuelerschluessel3)).ueberpruefejgst:b:=int(bestandsschluessel1)=intwert(
fnrhjdjgst)CAND (bestandsschluessel2=""COR bestandsschluessel2=wert(
fnrhjdkennung)).ENDPROC multistopnachpruefler;END PACKET
anschrnachpruefungszulassung;
|