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

Raw file
Back to index

PACKET versetzlistenDEFINES verslispezielleteile:LET schluesselwiederholer=
"w";INT CONST mnrbearbeitetwirdjgst:=106,nurimzweitenhj:=193;TEXT VAR 
bearbeitetwirdjgst:="",aktuellesschuljahr:="",endewertjgst:="",startwertjgst
:="";LET niltext="",nildatum="01.01.00",blank=" ",mittestrich="-",null=0,
komma=",",ueberschriftenzeilen=2,spalte1breitesek1=5,spalte3breitesek1=32,
spalte1breitesek2=8,spalte3breitesek2=25,anzspaltentrenner=2,spaltentrenner=
":",ausgkopflaenge=3,ausgfeldlaenge=1,AUSGFELD =ROW ausgfeldlaengeTEXT ,
AUSGKOPF =ROW ausgkopflaengeTEXT ,verslieingangsmaske=
"ms liste versetz nachpr eingang",verslianfpos=2;INT CONST 
spalte2bildbreitesek1:=bildbreite-anzspaltentrenner-spalte1breitesek1-
spalte3breitesek1,spalte2bildbreitesek2:=bildbreite-anzspaltentrenner-
spalte1breitesek2-spalte3breitesek2;INT VAR spalte2druckbreite,
druckzeilenzahl,bildanf,eingabestatus,breite;TEXT VAR versliueberschrift,
jahr1,jahr2,schuelername,schuelerrufname,schuelernamenszus,schuelerjgst,
schuelerzug,schuelerabdat,ortsteil,erstesprache,religionsunt,kuodermu,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 
verslispezielleteile(INT CONST nr):SELECT nrOF CASE 1:verslidialogvorbereiten
CASE 2:verslieingabenrichtigCASE 3:verslilistenvorbereitenCASE 4:
verslidruckvorbereitenCASE 5:versliseitedruckenCASE 6:
verslibildschirmvorbereitenCASE 7:versliseitezeigenENDSELECT .END PROC 
verslispezielleteile;PROC verslidialogvorbereiten:versliueberschrift:=text(
vergleichsknoten);setzeanfangswerte(verslieingangsmaske,verslianfpos);
reinitparsingEND PROC verslidialogvorbereiten;PROC verslieingabenrichtig: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<>0THEN infeld(eingabestatus);
setzeeingabetest(FALSE )ELSE waspruefenFI .waspruefen:sek1:=FALSE ;sek2:=
FALSE ;jgst:="";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 verslieingabenrichtig;PROC 
verslilistenvorbereiten:BOOL VAR b;LET schluessel="Schuljahr";
aktuellesschuljahrermitteln;startwertjgstbestimmen;inittupel(
dnrhalbjahresdaten);initobli(16);setzeidentiwert("");startwertesetzen;
objektlistestarten(ixhjdversjhjjgstkenn,"",fnrhjdjgst,TRUE ,b);
setzebestandende(NOT multistopniverCOR b).aktuellesschuljahrermitteln:
aktuellesschuljahr:=schulkenndatum(schluessel);jahr1:=subtext(
aktuellesschuljahr,1,2);jahr2:=subtext(aktuellesschuljahr,3,4).
startwertjgstbestimmen:endewertjgst:=endeberechnung;startwertjgst:=
anfangsberechnung;.anfangsberechnung:IF sek1THEN "05"ELIF sek2THEN "11"ELSE 
jgstFI .endeberechnung:IF sek1THEN "11"ELIF sek2THEN "14"ELSE text(int(jgst)+
1)FI .startwertesetzen:putwert(fnrhjdversetzung,schluesselwiederholer);
putwert(fnrhjdjgst,startwertjgst);putwert(fnrhjdsj,aktuellesschuljahr);
putintwert(fnrhjdhj,2).END PROC verslilistenvorbereiten;BOOL PROC 
multistopniver:BOOL VAR b;b:=wiederholerundrichtigesdatumCAND int(wert(
fnrhjdjgst))>=int(startwertjgst)CAND int(wert(fnrhjdjgst))<#=#int(
endewertjgst);b.wiederholerundrichtigesdatum:wert(fnrhjdversetzung)=
schluesselwiederholerCAND wert(fnrhjdsj)=aktuellesschuljahrCAND wert(fnrhjdhj
)="2".ENDPROC multistopniver;BOOL PROC multistopniversim:BOOL VAR b:=
multistopniver;setzebestandende(NOT b);bENDPROC multistopniversim;PROC 
verslibildschirmvorbereiten:LET fnrausganf=2;standardkopfmaskeaktualisieren(
versliueberschrift);breite:=bildbreite;initspalten;setzespaltentrenner(
spaltentrenner);IF elementsek1THEN setzespaltenbreitensek1(
spalte2bildbreitesek1);initausgabekopfsek1(bildstrich)ELSE 
setzespaltenbreitensek2(spalte2bildbreitesek2);initausgabekopfsek2(bildstrich
)FI ;bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
ausgkopf(i)IN bildanf;bildanfINCR 1END REPEAT ;klasse:=niltext;
setzebildanfangsposition(bildanf).END PROC verslibildschirmvorbereiten;PROC 
versliseitezeigen:setzescanstartwert(startwertjgst);setzescanendewert(
endewertjgstpluseinsbeigleichheit);blaettern(PROC (INT CONST )schuelerzeigen,
aktion,TRUE ,TRUE ,BOOL PROC multistopniver);setzescanstartwert("");
setzescanendewert("�").endewertjgstpluseinsbeigleichheit:IF startwertjgst=
endewertjgstTHEN text(int(endewertjgst)+1)ELSE endewertjgstFI .END PROC 
versliseitezeigen;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 verslidruckvorbereiten:LET uebteil11=
"Liste der nicht versetzten 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);IF elementsek1THEN setzespaltenbreitensek1(spalte2druckbreite
);initausgabekopfsek1(druckstrich)ELSE setzespaltenbreitensek2(
spalte2druckbreite);initausgabekopfsek2(druckstrich)FI ;holemeldungen;
setzewerte;lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )
scanforward,BOOL PROC multistopniversim).holemeldungen:meldungstext(
mnrbearbeitetwirdjgst,bearbeitetwirdjgst).setzewerte:inittupel(
dnrhalbjahresdaten);putwert(fnrhjdversetzung,schluesselwiederholer);putwert(
fnrhjdjgst,startwertjgst);putwert(fnrhjdsj,aktuellesschuljahr);putintwert(
fnrhjdhj,2).ueberschriftvorbereitendruck:ueberschrift1:=uebteil11;IF sek1
THEN 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;IF elementsek1
THEN spalte2druckbreite:=spalte2druckbreite-spalte1breitesek1-
spalte3breitesek1ELSE spalte2druckbreite:=spalte2druckbreite-
spalte1breitesek2-spalte3breitesek2FI ;druckzeilenzahl:=drucklaenge(
ueberschriftenzeilen)-ausgkopflaenge.END PROC verslidruckvorbereiten;PROC 
versliseitedrucken:versliueberschriftdrucken;seitedrucken(PROC (INT VAR )
schuelerdrucken,druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopniversim);
seitenwechsel.END PROC versliseitedrucken;PROC versliueberschriftdrucken:
druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
druckzeileschreiben(ausgkopf(i))END REPEAT .END PROC 
versliueberschriftdrucken;PROC schuelerdrucken(INT VAR zeilenzaehler):LET 
markiert="#";schuelerholen;IF zeilenzaehler=nullTHEN klassegeaendert:=TRUE 
FI ;ggflmeldungjgst;schueleraufbereiten;zeilenzaehlerINCR ausgfeldlaenge;
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 
ausgfeldlaengeREPEAT druckzeileschreiben(ausgfeld(i))END REPEAT .END PROC 
schuelerindruckdatei;PROC setzespaltenbreitensek1(INT CONST spalte2breitesek1
):setzespaltenbreite(spalte1breitesek1);setzespaltenbreite(spalte2breitesek1)
;setzespaltenbreite(spalte3breitesek1);END PROC setzespaltenbreitensek1;PROC 
setzespaltenbreitensek2(INT CONST spalte2breitesek2):setzespaltenbreite(
spalte1breitesek2);setzespaltenbreite(spalte2breitesek2);setzespaltenbreite(
spalte3breitesek2);END PROC setzespaltenbreitensek2;PROC initausgabekopfsek1(
TEXT CONST strich):LET jgst="Jgst.",zug="  Zug",name="Name",rest1=
"Orts-:Rel.: L : KU :  Klasse",rest2="teil :unt.: F : MU :Wunsch:neu";
spaltenweise(jgst);spaltenweise(blank);spaltenweise(rest1);ausgkopf(1):=zeile
;spaltenweise(zug);spaltenweise(name);spaltenweise(rest2);ausgkopf(2):=zeile;
ausgkopf(3):=strich;END PROC initausgabekopfsek1;PROC initausgabekopfsek2(
TEXT CONST strich):LET jgst="Jgst.",tutor="   Tutor",name="Name",rest1=
"Abmeldung";spaltenweise(jgst);spaltenweise(blank);spaltenweise(blank);
ausgkopf(1):=zeile;spaltenweise(tutor);spaltenweise(name);spaltenweise(rest1)
;ausgkopf(2):=zeile;ausgkopf(3):=strich;END PROC initausgabekopfsek2;PROC 
schuelerholen:sucheschueler;schuelername:=wert(fnrsufamnames);schuelerrufname
:=wert(fnrsurufnames);schuelernamenszus:=wert(fnrsunamenszusatzs);
schuelerjgst:=wert(fnrhjdjgst);schuelerzug:=wert(fnrhjdkennung);schuelerabdat
:=wert(fnrsuabgdats);IF elementsek1THEN ortsteil:=wert(fnrsuortsteils);
erstesprache:=wert(fnrdd1fremdfach);religionsunt:=wert(fnrddreliunter);
kuodermu:=wert(fnrddkunstmusik)FI ;neueklasse:=schuelerjgst+schuelerzug;
klassegeaendert:=klasse<>neueklasse;klasse:=neueklasse.sucheschueler:
uebernehmewerte;search(dnrschueler,TRUE );IF dbstatus=okTHEN readtid(
dnrdiffdaten,zugriff(fnrsutiddiffdaten))ELSE inittupel(dnrdiffdaten)FI .
uebernehmewerte:putwert(fnrsufamnames,wert(fnrhjdfamnames));putwert(
fnrsurufnames,wert(fnrhjdrufnames));putwert(fnrsugebdatums,wert(fnrhjdgebdats
)).END PROC schuelerholen;PROC schueleraufbereiten:LET abgemsek1="abgem.",
abgemsek2="abgemeldet";schreibeklassenamerest.schreibeklassenamerest:
spaltenweise(aufbschuelerklasse);spaltenweise(aufbschuelername);spaltenweise(
aufbrest);ausgfeld(1):=zeile.aufbschuelerklasse:IF klassegeaendertTHEN 
schuelerjgst+blank+schuelerzugELSE blankFI .aufbschuelername:IF 
schuelernamenszus=niltextTHEN schuelername+komma+blank+schuelerrufnameELSE 
schuelernamenszus+blank+schuelername+komma+blank+schuelerrufnameFI .aufbrest:
IF elementsek1THEN ganzerrestsek1ELSE abmeldungsek2FI .ganzerrestsek1:blank+
text(ortsteil,3)+blank+spaltentrenner+blank+text(religionsunt,2)+blank+
spaltentrenner+blank+text(erstesprache,1)+blank+spaltentrenner+blank+text(
kuodermu,2)+blank+spaltentrenner+abmeldungsek1.abmeldungsek1:IF (
schuelerabdat=niltext)OR (schuelerabdat=nildatum)THEN text(blank,6)+
spaltentrennerELSE abgemsek1+spaltentrenner+blank+mittestrichFI .
abmeldungsek2:IF (schuelerabdat=niltext)OR (schuelerabdat=nildatum)THEN blank
ELSE abgemsek2FI .END PROC schueleraufbereiten;BOOL PROC elementsek1:sek1COR 
int(startwertjgst)<11ENDPROC elementsek1;END PACKET versetzlisten;