summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/3.listen.lehrbef lehrerweise
blob: 1c3e1728d461963e6655a63ed60ebfa2e1efa290 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
PACKET lehrbefaehigungenlehrerweiselisteDEFINES 
lehrerwlehrbeflidruckenoderzeigen:LET datenraum="datenraum",ausgkopflaenge=2,
ueberschriftenzeilen=2,anzahlparapheninlehrbef=300,neunfelder=9,niltext="",
blank=" ",null=0,strich="-",mnrbearbeitetwerden=352,mnrlistewirdgedruckt=58,
mnrauswahlnichtsinnvoll=56,mnrlistewirdaufbereiet=190;INT VAR zeilenzaehler,
druckzeilenzahl,anzahlparindateilehrbef,anzahlparindateilehrer,x,y,
eingabestatus;BOUND ROW anzahlparapheninlehrbefROW neunfelderTEXT VAR 
datenauszweidateien;FILE VAR ausgabedatei;TEXT CONST ausgabedateiname:=
"Liste der Lehrbefähigungen",teiltextmeldung:=
"Lehrerparaphen mit den Anfangsbuchstaben:",spaltentext:=
"Lehrer  Soll. Pfl.  Lehrbefähigung Fach/Art",tasten:="vr",spaltenstrich:=60*
strich;TEXT VAR neueranfbuchstabe:="",anfbuchstabe:="",ueberschrift:=
"Liste der Lehrbefähigungen aller Lehrer",paraphe:="",aufbereitetezeile:="";
BOOL VAR ausgabedrucker:=FALSE ;LET AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ;
AUSGKOPFDRUCK VAR ausgkopfdruck;PROC lehrerwlehrbeflidruckenoderzeigen(INT 
CONST nr):anzahlparindateilehrer:=int(records(dnrlehrer));SELECT nrOF CASE 1:
druckenoderbildschirmausgabeCASE 2:druckennachbildschirmausgabe;return(2);
forget(ausgabedateiname,quiet)CASE 3:rowimdatenraumloeschen;enter(2);forget(
ausgabedateiname,quiet)ENDSELECT .END PROC lehrerwlehrbeflidruckenoderzeigen;
PROC rowimdatenraumloeschen:forget(datenraum,quiet)END PROC 
rowimdatenraumloeschen;PROC druckennachbildschirmausgabe:
lehrerwlehrbefdruckenEND PROC druckennachbildschirmausgabe;PROC 
druckenoderbildschirmausgabe:LET fnrausgdrucker=2,fnrausgbild=3;IF 
eingabenrichtigTHEN standardmeldung(mnrlistewirdaufbereiet,niltext);
datenauszweidateienholenundimrowablegen;ausgabedrucker:=(standardmaskenfeld(
fnrausgbild)=niltext);IF ausgabedruckerTHEN lehrerwlehrbefdrucken;return(1);
ELSE ausgabedatei:=sequentialfile(output,"Liste der Lehrbefähigungen");
lehrerwlehrbefaufbildschirmzeigenFI ;ELSE meldefehler;return(1)FI ;.
eingabenrichtig:standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,
eingabestatus);IF eingabestatus=0THEN TRUE ELSE FALSE FI .meldefehler:
standardmeldung(mnrauswahlnichtsinnvoll,niltext)END PROC 
druckenoderbildschirmausgabe;PROC lehrerwlehrbefaufbildschirmzeigen:
datenausrowinshowdateischreiben;dateiaufbildschirmausgeben;END PROC 
lehrerwlehrbefaufbildschirmzeigen;PROC lehrerwlehrbefdrucken:
druckdateimitrowdatenfuellendruckenundloeschen;rowimdatenraumloeschenEND 
PROC lehrerwlehrbefdrucken;PROC 
druckdateimitrowdatenfuellendruckenundloeschen:TEXT VAR zeile;INT VAR 
zeilenanz:=1,x:=1;druckvorbereiten;variablenfuerdrucksetzen;initdruckkopf(
ueberschrift);initausgabekopfdruck;druckkopfschreiben;
spaltenueberschriftdrucken;setzemitseitennummern(TRUE );x:=1;zeilenzaehler:=1
;WHILE zeilenanz<=anzahlparindateilehrbefREP zeileaufbereiten;
ggfmeldunganfbuchstabe;neueranfbuchstabe:=anfbuchstabe;IF zeilenzaehler>
druckzeilenzahlTHEN seitenwechsel;spaltenueberschriftdrucken;zeilenzaehler:=0
;FI ;druckzeileschreiben(zeile);xINCR 1;zeilenanzINCR 1;zeilenzaehlerINCR 1;
PER ;standardmeldung(mnrlistewirdgedruckt,niltext);drucknachbereiten;.
ggfmeldunganfbuchstabe:IF anfbuchstabegeaendertTHEN meldunganfbuchstabeFI .
anfbuchstabegeaendert:anfbuchstabe<>neueranfbuchstabe.meldunganfbuchstabe:
LET markiert="#";standardmeldung(mnrbearbeitetwerden,teiltextmeldung+
neueranfbuchstabe+markiert);.variablenfuerdrucksetzen:druckzeilenzahl:=
drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.zeileaufbereiten:y:=1;zeile
:=text(datenauszweidateien(x)(y),8);FOR yFROM 8UPTO neunfelderREP zeileCAT 
text(datenauszweidateien(x)(y),6)PER ;FOR yFROM 2UPTO 7REP zeileCAT text(
datenauszweidateien(x)(y),7)PER ;anfbuchstabe:=(datenauszweidateien(x)(1))
SUB 1;END PROC druckdateimitrowdatenfuellendruckenundloeschen;PROC 
initausgabekopfdruck:ausgkopfdruck(1):=spaltentext;ausgkopfdruck(2):=
spaltenstrichEND PROC initausgabekopfdruck;PROC spaltenueberschriftdrucken:
INT VAR l;FOR lFROM 1UPTO ausgkopflaengeREP druckzeileschreiben(ausgkopfdruck
(l))PER END PROC spaltenueberschriftdrucken;PROC 
datenausrowinshowdateischreiben:putline(ausgabedatei,blank);putline(
ausgabedatei,spaltentext);putline(ausgabedatei,spaltenstrich);putline(
ausgabedatei,blank);FOR xFROM 1UPTO anzahlparindateilehrbefREP 
zeileaufbereiten;aufbereitetezeileindateischreibenPER .zeileaufbereiten:y:=1;
aufbereitetezeile:=text(datenauszweidateien(x)(y),8);FOR yFROM 8UPTO 
neunfelderREP aufbereitetezeileCAT text(datenauszweidateien(x)(y),6)PER ;FOR 
yFROM 2UPTO 7REP aufbereitetezeileCAT text(datenauszweidateien(x)(y),7)PER ;.
aufbereitetezeileindateischreiben:putline(ausgabedatei,aufbereitetezeile);
aufbereitetezeile:=niltextEND PROC datenausrowinshowdateischreiben;PROC 
dateiaufbildschirmausgeben:zeigedatei(ausgabedateiname,tasten);END PROC 
dateiaufbildschirmausgeben;PROC datenauszweidateienholenundimrowablegen:
datenauszweidateien:=new(datenraum);lehrerdatenrowinitialisieren;inittupel(
ixlbpar);x:=0;y:=1;statleseschleife(ixlbpar,"","",fnrlbparaphe,fnrlbfach,
PROC holedatenausdateilehrbefaehigungeninsrow);anzahlparindateilehrbef:=x;
inittupel(dnrlehrer);x:=1;y:=1;statleseschleife(dnrlehrer,"","",fnrlparaphe,
fnrlfamname,PROC holedatenausdateilehrerinsrow);.lehrerdatenrowinitialisieren
:FOR xFROM 1UPTO anzahlparindateilehrerREP FOR yFROM 1UPTO neunfelderREP 
datenauszweidateien(x)(y):=niltext;PER ;PER END PROC 
datenauszweidateienholenundimrowablegen;PROC 
holedatenausdateilehrbefaehigungeninsrow(BOOL VAR b):IF dbstatus<>0THEN b:=
TRUE ELSE IF paraphe<>wert(fnrlbparaphe)THEN xINCR 1;y:=1;paraphe:=wert(
fnrlbparaphe);datenauszweidateien(x)(y):=paraphe;FI ;yINCR 1;
datenauszweidateien(x)(y):=text(wert(fnrlbfach),2)+"/"+wert(fnrlbart);FI ;
END PROC holedatenausdateilehrbefaehigungeninsrow;PROC 
holedatenausdateilehrerinsrow(BOOL VAR b):IF dbstatus<>0THEN b:=TRUE ELSE IF 
wert(fnrlparaphe)=datenauszweidateien(x)(1)THEN datenauszweidateien(x)(8):=
wert(fnrlsollstd);datenauszweidateien(x)(9):=wert(fnrlpflichtstd);xINCR 1;FI 
;FI ;END PROC holedatenausdateilehrerinsrow;PROC statleseschleife(INT CONST 
indexnummer,TEXT CONST startschluessel1,startschluessel2,INT CONST feldnr1,
feldnr2,PROC (BOOL VAR )stataktion):vorbereitungen;leseschleife.
vorbereitungen:LET maxleseanzahl=10;BOOL VAR vorzeitigesende:=FALSE ;#INT 
CONST maxblock:=maxfeldDIV zahlderfelder;#INT VAR anzahltupel;#INT CONST 
maxanzahl:=(maxintDIV maxblock)*maxblock#.leseschleife:putwert(feldnr1,
startschluessel1);putwert(feldnr2,startschluessel2);search(indexnummer);IF 
dbstatus=0THEN einleseschleifeFI .einleseschleife:zaehlen;WHILE NOT schluss
REP anzahltupel:=maxleseanzahl;multisucc(indexnummer,anzahltupel);
stackdurchlaufPER ;.stackdurchlauf:IF anzahltupel=0THEN dbstatus(1)ELSE 
WHILE anzahltupel<>0REP lesen;zaehlen;IF vorzeitigesendeTHEN dbstatus(1);
anzahltupel:=0FI ;PER FI .schluss:dbstatus<>0.zaehlen:stataktion(
vorzeitigesende).lesen:multisucc;anzahltupelDECR 1;.END PROC statleseschleife
;END PACKET lehrbefaehigungenlehrerweiseliste;