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
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
|
PACKET erfschuelerdatenDEFINES sustartunderfassungsbildschirmaufbauen,
suvonerfassungsbildschirmeinlesen,suanmeldungbearbeiten,suanmeldungeinfuegen,
suanmeldungzeigen,suanmeldungloeschen,suanmeldungloeschenausfuehren,
suanmeldungspeichern,suschuelerbsblaettern,sudatenimbildschirmkopieren,
suausgesuchtezurbearbeitung,suanmeldungausgesuchteloeschen,
suzurueckzumanfangsbildschirm,suerfassungswert,suerfassungschueler,
pruefungschueler:LET maskenstammname="ms erf schuelerdaten",maskennameeingang
="ms schuelerangabe",maskennamebearbeitung="ms bearb schuelerdaten";LET
bestandneu5="n05",bestandneu11="n11",bestandneusonst="nso",bestandlaufschulj=
"ls",#bestandschuelergruppen="aktuelle Schülergruppen",#bestandschulen=
"Schulen",kuerzelzugangaktjgst="z";LET meldungloeschfrage=65,meldungloeschung
=83,meldungkeineloeschung=84,meldunggibtsschon=70,meldunggibtsnicht=71,
meldungletzter=67,meldungkeineliste=68,meldungspeicherung=80,meldungaenderung
=81,meldungkeineaenderung=82,meldunglistenerstellung=7,
meldungblaetterngehtnicht=72,meldungspeicherungfehlerhaft=73,
meldungloeschenfehlerhaft=74,meldungangabengenauer=129,meldungfalschesdatum=
157,meldungbittename=166,pruefemeldung=57;LET fmeldbittefuellen=52,
fmeldnichtimbestand=55,fmeldfalschesdatum=157,fmeldnumundbegrenzt=54,
fmeldbitteanderejgst=85,weiblich="w",maennlich="m",bestandstaaten=
"c02 staaten",bestandreligion="c02 relizugehoerigkeit",bestandzugang=
"c02 zugang";LET fbs1=1,fbs2=2,fbs3=3,fbs4=4,erstesfeldbeierfassungbs1=2,
erstesfeldbeierfassungbs2=2,erstesfeldbeierfassungbs3=3,
erstesfeldbeierfassungbs4=3,erstererfbildschirm=2,letztererfbildschirm=4;LET
fnrname=2,fnrnamenszus=3,fnrgebname=4,fnrvornamen=5,fnrrufname=6,fnrsustr=7,
fnrsutelefon=8,fnrsuplzort=9,fnrwohntbei=10,fnrortsteil=11,fnrgebdat=12,
fnrgeschlecht=13,fnrstaatsan=14,fnrreligion=15,fnrverwandt=16,fnrerzname=17,
fnrerznamenszus=18,fnrerzvornamen=19,fnrerzstr=20,fnrerztelefon=21,
fnrerzplzort=22,fnrloeschfeld=23,fnrgebort=3,fnrkreisland=4,fnrmuttersprache=
5,fnraussiedler=6,fnreinschulung=7,fnrschulkuerzel=8,fnrletzteklasse=9,
fnreintrittsdatum=10,fnreintrittjgst=11,fnrsek2=12,fnrjgst=13,fnrzug=14,
fnrzugang=15,fnrneuerzug=16,fnrvermerk1=17,fnrabdatum=23,fnrabgrund=24,
fnrneueschule=25,fnrabschluss=26,fnrreligionunterricht=3,
fnrreligionabmelddatum=4,fnrreligionanmelddatum=5,fnrfremdsprache=6,
fnrkunstmusik=18,fnrag=19,fnrwpsek1=28,fnrauswahlanfang=2,fnrauswahlende=5,
fnrneuan5=2,fnrneuan11=3,fnrneusonst=4,fnrneulaufschulj=5,fnrparamname=6,
fnrparamrufname=7,fnrparamgebdat=8,fnrparambearbname=2,fnrparambearbrufname=3
,fnrparambearbgebdat=4,fnrerstesausgabefeld=2,fnrletztesausgabefeld=40,
fnrausgabename=2;LET zahldervermerke=6,maxlaengenamebeiaenderung=32,
maxlaengenamebeikeineaenderung=26;LET pruefartdatum=6,pruefartauswahl=5;LET
satzeinfuegen=1,#satzaendern=2,#satzloeschen=3,satzneueschluessel=4;LET
kennungerfassungsprogramm=1,kennungbearbeitungsprogramm=2,
kennungzeigeprogramm=3;LET leer="",leerzeichen=" ",oblitrenner="$",
kennzmeldungauffaellig="#";LET jgst05="05",jgst11="11",jgstufe5=5,jgstufe10=
10,jgstufe11=11,jgstufe13=13;LET bsanzahl=4,maxfelderzahl=100;LET
anzschluesselsu=3;LET aktschuljahr="Schuljahr",akthalbjahr="Schulhalbjahr";
LET aendern=1,loeschen=2;BOOL VAR zurueckschreiben:=FALSE ;BOOL VAR
neuerschueler,neuenschuelereinfuegen,neuerschuelerersteintrag;BOOL VAR
zeigeprogramm:=FALSE ,mehrereloeschen:=FALSE ,feldschutzzumloeschengesetzt:=
FALSE ;FILE VAR f;INT VAR statussudatei:=0;INT VAR startpos;INT VAR
programmnummer;INT VAR bs,bsdraussen,fnrfehlerfeld;ROW bsanzahlROW
maxfelderzahlTEXT VAR erfassungsfeld;ROW bsanzahlTAG VAR maske;ROW bsanzahl
BOOL VAR maskegeholt;ROW anzschluesselsuTEXT VAR schluessel;ROW
anzschluesselsuTEXT VAR alterschluessel;TEXT VAR dateiname:="Schülerliste",
hjdtid:="",diffdatentid:="";#schultypsich:="",verskennzsich:="";#TEXT VAR
aktbestand,programmname,tupelsich;LET logtextbeginn1="Anw. 1.1.1 ",
logtextbeginn2="Anw. 1.2.2 ";BOOL PROC erfassungsprogramm:programmnummer=
kennungerfassungsprogrammEND PROC erfassungsprogramm;BOOL PROC
bearbeitungsprogramm:programmnummer=kennungbearbeitungsprogrammEND PROC
bearbeitungsprogramm;PROC sustartunderfassungsbildschirmaufbauen(INT CONST
progrnr):IF progrnr=kennungzeigeprogrammTHEN programmnummer:=
kennungbearbeitungsprogramm;zeigeprogramm:=TRUE ELSE programmnummer:=progrnr;
zeigeprogramm:=FALSE FI ;startprozedur;erfassungsbildschirmaufbauen;
suvonerfassungsbildschirmeinlesen.END PROC
sustartunderfassungsbildschirmaufbauen;PROC startprozedur:programmname:=text(
vergleichsknoten);reinitparsing;systemdboff;bildschirmeinitialisieren;
standardkopfmaskeausgeben(programmname);.END PROC startprozedur;PROC
bildschirmeinitialisieren:FOR bsFROM 1UPTO bsanzahlREP maskegeholt(bs):=
FALSE PER ;bs:=1;maskeholen(bs);bsdraussen:=0.END PROC
bildschirmeinitialisieren;PROC erfassungsbildschirmaufbauen:reinitparsing;
standardkopfmaskeaktualisieren(bstitel);erfassungsmaskeausgeben;
feldvorbelegungenbehandeln;felderausgeben.bstitel:IF bs>1THEN programmname+
" ("+text(bs-1)+".Bildschirm)"ELSE programmnameFI .erfassungsmaskeausgeben:
IF bs<>bsdraussenTHEN zeigemaske;bsdraussen:=bsFI .zeigemaske:show(maske(bs))
.felderausgeben:startpos:=fnrerstesausgabefeld;put(maske(bs),erfassungsfeld(
bs),startpos);IF zeigeprogrammCAND (bs<>fbs1)THEN feldschutzfuerallefelder;
startpos:=1ELSE startpos:=erstesfeldbeierfassung(bs)FI .
feldschutzfuerallefelder:INT VAR i;protect(maske(bs),1,FALSE );FOR iFROM
fnrerstesausgabefeldUPTO fnrletztesausgabefeldREP protect(maske(bs),i,TRUE )
PER .END PROC erfassungsbildschirmaufbauen;PROC maskeholen(INT CONST maskennr
):initmaske(maske(maskennr),initmaskenname);maskegeholt(maskennr):=TRUE .
initmaskenname:IF erfassungsprogrammTHEN maskenstammname+text(maskennr)ELSE
maskennamefuerbearbeitungFI .maskennamefuerbearbeitung:SELECT maskennrOF
CASE 1:maskennameeingangCASE 2:maskenstammname+text(maskennr)CASE 3:
maskennamebearbeitung+text(maskennr)CASE 4:maskenstammname+text(maskennr)
OTHERWISE ""END SELECT .END PROC maskeholen;PROC feldvorbelegungenbehandeln:
SELECT bsOF CASE 1:bsfelderinitialisierenCASE 2:vorbelegungen2CASE 3:
vorbelegungen3CASE 4:vorbelegungen4END SELECT .vorbelegungen2:
vorbelegungneuerschueler2;loeschfeldverdecken.loeschfeldverdecken:LET
rahmenzeichen="=";erfassungsfeld(bs)(fnrloeschfeld):=rahmenzeichen.
vorbelegungen3:vorbelegungname3;vorbelegungzugang;vorbelegungeintrittjgst;
feldschutzfuerfelderbeineuanmeldungen;.vorbelegungen4:vorbelegungname4.END
PROC feldvorbelegungenbehandeln;PROC vorbelegungname3:TEXT VAR vor,zus,nach;
vor:=erfassungsfeld(fbs2)(fnrrufname)+leerzeichen;zus:=erfassungsfeld(fbs2)(
fnrnamenszus);IF zus<>leerTHEN zusCAT leerzeichenFI ;nach:=erfassungsfeld(
fbs2)(fnrname);erfassungsfeld(bs)(fnrausgabename):=text(vor+zus+nach,
laengefnrausgabename).laengefnrausgabename:length(maske(bs),fnrausgabename).
END PROC vorbelegungname3;PROC vorbelegungzugang:IF aktbestand<>
bestandlaufschuljTHEN erfassungsfeld(bs)(fnrzugang):=kuerzelzugangaktjgst;
protect(maske(bs),fnrzugang,TRUE )ELSE protect(maske(bs),fnrzugang,FALSE )FI
.END PROC vorbelegungzugang;PROC vorbelegungname4:erfassungsfeld(bs)(
fnrausgabename):=erfassungsfeld(fbs3)(fnrausgabename).END PROC
vorbelegungname4;PROC vorbelegungneuerschueler2:IF neuerschuelerersteintrag
THEN neuerschuelerersteintrag:=FALSE ;erfassungsfeld(fbs2)(fnrname):=
erfassungsfeld(fbs1)(fnrparamname);erfassungsfeld(fbs2)(fnrrufname):=
erfassungsfeld(fbs1)(fnrparamrufname);erfassungsfeld(fbs2)(fnrvornamen):=
erfassungsfeld(fbs1)(fnrparamrufname);erfassungsfeld(fbs2)(fnrgebdat):=
erfassungsfeld(fbs1)(fnrparamgebdat)FI .END PROC vorbelegungneuerschueler2;
PROC vorbelegungeintrittjgst:protect(maske(bs),fnrsek2,FALSE );protect(maske(
bs),fnreintrittjgst,FALSE );IF aktbestand=bestandneu5THEN erfassungsfeld(bs)(
fnreintrittjgst):=jgst05;protect(maske(bs),fnreintrittjgst,TRUE )ELIF
aktbestand=bestandneu11THEN erfassungsfeld(bs)(fnreintrittjgst):=jgst11;
protect(maske(bs),fnreintrittjgst,TRUE );IF neuerschuelerTHEN
eintrittinsek2vorbelegenFI FI .END PROC vorbelegungeintrittjgst;PROC
eintrittinsek2vorbelegen:TEXT VAR schuljahr:=schulkenndatum(aktschuljahr);
schuljahr:=subtext(schuljahr,3,4);schuljahr:=schuljahr+text(int(schuljahr)+1)
;erfassungsfeld(bs)(fnrsek2):=schuljahr;protect(maske(bs),fnrsek2,TRUE ).END
PROC eintrittinsek2vorbelegen;PROC feldschutzfuerfelderbeineuanmeldungen:IF
aktbestand=bestandlaufschuljTHEN protect(maske(bs),fnrzug,FALSE );IF
neuerschuelerTHEN protect(maske(bs),fnrjgst,FALSE )ELSE protect(maske(bs),
fnrjgst,TRUE )FI ELSE protect(maske(bs),fnrjgst,TRUE );protect(maske(bs),
fnrzug,TRUE )FI .END PROC feldschutzfuerfelderbeineuanmeldungen;PROC
suvonerfassungsbildschirmeinlesen:get(maske(bs),erfassungsfeld(bs),startpos);
loeschemeldung(maske(bs)).END PROC suvonerfassungsbildschirmeinlesen;PROC
suanmeldungbearbeiten:neuenschuelereinfuegen:=FALSE ;IF
sinnvolleauswahlgetroffenTHEN bearbeitungvorbereitungbeginnenELSE startpos:=
fnrfehlerfeld;return(1)FI .bearbeitungvorbereitungbeginnen:IF
namenangabenausreichendTHEN bearbeitungbeginnenELSE startpos:=fnrfehlerfeld;
return(1)FI .namenangabenausreichend:IF erfassungsprogrammTHEN
namenangabenausreichendbeierfassungELSE
namenangabenausreichendbeibearbeitungoderzeigenFI .bearbeitungbeginnen:
legeaktuellenbestandfest;BOOL VAR suexistiert:=FALSE ;schluesselbereitstellen
;pruefeobnameexistiert(suexistiert);IF suexistiertTHEN saveupdateposition(
dnrschueler);diffdatenlesen;schluessel(1):=wert(fnrsufamnames);schluessel(2)
:=wert(fnrsurufnames);schluessel(3):=datumrekonversion(wert(fnrsugebdatums));
loeschedieerstellteobjektliste;zurueckschreiben:=TRUE ;#
schuelerausstatwuerfelentfernen;dr10.05.88#bereiteaenderungvor;
suvonerfassungsbildschirmeinlesenELSE meldeauffaellig(maske(bs),
meldunggibtsnicht);IF erfassungsprogrammTHEN startpos:=fnrparamnameELSE
startpos:=fnrparambearbnameFI ;return(1)FI .END PROC suanmeldungbearbeiten;
BOOL PROC sinnvolleauswahlgetroffen:fnrfehlerfeld:=0;IF erfassungsprogramm
THEN pruefe(pruefartauswahl,maske(bs),erfassungsfeld(fbs1),fnrauswahlanfang,
fnrauswahlende,0,leer,fnrfehlerfeld);IF fnrfehlerfeld=0THEN IF erfassungsfeld
(fbs1)(fnrparamgebdat)<>leerTHEN pruefe(pruefartdatum,maske(bs),
erfassungsfeld(fbs1),fnrparamgebdat,0,0,leer,fnrfehlerfeld);FI FI ;
fnrfehlerfeld=0ELSE IF erfassungsfeld(fbs1)(fnrparambearbgebdat)<>leerTHEN
pruefe(pruefartdatum,maske(bs),erfassungsfeld(fbs1),fnrparambearbgebdat,0,0,
leer,fnrfehlerfeld);FI ;fnrfehlerfeld=0FI .END PROC sinnvolleauswahlgetroffen
;TEXT PROC suerfassungswert(INT CONST feldnr):IF (feldnr>maxfelderzahl)OR (
feldnr<1)THEN ""ELSE erfassungsfeld(bs)(feldnr)FI .END PROC suerfassungswert;
PROC schluesselbereitstellen:IF erfassungsprogrammTHEN schluessel(1):=
erfassungsfeld(fbs1)(fnrparamname);schluessel(2):=erfassungsfeld(fbs1)(
fnrparamrufname);schluessel(3):=erfassungsfeld(fbs1)(fnrparamgebdat)ELIF
bearbeitungsprogrammTHEN schluessel(1):=erfassungsfeld(fbs1)(
fnrparambearbname);schluessel(2):=erfassungsfeld(fbs1)(fnrparambearbrufname);
schluessel(3):=erfassungsfeld(fbs1)(fnrparambearbgebdat)FI ;alterschluessel(1
):=schluessel(1);alterschluessel(2):=schluessel(2);alterschluessel(3):=
schluessel(3);END PROC schluesselbereitstellen;PROC pruefeobnameexistiert(
BOOL VAR suexist):TEXT VAR datenbankwerte,schluesselwerte;inittupel(
dnrschueler);putwert(fnrsufamnames,schluessel(1));putwert(fnrsurufnames,
schluessel(2));putwert(fnrsugebdatums,datumskonversion(schluessel(3)));
putwert(fnrsustatuss,aktbestand);IF neuenschuelereinfuegenTHEN search(
dnrschueler,FALSE )ELSE search(ixsustatfamrufgeb,FALSE );FI ;IF (NOT
neuenschuelereinfuegenCAND dbstatus=okCAND wert(fnrsustatuss)=aktbestand)OR (
neuenschuelereinfuegenCAND dbstatus=ok)THEN datenbankwerte:=wert(
fnrsurufnames)+datumrekonversion(wert(fnrsugebdatums));schluesselwerte:=
schluessel(2)+schluessel(3);suexist:=(wert(fnrsufamnames)=schluessel(1)CAND (
(schluessel(2)=leerAND schluessel(3)=leer)OR (pos(datenbankwerte,
schluesselwerte)=1)))ELSE suexist:=FALSE FI .END PROC pruefeobnameexistiert;
PROC bereiteaenderungvor:savetupel(dnrschueler,tupelsich);neuerschueler:=
FALSE ;holemaskenfallsnotwendig;fuelledbdateninfelder;bs:=erstererfbildschirm
;erfassungsbildschirmaufbauen.fuelledbdateninfelder:INT VAR bsn;FOR bsnFROM
erstererfbildschirmUPTO letztererfbildschirmREP holedbwerte(bsn)PER .END
PROC bereiteaenderungvor;PROC holemaskenfallsnotwendig:IF NOT (maskegeholt(
erstererfbildschirm))THEN FOR bsFROM erstererfbildschirmUPTO
letztererfbildschirmREP IF NOT maskegeholt(bs)THEN maskeholen(bs)FI ;PER FI .
END PROC holemaskenfallsnotwendig;PROC suanmeldungeinfuegen:
neuenschuelereinfuegen:=TRUE ;IF sinnvolleauswahlgetroffenTHEN
neueintragbeginnenELSE startpos:=fnrfehlerfeld;return(1)FI .
neueintragbeginnen:legeaktuellenbestandfest;BOOL VAR suexistiert:=FALSE ;
schluesselbereitstellen;pruefeobnameexistiert(suexistiert);IF suexistiert
THEN meldeauffaellig(maske(bs),meldunggibtsschon);return(1)ELSE
zurueckschreiben:=FALSE ;bereiteneueintragvor;
suvonerfassungsbildschirmeinlesenFI .bereiteneueintragvor:neuerschueler:=
TRUE ;neuerschuelerersteintrag:=TRUE ;holemaskenfallsnotwendig;bs:=
erstererfbildschirm;erfassungsbildschirmaufbauen.END PROC
suanmeldungeinfuegen;PROC legeaktuellenbestandfest:IF bearbeitungsprogramm
THEN aktbestand:=bestandlaufschuljELIF erfassungsfeld(fbs1)(fnrneuan5)<>leer
THEN aktbestand:=bestandneu5ELIF erfassungsfeld(fbs1)(fnrneuan11)<>leerTHEN
aktbestand:=bestandneu11ELIF erfassungsfeld(fbs1)(fnrneusonst)<>leerTHEN
aktbestand:=bestandneusonstELIF erfassungsfeld(fbs1)(fnrneulaufschulj)<>leer
THEN aktbestand:=bestandlaufschuljFI .END PROC legeaktuellenbestandfest;PROC
suanmeldungspeichern(BOOL CONST zuspeichern):BOOL VAR suexistiert;TEXT VAR
schuelertupel:="";IF NOT zuspeichernTHEN IF neuerschuelerTHEN
vorbereitendesnaechstenneuen;return(1)ELSE IF NOT zeigeprogrammTHEN melde(
maske(bs),meldungkeineaenderung,subtext(namefuermeldung,1,
maxlaengenamebeikeineaenderung)+kennzmeldungauffaellig)FI ;
vorbereitendernaechstenschluesselbehandlungFI ELSE speicherungstartenFI .
speicherungstarten:INT VAR fehlerstatus:=0;
pruefeobbeineuemschuelerschonvorhanden;IF datenfehlerfreiTHEN datenschreiben;
IF statussudatei<>0THEN melde(maske(bs),meldungspeicherungfehlerhaft,text(
statussudatei)+kennzmeldungauffaellig);#altenschuelerwiedereintragen;dr10.
05.88#return(1)ELIF neuerschuelerTHEN #schuelerinstatwuerfeleinfuegen;dr10.
05.88#vorbereitendesnaechstenneuen;return(1)ELSE #
schuelerinstatwuerfeleinfuegen;dr10.05.88#
vorbereitendernaechstenschluesselbehandlungFI ;ELSE fehlerbehandeln;return(1)
FI .pruefeobbeineuemschuelerschonvorhanden:IF falschesdatum(erfassungsfeld(
fbs2)(fnrgebdat))THEN fehlerstatus:=fnrgebdat;bs:=fbs2;
erfassungsbildschirmaufbauen;meldeauffaellig(maske(bs),meldungfalschesdatum);
ELSE schluessel(1):=erfassungsfeld(fbs2)(fnrname);schluessel(2):=
erfassungsfeld(fbs2)(fnrrufname);schluessel(3):=erfassungsfeld(fbs2)(
fnrgebdat);IF geaenderteschluesselfelderTHEN savetupel(dnrschueler,
schuelertupel);pruefeobnameexistiert(suexistiert);restoretupel(dnrschueler,
schuelertupel);IF suexistiertTHEN fehlerstatus:=fnrname;bs:=fbs2;
erfassungsbildschirmaufbauen;meldeauffaellig(maske(bs),meldunggibtsschon);
ELSE pruefeplausibilitaet(fehlerstatus);FI ELSE pruefeplausibilitaet(
fehlerstatus);FI FI .datenfehlerfrei:fehlerstatus=0.fehlerbehandeln:startpos
:=fehlerstatus.END PROC suanmeldungspeichern;PROC datenschreiben:
meldespeicherung;dbwertzuordnung;IF neuerschuelerTHEN logeintragvornehmen(
"Neueinfügen");neueneinfuegenELSE logeintragvornehmen("Änderung");
bearbeitetenschreibenFI ;.meldespeicherung:IF neuerschuelerTHEN melde(maske(
bs),meldungspeicherung,namefuermeldung+kennzmeldungauffaellig)ELSE melde(
maske(bs),meldungaenderung,subtext(namefuermeldung,1,
maxlaengenamebeiaenderung)+kennzmeldungauffaellig)FI .dbwertzuordnung:INT
VAR bsn;IF neuerschuelerTHEN inittupel(dnrschueler)FI ;FOR bsnFROM
erstererfbildschirmUPTO letztererfbildschirmREP setzedbwerte(bsn)PER ;.END
PROC datenschreiben;TEXT PROC namefuermeldung:LET kennznametrenner=".";(
schluessel(2)SUB 1)+kennznametrenner+schluessel(1).END PROC namefuermeldung;
PROC logeintragvornehmen(TEXT CONST logergaenzung):TEXT VAR eintrag;IF
erfassungsprogrammTHEN eintrag:=logtextbeginn1ELSE eintrag:=logtextbeginn2FI
;eintragCAT logergaenzung;eintragCAT " """;eintragCAT schluessel(1);eintrag
CAT ", ";eintragCAT schluessel(2);eintragCAT ", ";eintragCAT datumskonversion
(schluessel(3));eintragCAT """";logeintrag(eintrag)END PROC
logeintragvornehmen;PROC neueneinfuegen:diffdatentid:="";putwert(
fnrdddiffdatennr,unique(dnrdiffdaten));insert(dnrdiffdaten);IF dbstatus=ok
THEN search(dnrdiffdaten,TRUE );IF dbstatus=okTHEN diffdatentid:=gettid;FI
ELSE fehlerprotokoll(dnrdiffdaten,satzeinfuegen);FI ;putwert(
fnrsudiffdatennrs,wert(fnrdddiffdatennr));putwert(fnrsustatuss,aktbestand);
putwert(fnrsutiddiffdaten,diffdatentid);insert(dnrschueler);statussudatei:=
dbstatus;evtlaenderungderkurswahldatenvollziehenEND PROC neueneinfuegen;PROC
bearbeitetenschreiben:TEXT VAR sj:=schulkenndatum(aktschuljahr),hj:=
schulkenndatum(akthalbjahr);putwert(fnrsustatuss,aktbestand);
restoreupdateposition(dnrschueler);#update(dnrschueler);dr10.05.88#selupdate(
dnrschueler);statussudatei:=dbstatus;replace(dnrdiffdaten,wert(
fnrsutiddiffdaten));IF statussudatei=okCAND aktbestand=bestandlaufschuljTHEN
neueklasseinhalbjahresdateneintragen(schluessel,sj,hj,wert(fnrsusgrpjgst),
wert(fnrsusgrpzugtut))FI ;IF statussudatei=okCAND geaenderteschluesselfelder
THEN hjddateiupdate(dnrhalbjahresdaten,satzneueschluessel);
evtlaenderungderkurswahldatenvollziehenFI END PROC bearbeitetenschreiben;
BOOL PROC geaenderteschluesselfelder:schluessel(1)<>alterschluessel(1)OR
schluessel(2)<>alterschluessel(2)OR schluessel(3)<>alterschluessel(3)END
PROC geaenderteschluesselfelder;PROC
vorbereitendernaechstenschluesselbehandlung:IF exists(dateiname)THEN
holenaechstenschluesselauslisteELSE zurueckschreiben:=FALSE ;
suzurueckzumanfangsbildschirm(2);FI .holenaechstenschluesselausliste:BOOL
VAR ok,kannbearbeitetwerden:=FALSE ;holenaechstenmehrtlgschluesselausdatei(ok
);WHILE okREP pruefeobnameexistiert(ok);IF okTHEN saveupdateposition(
dnrschueler);diffdatenlesen;kannbearbeitetwerden:=TRUE ;ok:=FALSE ELSE
holenaechstenmehrtlgschluesselausdatei(ok)FI PER ;IF kannbearbeitetwerden
THEN zurueckschreiben:=TRUE ;IF mehrereloeschenTHEN bereiteloeschenvor;return
(1)ELSE #schuelerausstatwuerfelentfernen;dr10.05.88#bereiteaenderungvor;
return(1)FI ELSE zurueckschreiben:=FALSE ;behandleendederlistenabarbeitungFI
.behandleendederlistenabarbeitung:mehrereloeschen:=FALSE ;meldeauffaellig(
maske(bs),meldungletzter);suzurueckzumanfangsbildschirm(3).END PROC
vorbereitendernaechstenschluesselbehandlung;PROC sudatenimbildschirmkopieren:
INT VAR curspos:=startpos;IF bs=fbs2THEN IF curspos=fnrrufnameTHEN
erfassungsfeld(bs)(fnrrufname):=erfassungsfeld(bs)(fnrvornamen);put(maske(bs)
,erfassungsfeld(bs)(fnrrufname),fnrrufname)ELIF curspos=fnrerznameTHEN
erfassungsfeld(bs)(fnrerzname):=erfassungsfeld(bs)(fnrname);put(maske(bs),
erfassungsfeld(bs)(fnrerzname),fnrerzname);erfassungsfeld(bs)(fnrerznamenszus
):=erfassungsfeld(bs)(fnrnamenszus);put(maske(bs),erfassungsfeld(bs)(
fnrerznamenszus),fnrerznamenszus);INT VAR i;FOR iFROM 0UPTO fnrerzplzort-
fnrerzstrREP erfassungsfeld(bs)(fnrerzstr+i):=erfassungsfeld(bs)(fnrsustr+i);
put(maske(bs),erfassungsfeld(bs)(fnrerzstr+i),fnrerzstr+i)PER ;FI ;startpos:=
cursposFI ;return(1).END PROC sudatenimbildschirmkopieren;PROC
suanmeldungzeigen:BOOL VAR listeexistiertnicht;IF sinnvolleauswahlgetroffen
THEN listezeigenbeginnenELSE startpos:=fnrfehlerfeld;return(1)FI .
listezeigenbeginnen:schluesselbereitstellen;legeaktuellenbestandfest;
setzedbwerte(bs);meldeauffaellig(maske(bs),meldunglistenerstellung);
parsenooffields(5);putwert(fnrsustatuss,aktbestand);objektlistestarten(
ixsustatfamrufgeb,schluessel(1),fnrsufamnames,TRUE ,listeexistiertnicht);IF
listeexistiertnichtTHEN reinitparsing;meldeauffaellig(maske(bs),
meldungkeineliste);return(1)ELSE bsdraussen:=0;datensatzlistenausgabe(PROC (
INT CONST )suerfassungschueler,TRUE ,BOOL PROC pruefungschueler)FI .END PROC
suanmeldungzeigen;PROC suerfassungschueler(INT CONST n):LET namenlaenge=63,
trenner=", ";TEXT VAR identizeile,schluesselanhang:="";INT VAR i;identizeile
:=wert(fnrsufamnames)+trenner+wert(fnrsurufnames);identizeile:=text(
identizeile,namenlaenge)+wert(fnrsugebdatums);schluesselkoppeln;
setzeidentiwert(identizeilemitschluesselanhang).schluesselkoppeln:FOR iFROM 1
UPTO anzschluesselsuREP schluesselanhangCAT oblitrenner;schluesselanhangCAT
wert(dnrschueler+i);PER .identizeilemitschluesselanhang:identizeile+
schluesselanhang.END PROC suerfassungschueler;BOOL PROC pruefungschueler:wert
(fnrsustatuss)=aktbestandEND PROC pruefungschueler;PROC
suausgesuchtezurbearbeitung:behandlungderausgesuchten(aendern)END PROC
suausgesuchtezurbearbeitung;PROC holeerstenmehrtlgschluesselausdatei(BOOL
VAR ok):IF NOT exists(dateiname)THEN ok:=FALSE ;LEAVE
holeerstenmehrtlgschluesselausdateiFI ;f:=sequentialfile(input,dateiname);
holenaechstenmehrtlgschluesselausdatei(ok);END PROC
holeerstenmehrtlgschluesselausdatei;PROC
holenaechstenmehrtlgschluesselausdatei(BOOL VAR ok):TEXT VAR thesaurustext:=
"";INT VAR schluesselbeginn:=0;INT VAR schluesseltrennung:=0;INT VAR i:=1;IF
eof(f)THEN ok:=FALSE ;loeschedieerstellteobjektlisteELSE getline(f,
thesaurustext);bestimmeschluesselausthesaurustext;ok:=TRUE FI .
bestimmeschluesselausthesaurustext:schluesselbeginn:=pos(thesaurustext,
oblitrenner);schluesseltrennung:=pos(thesaurustext,oblitrenner,
schluesselbeginn+1);FOR iFROM 1UPTO anzschluesselsuREP IF schluesseltrennung>
0THEN schluessel(i):=subtext(thesaurustext,schluesselbeginn+1,
schluesseltrennung-1);schluesselbeginn:=schluesseltrennung;schluesseltrennung
:=pos(thesaurustext,oblitrenner,schluesselbeginn+1);ELSE schluessel(i):=
subtext(thesaurustext,schluesselbeginn+1);FI ;PER ;schluessel(3):=
datumrekonversion(schluessel(3));.END PROC
holenaechstenmehrtlgschluesselausdatei;PROC loeschedieerstellteobjektliste:
forget(dateiname,quiet);END PROC loeschedieerstellteobjektliste;INT PROC
erstesfeldbeierfassung(INT CONST bildschirmnummer):IF bildschirmnummer=fbs1
THEN erstesfeldbeierfassungbs1ELIF bildschirmnummer=fbs2THEN
erstesfeldbeierfassungbs2ELIF bildschirmnummer=fbs3THEN
erstesfeldbeierfassungbs3ELIF bildschirmnummer=fbs4THEN
erstesfeldbeierfassungbs4ELSE 1FI .END PROC erstesfeldbeierfassung;PROC
suschuelerbsblaettern(BOOL CONST vorwaerts):IF blaetternsinnlosTHEN
meldeauffaellig(maske(bs),meldungblaetterngehtnicht)ELSE
fuehreblaettervorgangdurch;FI ;return(1).blaetternsinnlos:(vorwaertsAND (bs=
letztererfbildschirm))OR (NOT vorwaertsAND (bs=erstererfbildschirm)).
fuehreblaettervorgangdurch:IF vorwaertsTHEN bsINCR 1ELSE bsDECR 1FI ;
erfassungsbildschirmaufbauen.END PROC suschuelerbsblaettern;PROC
bsfelderinitialisieren:INT VAR bsnr;FOR bsnrFROM 1UPTO bsanzahlREP init(
erfassungsfeld(bsnr))PER .END PROC bsfelderinitialisieren;PROC
vorbereitendesnaechstenneuen:bsfelderinitialisieren;bs:=erstererfbildschirm;
erfassungsbildschirmaufbauen.END PROC vorbereitendesnaechstenneuen;PROC
suzurueckzumanfangsbildschirm(INT CONST schritte):bs:=1;IF zurueckschreiben
THEN #schuelerinstatwuerfeleinfuegendr10.05.88#FI ;IF
feldschutzzumloeschengesetztTHEN feldschutzfuerallefelderaufheben;
feldschutzzumloeschengesetzt:=FALSE FI ;erfassungsbildschirmaufbauen;return(
schritte);.feldschutzfuerallefelderaufheben:INT VAR i;FOR iFROM
fnrerstesausgabefeldUPTO fnrloeschfeld-1REP protect(maske(erstererfbildschirm
),i,FALSE )PER ;protect(maske(erstererfbildschirm),fnrloeschfeld,TRUE ).END
PROC suzurueckzumanfangsbildschirm;PROC pruefeplausibilitaet(INT VAR fstatus)
:fstatus:=0;INT VAR fmeld;meldeauffaellig(maske(bs),pruefemeldung);pruefebs2;
IF fstatus<>0THEN fehlerausgabeELSE pruefebs3;IF fstatus<>0THEN fehlerausgabe
ELSE pruefebs4;IF fstatus<>0THEN fehlerausgabeFI FI FI .pruefebs2:IF
erfassungsfeld(fbs2)(fnrname)=leerTHEN fstatus:=fnrname;bs:=fbs2;fmeld:=
fmeldbittefuellen;LEAVE pruefebs2FI ;IF erfassungsfeld(fbs2)(fnrrufname)=leer
THEN fstatus:=fnrrufname;bs:=fbs2;fmeld:=fmeldbittefuellen;LEAVE pruefebs2FI
;IF erfassungsfeld(fbs2)(fnrgebdat)=leerTHEN fstatus:=fnrgebdat;bs:=fbs2;
fmeld:=fmeldbittefuellen;LEAVE pruefebs2ELSE IF falschesdatum(erfassungsfeld(
fbs2)(fnrgebdat))THEN fstatus:=fnrgebdat;bs:=fbs2;fmeld:=fmeldfalschesdatum;
LEAVE pruefebs2FI FI ;IF NOT ((erfassungsfeld(fbs2)(fnrgeschlecht)=weiblich)
OR (erfassungsfeld(fbs2)(fnrgeschlecht)=maennlich))THEN fstatus:=
fnrgeschlecht;bs:=fbs2;fmeld:=fmeldnichtimbestand;LEAVE pruefebs2FI ;IF
erfassungsfeld(fbs2)(fnrstaatsan)<>leerTHEN IF NOT imschlbestand(
erfassungsfeld(fbs2)(fnrstaatsan),bestandstaaten)THEN fstatus:=fnrstaatsan;bs
:=fbs2;fmeld:=fmeldnichtimbestand;LEAVE pruefebs2FI FI ;IF erfassungsfeld(
fbs2)(fnrreligion)<>leerTHEN IF NOT imschlbestand(erfassungsfeld(fbs2)(
fnrreligion),bestandreligion)THEN fstatus:=fnrreligion;bs:=fbs2;fmeld:=
fmeldnichtimbestand;LEAVE pruefebs2FI FI .pruefebs3:INT CONST eintrittsjgst:=
int(erfassungsfeld(fbs3)(fnreintrittjgst));IF erfassungsfeld(fbs3)(
fnreintrittsdatum)=leerTHEN fstatus:=fnreintrittsdatum;bs:=fbs3;fmeld:=
fmeldbittefuellen;LEAVE pruefebs3ELSE IF falschesdatum(erfassungsfeld(fbs3)(
fnreintrittsdatum))THEN fstatus:=fnreintrittsdatum;bs:=fbs3;fmeld:=
fmeldfalschesdatum;LEAVE pruefebs3FI FI ;IF aktbestand=bestandneusonstTHEN
IF erfassungsfeld(fbs3)(fnreintrittjgst)=leerTHEN fstatus:=fnreintrittjgst;bs
:=fbs3;fmeld:=fmeldbittefuellen;LEAVE pruefebs3FI ;IF eintrittsjgst<jgstufe5
COR eintrittsjgst>jgstufe13THEN fstatus:=fnreintrittjgst;bs:=fbs3;fmeld:=
fmeldnumundbegrenzt;LEAVE pruefebs3FI ;IF eintrittsjgst=jgstufe5COR
eintrittsjgst=jgstufe11THEN fstatus:=fnreintrittjgst;bs:=fbs3;fmeld:=
fmeldbitteanderejgst;LEAVE pruefebs3FI FI ;IF erfassungsfeld(fbs3)(
fnrschulkuerzel)<>leerTHEN IF NOT imbestand(erfassungsfeld(fbs3)(
fnrschulkuerzel),bestandschulen)THEN fstatus:=fnrschulkuerzel;bs:=fbs3;fmeld
:=fmeldnichtimbestand;LEAVE pruefebs3FI FI ;IF aktbestand=bestandlaufschulj
THEN IF erfassungsfeld(fbs3)(fnrzugang)=leerTHEN fstatus:=fnrzugang;bs:=fbs3;
fmeld:=fmeldbittefuellen;LEAVE pruefebs3ELIF NOT imschlbestand(erfassungsfeld
(fbs3)(fnrzugang),bestandzugang)THEN fstatus:=fnrzugang;bs:=fbs3;fmeld:=
fmeldnichtimbestand;LEAVE pruefebs3FI ;FI ;IF bearbeitungsprogrammCAND
erfassungsfeld(fbs3)(fnrneueschule)<>leerTHEN IF NOT imbestand(erfassungsfeld
(fbs3)(fnrneueschule),bestandschulen)THEN fstatus:=fnrneueschule;bs:=fbs3;
fmeld:=fmeldnichtimbestand;LEAVE pruefebs3FI FI ;IF bearbeitungsprogrammCAND
erfassungsfeld(fbs3)(fnrabdatum)<>leerTHEN IF falschesdatum(erfassungsfeld(
fbs3)(fnrabdatum))THEN fstatus:=fnrabdatum;bs:=fbs3;fmeld:=fmeldfalschesdatum
;LEAVE pruefebs3FI FI ;IF aktbestand<>bestandlaufschuljTHEN LEAVE pruefebs3
FI ;TEXT VAR jgst:=erfassungsfeld(fbs3)(fnrjgst);TEXT VAR zug:=erfassungsfeld
(fbs3)(fnrzug);IF jgst=leerTHEN fstatus:=fnrjgst;bs:=fbs3;fmeld:=
fmeldbittefuellen;LEAVE pruefebs3FI ;IF zug=leerTHEN fstatus:=fnrzug;bs:=fbs3
;fmeld:=fmeldbittefuellen;LEAVE pruefebs3FI ;IF NOT imbestandschuelergruppen
THEN IF neuerschuelerTHEN fstatus:=fnrjgstELSE fstatus:=fnrzugFI ;bs:=fbs3;
fmeld:=fmeldnichtimbestand;LEAVE pruefebs3FI .pruefebs4:IF erfassungsfeld(
fbs4)(fnrreligionabmelddatum)<>leerTHEN IF falschesdatum(erfassungsfeld(fbs4)
(fnrreligionabmelddatum))THEN fstatus:=fnrreligionabmelddatum;bs:=fbs4;fmeld
:=fmeldfalschesdatum;LEAVE pruefebs4FI FI ;IF erfassungsfeld(fbs4)(
fnrreligionanmelddatum)<>leerTHEN IF falschesdatum(erfassungsfeld(fbs4)(
fnrreligionanmelddatum))THEN fstatus:=fnrreligionanmelddatum;bs:=fbs4;fmeld:=
fmeldfalschesdatum;LEAVE pruefebs4FI FI ;.fehlerausgabe:
erfassungsbildschirmaufbauen;meldeauffaellig(maske(bs),fmeld).END PROC
pruefeplausibilitaet;BOOL PROC imbestandschuelergruppen:TEXT VAR schuljahr:=
schulkenndatum(aktschuljahr),halbjahr:=schulkenndatum(akthalbjahr);INT VAR
dateinummer:=dnraktschuelergruppen;putwert(dateinummer+1,schuljahr);putwert(
dateinummer+2,halbjahr);putwert(dateinummer+3,erfassungsfeld(fbs3)(fnrjgst));
putwert(dateinummer+4,erfassungsfeld(fbs3)(fnrzug));search(dateinummer,TRUE )
;dbstatus=0END PROC imbestandschuelergruppen;BOOL PROC falschesdatum(TEXT
CONST pruefdatum):LET falschertag="00";datum(pruefdatum)=nildatumCOR subtext(
pruefdatum,1,2)=falschertag.END PROC falschesdatum;PROC setzedbwerte(INT
CONST bsnr):INT VAR lv,verm;SELECT bsnrOF CASE fbs1:setzedbwertevonbs1CASE
fbs2:setzedbwertevonbs2CASE fbs3:setzedbwertevonbs3CASE fbs4:
setzedbwertevonbs4END SELECT ;IF neuenschuelereinfuegenTHEN putwert(
fnrsutidakthjd,leer)ELSE putwert(fnrsutidakthjd,hjdtid)FI .setzedbwertevonbs1
:IF NOT bearbeitungsprogrammTHEN putwert(fnrsufamnames,erfassungsfeld[bsnr][
fnrparamname]);putwert(fnrsurufnames,erfassungsfeld[bsnr][fnrparamrufname]);
putwert(fnrsugebdatums,datumskonversion(erfassungsfeld[bsnr][fnrparamgebdat])
);ELSE putwert(fnrsufamnames,erfassungsfeld[bsnr][fnrparambearbname]);putwert
(fnrsurufnames,erfassungsfeld[bsnr][fnrparambearbrufname]);putwert(
fnrsugebdatums,datumskonversion(erfassungsfeld[bsnr][fnrparambearbgebdat]));
FI .setzedbwertevonbs2:putwert(fnrsufamnames,erfassungsfeld[bsnr][fnrname]);
putwert(fnrsunamenszusatzs,erfassungsfeld[bsnr][fnrnamenszus]);putwert(
fnrsugebnames,erfassungsfeld[bsnr][fnrgebname]);putwert(fnrsuvornames,
erfassungsfeld[bsnr][fnrvornamen]);putwert(fnrsurufnames,erfassungsfeld[bsnr]
[fnrrufname]);putwert(fnrsustrnrs,erfassungsfeld[bsnr][fnrsustr]);putwert(
fnrsutelnrs,erfassungsfeld[bsnr][fnrsutelefon]);putwert(fnrsuplzorts,
erfassungsfeld[bsnr][fnrsuplzort]);putwert(fnrsuwohntbei,erfassungsfeld[bsnr]
[fnrwohntbei]);putwert(fnrsuortsteils,erfassungsfeld[bsnr][fnrortsteil]);
putwert(fnrsugebdatums,datumskonversion(erfassungsfeld[bsnr][fnrgebdat]));
putwert(fnrsugeschlechts,erfassungsfeld[bsnr][fnrgeschlecht]);putwert(
fnrsustaatsangs,erfassungsfeld[bsnr][fnrstaatsan]);putwert(fnrsureligionsz,
erfassungsfeld[bsnr][fnrreligion]);putwert(fnrsuverhes,erfassungsfeld[bsnr][
fnrverwandt]);putwert(fnrsufamnamee,erfassungsfeld[bsnr][fnrerzname]);putwert
(fnrsunamenszusatze,erfassungsfeld[bsnr][fnrerznamenszus]);putwert(
fnrsuvornamee,erfassungsfeld[bsnr][fnrerzvornamen]);putwert(fnrsustrnre,
erfassungsfeld[bsnr][fnrerzstr]);putwert(fnrsutelnre,erfassungsfeld[bsnr][
fnrerztelefon]);putwert(fnrsuplzorte,erfassungsfeld[bsnr][fnrerzplzort]);.
setzedbwertevonbs3:putwert(fnrsugeborts,erfassungsfeld[bsnr][fnrgebort]);
putwert(fnrsugebkreiss,erfassungsfeld[bsnr][fnrkreisland]);putwert(
fnrsumuttersprache,erfassungsfeld[bsnr][fnrmuttersprache]);putwert(
fnrsuspaetaus,erfassungsfeld[bsnr][fnraussiedler]);putwert(fnrsujahreinschul,
erfassungsfeld[bsnr][fnreinschulung]);putwert(fnrsuskennlschule,
erfassungsfeld[bsnr][fnrschulkuerzel]);putwert(fnrsuklasselschule,
erfassungsfeld[bsnr][fnrletzteklasse]);putwert(fnrsueintrittsdats,
datumskonversion(erfassungsfeld[bsnr][fnreintrittsdatum]));putwert(
fnrsujgsteintr,jgstaufber(erfassungsfeld[bsnr][fnreintrittjgst]));putwert(
fnrsueintrittinsek,erfassungsfeld[bsnr][fnrsek2]);putwert(fnrsusgrpjgst,
jgstaufber(erfassungsfeld[bsnr][fnrjgst]));putwert(fnrsusgrpzugtut,
erfassungsfeld[bsnr][fnrzug]);putwert(fnrsuartzugang,erfassungsfeld[bsnr][
fnrzugang]);putwert(fnrsuneuerzugtut,erfassungsfeld[bsnr][fnrneuerzug]);FOR
vermFROM 0UPTO zahldervermerke-1REP putwert(fnrsuvermerk1+verm,erfassungsfeld
[bsnr][fnrvermerk1+verm])PER ;IF bearbeitungsprogrammTHEN putwert(
fnrsuabgdats,datumskonversion(erfassungsfeld[bsnr][fnrabdatum]));putwert(
fnrsuabggrund,erfassungsfeld[bsnr][fnrabgrund]);putwert(fnrsuskennnschule,
erfassungsfeld[bsnr][fnrneueschule]);putwert(fnrsuabschluss,erfassungsfeld[
bsnr][fnrabschluss]);FI .setzedbwertevonbs4:putwert(fnrddreliunter,
erfassungsfeld[bsnr][fnrreligionunterricht]);putwert(fnrddreliunter+1,
datumskonversion(erfassungsfeld[bsnr][fnrreligionabmelddatum]));putwert(
fnrddreliunter+2,datumskonversion(erfassungsfeld[bsnr][fnrreligionanmelddatum
]));FOR lvFROM 0UPTO 11REP putwert(fnrdd1fremdfach+lv,erfassungsfeld[bsnr][
fnrfremdsprache+lv]);PER ;putwert(fnrddkunstmusik,erfassungsfeld[bsnr][
fnrkunstmusik]);FOR lvFROM 0UPTO 8REP putwert(fnrddagthema1+lv,erfassungsfeld
[bsnr][fnrag+lv]);PER ;FOR lvFROM 0UPTO 7REP putwert(fnrddfach091a+lv,
erfassungsfeld[bsnr][fnrwpsek1+lv]);PER .END PROC setzedbwerte;PROC
holedbwerte(INT CONST bsnr):INT VAR lv,verm;SELECT bsnrOF CASE fbs1:
holedbwertevonbs1CASE fbs2:holedbwertevonbs2CASE fbs3:holedbwertevonbs3CASE
fbs4:holedbwertevonbs4END SELECT ;hjdtid:=wert(fnrsutidakthjd);.
holedbwertevonbs1:IF NOT bearbeitungsprogrammTHEN erfassungsfeld[bsnr][
fnrparamname]:=wert(fnrsufamnames);erfassungsfeld[bsnr][fnrparamrufname]:=
wert(fnrsurufnames);erfassungsfeld[bsnr][fnrparamgebdat]:=wert(fnrsugebdatums
);ELSE erfassungsfeld[bsnr][fnrparambearbname]:=wert(fnrsufamnames);
erfassungsfeld[bsnr][fnrparambearbrufname]:=wert(fnrsurufnames);
erfassungsfeld[bsnr][fnrparambearbgebdat]:=wert(fnrsugebdatums);FI .
holedbwertevonbs2:erfassungsfeld[bsnr][fnrname]:=wert(fnrsufamnames);
erfassungsfeld[bsnr][fnrnamenszus]:=wert(fnrsunamenszusatzs);erfassungsfeld[
bsnr][fnrgebname]:=wert(fnrsugebnames);erfassungsfeld[bsnr][fnrvornamen]:=
wert(fnrsuvornames);erfassungsfeld[bsnr][fnrrufname]:=wert(fnrsurufnames);
erfassungsfeld[bsnr][fnrsustr]:=wert(fnrsustrnrs);erfassungsfeld[bsnr][
fnrsutelefon]:=wert(fnrsutelnrs);erfassungsfeld[bsnr][fnrsuplzort]:=wert(
fnrsuplzorts);erfassungsfeld[bsnr][fnrwohntbei]:=wert(fnrsuwohntbei);
erfassungsfeld[bsnr][fnrortsteil]:=wert(fnrsuortsteils);erfassungsfeld[bsnr][
fnrgebdat]:=datumrekonversion(wert(fnrsugebdatums));erfassungsfeld[bsnr][
fnrgeschlecht]:=wert(fnrsugeschlechts);erfassungsfeld[bsnr][fnrstaatsan]:=
wert(fnrsustaatsangs);erfassungsfeld[bsnr][fnrreligion]:=wert(fnrsureligionsz
);erfassungsfeld[bsnr][fnrverwandt]:=wert(fnrsuverhes);erfassungsfeld[bsnr][
fnrerzname]:=wert(fnrsufamnamee);erfassungsfeld[bsnr][fnrerznamenszus]:=wert(
fnrsunamenszusatze);erfassungsfeld[bsnr][fnrerzvornamen]:=wert(fnrsuvornamee)
;erfassungsfeld[bsnr][fnrerzstr]:=wert(fnrsustrnre);erfassungsfeld[bsnr][
fnrerztelefon]:=wert(fnrsutelnre);erfassungsfeld[bsnr][fnrerzplzort]:=wert(
fnrsuplzorte);alteschluesselsichern.alteschluesselsichern:alterschluessel(1)
:=erfassungsfeld[bsnr][fnrname];alterschluessel(2):=erfassungsfeld[bsnr][
fnrrufname];alterschluessel(3):=erfassungsfeld[bsnr][fnrgebdat];.
holedbwertevonbs3:TEXT VAR einjgst:=wert(fnrsujgsteintr),aktjgst:=wert(
fnrsusgrpjgst);erfassungsfeld[bsnr][fnrgebort]:=wert(fnrsugeborts);
erfassungsfeld[bsnr][fnrkreisland]:=wert(fnrsugebkreiss);erfassungsfeld[bsnr]
[fnrmuttersprache]:=wert(fnrsumuttersprache);erfassungsfeld[bsnr][
fnraussiedler]:=wert(fnrsuspaetaus);erfassungsfeld[bsnr][fnreinschulung]:=
textnichtnull(wert(fnrsujahreinschul));erfassungsfeld[bsnr][fnrschulkuerzel]
:=wert(fnrsuskennlschule);erfassungsfeld[bsnr][fnrletzteklasse]:=wert(
fnrsuklasselschule);erfassungsfeld[bsnr][fnreintrittsdatum]:=
datumrekonversion(wert(fnrsueintrittsdats));erfassungsfeld[bsnr][
fnreintrittjgst]:=jgstaufber(einjgst);erfassungsfeld[bsnr][fnrsek2]:=
textnichtnull(wert(fnrsueintrittinsek));erfassungsfeld[bsnr][fnrjgst]:=
jgstaufber(aktjgst);erfassungsfeld[bsnr][fnrzug]:=wert(fnrsusgrpzugtut);
erfassungsfeld[bsnr][fnrzugang]:=wert(fnrsuartzugang);erfassungsfeld[bsnr][
fnrneuerzug]:=wert(fnrsuneuerzugtut);FOR vermFROM 0UPTO zahldervermerke-1REP
erfassungsfeld[bsnr][fnrvermerk1+verm]:=wert(fnrsuvermerk1+verm)PER ;IF
bearbeitungsprogrammTHEN erfassungsfeld[bsnr][fnrabdatum]:=datumrekonversion(
wert(fnrsuabgdats));erfassungsfeld[bsnr][fnrabgrund]:=wert(fnrsuabggrund);
erfassungsfeld[bsnr][fnrneueschule]:=wert(fnrsuskennnschule);erfassungsfeld[
bsnr][fnrabschluss]:=wert(fnrsuabschluss);FI .holedbwertevonbs4:
erfassungsfeld[bsnr][fnrreligionunterricht]:=wert(fnrddreliunter);
erfassungsfeld[bsnr][fnrreligionabmelddatum]:=datumrekonversion(wert(
fnrddreliunter+1));erfassungsfeld[bsnr][fnrreligionanmelddatum]:=
datumrekonversion(wert(fnrddreliunter+2));FOR lvFROM 0UPTO 11REP
erfassungsfeld[bsnr][fnrfremdsprache+lv]:=wert(fnrdd1fremdfach+lv);PER ;
erfassungsfeld[bsnr][fnrkunstmusik]:=wert(fnrddkunstmusik);FOR lvFROM 0UPTO 8
REP erfassungsfeld[bsnr][fnrag+lv]:=wert(fnrddagthema1+lv);PER ;FOR lvFROM 0
UPTO 7REP erfassungsfeld[bsnr][fnrwpsek1+lv]:=wert(fnrddfach091a+lv);PER .
END PROC holedbwerte;PROC suanmeldungloeschen:IF sinnvolleauswahlgetroffen
THEN loeschenvorbereitungbeginnenELSE startpos:=fnrfehlerfeld;return(1)FI .
loeschenvorbereitungbeginnen:IF namenangabenausreichendTHEN loeschenbeginnen
ELSE startpos:=fnrfehlerfeld;return(1)FI .namenangabenausreichend:IF
erfassungsprogrammTHEN namenangabenausreichendbeierfassungELSE
namenangabenausreichendbeibearbeitungoderzeigenFI .loeschenbeginnen:
legeaktuellenbestandfest;BOOL VAR suexistiert:=FALSE ;schluesselbereitstellen
;pruefeobnameexistiert(suexistiert);IF suexistiertTHEN saveupdateposition(
dnrschueler);diffdatenlesen;schluessel(1):=wert(fnrsufamnames);schluessel(2)
:=wert(fnrsurufnames);schluessel(3):=datumrekonversion(wert(fnrsugebdatums));
loeschedieerstellteobjektliste;zurueckschreiben:=FALSE ;bereiteloeschenvor;
suvonerfassungsbildschirmeinlesenELSE meldeauffaellig(maske(bs),
meldunggibtsnicht);IF erfassungsprogrammTHEN startpos:=fnrparamnameELSE
startpos:=fnrparambearbnameFI ;return(1)FI .END PROC suanmeldungloeschen;
PROC bereiteloeschenvor:bereiteaenderungvor;
feldschutzfuerallefelderausserloeschfeldsetzen;meldeauffaellig(maske(bs),
meldungloeschfrage);startpos:=fnrloeschfeldEND PROC bereiteloeschenvor;PROC
feldschutzfuerallefelderausserloeschfeldsetzen:INT VAR i;FOR iFROM
fnrerstesausgabefeldUPTO fnrloeschfeld-1REP protect(maske(bs),i,TRUE )PER ;
protect(maske(erstererfbildschirm),fnrloeschfeld,FALSE );
feldschutzzumloeschengesetzt:=TRUE .END PROC
feldschutzfuerallefelderausserloeschfeldsetzen;PROC
suanmeldungloeschenausfuehren(BOOL CONST zuloeschen):IF zuloeschenTHEN melde(
maske(bs),meldungloeschung,namefuermeldung+kennzmeldungauffaellig);
logeintragvornehmen("Entfernen");schuelerloeschen;IF dbstatus<>0THEN melde(
maske(bs),meldungloeschenfehlerhaft,text(dbstatus)+kennzmeldungauffaellig);#
altenschuelerwiedereintragen;dr10.05.88#return(1)ELSE
vorbereitendernaechstenschluesselbehandlungFI ELSE melde(maske(bs),
meldungkeineloeschung,namefuermeldung+kennzmeldungauffaellig);
vorbereitendernaechstenschluesselbehandlungFI .schuelerloeschen:
hjddateiupdate(dnrhalbjahresdaten,satzloeschen);diffdatenloeschen;delete(
dnrschueler);evtlaenderungderkurswahldatenvollziehen.diffdatenloeschen:IF
wert(fnrsudiffdatennrs)<>""THEN putwert(fnrdddiffdatennr,wert(
fnrsudiffdatennrs));search(dnrdiffdaten,TRUE );IF dbstatus=okTHEN delete(
dnrdiffdaten)FI FI .END PROC suanmeldungloeschenausfuehren;PROC
suanmeldungausgesuchteloeschen:behandlungderausgesuchten(loeschen)END PROC
suanmeldungausgesuchteloeschen;PROC behandlungderausgesuchten(INT CONST
wasistzutun):BOOL VAR ok,kannbearbeitetwerden:=FALSE ;
loeschedieerstellteobjektliste;objektlistebeenden(dateiname,TRUE );
reinitparsing;holeerstenmehrtlgschluesselausdatei(ok);WHILE okREP
pruefeobnameexistiert(ok);IF okTHEN saveupdateposition(dnrschueler);
diffdatenlesen;kannbearbeitetwerden:=TRUE ;ok:=FALSE ELSE
holenaechstenmehrtlgschluesselausdatei(ok)FI PER ;IF kannbearbeitetwerden
THEN zurueckschreiben:=TRUE ;IF wasistzutun=aendernTHEN #
schuelerausstatwuerfelentfernen;dr10.05.88#bereiteaenderungvorELSE
bereiteloeschenvor;mehrereloeschen:=TRUE FI ;
suvonerfassungsbildschirmeinlesenELSE zurueckschreiben:=FALSE ;
suzurueckzumanfangsbildschirm(2)FI .END PROC behandlungderausgesuchten;BOOL
PROC namenangabenausreichendbeierfassung:IF erfassungsfeld(fbs1)(fnrparamname
)=leerTHEN meldeauffaellig(maske(bs),meldungbittename);fnrfehlerfeld:=
fnrparamname;FALSE ELIF erfassungsfeld(fbs1)(fnrparamrufname)=leerCAND
erfassungsfeld(fbs1)(fnrparamgebdat)<>leerTHEN meldeauffaellig(maske(bs),
meldungangabengenauer);fnrfehlerfeld:=fnrparamrufname;FALSE ELSE TRUE FI .
END PROC namenangabenausreichendbeierfassung;BOOL PROC
namenangabenausreichendbeibearbeitungoderzeigen:IF erfassungsfeld(fbs1)(
fnrparambearbname)=leerTHEN meldeauffaellig(maske(bs),meldungbittename);
fnrfehlerfeld:=fnrparambearbname;FALSE ELIF erfassungsfeld(fbs1)(
fnrparambearbrufname)=leerCAND erfassungsfeld(fbs1)(fnrparambearbgebdat)<>
leerTHEN meldeauffaellig(maske(bs),meldungangabengenauer);fnrfehlerfeld:=
fnrparambearbrufname;FALSE ELSE TRUE FI .END PROC
namenangabenausreichendbeibearbeitungoderzeigen;PROC hjddateiupdate(INT
CONST dateinummer,wasistzutun):LET stackgroesse=6;INT VAR anzahltupel:=
stackgroesse;inittupel(dateinummer);putwert(dateinummer+1,alterschluessel(1))
;putwert(dateinummer+2,alterschluessel(2));putwert(dateinummer+3,
datumskonversion(alterschluessel(3)));multisearchforward(dateinummer,
anzahltupel);WHILE anzahltupel>0REP multisucc;IF gleicherschuelerTHEN SELECT
wasistzutunOF CASE satzloeschen:datenloeschenCASE satzneueschluessel:
schluesselfelderaendernENDSELECT ;anzahltupelDECR 1;IF anzahltupel=0THEN
nachlesenFI ;ELSE LEAVE hjddateiupdateFI PER .gleicherschueler:
alterschluessel(1)=wert(dateinummer+1)CAND alterschluessel(2)=wert(
dateinummer+2)CAND alterschluessel(3)=datumrekonversion(wert(dateinummer+3)).
datenloeschen:delete(dateinummer);fehlerprotokoll(dateinummer,satzloeschen).
schluesselfelderaendern:putwert(dateinummer+1,schluessel(1));putwert(
dateinummer+2,schluessel(2));putwert(dateinummer+3,datumskonversion(
schluessel(3)));#update(dateinummer);dr10.05.88#selupdate(dateinummer);
fehlerprotokoll(dateinummer,satzneueschluessel);putwert(dateinummer+1,
alterschluessel(1));putwert(dateinummer+2,alterschluessel(2));putwert(
dateinummer+3,datumskonversion(alterschluessel(3)));.nachlesen:anzahltupel:=
stackgroesse;multisucc(dateinummer,anzahltupel).END PROC hjddateiupdate;PROC
fehlerprotokoll(INT CONST dateinummer,wasausdrucken):TEXT CONST fehlerdatei:=
"Fehlerprotokoll";ROW 4TEXT VAR fehlerwobei:=ROW 4TEXT :(
"Einfügen in die Datei ","Ändern in der Datei ","Löschen in der Datei ",
"Ändern der Schlüsselfelder der Datei ");IF dbstatus<>okTHEN FILE VAR f:=
sequentialfile(output,fehlerdatei);putline(f,
"Fehlerprotokoll zur Bearbeitung des Schülers:");putline(f,schluessel(2)+
leerzeichen+schluessel(1)+", geboren am "+datumskonversion(schluessel(3)));
putline(f,leer);putline(f,"Fehler beim "+fehlerwobei[wasausdrucken]+name(
dateinummer));print(fehlerdatei);forget(fehlerdatei,quiet);FI END PROC
fehlerprotokoll;PROC diffdatenlesen:readtid(dnrdiffdaten,wert(
fnrsutiddiffdaten))END PROC diffdatenlesen;PROC
evtlaenderungderkurswahldatenvollziehen:IF dbstatus=0THEN IF aktbestand=
bestandlaufschuljTHEN IF intwert(fnrsusgrpjgst)>=jgstufe10THEN
kurswahlserveraktualisieren(wert(fnrsusgrpjgst),"","")FI ELIF aktbestand=
bestandneu11THEN kurswahlserveraktualisieren(text(jgstufe10),"","")ELIF
aktbestand=bestandneusonstTHEN IF intwert(fnrsujgsteintr)>jgstufe10THEN
kurswahlserveraktualisieren(text(intwert(fnrsujgsteintr)-1),"","")FI FI ;FI
END PROC evtlaenderungderkurswahldatenvollziehen;END PACKET erfschuelerdaten
|