app/schulis/2.2.1/src/0.listen.benutz

Raw file
Back to index

PACKET benutzerlisteDEFINES benulispezielleteile:LET niltext="",blank=" ",
null=0,slash="/",spaltentrenner="  ",ueberschriftenzeilen=1,anzspalten=6,
dateiname="sortdatei",ausgfeldlaenge=9,spaltenbreite=11,AUSGFELD =ROW 
ausgfeldlaengeTEXT ,benulieingangsmaske="mu liste einfach eingang",
benulianfpos=2,mnrbearbeitetwerden=104;#LET dnrbenutz=7,fnrbenutzname=9,
fnrbenutzberecht=11;#INT VAR druckzeilenzahl,bildanf,eingabestatus,
aktuelleindexnr,ausgfeldlaengereal;TEXT VAR benuliueberschrift,kennung,
berechtigungen,bearbeitetwerden,startwert,anfbuchstabe,neueranfbuchstabe;
AUSGFELD VAR ausgfeld;BOOL PROC multistop:TRUE END PROC multistop;PROC 
benulispezielleteile(INT CONST nr):SELECT nrOF CASE 1:benulidialogvorbereiten
CASE 2:benulieingabenrichtigCASE 3:benulilistenvorbereitenCASE 4:
benulidruckvorbereitenCASE 5:benuliseitedruckenCASE 6:
benulibildschirmvorbereitenCASE 7:benuliseitezeigenENDSELECT .END PROC 
benulispezielleteile;PROC benulidialogvorbereiten:systemdbon;#first(dnrbenutz
);startwert:=wert(fnrbenutzname);#benuliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(benulieingangsmaske,benulianfpos).END PROC 
benulidialogvorbereiten;PROC benulieingabenrichtig:LET fnrausgdrucker=2,
fnrausgbild=3;standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,
eingabestatus);IF eingabestatus<>0THEN infeld(eingabestatus);setzeeingabetest
(FALSE )ELSE setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=niltext);
setzeeingabetest(TRUE )FI .END PROC benulieingabenrichtig;PROC 
benulilistenvorbereiten:INT VAR i;BOOL VAR b:=FALSE ;initspalten;FOR iFROM 1
UPTO anzspaltenREP setzespaltenbreite(spaltenbreite)PER ;setzespaltentrenner(
spaltentrenner);aktuelleindexnr:=dnrbenutz;inittupel(dnrbenutz);
setzeidentiwert("");initobli(2);objektlistestarten(aktuelleindexnr,"",
fnrbenutzname,FALSE ,b);setzebestandende(NOT multistop)END PROC 
benulilistenvorbereiten;PROC benulibildschirmvorbereiten:LET fnrausganf=2;
standardkopfmaskeaktualisieren(benuliueberschrift);bildanf:=fnrausganf;
setzebildanfangsposition(bildanf).END PROC benulibildschirmvorbereiten;PROC 
benuliseitezeigen:blaettern(PROC (INT CONST )benutzerzeigen,aktion,FALSE ,
FALSE ,BOOL PROC multistop);END PROC benuliseitezeigen;PROC benutzerzeigen(
INT CONST x):benutzerholen;benutzeraufbereitenbild;benutzeraufbildschirm.END 
PROC benutzerzeigen;PROC benutzeraufbereitenbild:INT VAR i;
benutzeraufbereitenallgemein(bildbreite);restbehandlungbild.
restbehandlungbild:FOR iFROM ausgfeldlaengereal+1UPTO ausgfeldlaengeREP 
ausgfeld(i):=text(blank,bildbreite)PER .END PROC benutzeraufbereitenbild;
PROC benutzeraufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP 
ausgfeld(i)IN ausgabepos;erhoeheausgabeposumeinsEND REP .END PROC 
benutzeraufbildschirm;PROC benulidruckvorbereiten:anfbuchstabe:=niltext;
druckvorbereiten;variablenfuerdrucksetzen;initdruckkopf(zentriert(
benuliueberschrift,druckbreite));holemeldung;systemdbon;inittupel(dnrbenutz);
setzebestandende(NOT multistop);lesenvorbereitendruck(PROC (INT CONST ,BOOL 
PROC ,INT VAR )scanforward,BOOL PROC multistop).holemeldung:meldungstext(
mnrbearbeitetwerden,bearbeitetwerden).variablenfuerdrucksetzen:
druckzeilenzahl:=drucklaenge(ueberschriftenzeilen).END PROC 
benulidruckvorbereiten;PROC benuliseitedrucken:benuliueberschriftdrucken;
seitedrucken(PROC (INT VAR )benutzerdrucken,druckzeilenzahl,ausgfeldlaenge,
BOOL PROC multistop);seitenwechsel.END PROC benuliseitedrucken;PROC 
benuliueberschriftdrucken:druckkopfschreiben.END PROC 
benuliueberschriftdrucken;PROC benutzerdrucken(INT VAR zeilenzaehler):LET 
markiert="#";benutzerholen;ggflmeldunganfbuchstabe;benutzeraufbereitendruck;
zeilenzaehlerINCR ausgfeldlaengereal;benutzerindruckdatei.
ggflmeldunganfbuchstabe:IF anfbuchstabegeaendertTHEN meldunganfbuchstabeFI .
anfbuchstabegeaendert:neueranfbuchstabe:=kennungSUB 1;anfbuchstabe<>
neueranfbuchstabe.meldunganfbuchstabe:standardmeldung(bearbeitetwerden,
neueranfbuchstabe+markiert);anfbuchstabe:=neueranfbuchstabe.END PROC 
benutzerdrucken;PROC benutzeraufbereitendruck:benutzeraufbereitenallgemein(
druckbreite).END PROC benutzeraufbereitendruck;PROC benutzerindruckdatei:INT 
VAR i;FOR iFROM 1UPTO ausgfeldlaengerealREP druckzeileschreiben(ausgfeld(i))
PER .END PROC benutzerindruckdatei;PROC benutzeraufbereitenallgemein(INT 
CONST breite):INT VAR position,anzahlberechtigungen,anzzeilenreal,i,j,k;FILE 
VAR f;TEXT VAR berechtigung;kennungaufbereiten;berechtigungenaufbereiten.
kennungaufbereiten:ausgfeld(1):=text(kennung,breite).
berechtigungenaufbereiten:erstenslashimtextueberlesen;
berechtigungenindateiundsortieren;wirklichezeilenzahlberechnen;
ausgabefelderberechtigungenauffuellen.erstenslashimtextueberlesen:position:=
pos(berechtigungen,slash);berechtigungen:=subtext(berechtigungen,position+1).
berechtigungenindateiundsortieren:f:=sequentialfile(output,dateiname);
anzahlberechtigungen:=null;position:=pos(berechtigungen,slash);WHILE position
<>nullREP anzahlberechtigungenINCR 1;putline(f,subtext(berechtigungen,1,
position-1));berechtigungen:=subtext(berechtigungen,position+1);position:=pos
(berechtigungen,slash)PER ;putline(f,berechtigungen);anzahlberechtigungen
INCR 1;sort(dateiname).wirklichezeilenzahlberechnen:anzzeilenreal:=
anzahlberechtigungenDIV anzspalten;IF (anzahlberechtigungenMOD anzspalten<>
null)THEN anzzeilenrealINCR 1FI .ausgabefelderberechtigungenauffuellen:f:=
sequentialfile(input,dateiname);i:=null;FOR jFROM 1UPTO anzzeilenrealREP FOR 
kFROM 1UPTO anzspaltenREP iINCR 1;IF i>anzahlberechtigungenTHEN spaltenweise(
blank)ELSE getline(f,berechtigung);spaltenweise(berechtigung)FI ;PER ;
ausgfeld(j+1):=zeilePER ;forget(dateiname,quiet);ausgfeldlaengereal:=
anzzeilenreal+2;ausgfeld(ausgfeldlaengereal):=text(blank,breite).END PROC 
benutzeraufbereitenallgemein;PROC benutzerholen:kennung:=wert(fnrbenutzname);
berechtigungen:=wert(fnrbenutzberecht);END PROC benutzerholen;END PACKET 
benutzerliste;