summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.erf.abmeldedaten
blob: 9c5523b294f0910318ec15a3b325632a285af51d (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
PACKET erfabmeldedatenDEFINES suabmeldedatenbearbeiten,
suabmeldedatenspeichern,suausgesuchteabmeldedatenbearbeiten,
schuelerlistezeigen,pruefungschuelerab:LET maskennameeingang=
"ms schuelerangabe",maskenstammname="ms erf abmeldedaten",aktbestand="ls",
bestandschulen="Schulen",fnrname=2,fnrrufname=3,fnrgebdatum=4,fnrjgst=5,
fnrzug=6,fnrabdatum=7,fnrabgrund=8,fnrneueschule=9,fnrabschluss=10,
meldunglistenerstellung=7,meldungspeicherung=50,pruefemeldung=57,
meldungkeineaenderung=63,meldungletzter=67,meldungkeineliste=68,
meldunggibtsnicht=71,meldungspeicherungfehlerhaft=73,meldungfalschesdatum=157
;LET leer="",oblitrenner="$";LET anzschluessel=3;#A nzahlderamP 
rimärschlüselbeteiligtenF elder#BOOL VAR falschesdatum:=FALSE ;FILE VAR f;
ROW anzschluesselTEXT VAR schluessel;#24.03.87#TAG VAR maske;TEXT VAR 
dateiname:="Schülerliste",schuelertid:="";TEXT VAR abdatumsicherung,
abgrundsicherung,abschlusssicherung;LET logtextbeginn=
"Anw. 1.3.1 Änderung """;PROC bearbeitunginitialisieren:forget(dateiname,
quiet).END PROC bearbeitunginitialisieren;PROC suabmeldedatenbearbeiten:BOOL 
VAR sudatenexistieren;falschesdatum:=FALSE ;systemdboff;reinitparsing;
bearbeitunginitialisieren;schluessel(1):=standardmaskenfeld(fnrname);
schluessel(2):=standardmaskenfeld(fnrrufname);schluessel(3):=
datumrekonversion(standardmaskenfeld(fnrgebdatum));pruefeobsudatenexistieren(
sudatenexistieren);IF NOT falschesdatumTHEN IF sudatenexistierenTHEN 
schluessel(1):=wert(fnrsufamnames);schluessel(2):=wert(fnrsurufnames);
schluessel(3):=datumrekonversion(wert(fnrsugebdatums));standardstartproc(
maskenstammname);bereiteaenderungvor;standardnproc;ELSE standardmeldung(
meldunggibtsnicht,"");return(1)FI ;ELSE return(1)FI .END PROC 
suabmeldedatenbearbeiten;PROC bereiteaenderungvor:saveupdateposition(
dnrschueler);schuelertid:=gettid;holedbwerteinmaske;abdatumsicherung:=wert(
fnrsuabgdats);abgrundsicherung:=wert(fnrsuabggrund);abschlusssicherung:=wert(
fnrsuabschluss);infeld(fnrname);standardfelderausgeben;infeld(fnrabdatum).
END PROC bereiteaenderungvor;PROC holedbwerteinmaske:standardmaskenfeld(wert(
fnrsufamnames),fnrname);standardmaskenfeld(wert(fnrsurufnames),fnrrufname);
standardmaskenfeld(datumrekonversion(wert(fnrsugebdatums)),fnrgebdatum);
standardmaskenfeld(jgstaufber(wert(fnrsusgrpjgst)),fnrjgst);
standardmaskenfeld(wert(fnrsusgrpzugtut),fnrzug);standardmaskenfeld(
datumrekonversion(wert(fnrsuabgdats)),fnrabdatum);standardmaskenfeld(wert(
fnrsuabggrund),fnrabgrund);standardmaskenfeld(wert(fnrsuskennnschule),
fnrneueschule);standardmaskenfeld(wert(fnrsuabschluss),fnrabschluss)END PROC 
holedbwerteinmaske;PROC pruefeobsudatenexistieren(BOOL VAR suexist):TEXT VAR 
datenbankwerte,schluesselwerte;inittupel(dnrschueler);maskenwerteindatenbank;
IF NOT falschesdatumTHEN search(ixsustatfamrufgeb);IF dbstatus=okTHEN 
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 FI .END PROC 
pruefeobsudatenexistieren;PROC maskenwerteindatenbank:putwert(fnrsufamnames,
schluessel(1));putwert(fnrsurufnames,schluessel(2));disablestop;initmaske(
maske,maskennameeingang);putwert(fnrsugebdatums,datumskonversion(schluessel(3
)));IF iserrorTHEN clearerror;standardmeldung(meldungfalschesdatum,"");infeld
(fnrgebdatum);falschesdatum:=TRUE ;enablestop;ELSE enablestop;putwert(
fnrsustatuss,aktbestand);FI ;END PROC maskenwerteindatenbank;PROC 
suabmeldedatenspeichern(BOOL CONST zuspeichern):IF zuspeichernTHEN 
bereitespeicherungvorELSE standardmeldung(meldungkeineaenderung,"");
vorbereitendernaechstendatenbehandlungFI .bereitespeicherungvor:INT VAR 
fehlerstatus:=0;pruefeplausibilitaet(fehlerstatus);IF datenfehlerfreiTHEN 
datenschreiben;vorbereitendernaechstendatenbehandlungELSE fehlerbehandeln;
return(1)FI .datenfehlerfrei:fehlerstatus=0.fehlerbehandeln:infeld(
fehlerstatus).datenschreiben:meldespeicherung;datenindatenbankspeichern.
meldespeicherung:standardmeldung(meldungspeicherung,"").
datenindatenbankspeichern:logeintragvornehmen;setzedbwerte;
abmeldedatenschreiben.logeintragvornehmen:TEXT VAR eintrag:=logtextbeginn;
eintragCAT schluessel(1);eintragCAT ", ";eintragCAT schluessel(2);eintragCAT 
", ";eintragCAT datumskonversion(schluessel(3));eintragCAT """";logeintrag(
eintrag).setzedbwerte:putwert(fnrsuabggrund,standardmaskenfeld(fnrabgrund));
putwert(fnrsuskennnschule,standardmaskenfeld(fnrneueschule));putwert(
fnrsuabschluss,standardmaskenfeld(fnrabschluss));putwert(fnrsuabgdats,
datumskonversion(standardmaskenfeld(fnrabdatum)));.abmeldedatenschreiben:IF 
abdatumsicherung<>wert(fnrsuabgdats)THEN restoreupdateposition(dnrschueler);
selupdate(dnrschueler);ELSE replace(dnrschueler,schuelertid)FI ;IF dbstatus<>
0THEN standardmeldung(meldungspeicherungfehlerhaft,"")#dr11.05.88ELIF 
grundgeaendertTHEN grundinstatraumaendernELIF abschlussgeaendertTHEN 
abschlussinstatraumaendern#FI .#drgrundgeaendert:11.05.88abgrundsicherung<>
wert(fnrsuabggrund).abschlussgeaendert:abschlusssicherung<>wert(
fnrsuabschluss).grundinstatraumaendern:kuerzelaendern(statnrabgrund,
abgrundsicherung,wert(fnrsuabggrund)).abschlussinstatraumaendern:
kuerzelaendern(statnrabschluss,abschlusssicherung,wert(fnrsuabschluss)).#END 
PROC suabmeldedatenspeichern;PROC vorbereitendernaechstendatenbehandlung:IF 
exists(dateiname)THEN holenaechstenschluesselauslisteELSE enter(2)FI .
holenaechstenschluesselausliste:BOOL VAR ok,kannbearbeitetwerden:=FALSE ;
holenaechstenmehrtlgschluesselausdatei(ok);WHILE okREP 
pruefeobsudatenexistieren(ok);IF okTHEN kannbearbeitetwerden:=TRUE ;ok:=
FALSE ELSE holenaechstenmehrtlgschluesselausdatei(ok)FI PER ;IF 
kannbearbeitetwerdenTHEN bereiteaenderungvor;return(1)ELSE 
behandleendederthesaurusabarbeitungFI .behandleendederthesaurusabarbeitung:
standardmeldung(meldungletzter,"");enter(3).END PROC 
vorbereitendernaechstendatenbehandlung;PROC schuelerlistezeigen:BOOL VAR 
keineliste;schluessel(1):=standardmaskenfeld(fnrname);schluessel(2):=
standardmaskenfeld(fnrrufname);schluessel(3):=datumrekonversion(
standardmaskenfeld(fnrgebdatum));falschesdatum:=FALSE ;systemdboff;
parsenooffields(5);maskenwerteindatenbank;IF NOT falschesdatumTHEN 
objektlistestarten(ixsustatfamrufgeb,schluessel(1),fnrsufamnames,TRUE ,
keineliste);IF keinelisteTHEN reinitparsing;standardmeldung(meldungkeineliste
,"");return(1)ELSE standardmeldung(meldunglistenerstellung,"");
datensatzlistenausgabe(PROC (INT CONST )suerfassungschueler,TRUE ,BOOL PROC 
pruefungschuelerab)FI ELSE return(1)FI END PROC schuelerlistezeigen;BOOL 
PROC pruefungschuelerab:wert(fnrsustatuss)=aktbestandEND PROC 
pruefungschuelerab;PROC suausgesuchteabmeldedatenbearbeiten:BOOL VAR ok,
kannbearbeitetwerden:=FALSE ;bearbeitunginitialisieren;objektlistebeenden(
dateiname,TRUE );reinitparsing;holeerstenmehrtlgschluesselausdatei(ok);WHILE 
okREP pruefeobsudatenexistieren(ok);IF okTHEN kannbearbeitetwerden:=TRUE ;ok
:=FALSE ELSE holenaechstenmehrtlgschluesselausdatei(ok)FI PER ;IF 
kannbearbeitetwerdenTHEN standardstartproc(maskenstammname);
bereiteaenderungvor;standardnprocELSE enter(2)FI .END PROC 
suausgesuchteabmeldedatenbearbeiten;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,
anzschlfelder:=anzkey(dnrschueler);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 anzschlfelderREP IF schluesseltrennung>0
THEN 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;PROC 
pruefeplausibilitaet(INT VAR fstatus):LET pruefartdatum=5,fmeldnichtimbestand
=55,bestandabgangsgrund="c02 abgang",bestandabschluss="c02 abschluss";fstatus
:=0;standardmeldung(pruefemeldung,"");IF standardmaskenfeld(fnrabgrund)<>leer
THEN IF NOT imschlbestand(standardmaskenfeld(fnrabgrund),bestandabgangsgrund)
THEN fstatus:=fnrabgrund;standardmeldung(fmeldnichtimbestand,"");LEAVE 
pruefeplausibilitaetFI ;FI ;IF standardmaskenfeld(fnrneueschule)<>leerTHEN 
IF NOT imbestand(standardmaskenfeld(fnrneueschule),bestandschulen)THEN 
fstatus:=fnrneueschule;standardmeldung(fmeldnichtimbestand,"");LEAVE 
pruefeplausibilitaetFI ;FI ;IF standardmaskenfeld(fnrabschluss)<>leerTHEN IF 
NOT imschlbestand(standardmaskenfeld(fnrabschluss),bestandabschluss)THEN 
fstatus:=fnrabschluss;standardmeldung(fmeldnichtimbestand,"");LEAVE 
pruefeplausibilitaetFI ;FI ;IF standardmaskenfeld(fnrabdatum)<>leerTHEN 
standardpruefe(pruefartdatum,fnrabdatum,0,0,"",fstatus);FI ;END PROC 
pruefeplausibilitaet;#dr11.05.88PROC kuerzelaendern(INT CONST statnr,TEXT 
CONST alterwert,neuerwert):kuerzelsummeeinsrunter(statnr,jgstaufber(wert(
fnrsusgrpjgst)),compress(wert(fnrsusgrpzugtut)),aktbestand,alterwert);
kuerzelsummeeinsrauf(statnr,jgstaufber(wert(fnrsusgrpjgst)),compress(wert(
fnrsusgrpzugtut)),aktbestand,neuerwert)END PROC kuerzelaendern;#END PACKET 
erfabmeldedaten