From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/schulis/2.2.1/src/1.erf.schuelerdaten | 605 ++++++++++++++++++++++++++++++ 1 file changed, 605 insertions(+) create mode 100644 app/schulis/2.2.1/src/1.erf.schuelerdaten (limited to 'app/schulis/2.2.1/src/1.erf.schuelerdaten') 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 eintrittsjgstjgstufe13THEN 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 + -- cgit v1.2.3