app/schulis/2.2.1/src/1.anschr.nachpruefungsbescheinigung

Raw file
Back to index

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;