PACKET faecherlistenDEFINES faecherlispezielleteile:LET faechereingangsmaske= "mu liste einfach eingang",spaltentrenner=" ",faecheranfpos=2,spalte1breite=5 ,spalte2breite=35,spalte3breite=10,spalte4breite=11,niltext="",blank=" ",null =0,strich="-",ueberschriftenzeilen=2,mnrauswahlnichtsinnvoll=56, mnrbearbeitetwerden=109,ausgkopflaenge=2,ausgfeldlaenge=1, anzahlderobjekteprobildschirm=17;TEXT VAR faecherueberschrift:= "Liste der Fächer",fach,fachbezeichnung,fachgruppe,fachbereich,anfbuchstabe, neueranfbuchstabe:="",auswahlnichtsinnvoll,bearbeitetwerden;TEXT CONST leerzeile:=bildbreite*blank,textueberschrift:=("Fach"+2*blank+ "Fachbezeichnung"+21*blank+"Fachgruppe"+blank+"Fachbereich");INT VAR eingabestatus,lesestart,bildanfang,spalte2druckbreite,druckzeilenzahl;INT CONST aktuelleindexnr:=dnrfaecher,fnrfach:=fnrffach,fnrfachbezeichnung:= fnrffachbez,fnrfachgruppe:=fnrffachgrp,fnrfachbereich:=fnrffachbereich;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 faecherlispezielleteile(INT CONST nr):SELECT nrOF CASE 1: faecherdialogvorbereitenCASE 2:faechereingabenrichtigCASE 3: faecherlistenvorbereitenCASE 4:faecherdruckvorbereitenCASE 5: faecherseitedruckenCASE 6:faecherbildschirmvorbereitenCASE 7: faecherseitezeigenENDSELECT .END PROC faecherlispezielleteile;PROC faecherdialogvorbereiten:faecherueberschrift:=text(vergleichsknoten); setzeanfangswerte(faechereingangsmaske,faecheranfpos)END PROC faecherdialogvorbereiten;PROC faechereingabenrichtig:LET fnrausgdrucker=2, fnrausgbild=3;standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext, eingabestatus);IF eingabestatus=0THEN setzeeingabetest(TRUE ); setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=niltext)ELSE meldefehler; setzeeingabetest(FALSE )FI .meldefehler:meldungstext(mnrauswahlnichtsinnvoll, auswahlnichtsinnvoll);standardmeldung(auswahlnichtsinnvoll,niltext).END PROC faechereingabenrichtig;PROC faecherlistenvorbereiten:BOOL VAR b;initspalten; setzespaltentrenner(spaltentrenner);lesestart:=fnrfach;inittupel(dnrfaecher); setzeidentiwert("");initobli(anzahlderobjekteprobildschirm); objektlistestarten(aktuelleindexnr,"",lesestart,TRUE ,b);setzebestandende( NOT multistopCOR b);END PROC faecherlistenvorbereiten;PROC faecherbildschirmvorbereiten:LET fnrausganf=2;standardkopfmaskeaktualisieren( faecherueberschrift);bildanfang:=fnrausganf;setzebildanfangsposition( bildanfang);INT VAR i;setzespaltenbreite(bildbreite);spaltenweise( textueberschrift);ausgfeld(1):=zeile;ausgfeld(1)IN ausgabepos; erhoeheausgabeposumeins;spaltenweise(leerzeile);ausgfeld(1):=zeile;ausgfeld(1 )IN ausgabepos;erhoeheausgabeposumeins;setzebildanfangsposition(4); initspalten;setzespaltentrenner(spaltentrenner);setzespaltenbreite( spalte1breite);setzespaltenbreite(spalte2breite);setzespaltenbreite( spalte3breite);setzespaltenbreite(spalte4breite);END PROC faecherbildschirmvorbereiten;PROC faecherseitezeigen:blaettern(PROC (INT CONST )faecherdatenzeigen,aktion,TRUE ,FALSE ,BOOL PROC multistop)END PROC faecherseitezeigen;PROC faecherdatenzeigen(INT CONST x):faecherdatenholen; faecherdatenaufbereitenbild;faecherdatenaufbildschirm.END PROC faecherdatenzeigen;PROC faecherdatenholen:fach:=wert(fnrfach);fachbezeichnung :=wert(fnrfachbezeichnung);IF wert(fnrfachgruppe)=text(null)THEN fachgruppe:= strichELSE fachgruppe:=wert(fnrfachgruppe);FI ;IF wert(fnrfachbereich)= niltextTHEN fachbereich:=strichELSE fachbereich:=wert(fnrfachbereich)FI ;END PROC faecherdatenholen;PROC faecherdatenaufbereitenbild:spaltenweise(fach); spaltenweise(fachbezeichnung);spaltenweise(fachgruppe);spaltenweise( fachbereich);END PROC faecherdatenaufbereitenbild;PROC faecherdatenaufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP ausgfeld(i):=zeile;ausgfeld(i)IN ausgabepos;erhoeheausgabeposumeins;PER ;END PROC faecherdatenaufbildschirm;PROC faecherdruckvorbereiten:setzebestandende( FALSE );anfbuchstabe:=" ";druckvorbereiten;variablenfuerdrucksetzen; initdruckkopf(zentriert(faecherueberschrift,druckbreite),zentriert(length( faecherueberschrift)*"-",druckbreite));initspalten;setzespaltenbreite( spalte1breite);setzespaltenbreite(spalte2breite);setzespaltenbreite( spalte3breite);setzespaltenbreite(spalte4breite);holemeldung;inittupel( dnrfaecher);initausgabekopfdruck;lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistop);.holemeldung:meldungstext( mnrbearbeitetwerden,bearbeitetwerden).variablenfuerdrucksetzen: druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.END PROC faecherdruckvorbereiten;PROC initausgabekopfdruck:ausgkopfdruck(1):= textueberschrift;ausgkopfdruck(2):=leerzeile;END PROC initausgabekopfdruck; PROC faecherseitedrucken:faecherueberschriftdrucken;seitedrucken(PROC (INT VAR )lehrerdrucken,druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistop); seitenwechsel.END PROC faecherseitedrucken;PROC faecherueberschriftdrucken: INT VAR i;druckkopfschreiben;FOR iFROM 1UPTO ausgkopflaengeREP druckzeileschreiben(ausgkopfdruck(i))PER END PROC faecherueberschriftdrucken; PROC lehrerdrucken(INT VAR zeilenzaehler):LET markiert="#";faecherdatenholen; ggflmeldunganfbuchstabe;faecheraufbereitendruck;zeilenzaehlerINCR ausgfeldlaenge;faecherindruckdatei.ggflmeldunganfbuchstabe:IF anfbuchstabegeaendertTHEN meldunganfbuchstabeFI .anfbuchstabegeaendert: neueranfbuchstabe:=fachSUB 1;anfbuchstabe<>neueranfbuchstabe. meldunganfbuchstabe:standardmeldung(mnrbearbeitetwerden,neueranfbuchstabe+ markiert);anfbuchstabe:=neueranfbuchstabe.END PROC lehrerdrucken;PROC faecheraufbereitendruck:spaltenweise(fach);spaltenweise(fachbezeichnung); spaltenweise(fachgruppe);spaltenweise(fachbereich);ausgfeld(1):=zeile;END PROC faecheraufbereitendruck;PROC faecherindruckdatei:INT VAR i;FOR iFROM 1 UPTO ausgfeldlaengeREP druckzeileschreiben(ausgfeld(1))PER .END PROC faecherindruckdatei;END PACKET faecherlisten