app/schulis/2.2.1/src/1.listen.nachpruefung

Raw file
Back to index

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;