summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.anschr.mitteilungen neuangemeldete und abgemeldete
blob: 32712563611d345beb1220d02cc30ec5d55240d7 (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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
PACKET anschrmitteilungenneuangemeldeteundabgemeldeteDEFINES 
mitteilungeingang,mitteilungende,mitteilungneuangstarten,
mitteilungabmeldungstarten,sonderwertemitteilungabmeldung,
sonderwertemitteilungneuangmithjd,sonderwertemitteilungneuangmitdiffd,
dummystop:LET laufenderbestand="ls";LET bestandfuerabgang="c02 abgang",
bestandfuerabschluss="c02 abschluss";LET swaktuelleshalbjahr=509,
sweintrittsdatum=512,swabgangsdatum=512,swschuelername=513,swgeburtsdatum=514
,swabgangsgrund=515,swstrhausnr=516,swerreichterabschluss=516,swplzort=517,
swtelephonnr=518,swaktjgst=519,swklassenlehrer=520,#swbafoeg=521,dr05.03.88#
swkursanfang=530,swfelderunterschrnoteentlbuecher=591,swmatrixfeld=590;INT 
VAR swkurse,eingabestatus;TEXT VAR aktuellejgst,tutorlehrer,abglangtext,
abslangtext;TEXT VAR aktuelleshalbjahr:="",aktuellesschuljahr:="",
schuljahranfang:="",schuljahrende:="";LET textschulhalbjahr="Schulhalbjahr",
textschuljahr="Schuljahr",textschuljahranfang="Anfang Schulhalbjahr",
textschuljahrende="Ende Schulhalbjahr";BOOL VAR hjdvorhanden,abmeldung:=
FALSE ,schuelergefunden;LET jgst09="09",jgst10="10";LET maske="ms mitteilung"
;LET namefeldnr=2,rufnamefeldnr=3,geburtsdatumfeldnr=4,bildschirmfeldnr=5,
druckerfeldnr=6;LET father=1;LET wartemeldnr=69,existiertnichtmeldnr=126,
falschesdatum=192,datumfehler=157,fehlermeldnr=56;TEXT VAR familienname,
rufname,geburtsdatum;BOOL VAR zeigen;BOOL VAR erstemitteilung:=TRUE ;LET 
vordruckmithjd="vordruck mitteilung ueber eine anmeldung mit hjd",
vordruckmitdiffd="vordruck mitteilung ueber eine anmeldung mit diffd",
vordruckabmeldung="vordruck mitteilung ueber eine abmeldung";LET 
maxanzahlbelegtekurse=15,anzahlkurskomponenten=4;ROW maxanzahlbelegtekurse
ROW anzahlkurskomponentenTEXT VAR kursdaten;LET lerngruppenindex=1,
fachlangtextindex=2,lehrerindex=3,fachschluesselindex=4;LET 
indexdiffdatenbeschreibung=1,indexdiffdatenschluessel=2;INT VAR 
anzahlderfaecher:=1,anzahlderbelegtenkurse:=0,anzahlderdiffdaten:=0;INT VAR 
zaehler,zaehler1,zaehler2;TEXT VAR fachkuerzel;LET weiblich="w",maennlich="m"
,anredeweibl="Fr.",anredemaennl="Hr.",erstehalbj="1",auszufuellendesfeld=
"___________________________",trennsymbol=" ",punkt=".",niltext="",nildatum=
"01.01.00",textwahlpflichtfach="Wahlpflichtf. ";TEXT CONST 
auszufuellendefelderunterschrnoteentlbuecher:="__________ ____ ________";
TEXT CONST auszufuellendesfeldlehrer:="____________________________________ "
;TEXT CONST matrixfeld:="_______ "+auszufuellendesfeldlehrer+
auszufuellendefelderunterschrnoteentlbuecher;LET maxanzahlderfaecher=100;ROW 
maxanzahlderfaecherROW 2TEXT VAR faecherkartei;LET karteifachschluesselindex=
1,karteifachlangtext=2;LET anzstacktupel=25;PROC initialisierekursdaten:FOR 
zaehler1FROM 1UPTO maxanzahlbelegtekurseREP FOR zaehler2FROM 1UPTO 
anzahlkurskomponentenREP kursdaten(zaehler1)(zaehler2):=niltextPER PER END 
PROC initialisierekursdaten;PROC holekursdaten:INT VAR i;
anzahlderbelegtenkurse:=length(wert(fnrhjdfach))DIV 2;FOR iFROM 1UPTO 
anzahlderbelegtenkurseREP fachkuerzel:=subtext(wert(fnrhjdfach),i*2-1,i*2);
kursdaten(i)(fachschluesselindex):=compress(fachkuerzel);kursdaten(i)(
lerngruppenindex):=fachkuerzel+trennsymbol+subtext(wert(fnrhjdlerngrpkenn),i*
4-3,i*4);PER ;END PROC holekursdaten;PROC suchelangtextzufachschluessel(INT 
VAR anzahlderschluessel):INT VAR i;FOR iFROM 1UPTO anzahlderschluesselREP 
zaehler:=0;REP zaehlerINCR 1UNTIL zaehler>anzahlderfaecherCOR faecherkartei(
zaehler)(karteifachschluesselindex)=kursdaten(i)(fachschluesselindex)PER ;IF 
faecherkartei(zaehler)(karteifachschluesselindex)=kursdaten(i)(
fachschluesselindex)THEN kursdaten(i)(fachlangtextindex):=faecherkartei(
zaehler)(karteifachlangtext);FI PER ;END PROC suchelangtextzufachschluessel;
PROC zuordnunglerngruppelehrer:INT VAR i;anzahlderbelegtenkurse:=length(wert(
fnrhjdfach))DIV 2;FOR iFROM 1UPTO anzahlderbelegtenkurseREP kursdaten(i)(
lehrerindex):=lehrerzukurs(subtext(wert(fnrhjdfach),i*2-1,i*2),i)PER ;END 
PROC zuordnunglerngruppelehrer;TEXT PROC lehrerzukurs(TEXT CONST fachkuerzel,
INT CONST wievielte):INT VAR i:=wievielte;suchelerngruppe;IF dbstatus=okTHEN 
suchelehrerELSE auszufuellendesfeldlehrerFI .suchelerngruppe:putwert(fnrlvsj,
wert(fnrhjdsj));putwert(fnrlvhj,wert(fnrhjdhj));putwert(fnrlvfachkennung,
fachkuerzel+compress(subtext(wert(fnrhjdlerngrpkenn),i*4-3,i*4)));putwert(
fnrlvjgst,wert(fnrhjdjgst));search(dnrlehrveranstaltungen,TRUE ).suchelehrer:
putwert(dnrlehrer+1,wert(fnrlvparaphe));search(dnrlehrer,TRUE );IF dbstatus<>
okTHEN auszufuellendesfeldlehrerELSE kompletteanredeFI .kompletteanrede:text(
anrede+lehrertitel+lehrerzusatz+trennsymbol+wert(fnrlfamname),length(
auszufuellendesfeldlehrer)).anrede:IF wert(fnrlgeschlecht)=weiblichTHEN 
anredeweiblELIF wert(fnrlgeschlecht)=maennlichTHEN anredemaennlELSE niltext
FI .lehrertitel:IF wert(fnrlamtsbeztitel)=niltextTHEN niltextELSE trennsymbol
+wert(fnrlamtsbeztitel)FI .lehrerzusatz:IF wert(fnrlzusatz)=niltextTHEN 
niltextELSE trennsymbol+wert(fnrlzusatz)FI .ENDPROC lehrerzukurs;PROC 
sonderwertfueradressaten:adressat((wert(fnrsurufnames)SUB 1)+punkt+
trennsymbol+wert(fnrsufamnames))END PROC sonderwertfueradressaten;PROC 
sonderwerteallgschuelerdaten:IF wert(fnrsunamenszusatzs)<>niltextTHEN 
setzesonderwert(swschuelername,wert(fnrsurufnames)+trennsymbol+wert(
fnrsunamenszusatzs)+trennsymbol+wert(fnrsufamnames))ELSE setzesonderwert(
swschuelername,wert(fnrsurufnames)+trennsymbol+wert(fnrsufamnames))FI ;
setzesonderwert(swgeburtsdatum,wert(fnrsugebdatums));END PROC 
sonderwerteallgschuelerdaten;PROC 
sonderwerteschuelerdatenfueranmeldebestaetigung:sonderwerteallgschuelerdaten;
setzesonderwert(swstrhausnr,wert(fnrsustrnrs));setzesonderwert(swplzort,wert(
fnrsuplzorts));setzesonderwert(swtelephonnr,wert(fnrsutelnrs));END PROC 
sonderwerteschuelerdatenfueranmeldebestaetigung;PROC sonderwertfueraktjgst:
aktuellejgst:=wert(fnrsusgrpjgst)+wert(fnrsusgrpjgst+1);setzesonderwert(
swaktjgst,aktuellejgst);END PROC sonderwertfueraktjgst;PROC 
sonderwertfuerklassenlehrer:sucheklassenlehrer;IF dbstatus=okTHEN IF wert(
fnrlgeschlecht)=weiblichTHEN tutorlehrer:=anredeweibl+trennsymbolELIF wert(
fnrlgeschlecht)=maennlichTHEN tutorlehrer:=anredemaennl+trennsymbolELSE 
tutorlehrer:=niltextFI ;IF wert(fnrlzusatz)<>niltextTHEN tutorlehrer:=
tutorlehrer+wert(fnrlzusatz)+trennsymbolFI ;setzesonderwert(swklassenlehrer,
text(tutorlehrer+wert(fnrlfamname),37));FI .sucheklassenlehrer:
sucheschuelergruppe;suchelehrer.sucheschuelergruppe:putwert(fnrsgrpsj,
aktuellesschuljahr);putwert(fnrsgrphj,aktuelleshalbjahr);putwert(fnrsgrpjgst,
wert(fnrsusgrpjgst));putwert(fnrsgrpkennung,wert(fnrsusgrpzugtut));search(
dnraktschuelergruppen,TRUE ).suchelehrer:inittupel(dnrlehrer);IF dbstatus=ok
THEN putwert(fnrlparaphe,wert(fnrsgrplehrer));search(dnrlehrer,TRUE )FI .END 
PROC sonderwertfuerklassenlehrer;PROC bildefaecherbestand:
initialisierefaecherkartei;vorbereitung;leseschleife.
initialisierefaecherkartei:FOR zaehler1FROM 1UPTO maxanzahlderfaecherREP FOR 
zaehler2FROM 1UPTO karteifachlangtextREP faecherkartei(zaehler1)(zaehler2):=
niltextPER PER .vorbereitung:BOOL VAR wenigergelesen:=FALSE ;INT VAR anztupel
;inittupel(dnrfaecher);anztupel:=anzstacktupel;anzahlderfaecher:=0;
multisearchforward(dnrfaecher,anztupel);evtweniger.leseschleife:WHILE 
anztupel>0CAND anzahlderfaecher<=maxanzahlderfaecherREP anzahlderfaecherINCR 
1;anztupelDECR 1;multisucc;faecherkartei(anzahlderfaecher)(1):=wert(
dnrfaecher+1);faecherkartei(anzahlderfaecher)(2):=wert(dnrfaecher+2);IF 
anztupel=0CAND NOT wenigergelesenTHEN anztupel:=anzstacktupel;multisucc(
dnrfaecher,anztupel);evtwenigerFI PER .evtweniger:IF anztupel<anzstacktupel
THEN wenigergelesen:=TRUE FI .END PROC bildefaecherbestand;PROC 
mitteilungeingang:standardvproc(maske);IF erstemitteilungTHEN 
bildefaecherbestand;erstemitteilung:=FALSE FI ;END PROC mitteilungeingang;
PROC mitteilungende:erstemitteilung:=TRUE ;enter(2)END PROC mitteilungende;
BOOL PROC sonderwertemitteilungneuangmithjd:initialisierekursdaten;
initialisieresonderwerte;sonderwertfueradressaten;
sonderwertfuereintrittsdatum;sonderwerteschuelerdatenfueranmeldebestaetigung;
sonderwertfueraktjgst;bestimmekurse;sonderwertfuerklassenlehrer;
sonderwertefuerkurse;TRUE .sonderwertfuereintrittsdatum:setzesonderwert(
sweintrittsdatum,wert(fnrsueintrittsdats)).bestimmekurse:holekursdaten;
suchelangtextzufachschluessel(anzahlderbelegtenkurse);
zuordnunglerngruppelehrer;.sonderwertefuerkurse:swkurse:=swkursanfang;FOR 
zaehler1FROM 1UPTO anzahlderbelegtenkurseREP setzesonderwert(swkurse,
kursdaten(zaehler1)(lerngruppenindex));swkurseINCR 1;setzesonderwert(swkurse,
kursdaten(zaehler1)(fachlangtextindex));swkurseINCR 1;setzesonderwert(swkurse
,kursdaten(zaehler1)(lehrerindex));swkurseINCR 1;PER .END PROC 
sonderwertemitteilungneuangmithjd;BOOL PROC 
sonderwertemitteilungneuangmitdiffd:initialisierekursdaten;
initialisieresonderwerte;sonderwertfueradressaten;
sonderwertfuereintrittsdatum;sonderwerteschuelerdatenfueranmeldebestaetigung;
sonderwertfueraktjgst;bestimmediffdaten;sonderwertfuerklassenlehrer;
sonderwertefuerdiffdaten;TRUE .sonderwertfuereintrittsdatum:setzesonderwert(
sweintrittsdatum,wert(fnrsueintrittsdats)).bestimmediffdaten:
anzahlderdiffdaten:=0;ermittlediefremdsprachen;
ueberpruefeobreligionsteilnahme;ueberpruefeobkunstodermusik;IF wert(
fnrsusgrpjgst)=jgst09THEN ermittlewp09FI ;IF wert(fnrsusgrpjgst)=jgst10THEN 
ermittlewp10FI ;ermittleags.ermittlediefremdsprachen:INT VAR 
anzahlderbelegtenfremdsprachen:=1;INT VAR wievieltesprache:=0;REP fachkuerzel
:=wert(fnrdd1fremdfach+wievieltesprache);IF fachkuerzel<>niltextTHEN 
anzahlderdiffdatenINCR 1;kursdaten(anzahlderdiffdaten)(
indexdiffdatenbeschreibung):=text(anzahlderbelegtenfremdsprachen)+
". Fremdsprache:";anzahlderbelegtenfremdsprachenINCR 1;kursdaten(
anzahlderdiffdaten)(indexdiffdatenschluessel):=fachkuerzel;FI ;
wievieltespracheINCR 3UNTIL (fnrdd1fremdfach+wievieltesprache)>fnrdd4fremde
PER .ueberpruefeobreligionsteilnahme:IF wert(fnrddreliunter)<>niltextCAND (
wert(fnrddreliunter+1)=nildatum)OR (wert(fnrddreliunter+1)<>nildatumAND wert(
fnrddreliunter+2)<>nildatum)THEN anzahlderdiffdatenINCR 1;kursdaten(
anzahlderdiffdaten)(indexdiffdatenbeschreibung):="Religion:";kursdaten(
anzahlderdiffdaten)(indexdiffdatenschluessel):=wert(fnrddreliunter)FI .
ueberpruefeobkunstodermusik:IF wert(fnrddkunstmusik)<>niltextTHEN 
anzahlderdiffdatenINCR 1;kursdaten(anzahlderdiffdaten)(
indexdiffdatenbeschreibung):="Kunst/Musik:";kursdaten(anzahlderdiffdaten)(
indexdiffdatenschluessel):=wert(fnrddkunstmusik)FI .ermittlewp09:TEXT VAR txt
;IF erstehalbjahrTHEN txt:=textwahlpflichtfach+"09.1:";wps(fnrddfach091a,
anzahlderdiffdaten,txt);wps(fnrddfach091b,anzahlderdiffdaten,txt)ELSE txt:=
textwahlpflichtfach+"09.2:";wps(fnrddfach092a,anzahlderdiffdaten,txt);wps(
fnrddfach092b,anzahlderdiffdaten,txt)FI .ermittlewp10:IF erstehalbjahrTHEN 
txt:=textwahlpflichtfach+"10.1:";wps(fnrddfach101a,anzahlderdiffdaten,txt);
wps(fnrddfach101b,anzahlderdiffdaten,txt);ELSE txt:=textwahlpflichtfach+
"10.2:";wps(fnrddfach102a,anzahlderdiffdaten,txt);wps(fnrddfach102b,
anzahlderdiffdaten,txt)FI .erstehalbjahr:erstehalbj=sonderwert(
swaktuelleshalbjahr).ermittleags:INT VAR wievielteag:=0;REP fachkuerzel:=wert
(fnrddagthema1+wievielteag);IF fachkuerzel<>niltextTHEN anzahlderdiffdaten
INCR 1;kursdaten(anzahlderdiffdaten)(indexdiffdatenbeschreibung):="AG:";
kursdaten(anzahlderdiffdaten)(indexdiffdatenschluessel):=fachkuerzel;FI ;
wievielteagINCR 3#2#UNTIL (fnrddagthema1+wievielteag)>fnrddagthema3PER .
sonderwertefuerdiffdaten:swkurse:=swkursanfang;FOR zaehler1FROM 1UPTO 
anzahlderdiffdatenREP FOR zaehler2FROM 1UPTO indexdiffdatenschluesselREP 
setzesonderwert(swkurse,kursdaten(zaehler1)(zaehler2));swkurseINCR 1PER PER .
END PROC sonderwertemitteilungneuangmitdiffd;PROC wps(INT CONST fnr,INT VAR 
anzahlderdiffdaten,TEXT CONST txt):IF wert(fnr)<>niltextTHEN 
anzahlderdiffdatenINCR 1;kursdaten(anzahlderdiffdaten)(
indexdiffdatenbeschreibung):=txt;kursdaten(anzahlderdiffdaten)(
indexdiffdatenschluessel):=wert(fnr)FI ENDPROC wps;BOOL PROC 
sonderwertemitteilungabmeldung:initialisierekursdaten;
initialisieresonderwerte;sonderwertezumaufbaueinermatrix;
sonderwertfueradressaten;sonderwerteallgschuelerdaten;
abgangsdatumundabgangsgrund;sonderwertfueraktjgst;
sonderwertefuerkursebeimabgang;sonderwertfuerklassenlehrer;
sonderwertfuerabgangsgrundundabschluss;TRUE .abgangsdatumundabgangsgrund:
TEXT VAR abgdatum:=wert(fnrsuabgdats);IF abgdatum=nildatumTHEN abgdatum:=""
FI ;setzesonderwert(swabgangsdatum,abgdatum);TEXT VAR abgkuerzel:=wert(
fnrsuabggrund);TEXT VAR abskuerzel:=wert(fnrsuabschluss);.
sonderwertfuerabgangsgrundundabschluss:IF langtextgefunden(
bestandfuerabschluss,abskuerzel,abslangtext)THEN setzesonderwert(
swerreichterabschluss,abslangtext)ELSE setzesonderwert(swerreichterabschluss,
auszufuellendesfeld)FI ;IF langtextgefunden(bestandfuerabgang,abgkuerzel,
abglangtext)THEN setzesonderwert(swabgangsgrund,abglangtext)ELSE 
setzesonderwert(swabgangsgrund,auszufuellendesfeld)FI .
sonderwertefuerkursebeimabgang:IF hjdvorhandenTHEN holekursdaten;
zuordnunglerngruppelehrer;swkurse:=swkursanfangELSE anzahlderbelegtenkurse:=0
FI ;FOR zaehler1FROM 1UPTO anzahlderbelegtenkurseREP setzesonderwert(swkurse,
plusanhang(kursdaten(zaehler1)(fachschluesselindex),subtext(wert(
fnrhjdlerngrpkenn),zaehler1*4-3,zaehler1*4)));swkurseINCR 1;setzesonderwert(
swkurse,kursdaten(zaehler1)(lehrerindex));swkurseINCR 1PER .
sonderwertezumaufbaueinermatrix:setzesonderwert(
swfelderunterschrnoteentlbuecher,auszufuellendefelderunterschrnoteentlbuecher
);setzesonderwert(swmatrixfeld,matrixfeld).END PROC 
sonderwertemitteilungabmeldung;TEXT PROC plusanhang(TEXT CONST t,t2):text(t,3
)+text(t2,5)ENDPROC plusanhang;BOOL PROC langtextgefunden(TEXT CONST bestand,
kuerzel,TEXT VAR lang):systemdboff;putwert(fnrschlsachgebiet,bestand);putwert
(fnrschlschluessel,kuerzel);search(dnrschluessel,TRUE );lang:=wert(
fnrschllangtext);dbstatus=okENDPROC langtextgefunden;PROC lesemaskenwerte:
familienname:=standardmaskenfeld(namefeldnr);rufname:=standardmaskenfeld(
rufnamefeldnr);geburtsdatum:=standardmaskenfeld(geburtsdatumfeldnr);zeigen:=
standardmaskenfeld(bildschirmfeldnr)<>niltextEND PROC lesemaskenwerte;PROC 
ermittledievorliegendendaten:standardmeldung(wartemeldnr,niltext);IF 
aktuelleshalbjahr=""THEN aktuelleshalbjahr:=schulkenndatum(textschulhalbjahr)
;aktuellesschuljahr:=schulkenndatum(textschuljahr);FI ;
uebernimmschluesselwerte;search(ixsustatfamrufgeb,FALSE );schuelergefunden:=(
dbstatus=ok)CAND (wert(fnrsufamnames)=familienname)CAND (wert(fnrsurufnames)=
rufnameCOR rufname="")CAND (wert(fnrsugebdatums)=datumskonversion(
geburtsdatum)COR geburtsdatum="");IF schuelergefundenCAND abmeldungCAND 
falschesabmelddatumTHEN schuelergefunden:=FALSE ;meldefalschesdatum;
zurueckzumdialogELSE weiterverarbeitungFI .falschesabmelddatum:IF 
schuljahranfang=""THEN schuljahranfang:=schulkenndatum(textschuljahranfang);
schuljahrende:=schulkenndatum(textschuljahrende)FI ;NOT ((date(wert(
fnrsuabgdats))>=date(schuljahranfang))CAND (date(wert(fnrsuabgdats))<=date(
schuljahrende))).weiterverarbeitung:IF schuelergefundenTHEN 
halbjahresdatenholen;ueberpruefeobkursdatenvorliegen;IF NOT hjdvorhandenTHEN 
diffdatenholenFI ELSE meldeschuelerexistiertnicht;zurueckzumdialogFI .
halbjahresdatenholen:inittupel(dnrhalbjahresdaten);TEXT VAR tidhjddaten:=wert
(fnrsutidakthjd);readtid(dnrhalbjahresdaten,tidhjddaten).diffdatenholen:
inittupel(dnrdiffdaten);TEXT VAR tiddiffdaten:=wert(fnrsutiddiffdaten);
readtid(dnrdiffdaten,tiddiffdaten).meldeschuelerexistiertnicht:
standardmeldung(existiertnichtmeldnr,niltext).meldefalschesdatum:
standardmeldung(falschesdatum,niltext).ueberpruefeobkursdatenvorliegen:
hjdvorhanden:=dbstatus=okCAND wert(fnrhjdfach)<>"".zurueckzumdialog:return(
father).END PROC ermittledievorliegendendaten;PROC uebernimmschluesselwerte:
putwert(fnrsustatuss,laufenderbestand);putwert(fnrsufamnames,familienname);
putwert(fnrsurufnames,rufname);putwert(fnrsugebdatums,datumskonversion(
geburtsdatum))ENDPROC uebernimmschluesselwerte;PROC mitteilungneuangstarten:
reinitparsing;lesemaskenwerte;IF NOT (wahldruckeroderbildschirmok)THEN 
meldedenfehler;zurueckzumdialogELSE IF (schluesselmitdatum)AND (NOT (datumok)
)THEN meldefehlerbeidatum;zurueckzumdialogELSE IF (schluesselmitdatumXOR 
schluesselohnedatumok)THEN neuangemeldeteweiterELSE meldedenfehler;
zurueckzumdialogFI ;FI ;FI .neuangemeldeteweiter:abmeldung:=FALSE ;
ermittledievorliegendendaten;IF schuelergefundenTHEN 
initialisieredruckerfuermitteilung;IF hjdvorhandenTHEN anschreibenstart(
ixsustatfamrufgeb,vordruckmithjd,zeigen,TRUE ,BOOL PROC 
sonderwertemitteilungneuangmithjd,BOOL PROC dummystop)ELSE anschreibenstart(
ixsustatfamrufgeb,vordruckmitdiffd,zeigen,TRUE ,BOOL PROC 
sonderwertemitteilungneuangmitdiffd,BOOL PROC dummystop)FI ;FI ;.END PROC 
mitteilungneuangstarten;PROC meldedenfehler:standardmeldung(fehlermeldnr,
niltext)END PROC meldedenfehler;PROC zurueckzumdialog:return(father)END PROC 
zurueckzumdialog;BOOL PROC wahldruckeroderbildschirmok:standardmaskenfeld(
bildschirmfeldnr)<>niltextXOR standardmaskenfeld(druckerfeldnr)<>niltextEND 
PROC wahldruckeroderbildschirmok;BOOL PROC schluesselmitdatum:familienname<>
niltextAND rufname<>niltextAND geburtsdatum<>niltextEND PROC 
schluesselmitdatum;BOOL PROC schluesselohnedatumok:familienname<>niltextAND 
geburtsdatum=niltextEND PROC schluesselohnedatumok;BOOL PROC datumok:
standardpruefe(6,6,0,0,niltext,eingabestatus);IF NOT (eingabestatus=0)THEN 
FALSE ELSE TRUE FI END PROC datumok;PROC meldefehlerbeidatum:standardmeldung(
datumfehler,niltext)END PROC meldefehlerbeidatum;PROC 
mitteilungabmeldungstarten:reinitparsing;lesemaskenwerte;IF NOT (
wahldruckeroderbildschirmok)THEN meldedenfehler;zurueckzumdialogELSE IF (
schluesselmitdatum)AND (NOT (datumok))THEN meldefehlerbeidatum;
zurueckzumdialogELSE IF (schluesselmitdatumXOR schluesselohnedatumok)THEN 
abgemeldeteweiterELSE meldedenfehler;zurueckzumdialogFI ;FI ;FI .
abgemeldeteweiter:abmeldung:=TRUE ;ermittledievorliegendendaten;IF 
schuelergefundenTHEN initialisieredruckerfuermitteilung;anschreibenstart(
ixsustatfamrufgeb,vordruckabmeldung,zeigen,TRUE ,BOOL PROC 
sonderwertemitteilungabmeldung,BOOL PROC dummystop)FI .END PROC 
mitteilungabmeldungstarten;BOOL PROC dummystop:TRUE ENDPROC dummystop;END 
PACKET anschrmitteilungenneuangemeldeteundabgemeldete;