diff options
Diffstat (limited to 'app/schulis/2.2.1/src/0.anschr.steuerfunktionen einfach')
-rw-r--r-- | app/schulis/2.2.1/src/0.anschr.steuerfunktionen einfach | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/0.anschr.steuerfunktionen einfach b/app/schulis/2.2.1/src/0.anschr.steuerfunktionen einfach new file mode 100644 index 0000000..e0024ca --- /dev/null +++ b/app/schulis/2.2.1/src/0.anschr.steuerfunktionen einfach @@ -0,0 +1,96 @@ +PACKET anschrsteuerfunktionenfuereinfacheanschreibenDEFINES anschreibenstart, +naechstesanschreiben:LET anschreibentext="Text des Anschreibens";LET manager= +"anschreiben server";LET niltext="",nildatum="01.01.00";LET nproc=1, +eingangsbildschirm=2;LET vorwaertstaste="a";LET tupelstackgroesse=10;LET +ROWTEXT =ROW 10TEXT ;LET druckmeldnr=125,existiertnichtnr=126,leermeldnr=127, +endemeldnr=128,weitereangabenr=129,nichterstellbarmeldnr=130;TEXT VAR +druckmeld:="";LET meldkz="#";INT VAR dateinummer,aktuellerindex,anzgeftupel; +TEXT VAR anschreibenvordruck;BOOL VAR einzelbearbeitung;PROC anschreibenstart +(INT CONST aktuellerinx,TEXT CONST vordruck,BOOL CONST anschreibenzeigen, +peinzelbearbeitung,BOOL PROC sonderwerteundueberpruefungauferstellbarkeit, +BOOL PROC pruefespeziell):ROWTEXT VAR schluesselsve1,schluesselsve2;INT VAR i +;vorbereitungen;IF einzelbearbeitungTHEN einzelanschreibenELSE +anschreibenfuerbestandFI .anschreibenfuerbestand:IF leererbestandTHEN +meldeleerenbestand;zurueckzumeingangsbildschirmELSE +bearbeiteallediesesbestandesFI .bearbeiteallediesesbestandes:IF +anschreibenzeigenTHEN erstenbearbeitenELSE anschreibenleseschleife(BOOL PROC +sonderwerteundueberpruefungauferstellbarkeit,BOOL PROC pruefespeziell); +meldeendederbrieferstellung;zurueckzumeingangsbildschirmFI .erstenbearbeiten: +BOOL VAR erstellbar:=TRUE ;BOOL VAR bestandleer:=FALSE ;erstellbar:= +sonderwerteundueberpruefungauferstellbarkeit;IF erstellbarTHEN +bearbeitenzumzeigenELSE REP IF anzgeftupel=0THEN anzgeftupel:= +tupelstackgroesse;multisucc(aktuellerindex,anzgeftupel)FI ;IF anzgeftupel<>0 +THEN multisucc;anzgeftupelDECR 1;bestandleer:=NOT pruefespeziellELSE +bestandleer:=TRUE FI UNTIL bestandleerCOR +sonderwerteundueberpruefungauferstellbarkeitPER ;IF NOT bestandleerTHEN +bearbeitenzumzeigenELSE zurueckzumeingangsbildschirm; +meldeendederbrieferstellungFI FI .bearbeitenzumzeigen:IF einzelbearbeitung +CAND NOT sonderwerteundueberpruefungauferstellbarkeitTHEN +meldenichterstellbar;zurueckzumeingangsbildschirmELSE +schreibesteuerzeichenzeile(anschreibentext);briefalternative( +anschreibenvordruck,anschreibentext);editierebriefFI .einzelanschreiben: +direktlesen;IF gefundenTHEN IF eindeutigTHEN datenlesen;IF anschreibenzeigen +THEN bearbeitenzumzeigenELSE einzelbriefschreiben; +zurueckzumeingangsbildschirmFI ELSE meldeanforderunggenauererangaben; +zurueckzumeingangsbildschirmFI ELSE meldenichtgefunden; +zurueckzumeingangsbildschirmFI .vorbereitungen:dateinummer:=dateinr(primdatid +(aktuellerinx));aktuellerindex:=aktuellerinx;einzelbearbeitung:= +peinzelbearbeitung;meldungstext(druckmeldnr,druckmeld); +setzesonderwerteschulkenndaten;setzewerte;holeanschreibenvordruck.setzewerte: +anschreibenvordruck:=vordruck.holeanschreibenvordruck:loeschealtenvordruck; +fetch(anschreibenvordruck,/manager).loeschealtenvordruck:forget(vordruck, +quiet).direktlesen:gesetztenschluesselsichern(schluesselsve1);anzgeftupel:=2; +multisearchforward(aktuellerindex,anzgeftupel).gefunden:IF anzgeftupel=0THEN +FALSE ELSE multisucc;pruefespeziellCAND schluesselgleichFI .schluesselgleich: +NOT schluesselungleich(schluesselsve1,schluesselsve1).eindeutig:anzgeftupel=1 +COR naechsterungleich.naechsterungleich:gesetztenschluesselsichern( +schluesselsve2);multisucc;IF NOT pruefespeziellTHEN TRUE ELSE +schluesselungleich(schluesselsve1,schluesselsve2)FI .datenlesen:stackentry(1) +.einzelbriefschreiben:IF NOT sonderwerteundueberpruefungauferstellbarkeit +THEN meldenichterstellbarELSE briefschreibenFI .meldenichtgefunden: +standardmeldung(existiertnichtnr,niltext).meldeanforderunggenauererangaben: +standardmeldung(weitereangabenr,niltext).meldenichterstellbar:standardmeldung +(nichterstellbarmeldnr,sonderwert(indexadressat)+meldkz). +meldeendederbrieferstellung:standardmeldung(endemeldnr,niltext). +zurueckzumeingangsbildschirm:return(nproc).leererbestand:anzgeftupel:= +tupelstackgroesse;multisearchforward(aktuellerindex,anzgeftupel);IF +anzgeftupel<>0THEN multisucc;anzgeftupelDECR 1;NOT pruefespeziellELSE TRUE +FI .meldeleerenbestand:standardmeldung(leermeldnr,niltext).END PROC +anschreibenstart;BOOL PROC schluesselungleich(ROWTEXT CONST sve1,sve2):INT +VAR i;FOR iFROM 1UPTO anzkey(dateinummer)REP IF sve1[i]=""COR (feldtyp( +dateinummer+i)=datumfeldCAND sve1[i]=nildatum)THEN LEAVE schluesselungleich +WITH FALSE FI ;IF sve2[i]<>wert(dateinummer+i)THEN LEAVE schluesselungleich +WITH TRUE FI PER ;FALSE ENDPROC schluesselungleich;PROC +gesetztenschluesselsichern(ROW 10TEXT VAR schluesselsve):INT VAR i;FOR iFROM +1UPTO anzkey(dateinummer)REP schluesselsve[i]:=wert(dateinummer+i)PER +ENDPROC gesetztenschluesselsichern;PROC briefschreiben: +schreibesteuerzeichenzeile(anschreibentext);briefalternative( +anschreibenvordruck,anschreibentext);print(anschreibentext);standardmeldung( +druckmeldnr,sonderwert(indexadressat)+meldkz);forget(anschreibentext,quiet) +END PROC briefschreiben;PROC anschreibenleseschleife(BOOL PROC +sonderwerteundueberpruefungauferstellbarkeit,BOOL PROC pruefespeziell):BOOL +VAR schluss:=FALSE ;vorlesen;leseschleife.leseschleife:WHILE NOT schlussREP +IF sonderwerteundueberpruefungauferstellbarkeitTHEN briefschreibenELSE +standardmeldung(nichterstellbarmeldnr,sonderwert(indexadressat)+meldkz)FI ; +lesenPER .lesen:IF anzgeftupel=0THEN anzgeftupel:=tupelstackgroesse;multisucc +(aktuellerindex,anzgeftupel)FI ;satzlesen.vorlesen:anzgeftupel:= +tupelstackgroesse;multisearchforward(aktuellerindex,anzgeftupel);satzlesen. +satzlesen:IF anzgeftupel<>0THEN multisucc;anzgeftupelDECR 1;schluss:=NOT +pruefespeziellELSE schluss:=TRUE FI .END PROC anschreibenleseschleife;PROC +editierebrief:editiere(anschreibentext,vorwaertstaste,FALSE )END PROC +editierebrief;PROC naechstesanschreiben(BOOL PROC +sonderwerteundueberpruefungauferstellbarkeit,BOOL PROC pruefespeziell,BOOL +CONST drucken):BOOL VAR bestandleer:=FALSE ;IF druckenTHEN print( +anschreibentext);standardmeldung(druckmeld#nr,#,sonderwert(indexadressat)+ +meldkz)FI ;forget(anschreibentext,quiet);IF einzelbearbeitungTHEN enter( +eingangsbildschirm)ELSE REP IF anzgeftupel=0THEN anzgeftupel:= +tupelstackgroesse;multisucc(aktuellerindex,anzgeftupel)FI ;IF anzgeftupel<>0 +THEN multisucc;anzgeftupelDECR 1;bestandleer:=NOT pruefespeziellELSE +bestandleer:=TRUE FI UNTIL bestandleerCOR +sonderwerteundueberpruefungauferstellbarkeitPER ;IF NOT bestandleerTHEN +schreibesteuerzeichenzeile(anschreibentext);briefalternative( +anschreibenvordruck,anschreibentext);return(nproc)ELSE standardmeldung( +endemeldnr,niltext);#enter(eingangsbildschirm)#return(eingangsbildschirm)FI +FI END PROC naechstesanschreiben;END PACKET +anschrsteuerfunktionenfuereinfacheanschreiben; + |