From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/schulis/2.2.1/src/1.listen.wiederholer | 160 +++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 app/schulis/2.2.1/src/1.listen.wiederholer (limited to 'app/schulis/2.2.1/src/1.listen.wiederholer') diff --git a/app/schulis/2.2.1/src/1.listen.wiederholer b/app/schulis/2.2.1/src/1.listen.wiederholer new file mode 100644 index 0000000..e0541d2 --- /dev/null +++ b/app/schulis/2.2.1/src/1.listen.wiederholer @@ -0,0 +1,160 @@ +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; + -- cgit v1.2.3