summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.einzelstdpl.lehrer
blob: 39067e3dff0d7d27decaae395c27cf99006e4b2a (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
101
102
103
104
105
106
107
108
109
110
111
112
113
PACKET einzelstdpllehrerDEFINES einzelstdpllehrereingang,
einzelstdpllehrerstarten,einzelstdpllehrersonderwerte,
einzelstdpllehrermultistop,einzelstdpllehrerdruckdateibauen:LET swanrede=511,
swlehrername=512,swschuljahr=514,swhalbjahr=515,swtagesstunde=520,
swklassenleitungen=540,swstellvleitungen=541,swaufsichtszeit=542,
swaufsichtsort=543,dateimitvordruck1="vordruck1 einzelstdpl lehrer",
dateimitvordruck2="vordruck2 einzelstdpl raeume",dateimitvordruck3=
"vordruck2 einzelstdpl lehrer",dateimitvordruck4=
"vordruck3 einzelstdpl lehrer";TASK VAR vordruckserver;LET 
maxzeichenimvordruck=79;TEXT VAR hj,sj,paraphe:="",anrede,klassenleitung:="",
stellvleitung:="",l:="",r:="",p:="",geplantezeiten;LET maske=
"ms einzelstdpl lehrer eingang",fnr2paraphe=2,fnr3akthj=3,fnr4ausgabebs=4,
fnr5ausgabedr=5,blank=" ",null=0,niltext="",
meldnrkeinestundenplandatenvorhanden=366,meldnrungueltigeparaphe=344,
meldnrkeinelehrerdaten=337,meldnrauswahlunsinnig=56,meldnrbittewarten=69;INT 
CONST swzweitezeile:=6,erstestd:=1,letztestd:=12,maxwochstdn:=66,maxwochtage
:=6;BOOL VAR anschreibenaufbszeigen:=TRUE ,einzelanschreiben:=TRUE ,
aktuelleshjgewaehlt:=TRUE ;INT VAR eingabestatus,x,meldnr;PROC 
einzelstdpllehrereingang:standardvproc(maske)END PROC 
einzelstdpllehrereingang;PROC einzelstdpllehrerstarten:vordruckserver:=/
"anschreiben server";IF maskenwerteokTHEN IF stundenplanokTHEN 
startenausfuehrenELSE meldnr:=meldnrkeinestundenplandatenvorhanden;
meldedenfehler;zurueckzumdialog;FI ;ELSE meldedenfehler;zurueckzumdialogFI ;.
meldedenfehler:standardmeldung(meldnr,niltext).zurueckzumdialog:return(1).
startenausfuehren:forget(dateimitvordruck1,quiet);forget(dateimitvordruck2,
quiet);forget(dateimitvordruck3,quiet);forget(dateimitvordruck4,quiet);fetch(
dateimitvordruck1,vordruckserver);fetch(dateimitvordruck2,vordruckserver);
fetch(dateimitvordruck3,vordruckserver);fetch(dateimitvordruck4,
vordruckserver);inittupel(dnrlehrer);putwert(fnrlparaphe,paraphe);
standardmeldung(meldnrbittewarten,niltext);zusammengesetztesanschreiben(
dnrlehrer,anschreibenaufbszeigen,einzelanschreiben,BOOL PROC 
einzelstdpllehrersonderwerte,BOOL PROC einzelstdpllehrermultistop,TEXT PROC 
einzelstdpllehrerdruckdateibauen);END PROC einzelstdpllehrerstarten;BOOL 
PROC stundenplanok:sj:=schulkenndatum("Schuljahr");hj:=schulkenndatum(
"Schulhalbjahr");IF NOT (aktuelleshjgewaehlt)THEN geplanteshjundsjberechnen(
hj,sj)FI ;stundenplanhalbjahrsetzen(hj,sj);
stundenplanbasisundstundenplanholen(eingabestatus);eingabestatus=0OR 
eingabestatus=8END PROC stundenplanok;BOOL PROC maskenwerteok:BOOL VAR ok:=
FALSE ;standardpruefe(5,fnr4ausgabebs,fnr5ausgabedr,null,niltext,
eingabestatus);IF eingabestatus<>0THEN meldnr:=meldnrauswahlunsinnig;infeld(
fnr4ausgabebs);ok:=FALSE ELSE anschreibenaufbszeigen:=standardmaskenfeld(
fnr5ausgabedr)=niltext;einzelanschreiben:=standardmaskenfeld(fnr2paraphe)<>
niltext;aktuelleshjgewaehlt:=standardmaskenfeld(fnr3akthj)<>niltext;IF 
einzelanschreibenTHEN IF gueltigeparapheTHEN paraphe:=wert(fnrlparaphe);ok:=
TRUE ELSE meldnr:=meldnrungueltigeparaphe;infeld(fnr2paraphe);ok:=FALSE FI ;
ELSE IF dateilehrerleerTHEN meldnr:=meldnrkeinelehrerdaten;infeld(fnr3akthj);
ok:=FALSE ELSE ok:=TRUE FI ;FI ;FI ;okEND PROC maskenwerteok;BOOL PROC 
gueltigeparaphe:inittupel(dnrlehrer);putwert(fnrlparaphe,standardmaskenfeld(
fnr2paraphe));search(dnrlehrer,TRUE );dbstatus=0END PROC gueltigeparaphe;
BOOL PROC dateilehrerleer:inittupel(dnrlehrer);search(dnrlehrer);dbstatus<>0
END PROC dateilehrerleer;BOOL PROC einzelstdpllehrersonderwerte:INT VAR 
gemerkterdbstatus;paraphe:=wert(fnrlparaphe);initialisieresonderwerte;IF wert
(fnrlgeschlecht)="m"THEN anrede:="Herrn"ELSE anrede:="Frau"FI ;adressat(wert(
fnrlfamname));setzesonderwert(swschuljahr,subtext(sj,1,2)+"/"+subtext(sj,3,4)
);setzesonderwert(swhalbjahr,hj);setzesonderwert(swanrede,anrede);
setzesonderwert(swlehrername,wert(fnrlfamname));gemerkterdbstatus:=dbstatus;
inittupel(dnraktschuelergruppen);putwert(fnrsgrpsj,sj);putwert(fnrsgrphj,hj);
search(dnraktschuelergruppen);klassenleitung:=niltext;stellvleitung:=niltext;
WHILE (dbstatus=0AND wert(fnrsgrphj)=hj)REP IF wert(fnrsgrplehrer)=wert(
fnrlparaphe)THEN klassenleitungCAT (wert(fnrsgrpjgst)+wert(fnrsgrpkennung)+
blank)FI ;IF wert(fnrsgrpstellvlehrer)=wert(fnrlparaphe)THEN stellvleitung
CAT (wert(fnrsgrpjgst)+wert(fnrsgrpkennung)+blank)FI ;succ(
dnraktschuelergruppen);PER ;setzesonderwert(swklassenleitungen,klassenleitung
);setzesonderwert(swstellvleitungen,stellvleitung);dbstatus(gemerkterdbstatus
);TRUE END PROC einzelstdpllehrersonderwerte;BOOL PROC 
einzelstdpllehrermultistop:BOOL VAR b;IF einzelanschreibenTHEN b:=wert(
fnrlparaphe)=parapheELSE b:=dbstatus=0FI ;bENDPROC einzelstdpllehrermultistop
;TEXT PROC einzelstdpllehrerdruckdateibauen:INT VAR dbstatusintern;LET 
stddruckdatei="liste.1",hilfsdatei="hilfsdatei";FILE VAR f;TEXT VAR zeile:=""
,druckdatei:="Lehrer-Einzelplan";TEXT CONST teil1:="---+",teil2:=
"-----------+",teil3:="-----------: ",teil4:="-------------------",
normaletrennlinie:=teil1+5*teil2+teil3,abschlusslinie:=4*teil4+blank;
setzemitseitennummern(TRUE );druckvorbereiten;setzeanzahlderzeichenprozeile(
maxzeichenimvordruck);briefalternative(dateimitvordruck1,hilfsdatei);
zeilenweisehilfsdateiindruckdatei(hilfsdatei);forget(hilfsdatei,quiet);
geplantezeiten:=allezeitenvon("P",paraphe);FOR xFROM erstestdUPTO letztestd
REP datendeszweitenvordrucksindruckdateiPER ;briefalternative(
dateimitvordruck3,hilfsdatei);zeilenweisehilfsdateiindruckdatei(hilfsdatei);
forget(hilfsdatei,quiet);inittupel(dnraufsichtsplan);putwert(fnrapsj,sj);
putwert(fnraphj,hj);putwert(fnrapparaphe,paraphe);search(ixappar,TRUE );
WHILE dbstatus=0AND wert(fnrapsj)=sjAND wert(fnraphj)=hjAND wert(fnrapparaphe
)=parapheREP setzesonderwert(swaufsichtsort,wert(fnrapaufsichtsort));
dbstatusintern:=dbstatus;inittupel(dnraufsichtszeiten);putwert(fnrazsj,sj);
putwert(fnrazhj,hj);putwert(fnrapaufsichtszeit,wert(fnrapaufsichtszeit));
search(dnraufsichtszeiten,TRUE );IF dbstatus=0THEN setzesonderwert(
swaufsichtszeit,wert(fnrazbezeichnung))ELSE setzesonderwert(swaufsichtszeit,
blank)FI ;briefalternative(dateimitvordruck4,hilfsdatei);
zeilenweisehilfsdateiindruckdatei(hilfsdatei);forget(hilfsdatei,quiet);
dbstatus(dbstatusintern);succ(ixappar);PER ;drucknachbereitenohneausdrucken;
rename(stddruckdatei,druckdatei);f:=sequentialfile(modify,druckdatei);toline(
f,1);input(f);druckdatei.datendeszweitenvordrucksindruckdatei:setzesonderwert
(swtagesstunde,text(x,2));
planeintraegeprowochenstdenlesenundsonderwertesetzen(x);briefalternative(
dateimitvordruck2,hilfsdatei);zeilenweisehilfsdateiindruckdatei(hilfsdatei);
IF x<>letztestdTHEN zeile:=normaletrennlinieELSE zeile:=abschlusslinieFI ;
druckzeileschreiben(zeile);forget(hilfsdatei,quiet);END PROC 
einzelstdpllehrerdruckdateibauen;PROC zeilenweisehilfsdateiindruckdatei(TEXT 
CONST hilfsdatei):INT VAR i;TEXT VAR zeile:="";FILE VAR f;f:=sequentialfile(
input,hilfsdatei);FOR iFROM 1UPTO lines(f)REP getline(f,zeile);
druckzeileschreiben(zeile)PER ;END PROC zeilenweisehilfsdateiindruckdatei;
PROC planeintraegeprowochenstdenlesenundsonderwertesetzen(INT CONST std):INT 
VAR i,wochenstd:=std,sonderwert:=521;TEXT VAR ausgabe;FOR iFROM 1UPTO 
maxwochtageREP IF (geplantezeitenSUB wochenstd)="1"THEN planeintraglesen(
wochenstd,"P",paraphe,l,r,p);IF wochenstd<=maxwochstdnTHEN ausgabe:=subtext(l
,1,2);ausgabeCAT blank;ausgabeCAT subtext(l,3,4);ausgabeCAT blank;ausgabeCAT 
subtext(l,5,8);setzesonderwert(sonderwert,ausgabe);setzesonderwert(sonderwert
+swzweitezeile,r);ELSE setzesonderwert(sonderwert,blank);setzesonderwert(
sonderwert+swzweitezeile,blank);FI ;ELSE setzesonderwert(sonderwert,blank);
setzesonderwert(sonderwert+swzweitezeile,blank);FI ;ausgabe:=niltext;
sonderwertINCR 1;wochenstdINCR letztestd;PER ;END PROC 
planeintraegeprowochenstdenlesenundsonderwertesetzen;END PACKET 
einzelstdpllehrer