PACKET schulkenndatenbearbeitenDEFINES schulkenndatenbearbeiten, schulkenndatenspeichern:LET maske="ms erf schulkenndaten";LET sachgebiet= "c02 schulkenndaten";LET schuljahr="Schuljahr",schulhalbjahr="Schulhalbjahr", anfangschulhj="Anfang Schulhalbjahr",endeschulhj="Ende Schulhalbjahr", schulname="Schulname",schulleiter="Schulleiter",schulort="Schulort", schulstrasse="Schulstraße",schulrufnummer="Schulrufnummer";LET fnrschuljahr=2 ,fnrschulhalbjahr=3,fnranfangschulhj=4,fnrendeschulhj=5,fnrschulname=6, fnrschulleiter=7,fnrschulort=8,fnrschulstrasse=9,fnrschulrufnummer=10;LET melddatenwerdengespeichert=50,meldfehlendesdatum=52,melddatennichtspeichern= 63,meldkeinupdatemoeglich=73,meldungueltigesdatum=157,meldungueltigeangabe= 162;INT VAR ifnr;LET maxfelder=10;ROW maxfelderTEXT VAR alterwert;LET laengeschuljahr=4;INT VAR erstesjahr,zweitesjahr;LET zwischenpunkt=".", logbucheintrag="Anw. 10.3.1 Änderung an den Schulkenndaten";PROC schulkenndatenbearbeiten:standardstartproc(maske);zeigeschulkenndaten;infeld( fnrschuljahr);standardnproc.zeigeschulkenndaten:alterwert(fnrschuljahr):= schulkenndatum(schuljahr);alterwert(fnrschulhalbjahr):=schulkenndatum( schulhalbjahr);alterwert(fnranfangschulhj):=kurzdatum(schulkenndatum( anfangschulhj));alterwert(fnrendeschulhj):=kurzdatum(schulkenndatum( endeschulhj));alterwert(fnrschulname):=schulkenndatum(schulname);alterwert( fnrschulleiter):=schulkenndatum(schulleiter);alterwert(fnrschulort):= schulkenndatum(schulort);alterwert(fnrschulstrasse):=schulkenndatum( schulstrasse);alterwert(fnrschulrufnummer):=schulkenndatum(schulrufnummer); FOR ifnrFROM fnrschuljahrUPTO maxfelderREP standardmaskenfeld(alterwert(ifnr) ,ifnr)PER ;infeld(fnrschuljahr);standardfelderausgeben.END PROC schulkenndatenbearbeiten;PROC schulkenndatenspeichern(BOOL CONST speichern): IF NOT speichernTHEN standardmeldung(melddatennichtspeichern,"");pause(10); return(2)ELSE INT VAR fehlerstatus:=0;dbstatus(0);pruefeplausibilitaet( fehlerstatus);IF fehlerstatus=0THEN datenspeichern;logeintrag(logbucheintrag) ;IF dbstatus<>0THEN standardmeldung(meldkeinupdatemoeglich,"");return(1)ELSE return(2)FI ELSE infeld(fehlerstatus);return(1)FI FI .datenspeichern: standardmeldung(melddatenwerdengespeichert,"");IF standardmaskenfeld( fnrschuljahr)<>alterwert(fnrschuljahr)THEN putwert(fnrschlsachgebiet, sachgebiet);putwert(fnrschlschluessel,schuljahr);search(dnrschluessel,TRUE ); putwert(fnrschllangtext,standardmaskenfeld(fnrschuljahr));IF dbstatus=0THEN update(dnrschluessel);IF dbstatus<>0THEN infeld(fnrschuljahr);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld( fnrschulhalbjahr)<>alterwert(fnrschulhalbjahr)THEN putwert(fnrschlsachgebiet, sachgebiet);putwert(fnrschlschluessel,schulhalbjahr);search(dnrschluessel, TRUE );putwert(fnrschllangtext,standardmaskenfeld(fnrschulhalbjahr));IF dbstatus=0THEN update(dnrschluessel);IF dbstatus<>0THEN infeld( fnrschulhalbjahr);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld(fnranfangschulhj)<>alterwert(fnranfangschulhj)THEN putwert (fnrschlsachgebiet,sachgebiet);putwert(fnrschlschluessel,anfangschulhj); search(dnrschluessel,TRUE );putwert(fnrschllangtext,langdatum( standardmaskenfeld(fnranfangschulhj)));IF dbstatus=0THEN update(dnrschluessel );IF dbstatus<>0THEN infeld(fnranfangschulhj);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld(fnrendeschulhj)<>alterwert( fnrendeschulhj)THEN putwert(fnrschlsachgebiet,sachgebiet);putwert( fnrschlschluessel,endeschulhj);search(dnrschluessel,TRUE );putwert( fnrschllangtext,langdatum(standardmaskenfeld(fnrendeschulhj)));IF dbstatus=0 THEN update(dnrschluessel);IF dbstatus<>0THEN infeld(fnrendeschulhj);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld( fnrschulname)<>alterwert(fnrschulname)THEN putwert(fnrschlsachgebiet, sachgebiet);putwert(fnrschlschluessel,schulname);search(dnrschluessel,TRUE ); putwert(fnrschllangtext,standardmaskenfeld(fnrschulname));IF dbstatus=0THEN update(dnrschluessel);IF dbstatus<>0THEN infeld(fnrschulname);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld( fnrschulleiter)<>alterwert(fnrschulleiter)THEN putwert(fnrschlsachgebiet, sachgebiet);putwert(fnrschlschluessel,schulleiter);search(dnrschluessel,TRUE );putwert(fnrschllangtext,standardmaskenfeld(fnrschulleiter));IF dbstatus=0 THEN update(dnrschluessel);IF dbstatus<>0THEN infeld(fnrschulleiter);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld( fnrschulort)<>alterwert(fnrschulort)THEN putwert(fnrschlsachgebiet,sachgebiet );putwert(fnrschlschluessel,schulort);search(dnrschluessel,TRUE );putwert( fnrschllangtext,standardmaskenfeld(fnrschulort));IF dbstatus=0THEN update( dnrschluessel);IF dbstatus<>0THEN infeld(fnrschulort);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld(fnrschulstrasse)<> alterwert(fnrschulstrasse)THEN putwert(fnrschlsachgebiet,sachgebiet);putwert( fnrschlschluessel,schulstrasse);search(dnrschluessel,TRUE );putwert( fnrschllangtext,standardmaskenfeld(fnrschulstrasse));IF dbstatus=0THEN update (dnrschluessel);IF dbstatus<>0THEN infeld(fnrschulstrasse);LEAVE datenspeichernFI ELSE insert(dnrschluessel)FI FI ;IF standardmaskenfeld( fnrschulrufnummer)<>alterwert(fnrschulrufnummer)THEN putwert( fnrschlsachgebiet,sachgebiet);putwert(fnrschlschluessel,schulrufnummer); search(dnrschluessel,TRUE );putwert(fnrschllangtext,standardmaskenfeld( fnrschulrufnummer));IF dbstatus=0THEN update(dnrschluessel);IF dbstatus<>0 THEN infeld(fnrschulrufnummer);LEAVE datenspeichernFI ELSE insert( dnrschluessel)FI FI .END PROC schulkenndatenspeichern;PROC pruefeplausibilitaet(INT VAR fstatus):TEXT VAR pruefwert;pruefwert:= standardmaskenfeld(fnrschuljahr);IF length(pruefwert)<>laengeschuljahrTHEN standardmeldung(meldungueltigeangabe,"");fstatus:=fnrschuljahr;LEAVE pruefeplausibilitaetFI ;erstesjahr:=int(pruefwert);IF NOT lastconversionok THEN standardmeldung(meldungueltigeangabe,"");fstatus:=fnrschuljahr;LEAVE pruefeplausibilitaetELIF erstesjahr<0THEN standardmeldung( meldungueltigeangabe,"");fstatus:=fnrschuljahr;LEAVE pruefeplausibilitaetFI ; erstesjahr:=int(subtext(pruefwert,1,2));zweitesjahr:=int(subtext(pruefwert,3, 4));IF ((erstesjahr+1)MOD 100)<>zweitesjahrTHEN standardmeldung( meldungueltigeangabe,"");fstatus:=fnrschuljahr;LEAVE pruefeplausibilitaetFI ; IF standardmaskenfeld(fnrschulhalbjahr)<>"1"AND standardmaskenfeld( fnrschulhalbjahr)<>"2"THEN standardmeldung(meldungueltigeangabe,"");fstatus:= fnrschulhalbjahr;LEAVE pruefeplausibilitaetFI ;IF fehlerhaftesdatum( standardmaskenfeld(fnranfangschulhj))THEN standardmeldung( meldungueltigesdatum,"");fstatus:=fnranfangschulhj;LEAVE pruefeplausibilitaet FI ;IF fehlerhaftesdatum(standardmaskenfeld(fnrendeschulhj))THEN standardmeldung(meldungueltigesdatum,"");fstatus:=fnrendeschulhj;LEAVE pruefeplausibilitaetFI ;IF subtext(standardmaskenfeld(fnrendeschulhj),5,6)<> "00"AND NOT (datum(standardmaskenfeld(fnrendeschulhj))>datum( standardmaskenfeld(fnranfangschulhj)))THEN standardmeldung( meldungueltigesdatum,"");fstatus:=fnrendeschulhj;LEAVE pruefeplausibilitaet FI ;IF standardmaskenfeld(fnrschulname)=""THEN standardmeldung( meldfehlendesdatum,"");fstatus:=fnrschulname;LEAVE pruefeplausibilitaetFI . END PROC pruefeplausibilitaet;BOOL PROC fehlerhaftesdatum(TEXT CONST testdatum):datum(testdatum)=nildatumEND PROC fehlerhaftesdatum;TEXT PROC kurzdatum(TEXT CONST langdatum):subtext(langdatum,1,2)+subtext(langdatum,4,5) +subtext(langdatum,7,8)END PROC kurzdatum;TEXT PROC langdatum(TEXT CONST kurzdatum):subtext(kurzdatum,1,2)+zwischenpunkt+subtext(kurzdatum,3,4)+ zwischenpunkt+subtext(kurzdatum,5,6)END PROC langdatum;END PACKET schulkenndatenbearbeiten