summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listen.prot versetzkonferenz
blob: 976d67cee03dd5b4c335306012ea9a6636e61e75 (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
PACKET protversetzkonflistenDEFINES konfprolispezielleteile:LET 
mnrbearbeitetwirdjgst=106,mnrbearbeitetwirdklasse=107,mnrbearbeitetwirdkurs=
108;TEXT VAR bearbeitetwirdjgst,bearbeitetwirdklasse,bearbeitetwirdkurs,
startjahr,startzug;INT VAR aktuelleindexnr;LET niltext="",nildatum="01.01.00"
,null=0,blank=" ",mittestrich="-",doppelpunkt=":",vordr1ueberarb=
"vordruck1 ueberarbeitet",vordr2ueberarb="vordruck2 ueberarbeitet",
vordr3ueberarb="vordruck3 ueberarbeitet",spalte2breite=52,anzspaltentrenner=1
,ausgkopflaenge=3,ausgfeldlaenge=2,AUSGFELD =ROW ausgfeldlaengeTEXT ,
AUSGKOPF =ROW ausgkopflaengeTEXT ,konfprolieingangsmaske=
"ms liste konfpro eingang",konfprolianfpos=2;INT VAR spalte1breite,
druckzeilenzahl,druckzeilenzahlrest,zeilenanz,schuelerzaehler,eingabestatus;
TEXT VAR konfproliueberschrift,zug,jahrgang,schuelername,schuelerrufname,
schuelernamenszus,schuelergebdat,zugangjgst,abmeldedat,schuelerjgst,
schuelerzug,vordruck,vordruckueberarbeitet,druckstrich;AUSGFELD VAR 
ausgfelddruck;AUSGKOPF VAR ausgkopfdruck;BOOL VAR sek1,einjahrgang,alle,
neuesmerkmal;FILE VAR f;PROC konfprolispezielleteile(INT CONST nr):SELECT nr
OF CASE 1:konfprolidialogvorbereitenCASE 2:konfprolieingabenrichtigCASE 3:
konfprolilistenvorbereitenCASE 4:konfprolidruckvorbereitenCASE 5:
konfproliseitedruckenENDSELECT .END PROC konfprolispezielleteile;PROC 
konfprolidialogvorbereiten:konfproliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(konfprolieingangsmaske,konfprolianfpos).END PROC 
konfprolidialogvorbereiten;PROC konfprolieingabenrichtig:LET fnrmskjgst=2,
fnrmskzug=3,auswahlnichtsinnvoll=56;sek1:=FALSE ;alle:=FALSE ;einjahrgang:=
FALSE ;jahrgang:="";zug:=compress(standardmaskenfeld(fnrmskzug));IF 
standardmaskenfeld(fnrmskjgst)=niltextTHEN IF zug=niltextTHEN alle:=TRUE ;
sek1:=TRUE ;setzeausgabedrucker(TRUE );setzeeingabetest(TRUE )ELSE 
meldefehler;infeld(fnrmskzug);setzeeingabetest(FALSE )FI ELSE standardpruefe(
3,fnrmskjgst,5,13,niltext,eingabestatus);IF eingabestatus<>0THEN infeld(
eingabestatus);setzeeingabetest(FALSE )ELSE jahrgang:=zweistellig(
standardmaskenfeld(fnrmskjgst));einjahrgang:=(zug=niltext);IF int(jahrgang)<
11THEN sek1:=TRUE FI ;setzeausgabedrucker(TRUE );setzeeingabetest(TRUE )FI 
FI .meldefehler:standardmeldung(auswahlnichtsinnvoll,niltext).END PROC 
konfprolieingabenrichtig;PROC konfprolilistenvorbereiten:BOOL VAR b:=FALSE ;
startjahr:=jahrgang;startzug:=zug;IF startjahr>"10"CAND startzug=niltextTHEN 
aktuelleindexnr:=ixsustatjgstELSE aktuelleindexnr:=ixsustatjgstzugFI ;
dbstatus(ok);inittupel(dnrschueler);initobli(1);parsenooffields(19);
setzeidentiwert("");putwert(fnrsusgrpjgst,startjahr);putwert(fnrsusgrpzugtut,
startzug);putwert(fnrsustatuss,"ls");#objektlistestarten(aktuelleindexnr,"",
fnrsusgrpjgst,TRUE ,b);#objektlistestarten(aktuelleindexnr,"",staticfield,
TRUE ,b);setzebestandende(NOT multistopkonf).staticfield:IF aktuelleindexnr=
ixsustatjgstzugTHEN fnrsusgrpzugtutELSE dnrschueler+1FI .END PROC 
konfprolilistenvorbereiten;PROC konfprolidruckvorbereiten:LET prevordruck=
"vordruck",postvordruck=" protokoll versetzkonf",vordr3=
"vordruck3 protokoll versetzkonf",anzvordrucke=3,manager="anschreiben server"
;INT VAR i;schuelerzaehler:=null;jahrgang:=wert(fnrsusgrpjgst);zug:=wert(
fnrsusgrpzugtut);aktuellevordruckevommanagerholen;neuesmerkmal:=TRUE ;
druckvorbereiten;variablenfuerdrucksetzen;vordruck3fuellen;
setzesonderwerteschulkenndaten;holemeldungen;putwert(dateinr(primdatid(
aktuelleindexnr))+1,"");putwert(fnrsusgrpjgst,startjahr);putwert(
fnrsusgrpzugtut,startzug);lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,
INT VAR )scanforward,BOOL PROC multistopkonfsim);initspalten;
initausgabekopfdruck.holemeldungen:meldungstext(mnrbearbeitetwirdjgst,
bearbeitetwirdjgst);meldungstext(mnrbearbeitetwirdklasse,bearbeitetwirdklasse
);meldungstext(mnrbearbeitetwirdkurs,bearbeitetwirdkurs).
aktuellevordruckevommanagerholen:FOR iFROM 1UPTO anzvordruckeREP forget(
prevordruck+text(i)+postvordruck,quiet);fetch(prevordruck+text(i)+
postvordruck,/manager);PER .variablenfuerdrucksetzen:druckstrich:=druckbreite
*mittestrich;spalte1breite:=druckbreite-anzspaltentrenner-spalte2breite.
vordruck3fuellen:vordruck:=vordr3;vordruckueberarbeitet:=vordr3ueberarb;
forget(vordruckueberarbeitet,quiet);briefalternative(vordruck,
vordruckueberarbeitet).END PROC konfprolidruckvorbereiten;PROC 
initausgabekopfdruck:LET name="   :Familienname",rufname="   :  Rufname",
rest1="        :    :Erg.  :Fächer:",rest2=
"Geb.dat.:Bem.:v/w/n :Nachpr:Gründe";hilfsfeldervorbelegen;spaltenweise(name)
;spaltenweise(rest1);ausgkopfdruck(1):=zeile;spaltenweise(rufname);
spaltenweise(rest2);ausgkopfdruck(2):=zeile;ausgkopfdruck(3):=druckstrich.
hilfsfeldervorbelegen:setzespaltentrenner(blank);setzespaltenbreite(
spalte1breite);setzespaltenbreite(spalte2breite).END PROC 
initausgabekopfdruck;PROC konfproliseitedrucken:LET listewirdgedruckt=58;
konfproliueberschriftdrucken;seitedrucken(PROC (INT VAR )schuelerdatendrucken
,druckzeilenzahl,ausgfeldlaenge,PROC bestandendesimulierenbeimerkmalwechsel,
BOOL PROC multistopkonfsim);IF neuesmerkmalTHEN simuliertesendezuruecknehmen;
konfproliunterschriftdrucken;meldelistewirdgedruckt;drucknachbereiten;
schuelerzaehler:=null;neuelistevorbereitenELIF NOT bestandendeTHEN 
seitenwechselFI .simuliertesendezuruecknehmen:setzebestandende(FALSE ).
meldelistewirdgedruckt:standardmeldung(listewirdgedruckt,niltext).
neuelistevorbereiten:druckvorbereiten.END PROC konfproliseitedrucken;PROC 
konfproliueberschriftdrucken:LET vordr1="vordruck1 protokoll versetzkonf",
vordr2="vordruck2 protokoll versetzkonf",anzleerzeilen=2,markiert="#";INT 
VAR i;TEXT VAR klassejgstaufber;IF neuesmerkmalTHEN 
zwischenmeldungundvordruckefuellenFI ;vordruck1schreiben;IF neuesmerkmalTHEN 
vordruck2schreibenFI ;leerzeilenschreiben;ausgabekopfschreiben.
zwischenmeldungundvordruckefuellen:LET swiklassebzwjgst=511,
swianwesendelehrer=512,klasse="Klasse ",kurs="Tutorenkurs ",jgst="Jgst. ";
klassejgstaufber:=jahrgang;IF (alleOR einjahrgang)AND NOT sek1THEN 
standardmeldung(bearbeitetwirdjgst,klassejgstaufber+markiert);
klassejgstaufber:=jgst+klassejgstaufberELSE klassejgstaufber:=
klassejgstaufber+blank+zug;IF sek1THEN standardmeldung(bearbeitetwirdklasse,
klassejgstaufber+markiert);klassejgstaufber:=klasse+klassejgstaufberELSE 
standardmeldung(bearbeitetwirdkurs,klassejgstaufber+markiert);
klassejgstaufber:=kurs+klassejgstaufberFI ;FI ;festesonderwertesetzen;
vordruck:=vordr1;vordruckueberarbeitet:=vordr1ueberarb;forget(
vordruckueberarbeitet,quiet);briefalternative(vordruck,vordruckueberarbeitet)
;vordruck:=vordr2;vordruckueberarbeitet:=vordr2ueberarb;forget(
vordruckueberarbeitet,quiet);briefalternative(vordruck,vordruckueberarbeitet)
.festesonderwertesetzen:setzesonderwert(swiklassebzwjgst,klassejgstaufber);
setzesonderwert(swianwesendelehrer,blank).vordruck2schreiben:
vordruckueberarbeitet:=vordr2ueberarb;f:=sequentialfile(input,
vordruckueberarbeitet);zeilenanz:=lines(f);FOR iFROM 1UPTO zeilenanzREP 
getline(f,ausgfelddruck(1));druckzeileschreiben(ausgfelddruck(1));PER ;
druckzeilenzahlDECR zeilenanz.leerzeilenschreiben:FOR iFROM 1UPTO 
anzleerzeilenREP druckzeileschreiben(blank)PER ;druckzeilenzahlDECR 
anzleerzeilen.ausgabekopfschreiben:FOR iFROM 1UPTO ausgkopflaengeREP 
druckzeileschreiben(ausgkopfdruck(i))PER ;druckzeilenzahlDECR ausgkopflaenge;
druckzeilenzahlrest:=druckzeilenzahl.END PROC konfproliueberschriftdrucken;
PROC konfproliunterschriftdrucken:INT VAR i;vordruck3holen;vordruck3schreiben
.vordruck3holen:vordruckueberarbeitet:=vordr3ueberarb;f:=sequentialfile(input
,vordruckueberarbeitet);zeilenanz:=lines(f).vordruck3schreiben:IF zeilenanz>
druckzeilenzahlrestTHEN seitenwechselmitneuemkopfFI ;FOR iFROM 1UPTO 
zeilenanzREP getline(f,ausgfelddruck(1));druckzeileschreiben(ausgfelddruck(1)
);PER ;druckzeilenzahlrestDECR zeilenanz.seitenwechselmitneuemkopf:
seitenwechsel;vordruck1schreiben;druckzeilenzahlrest:=druckzeilenzahl;
vordruck3holen.END PROC konfproliunterschriftdrucken;PROC vordruck1schreiben:
INT VAR i;druckzeilenzahl:=drucklaenge;vordruckueberarbeitet:=vordr1ueberarb;
f:=sequentialfile(input,vordruckueberarbeitet);zeilenanz:=lines(f);FOR iFROM 
1UPTO zeilenanzREP getline(f,ausgfelddruck(1));druckzeileschreiben(
ausgfelddruck(1));PER ;druckzeilenzahlDECR zeilenanz.END PROC 
vordruck1schreiben;PROC schuelerdatendrucken(INT VAR zeilenzaehler):
schuelerdatenholen;schuelerdatenaufbereiten;zeilenzaehlerINCR ausgfeldlaenge;
schuelerdatenindruckdatei.END PROC schuelerdatendrucken;PROC 
schuelerdatenholen:schuelername:=wert(fnrsufamnames);schuelerrufname:=wert(
fnrsurufnames);schuelernamenszus:=wert(fnrsunamenszusatzs);schuelergebdat:=
wert(fnrsugebdatums);zugangjgst:=wert(fnrsuartzugang);abmeldedat:=wert(
fnrsuabgdats);schuelerjgst:=wert(fnrsusgrpjgst);schuelerzug:=wert(
fnrsusgrpzugtut).END PROC schuelerdatenholen;PROC schuelerdatenaufbereiten:
LET unterstrich="_",bem1="w",bem2="x",abgemeldet="ab",gebdatlaenge=8,
zugangjgstlaenge=4,ausgleich1=3,ausgleich2=2,abgemlaenge1=4,abgemlaenge2=2,
rest1=":      :      :",rest2=":______:______:________________________";
schuelerzaehlerINCR 1;schreibenamegebdatbemerkungen.
schreibenamegebdatbemerkungen:setzespaltentrenner(blank);spaltenweise(
schuelernameundnraufber);spaltenweise(schuelerbemteil1aufber);ausgfelddruck(1
):=zeile;setzespaltentrenner(unterstrich);spaltenweise(schuelerrufnameaufber)
;spaltenweise(schuelerbemteil2aufber);ausgfelddruck(2):=zeile.
schuelernameundnraufber:IF schuelernamenszus=niltextTHEN nr+doppelpunkt+
schuelernameELSE nr+doppelpunkt+schuelernamenszus+blank+schuelernameFI .nr:(
ausgleich1-length(text(schuelerzaehler)))*blank+text(schuelerzaehler).
schuelerbemteil1aufber:gebdatlaenge*blank+doppelpunkt+zugangjgstaufber+rest1.
zugangjgstaufber:IF (zugangjgst=bem1)OR (zugangjgst=bem2)THEN zugangjgst+(
zugangjgstlaenge-length(zugangjgst))*blankELSE zugangjgstlaenge*blankFI .
schuelerrufnameaufber:ausgleich1*unterstrich+doppelpunkt+ausgleich2*
unterstrich+schuelerrufname+anzunterstriche*unterstrich.
schuelerbemteil2aufber:schuelergebdat+doppelpunkt+abgemeldetaufber+rest2.
anzunterstriche:spalte1breite-ausgleich2-length(schuelerrufname).
abgemeldetaufber:IF abmeldedat=nildatumTHEN abgemlaenge1*unterstrichELSE 
abgemeldet+abgemlaenge2*unterstrichFI .END PROC schuelerdatenaufbereiten;
PROC schuelerdatenindruckdatei:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP 
druckzeileschreiben(ausgfelddruck(i))PER ;druckzeilenzahlrestDECR 
ausgfeldlaenge.END PROC schuelerdatenindruckdatei;PROC 
bestandendesimulierenbeimerkmalwechsel:IF bestandendeTHEN neuesmerkmal:=
FALSE ;konfproliunterschriftdruckenELSE nochklassebzwjgstzubearbeiten;IF 
neuesmerkmalTHEN setzebestandende(TRUE )FI ;FI .nochklassebzwjgstzubearbeiten
:jahrgang:=wert(fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut);neuesmerkmal:=
neuejgst;IF neuesmerkmalAND int(jahrgang)>10THEN sek1:=FALSE FI ;IF sek1THEN 
neuesmerkmal:=neuesmerkmalOR neuerzugFI .neuejgst:schuelerjgst<>jahrgang.
neuerzug:schuelerzug<>zug.END PROC bestandendesimulierenbeimerkmalwechsel;
BOOL PROC multistopkonf:BOOL VAR b:=#TRUE ;#FALSE ;IF wert(fnrsustatuss)="ls"
THEN b:=TRUE ;IF startjahr<>""THEN IF startzug=niltextTHEN b:=(wert(
fnrsusgrpjgst)=startjahr)ELSE b:=(wert(fnrsusgrpzugtut)=startzugAND wert(
fnrsusgrpjgst)=startjahr)FI ;FI ;FI ;bEND PROC multistopkonf;BOOL PROC 
multistopkonfsim:BOOL VAR b:=multistopkonf;setzebestandende(NOT b);bENDPROC 
multistopkonfsim;END PACKET protversetzkonflisten;