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 anztupelfaecherkartei(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;