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
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
|
#limit (11.0)##pagelength (16.5)##block#
#start (2.0,0.0)#
#page (83)#
#headodd#
#center#EUDAS#right#%
#end#
#headeven#
%#center#EUDAS
#end#
#center#1
8 Funktionen zur Bearbeitung
Die Verarbeitungsfunktionen arbeiten jeweils auf der aktuell geöff
neten Datei. Falls mindestens ein Satz markiert ist, werden nur
markierte Sätze bearbeitet, anderenfalls die durch die Suchbedin
gung ausgewählten Sätze.
8.1 Drucken
Zum Drucken wird ein Druckmuster als Textdatei benötigt. Dessen
Name muß beim Aufruf der Prozedur 'drucke' angegeben werden.
Werden beim Übersetzen des Druckmusters Fehler entdeckt, so wird
der Paralleleditor aufgerufen und kein Druckvorgang durchgeführt.
Normalerweise sendet der Druckgenerator die Ausgabe direkt
zum Drucker. Alternativ kann die Ausgabe auch in eine Datei ge
schrieben werden. Dieses Verfahren kann mit 'direkt drucken' umge
stellt werden. Der Aufruf
direkt drucken (TRUE)
sendet alle Dateien direkt zum Drucker, mit
direkt drucken (FALSE)
wird die Ausgabe in Dateien abgelegt. Diese Dateien erhalten Namen
der Form
"Druckmustername.a$n"
wobei 'n' eine laufende Nummer zur Unterscheidung ist.
Soll die Druckausgabe in eine ganz bestimmte Datei geleitet
werden, so kann vor dem Aufruf von 'drucke' die Prozedur 'druck
datei' aufgerufen werden, die als Parameter den Namen der Ausga
bedatei erhält. Existiert die Datei noch nicht, wird sie eingerichtet,
ansonsten wird die Ausgabe am Ende angehängt.
Die Einstellung der Ausgabedatei gilt nur für einen Druckvor
gang und überschreibt für diesen Druckvorgang 'direkt drucken'.
Beim nächsten Druckvorgang wird wieder die durch 'direkt drucken'
festgelegte Einstellung verwendet.
Wenn beim Drucken ein großes Ausgabevolumen anfällt, kann es
sinnvoll sein, die Ausgabe in mehrere kleine Dateien aufzuteilen.
Dies gilt auch, wenn direkt gedruckt werden soll, da auch in diesem
Fall eine Zwischendatei erzeugt werden muß. Die maximale Anzahl
von Zeilen pro Datei wird durch 'max druckzeilen' angegeben.
Der dort angegeben Wert gilt nur ungefähr - ein Wechsel der
Ausgabedatei findet dann statt, wenn die Ausgabedatei nach Bear
beitung eines Satzes die Maximalanzahl überschritten hat. In die
neue Datei wird anschließend zuerst der Initialisierungsteil des
Druckmusters kopiert, ehe mit der Ausgabe des nächsten Satzes
fortgefahren wird.
Die Prozeduren im einzelnen:
PROC drucke (TEXT CONST druckmuster)
Die aktuell geöffnete Datei wird nach dem angegebenen Druck
muster gedruckt.
FEHLER:
#f1#
#on("i")#Datei "druckmuster" existiert nicht#off("i")#
Das angegebene Druckmuster ist nicht vorhanden.
#f1#
#on("i")#keine Datei geoeffnet#off("i")#
Zum Drucken muß eine Datei geöffnet sein.
#f1#
#on("i")#direkt Drucken nicht möglich#off("i")#
Es ist kein Druckprogramm installiert oder der Spooler läßt sich
mit 'print' nicht ansprechen. Der Druck wird abgebrochen, die
Ausgabedatei ist noch vorhanden.
PROC direkt drucken (BOOL CONST ja)
Gibt an, ob die Druckausgaben direkt gedruckt oder in einer
Datei gesammelt werden sollen.
PROC druckdatei (TEXT CONST ausgabedatei)
Leitet die Druckausgabe des nächsten Druckvorgangs in die
Datei 'ausgabedatei'. Die Einstellung von 'direkt drucken' wird
für diesen Druckvorgang überschrieben. Die Ausgabe wird am
Ende der Datei angehängt, falls nötig, wird die Ausgabedatei
vorher eingerichtet.
PROC maxdruckzeilen (INT CONST zeilen)
Stellt die maximale Anzahl von Zeilen für die Ausgabedatei ein.
Beim Überschreiten dieses Wertes wird eine neue Datei ange
fangen. Standardwert ist 4000.
TEXT PROC lfd nr
Liefert während des Druckens die laufende Nummer des gerade
gedruckten Satzes als Text.
BOOL PROC gruppenwechsel (INT CONST gruppennr)
Kann innerhalb eines Vor- oder Nachspanns beim Drucken ab
gefragt werden, um festzustellen, ob die angegebene Gruppe
gewechselt und damit den Vor- bzw. Nachspann mitverursacht
hat (es können zu einem Zeitpunkt mehrere Gruppen wechseln).
Die Gruppennummer 0 gibt die Standardgruppe an, die nur vor
dem ersten und nach dem letzten Satz wechselt.
8.2 Kopieren
Zum selektiven Kopieren von EUDAS-Dateien wird ein Kopiermuster
benötigt. Dieses gibt die Zuordnung zwischen Feldern der Ziel- und
der Quelldatei an. Die Quelldatei ist immer die aktuell geöffnete
Datei.
Die Kopierfunktion wird durch 'kopiere' aufgerufen. Parameter
sind der Name der Zieldatei und das Kopiermuster als FILE. Alter
nativ kann statt des Kopiermusters eine Prozedur übergeben wer
den, die die Kopieranweisungen erhält.
Der eigentliche Kopiervorgang wird durch den Operator 'K'
bewirkt. Dieser erhält den Zielfeldnamen und einen TEXT-Aus
druck als Parameter. Der Wert des TEXT-Ausdrucks wird in das
jeweilige Feld der Zieldatei geschrieben.
Existiert die Zieldatei noch nicht, so wird sie mit den Feldern
eingerichtet, die in den einzelnen 'K'-Ausdrücken angegeben sind
und zwar in der angeführten Reihenfolge. Existiert die Zieldatei, so
werden gegebenenfalls noch nicht vorhandene Felder am Ende ange
fügt.
Die Prozedur 'std kopiermuster' liefert zu einer gegebenen
Zieldatei ein Standard-Muster, das als Auswahlgrundlage dienen
kann. Existiert die Zieldatei nicht, werden alle Felder der Quell
datei 1 : 1 kopiert, anderenfalls wird zu jedem Feld der Zieldatei
ein passendes Feld der Quelldatei gesucht - die Feldreihenfolge
richtet sich in diesem Fall nach der Zieldatei.
PROC kopiere (TEXT CONST dateiname,
FILE VAR kopiermuster)
Die aktuell geöffnete Datei wird nach den Angaben in 'kopier
muster' in die Datei 'dateiname' kopiert. Das Kopiermuster wird
dem ELAN-Compiler übergeben. Tritt bei der Übersetzung ein
Fehler auf, wird der Paralleleditor aufgerufen.
FEHLER:
#f1#
#on("i")#Datei ist keine EUDAS-Datei#off("i")#
Zieldatei existiert, ist aber keine EUDAS-Datei.
#f1#
#on("i")#keine Datei geoeffnet#off("i")#
Es muß eine virtuelle Datei vorhanden sein.
PROC kopiere (TEXT CONST dateiname, PROC kopierfunktion)
Wie oben, nur ist die Kopierfunktion gleich als Prozedur vor
handen.
FEHLER:
#f1#
#on("i")#Datei ist keine EUDAS-Datei#off("i")#
Zieldatei existiert, ist aber keine EUDAS-Datei.
#f1#
#on("i")#keine Datei geoeffnet#off("i")#
Es muß eine virtuelle Datei vorhanden sein.
OP K (TEXT CONST feldname, ausdruck)
Kopiert den Ausdruck in das Feld 'feldname' der Zieldatei.
Dieses Feld wird eingerichtet, falls es noch nicht existiert.
Dieser Operator ist nur während eines Kopiervorganges de
finiert (also in einem Kopiermuster oder einer Kopierfunktion).
Er darf nicht in einer IF-Klausel stehen, sondern muß bei
jedem Satz mit gleichem Feldnamen an der gleichen Stelle auf
gerufen werden.
PROC std kopiermuster (TEXT CONST dateiname,
FILE VAR kopiermuster)
Liefert ein Standard-Kopiermuster, abhängig von der Zieldatei
'dateiname'. Existiert diese nicht, wird die Quelldatei unverän
dert kopiert, ansonsten richtet sich das Kopiermuster nach der
Zieldatei.
8.3 Tragen
Durch Tragen können Sätze komplett in eine Zieldatei transportiert
werden. In der Quelldatei sind sie anschließend nicht mehr vorhan
den. Eine ganze Auswahl von Sätzen kann mit 'trage' transportiert
werden. 'trage satz' transportiert nur den aktuellen Satz. Mit
'hole satz' kann der letzte Satz der Zieldatei wieder zurückgeholt
werden, so daß eine EUDAS-Datei auch als Zwischenspeicher für
Einzelsätze verwendet werden kann.
Existiert die Zieldatei bereits, muß sie mindestens so viele
Felder wie die Quelldatei besitzen, damit keine Informationen ver
lorengehen können. Die Feldnamen müssen nicht übereinstimmen.
Existiert die Zieldatei noch nicht, wird sie mit den Feldern der
Quelldatei eingerichtet.
Die Tragefunktion kann um eine gleichzeitige Prüfung erweitert
werden. Dabei werden Bedingungen überprüft, die bei der Zieldatei
gespeichert sind. Sätze, die diese Bedingungen verletzen, werden
nicht getragen. Eine entsprechende Meldung wird in eine Protokoll
datei geschrieben, die als Parameter übergeben werden muß.
Die Prüfbedingungen stehen als ausführbares Programm in den
Notizen der Zieldatei. Prüfbedingungen können mit mehreren Proze
duren formuliert werden. 'pruefe' nimmt eine beliebige Bedingung als
Parameter und gibt bei Mißerfolg eine Meldung aus. 'wertemenge'
prüft auf Übereinstimmung mit einem der angegebenen Werte. 'feld
maske' legt eine Maske für ein Feld fest, die auf den Inhalt zutref
fen muß.
Mit Hilfe der Prozedur 'eindeutige felder' können Satzduplikate
erkannt werden. Auch diese werden nicht getragen.
Die bei den Prüfbedingungen angegebenen Feldnamen müssen in
der Quelldatei vorhanden sein. Falls eine Prüfprozedur außerhalb
von 'trage' aufgerufen wird, führt eine Verletzung der Prüfbedin
gung zu einem 'errorstop'.
PROC trage (TEXT CONST dateiname,
FILE VAR protokoll, BOOL CONST test)
Alle ausgewählten Sätze werden in die Datei 'dateiname' getra
gen. Diese wird gegebenenfalls eingerichtet. Falls 'test' ange
geben ist, werden die in den Notizen der Zieldatei enthaltenen
Bedingungen geprüft. Nur in diesem Fall muß 'protokoll' initial
isiert sein.
FEHLER:
#f1#
#on("i")#kein Satz zum Tragen vorhanden#off("i")#
Die Quelldatei ist leer oder es ist keine Datei geöffnet.
#f1#
#on("i")#Datei ist keine EUDAS-Datei#off("i")#
Zieldatei existiert, ist aber keine EUDAS-Datei.
#f1#
#on("i")#Zieldatei hat falsche Felderzahl#off("i")#
Zu wenig Felder in der Zieldatei.
PROC trage satz (TEXT CONST dateiname)
Der aktuelle Satz wird in die Datei 'dateiname' getragen.
FEHLER:
#f1#
#on("i")#kein Satz zum Tragen vorhanden#off("i")#
Keine Datei geöffnet oder Datei ist am Ende.
#f1#
#on("i")#Datei ist keine EUDAS-Datei#off("i")#
Zieldatei existiert, ist aber keine EUDAS-Datei.
#f1#
#on("i")#Zieldatei hat falsche Felderzahl#off("i")#
Zu wenig Felder in der Zieldatei.
PROC pruefe (TEXT CONST feldname, BOOL CONST bedingung)
Wenn die angegebene Bedingung FALSE liefert, wird eine Mel
dung in die Protokolldatei geschrieben und der jeweilige Satz
nicht getragen.
PROC wertemenge (TEXT CONST feldname. menge)
Es wird geprüft, ob das angegebene Feld in der Wertemenge
enthalten ist. Die einzelnen Werte in der Wertemenge werden
dabei durch Komma getrennt. Leerzeichen sind signifikant.
PROC feldmaske (TEXT CONST feldname, maske)
Es wird geprüft, ob das angegebene Feld zu der Maske paßt. Die
Zeichen in der Maske haben dabei folgende Bedeutung:
'9' trifft auf jede Ziffer zu
'X' trifft auf jedes Zeichen zu
'A' trifft auf jeden Großbuchstaben zu (einschließlich
Umlaute)
'a' trifft auf jeden Kleinbuchstaben zu (einschließlich
Umlaute und 'ß')
'*' trifft auf eine Folge beliebiger Zeichen zu (auch die
leere Folge). Eine sparsame Verwendung wird empfoh
len, da die Bearbeitung sehr aufwendig ist.
Alle anderen Zeichen treffen nur auf ein gleiches Zeichen zu.
PROC eindeutige felder (INT CONST anzahl)
Gibt an, die wieviel ersten Felder einen Satz eindeutig identifi
zieren sollen. Ein Satz, der mit einem Satz der Datei in diesen
Feldern übereinstimmt, wird nicht getragen. Ohne diese Angabe
wird keine derartige Prüfung vorgenommen.
PROC hole satz (TEXT CONST dateiname)
Holt den letzten Satz der angegebenen Datei und fügt ihn vor
dem aktuellen Satz ein.
FEHLER:
#f1#
#on("i")#"dateiname" existiert nicht#off("i")#
#f1#
#on("i")#Datei ist keine EUDAS-Datei#off("i")#
Zieldatei existiert, ist aber keine EUDAS-Datei.
#f1#
#on("i")#Zieldatei hat falsche Felderzahl#off("i")#
Zu viele Felder in der angegebenen Datei.
#f1#
#on("i")#Kein Satz zum Tragen vorhanden#off("i")#
Die angegebene Datei ist leer.
#f1#
#on("i")#keine Datei geoeffnet#off("i")#
Es muß eine virtuelle Datei vorhanden sein.
8.4 Verarbeitung
Die ausgewählten Sätze der aktuellen Datei können nach einer
Verarbeitungsvorschrift verändert oder geprüft werden. Dies ge
schieht durch die Prozedur 'verarbeite'. Als Parameter kann ent
weder ein Verarbeitungsmuster als FILE oder die Verarbeitungs
funktion direkt als Prozedur übergeben werden.
Die Vorschrift wird durch den Operator 'V' realisiert.
PROC verarbeite (FILE VAR verarbeitungsmuster)
Die aktuelle Datei wird nach dem angegebenen Muster bearbei
tet. Enthält die Vorschrift, die dem ELAN-Compiler übergeben
wird, einen Fehler, wird der Paralleleditor aufgerufen.
FEHLER:
#f1#
#on("i")#keine Datei geoeffnet#off("i")#
Es muß eine virtuelle Datei vorhanden sein.
PROC verarbeite (PROC verarbeitungsfunktion)
Wie oben, nur wird die Vorschrift direkt als Prozedur überge
ben.
FEHLER:
#f1#
#on("i")#keine Datei geoeffnet#off("i")#
Es muß eine virtuelle Datei vorhanden sein.
OP V (TEXT CONST feldname, ausdruck)
Das angegebene Feld des aktuellen Satzes wird durch den Aus
druck ersetzt.
FEHLER:
#f1#
#on("i")#Das Feld "feldname" ist nicht definiert.#off("i")#
Das angegebene Feld ist nicht vorhanden.
8.5 Funktionen in Ausdrücken
Für Ausdrücke bei den in diesem Kapitel beschriebenen Prozeduren
sind einfache Funktionen zur Abfrage von Feldinhalten vorhanden.
Mit 'f' kann der Inhalt eines benannten Feldes erfragt werden, bei
'wert' wird der Inhalt erst in eine REAL-Zahl umgewandelt, wobei
nichtnumerische Zeichen ignoriert werden.
Die Prozedur 'textdarstellung' kann dazu verwendet werden,
den Wert einer TEXT-Variablen als TEXT-Denoter in ELAN-Syntax
darzustellen.
Die Prozedur 'zahltext' kann dazu verwendet werden, aus einer
REAL-Zahl einen mit der richtigen Zahl von Nachkommastellen ver
sehenen, variabel langen Text zu machen.
TEXT PROC f (TEXT CONST feldname)
Liefert den Inhalt des angegebenen Feldes.
FEHLER:
#f1#
#on("i")#Das Feld "feldname" ist nicht definiert.#off("i")#
REAL PROC wert (TEXT CONST feldname)
Liefert den Inhalt des angegebenen Feldes als REAL. Dabei
werden nichtnumerische Zeichen ignoriert, ausgenommen das
Minuszeichen und das eingestellte Dezimalkomma (s. 'dezimal
komma'). Tritt kein numerisches Zeichen auf, wird der Wert 0.0
geliefert.
FEHLER:
#f1#
#on("i")#Das Feld "feldname" ist nicht definiert.#off("i")#
REAL PROC wert (TEXT CONST feldname, INT CONST kommastellen)
Wie 'wert' mit einem Parameter, nur daß das Ergebnis auf die
angegebene Anzahl von Nachkommastellen gerundet wird.
FEHLER:
#f1#
#on("i")#Das Feld "feldname" ist nicht definiert.#off("i")#
TEXT PROC textdarstellung (TEXT CONST anzeigetext)
Liefert 'anzeigetext' als TEXT-Denoter, also in Anführungs
strichen. Anführungsstriche im Text werden dabei verdoppelt.
Steuerzeichen von 0 bis 31 werden in lesbare Form gebracht.
TEXT PROC zahltext (REAL CONST wert, INT CONST kommastellen)
Liefert den Text des angegebenen Werts mit dem eingestellten
Dezimalkomma und mit der angegebenen Zahl von Nachkomma
stellen. Sind die Kommastellen 0, wird auch das Komma unter
drückt. Der Text erhält soviel Stellen, wie zur Darstellung
benötigt werden.
TEXT PROC zahltext (TEXT CONST feldname,
INT CONST kommastellen)
Wirkt wie 'zahltext (wert (feldname), kommastellen)'.
|