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/2.kursdaten importieren | 199 ++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 app/schulis/2.2.1/src/2.kursdaten importieren (limited to 'app/schulis/2.2.1/src/2.kursdaten importieren') diff --git a/app/schulis/2.2.1/src/2.kursdaten importieren b/app/schulis/2.2.1/src/2.kursdaten importieren new file mode 100644 index 0000000..20dd27e --- /dev/null +++ b/app/schulis/2.2.1/src/2.kursdaten importieren @@ -0,0 +1,199 @@ +PACKET kursdatenueberschnittstelleimportierenDEFINES +kursdatenschnittstelleimportanfang, +kursdatenschnittstelleimportaufbereitenfrage, +kursdatenschnittstelleimportaufbereiten, +kursdatenschnittstelleimportloescheundreturn, +kursdatenschnittstelleimportarchiv:LET eingangsmaske= +"ms kurswahldaten importieren",schuljahr="Schuljahr",halbjahr="Schulhalbjahr" +,kuwa2sperre="Kurswahl-2 ",filemodus="file ibm",listenname= +"Liste der Dateien auf der Diskette:",protname="Protokoll zur Übernahme", +schulname="Schulname",schulort="Schulort",leerzeile=" ",ueberschrift1= +"Protokoll zur Übernahme von Kurswahldaten aus Standardschnittstelle der", +ueberschrift2a="Jgst. ",ueberschrift2b=" für das Halbjahr ",ueberschrift2c= +" (Schuljahr ",unterschrift= +"-----------------------------------------------------------------------", +fehlerfall1="Fehler, Schüler nicht in akt. Jgst. : ",fehlerfall2= +"Warnung, neuer Kurs : ",fehlerfall3a= +"Fehler, Planblock nicht übernommen : ",fehlerfall3b= +" Nicht übernommene Daten : ",fehlerfall3c= +" ",fehlerfall4a= +"Fehler, unbekannter Kurs : ",fehlerfall4b= +" in Kurswahl von : ",trenner="�",dos="DOS", +eingangdateiname=2,kurslaengebr=6,kurslaengewk=7,kursendebr=5,kursendewk=6, +kzart="A",kzalle="A",kzplbl="P",kzstd="S",suffixfa=".FA",suffixwk=".WK", +suffixbr=".BR",suffixzi=".ZI",meldungkeineschueler=423,meldunggewhjunzul=405, +meldunggewsjunzul=127,meldunggewjgstunzul=404,meldungparallelanw=425, +meldungbearbwird=352,meldungwarten=69,meldungpraezisieren=129, +meldungserverfehler=416,meldungdatenuebernehmen=433,meldungdatenirrelevant= +432,meldungnamefalsch=323,meldungrausreichen=343,meldungnameunbek=351;INT +VAR i;TEXT VAR t;INT VAR fstat,aktfeld,ermwstd,kurspos,aktpos,aktzeile;TEXT +VAR aktdateiname:="schulis",gewjgst,gewhj,aktjgst,geplsj,geplhj,gewsj,aktsj:= +"0000",akthj,neuewahldaten,aktfake,dateieintrag,aktkurs,neuekurse:=trenner, +fach,kennung,behandeltekurse:=trenner,weitererblock;BOOL VAR archivfehler:= +FALSE ,sperreok:=TRUE ,aktodergeplhj:=FALSE ;THESAURUS VAR thes;FILE VAR dsfa +,dswk,dsbr,dszi,prot,g;PROC kursdatenschnittstelleimportanfang: +standardstartproc(eingangsmaske);infeld(2);standardmaskenfeld(aktdateiname, +eingangdateiname);standardfelderausgeben;standardnproc.END PROC +kursdatenschnittstelleimportanfang;PROC +kursdatenschnittstelleimportaufbereitenfrage:standardmeldung(meldungwarten,"" +);fstat:=0;pruefdateiname;holedateivomarchiv;holedatenfuerabfrage. +holedatenfuerabfrage:toline(dszi,1);readrecord(dszi,dateieintrag);gewsj:=text +(dateieintrag,4);i:=int(gewsj);IF NOT lastconversionokTHEN +fehlermeldungsjunzulaessigFI ;gewhj:=dateieintragSUB 7;IF gewhj<>"1"CAND +gewhj<>"2"THEN fehlermeldunggewhjunzulaessigFI ;gewjgst:=subtext(dateieintrag +,5,6);IF gewjgst<>"10"CAND gewjgst<>"11"CAND gewjgst<>"12"CAND gewjgst<>"13" +THEN fehlermeldunggewjgstunzulaessigFI ;IF aktsj="0000"THEN aktsj:= +schulkenndatum(schuljahr);akthj:=schulkenndatum(halbjahr);geplhj:=akthj; +geplsj:=aktsj;geplanteshjundsjberechnen(geplhj,geplsj)FI ;IF gewsj=aktsjCAND +gewhj=akthjTHEN aktodergeplhj:=TRUE ;aktjgst:=gewjgstELIF gewsj=aktsjCAND +gewhj0THEN meldungausgeben(meldungserverfehler,eingangdateiname, +1);LEAVE kursdatenschnittstelleimportaufbereitenELIF letzterschueler< +ersterschuelerTHEN meldungausgeben(meldungkeineschueler,eingangdateiname,1); +LEAVE kursdatenschnittstelleimportaufbereitenFI ;kurswahlsperresetzen( +kuwa2sperre,sperreok);IF NOT sperreokTHEN meldungausgeben(meldungparallelanw, +eingangdateiname,1);LEAVE kursdatenschnittstelleimportaufbereitenFI ; +neuekurse:=trenner;behandeltekurse:=trenner;bereiteprotokollvor; +uebernehmebrdatei;uebernehmewkdatei;loeschemeldung;kurswahlsperrebeenden( +kuwa2sperre);kurswahlbasissichern;zeigedatei(protname,"vr"). +kurswahlbasissichern:kurswahl0sichern(fstat);kurswahl1sichern(fstat); +kurswahl2sichern(fstat);IF fstat<>0THEN meldungausgeben(meldungserverfehler, +eingangdateiname,1);LEAVE kursdatenschnittstelleimportaufbereitenFI . +bereiteprotokollvor:forget(protname,quiet);prot:=sequentialfile(output, +protname);putline(prot,schulkenndatum(schulname));putline(prot,text( +schulkenndatum(schulort),65)+date);putline(prot,leerzeile);putline(prot, +ueberschrift1);putline(prot,ueberschrift2a+aktjgst+ueberschrift2b+gewjgst+"." ++gewhj+ueberschrift2c+text(gewsj,2)+"/"+subtext(gewsj,3)+"):");putline(prot, +unterschrift);putline(prot,leerzeile).uebernehmebrdatei:bereitek1dateivor; +toline(dsbr,1);col(dsbr,1);WHILE NOT eof(dsbr)REP readrecord(dsbr, +dateieintrag);IF compress(dateieintrag)<>""THEN pruefplanblockundkurse(text( +dateieintrag,3),subtext(dateieintrag,4))FI ;down(dsbr);col(dsbr,1)PER . +bereitek1dateivor:planbloeckeinitialisieren;FOR iFROM 1UPTO 22REP +planblockloeschen(text(i))PER .uebernehmewkdatei:toline(dswk,1);col(dswk,1); +WHILE NOT eof(dswk)REP readrecord(dswk,dateieintrag);pruefschueler(compress( +text(dateieintrag,30)),compress(subtext(dateieintrag,31,45)),subtext( +dateieintrag,46,53),subtext(dateieintrag,54));down(dswk);col(dswk,1)PER .END +PROC kursdatenschnittstelleimportaufbereiten;PROC pruefplanblockundkurse( +TEXT CONST block,kurse):INT VAR blockbez:=int(text(block,2)),laengekurse:= +length(kurse);standardmeldung(meldungbearbwird,"Planblock "+text(block,2)+"#" +);IF blockbez>0CAND blockbez<23THEN tragblockein;tragkurseeinELSE +fehlermeldungblockfalschFI .fehlermeldungblockfalsch:putline(prot, +fehlerfall3a+text(block,2));putline(prot,fehlerfall3b+text(kurse,42));IF +laengekurse>42THEN putline(prot,fehlerfall3c+subtext(kurse,43))FI . +tragblockein:planblockeintragen(text(block,2),text(int(blockSUB 3))). +tragkurseein:kurspos:=1;WHILE kurspos""THEN ermittlewstd;tragkursein; +planbloeckezumkurseintragenmitevtlblockeintrag(aktfake,text(block,2), +weitererblock);behandeltekurseCAT aktfake+trennerELSE +evtlplanbloeckeaktualisierenFI ;kursposINCR kurslaengebrPER .ermittlewstd:IF +pos(neuekurse,trenner+aktfake+trenner)=0THEN aktzeile:=lineno(dsbr);ermwstd:= +int(blockSUB 3);toline(dsbr,aktzeile+1);col(dsbr,1);WHILE NOT eof(dsbr)REP +downety(dsbr,aktkurs);aktpos:=col(dsbr);IF NOT eof(dsbr)CAND ((aktpos-3)MOD 6 +)=1THEN readrecord(dsbr,t);ermwstdINCR int(tSUB 3);weitererblock:=text(t,2); +down(dsbr);col(dsbr,1);neuekurseCAT aktfake+trenner;toline(dsbr,aktzeile); +LEAVE ermittlewstdELSE col(dsbr,aktpos+1)FI ;PER ;neuekurseCAT aktfake+ +trenner;toline(dsbr,aktzeile)FI .evtlplanbloeckeaktualisieren:IF pos( +behandeltekurse,trenner+aktfake+trenner)=0CAND compress(aktfake)<>""THEN +aktzeile:=lineno(dsbr);toline(dsbr,aktzeile+1);col(dsbr,1);WHILE NOT eof(dsbr +)REP downety(dsbr,aktkurs);aktpos:=col(dsbr);IF NOT eof(dsbr)CAND ((aktpos-3) +MOD 6)=1THEN readrecord(dsbr,t);weitererblock:=text(t,2);behandeltekurseCAT +aktfake+trenner;toline(dsbr,aktzeile); +planbloeckezumkurseintragenmitevtlblockeintrag(aktfake,text(block,2), +weitererblock);LEAVE evtlplanbloeckeaktualisierenELSE col(dsbr,aktpos+1)FI ; +PER ;weitererblock:="";planbloeckezumkurseintragenmitevtlblockeintrag(aktfake +,text(block,2),weitererblock);behandeltekurseCAT aktfake+trenner;toline(dsbr, +aktzeile)FI .tragkursein:IF aktodergeplhjTHEN putline(prot,fehlerfall2+text( +aktkurs,2)+" "+text(subtext(aktkurs,5),4)+", Art "+subtext(aktkurs,3,4))FI ; +kurseintragen(text(aktkurs,2),text(subtext(aktkurs,5),4),text(ermwstd), +subtext(aktkurs,3,4)).END PROC pruefplanblockundkurse;PROC +planbloeckezumkurseintragenmitevtlblockeintrag(TEXT CONST kurs,block1,block2) +:TEXT VAR t:=planblockdaten(block1,kzstd);IF dbstatus=1THEN +planblockeintragen(block1,"0")FI ;t:=planblockdaten(block2,kzstd);IF dbstatus +=1THEN planblockeintragen(block2,"0")FI ;planbloeckezumkurseintragen(kurs, +block1,block2)END PROC planbloeckezumkurseintragenmitevtlblockeintrag;PROC +pruefschueler(TEXT CONST famname,rufname,gebdatum,wahldaten):standardmeldung( +meldungbearbwird,famname+", "+rufname+"#");t:=wahldatenzumschueler(famname, +rufname,gebdatum,kzart);IF dbstatus=1THEN fehlermeldungunbekschuelerELSE +tragwahldateneinFI .fehlermeldungunbekschueler:putline(prot,fehlerfall1+text( +famname+", "+rufname+", "+gebdatum,40)).tragwahldatenein: +schuelerwahleintragen(famname,rufname,gebdatum,aufbereitetewahldaten(famname, +rufname,gebdatum,wahldaten)).END PROC pruefschueler;TEXT PROC +aufbereitetewahldaten(TEXT CONST famname,rufname,gebdatum,altewahldaten):INT +VAR wahllaenge:=length(altewahldaten);TEXT VAR planbloecke;kurspos:=1; +neuewahldaten:="";WHILE kurspos=48AND zeichencode<=57)OR (zeichencode>=65AND +zeichencode<=90)OR (zeichencode>=97AND zeichencode<=122))THEN LEAVE +falschercodeWITH TRUE FI PER ;FALSE END PROC falschercode;PROC +meldungausgeben(INT CONST meldung,gewfeld,gewruecksprung):fstat:=1; +standardmeldung(meldung,"");infeld(gewfeld);return(gewruecksprung)END PROC +meldungausgeben;PROC archivanmelden:aktfeld:=infeld;archivfehler:=FALSE ; +commanddialogue(FALSE );disablestop;reserve(filemodus,/dos);IF iserrorTHEN +archivfehler:=TRUE ;abbruchnachfehler(1);ELSE enablestopFI .END PROC +archivanmelden;PROC kursdatenschnittstelleimportarchiv:aktfeld:=infeld; +archivanmelden;IF archivfehlerTHEN LEAVE kursdatenschnittstelleimportarchiv +FI ;archivlisten;infeld(aktfeld).archivlisten:standardmeldung(meldungwarten, +"");disablestop;g:=sequentialfile(output,listenname);thes:=ALL /dos;IF +iserrorTHEN abbruchnachfehler(1);ELSE thesaurusaufbereiten;enablestop; +zeigedatei(listenname,"vr");release(/dos)FI .thesaurusaufbereiten:t:=" ";i:=0 +;REP get(thes,t,i);putline(g,t)UNTIL t=""PER .END PROC +kursdatenschnittstelleimportarchiv;PROC abbruchnachfehler(INT CONST schritte) +:standardmeldung(meldungrausreichen,"Fehler: "+errormessage+" !#");clearerror +;return(schritte);infeld(aktfeld);release(/dos);commanddialogue(TRUE ); +enablestopEND PROC abbruchnachfehler;PROC fehlermeldungdateifehlt:fstat:=1; +standardmeldung(meldungnameunbek,aktdateiname+".FA (-WK,-BR,-ZI)#");infeld( +eingangdateiname);return(1).END PROC fehlermeldungdateifehlt;PROC +fehlermeldungfeldfuellen:meldungausgeben(meldungpraezisieren,eingangdateiname +,1).END PROC fehlermeldungfeldfuellen;PROC fehlermeldungnamefalsch(BOOL +CONST mitfalschemzeichen):IF mitfalschemzeichenTHEN fstat:=1;standardmeldung( +meldungnamefalsch,subtext(aktdateiname,i,i)+"#"+aktdateiname+"#");infeld( +eingangdateiname);return(1)ELSE meldungausgeben(meldungnamefalsch, +eingangdateiname,1)FI END PROC fehlermeldungnamefalsch;PROC +kursdatenschnittstelleimportloescheundreturn:forget(listenname,quiet);forget( +protname,quiet);loeschemeldung;return(3)END PROC +kursdatenschnittstelleimportloescheundreturn;PROC loeschemeldung:aktfeld:= +infeld;infeld(1);standardfelderausgeben;infeld(aktfeld)END PROC +loeschemeldung;END PACKET kursdatenueberschnittstelleimportieren + -- cgit v1.2.3