summaryrefslogtreecommitdiff
path: root/app/eudas/4.4/doc/ref-manual/eudas.ref.8
blob: 5e8d2207d27a64e0b9719d9a59c885d2aaa21685 (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
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
#type ("prop")##limit (14.0)# 
#format# 
#page (83)# 
#kapitel ("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. 
 
 
#abschnitt ("8.1", "DRUCKEN", "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 
 
#beispiel# 
    direkt drucken (TRUE) 
#text# 
 
sendet alle Dateien direkt zum Drucker, mit 
 
#beispiel# 
    direkt drucken (FALSE) 
#text# 
 
wird die Ausgabe in Dateien abgelegt. Diese Dateien erhalten Namen
der Form 
 
#beispiel# 
    "Druckmustername.a$n" 
#text# 
 
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# 
PROC drucke (TEXT CONST druckmuster) 
#endproc# 
    Die aktuell geöffnete Datei wird nach dem angegebenen Druck­
    muster gedruckt. 
#f2# 
    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# 
PROC direkt drucken (BOOL CONST ja) 
#endproc# 
    Gibt an, ob die Druckausgaben direkt gedruckt oder in einer
    Datei gesammelt werden sollen. 
 
#proc# 
PROC druckdatei (TEXT CONST ausgabedatei) 
#endproc# 
    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# 
PROC maxdruckzeilen (INT CONST zeilen) 
#endproc# 
    Stellt die maximale Anzahl von Zeilen für die Ausgabedatei ein.
    Beim Überschreiten dieses Wertes wird eine neue Datei ange­
    fangen. Standardwert ist 4000. 
 
#proc# 
TEXT PROC lfd nr 
#endproc# 
    Liefert während des Druckens die laufende Nummer des gerade
    gedruckten Satzes als Text. 
 
#proc# 
BOOL PROC gruppenwechsel (INT CONST gruppennr) 
#endproc# 
    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. 
 
 
#abschnitt ("8.2", "KOPIEREN", "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# 
PROC kopiere (TEXT CONST dateiname, 
              FILE VAR kopiermuster) 
#endproc# 
    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. 
#f2# 
    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# 
PROC kopiere (TEXT CONST dateiname, PROC kopierfunktion) 
#endproc# 
    Wie oben, nur ist die Kopierfunktion gleich als Prozedur vor­
    handen. 
#f2# 
    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# 
OP K (TEXT CONST feldname, ausdruck) 
#endproc# 
    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# 
PROC std kopiermuster (TEXT CONST dateiname, 
                       FILE VAR kopiermuster) 
#endproc# 
    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. 
 
 
#abschnitt ("8.3", "TRAGEN", "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# 
PROC trage (TEXT CONST dateiname, 
            FILE VAR protokoll, BOOL CONST test) 
#endproc# 
    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. 
#f2# 
    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# 
PROC trage satz (TEXT CONST dateiname) 
#endproc# 
    Der aktuelle Satz wird in die Datei 'dateiname' getragen. 
#f2# 
    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# 
PROC pruefe (TEXT CONST feldname, BOOL CONST bedingung) 
#endproc# 
    Wenn die angegebene Bedingung FALSE liefert, wird eine Mel­
    dung in die Protokolldatei geschrieben und der jeweilige Satz
    nicht getragen. 
 
#proc# 
PROC wertemenge (TEXT CONST feldname. menge) 
#endproc# 
    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# 
PROC feldmaske (TEXT CONST feldname, maske) 
#endproc# 
    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# 
PROC eindeutige felder (INT CONST anzahl) 
#endproc# 
    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# 
PROC hole satz (TEXT CONST dateiname) 
#endproc# 
    Holt den letzten Satz der angegebenen Datei und fügt ihn vor
    dem aktuellen Satz ein. 
#f2# 
    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. 
 
 
#abschnitt ("8.4", "VERARBEITUNG", "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# 
PROC verarbeite (FILE VAR verarbeitungsmuster) 
#endproc# 
    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. 
#f2# 
    FEHLER: 
#f1# 
    #on("i")#keine Datei geoeffnet#off("i")# 
    Es muß eine virtuelle Datei vorhanden sein. 
 
#proc# 
PROC verarbeite (PROC verarbeitungsfunktion) 
#endproc# 
    Wie oben, nur wird die Vorschrift direkt als Prozedur überge­
    ben. 
#f2# 
    FEHLER: 
#f1# 
    #on("i")#keine Datei geoeffnet#off("i")# 
    Es muß eine virtuelle Datei vorhanden sein. 
 
#proc# 
OP V (TEXT CONST feldname, ausdruck) 
#endproc# 
    Das angegebene Feld des aktuellen Satzes wird durch den Aus­
    druck ersetzt. 
#f2# 
    FEHLER: 
#f1# 
    #on("i")#Das Feld "feldname" ist nicht definiert.#off("i")# 
    Das angegebene Feld ist nicht vorhanden. 
 
 
#abschnitt ("8.5", "FUNKTIONEN IN AUSDRÜCKEN", "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. 
 
#proc# 
TEXT PROC f (TEXT CONST feldname) 
#endproc# 
    Liefert den Inhalt des angegebenen Feldes. 
#f2# 
    FEHLER: 
#f1# 
    #on("i")#Das Feld "feldname" ist nicht definiert.#off("i")# 
 
#proc# 
REAL PROC wert (TEXT CONST feldname) 
#endproc# 
    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. 
#f2# 
    FEHLER: 
#f1# 
    #on("i")#Das Feld "feldname" ist nicht definiert.#off("i")# 
 
#proc# 
REAL PROC wert (TEXT CONST feldname, INT CONST kommastellen) 
#endproc# 
    Wie 'wert' mit einem Parameter, nur daß das Ergebnis auf die
    angegebene Anzahl von Nachkommastellen gerundet wird. 
#f2# 
    FEHLER: 
#f1# 
    #on("i")#Das Feld "feldname" ist nicht definiert.#off("i")# 
 
#proc# 
TEXT PROC textdarstellung (TEXT CONST anzeigetext) 
#endproc# 
    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. 
 
#proc# 
TEXT PROC zahltext (REAL CONST wert, INT CONST kommastellen) 
#endproc# 
    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. 
 
#proc# 
TEXT PROC zahltext (TEXT CONST feldname, 
                    INT CONST kommastellen) 
#endproc# 
    Wirkt wie 'zahltext (wert (feldname), kommastellen)'.