summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.anschr.nachpruefungsbescheinigung
blob: 27212bf94ce62229f24e453de81039baf3c840da (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
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;