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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
|
PACKET ispobjektlisteDEFINES objektlistestarten,objektlistenausgabe,
listenobjektezeigen,datensatzlistenausgabe,datensatzlistezeigen,
objektlistenmaskeeinlesen,objektlistebeenden,maxidentizeilenlaenge,
setzeidentiwert,#savetupel,17.10.88##restoretupel,17.10.88#pruefungdummy,
pruefungbenutzerbestand,satzlesen,einendatensatzlesen,bestandende,
setzebestandende,plus,minus,eineseiteeinlesen,blaettern,initobli,
inlisteblaettern,setzescanendewert,setzescanstartwert:TAG VAR aktuellemaske;
TEXT VAR identiobjekt,sicherungstupel:="";TEXT VAR scanstartwert:="",
scanendewert:="�";INT VAR posi,aktletztesfeld,dateinummer,aktindex;INT VAR
anzahltupel;LET erstesfeld=2,maxletztesfeld=36,markierung="x",keinemarkierung
="",eingabefeldnr=2,felderprozeile=2,erfwerteinobli=5,schluesseltrenner="$";
LET delimiter="�";LET andenanfang=1,ansende=2,vorwaerts=3,rueckwaerts=4;LET
meldungnichtblaettern=72;LET satzzahl=18;TEXT VAR scanwertsicherung,
scantupelsicherung;INT VAR scanfeldsicherung,feldnummerstartwert;INT VAR
fenster,gelesen;INT VAR anzschluesselfelder:=1;LET zeilenlaenge=70;INT VAR
identizeilegesamtlaenge:=70;BOOL VAR ersterbildschirm,bestandsende;BOOL VAR
letzterbildschirm;BOOL VAR ersterdatensatz;BOOL VAR nureinedatenseiteROW
satzzahlBOOL VAR angekreuzt;ROW satzzahlTEXT VAR identitabelle;PROC
setzescanendewert(TEXT CONST endewert):scanendewert:=endewertENDPROC
setzescanendewert;PROC setzescanstartwert(TEXT CONST startwert):scanstartwert
:=startwertENDPROC setzescanstartwert;PROC objektlistestarten(INT CONST
aktdateinummer,TEXT CONST startwert,BOOL CONST anwendung,BOOL VAR
listenendeerreicht):objektlistestarten(aktdateinummer,startwert,
aktdateinummer+2,anwendung,listenendeerreicht)END PROC objektlistestarten;
PROC objektlistestarten(INT CONST aktdateinummer,TEXT CONST startwert,INT
CONST fnrstartwert,BOOL CONST anwendung,BOOL VAR listenendeerreicht):LET
indextrenner=";";INT VAR erstertrenner:=0;TEXT VAR indextext:="";IF anwendung
THEN systemdboffELSE systemdbonFI ;aktindex:=aktdateinummer;dateinummer:=
dateinr(primdatid(aktindex));anzschluesselfelder:=anzkey(dateinummer);
feldnummerstartwert:=fnrstartwert;IF scanueberdiedateinummerTHEN
scanfeldsicherung:=1;ELSE indextext:=zugriff(aktindex);erstertrenner:=pos(
indextext,indextrenner);scanfeldsicherung:=int(subtext(indextext,1,
erstertrenner-1));FI ;#IF scanueberdiedateinummerTHEN #IF
dateinummerzugelassenTHEN putwert(dateinummer+1,startwert)ELSE putwert(
dateinummer+2,startwert);IF dateinummer=dnrbenutzTHEN putwert(
fnrbenutzbestand,benutzerbestandSUB 1)FI ;FI ;#ELSE IF
uebereinenganzensekindexTHEN putwert(scanfeldsicherung,startwert)ELSE putwert
(feldnummerstartwert,startwert)FI FI ;#scanwertsicherung:=wert(dateinummer+
scanfeldsicherung);savescanwert;search(aktindex,FALSE );IF (
scanueberdiedateinummerCOR uebereinenganzensekindex)CAND
dateinummerzugelassen#dr11.05.88#THEN listenendeerreicht:=dbstatus<>okELSE
listenendeerreicht:=dbstatus<>okCOR (dbstatus=okAND wert(dateinummer+
scanfeldsicherung)<>scanwertsicherung)FI ;listenendenochnichterreicht(
startwert,listenendeerreicht).dateinummerzugelassen:dateinummer<>
dnrschluesselAND dateinummer<>dnrbenutz.END PROC objektlistestarten;PROC
listenendenochnichterreicht(TEXT CONST wert,BOOL CONST ende):IF NOT endeTHEN
ersterbildschirm:=(wert="");ersterdatensatz:=(wert="");letzterbildschirm:=
FALSE ;bestandsende:=FALSE ;FI .END PROC listenendenochnichterreicht;PROC
objektlistenausgabe(PROC (INT CONST )erfassungspeziell,BOOL CONST scanja,
BOOL PROC pruefungspeziell):initobli;listenmaskeholenundausgeben;
identizeilegesamtlaenge:=zeilenlaenge;inlisteblaettern(PROC erfassungspeziell
,vorwaerts,FALSE ,scanja,BOOL PROC pruefungspeziell);
objektlistenmaskeeinlesen.END PROC objektlistenausgabe;PROC
datensatzlistenausgabe(PROC (INT CONST )erfassungspeziell,BOOL CONST scanja,
BOOL PROC pruefungspeziell):initobli;listenmaskeholenundausgeben;
identizeilegesamtlaenge:=zeilenlaenge;inlisteblaettern(PROC erfassungspeziell
,vorwaerts,TRUE ,scanja,BOOL PROC pruefungspeziell);objektlistenmaskeeinlesen
.ENDPROC datensatzlistenausgabe;PROC initobli:initobli(18)END PROC initobli;
PROC initobli(INT CONST szahl):leererthesaurus;bestandsende:=FALSE ;fenster:=
szahlEND PROC initobli;PROC listenmaskeholenundausgeben:LET listenmaskenname=
"mu objektliste";initmaske(aktuellemaske,listenmaskenname);standardstartproc(
listenmaskenname).END PROC listenmaskeholenundausgeben;PROC
listenobjektezeigen(PROC (INT CONST )erfassungspeziell,INT CONST start):
listenobjektezeigen(PROC (INT CONST )erfassungspeziell,start,FALSE ,BOOL
PROC pruefungdummy)END PROC listenobjektezeigen;PROC listenobjektezeigen(
PROC (INT CONST )erfassungspeziell,INT CONST start,BOOL CONST scanja,BOOL
PROC pruefungspeziell):IF aktindex=dnrschluesselTHEN inlisteblaettern(PROC
erfassungspeziell,start,TRUE ,scanja,BOOL PROC pruefungspeziell);ELSE
inlisteblaettern(PROC erfassungspeziell,start,FALSE ,scanja,BOOL PROC
pruefungspeziell);FI ;return(1).END PROC listenobjektezeigen;PROC
datensatzlistezeigen(PROC (INT CONST )erfassungspeziell,INT CONST start):
datensatzlistezeigen(PROC (INT CONST )erfassungspeziell,start,FALSE ,BOOL
PROC pruefungdummy)END PROC datensatzlistezeigen;PROC datensatzlistezeigen(
PROC (INT CONST )erfassungspeziell,INT CONST start,BOOL CONST scanja,BOOL
PROC pruefungspeziell):inlisteblaettern(PROC erfassungspeziell,start,TRUE ,
scanja,BOOL PROC pruefungspeziell);return(1).END PROC datensatzlistezeigen;
PROC inlisteblaettern(PROC (INT CONST )erfassungspeziell,INT CONST start,
BOOL CONST anwendung,BOOL CONST scanja,BOOL PROC pruefungspeziell):IF
anwendungTHEN systemdboffELSE systemdbonFI ;IF blaetternerforderlichTHEN posi
:=eingabefeldnr;aktletztesfeld:=maxletztesfeld;blaettern(PROC
erfassungspeziell,start,scanja,BOOL PROC pruefungspeziell);IF (gelesen-1)<#
satzzahl#fensterAND gelesen>0THEN leerzeilenFI ;ELSE
meldungdasnichtgeblaettertwirdFI ;IF NOT anwendungTHEN systemdboffFI ;posi:=
eingabefeldnr.blaetternerforderlich:SELECT startOF CASE andenanfang:NOT
ersterbildschirmCASE ansende:NOT letzterbildschirmCASE vorwaerts:NOT
letzterbildschirmCASE rueckwaerts:NOT ersterbildschirmOTHERWISE FALSE END
SELECT .END PROC inlisteblaettern;PROC blaettern(PROC (INT CONST )
erfassungspeziell,INT CONST start,BOOL CONST anwendung,BOOL CONST scanja,
BOOL PROC pruefungspeziell):IF anwendungTHEN systemdboffELSE systemdbonFI ;
IF blaetternerforderlichTHEN blaettern(PROC erfassungspeziell,start,scanja,
BOOL PROC pruefungspeziell);ELSE standardmeldung(meldungnichtblaettern,"");
FI ;IF NOT anwendungTHEN systemdboffFI ;.blaetternerforderlich:SELECT start
OF CASE andenanfang:NOT ersterbildschirmCASE ansende:NOT letzterbildschirm
CASE vorwaerts:NOT letzterbildschirmCASE rueckwaerts:NOT ersterbildschirm
OTHERWISE FALSE END SELECT .END PROC blaettern;PROC zeigenschluessel:IF
identiobjekt=""THEN LEAVE zeigenschluesselFI ;INT VAR schluesselbeginn:=pos(
identiobjekt,schluesseltrenner);identitabelle(posiDIV felderprozeile):=
subtext(identiobjekt,schluesselbeginn);identiobjekt:=subtext(identiobjekt,1,
schluesselbeginn-1);IF objektmarkiert(identitabelle(posiDIV felderprozeile))
THEN markierungIN posi;angekreuzt(posiDIV felderprozeile):=TRUE ELSE
keinemarkierungIN posi;angekreuzt(posiDIV felderprozeile):=FALSE FI ;feldfrei
(posi);identiobjektIN (posi+1);posiINCR felderprozeile.END PROC
zeigenschluessel;INT PROC maxidentizeilenlaenge:identizeilegesamtlaengeEND
PROC maxidentizeilenlaenge;PROC setzeidentiwert(TEXT CONST identizeile):
identiobjekt:=identizeileEND PROC setzeidentiwert;PROC leerzeilen:
aktletztesfeld:=posi-felderprozeile;WHILE posi<=maxletztesfeldREP
leerzeileausgeben;posiINCR felderprozeilePER .leerzeileausgeben:""IN posi;""
IN (posi+1);feldschutz(posi).END PROC leerzeilen;BOOL PROC objektmarkiert(
TEXT CONST suchtext):inthesaurus(suchtext).END PROC objektmarkiert;PROC
objektlistenmaskeeinlesen:infeld(eingabefeldnr);standardnproc;BOOL VAR
markneu,markalt;posi:=erstesfeld;WHILE posi<=aktletztesfeldREP markneu:=
standardmaskenfeld(posi)<>"";markalt:=angekreuzt(posiDIV felderprozeile);IF
markierungsaenderungTHEN identiobjekt:=identitabelle(posiDIV felderprozeile);
IF neuemarkierungTHEN trageinthesaurusein(identiobjekt)ELIF
markierungweggenommenTHEN loescheausthesaurus(identiobjekt)FI ;FI ;posiINCR
felderprozeile;PER .markierungsaenderung:(markaltAND NOT markneu)OR (NOT
markaltAND markneu).neuemarkierung:markneu.markierungweggenommen:markalt.END
PROC objektlistenmaskeeinlesen;PROC objektlistebeenden(TEXT CONST dateiname,
BOOL CONST uebernahme):IF uebernahmeTHEN uebertragethesaurusindatei(dateiname
);#sort(dateiname)sf18.2.87#FI ;END PROC objektlistebeenden;PROC
setzebestandende(BOOL CONST b):bestandsende:=bENDPROC setzebestandende;BOOL
PROC bestandende:bestandsendeENDPROC bestandende;PROC einendatensatzlesen(
PROC (INT CONST ,BOOL PROC )mitscanner,PROC ohnescanner,BOOL CONST scanja,
BOOL PROC pruefungspeziell):IF scanjaAND scanerlaubtTHEN mitscanner(aktindex,
BOOL PROC pruefungspeziell)ELSE ohnescannerFI ENDPROC einendatensatzlesen;
PROC satzlesen(INT CONST was,n,BOOL CONST scanja,BOOL PROC pruefungspeziell):
TEXT VAR sicherung:="";anzahltupel:=n;SELECT wasOF CASE andenanfang:
ersteseitelesenCASE ansende:letzteseitelesenCASE vorwaerts:naechsteseitelesen
CASE rueckwaerts:vorherigeseitelesenENDSELECT ;savetupel(dateinummer,
sicherung);bestandsende:=anzahltupel<nCOR (scanjaCAND (NOT scanstackentry(
anzahltupel,BOOL PROC pruefungspeziell)));restoretupel(dateinummer,sicherung)
;changeindex;nureinedatenseite:=(ersterdatensatzCAND was=vorwaertsCAND
bestandsende);IF ersterdatensatzCAND was=vorwaertsTHEN ersterdatensatz:=
FALSE ;FI ;.ersteseitelesen:ersteletzteseite(scanstartwert,PROC (INT CONST ,
BOOL PROC ,INT VAR )scanforward,PROC (INT CONST )first,scanja,BOOL PROC
pruefungspeziell,anzahltupel,feldnummerstartwert);IF NOT scanjaTHEN
multisearchforward(aktindex,anzahltupel)FI ;.letzteseitelesen:
ersteletzteseite(scanendewert,PROC (INT CONST ,BOOL PROC ,INT VAR )scanpred,
PROC (INT CONST )last,scanja,BOOL PROC pruefungspeziell,anzahltupel,
feldnummerstartwert);IF NOT scanjaTHEN multisearchbackward(aktindex,
anzahltupel)FI ;letzterbildschirm:=TRUE ;.naechsteseitelesen:IF
ersterdatensatzTHEN multisearchforward(aktindex,anzahltupel);ELSE changeindex
;multisucc(aktindex,anzahltupel);ersterbildschirm:=FALSE FI .
vorherigeseitelesen:multisearchbackward(aktindex,anzahltupel);.END PROC
satzlesen;PROC ersteletzteseite(TEXT CONST startwert,PROC (INT CONST ,BOOL
PROC ,INT VAR )mitscanner,PROC (INT CONST )ohnescanner,BOOL CONST scanja,
BOOL PROC pruefungspeziell,INT VAR anzahl,INT CONST fnrstartwert):IF scanja
CAND scanerlaubtTHEN setzestartwert;mitscanner(aktindex,BOOL PROC
pruefungspeziell,anzahl)ELSE ohnescanner(aktindex)FI .setzestartwert:INT VAR
k,ersteskeyfeld:=dateinummer+1;INT VAR letzteskeyfeld:=dateinummer+
anzschluesselfelder;FOR kFROM ersteskeyfeldUPTO letzteskeyfeldREP putwert(k,
"")PER ;restorescanwert;putwert(fnrstartwert,startwert);changeindex.END PROC
ersteletzteseite;PROC eineseiteeinlesen(TEXT CONST startwert,PROC (INT CONST
,BOOL PROC ,INT VAR )mitscanner,PROC (INT CONST )ohnescanner,BOOL CONST
scanja,BOOL PROC pruefungspeziell,INT VAR anzahl):IF scanjaAND scanerlaubt
THEN IF scanueberdiedateinummerTHEN putwert(aktindex+2,startwert)ELSE putwert
(dateinummer+1,startwert)FI ;mitscanner(aktindex,BOOL PROC pruefungspeziell,
anzahl)ELSE ohnescanner(aktindex)FI ;.END PROC eineseiteeinlesen;PROC
eineseiteeinlesen(PROC (INT CONST ,BOOL PROC ,INT VAR )mitscanner,PROC (INT
CONST ,INT VAR )ohnescanner,BOOL CONST scanja,BOOL PROC pruefungspeziell,INT
VAR anzahl):IF scanjaAND scanerlaubtTHEN dbstatus(ok);mitscanner(aktindex,
BOOL PROC pruefungspeziell,anzahl)ELSE scanstatus(ok);ohnescanner(aktindex,
anzahl)FI .END PROC eineseiteeinlesen;BOOL PROC scanerlaubt:aktindex<>
dateinummerOR (scanueberdiedateinummerAND anzschluesselfelder>1)END PROC
scanerlaubt;BOOL PROC scanueberdiedateinummer:aktindex=dateinummerEND PROC
scanueberdiedateinummer;BOOL PROC uebereinenganzensekindex:was(aktindex)=
indexeintragCAND feldnummerstartwert=0END PROC uebereinenganzensekindex;PROC
vorherigeseitezeigen(PROC (INT CONST )erfassungspeziell,INT CONST anzahl,
BOOL CONST scanja,BOOL PROC pruefung):INT VAR lv,ende:=2;gelesen:=0;
stackentry(anzahl-1);savetupel(dateinummer,sicherungstupel);IF
letzterbildschirmTHEN ende:=1FI ;FOR lvFROM anzahl-1DOWNTO endeREP stackentry
(lv);erfassungspeziell(erfwerteinobli);zeigenschluessel;gelesenINCR 1PER ;IF
ende=2THEN stackentry(ende-1)FI .END PROC vorherigeseitezeigen;PROC
naechsteseitezeigen(PROC (INT CONST )erfassungspeziell,INT CONST anzahl,BOOL
CONST scanja,BOOL PROC pruefung):INT VAR lv;gelesen:=0;
sicherungfuerzurueckblaettern;IF bestandsendeTHEN letzterbildschirm:=TRUE ;
ausgabeschleifemitscanueberpruefungELSE ausgabeschleifeohnescanueberpruefung
FI .sicherungfuerzurueckblaettern:IF NOT ersterbildschirmTHEN savetupel(
dateinummer,sicherungstupel);zeigenzeile;FI .
ausgabeschleifemitscanueberpruefung:FOR lvFROM 1UPTO anzahlREP stackentry(lv)
;IF (scanjaCAND pruefung)OR NOT scanjaTHEN zeigenzeile;ELSE LEAVE
naechsteseitezeigenFI PER .ausgabeschleifeohnescanueberpruefung:FOR lvFROM 1
UPTO (anzahl-1)REP stackentry(lv);zeigenzeilePER ;stackentry(anzahl);.
zeigenzeile:erfassungspeziell(erfwerteinobli);zeigenschluessel;gelesenINCR 1.
END PROC naechsteseitezeigen;PROC blaettern(PROC (INT CONST )
erfassungspeziell,INT CONST aktion,BOOL CONST scanja,BOOL PROC
pruefungspeziell):SELECT aktionOF CASE andenanfang:blaettereandenanfangCASE
ansende:blaettereansendeCASE vorwaerts:blaetterevorwaertsCASE rueckwaerts:
blaettererueckwaertsEND SELECT .blaettereandenanfang:anfang(PROC
erfassungspeziell,scanja,BOOL PROC pruefungspeziell).blaettereansende:
ersterbildschirm:=FALSE ;ersterdatensatz:=FALSE ;aufbestandendepositionieren;
IF bestandsendeTHEN anfang(PROC erfassungspeziell,scanja,BOOL PROC
pruefungspeziell)ELSE vorherigeseitezeigen(PROC erfassungspeziell,anzahltupel
,scanja,BOOL PROC pruefungspeziell)FI .aufbestandendepositionieren:satzlesen(
ansende,fenster+1,scanja,BOOL PROC pruefungspeziell);.blaetterevorwaerts:plus
(fenster,PROC erfassungspeziell,scanja,BOOL PROC pruefungspeziell).
blaettererueckwaerts:restoretupel(dateinummer,sicherungstupel);changeindex;
minus(fenster+2,PROC erfassungspeziell,scanja,BOOL PROC pruefungspeziell).
END PROC blaettern;PROC meldungdasnichtgeblaettertwird:TEXT VAR
zwischensicherung:="";savetupel(dateinummer,zwischensicherung);
meldeauffaellig(aktuellemaske,meldungnichtblaettern);gelesen:=0;restoretupel(
dateinummer,zwischensicherung);changeindex.END PROC
meldungdasnichtgeblaettertwird;PROC anfang(PROC (INT CONST )erfassungspeziell
,BOOL CONST scanja,BOOL PROC pruefungspeziell):IF scanjaTHEN restorescanwert;
changeindexFI ;IF NOT ersterbildschirmTHEN ersterbildschirm:=TRUE ;
aufanfangpositionieren;naechsteseitezeigen(PROC erfassungspeziell,anzahltupel
,scanja,BOOL PROC pruefungspeziell);FI .aufanfangpositionieren:
letzterbildschirm:=FALSE ;satzlesen(andenanfang,fenster+1,scanja,BOOL PROC
pruefungspeziell).END PROC anfang;PROC plus(INT CONST saetzevor,PROC (INT
CONST )erfassungspeziell,BOOL CONST scanja,BOOL PROC pruefungspeziell):
letzterbildschirm:=FALSE ;IF NOT ersterdatensatzTHEN ersterbildschirm:=FALSE
;satzlesen(vorwaerts,saetzevor,scanja,BOOL PROC pruefungspeziell);ELSE
satzlesen(vorwaerts,saetzevor+1,scanja,BOOL PROC pruefungspeziell);FI ;
naechsteseitezeigen(PROC erfassungspeziell,anzahltupel,scanja,BOOL PROC
pruefungspeziell);IF nureinedatenseiteTHEN putwert(dateinummer+
scanfeldsicherung,scanwertsicherung)FI ;END PROC plus;PROC minus(INT CONST
saetzezurueck,PROC (INT CONST )erfassungspeziell,BOOL CONST scanja,BOOL PROC
pruefungspeziell):#neudr30.01.87#satzlesen(rueckwaerts,saetzezurueck,scanja,
BOOL PROC pruefungspeziell);IF bestandsendeTHEN anfang(PROC erfassungspeziell
,scanja,BOOL PROC pruefungspeziell)ELSE ersterbildschirm:=FALSE ;
letzterbildschirm:=FALSE ;vorherigeseitezeigen(PROC erfassungspeziell,
saetzezurueck,scanja,BOOL PROC pruefungspeziell)FI .END PROC minus;PROC
initankreuzliste:INT VAR i;FOR iFROM 1UPTO satzzahlREP angekreuzt(i):=FALSE
PER ;END PROC initankreuzliste;#dr17.10.88PROC savetupel(INT CONST dnr,TEXT
VAR tupel):INT VAR fnr,primdat;IF was(dnr)=dateieintragTHEN primdat:=dnrELSE
primdat:=dateinr(primdatid(dnr))FI ;tupel:="";FOR fnrFROM 1UPTO anzattr(
primdat)REP tupelCAT (wert(primdat+fnr)+delimiter)PER ENDPROC savetupel;PROC
restoretupel(INT CONST dnr,TEXT VAR tupel):INT VAR fnr,primdat,p;TEXT VAR
feldwert,data:=tupel;IF was(dnr)=dateieintragTHEN primdat:=dnrELSE primdat:=
dateinr(primdatid(dnr))FI ;FOR fnrFROM primdat+1UPTO primdat+anzattr(primdat)
REP p:=pos(data,delimiter);feldwert:=subtext(data,1,(p-1));putwert(fnr,
feldwert);change(data,1,p,"")PER ENDPROC restoretupel;#BOOL PROC
pruefungdummy:TRUE END PROC pruefungdummy;BOOL PROC pruefungbenutzerbestand:(
wert(fnrbenutzbestand))=(benutzerbestandSUB 1)END PROC
pruefungbenutzerbestand;TEXT VAR savedscan:="";LET savedscansep="�",dateityp=
1;PROC savescanwert:savedscan:="";transversale(feldnummerstartwert,PROC (INT
CONST ,INT VAR )save,FALSE )ENDPROC savescanwert;PROC restorescanwert:
transversale(feldnummerstartwert,PROC (INT CONST ,INT VAR )restore,TRUE )
ENDPROC restorescanwert;PROC transversale(INT CONST fnrsetzfeld,PROC (INT
CONST ,INT VAR )pproc,BOOL CONST rsetzen):TEXT VAR z:=zugriffaufbauen;INT
VAR p:=1,psem:=pos(z,";"),i,fnrsf:=fnrsetzfeld-dateinummer;INT VAR fnr:=int(
subtext(z,p,psem-1)),p1:=1;BOOL VAR pausf:=TRUE ;WHILE #fnr<>fnrsfCAND #fnr>0
REP IF fnr=fnrsfTHEN pausf:=FALSE ELSE IF pausfTHEN pproc(fnr+dateinummer,p1)
;ELSE IF rsetzenTHEN putwert(fnr+dateinummer,"")FI FI FI ;p:=psem+1;psem:=pos
(z,";",p);fnr:=int(subtext(z,p,psem-1))PER .zugriffaufbauen:IF was(aktindex)=
dateitypTHEN TEXT VAR x:="";FOR iFROM 1UPTO anzkey(aktindex)REP xCAT (text(i)
+";")PER ;xELSE zugriff(aktindex)FI .ENDPROC transversale;PROC save(INT
CONST fnr,INT VAR p):savedscanCAT (wert(fnr)+savedscansep)ENDPROC save;PROC
restore(INT CONST fnr,INT VAR p):INT VAR p2:=p;p:=pos(savedscan,savedscansep,
p2)+1;putwert(fnr,subtext(savedscan,p2,p-2))ENDPROC restore;END PACKET
ispobjektliste;
|