summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/0.anschr.steuerfunktionen zusammengesetzt
blob: 0b77e49e6ed60451a15a474a0237654098ec542a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
PACKET anschrsteuerfunktionenfuerzusammengesetzteanschreibenDEFINES 
zusammengesetztesanschreiben,naechsteszusammengesetztesanschreiben:LET 
niltext="",nildatum="01.01.00";LET nproc=1,eingangsbildschirm=2;LET 
vorwaertstaste="a";LET tupelstackgroesse=10;LET druckmeldnr=125,
existiertnichtnr=126,leermeldnr=127,endemeldnr=128,weitereangabenr=129,
nichterstellbarmeldnr=130;TEXT VAR druckmeld:="",anschreibentext;LET meldkz=
"#";INT VAR dateinummer,aktuellerindex,anzgeftupel;BOOL VAR einzelbearbeitung
;PROC zusammengesetztesanschreiben(INT CONST aktuellerinx,BOOL CONST 
anschreibenzeigen,peinzelbearbeitung,BOOL PROC sonderwerteundueberpruefungauf
erstellbarkeit,BOOL PROC pruefespeziell,TEXT PROC druckdatei):ROW 10TEXT VAR 
schluesselsve1,schluesselsve2;INT VAR i;vorbereitungen;IF einzelbearbeitung
THEN einzelanschreibenELSE anschreibenfuerbestandFI .anschreibenfuerbestand:
IF leererbestandTHEN meldeleerenbestand;zurueckzumeingangsbildschirmELSE 
bearbeiteallediesesbestandesFI .bearbeiteallediesesbestandes:IF 
anschreibenzeigenTHEN erstenbearbeitenELSE anschreibenleseschleife(BOOL PROC 
sonderwerteundueberpruefungauferstellbarkeit,BOOL PROC pruefespeziell,TEXT 
PROC druckdatei);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 anschreibentext:=
druckdatei;editierebriefFI .einzelanschreiben:direktlesen;IF gefundenTHEN IF 
eindeutigTHEN datenlesen;IF anschreibenzeigenTHEN bearbeitenzumzeigenELSE 
einzelbriefschreiben;zurueckzumeingangsbildschirmFI ELSE 
meldeanforderunggenauererangaben;return(1)FI ELSE meldenichtgefunden;return(1
)FI .vorbereitungen:dateinummer:=dateinr(primdatid(aktuellerinx));
aktuellerindex:=aktuellerinx;einzelbearbeitung:=peinzelbearbeitung;
meldungstext(druckmeldnr,druckmeld);setzesonderwerteschulkenndaten;.
direktlesen:gesetztenschluesselsichern(schluesselsve1);anzgeftupel:=2;
multisearchforward(aktuellerindex,anzgeftupel).gefunden:IF anzgeftupel=0THEN 
FALSE ELSE multisucc;pruefespeziellFI .eindeutig:anzgeftupel=1COR 
naechsterungleich.naechsterungleich:gesetztenschluesselsichern(schluesselsve2
);multisucc;IF NOT pruefespeziellTHEN TRUE ELSE FOR iFROM 1UPTO anzkey(
dateinummer)REP IF schluesselsve1[i]=""COR (feldtyp(dateinummer+i)=datumfeld
CAND schluesselsve1[i]=nildatum)THEN LEAVE naechsterungleichWITH FALSE FI ;
IF schluesselsve2[i]<>wert(dateinummer+i)THEN LEAVE naechsterungleichWITH 
TRUE FI PER ;FALSE FI .datenlesen:stackentry(1).einzelbriefschreiben:IF NOT 
sonderwerteundueberpruefungauferstellbarkeitTHEN meldenichterstellbarELSE 
briefschreibenFI .meldenichtgefunden:standardmeldung(existiertnichtnr,niltext
).meldeanforderunggenauererangaben:standardmeldung(weitereangabenr,niltext).
meldenichterstellbar:standardmeldung(nichterstellbarmeldnr,sonderwert(
indexadressat)+meldkz).meldeendederbrieferstellung:standardmeldung(endemeldnr
,niltext).zurueckzumeingangsbildschirm:enter(nproc).leererbestand:anzgeftupel
:=tupelstackgroesse;multisearchforward(aktuellerindex,anzgeftupel);IF 
anzgeftupel<>0THEN multisucc;anzgeftupelDECR 1;NOT pruefespeziellELSE TRUE 
FI .meldeleerenbestand:standardmeldung(leermeldnr,niltext).briefschreiben:
anschreibentext:=druckdatei;print(anschreibentext);standardmeldung(
druckmeldnr,sonderwert(indexadressat)+meldkz);forget(anschreibentext,quiet).
END PROC zusammengesetztesanschreiben;PROC gesetztenschluesselsichern(ROW 10
TEXT VAR schluesselsve):INT VAR i;FOR iFROM 1UPTO anzkey(dateinummer)REP 
schluesselsve[i]:=wert(dateinummer+i)PER ENDPROC gesetztenschluesselsichern;
PROC anschreibenleseschleife(BOOL PROC sonderwerteundueberpruefungauf
erstellbarkeit,BOOL PROC pruefespeziell,TEXT PROC druckdatei):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 .briefschreiben:anschreibentext:=
druckdatei;print(anschreibentext);standardmeldung(druckmeldnr,sonderwert(
indexadressat)+meldkz);forget(anschreibentext,quiet).END PROC 
anschreibenleseschleife;PROC editierebrief:editiere(anschreibentext,
vorwaertstaste,FALSE )END PROC editierebrief;PROC 
naechsteszusammengesetztesanschreiben(BOOL PROC 
sonderwerteundueberpruefungauferstellbarkeit,BOOL PROC pruefespeziell,BOOL 
CONST drucken,TEXT PROC druckdatei):BOOL VAR bestandleer:=FALSE ;IF drucken
THEN print(anschreibentext);standardmeldung(druckmeld#nr,#,sonderwert(
indexadressat)+meldkz)FI ;forget(anschreibentext,quiet);IF einzelbearbeitung
THEN 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 
anschreibentext:=druckdatei;return(nproc)ELSE standardmeldung(endemeldnr,
niltext);enter(eingangsbildschirm)FI FI END PROC 
naechsteszusammengesetztesanschreiben;END PACKET 
anschrsteuerfunktionenfuerzusammengesetzteanschreiben;