PACKET zeitwuenschedruckenDEFINES zeitwuenschespezielleteile:LET AUSGFELD = ROW ausgfeldlaengeTEXT ,ausgfeldlaenge=18,zeilenbreite=60,zeilenanzahl=1,sj= "Schuljahr",hj="Schulhalbjahr",ueberschrzeilen=0,ausgabeparam="#",eingmaske= "ms liste zeitwuensche",meldungbearb=352,meldungpraez=129,fldsortlehrer=2, fldsortsugrup=3,fldsortraeume=4,fldsortfaecher=5,fldsortkopplg=6,fldakthj=7, fldaufdr=9,fldaufbs=8,posanzut=1,posgewut=3,posanzvm=4,posgewvm=6,posanznm=7, posgewnm=9,ausganzpos=11,ausggewpos=18,minus="-",plus="+",leerzeile=" ", kennzlehrer="P",kennzsugrup="S",kennzraeume="R",kennzfaecher="F",kennzkoppl= "K",moeintrag="Mo ",dieintrag="Di ",mieintrag="Mi ",doeintrag="Do ", freintrag="Fr ",saeintrag="Sa ",anhangl="Lehrer ",anhangs="Schülergruppen " ,anhangr="Räume ",anhangf="Fächer ",anhangk="Kopplungen ",ueberschrift= "Liste der Zeitwünsche für ",leererunbestwunsch=" ";AUSGFELD VAR ausgfeld;INT VAR i,status,druckzeilenzahl,fall;TEXT VAR bezug,objekt, objektbez,druckstrich;TEXT VAR sjahr,hjahr;INT VAR schj,schhj:=0;TEXT VAR bestwunsch,unbestwunsch,zeitwuenscheueberschrift:="";TEXT VAR bestwzeile, unbestwtage,unbestwvorm,unbestwnachm,bestwurzeile:= " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _"+ " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "+ " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "+ "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ";TEXT VAR moobjeintrag,diobjeintrag,miobjeintrag,doobjeintrag,frobjeintrag,saobjeintrag ;BOOL PROC multistop:dbstatus=okCAND wert(fnrzwbezug)=bezugCAND intwert( fnrzwhj)=schhjCAND intwert(fnrzwsj)=schjEND PROC multistop;BOOL PROC multistopsim:IF dbstatus=okTHEN IF intwert(fnrzwhj)=schhjCAND intwert(fnrzwsj )=schjCAND wert(fnrzwbezug)=bezugTHEN LEAVE multistopsimWITH TRUE ELSE setzebestandende(TRUE );LEAVE multistopsimWITH FALSE FI ELSE setzebestandende (TRUE )FI ;FALSE END PROC multistopsim;PROC holeakthj:holakthj;holaktj;IF standardmaskenfeld(fldakthj)=""THEN bergeplhjujFI .holakthj:hjahr:= schulkenndatum(hj);schhj:=int(hjahr).holaktj:sjahr:=schulkenndatum(sj);schj:= int(sjahr).bergeplhjuj:geplanteshjundsjberechnen(hjahr,sjahr);schj:=int(sjahr );schhj:=int(hjahr).END PROC holeakthj;PROC zeitwuenschespezielleteile(INT CONST anwahl):SELECT anwahlOF CASE 1:zeitwuenschedialogvorbereitenCASE 2: zeitwuenscherichtigCASE 3:zeitwuenschelistenvorbereitenCASE 4: zeitwuenschedruckvorbereitenCASE 5:zeitwuenscheseitedruckenCASE 6: zeitwuenschebsvorbereitenCASE 7:zeitwuenscheseitezeigenEND SELECT .END PROC zeitwuenschespezielleteile;PROC zeitwuenschedialogvorbereiten: setzeanfangswerte(eingmaske,fldsortlehrer)END PROC zeitwuenschedialogvorbereiten;PROC zeitwuenscherichtig:IF standardmaskenfeld( fldsortlehrer)=""CAND standardmaskenfeld(fldsortsugrup)=""CAND standardmaskenfeld(fldsortraeume)=""CAND standardmaskenfeld(fldsortfaecher)= ""CAND standardmaskenfeld(fldsortkopplg)=""THEN standardmeldung(meldungpraez, "");setzeeingabetest(FALSE );infeld(fldsortlehrer);LEAVE zeitwuenscherichtig ELIF standardmaskenfeld(fldaufdr)=""CAND standardmaskenfeld(fldaufbs)=""THEN standardmeldung(meldungpraez,"");setzeeingabetest(FALSE );infeld( fldsortlehrer);LEAVE zeitwuenscherichtigFI ;standardpruefe(5,fldsortlehrer, fldsortkopplg,0,"",status);IF status<>0THEN infeld(status);setzeeingabetest( FALSE )ELSE standardpruefe(5,fldaufdr,fldaufbs,0,"",status);IF status<>0THEN infeld(status);setzeeingabetest(FALSE )ELSE IF standardmaskenfeld( fldsortlehrer)<>""THEN fall:=fldsortlehrer;objektbez:=anhangl;bezug:= kennzlehrerELIF standardmaskenfeld(fldsortsugrup)<>""THEN fall:=fldsortsugrup ;objektbez:=anhangs;bezug:=kennzsugrupELIF standardmaskenfeld(fldsortraeume) <>""THEN fall:=fldsortraeume;objektbez:=anhangr;bezug:=kennzraeumeELIF standardmaskenfeld(fldsortfaecher)<>""THEN fall:=fldsortfaecher;objektbez:= anhangf;bezug:=kennzfaecherELIF standardmaskenfeld(fldsortkopplg)<>""THEN fall:=fldsortkopplg;objektbez:=anhangk;bezug:=kennzkopplFI ; setzeausgabedrucker(standardmaskenfeld(fldaufdr)<>"");setzeeingabetest(TRUE ) ;holeakthj;zeitwuenscheueberschrift:=ueberschrift+objektbez+hjahr+". "+text( sjahr,2)+"/"+subtext(sjahr,3)FI ;FI END PROC zeitwuenscherichtig;PROC zeitwuenschelistenvorbereiten:BOOL VAR b;inittupel(dnrzeitwuensche);initobli( zeilenanzahl);setzeidentiwert("");setzewerte;objektlistestarten( dnrzeitwuensche,sjahr,fnrzwbezugsobjekt,TRUE ,b);setzebestandende(NOT multistopCOR b).setzewerte:putintwert(fnrzwsj,schj);putintwert(fnrzwhj,schhj) ;putwert(fnrzwbezug,bezug).END PROC zeitwuenschelistenvorbereiten;PROC zeitwuenschebsvorbereiten:standardkopfmaskeaktualisieren(zentriert( zeitwuenscheueberschrift,51));setzebildanfangsposition(3)END PROC zeitwuenschebsvorbereiten;PROC zeitwuenscheseitezeigen:blaettern(PROC (INT CONST )zeitwuenschezeigen,aktion,TRUE ,TRUE ,BOOL PROC multistop);END PROC zeitwuenscheseitezeigen;PROC zeitwuenschezeigen(INT CONST procparameter): zeitwuenscheholen;zeitwuenscheaufbereiten;zeitwuenscheaufbs;END PROC zeitwuenschezeigen;PROC zeitwuenscheholen:objekt:=wert(fnrzwbezugsobjekt); bestwunsch:=wert(fnrzwbestimmtewuensche);unbestwunsch:=wert( fnrzwunbestimmtewuensche);IF NOT multistopTHEN setzebestandende(TRUE )FI . END PROC zeitwuenscheholen;PROC zeitwuenscheaufbereiten:bereiteobjektauf( objekt)END PROC zeitwuenscheaufbereiten;PROC zeitwuenscheaufbs:FOR iFROM 1 UPTO ausgfeldlaengeREP ausgfeld(i)IN ausgabepos;erhoeheausgabeposumeinsPER END PROC zeitwuenscheaufbs;PROC zeitwuenschedruckvorbereiten:druckvorbereiten ;variablensetzen;initdruckkopf(zentriert(zeitwuenscheueberschrift,druckbreite ));inittupel(dnrzeitwuensche);setzebestandende(FALSE );setzewerte; lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopsim).variablensetzen:druckstrich:=druckbreite*"-"; druckzeilenzahl:=drucklaenge(ueberschrzeilen).setzewerte:putintwert(fnrzwsj, schj);putintwert(fnrzwhj,schhj);putwert(fnrzwbezug,bezug).END PROC zeitwuenschedruckvorbereiten;PROC zeitwuenscheseitedrucken: zeitwuenscheueberschriftdrucken;seitedrucken(PROC (INT VAR ) zeitwuenschedrucken,druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopsim); seitenwechselEND PROC zeitwuenscheseitedrucken;PROC zeitwuenscheueberschriftdrucken:druckkopfschreibenEND PROC zeitwuenscheueberschriftdrucken;PROC zeitwuenschedrucken(INT VAR zz): zeitwuenscheholen;standardmeldung(meldungbearb,objektbez+objekt+ausgabeparam) ;zeitwuenscheaufbereiten(zz);zeitwuenscheindruckdatei(zz)END PROC zeitwuenschedrucken;PROC zeitwuenscheaufbereiten(INT VAR zz):bereiteobjektauf (objekt)END PROC zeitwuenscheaufbereiten;PROC zeitwuenscheindruckdatei(INT VAR zz):FOR iFROM 1UPTO ausgfeldlaengeREP druckzeileschreiben(ausgfeld(i));zz INCR 1PER ;druckzeileschreiben(leerzeile);zzINCR 1;druckzeileschreiben( leerzeile);zzINCR 1END PROC zeitwuenscheindruckdatei;PROC bereiteobjektauf( TEXT CONST objekt):INT VAR suchpos:=1;TEXT VAR wunsch:="";moobjeintrag:= moeintrag;diobjeintrag:=dieintrag;miobjeintrag:=mieintrag;doobjeintrag:= doeintrag;frobjeintrag:=freintrag;saobjeintrag:=saeintrag;uebertragwuensche; ausgfeld(1):=(objekt+":");ausgfeld(2):=leerzeile;ausgfeld(3):=( "Wünsche zu festen Zeiten:");ausgfeld(4):=(leerzeile);ausgfeld(5):=( " 1 2 3 4 5 6 7 8 9 10 11 12");ausgfeld(6):=( moobjeintrag+text(bestwzeile,48));ausgfeld(7):=(diobjeintrag+subtext( bestwzeile,49,96));ausgfeld(8):=(miobjeintrag+subtext(bestwzeile,97,144)); ausgfeld(9):=(doobjeintrag+subtext(bestwzeile,145,192));ausgfeld(10):=( frobjeintrag+subtext(bestwzeile,193,240));ausgfeld(11):=(saobjeintrag+subtext (bestwzeile,241));ausgfeld(12):=(leerzeile);ausgfeld(13):=( " allgemeine Wünsche:");ausgfeld(14):=( " Anzahl/Gewicht ");ausgfeld(15):=("ganze Tage " +unbestwtage);ausgfeld(16):=("zusätzl. Vorm. "+unbestwvorm);ausgfeld(17):=( "zusätzl. Nachm. "+unbestwnachm);ausgfeld(18):=(leerzeile).uebertragwuensche: bestwzeile:=bestwurzeile;unbestwtage:=" _ _ ";unbestwvorm:= " _ _ ";unbestwnachm:=" _ _ ";tragbestwuenscheein ;tragunbestwuenscheein.tragbestwuenscheein:suchpos:=1;WHILE suchpos<>0REP suchpos:=pos(bestwunsch,minus,suchpos);IF suchpos<>0THEN wunsch:=subtext( bestwunsch,suchpos,suchpos+1);replace(bestwzeile,suchpos*2-1,wunsch);suchpos INCR 1FI ;PER ;suchpos:=1;WHILE suchpos<>0REP suchpos:=pos(bestwunsch,plus, suchpos);IF suchpos<>0THEN wunsch:=subtext(bestwunsch,suchpos,suchpos+1); replace(bestwzeile,suchpos*2-1,wunsch);suchposINCR 1FI ;PER . tragunbestwuenscheein:IF unbestwunsch<>leererunbestwunschTHEN wunsch:= unbestwunschSUB posanzut;IF wunsch<>" "THEN replace(unbestwtage,ausganzpos, wunsch)FI ;wunsch:=unbestwunschSUB posgewut;IF wunsch<>" "THEN replace( unbestwtage,ausggewpos,wunsch)FI ;wunsch:=unbestwunschSUB posanzvm;IF wunsch <>" "THEN replace(unbestwvorm,ausganzpos,wunsch)FI ;wunsch:=unbestwunschSUB posgewvm;IF wunsch<>" "THEN replace(unbestwvorm,ausggewpos,wunsch)FI ;wunsch :=unbestwunschSUB posanznm;IF wunsch<>" "THEN replace(unbestwnachm,ausganzpos ,wunsch)FI ;wunsch:=unbestwunschSUB posgewnm;IF wunsch<>" "THEN replace( unbestwnachm,ausggewpos,wunsch)FI FI .END PROC bereiteobjektauf;END PACKET zeitwuenschedrucken