PACKET lehrersprechzeitenlisteDEFINES sprechzeitlispezielleteile:LET sprechzeingangsmaske="ms liste lehrerparaphen eingang", anzahlderobjekteprobildschirm=17,ausgfeldlaenge=1,spalte1breite=46, spalte2breite=25,spaltentrenner=": ",sprechzanfpos=2,ueberschriftenzeilen=2, strich="-",niltext="",blank=" ",komma=",",null=0,ausgkopflaenge=2, mittelstrich="-",teilueb1="Lehrer",teilueb2="Sprechzeiten", mnrauswahlnichtsinnvoll=56,mnrbearbeitetwerden=352;TEXT VAR sprechzueberschrift:="Liste der Lehrersprechzeiten",paraphe,lehrername, lehrernameaufbereitet,lehrernameaufbereitetmitparaphe,rufname,namenszusatz, amtsbez,geschlecht,sprechzeit,druckstrich,textueberschrift,teiltextmeldung:= "die Lehrer mit den Anfangsbuchstaben:",anfbuchstabe,neueranfbuchstabe:="", auswahlnichtsinnvoll;INT VAR aktuelleindexnr,eingabestatus,lesestart, bildanfang,druckzeilenzahl;INT CONST indexlehrername:=ixlfamruf, maxspaltenlaengepara:=5;BOOL VAR sortierungnachparaphen;LET AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT ,AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ;AUSGFELD VAR ausgfeld;AUSGKOPF VAR ausgkopf; AUSGKOPFDRUCK VAR ausgkopfdruck;BOOL PROC multistop:TRUE END PROC multistop; PROC sprechzeitlispezielleteile(INT CONST nr):SELECT nrOF CASE 1: sprechzdialogvorbereitenCASE 2:sprechzeingabenrichtigCASE 3: sprechzlistenvorbereitenCASE 4:sprechzdruckvorbereitenCASE 5: sprechzseitedruckenCASE 6:sprechzbildschirmvorbereitenCASE 7: sprechzseitezeigenENDSELECT .END PROC sprechzeitlispezielleteile;PROC sprechzdialogvorbereiten:sprechzueberschrift:=text(vergleichsknoten); setzeanfangswerte(sprechzeingangsmaske,sprechzanfpos)END PROC sprechzdialogvorbereiten;PROC sprechzeingabenrichtig: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:meldungstext(mnrauswahlnichtsinnvoll, auswahlnichtsinnvoll);standardmeldung(auswahlnichtsinnvoll,niltext).END PROC sprechzeingabenrichtig;PROC sprechzlistenvorbereiten:BOOL VAR b;initspalten; setzespaltentrenner(spaltentrenner);IF sortierungnachparaphenTHEN aktuelleindexnr:=dnrlehrer;lesestart:=fnrlparapheELSE aktuelleindexnr:= indexlehrername;lesestart:=0;FI ;inittupel(dnrlehrer);setzeidentiwert(""); initobli(anzahlderobjekteprobildschirm);parsenooffields(17); objektlistestarten(aktuelleindexnr,"",lesestart,TRUE ,b);setzebestandende(b); END PROC sprechzlistenvorbereiten;PROC sprechzbildschirmvorbereiten:LET fnrausganf=2;standardkopfmaskeaktualisieren(sprechzueberschrift);bildanfang:= fnrausganf;setzebildanfangsposition(bildanfang);INT VAR i;setzespaltenbreite( bildbreite);textueberschrift:=teilueb1+((spalte1breite+1)-(length(teilueb1))) *blank+teilueb2;spaltenweise(textueberschrift);ausgfeld(1):=zeile;ausgfeld(1) IN ausgabepos;erhoeheausgabeposumeins;spaltenweise(bildbreite*strich); ausgfeld(1):=zeile;ausgfeld(1)IN ausgabepos;erhoeheausgabeposumeins; setzebildanfangsposition(4);initspalten;setzespaltenbreite(spalte1breite); setzespaltenbreite(spalte2breite);END PROC sprechzbildschirmvorbereiten;PROC sprechzseitezeigen:blaettern(PROC (INT CONST )lehrerdatenzeigen,aktion,TRUE , FALSE ,BOOL PROC multistop)END PROC sprechzseitezeigen;PROC lehrerdatenzeigen (INT CONST x):lehrerdatenholen;lehrerdatenaufbereitenbild; lehrerdatenaufbildschirm.END PROC lehrerdatenzeigen;PROC lehrerdatenholen: paraphe:=wert(fnrlparaphe);lehrername:=wert(fnrlfamname);rufname:=wert( fnrlrufname);namenszusatz:=wert(fnrlzusatz);amtsbez:=wert(fnrlamtsbeztitel); geschlecht:=wert(fnrlgeschlecht);sprechzeit:=wert(fnrlsprechzeit);IF geschlecht="w"XOR geschlecht="W"THEN geschlecht:="Fr. "ELSE geschlecht:= "Hr. "FI ;lehrernameaufbereitet:=(lehrername+komma+blank+geschlecht+ amtsbezeichnung+rufname+blank+namenszusatz);IF sortierungnachparaphenTHEN lehrernameaufbereitetmitparaphe:=paraphe+(maxspaltenlaengepara-length(paraphe ))*blank+lehrernameaufbereitetFI .amtsbezeichnung:IF amtsbez<>niltextTHEN amtsbez+blankELSE ""FI .END PROC lehrerdatenholen;PROC lehrerdatenaufbereitenbild:IF sortierungnachparaphenTHEN spaltenweise( lehrernameaufbereitetmitparaphe)ELSE spaltenweise(lehrernameaufbereitet)FI ; spaltenweise(sprechzeit);END PROC lehrerdatenaufbereitenbild;PROC lehrerdatenaufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP ausgfeld (i):=zeile;ausgfeld(i)IN ausgabepos;erhoeheausgabeposumeins;PER ;END PROC lehrerdatenaufbildschirm;PROC sprechzdruckvorbereiten:setzebestandende(FALSE );anfbuchstabe:=" ";druckvorbereiten;variablenfuerdrucksetzen;initdruckkopf( zentriert(sprechzueberschrift,druckbreite),zentriert(length( sprechzueberschrift)*"-",druckbreite));initspalten;setzespaltenbreite( spalte1breite);setzespaltenbreite(spalte2breite);inittupel(dnrlehrer); initausgabekopfdruck;lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistop);.variablenfuerdrucksetzen: druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.END PROC sprechzdruckvorbereiten;PROC initausgabekopfdruck:druckstrich:=(spalte1breite *mittelstrich)+(spaltentrennerSUB 1)+(spalte2breite+1)*mittelstrich; textueberschrift:=teilueb1+(spalte1breite-(length(teilueb1)))*blank+ spaltentrenner+teilueb2;ausgkopfdruck(1):=textueberschrift;ausgkopfdruck(2):= druckstrich;END PROC initausgabekopfdruck;PROC sprechzseitedrucken: sprechzueberschriftdrucken;seitedrucken(PROC (INT VAR )lehrerdrucken, druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistop);seitenwechsel.END PROC sprechzseitedrucken;PROC sprechzueberschriftdrucken:INT VAR i; druckkopfschreiben;FOR iFROM 1UPTO ausgkopflaengeREP druckzeileschreiben( ausgkopfdruck(i))PER END PROC sprechzueberschriftdrucken;PROC lehrerdrucken( INT VAR zeilenzaehler):LET markiert="#";lehrerdatenholen; ggflmeldunganfbuchstabe;lehreraufbereitendruck;zeilenzaehlerINCR ausgfeldlaenge;lehrerindruckdatei.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 lehrerdrucken;PROC lehreraufbereitendruck:setzespaltentrenner(spaltentrenner) ;lehrerdatenaufbereitenbild;ausgfeld(1):=zeile;END PROC lehreraufbereitendruck;PROC lehrerindruckdatei:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP druckzeileschreiben(ausgfeld(1))PER END PROC lehrerindruckdatei;END PACKET lehrersprechzeitenliste;