PACKET nachprueflistenDEFINES nachprlispezielleteile:LET mnrbearbeitetwirdjgst=106,nurimzweitenhj=193,schluesselnachpruefler="n";TEXT VAR aktuellesschuljahr,endewertjgst,startwertjgst,bearbeitetwirdjgst;LET niltext="",blank=" ",mittestrich="-",null=0,ueberschriftenzeilen=2, spalte1breite=7,spalte3breite=40,anzspaltentrenner=2,spaltentrenner=":", ausgkopflaenge=3,ausgfeldlaenge=4,AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT ,nachprlieingangsmaske= "ms liste versetz nachpr eingang",nachprlianfpos=2;INT CONST spalte2bildbreite:=bildbreite-anzspaltentrenner-spalte1breite-spalte3breite; INT VAR spalte2druckbreite,druckzeilenzahl,bildanf,eingabestatus,breite, ausgfeldlaengereal;TEXT VAR nachprliueberschrift,schuljahr,jahr1,jahr2, schuelername,schuelerrufname,schuelernamenszus,schuelerjgst,schuelerzug,fach1 ,fach2,fach3,paraphe1,paraphe2,paraphe3,jgst,neuejgst,klasse,neueklasse;TEXT VAR druckstrich;TEXT CONST bildstrich:=bildbreite*mittestrich;AUSGFELD VAR ausgfeld;AUSGKOPF VAR ausgkopf;BOOL VAR sek1,sek2,ersteraufbildschirm, klassegeaendert:=FALSE ;PROC nachprlispezielleteile(INT CONST nr):SELECT nr OF CASE 1:nachprlidialogvorbereitenCASE 2:nachprlieingabenrichtigCASE 3: nachprlilistenvorbereitenCASE 4:nachprlidruckvorbereitenCASE 5: nachprliseitedruckenCASE 6:nachprlibildschirmvorbereitenCASE 7: nachprliseitezeigenENDSELECT .END PROC nachprlispezielleteile;PROC nachprlidialogvorbereiten:nachprliueberschrift:=text(vergleichsknoten); setzeanfangswerte(nachprlieingangsmaske,nachprlianfpos)END PROC nachprlidialogvorbereiten;PROC nachprlieingabenrichtig:LET fnrsek1=2,fnrsek2= 3,fnrjgst=4,fnrausgdrucker=5,fnrausgbild=6,auswahlnichtsinnvoll=56;IF int( schulkenndatum("Schulhalbjahr"))=1THEN standardmeldung(nurimzweitenhj,"2.#"); setzeeingabetest(FALSE )ELSE wohinpruefenFI .wohinpruefen:standardpruefe(5, fnrausgdrucker,fnrausgbild,null,niltext,eingabestatus);IF eingabestatus<>0 THEN infeld(eingabestatus);setzeeingabetest(FALSE )ELSE waspruefenFI . waspruefen:sek1:=FALSE ;sek2:=FALSE ;fach1:="";fach2:="";fach3:=""; reinitparsing;IF standardmaskenfeld(fnrjgst)=niltextTHEN standardpruefe(5, fnrsek1,fnrsek2,null,niltext,eingabestatus);IF eingabestatus<>0THEN infeld( eingabestatus);setzeeingabetest(FALSE )ELSE sek1:=standardmaskenfeld(fnrsek2) =niltext;sek2:=NOT sek1;setzeausgabedrucker(standardmaskenfeld(fnrausgbild)= niltext);setzeeingabetest(TRUE )FI ;ELSE IF (standardmaskenfeld(fnrsek1)= niltext)AND (standardmaskenfeld(fnrsek2)=niltext)THEN standardpruefe(3, fnrjgst,5,13,niltext,eingabestatus);IF eingabestatus<>0THEN infeld( eingabestatus);setzeeingabetest(FALSE )ELSE jgst:=zweistellig( standardmaskenfeld(fnrjgst));setzeausgabedrucker(standardmaskenfeld( fnrausgbild)=niltext);setzeeingabetest(TRUE )FI ;ELSE meldefehler;infeld( fnrsek1);setzeeingabetest(FALSE )FI ;FI .meldefehler:standardmeldung( auswahlnichtsinnvoll,niltext).END PROC nachprlieingabenrichtig;PROC nachprlilistenvorbereiten:BOOL VAR b;LET schluessel="Schuljahr"; startwertjgstbestimmen;aktuellesschuljahrermitteln;inittupel( dnrhalbjahresdaten);initobli(4);setzeidentiwert("");startwertesetzen; objektlistestarten(ixhjdversjhjjgstkenn,"",fnrhjdjgst,TRUE ,b); setzebestandende(NOT multistopnachprueflerCOR b).startwertjgstbestimmen: aktuellesschuljahr:=schulkenndatum("Schuljahr");endewertjgst:=endeberechnung; startwertjgst:=anfangsberechnung;.anfangsberechnung:IF sek1THEN "05"ELIF sek2 THEN "11"ELSE jgstFI .endeberechnung:IF sek1THEN "11"ELIF sek2THEN "14"ELSE text(int(jgst)+1)FI .startwertesetzen:putwert(fnrhjdversetzung, schluesselnachpruefler);putwert(fnrhjdjgst,startwertjgst);putwert(fnrhjdsj, aktuellesschuljahr);putintwert(fnrhjdhj,2).aktuellesschuljahrermitteln: schuljahr:=schulkenndatum(schluessel);jahr1:=subtext(schuljahr,1,2);jahr2:= subtext(schuljahr,3,4).END PROC nachprlilistenvorbereiten;PROC nachprlibildschirmvorbereiten:LET fnrausganf=2;standardkopfmaskeaktualisieren (nachprliueberschrift);breite:=bildbreite;initspalten;setzespaltentrenner( spaltentrenner);setzespaltenbreiten(spalte2bildbreite);initausgabekopf( bildstrich);bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaenge REPEAT ausgkopf(i)IN bildanf;bildanfINCR 1END REPEAT ;klasse:=niltext; setzebildanfangsposition(bildanf).END PROC nachprlibildschirmvorbereiten; PROC nachprliseitezeigen:setzescanstartwert(startwertjgst);setzescanendewert( endewertjgst);blaettern(PROC (INT CONST )schuelerzeigen,aktion,TRUE ,TRUE , BOOL PROC multistopnachpruefler);setzescanstartwert("");setzescanendewert("�" ).#endewertjgstpluseinsbeigleichheit:IF startwertjgst=endewertjgstTHEN text( int(endewertjgst)+1)ELSE endewertjgstFI .#END PROC nachprliseitezeigen;PROC schuelerzeigen(INT CONST x):schuelerholen;IF ersteraufbildschirmTHEN klassegeaendert:=TRUE ;ersteraufbildschirm:=FALSE FI ;schueleraufbereiten; schueleraufbildschirm.END PROC schuelerzeigen;PROC schueleraufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT ausgfeld(i)IN ausgabepos; erhoeheausgabeposumeinsEND REPEAT .END PROC schueleraufbildschirm;PROC nachprlidruckvorbereiten:LET uebteil11= "Liste der zur Nachprüfung berechtigten Schüler, ",uebteil12="Sek.I", uebteil13="Sek.II",uebteil14="Jgst. ",uebteil2="Schuljahr: ";TEXT VAR ueberschrift1,ueberschrift2;ueberschriftvorbereitendruck;jgst:=niltext;klasse :=niltext;druckvorbereiten;variablenfuerdrucksetzen;initdruckkopf( ueberschrift1,ueberschrift2);breite:=druckbreite;initspalten; setzespaltentrenner(spaltentrenner);setzespaltenbreiten(spalte2druckbreite); initausgabekopf(druckstrich);holemeldungen;setzewerte;lesenvorbereitendruck( PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopnachprueflersim).holemeldungen:meldungstext(mnrbearbeitetwirdjgst, bearbeitetwirdjgst).setzewerte:inittupel(dnrhalbjahresdaten);putwert( fnrhjdversetzung,schluesselnachpruefler);putwert(fnrhjdjgst,startwertjgst); putwert(fnrhjdsj,aktuellesschuljahr);putintwert(fnrhjdhj,2). ueberschriftvorbereitendruck:ueberschrift1:=uebteil11;IF sek1THEN ueberschrift1:=ueberschrift1+uebteil12ELSE IF sek2THEN ueberschrift1:= ueberschrift1+uebteil13ELSE ueberschrift1:=ueberschrift1+uebteil14+jgstFI ; FI ;ueberschrift2:=uebteil2+aufbereitetesschuljahr.aufbereitetesschuljahr: "19"+jahr1+"/"+jahr2.variablenfuerdrucksetzen:druckstrich:=druckbreite* mittestrich;spalte2druckbreite:=druckbreite-anzspaltentrenner-spalte1breite- spalte3breite;druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)- ausgkopflaenge.END PROC nachprlidruckvorbereiten;PROC nachprliseitedrucken: nachprliueberschriftdrucken;seitedrucken(PROC (INT VAR )schuelerdrucken, druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopnachprueflersim); seitenwechsel.END PROC nachprliseitedrucken;PROC nachprliueberschriftdrucken: druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT druckzeileschreiben(ausgkopf(i))END REPEAT .END PROC nachprliueberschriftdrucken;PROC schuelerdrucken(INT VAR zeilenzaehler):LET markiert="#";schuelerholen;IF zeilenzaehler=nullTHEN klassegeaendert:=TRUE FI ;ggflmeldungjgst;schueleraufbereiten;zeilenzaehlerINCR ausgfeldlaengereal; schuelerindruckdatei.ggflmeldungjgst:IF jgstgeaendertTHEN zwischenmeldungFI . jgstgeaendert:neuejgst:=schuelerjgst;jgst<>neuejgst.zwischenmeldung: standardmeldung(bearbeitetwirdjgst,neuejgst+markiert);jgst:=neuejgst;END PROC schuelerdrucken;PROC schuelerindruckdatei:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengerealREPEAT druckzeileschreiben(ausgfeld(i))END REPEAT .END PROC schuelerindruckdatei;PROC setzespaltenbreiten(INT CONST spalte2breite): setzespaltenbreite(spalte1breite);setzespaltenbreite(spalte2breite); setzespaltenbreite(spalte3breite);END PROC setzespaltenbreiten;PROC initausgabekopf(TEXT CONST strich):LET jgst="Jgst.",zugtut="Zug/Tut",name= "Familienname",rufname=" Rufname",rest1= "Meldg. :Prüfer :Datum : : ",rest2= " :Fach:Fach:Vors:Beis: Zeit:Raum:Note";spaltenweise(jgst);spaltenweise( name);spaltenweise(rest1);ausgkopf(1):=zeile;spaltenweise(zugtut); spaltenweise(rufname);spaltenweise(rest2);ausgkopf(2):=zeile;ausgkopf(3):= strich;END PROC initausgabekopf;PROC schuelerholen:schuelername:=wert( fnrhjdfamnames);schuelerrufname:=wert(fnrhjdrufnames);#schuelernamenszus:= wert(fnrhjdzusatz);#schuelernamenszus:="";schuelerjgst:=wert(fnrhjdjgst); schuelerzug:=wert(fnrhjdkennung);fach1:=wert(fnrhjdnachfach1);fach2:=wert( fnrhjdnachfach2);fach3:=wert(fnrhjdnachfach3);fachlehrersuchen(fach1,paraphe1 );fachlehrersuchen(fach2,paraphe2);fachlehrersuchen(fach3,paraphe3); neueklasse:=schuelerjgst+schuelerzug;klassegeaendert:=klasse<>neueklasse; klasse:=neueklasse.END PROC schuelerholen;PROC fachlehrersuchen(TEXT CONST fach,TEXT VAR paraphe):putwert(fnrlvhj,wert(fnrhjdhj));putwert(fnrlvsj,wert( fnrhjdsj));putwert(fnrlvjgst,wert(fnrhjdjgst));#putwert(fnrlvzug,wert( fnrhjdkennung));#putwert(fnrlvfachkennung,fach+wert(fnrhjdkennung));search( dnrlehrveranstaltungen,TRUE );IF dbstatus=okTHEN paraphe:=wert(fnrlvparaphe) ELSE paraphe:=""FI END PROC fachlehrersuchen;PROC schueleraufbereiten:LET zwizeile=" : : : : : : :";INT VAR posausgfeld; posausgfeld:=null;schreibeklassenamefach1;schreiberufnamefach2;IF ausgabedruckerTHEN schreibeggffach3ELSE schreibefach3FI ; schreibezwischenzeile.schreibeklassenamefach1:spaltenweise(aufbschuelerklasse );spaltenweise(aufbschuelername);spaltenweise(aufbfach1);posausgfeldINCR 1; ausgfeld(posausgfeld):=zeile;posausgfeldINCR 1.schreiberufnamefach2: spaltenweise(blank);spaltenweise(aufbrufname);spaltenweise(aufbfach2); ausgfeld(posausgfeld):=zeile;posausgfeldINCR 1.schreibeggffach3:IF fach3<> niltextTHEN schreibefach3FI ;ausgfeldlaengereal:=posausgfeld.schreibefach3: spaltenweise(blank);spaltenweise(blank);spaltenweise(aufbfach3);ausgfeld( posausgfeld):=zeile;posausgfeldINCR 1.schreibezwischenzeile:spaltenweise( blank);spaltenweise(blank);spaltenweise(zwizeile);ausgfeld(posausgfeld):= zeile.aufbschuelerklasse:IF klassegeaendertTHEN schuelerjgst+blank+ schuelerzugELSE blankFI .aufbschuelername:IF schuelernamenszus=niltextTHEN schuelernameELSE schuelernamenszus+blank+schuelernameFI .aufbfach1:aufbfach( fach1,paraphe1).aufbrufname:2*blank+schuelerrufname.aufbfach2:aufbfach(fach2, paraphe2).aufbfach3:aufbfach(fach3,paraphe3).END PROC schueleraufbereiten; TEXT PROC aufbfach(TEXT CONST fach,paraphe):LET vorfach="__: ",nachfach= ":____:____:_______:____:____";vorfach+fach+(3-length(fach))*blank+ spaltentrenner+paraphe+(4-length(paraphe))*blank+nachfach.END PROC aufbfach; BOOL PROC elementsek1:sek1COR int(startwertjgst)<11ENDPROC elementsek1;BOOL PROC multistopnachpruefler:BOOL VAR b;b:=nachprueflerundrichtigesdatumCAND int(wert(fnrhjdjgst))>=int(startwertjgst)CAND int(wert(fnrhjdjgst))<#=#int( endewertjgst);b.nachprueflerundrichtigesdatum:wert(fnrhjdversetzung)= schluesselnachprueflerCAND wert(fnrhjdsj)=aktuellesschuljahrCAND wert( fnrhjdhj)="2".ENDPROC multistopnachpruefler;BOOL PROC multistopnachprueflersim:BOOL VAR b:=multistopnachpruefler;setzebestandende( NOT b);bENDPROC multistopnachprueflersim;END PACKET nachprueflisten;