PACKET listederzeitrasterdatenDEFINES zeitrasterlisteerstellenunddruckenggfvorherzeigen:LET fnrausggeplanteshj=2, fnrausgaktuelleshj=3,fnrausgdrucker=4,fnrausgbild=5;LET schluesselschuljahr= "Schuljahr",schluesselschulhalbjahr="Schulhalbjahr", anzahldatensaetzeprozeitraster=66;LET zusätzlicherlaubtetasten="vr";LET meldunglistewirdaufgebaut=7,meldunglistewirdausgedruckt=58,meldungbittewarten =69,meldungkeinedatenvorhanden=68;LET dateinamezumzeigen= "Liste der Zeitrasterdaten",ueberschrift1fuerdruckdatei= "Liste der Zeitrasterdaten",ueberschrift2fuerdruckdatei= "-------------------------",blankszumauffuellen=" ", textanfangfuerschulhalbjahr="für Schuljahr 19",trennerfuerschuljahr="/", textmittefuerschulhalbjahr=", ",textendefuerschulhalbjahr=". Halbjahr", ueberschriftdererstentabelle="Uhrzeiten:",unterschriftdererstentabelle= "----------",zeilederwochentage= " Mo Di Mi Do Fr Sa",textvorbeginnzeiten= ". von",textvorendezeiten=" bis",trennerdererstentabelle=" ", stdundmintrenner=":",laengederstundenzeit=2,stellenderstundennummer=2, zeilenzahldererstentabelle=45,ueberschriftderzweitentabelle= "Kennzeichnung der Tagesteile:",unterschriftderzweitentabelle= "-----------------------------",zeilederstunden= " 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.",textmontag="Mo", textdienstag="Di",textmittwoch="Mi",textdonnerstag="Do",textfreitag="Fr", textsamstag="Sa",trennerderzweitentabelle=" ",stundenamsamstag=6, stundenprowochentag=12,mobissa=6,mobisfr=5,poskennungtagesteil=1, anfposbeginnzeit=2,endeposbeginnzeit=5,anfposendezeit=6,endeposendezeit=9, gesamtetextlaenge=9,stellenfuerkennungtagesteil=1,stellenfuerzeit=4;LET niltext="",blank=" ",null=0,eins=1;BOOL VAR erstaufbildschirm:=FALSE ;TEXT VAR schuljahr:=niltext,halbjahr:=niltext;INT VAR fehlerstatus;ROW anzahldatensaetzeprozeitrasterTEXT VAR alteszeitraster;INT VAR aktindex;PROC zeitrasterlisteerstellenunddruckenggfvorherzeigen(INT CONST nr):SELECT nrOF CASE 1:zeitrasterlisteerstellenCASE 2:zeitrasterlistedruckenENDSELECT .END PROC zeitrasterlisteerstellenunddruckenggfvorherzeigen;PROC zeitrasterlisteerstellen:INT VAR i;prüfeobrichtigangekreuztist;IF fehlerstatus<>nullTHEN infeld(fehlerstatus);return(1);LEAVE zeitrasterlisteerstellenFI ;erstaufbildschirm:=standardmaskenfeld(fnrausgbild )<>niltext;IF erstaufbildschirmTHEN standardmeldung(meldunglistewirdaufgebaut ,niltext)ELSE standardmeldung(meldungbittewarten,niltext)FI ; berechnebearbeitungsschuljahrundhalbjahr;fuelledenpuffermitdemzeitraster;IF aktindex=nullTHEN standardmeldung(meldungkeinedatenvorhanden,niltext);return( 1);LEAVE zeitrasterlisteerstellenFI ;fuegeerstetabelleindateian; fuegezweitetabelleindateian;IF erstaufbildschirmTHEN zeigedatei( dateinamezumzeigen,zusätzlicherlaubtetasten)ELSE standardmeldung( meldunglistewirdausgedruckt,niltext);zeitrasterlistedruckenFI . prüfeobrichtigangekreuztist:standardpruefe(5,fnrausggeplanteshj, fnrausgaktuelleshj,null,niltext,fehlerstatus);IF fehlerstatus=nullTHEN standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,fehlerstatus);FI . fuelledenpuffermitdemzeitraster:aktindex:=null;inittupel(dnrzeitraster); statleseschleife(dnrzeitraster,schuljahr,halbjahr,fnrzrsj,fnrzrhj,PROC fuellenurpuffer);FOR iFROM aktindex+einsUPTO anzahldatensaetzeprozeitraster REP alteszeitraster(i):=gesamtetextlaenge*blankPER . berechnebearbeitungsschuljahrundhalbjahr:schuljahr:=schulkenndatum( schluesselschuljahr);halbjahr:=schulkenndatum(schluesselschulhalbjahr);IF standardmaskenfeld(fnrausgaktuelleshj)=niltextTHEN geplanteshjundsjberechnen( halbjahr,schuljahr)FI .END PROC zeitrasterlisteerstellen;PROC zeitrasterlistedrucken:INT VAR i;TEXT VAR t;FILE VAR f1:=sequentialfile(input ,dateinamezumzeigen);initdruckkopf(zentriert(ueberschrift1fuerdruckdatei, druckbreite),zentriert(ueberschrift2fuerdruckdatei,druckbreite)); setzemitseitennummern(TRUE );druckvorbereiten;druckkopfschreiben;getline(f1,t );druckzeileschreiben(t);getline(f1,t);druckzeileschreiben(zentriert(compress (t),druckbreite));FOR iFROM einsUPTO zeilenzahldererstentabelleREP getline(f1 ,t);druckzeileschreiben(t)PER ;seitenwechsel;druckkopfschreiben;WHILE NOT eof (f1)REP getline(f1,t);druckzeileschreiben(t)PER ;drucknachbereiten;forget( dateinamezumzeigen,quiet);IF erstaufbildschirmTHEN enter(2)ELSE enter(1)FI END PROC zeitrasterlistedrucken;PROC fuegeerstetabelleindateian:INT VAR i,j,k ;TEXT VAR t1,t2,t3;FILE VAR f:=sequentialfile(output,dateinamezumzeigen); putline(f,blank);putline(f,zentriert(textanfangfuerschulhalbjahr+text( schuljahr,2)+trennerfuerschuljahr+subtext(schuljahr,3)+ textmittefuerschulhalbjahr+halbjahr+textendefuerschulhalbjahr,bildbreite)); putline(f,blank);putline(f,blank);putline(f,ueberschriftdererstentabelle+ blank);putline(f,unterschriftdererstentabelle+blank);putline(f,blank);putline (f,zeilederwochentage+blank);FOR iFROM einsUPTO stundenprowochentagREP putline(f,blank);t1:=text(i,stellenderstundennummer)+textvorbeginnzeiten;t2:= textvorendezeiten;IF i>stundenamsamstagTHEN k:=mobisfrELSE k:=mobissaFI ;FOR jFROM einsUPTO kREP t1CAT trennerdererstentabelle;t2CAT trennerdererstentabelle;t3:=subtext(alteszeitraster(i+(j-eins)* stundenprowochentag),anfposbeginnzeit,endeposbeginnzeit);t1CAT text(t3, laengederstundenzeit)+stdundmintrenner+subtext(t3,laengederstundenzeit+1);t3 :=subtext(alteszeitraster(i+(j-eins)*stundenprowochentag),anfposendezeit, endeposendezeit);t2CAT text(t3,laengederstundenzeit)+stdundmintrenner+subtext (t3,laengederstundenzeit+1);PER ;putline(f,t1+blank);putline(f,t2+blank);PER ;putline(f,blank);putline(f,blank);putline(f,blank)END PROC fuegeerstetabelleindateian;PROC fuegezweitetabelleindateian:INT VAR i,j,k; TEXT VAR t1;FILE VAR f:=sequentialfile(output,dateinamezumzeigen);putline(f, blank);putline(f,ueberschriftderzweitentabelle+blank);putline(f, unterschriftderzweitentabelle+blank);putline(f,blank);putline(f, zeilederstunden+blank);putline(f,blank);FOR iFROM einsUPTO mobissaREP SELECT iOF CASE 1:t1:=textmontagCASE 2:t1:=textdienstagCASE 3:t1:=textmittwochCASE 4 :t1:=textdonnerstagCASE 5:t1:=textfreitagCASE 6:t1:=textsamstagEND SELECT ; IF i=mobissaTHEN k:=stundenamsamstagELSE k:=stundenprowochentagFI ;FOR jFROM einsUPTO kREP t1CAT trennerderzweitentabelle+text(alteszeitraster((i-eins)* stundenprowochentag+j),poskennungtagesteil);PER ;putline(f,t1+blank);PER END PROC fuegezweitetabelleindateian;PROC fuellenurpuffer(BOOL VAR b):TEXT VAR t; IF wert(fnrzrsj)>schuljahrCOR wert(fnrzrhj)>halbjahrCOR dbstatus<>okTHEN b:= TRUE ELSE aktindexINCR eins;t:=blankszumauffuellen+wert(fnrzrkennungteil); alteszeitraster(aktindex):=subtext(t,length(t)+eins- stellenfuerkennungtagesteil);t:=blankszumauffuellen+wert(fnrzrbeginnuhr); alteszeitraster(aktindex)CAT subtext(t,length(t)+eins-stellenfuerzeit);t:= blankszumauffuellen+wert(fnrzrendeuhr);alteszeitraster(aktindex)CAT subtext(t ,length(t)+eins-stellenfuerzeit)FI END PROC fuellenurpuffer;END PACKET listederzeitrasterdaten