summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.erf.schuelerdaten
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/1.erf.schuelerdaten')
-rw-r--r--app/schulis/2.2.1/src/1.erf.schuelerdaten605
1 files changed, 605 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/1.erf.schuelerdaten b/app/schulis/2.2.1/src/1.erf.schuelerdaten
new file mode 100644
index 0000000..fb86963
--- /dev/null
+++ b/app/schulis/2.2.1/src/1.erf.schuelerdaten
@@ -0,0 +1,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
+