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
147
148
149
150
|
PACKET anschrnachpruefungsbescheinigungDEFINES
nachpruefungsbescheinigungeingang,nachpruefungsbescheinigungende,
nachpruefungsbescheinigungstarten,sonderwertenachpruefungsbescheinigung,
multistopnachpruefbesch:INT VAR aktuellerindex;TEXT VAR schuelerschluessel1,
schuelerschluessel2,schuelerschluessel3,bestandsschluessel1,
bestandsschluessel2,aktuellesschuljahr,vorigesschuljahr;LET #
schluesselversetztmitpruefung="n"#schluesselnachpruefung="n";#
schluesselwiederholtmitpruefung="x",schluesselwiederholer="w";#LET vordruck=
"vordruck nachpruefungsbescheinigung";LET maske=
"ms auswahl schueler o. klasse";LET namefeldnr=2,vornamefeldnr=3,
geburtsdatumfeldnr=4,jgstfeldnr=5,zugtutorfeldnr=6,bildschirmfeldnr=7,
druckerfeldnr=8;LET niltext="",trennsymbol=" ",punkt=".",meldkennz="#",
fehlerhalbjnr=165,fehlermeldnr=56,#wartemeldnr=69,sortiervorgangwartemeldnr=
76,#dieauswahlderjgstistnichtzulaessignr=146,vater=1;LET minjgst=5,jgst11=11,
maxjgst=13;LET swschulhalbjahr=509,swzuname=511,swnamenszusaetze=512,
swvornamen=513,swgeschlecht=514,swgeburtsdatum=515,swzugang=516,
swjgstnachpruefung=517,swnachpruefungsfach=518,swparagraph=519,swbemerkung=
520;LET maxanzahlderfaecher=100,fachschluesselindex=1,fachlangtextindex=2;
ROW maxanzahlderfaecherROW fachlangtextindexTEXT VAR faecherkartei;INT VAR
anzahlderfaecher:=0;BOOL VAR eingang:=TRUE ,erstehalbjahr:=TRUE ,
anschreibenzeigen;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 bildefaecherbestand:LET anzstacktupel=25;
initialisierefaecherkartei;vorbereitung;leseschleife.
initialisierefaecherkartei:INT VAR zaehler1,zaehler2;FOR zaehler1FROM 1UPTO
maxanzahlderfaecherREP FOR zaehler2FROM 1UPTO fachlangtextindexREP
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;PROC nachpruefungsbescheinigungeingang:standardvproc(
maske);IF eingangTHEN setzesonderwerteschulkenndaten;
feststellenoberstehalbjahr;IF erstehalbjahrTHEN berechneschuljahre;
bildefaecherbestand;FI ;aendernderflaggeFI .feststellenoberstehalbjahr:
erstehalbjahr:=int(sonderwert(swschulhalbjahr))=1.aendernderflagge:eingang:=
FALSE .berechneschuljahre:aktuellesschuljahr:=schulkenndatum("Schuljahr");
vorigesschuljahr:=vorigesjahr.vorigesjahr:text(int(subtext(aktuellesschuljahr
,1,2))-1)+text(int(subtext(aktuellesschuljahr,3,4))-1).END PROC
nachpruefungsbescheinigungeingang;PROC nachpruefungsbescheinigungende:eingang
:=TRUE ;enter(2)END PROC nachpruefungsbescheinigungende;BOOL PROC
sonderwertenachpruefungsbescheinigung:initialisieresonderwerte;sucheschueler;
sonderwertfuerdenadressaten;sonderwerteschuelerdaten;sonderwertartdeszugangs;
sonderwertfuerdiejahrgangsstufe;sonderwertparagraph;
sonderwertfuerdasnachpruefungsfach;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(swgeburtsdatum,wert(fnrsugebdatums));#setzesonderwert(
swstrhausnr,wert(fnrsustrnrs));setzesonderwert(swplzort,wert(fnrsuplzorts));
IF volljaehrig(wert(fnrsugebdatums))THEN setzesonderwert(swvollj,vollj);ELSE
setzesonderwert(swvollj,minderj)FI #.sonderwertartdeszugangs:IF #wert(
fnrsuartzugang)="x"#bestandenTHEN setzesonderwert(swzugang,"")ELSE
setzesonderwert(swzugang,"x")FI .bestanden:TEXT VAR nachpruefergebnis:=wert(
fnrhjdnacherg);(length(nachpruefergebnis)>1CAND int(nachpruefergebnis)>=4)
COR (length(nachpruefergebnis)=1CAND int(nachpruefergebnis)<=4).
sonderwertfuerdiejahrgangsstufe:#IF wert(fnrsuartzugang)="x"THEN
setzesonderwert(swjgstnachpruefung,text(int(wert(fnrsujgst))-1))ELSE
setzesonderwert(swjgstnachpruefung,wert(fnrsujgst))FI #setzesonderwert(
swjgstnachpruefung,wert(fnrhjdjgst)).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 .sonderwertfuerdasnachpruefungsfach:TEXT VAR
fachschluessel:="";#TEXT VAR nachpruefungsfach:="";#TEXT VAR langtext:="";
fachschluessel:=wert(fnrhjdnachfach);langtext:=langtextzufachschluessel(
fachschluessel);setzesonderwert(swnachpruefungsfach,langtext).
sonderwertfuerbemerkung:sucheschluesselbemerkung;
suchelangtextzubemerkungundsetzesonderwert.sucheschluesselbemerkung:TEXT VAR
bemerkungsschluessel:="";bemerkungsschluessel:=wert(fnrhjdbemerk).
suchelangtextzubemerkungundsetzesonderwert:#INT VAR bestandsid:=0;systemdbon;
putwert(fnrsysbestand,"c02 bemerkungen");search(dnrsysbestaende,TRUE );IF
dbstatus=okTHEN bestandsid:=intwert(fnrsysbestandsid)FI ;systemdboff;#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
sonderwertenachpruefungsbescheinigung;PROC nachpruefungsbescheinigungstarten:
IF erstehalbjahrTHEN lesemaskenwerte;IF maskenwerteinordnungTHEN IF
beibestandsauswahlauswahlzulaessigTHEN #bildebestand;IF status<>0AND NOT
einzelbearbeitungTHEN meldenichterstellbar;zurueckzumdialogELSE #
startenausfuehren#FI #ELSE meldeunzulaessigeschuelergruppenauswahl;
zurueckzumdialogFI ELSE meldedenfehler;zurueckzumdialogFI ELSE
meldefalscheshalbjahr;zurueckzumdialogFI .meldefalscheshalbjahr:LET
ersteshalbjahr="1";standardmeldung(fehlerhalbjnr,ersteshalbjahr+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).#einzelbearbeitung:schuelerschluessel1<>
niltext.startenausfuehren:initialisieredruckerfueranschreiben;
anschreibenstart(endbestand,vordruck,dbmnachpruefungsbescheinigung,
schuelerschluessel1,schuelerschluessel2+schuelerschluessel3,anschreibenzeigen
,laengedbmnachpruefungsbescheinigung,BOOL PROC
sonderwertenachpruefungsbescheinigung);.END PROC
nachpruefungsbescheinigungstarten;#startenausfuehren:
initialisieredruckerfueranschreiben;dbstatus(ok);parsenooffields(44);
indexnummerbestimmen;uebernimmentsprechendedaten;anschreibenstart(
aktuellerindex,vordruck,anschreibenzeigen,(schuelerschluessel1+
schuelerschluessel2)<>"",BOOL PROC sonderwertenachpruefungsbescheinigung,
BOOL PROC multistopnachpruefbesch).uebernimmentsprechendedaten:putwert(
fnrhjdsj,#aktuellesschuljahr#vorigesschuljahr);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:=#dnrhjd#ixhjdverfamsjhjrufgebELSE aktuellerindex:=
ixhjdversjhjjgstkennFI .END PROC nachpruefungsbescheinigungstarten;BOOL PROC
multistopnachpruefbesch:BOOL VAR b:=wert(fnrhjdsj)=#aktuellesschuljahr#
vorigesschuljahrCAND 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:=bestandsschluessel1=wert(fnrhjdjgst)
CAND (bestandsschluessel2=""COR bestandsschluessel2=wert(fnrhjdkennung)).
ENDPROC multistopnachpruefbesch;END PACKET anschrnachpruefungsbescheinigung;
|