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;