app/schulis/2.2.1/src/1.erf.abmeldedaten

Raw file
Back to index

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