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 zaehlerfaecherkartei(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 anztupel1CAND 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;