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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
PACKET benennenDEFINES statbenennen:LET statistikdatei="STATISTIK.",
statistikserver="statistik server",maskebenennen="mst statistik benennen",
statistikvorzeilen=3,maxstatistiken=200,maxzeilen=75,maxspalten=50,
minspaltenbreite=4,niltext="",space=" ",meldungzusatz="+",meldungback=
"��������������",alt="alt",meldungrestore=" ",mgibtesnicht=477,
mgibtesschon=485,mspeichern=486,mnichtspeichern=487,mentfernenfrage=488,
mgeloescht=489,mnichtgeloescht=490,fstatnr=2,fbezeichnung=3,fzeilen=4,
fspalten=5,fentfernen=6,pruefeimintervall=3,pruefeobwert=1;TEXT VAR
statistiknummer;FILE VAR stat;PROC statbenennen(INT CONST was):SELECT wasOF
CASE 1:benennenstartprocCASE 2:benennennprocCASE 3:
benennenbearbeitenstartprocCASE 4:benennenbearbeitenspeichernCASE 5:
benennenneustartprocCASE 6:benennenentfernenstartprocCASE 7:
benennenentfernenexec;leave(2)CASE 8:statlistezeigen(int(standardmaskenfeld(
fstatnr)))CASE 9:benennenlistebearbeitenstartprocCASE 10:
benennenlistebearbeitenspeichernCASE 11:benennenlisteentfernenstartprocCASE
12:benennenentfernenexec;enter(1)CASE 13:benennenbearbeitennichtspeichern
CASE 14:benennenentfernennichtloeschen;leave(2)CASE 15:
benennenentfernennichtloeschen;enter(1)CASE 16:benennenentfernennichtloeschen
;leave(3)END SELECT .benennenstartproc:standardstartproc(maskebenennen);
standardmaskenfeld(niltext,fstatnr);benennennproc.benennennproc:
standardmaskenfeld(niltext,fbezeichnung);feldschutz(fbezeichnung);
standardmaskenfeld(niltext,fzeilen);feldschutz(fzeilen);standardmaskenfeld(
niltext,fspalten);feldschutz(fspalten);feldschutz(fentfernen);feldfrei(
fstatnr);infeld(fstatnr);standardnproc.benennenbearbeitenstartproc:IF NOT
nummerokTHEN leave(1);ELIF NOT statistikexistiert(statnummer)THEN statmeldung
(mgibtesnicht);infeld(fstatnr);leave(1);ELSE benennenfreigebenundnproc;FI .
benennenbearbeitenspeichern:IF NOT eingabenokTHEN leave(1);ELIF NOT (
statistiknummer=statnummer)AND statistikexistiert(statnummer)THEN statmeldung
(mgibtesschon);infeld(fstatnr);leave(1);ELSE statmeldung(mspeichern);
statistikspeichern(statistiknummer,statnummer);standardmaskenfeld(niltext,
fstatnr);leave(2);FI .benennenneustartproc:IF NOT nummerokTHEN leave(1);ELIF
statistikexistiert(statnummer)THEN statmeldung(mgibtesschon);infeld(fstatnr);
leave(1);ELSE benennenfreigeben;statistiknummer:=statnummer;standardnprocFI .
benennenentfernenstartproc:IF NOT nummerokTHEN leave(1);ELIF NOT
statistikexistiert(statnummer)THEN statmeldung(mgibtesnicht);infeld(fstatnr);
leave(1);ELSE benennenschuetzenundnproc;FI .benennenschuetzenundnproc:
benennenausfuellen(statnummer);feldschutz(fstatnr);feldschutz(fbezeichnung);
feldschutz(fzeilen);feldschutz(fspalten);infeld(fstatnr);
standardfelderausgeben;statmeldung(mentfernenfrage);infeld(fentfernen);
standardnproc.benennenfreigebenundnproc:benennenausfuellen(statnummer);
benennenfreigeben;statistiknummer:=statnummer;standardnproc.benennenfreigeben
:feldfrei(fbezeichnung);feldfrei(fzeilen);feldfrei(fspalten);feldschutz(
fentfernen);statnummerIN fstatnr;infeld(fbezeichnung).benennenentfernenexec:
statistikloeschen(statnummer);statmeldung(mgeloescht);standardmaskenfeld(
niltext,fstatnr).benennenlistebearbeitenstartproc:statlistebearbeiten(
maskebenennen);IF statlisteeintrag>niltextTHEN standardmaskenfeld(
statlisteeintrag,fstatnr);benennenfreigebenundnproc;ELSE standardmaskenfeld(
niltext,fstatnr);leave(2);FI .benennenlistebearbeitenspeichern:IF NOT
eingabenokTHEN leave(1);ELIF NOT (statistiknummer=statnummer)AND
statistikexistiert(statnummer)THEN statmeldung(mgibtesschon);infeld(fstatnr);
leave(1);ELSE statmeldung(mspeichern);statistikspeichern(statistiknummer,
statnummer);enter(1);FI .benennenlisteentfernenstartproc:statlistebearbeiten(
maskebenennen);IF statlisteeintrag>niltextTHEN standardmaskenfeld(
statlisteeintrag,fstatnr);benennenschuetzenundnproc;ELSE standardmaskenfeld(
niltext,fstatnr);leave(2);FI .benennenbearbeitennichtspeichern:statmeldung(
mnichtspeichern);standardmaskenfeld(niltext,fstatnr);leave(2).
benennenentfernennichtloeschen:statmeldung(mnichtgeloescht);
standardmaskenfeld(niltext,fstatnr).nummerok:INT VAR status;standardpruefe(
pruefeimintervall,fstatnr,1,maxstatistiken,niltext,status);IF status>0THEN
infeld(status)FI ;status=0.eingabenok:IF nummerokTHEN standardpruefe(
pruefeobwert,fbezeichnung,0,0,niltext,status);FI ;IF status=0THEN
standardpruefe(pruefeimintervall,fzeilen,1,maxzeilen,niltext,status);FI ;IF
status=0THEN standardpruefe(pruefeimintervall,fspalten,1,maxspalten,niltext,
status);FI ;IF status>0THEN infeld(status);FI ;status=0.statnummer:text(int(
standardmaskenfeld(fstatnr))).END PROC statbenennen;PROC statmeldung(INT
CONST meldungnummer):standardmeldung(meldungnummer,standardmaskenfeld(fstatnr
)+meldungzusatz);END PROC statmeldung;PROC benennenausfuellen(TEXT CONST
statnummer):TEXT VAR bezeichnung;INT VAR wert;forget(statistikdatei+
statnummer,quiet);fetch(statistikdatei+statnummer,task(statistikserver));stat
:=sequentialfile(input,statistikdatei+statnummer);standardmaskenfeld(
statnummer,fstatnr);getline(stat,bezeichnung);standardmaskenfeld(bezeichnung,
fbezeichnung);get(stat,wert);standardmaskenfeld(text(wert),fzeilen);get(stat,
wert);standardmaskenfeld(text(wert),fspalten);forget(statistikdatei+
statnummer,quiet);END PROC benennenausfuellen;BOOL PROC statistikexistiert(
TEXT CONST statnummer):exists(statistikdatei+statnummer,task(statistikserver)
)END PROC statistikexistiert;PROC statistikloeschen(TEXT CONST statnummer):
IF statistikexistiert(statnummer)THEN commanddialogue(FALSE );erase(
statistikdatei+statnummer,task(statistikserver));commanddialogue(TRUE );FI ;
END PROC statistikloeschen;PROC statistikspeichern(TEXT CONST altername,
neuername):INT VAR zeilenneu:=int(standardmaskenfeld(fzeilen)),spaltenneu:=
int(standardmaskenfeld(fspalten)),benennenneu:=zeilenneu*spaltenneu,zeilenalt
,spaltenalt,benennenalt,zaehl,zeile,spalte;TEXT VAR dateizeile;FILE VAR
statalt;forget(statistikdatei+altername,quiet);forget(statistikdatei+
neuername,quiet);IF NOT statistikexistiert(altername)THEN
erzeugeneuestatistikELSE aenderealtestatistik;statistikloeschen(altername);
FI ;sichereneuestatistik.erzeugeneuestatistik:erzeugestatistikmitneuemnamen;
display(meldungback);FOR zaehlFROM benennenneuDOWNTO 1REP line(stat);cout(
zaehl);PER ;display(meldungrestore).erzeugestatistikmitneuemnamen:stat:=
sequentialfile(output,statistikdatei+neuername);putline(stat,
standardmaskenfeld(fbezeichnung));dateizeile:=text(zeilenneu)+space+text(
spaltenneu)+space;FOR zaehlFROM 1UPTO spaltenneuREP dateizeileCAT text(
minspaltenbreite);dateizeileCAT space;PER ;putline(stat,dateizeile);line(stat
).sichereneuestatistik:save(statistikdatei+neuername,task(statistikserver));
forget(statistikdatei+neuername,quiet).aenderealtestatistik:forget(
statistikdatei+alt,quiet);fetch(statistikdatei+altername,task(statistikserver
));rename(statistikdatei+altername,statistikdatei+alt);statalt:=
sequentialfile(input,statistikdatei+alt);getline(statalt,dateizeile);get(
statalt,zeilenalt);get(statalt,spaltenalt);benennenalt:=zeilenalt*spaltenalt;
IF zeilenalt<>zeilenneuOR spaltenalt<>spaltenneuTHEN aenderedieganzestatistik
ELIF dateizeile<>standardmaskenfeld(fbezeichnung)THEN aenderediedateizeile
ELSE rename(statistikdatei+alt,statistikdatei+neuername);FI .
aenderediedateizeile:modify(statalt);tofirstrecord(statalt);writerecord(
statalt,standardmaskenfeld(fbezeichnung));rename(statistikdatei+alt,
statistikdatei+neuername).aenderedieganzestatistik:
erzeugestatistikmitneuemnamen;modify(statalt);zaehl:=benennenneu;display(
meldungback);FOR zeileFROM 1UPTO min(zeilenalt,zeilenneu)REP
uebertrageeinezeileausaltinneu;PER ;FOR zeileFROM zeilenalt+1UPTO zeilenneu
REP schreibeeineleerezeile;PER ;display(meldungrestore);forget(statistikdatei
+alt,quiet).uebertrageeinezeileausaltinneu:toline(statalt,statistikvorzeilen+
(zeile-1)*spaltenalt+1);FOR spalteFROM 1UPTO min(spaltenalt,spaltenneu)REP
readrecord(statalt,dateizeile);putline(stat,dateizeile);down(statalt);zaehlen
PER ;FOR spalteFROM spaltenalt+1UPTO spaltenneuREP line(stat);zaehlenPER .
schreibeeineleerezeile:FOR spalteFROM 1UPTO spaltenneuREP line(stat);zaehlen
PER .zaehlen:cout(zaehl);zaehlDECR 1.END PROC statistikspeichern;END PACKET
benennen;
|