app/schulis/2.2.1/src/3.listen.wochenstunden

Raw file
Back to index

PACKET wochenstundenlisteDEFINES wochenstdlispezielleteile:LET 
wochenstdeingangsmaske="ms liste lehrerparaphen eingang",
anzahlderobjekteprobildschirm=17,ausgfeldlaenge=1,spalte1breite=5,
spalte2breite=30,spalte3breite=4,spalte4breite=31,spaltentrenner=" ",
wochenstdanfpos=2,ueberschriftenzeilen=2,niltext="",blank=" ",komma=",",null=
0,ausgkopflaenge=2,mittelstrich="-",mnrauswahlnichtsinnvoll=56,
mnrbearbeitetwerden=352;TEXT CONST blanknull:=" 0/",unterstreichung:=
bildbreite*mittelstrich,textueberschrift:=("Lehrer"+31*blank+
"Soll  Pfl.  Ermäßigung/Grund");TEXT VAR wochenstdueberschrift:=
"Liste der Wochenstunden und Ermäßigungen",schraegstrich:="/",paraphe,
lehrername,rufname,namenszusatz,amtsbez,geschlecht,sollstdn,pflichtstdn,
ermaessigung1,ermaessigung2,ermaessigung3,ermaessigung4,ermgrund1,ermgrund2,
ermgrund3,ermgrund4,lehrernameaufbereitet,bearbeitetwerden,anfbuchstabe,
neueranfbuchstabe:="",auswahlnichtsinnvoll,teiltextmeldung:=
"die Paraphe mit dem Anfangsbuchstaben:";INT VAR aktuelleindexnr,
eingabestatus,lesestart,bildanfang,druckzeilenzahl;INT CONST indexlehrername
:=ixlfamruf;BOOL VAR sortierungnachparaphen;LET AUSGFELD =ROW ausgfeldlaenge
TEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT ,AUSGKOPFDRUCK =ROW ausgkopflaenge
TEXT ;AUSGFELD VAR ausgfeld;AUSGKOPF VAR ausgkopf;AUSGKOPFDRUCK VAR 
ausgkopfdruck;BOOL PROC multistop:TRUE END PROC multistop;PROC 
wochenstdlispezielleteile(INT CONST nr):SELECT nrOF CASE 1:
wochenstddialogvorbereitenCASE 2:wochenstdeingabenrichtigCASE 3:
wochenstdlistenvorbereitenCASE 4:wochenstddruckvorbereitenCASE 5:
wochenstdseitedruckenCASE 6:wochenstdbildschirmvorbereitenCASE 7:
wochenstdseitezeigenENDSELECT .END PROC wochenstdlispezielleteile;PROC 
wochenstddialogvorbereiten:wochenstdueberschrift:=text(vergleichsknoten);
setzeanfangswerte(wochenstdeingangsmaske,wochenstdanfpos)END PROC 
wochenstddialogvorbereiten;PROC wochenstdeingabenrichtig:LET fnrsortparaphen=
2,fnrsortlehrernamen=3,fnrausgdrucker=4,fnrausgbild=5;standardpruefe(5,
fnrausgdrucker,fnrausgbild,null,niltext,eingabestatus);IF eingabestatus=0
THEN standardpruefe(5,fnrsortparaphen,fnrsortlehrernamen,null,niltext,
eingabestatus);IF eingabestatus=0THEN sortierartmerken;setzeeingabetest(TRUE 
);setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=niltext);ELSE 
meldefehler;setzeeingabetest(FALSE )FI ;ELSE meldefehler;setzeeingabetest(
FALSE )FI .sortierartmerken:sortierungnachparaphen:=standardmaskenfeld(
fnrsortparaphen)<>niltext;.meldefehler:standardmeldung(
mnrauswahlnichtsinnvoll,niltext).END PROC wochenstdeingabenrichtig;PROC 
wochenstdlistenvorbereiten:BOOL VAR b;initspalten;setzespaltentrenner(
spaltentrenner);IF sortierungnachparaphenTHEN aktuelleindexnr:=dnrlehrer;
lesestart:=fnrlparapheELSE aktuelleindexnr:=indexlehrername;lesestart:=0;FI ;
inittupel(dnrlehrer);setzeidentiwert("");initobli(
anzahlderobjekteprobildschirm);parsenooffields(16);objektlistestarten(
aktuelleindexnr,"",lesestart,TRUE ,b);setzebestandende(b);END PROC 
wochenstdlistenvorbereiten;PROC wochenstdbildschirmvorbereiten:LET fnrausganf
=2;standardkopfmaskeaktualisieren(wochenstdueberschrift);bildanfang:=
fnrausganf;setzebildanfangsposition(bildanfang);INT VAR i;setzespaltenbreite(
bildbreite);spaltenweise(textueberschrift);ausgfeld(1):=zeile;ausgfeld(1)IN 
ausgabepos;erhoeheausgabeposumeins;spaltenweise(unterstreichung);ausgfeld(1)
:=zeile;ausgfeld(1)IN ausgabepos;erhoeheausgabeposumeins;
setzebildanfangsposition(4);initspalten;setzespaltenbreite(spalte1breite);
setzespaltenbreite(spalte2breite);setzespaltenbreite(spalte3breite);
setzespaltenbreite(spalte3breite);setzespaltenbreite(spalte4breite);END PROC 
wochenstdbildschirmvorbereiten;PROC wochenstdseitezeigen:blaettern(PROC (INT 
CONST )stundendatenzeigen,aktion,TRUE ,FALSE ,BOOL PROC multistop)END PROC 
wochenstdseitezeigen;PROC stundendatenzeigen(INT CONST x):stundendatenholen;
stundendatenaufbereitenbild;stundendatenaufbildschirm.END PROC 
stundendatenzeigen;PROC stundendatenaufbereitenbild:TEXT VAR ermaessigungen:=
niltext;spaltenweise(paraphe);spaltenweise(lehrernameaufbereitet);
spaltenweise(2*blank+sollstdn);spaltenweise(2*blank+pflichtstdn);IF 
ermaessigung1=blanknullTHEN ermaessigung1:=3*blankELSE ermaessigungen:=2*
blank+ermaessigung1+ermgrund1FI ;IF ermaessigung2=blanknullTHEN ermaessigung2
:=3*blankELSE ermaessigungenCAT 3*blank+ermaessigung2+ermgrund2FI ;IF 
ermaessigung3=blanknullTHEN ermaessigung3:=3*blankELSE ermaessigungenCAT 3*
blank+ermaessigung3+ermgrund3FI ;IF ermaessigung4=blanknullTHEN ermaessigung4
:=blankELSE ermaessigungenCAT 3*blank+ermaessigung4+ermgrund4FI ;spaltenweise
(ermaessigungen);END PROC stundendatenaufbereitenbild;PROC 
stundendatenaufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP 
ausgfeld(i):=zeile;ausgfeld(i)IN ausgabepos;erhoeheausgabeposumeins;PER ;END 
PROC stundendatenaufbildschirm;PROC wochenstddruckvorbereiten:
setzebestandende(FALSE );anfbuchstabe:=" ";druckvorbereiten;
variablenfuerdrucksetzen;initdruckkopf(zentriert(wochenstdueberschrift,
druckbreite),zentriert(length(wochenstdueberschrift)*"-",druckbreite));
initspalten;setzespaltenbreite(spalte1breite);setzespaltenbreite(
spalte2breite);setzespaltenbreite(spalte3breite);setzespaltenbreite(
spalte3breite);setzespaltenbreite(spalte4breite);holemeldung;inittupel(
dnrlehrer);initausgabekopfdruck;lesenvorbereitendruck(PROC (INT CONST ,BOOL 
PROC ,INT VAR )scanforward,BOOL PROC multistop);.holemeldung:meldungstext(
mnrbearbeitetwerden,bearbeitetwerden).variablenfuerdrucksetzen:
druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.END PROC 
wochenstddruckvorbereiten;PROC initausgabekopfdruck:ausgkopfdruck(1):=
textueberschrift;ausgkopfdruck(2):=unterstreichungEND PROC 
initausgabekopfdruck;PROC wochenstdseitedrucken:wochenstdueberschriftdrucken;
seitedrucken(PROC (INT VAR )wochenstdndrucken,druckzeilenzahl,ausgfeldlaenge,
BOOL PROC multistop);seitenwechsel.END PROC wochenstdseitedrucken;PROC 
wochenstdueberschriftdrucken:INT VAR i;druckkopfschreiben;FOR iFROM 1UPTO 
ausgkopflaengeREP druckzeileschreiben(ausgkopfdruck(i))PER END PROC 
wochenstdueberschriftdrucken;PROC wochenstdndrucken(INT VAR zeilenzaehler):
LET markiert="#";stundendatenholen;ggflmeldunganfbuchstabe;
lehrerstundendatenaufbereitendruck;zeilenzaehlerINCR ausgfeldlaenge;
lehrerstundendatenindruckdatei.ggflmeldunganfbuchstabe:IF 
anfbuchstabegeaendertTHEN meldunganfbuchstabeFI .anfbuchstabegeaendert:IF 
sortierungnachparaphenTHEN neueranfbuchstabe:=lehrernameSUB 1;ELSE 
neueranfbuchstabe:=parapheSUB 1;FI ;anfbuchstabe<>neueranfbuchstabe.
meldunganfbuchstabe:standardmeldung(mnrbearbeitetwerden,teiltextmeldung+
neueranfbuchstabe+markiert);anfbuchstabe:=neueranfbuchstabe.END PROC 
wochenstdndrucken;PROC lehrerstundendatenaufbereitendruck:setzespaltentrenner
(spaltentrenner);stundendatenaufbereitenbild;ausgfeld(1):=zeile;END PROC 
lehrerstundendatenaufbereitendruck;PROC lehrerstundendatenindruckdatei:INT 
VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP druckzeileschreiben(ausgfeld(1))PER 
END PROC lehrerstundendatenindruckdatei;PROC stundendatenholen:paraphe:=wert(
fnrlparaphe);lehrername:=wert(fnrlfamname);rufname:=wert(fnrlrufname);
namenszusatz:=wert(fnrlzusatz);amtsbez:=wert(fnrlamtsbeztitel);geschlecht:=
wert(fnrlgeschlecht);sollstdn:=text(intwert(fnrlsollstd),2);pflichtstdn:=text
(intwert(fnrlpflichtstd),2);ermaessigung1:=text(intwert(fnrlerm1),2)+
schraegstrich;ermgrund1:=text(wert(fnrlermgrund1),2);ermaessigung2:=text(
intwert(fnrlerm2),2)+schraegstrich;ermgrund2:=text(wert(fnrlermgrund2),2);
ermaessigung3:=text(intwert(fnrlerm3),2)+schraegstrich;ermgrund3:=text(wert(
fnrlermgrund3),2);ermaessigung4:=text(intwert(fnrlerm4),2)+schraegstrich;
ermgrund4:=text(wert(fnrlermgrund4),2);IF geschlecht="w"XOR geschlecht="W"
THEN geschlecht:="Fr. "ELSE geschlecht:="Hr. "FI ;lehrernameaufbereitet:=(
lehrername+komma+blank+geschlecht+amtsbezeichnung+rufname+blank+namenszusatz)
;.amtsbezeichnung:IF amtsbez<>niltextTHEN amtsbez+blankELSE ""FI .END PROC 
stundendatenholen;END PACKET wochenstundenliste;