Sie sind auf Seite 1von 318

Papyrus

Kurshandbuch
Designer/DocEXEC
Workshop

Dokumentnummer: pdcgd/700/3
ISIS Information Systems
Partner im Erfolg
Enterprise Communications und Business Process Solution - Weltweit
A-2344 Maria Enzersdorf, Austria - Alter Wienerweg 12
Tel.: +43/2236/27551- Fax: +43/2236/21081

© Copyright ISIS Papyrus Software AG 2010


Ersetzt alle früheren Dokumentationen

Alle Rechte weltweit sowie Änderungen betreffend Manual,


Help-Texte und Software sind ohne vorherige
Ankündigung vorbehalten.

Vervielfältigung des Manuals oder der auf den


Datenträgern enthaltenen Informationen ist, auch
auszugsweise, nur mit ausdrücklicher, schriftlicher
Genehmigung des Herstellers gestattet.
Ausgenommen von diesem Verbot sind
nur die vertraglich erfassten Lizenznehmer
der ISIS Papyrus Software AG.

pdcgd/700/3 19. November 2010 - 18:17:00

Dieses Dokument wurde mit Papyrus Software erstellt.


Inhaltsverzeichnis

1.0 Vorwort .......................................................................................................................................... 1


1.1 Aufbau des Kurshandbuchs ........................................................................................................... 1

2.0 Kursprogramm .............................................................................................................................. 4


2.1 Erster Tag ....................................................................................................................................... 4
2.2 Zweiter Tag ..................................................................................................................................... 4
2.3 Dritter Tag ....................................................................................................................................... 5
2.4 Vierter Tag ...................................................................................................................................... 5
2.5 Fünfter Tag ..................................................................................................................................... 5

3.0 Einleitung ...................................................................................................................................... 7


3.1 Das Papyrus Dokumentensystem .................................................................................................. 7
3.1.1 Konzepte und Ziele .................................................................................................................... 7
3.1.2 Die Komponenten des Papyrus Systems .................................................................................. 7
3.1.3 Papyrus Designer und Papyrus DocEXEC ............................................................................. 11
3.2 AFP (Advanced Function Presentation) ....................................................................................... 12
3.2.1 Was ist AFP? ........................................................................................................................... 12
3.2.2 Die Standardelemente von AFP .............................................................................................. 13
3.2.2.1 Overlay (Formular) ............................................................................................................... 13
3.2.2.2 Form Definition ..................................................................................................................... 13
3.2.2.3 Page Definition ..................................................................................................................... 14
3.2.2.4 AFP Fonts ............................................................................................................................. 14
3.2.2.5 Pagesegmente ..................................................................................................................... 15
3.2.3 Namenskonventionen .............................................................................................................. 15
3.2.4 Unterschiede zwischen PPFA und DOCDEF .......................................................................... 16
3.3 Fragen zum einführenden Kapitel ................................................................................................ 17

4.0 Lektion 0: Einstieg in Papyrus Designer ................................................................................. 18


4.1 Erste Schritte mit Papyrus Designer ............................................................................................ 18
4.1.1 Das Hauptfenster ..................................................................................................................... 18
4.1.2 Werkzeugleisten ...................................................................................................................... 21
4.1.3 Die Logikbaum-Editoren .......................................................................................................... 23
4.1.4 Das Vorschaufenster "View Document" .................................................................................. 25
4.1.5 Die Eingabedaten betrachten: Das Datenfenster "Data Window" .......................................... 27
4.1.6 Das Variablenfenster ............................................................................................................... 27
4.1.7 Warnungen und Fehler: Das Meldungsfenster "Message List" .............................................. 27
4.2 Voraussetzungen und Setup ........................................................................................................ 28
4.2.1 Daten ....................................................................................................................................... 28
4.2.2 Ressourcen ............................................................................................................................. 28
4.2.3 Setup ....................................................................................................................................... 28
4.2.3.1 DocEXEC Hauptprofil (ppde.prf) .......................................................................................... 29
4.2.3.2 Default Library Profile (default.lbp) ....................................................................................... 31
4.2.3.3 Default Document Definition (default.dfa) ............................................................................ 32
4.2.4 Verzeichnisstruktur auf dem PC .............................................................................................. 32
4.3 Fragen zu Lektion 0 ...................................................................................................................... 34

5.0 Lektion 1: Einfaches Dokument ................................................................................................ 35


5.1 In dieser Lektion vermitteltes Wissen ........................................................................................... 35

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop i


Inhaltsverzeichnis

5.2 Die Definition eines Projektes ...................................................................................................... 39


5.3 Die Datenanalyse ......................................................................................................................... 40
5.4 Die Definition einer FormatGroup ................................................................................................. 40
5.4.1 Die FORMATGROUP-Definition ............................................................................................. 40
5.4.2 Die SHEET-Definition .............................................................................................................. 41
5.4.3 Die LAYER-Definition .............................................................................................................. 41
5.4.4 Die Definition der LOGICALPAGE .......................................................................................... 41
5.4.5 Der entsprechende DOCDEF-Quellcode ................................................................................ 42
5.5 APPLICATION INPUT FORMAT .................................................................................................. 42
5.5.1 Input codepage ........................................................................................................................ 43
5.5.2 Input record format .................................................................................................................. 43
5.5.3 Channel/TRC code definition .................................................................................................. 44
5.5.4 Dezimaltrennzeichen ............................................................................................................... 44
5.5.5 Linecache limit ......................................................................................................................... 45
5.5.6 OMS cache limit ...................................................................................................................... 45
5.5.7 Der entsprechende DOCDEF-Quellcode ................................................................................ 45
5.6 APPLICATION OUTPUT FORMAT .............................................................................................. 46
5.7 Auflösung und Positionierung von Elementen im Dokument ....................................................... 47
5.7.1 DocEXEC internes Koordinatensystem .................................................................................. 48
5.7.2 Objektpositionierung ................................................................................................................ 48
5.7.3 MM, CM, INCH, PELS, POINTS ............................................................................................. 50
5.8 Die FONT-Definition ..................................................................................................................... 50
5.9 Die Befehle zur Document Format Definition ............................................................................... 52
5.9.1 Der Befehl DOCFORMAT ....................................................................................................... 52
5.9.2 Der Befehl USE ....................................................................................................................... 53
5.9.2.1 Eine FormatGroup mit USE FormatGroup ansteuern .......................................................... 53
5.9.2.2 Eine LOGICALPAGE mit USE ansteuern ............................................................................ 53
5.9.3 Der Befehl MARGIN ................................................................................................................ 53
5.9.4 Der Befehl SETUNITS/LINESP ............................................................................................... 54
5.9.5 Der Befehl PRINTLINE ............................................................................................................ 55
5.9.6 Der Befehl FIELD .................................................................................................................... 55
5.9.7 Der Befehl VARIABLE ............................................................................................................. 57
5.9.8 Der Befehl RULE ..................................................................................................................... 58
5.9.9 Der Befehl OUTLINE ............................................................................................................... 59
5.9.10 Der Befehl PLACE ................................................................................................................. 59
5.9.11 IF-THEN-ELSE Steueranweisung ......................................................................................... 60
5.9.12 SELECT-CASE-Verarbeitung (Lektion 1a) ........................................................................... 61
5.9.13 Der Befehl TEXT ................................................................................................................... 62
5.9.13.1 Textbefehle ......................................................................................................................... 63
5.9.13.2 Texteigenschaften .............................................................................................................. 63
5.9.13.3 Direkte Eingabe von Text ................................................................................................... 64
5.9.14 Der Befehl SEGMENT ........................................................................................................... 64
5.9.15 Die Definition des LOGICALPAGE FOOTERs ...................................................................... 65
5.9.16 Der Befehl ASSIGN ............................................................................................................... 65
5.9.17 Der Befehl OUTPUT .............................................................................................................. 66
5.10 Generierung des Dokuments in einem DocEXEC-Produktionslauf ........................................... 67
5.10.1 Dokumente mit Papyrus Designer generieren ...................................................................... 67
5.10.2 Dokumente mit Papyrus DocEXEC generieren .................................................................... 68
5.10.2.1 A. Übergabe von einzelnen Parametern im Kommandozeilenaufruf ................................. 68
5.10.2.2 B. Übergabe einer Projektdatei im Kommandozeilenaufruf ............................................... 68
5.10.2.3 C. Übergabe einer Struct-Datei im Kommandozeilenaufruf ............................................... 68
5.10.2.4 D. Beschreibung der Batch-Datei ....................................................................................... 69
5.11 Der Import von TIFFs mit den Befehl SEGMENT (Lektion 1b) .................................................. 69
5.11.1 Option 1: Konvertierung in PSEGs ........................................................................................ 70
5.11.2 Option 2: Einbetten in den AFPDS ........................................................................................ 72
5.12 Der Import von Bildern über den Befehl INVOKE DLL ............................................................... 72

ii Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Inhaltsverzeichnis

5.12.1 JPEGs mit INVOKE DLL importieren .................................................................................... 73


5.12.2 TIFFs mit INVOKE DLL importieren ...................................................................................... 74
5.13 Zusammenfassung ..................................................................................................................... 74
5.14 Fragen zu Lektion 1 .................................................................................................................... 74

6.0 Zusatzaufgabe 1: Vertikale Linien einfügen ............................................................................ 76


6.1 Vorbereitung ................................................................................................................................. 76
6.2 Lösungshilfe ................................................................................................................................. 77

7.0 Lektion 2: Fortgeschrittene Dokumentgestaltung .................................................................. 78


7.1 In dieser Lektion vermitteltes Wissen ........................................................................................... 78
7.2 Datenanalyse, Eingabedefinition und wiederholte Datensätze .................................................... 79
7.2.1 Datenanalyse ........................................................................................................................... 79
7.2.2 Der Befehl RECORD ............................................................................................................... 80
7.2.3 PRINTLINE/FIELD vs. RECORD/VARIABLE und OUTLINE/OUTPUT .................................. 82
7.2.4 Der Wechsel von PRINTLINE zu RECORD/OUTLINE ........................................................... 83
7.2.5 Der Befehl PLACE ................................................................................................................... 84
7.2.6 Exkurs: Objektgrößen .............................................................................................................. 84
7.2.7 Exkurs: Zeilenabstand über LINESP ....................................................................................... 85
7.3 Typen von Variablen ..................................................................................................................... 87
7.3.1 Wie werden Variablen erstellt? ................................................................................................ 87
7.3.2 Skalare oder indizierte Variable .............................................................................................. 88
7.3.2.1 Indizierte Variable ................................................................................................................. 88
7.3.2.2 Skalare Variablen ................................................................................................................. 89
7.3.2.3 Zweidimensionale Arrays ..................................................................................................... 89
7.3.3 Gültigkeitsbereiche von Variablen ........................................................................................... 89
7.3.4 Automatisch erzeugte Variablen ............................................................................................. 90
7.4 Definitionen ................................................................................................................................... 90
7.4.1 Der Befehl SUBSTITUTE ........................................................................................................ 90
7.4.2 Der Befehl TEXTELEMENT .................................................................................................... 91
7.5 Die Befehle im Fenster "Document Format Definitions" .............................................................. 92
7.5.1 Der Befehl ASSIGN mit Maßeinheiten .................................................................................... 92
7.5.2 Tabellen über die Befehle TABLE und COLUMN ................................................................... 93
7.5.2.1 Der Befehl TABLE ................................................................................................................ 94
7.5.2.2 Der Befehl COLUMN ............................................................................................................ 95
7.5.3 Die Funktion NUMPICTURE ................................................................................................... 98
7.5.4 Der Befehl KEEP ..................................................................................................................... 98
7.5.5 Der Befehl ENDGROUP .......................................................................................................... 99
7.6 Die Befehle im Fenster "FormatGroup Definitions" .................................................................... 100
7.6.1 Der LOGICALPAGE PRINTFOOTER ................................................................................... 100
7.6.2 Der Befehl FOR ..................................................................................................................... 101
7.6.3 Weitere Parameter des Befehls OUTPUT ............................................................................ 101
7.6.4 Der Befehl OVERLAY ........................................................................................................... 103
7.6.5 Der LOGICALPAGE FOOTER .............................................................................................. 103
7.7 Der Debug-Modus ...................................................................................................................... 105
7.7.1 Debug-Modus ........................................................................................................................ 105
7.7.2 Haltepunkte ........................................................................................................................... 105
7.8 Zusammenfassung ..................................................................................................................... 106
7.9 Fragen zu Lektion 2 .................................................................................................................... 106

8.0 Zusatzaufgabe 2: Summenzeile und zusätzliche Kopie ....................................................... 108


8.1 Vorbereitung ............................................................................................................................... 108

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop iii


Inhaltsverzeichnis

8.2 Lösungshilfe ............................................................................................................................... 109

9.0 Lektion 3: Flexible Strukturen mit wiederholten Outlines ................................................... 110


9.1 In dieser Lektion vermitteltes Wissen ......................................................................................... 110
9.2 Auswahl der Papierlade (Bin) am Drucker ................................................................................. 113
9.2.1 Definieren der Papierladen in OverView AFP-Designer ....................................................... 113
9.2.2 Aufruf der Papierladen (BINs) im Papyrus Designer ............................................................. 117
9.3 Die Erstellung von Tabellen mit wiederholten OUTLINEs .......................................................... 120
9.3.1 Schritt 1: Tabelle mittels wiederholter OUTLINEs ................................................................. 124
9.3.2 Schritt 2: Farbig hinterlegte Zeilen ........................................................................................ 125
9.3.3 Schritt 3: HEADER, BODY und FOOTER ............................................................................. 131
9.3.4 Schritt 3: BEFORE_BREAK and AFTER_BREAK ................................................................ 134
9.4 Drucken eines Produktionsberichts ............................................................................................ 136
9.4.1 Die Systemvariable $TIME .................................................................................................... 136
9.4.2 Die Funktion GENTIME ......................................................................................................... 136
9.4.3 Das DOCFORMAT $_AFTERDOC ....................................................................................... 136
9.4.4 Das DOCFORMAT $_AFTERLASTDOC .............................................................................. 137
9.5 Seitenzählung pro Dokumentinstanz .......................................................................................... 137
9.6 System-DOCFORMATs ............................................................................................................. 139
9.7 Zusammenfassung ..................................................................................................................... 139
9.8 Fragen zu Lektion 3 .................................................................................................................... 139

10.0 Zusatzaufgabe 3/1: Tabellenaussehen verändern .............................................................. 140


10.1 Vorbereitung ............................................................................................................................. 140
10.2 Lösungshilfe ............................................................................................................................. 141

11.0 Zusatzaufgabe 3/2: Ausgabe als Duplex 2-Up ..................................................................... 142


11.1 Vorbereitung ............................................................................................................................. 143
11.2 Lösungshilfe ............................................................................................................................. 144

12.0 Lektion 4: Externe Dokumentdefinitionen, Diagramme ..................................................... 145


12.1 In dieser Lektion vermitteltes Wissen ....................................................................................... 145
12.2 Notwendige Vorarbeiten ........................................................................................................... 147
12.3 Eingabedaten mit Multibyte Channel Code .............................................................................. 149
12.3.1 Datenanalyse ....................................................................................................................... 149
12.3.2 Die Parameter im APPLICATION-INPUT-FORMAT ........................................................... 150
12.4 Entwurf der Einleseroutine ....................................................................................................... 152
12.4.1 Der Befehl RECORD ........................................................................................................... 153
12.4.2 Der Befehl VARIABLE zum Einlesen der MbCC ................................................................. 155
12.4.3 Einlesen der Datenwerte ..................................................................................................... 156
12.5 Die Organisation der DOCFORMATs ...................................................................................... 157
12.5.1 Verschiedene Datensätze - verschiedene DOCFORMATs ................................................ 157
12.5.2 ENDD - Der Abschluss des Dokuments .............................................................................. 158
12.5.3 Die Verarbeitung von DF_MAIN .......................................................................................... 159
12.5.4 Der Befehl ENDDOCUMENT .............................................................................................. 161
12.5.5 Dokumenteninstanz ............................................................................................................. 161
12.5.6 Hinzufügen von ENDGROUP und ENDDOCUMENT ......................................................... 161
12.5.7 Erstellen des DocFormats zur Ausgabe des Textblocks (DF_TEXT) ................................. 162
12.5.8 Externe DOCFORMATs ...................................................................................................... 165
12.5.8.1 Der Befehl INCLUDE ........................................................................................................ 165
12.5.8.2 Erstellen neuer externer DocFormate .............................................................................. 166

iv Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Inhaltsverzeichnis

12.5.8.3 Einbinden externer DocFormate mit USE ........................................................................ 168


12.6 Auswerten des Inhalts von Variablen zur Laufzeit - die Funktion REFERENCE ..................... 170
12.7 Sortieren von Tabellen - der Befehl SORT .............................................................................. 174
12.8 Ungeordnete und nummerierte Listen ...................................................................................... 176
12.8.1 Der Befehl TEXTSTYLE ...................................................................................................... 177
12.8.2 TEXTSTYLEs im Befehl TEXT verwenden ......................................................................... 182
12.8.3 Text einfügen mit Variablen ................................................................................................. 183
12.8.4 Exkurs: Weitere Einstellungen mit TEXTOPT_SAVE und TEXTOPT_RESTORE ............. 185
12.9 Barcodes .................................................................................................................................. 186
12.10 Diagramme - der Befehl CHARTDLL ..................................................................................... 187
12.10.1 Chart values ...................................................................................................................... 189
12.10.2 From ... to .......................................................................................................................... 189
12.10.3 Position .............................................................................................................................. 190
12.10.4 Dimensions ........................................................................................................................ 190
12.10.5 BaseColor .......................................................................................................................... 190
12.10.6 ChartInfo ............................................................................................................................ 191
12.10.7 GroupSegments, GroupText, GroupValue ........................................................................ 191
12.10.8 LineThickness .................................................................................................................... 191
12.10.9 Optimizations ..................................................................................................................... 191
12.10.10 ShadeRangeFrom und ShadeRangeTo .......................................................................... 191
12.10.11 StartPosition .................................................................................................................... 191
12.10.12 3D_Proportion ................................................................................................................. 191
12.10.13 Weitere Informationen zu Diagrammen .......................................................................... 192
12.11 Zusammenfassung ................................................................................................................. 193
12.12 Fragen zu Lektion 4 ................................................................................................................ 193

13.0 Zusatzaufgabe 4: Eingabedatenverarbeitung ..................................................................... 195


13.1 Vorbereitung ............................................................................................................................. 195
13.2 Lösungshilfe ............................................................................................................................. 196

14.0 Lektion 5: Textbausteine und Mehrsprachigkeit ................................................................. 197


14.1 In dieser Lektion vermitteltes Wissen ....................................................................................... 198
14.2 Notwendige Vorarbeiten ........................................................................................................... 198
14.3 Datenstruktur und Einleseprozedur .......................................................................................... 199
14.3.1 Die Parameter im APPLICATION-INPUT-FORMAT-Befehl ............................................... 200
14.3.2 Datensatz-IDs ...................................................................................................................... 201
14.4 Verschiedene Datensätze - verschiedene DOCFORMATs ..................................................... 202
14.4.1 Flexible Einleseroutine ........................................................................................................ 202
14.4.2 Dynamische Erzeugung von Variablen im DocFormat DF05VAR_READ .......................... 202
14.4.3 Einlesen von Variablen im DocFormat DF05TAB_READ ................................................... 205
14.4.3.1 Verwenden des Befehls ENDREPEAT ............................................................................ 207
14.4.3.2 Einlesen der Variablenwerte ............................................................................................ 207
14.4.3.3 Der Befehl SKIPRECORD ................................................................................................ 207
14.5 Aufrufen der DocFormats ......................................................................................................... 208
14.6 Weitere Textsteuerungsbefehle ............................................................................................... 211
14.6.1 Ausgabe von Text im DocFormat DF05TEXT ..................................................................... 211
14.6.2 Der Textsteuerungsbefehl FILTER ..................................................................................... 212
14.6.3 Variablen in einem inkludierten Textelement ...................................................................... 213
14.6.4 Der Textsteuerungsbefehl DFACODE ................................................................................ 213
14.6.5 DFACODE, FILTER und ELEMENT ................................................................................... 214
14.6.6 Der Textsteuerungsbefehl COLOR ..................................................................................... 214
14.7 Unterstützung für mehrere Sprachen ....................................................................................... 214
14.7.1 Der Befehl LANGUAGESET ............................................................................................... 214
14.7.2 Lokalisierung ....................................................................................................................... 218

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop v


Inhaltsverzeichnis

14.7.2.1 Anlegen der Übersetzungen ............................................................................................. 218


14.7.2.2 Aufrufen der Übersetzungen ............................................................................................ 220
14.7.2.3 Speichern externer DocFormate unter einem neuen Namen .......................................... 220
14.7.3 Alternative Lokalisierungsimplementationen ....................................................................... 225
14.8 Zusammenfassung ................................................................................................................... 225
14.9 Fragen zu Lektion 5 .................................................................................................................. 226

15.0 Lektion 5A: Indizierung und Inhaltsverzeichnis .................................................................. 227


15.1 In dieser Lektion vermitteltes Wissen ....................................................................................... 227
15.2 Notwendige Vorarbeiten ........................................................................................................... 227
15.3 Die Erstellung eines Suchindex ................................................................................................ 227
15.4 Erstellung eines Inhaltsverzeichnisses ..................................................................................... 230
15.4.1 Speichern von Verzeichniseinträgen und Seitennummern (DocFormat
PUT_CONTENT) ................................................................................................................. 231
15.4.2 Erstellen und Ausgeben des Inhaltsverzeichnisses ............................................................ 232
15.4.2.1 Erstellen der FormatGroup CONTENT ............................................................................ 232
15.4.2.2 Formatieren und Ausgeben des Inhaltsverzeichnisses (DocFormat
MAKE_CONTENT) ........................................................................................................... 233
15.4.2.3 Die Systemvariablen $SL_LMAXX und $SL_LMINX ....................................................... 233
15.4.3 Ändern der Reihenfolge der FORMATGROUPs ................................................................. 234
15.4.4 Aufrufen des DocFormats PUT_CONTENT ........................................................................ 235
15.4.5 Aufrufen des DocFormats MAKE_CONTENT ..................................................................... 236
15.5 Zusammenfassung ................................................................................................................... 237
15.6 Fragen zu Lektion 5A ............................................................................................................... 237

16.0 Lektion 5B: Zusätzliche Ausgabekanäle .............................................................................. 238


16.1 In dieser Lektion vermitteltes Wissen ....................................................................................... 238
16.2 Notwendige Vorarbeiten ........................................................................................................... 238
16.3 Umgebungsvariablen ............................................................................................................... 238
16.4 Ausgabe der Dokumentkopien im PDF-Format ....................................................................... 239
16.4.1 Der Befehl DEFINEPDFOUTPUT ....................................................................................... 240
16.4.2 Der Befehl SELECTOUTPUT .............................................................................................. 241
16.5 Die Erstellung eines Logfiles .................................................................................................... 242
16.5.1 Der Befehl LISTOUT ........................................................................................................... 242
16.5.2 Der Befehl WRITERECORD ............................................................................................... 243
16.5.3 Der Befehl PUT ................................................................................................................... 243
16.6 Kommentare in der Dokument-Definition - der Befehl COMMENT .......................................... 245
16.7 Zusammenfassung ................................................................................................................... 246
16.8 Fragen zu Lektion 5B ............................................................................................................... 247

17.0 Zusatzaufgabe 5: Zusätzliche Ausgabedateien .................................................................. 248


17.1 Vorbereitung ............................................................................................................................. 248
17.2 Lösungshilfe ............................................................................................................................. 249

18.0 Lektion 6: Prompting ............................................................................................................. 250


18.1 In dieser Lektion vermitteltes Wissen ....................................................................................... 250
18.2 Erstellen von Eingabeaufforderungen (Prompting) .................................................................. 252
18.3 Variablenabfrage ...................................................................................................................... 252
18.3.1 Der Befehl PROMPT ........................................................................................................... 253
18.3.2 Der Befehl VARPROMPT .................................................................................................... 253
18.4 Textabfragen - der Befehl TEXTPROMPT ............................................................................... 254

vi Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Inhaltsverzeichnis

18.5 Das neue DocFormat MAKE_INDEX ....................................................................................... 254


18.6 Das DocFormat $_BEFOREFIRSTDOC .................................................................................. 254
18.7 Einbau von Abfragen ................................................................................................................ 257
18.8 Papyrus Client .......................................................................................................................... 262
18.8.1 Dateneingabe in Papyrus Client .......................................................................................... 263
18.8.2 Permanente Rechtschreibüberprüfung ............................................................................... 266
18.8.3 Vorausschau auf das Dokument ......................................................................................... 267
18.9 Der Befehl STICKER ................................................................................................................ 269
18.9.1 Der Befehl STICKER im Papyrus Designer ........................................................................ 270
18.9.2 Der Befehl STICKER im Papyrus Client ............................................................................. 271
18.10 Zusammenfassung ................................................................................................................. 271
18.11 Fragen zu Lektion 6 ................................................................................................................ 272

19.0 Lektion 7: Import von PPFA-Code ........................................................................................ 273


19.1 In dieser Lektion vermitteltes Wissen ....................................................................................... 273
19.2 Schritt 1: Ein Projekt definieren ................................................................................................ 273
19.3 Schritt 2: Importieren einer PAGEDEF ..................................................................................... 275
19.4 Schritt 3: PRINTLINE -> RECORD/OUTLINE .......................................................................... 276
19.5 Schritt 4: Modifikation der DOCDEF ......................................................................................... 277

20.0 Lektion 8: Papyrus WebRepository ...................................................................................... 279


20.1 Was geschieht nun mit den erstellten Dokumenten? ............................................................... 279
20.2 Papyrus Desktop ...................................................................................................................... 279
20.3 Objekte ..................................................................................................................................... 279
20.3.1 Attribute ............................................................................................................................... 279
20.3.2 Methoden ............................................................................................................................. 280
20.4 Papyrus Designer/DocEXEC im Papyrus Document System .................................................. 280
20.5 Beispielanwendung für Papyrus Objects ................................................................................. 280
20.5.1 Papyrus Objects starten ...................................................................................................... 281
20.5.2 Die Ansicht "Tool Collection" ............................................................................................... 283
20.5.3 Die Ansicht "Course Samples" ............................................................................................ 284
20.5.4 Verwenden des Papyrus Designers als Tool in Papyrus Objects ....................................... 285
20.5.5 Papyrus Versionsverwaltung und Änderungsmanagement ................................................ 287
20.5.6 Resource Collection ............................................................................................................ 290
20.5.7 Vorteile der Resource Collection ......................................................................................... 291
20.5.8 Der Resource Explorer ........................................................................................................ 292
20.5.9 Herunterfahren von Papyrus Objects .................................................................................. 295

21.0 Zusammenfassung des Kursinhalts ..................................................................................... 296


21.1 Input Data ................................................................................................................................. 296
21.2 Betriebssystem ......................................................................................................................... 296
21.3 Codepage ................................................................................................................................. 296
21.4 Reihenfolge der Dokumentengestaltung .................................................................................. 296
21.5 Verarbeitung von DOCFORMATs und Dokumenten ............................................................... 297
21.5.1 Verarbeitungsbeginn ........................................................................................................... 297
21.5.2 Verarbeitung innerhalb eines DOCFORMATs .................................................................... 297
21.5.3 Verarbeitung des ersten (äußersten) DOCFORMATs ........................................................ 297
21.5.4 Dokumenteninstanzen ......................................................................................................... 298
21.5.5 Ausgabe der Logical Pages ................................................................................................ 298
21.5.6 DocEXEC Verarbeitung ....................................................................................................... 298
21.6 Drucker ..................................................................................................................................... 298

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop vii


Inhaltsverzeichnis

22.0 Einführung in Papyrus Postprocessing ............................................................................... 299

23.0 Anhang 1: OUTLINE-Sublevel-Befehle ................................................................................. 300

24.0 Anhang 2: Parameter des TEXT-Befehls ............................................................................. 301

25.0 Anhang 3: Positionsschlüsselwörter ................................................................................... 303


25.1 Positionsschlüsselwörter der Hauptebene ............................................................................... 303
25.2 Sublevel-Positionsschlüsselwörter ........................................................................................... 304

26.0 Weiterführende Literatur ....................................................................................................... 305


26.1 ISIS Papyrus Dokumente ......................................................................................................... 305
26.2 Literatur über Papyrus Objects ................................................................................................. 305

27.0 Abkürzungen ........................................................................................................................... 306

viii Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Vorwort 1/308

1.0 Vorwort

Willkommen im ISIS Papyrus Designer Kurs!


Der Kurs richtet sich ebenso wie das vorliegende Handbuch an Entwickler von
Dokumentenanwendungen. Das Handbuch beschreibt die zahlreichen Funktionen und
vielseitigen Anwendungsmöglichkeiten der Entwicklungsumgebung ISIS Papyrus
Designer/DocEXEC.
Die Einleitung dieses Kurshandbuchs besteht aus drei Abschnitten:
Abschnitt 1 stellt das Papyrus Document System vor, einen integrierten Verbund von gut
aufeinander abgestimmten Applikationen, die in ihrem Zusammenwirken ein außerordentlich
vielseitiges Dokumentenverwaltungssystem darstellen. Eine wichtige Komponente dieses
Systems ist die Dokumentenentwicklungsumgebung Papyrus Designer/DocEXEC.
Abschnitt 2 beleuchtet die AFP-Architektur, die die Grundlage für das Papyrus Document
System bildet. Es wird die Funktionsweise dieser Architektur erklärt, ebenso wie seine
Herkunft von IBM AFP und die Beziehung zwischen PPFA und DOCDEF.
Abschnitt 3 der Einleitung liefert die Grundlagen, um mit dem Kurs selbst beginnen zu
können: Setup, Erklärung der Verzeichnisstruktur und erforderlichen Ressourcen.
In den Lektionen 1 bis 5 wird eine solide Basis für die Entwicklung von
Dokumentenanwendungen mit Papyrus Designer gelegt. Der Entwickler erwirbt im Laufe der
Lektionen die erforderlichen theoretischen Kenntnisse ebenso wie praktische Erfahrung im
Erstellen von schrittweise an Komplexität zunehmenden Dokumentenanwendungen.
Die sechste Lektion widmet sich ausschließlich Benutzerabfragen (Prompting). Mit dieser
Funktionalität können Applikationen erstellt werden, die es dem Benutzer ermöglichen,
einzelne Dokumente im Papyrus Client zu modifizieren.
Lektion 7 zeigt, wie PPFA-code in den Papyrus Designer importiert und konvertiert werden
kann.
Dieses Handbuch wurde mit Papyrus Designer entwickelt und soll somit auch als Beispiel für
die Vielfalt an möglichen Dokumenten dienen, die mit Papyrus Designer gestaltet werden
können.

1.1 Aufbau des Kurshandbuchs


Die Kapitel dieses Kurshandbuchs bestehen aus Teilen, die sich theoretisch dem Thema
nähern und praktischen Lektionen. Idealerweise dienen die Theoriekapitel dazu, das für die
nachfolgenden Lektionen erforderliche Wissen zu vermitteln.
Die grafische Gestaltung des Kurshandbuchs erlaubt eine schnelle und einfache
Unterscheidung von Theoriekapiteln und praktischen Lektionen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 1, S. 1


2/308 Vorwort

In der Kopfzeile jeder Seite bezeichnen die folgenden Symbole die jeweilige inhaltliche
Ausrichtung eines Abschnitts:

Theoriekapitel

Praxiskapitel (Lektionen)

Zusatzaufgaben und Zusatzlektionen


Bei den Zusatzaufgaben bzw. den Zusatzlektionen handelt
es sich um weiterführende praktische Übungen, mit denen
der bisher vermittelte Lerninhalt vertieft werden kann. Sie
sind insbesondere für erfahrenere Teilnehmer geeignet, die
selbständig versuchen wollen, Aufgaben zu lösen. Die
Erfüllung der Zusatzaufgaben/Zusatzlektionen ist jedoch
nicht Voraussetzung für die jeweils folgenden regulären
Lektionen.

Zusätzlich kann zwischen theoretischen und praktischen Kapiteln des Kurshandbuchs an


Hand der Darstellung der äußeren Randlinie unterschieden werden.

Kap. 1, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Vorwort 3/308

Die Randspalte kann für persönliche Notizen verwendet werden und zeigt außerdem durch
weitere Symbole Textstellen an, die besonderer Aufmerksamkeit bedürfen:

Mit diesem Symbol werden Hinweise und Tipps


gekennzeichnet, die zum besseren Verständnis dienen

Besonders wichtige Hinweise und Warnungen erhalten


dieses Symbol

Am Ende einer Lektion finden sich neben diesem Symbol


Fragen zur Selbstkontrolle des erworbenen Wissens

Anhand dieses Symbols kann der Beginn einer praktischen


Aufgabe erkannt werden

Falls innerhalb eines Praxiskapitels längere Erläuterungen


notwendig sind, wird der entsprechende Abschnitt mit
diesem Symbol gekennzeichnet

Angaben in Kopf- und Fußzeile


In der Kopfzeile jeder Seite wird zur schnelleren Orientierung der Titel des jeweiligen Kapitels
dargestellt. Am äußersten Rand findet sich die Seitenzahl sowie die Gesamtzahl der Seiten
des Kurshandbuchs. In der Fußzeile wird die Dokumentnummer, der Name des
Kurshandbuchs und die fortlaufende Kapitelnummerierung sowie eine kapitelbezogene
Seitenzahl angegeben.
Pfadangaben
Die Pfadangaben in diesem Kurshandbuch dienen nur als Beispiel (z.B.
C:\ISIS_POAdminCourse ) und müssen an den jeweiligen Installationpfad angepasst werden.

Sprache der Benutzeroberfläche


In diesem Kurshandbuch wird davon ausgegangen, dass die Benutzeroberfläche in
englischer Sprache verwendet wird. Die Abbildungen zeigen daher die verwendeten
Programme mit englischer Oberfläche. Menübefehle oder Schaltflächen werden mit ihren
englischsprachigen Bezeichnungen im Kurshandbuch angeführt. Ebenso sind
Tastenbezeichnungen mit englischen Namen versehen:

Englisch Deutsch
Ctrl Strg
Shift Umschalttaste
Del Entf
Enter Eingabetaste

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 1, S. 3


4/308 Kursprogramm

2.0 Kursprogramm
2.1 Erster Tag

Grundlagen

“ Das Papyrus Dokumentensystem


“ Einführung in AFP

Lektion 0

“ Einführung in Papyrus Designer


“ Voraussetzungen und Setup

Lektion 1

“ Projektdefinition
“ Analyse der Eingabedaten
“ Grundlegender Entwurf eines Dokuments
“ Festlegen der Input und Output-Definition
“ Einlesen der Eingabedatei
“ Einfache Ausgabe von Daten im Dokument
“ Generieren des Dokuments mit Papyrus Designer und DocEXEC

Lektion 1A

“ Kontrollstrukturen: SELECT-CASE

Lektion 1B

“ Importieren von TIFF und JPEG-Dateien in das Dokument

2.2 Zweiter Tag

Lektion 2

“ Einfügen eines Logos in das Dokument


“ Erzeugen von Kopien des Originaldokuments
“ Dateneingabe im EBCDIC Format
“ Einlesen gleichartiger Datensätze
“ Erstellen einer Tabelle mit TABLE/COLUMN
“ Erstellen einer dynamischen Fußzeile
“ Seitenumbruchkontrolle: Witwen und Waisenkinder

Lektion 3

“ Steuern der Papierzufuhr am Drucker


“ Erstellen einer Tabelle mit OUTLINE-Schleife
“ Abwechselnd unterschiedlich gefärbte Tabellenzeilen erstellen
“ Berechnung und Ausgabe von Zwischenergebnissen einer Tabelle
“ Seitenumbrüche in der Mitte einer Tabelle behandeln
“ Erstellen eines Reports mit System Document Formats

Kap. 2, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Kursprogramm 5/308

2.3 Dritter Tag

Lektion 4

“ Datenanalyse: Multibyte-Channel-Code
“ Dokumentenstruktur: Externe DOCFORMATs
“ Sortieren von Tabellen
“ Editieren von Text: Unnummerierte und nummerierte Listen
“ Editieren von Text: TEXTSTYLE
“ Importieren von Barcodes
“ Importieren von Tabellen-Diagrammen

2.4 Vierter Tag

Lektion 5

“ Datenanalyse: Verwenden von Record-Ids


“ Deklarieren von dynamischen Variablen und Verwendung von referenziellen
Ausdrücken
“ Importieren externer Texte in das Dokument
“ Unterstützung für mehrere Sprachen (Lokalisierung)

Lektion 5A

“ Erstellen eines Indexes und eines Inhaltsverzeichnisses

Lektion 5B

“ Definieren von Umgebungsvariablen im Papyrus Designer


“ Ausgabe des Reports als Non-AFP-Datei
“ Einfügen von Kommentaren

Lektion 6

“ Erstellen einer interaktiven Anwendung für Papyrus Client


“ Einfügen von STICKERs in das Dokument

2.5 Fünfter Tag

Lektion 7

“ Importieren einer PPFA in den Papyrus Designer

Lektion 8

“ Papyrus WebRepository Beispielanwendung


“ Papyrus Versionsverwaltung
“ Vorteile der Resource Collection in verteilten Systemen

Zusammenfassung des Kurses

Einführung in Papyrus Postprocessing

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 2, S. 2


6/308 Kursprogramm

Kap. 2, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einleitung 7/308

3.0 Einleitung

3.1 Das Papyrus Dokumentensystem

3.1.1 Konzepte und Ziele


ISIS Papyrus ist ein Dokumententwicklungs- und Verwaltungssystem im
Großsystem-Bereich.
Es verwendet den AFP-Datenstrom (AFP=Advanced Function Printing), der auf MO:DCA
(Mixed Object:Documents Contents Architecture) basiert (von IBM definiert und
veröffentlicht).
Die gleiche Papyrus Komponente kann auf dem Host, dem Server, aber auch auf einem
Anwender-PC laufen.
Jede Komponente der Papyrus-Produktfamilie ist ein eigenständiges Produkt. Es ist daher
nicht erforderlich, in alle Papyrus-Komponenten gleichzeitig zu investieren. Papyrus wurde
als modulares System entwickelt und erlaubt dadurch eine stetige und kontrollierte
Erweiterung.
Papyrus Objects (auf OMS-Technologie basierend) und Papyrus Desktop bilden zusammen
eine übergeordnete infrastrukturelle Komponente für die Steuerung und Verwaltung aller
anderen Komponenten:

“ Ressourcen Management
“ Version Control
“ Workflow Management
“ Produktautorisierung

3.1.2 Die Komponenten des Papyrus Systems


Das ISIS Papyrus Dokumentensystem besteht aus mehreren Komponenten:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 3, S. 1


8/308 Einleitung

Abbildung 1: Komponenten des Papyrus Systems - Designer und DocEXEC sind farblich
hervorgehoben

Papyrus Designer
Graphische Entwicklungsumgeben zur schnellen und flexiblen Erstellung von
Dokument-Anwendungen (DocEXEC DOCDEF Code).
Papyrus DocEXEC
Der Papyrus Text- und Seitenformatierer. Papyrus DocEXEC stellt das Rückgrat von
Papyrus Designer und Papyrus Client dar: Bei der Gestaltung oder Modifikation von
Dokumenten mit Papyrus Designer (bzw. Papyrus Client) läuft die gleiche DocEXEC im
Hintergrund wie später in der Produktionsumgebung.
Papyrus Server
Transfer des AFPDS in den gewünschten Druckdatenstrom auf den gewünschten
Produktionsdrucker bzw. in andere Ausgabekanäle (z.B. PCL, PostScript, Fax, E-Mail,
PDF, TIFF, Archiv-Interfaces).
Papyrus WebRepository
Papyrus WebRepository basiert auf der von Papyrus Objects zur Verfügung gestellten
Systeminfrastruktur und erlaubt Steuerung und Verwaltung sowohl aller Dokumententypen
und der zugehörigen Geschäftsprozesse als auch Benutzerverwaltung über Plattformen
und Ausgabekanäle (output channels) hinweg.

“ Integriertes Print-Management mit WebControl: Domänenweites Druck-, Job-,


Warteschlangen- und Spool-Management auch über unterschiedliche Plattformen und
Ausgabekanäle hinweg.
“ Zentrale Ressourcenverwaltung: Verwaltung aller für die Erstellung von Dokumenten
erforderlichen Ressourcen (Fonts, Graphiken, Logos, Overlays) mit automatischer
Verteilung der Ressourcen und Versionskontrolle.

Kap. 3, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einleitung 9/308

“ Applikationsentwicklung: Speziell an Kundenbedürfnisse angepasste Objekte


repräsentieren Komponenten der Business-Anwendung.
“ Versionskontrolle: Objektzustände bestimmen die Gültigkeit von Ressourcen und
Arbeitsablaufstrukturen.
“ Veränderungsmanagement (change management): strenge Trennung von
Entwicklung, Test und Produktion innerhalb der gesamten Domäne.
“ Domänenverwaltung: Es gibt keine Beschränkung für die Anzahl möglicher Knoten.
“ Benutzerverwaltung: Die Benutzer-Autorisierung folgt einem Konzept, das auf der
Unterscheidung von Rollen, Gruppenrichtlinien und Benutzerrechten beruht.
“ Entwicklung von GUI-Anwendungen für maßgeschneiderte Benutzerschnittstellen
“ Sicherheit: Sicherheits- und Kontrollmechanismen erstrecken sich über den gesamten
Lebenszyklus des Produkts.
“ Backup: Datensicherung für 24 Stunden, 7 Tage in der Woche
“ Mächtige Skriptsprache: das System unterstützt den Einsatz von PQL (Papyrus
Query Language)
“ Datenspeicherung (Depot): Proprietäre Datenbank macht Einsatz von Datenbanken
durch Drittanbieter überflüssig.
Papyrus Host für OS/390 - z/OS
Zentrale oder dezentrale Dokumentenverarbeitung und/oder -Verteilung (Routing). Die
Papyrus-Schnittstelle für JES2/3 (STC), CICS und MQSeries.
Papyrus Output Management/PostProcessing
Verwalten, Archivieren, Zusammenführen und Nachdrucken von Dokumenten in
verschiedenen Ausgabekanälen.
Papyrus WebArchive

“ Zugriff auf Dokumente mit Internet- und Intranettechnologie (basierend auf Papyrus
WebRepository)
“ Archivierung inklusive GIF-, TIFF- und PDF-Konvertierung "on the fly" während
Check-In bzw. Check-Out
Papyrus Client
Graphische Benutzerschnittstelle für Client/Server-Geschäftsanwendungen, die die
Ansicht von Dokumenten sowie das Erstellen standardisierter Dokumente erlaubt.
Papyrus Client unterstützt folgende Features:

“ Ansicht aller formatierten AFP-Dokumente einschließlich AFP Raster- und


Vektor-Schriften.
“ Interaktives Formatieren dynamischer Dokumente mit Eingabeaufforderungen
(Prompting) sowie das Editieren von Textblöcken
“ Ansicht, Ausfüllen und Drucken elektronischer Formulare
“ Erstellung von ACIF-Indizes (TLE) sowie Volltext-Suchfunktionen
“ direktes Ausdrucken aller AFP-Dokumente durch beliebige Drucker mit Hilfe von
Windows-Druckertreibern
“ Ausdrucken von AFP-Dokumenten auf PCL-Druckern

Papyrus Objects
Papyrus Objects bildet die infrastrukturelle Papyrus-Komponente für die Steuerung und
Verwaltung aller Papyrus-Prozesse, wobei Papyrus Desktop als graphische
Benutzerschnittstelle fungiert. Papyrus WebRepository basiert auf der von Papyrus
Objects zur Verfügung gestellten Systeminfrastruktur.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 3, S. 3


10/308 Einleitung

Papyrus Capture
Papyrus Capture ist ein Hochleistungssystem für die automatisierte Erkennung und
Erfassung von eingehenden Geschäftsdokumenten, um gedruckte Dokumente (z.B. Faxe,
Zahlscheine, Briefe, etc.) in elektronische Daten umzuwandeln; die einzelnen
Arbeitsschritte laufen hierbei weitgehend automatisch ab. Die extrahierten Daten werden
mit einer Datenbank verifiziert, nicht erkannte Felder können editiert oder mit bereits in
einer Datenbank vorhandenen Einträgen beschrieben werden.
Papyrus Capture System kann über Papyrus WebRepository mit
Outbound-Dokumentenanwendungen verbunden werden, um einen geschlossenen Kreis
von Anwendungen für Case-and-Response-Management zu bilden.
Papyrus Classify
Papyrus Classify ist ein selbstlernendes Programm zur Klassifizierung von Dokumenten
aller Art (z.B. Lieferscheine, Rechnungen, Bewerbungsbögen etc.), um diese automatisch
zu sortieren und zu verteilen. Dokumente, deren Klassifizierung nicht möglich war, können
zum Nachtrainieren in der laufenden Produktionsumgebung verwendet werden. Auf diese
Weise ist eine kontinuierliche Optimierung möglich.
Papyrus FreeForm®
Papyrus FreeForm® ist wahlweise für Papyrus Capture erhältlich und ermöglicht eine
weitgehend automatische Verarbeitung von unstrukturierten und strukturierten
Dokumenten. Es verfügt über selbstlernende Verfahren für die Datenextraktion. Papyrus
FreeForm® basiert auf der Mustererkennung und verwendet modernste Techniken in den
Bereichen Schrifterkennung (OCR, ICR, Voting), assoziative Datenbanken, Fuzzy Logic
und neuronale Netzwerke. Extraktions- und Klassifikationsregeln können automatisch
oder durch den erfahrenen Benutzer trainiert werden, indem dieser die relevanten Felder
auswählt ("Learning by Example"). Zur Erkennung relevanter Felder ist im Gegensatz zu
konventionellen Methoden der automatischen Formularverarbeitung nicht die exakte
Position der einzelnen Felder nötig. Die Qualität der Daten wird weiter gesteigert, indem
eine automatische Plausibilitätsprüfung zur Anwendung kommt.
Papyrus FreeForm® bietet die folgenden Funktionsmerkmale:

“ Verarbeiten von Dokumenten unbekannten Formats


“ Klassifizieren und Sortieren inhomogener Dokumentenfolgen
“ Kombination von Methoden für traditionelles Scanning mit Volltextanalyse von freien
Textfeldern
“ Integrierte Umgebung für Definition und Erkennung von Mustern durch interaktives
Bestimmen von Regeln, Parametern und Bereichen mit unmittelbarer Verifikation durch
Datenbankzugriff.

Kap. 3, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einleitung 11/308

3.1.3 Papyrus Designer und Papyrus DocEXEC

Abbildung 2: Erstellen eines Dokuments mit Papyrus Designer und DocEXEC im Flussdiagramm

Der Fokus dieses Kurses liegt auf der Erstellung dynamisch formatierter Dokumente mit
Papyrus Designer. Die Abbildung oben zeigt das Zusammenspiel von Papyrus Designer und
Papyrus DocEXEC beim Erstellen eines AFP-Datenstroms.
Die Architektur von ISIS Papyrus ermöglicht es, alle Aspekte des Dokumentenprozesses
durchzuführen. Die Fähigkeit, Dokumente in vielen Standard-Formaten zu entwickeln, zu
verwalten und zu produzieren, beruht in hohem Maße auf dem Einsatz der IBM
AFP-Architektur für alle Kern-Prozesse innerhalb der Papyrus Produkt-Palette.
IBM AFP ist eine komplett dokumentierte, voll unterstützte und offene Architektur, die in
weiten Bereichen der Dokumentenprozesse in Großunternehmen als Standard etabliert ist.
Alle Ressourcen (wie z.B. Fonts, Bilder und Overlays) und Funktionen (z.B. Indizierung), die
von Papyrus Produkten verwendet werden, folgen der IBM AFP-Struktur. Es erübrigt sich
daher, mehrfach Kopien der Ressourcen intern proprietär zu speichern und zu verwalten. Die
AFP-Ressourcen auf dem Host werden unverändert verwendet, wodurch die absolute
Originaltreue der Dokumente garantiert ist, egal ob sie gedruckt, archiviert oder auf einem
Bildschirm angezeigt werden. AFP basiert auf MO:DCA (Mixed Object:Documents Contents
Architecture), definiert und veröffentlicht von IBM. MO:DCA beschreibt alle zum Drucken
benötigten Ressourcen wie Fonts, Logos, Formulare, graphische Elemente, etc.
Das im obigen Diagramm dargestellte Modell enthält folgende Elemente:

“ Papyrus Designer (Entwicklungsumgebung)


“ DOCDEF (Quellcode, der vom Papyrus Designer entworfen wird)
“ Papyrus DocEXEC (Programm hinter dem Papyrus Designer)
“ Daten (gewöhnlich handelt es sich dabei um ASCII- oder EBCDIC -Dateien)
“ Ressourcen (Code Pages, Fonts, Pagesegments, Overlays)
“ AFP-Datei (Standard-Ausgabedateiformat)

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 3, S. 5


12/308 Einleitung

Schritt 1: Entwicklung
Der Entwickler erstellt mit dem Papyrus Designer eine DOCDEF.
Schritt 2: Kompilierung
Papyrus DocEXEC erzeugt durch Kompilieren der DOCDEF den Objektcode.
Schritt 3: Produktion
Papyrus DocEXEC nimmt den Objektcode und erzeugt einen AFP-Datenstrom und zieht
dafür die benötigten Ressourcen heran. Der AFP-Datenstrom kann danach entweder an
einen geeigneten Drucker oder an eine Papyrus Server-Anwendung weiter geleitet
werden.

Papyrus Designer ist eine Applikation mit grafischer Benutzerschnittstelle (GUI) zur
Erstellung von Dokument-Anwendungen. Bei Papyrus DocEXEC handelt es sich um
eine Kommandozeilenanwendung zur Batchverarbeitung bzw. zur Integration in
Papyrus WebRepository.

3.2 AFP (Advanced Function Presentation)


3.2.1 Was ist AFP?
Advanced Function Presentation (auch: Advanced Function Printing - AFP) ist eine
Präsentationsarchitektur für eine von bestimmten Programmen oder Geräten unabhängige
Dokumenten- und Informationsdarstellung und somit ein Format für den Druckdatenstrom im
Rahmen der Herstellung von Massendruckstücken. AFP basiert auf MO:DCA "Mixed
Object:Document Content Architecture", definiert und veröffentlicht von IBM.
Die AFP-Architektur besteht selbst aus einer Anzahl von Subarchitekturen:

“ MO:DCA beschreibt alle zum Drucken benötigten Ressourcen wie Fonts, Logos,
Formulare, graphische Elemente, Bilder, Zeilendaten etc. MO:DCA wird auch als
AFPDS (AFP-Datenstrom) bezeichnet.
“ BCOCA (Bar Code Object Content Architecture) dient zur Beschreibung und Erzeugung
von Bar-Codes.
“ GOCA (Graphics Object Content Architecture for AFP) dient zur Beschreibung und
Erzeugung von Vektorgraphiken.
“ IOCA (Image Object Content Architecture) dient zur Definition und Erzeugung von
Rastergraphiken.
“ PTOCA (Presentation Text Object Content Architecture) dient zur Definition und
Erzeugung von Text.
“ FOCA (Font Object Content Architecture) ist eine Ressourcen-Architektur für die
Beschreibung von Struktur und Inhalt von Fonts, die im Dokument durch Datenobjekte
referenziert werden.
“ CMOCA (Color Management Object Content Architecture) definiert die Ressourcen, die
Informationen für die Farbverwaltung enthalten.
Die Spezifikationen für alle AFP-Subarchitekturen finden sich auf
http://publib.boulder.ibm.com/cgi-bin/bookmgr/LIBRARY
AFP unterstützt auch Standard-Datenformate wie TIFF und JPEG, indem es sie als
AFP-Objekte integriert. Diese Objekte können zusammen mit eigentlichen AFP-Objekten wie
BCOCA, AFP GOCA, IOCA und PTOCA verwendet werden.

Kap. 3, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einleitung 13/308

3.2.2 Die Standardelemente von AFP

3.2.2.1 Overlay (Formular)


Ein Overlay wird in OGL (Overlay Generation Language) erstellt und besteht aus den
folgenden Elementen:

“ Formulardesign-Elemente
“ Linien unterschiedlicher Stärke und Art
“ Boxen unterschiedlicher Stärke und Art
“ Kreise unterschiedlicher Stärke und Art
“ Bitmap Images (schwarz-weiß, Liniengrafik, Halbtöne)
“ Grafiken
“ Rotationen
“ Wiederholung von Linien und Boxen
“ Text
“ Mehrere Overlays können auf einer physischen Seite kombiniert werden.

3.2.2.2 Form Definition


Die Form Definition (FormDef) beschreibt das physische Blatt.

Abbildung 3: Form Definition

“ Platzierung logischer Seite(n) (N_UP)


“ Ein-/beidseitiger Druck (simplex/duplex)
“ Papierfach
“ Kopien pro Seite
“ Anzahl der Kopien
“ Auswahl der Overlays
“ Unterdrückungen beim Druck

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 3, S. 7


14/308 Einleitung

3.2.2.3 Page Definition


Die Page Definition (PageDef) beschreibt die logische Seite.

Abbildung 4: Page Definition (Seitenlayout)

“ Dimensionen, Rotationen
“ Aufteilung der physischen Seite(n) in mehrere logische Seiten (Multi Up)
“ Aufteilung und Platzierung von Druckzeilen (PRINTLINEs) und Feldern (FIELDs)
“ Bedingte Verarbeitung
“ Steuerzeichen (Channels Code)
“ Unveränderlicher Text
“ Auswahl der Fonts

3.2.2.4 AFP Fonts


AFP Fonts bestehen aus drei Elementen.

Zeichensatz Der Zeichensatz enthält für jedes Zeichen ein Bitmap.


Jedes Zeichen hat einen Namen.

Codepage Die Codepage (oder Codepage Tabelle) beinhaltet die


Beziehung zwischen dem Namen eines Zeichens und einer
bestimmten Stelle (Zeile und Spalte der Tabelle) in einer
Tabelle. Sie ist landes- oder sprachspezifisch
unterschiedlich.

Font Font (oder Coded Font) kombiniert den Zeichensatz mit


einer Codepage Tabelle. Verschiedene sprachspezifische
Fonts können mit einem bestimmten Zeichensatz und
unterschiedlichen Codepage Tabellen erstellt werden.

Raster Fonts (Bitmap Fonts)

“ 240 dpi mit üblichen Host-Laserdruckern (IBM3800, IBM3900).


“ 300 dpi mit neueren Host-Laserdruckern und dezentralen PC-Druckern.
“ Papyrus Designer arbeitet mit AFP-Bitmap-Fonts und gewährleistet damit
WYSIWYG-Qualität der Bildschirmdarstellung. Ein Pixel Element auf dem Bildschirm
entspricht einem Punkt auf dem Papier.
“ Raster Fonts können mit dem ISIS OverView Font Editor bearbeitet werden.
“ Papyrus Client ermöglicht die punktgenaue Darstellung von AFP-Dokumenten mit
AFP-Raster Fonts. Die Erstellung von Umwandlungstabellen für Fonts ist daher nicht
erforderlich.
“ Raster Fonts können in höherer Auflösung gedruckt werden (600 dpi).
“ Raster Fonts werden meist schneller als Outline Fonts gedruckt.

Kap. 3, S. 8 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einleitung 15/308

Vektorschriften (Outline Fonts)

“ Basieren technisch auf DTP.


“ TrueType und Adobe sind die meist verwendeten Outline-Fontformate.
“ Eine einzige Font-Datei ist gültig für verschiedene Schriftgrößen.
“ Der Outline Font wird vor dem Druck in ein Bitmap umgewandelt. Das erfordert hohe
CPU-Leistung und großen Druckspeicher.
“ Die Font-Definition selbst ist unabhängig von der Auflösung, in der Praxis gibt es jedoch
keine auflösungsunabhängigen Dokumente.
“ Der ISIS Papyrus Font Converter konvertiert Outline Fonts (Adobe und TrueType) in
AFP Raster Fonts.
“ Papyrus unterstützt Outline Fonts.

3.2.2.5 Pagesegmente
Logos, Bilder, Unterschriften etc. müssen als AFP-Pagesegmente vorhanden sein, d.h. in
Schwarz/Weiß (1 bit) oder im FS45 IOCA Format (für farbige Bilder).

3.2.3 Namenskonventionen
Die Namen von AFP-Ressourcen dürfen aus nicht mehr als 8 Zeichen bestehen, von denen
bereits zwei Zeichen für das obligatorische Präfix belegt sind.
Diese Präfixe und die jeweiligen Dateinamenserweiterungen lauten wie folgt:

Pagesegments Präfix: S1; Dateinamenserweiterung: z.B. 240, 300, psg

Overlays Präfix: O1; Dateinamenserweiterung: ovl

Form Definitions Präfix: F1; Dateinamenserweiterung: fdf

Page Definitions Präfix: P1; Dateinamenserweiterung: pdf

Raster Fonts Präfix: X0 für Bounded Fonts (bounded-box Fonts haben ein
Rastermuster je Zeichen; dieses Rastermuster wird für alle
16 Kombinationen von Zeichendrehung und Druckrichtung
verwendet); X0, X1, X2, etc. für Unbounded Fonts
(Rastermuster für jede Kombination von Zeichendrehung
und Druckrichtung). Dateinamenserweiterung: fon

Outline Fonts Präfix: XZ; Dateinamenserweiterung: fon

Codepage-Tabellen Präfix: T1; Dateinamenserweiterung: cdp

Character sets für Raster Präfix: C0; für Bounded Fonts, C0, C1, C2, etc. für
Fonts Unbounded Fonts. Dateinamenserweiterung: chs

Character Sets für Outline Präfix: CZ; Dateinamenserweiterung: chs


Fonts

Der Ort, an dem die Ressourcen zu finden sind, wird in Papyrus Designer im Default
Library Profile default.lbp, im Bibliotheksprofil, definiert. Dort sind Pfad, Verzeichnis
und, in spitzen Klammern, die Dateinamenserweiterung angeben, die zu den
Ressourcen führen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 3, S. 9


16/308 Einleitung

3.2.4 Unterschiede zwischen PPFA und DOCDEF


DOCDEF wurde als Erweiterung von PPFA (Page Printing Formatting Aid) für die Produktion
von dynamischen Dokumenten entwickelt, wie sie in der modernen Geschäftswelt benötigt
werden.
Für das Verständnis von DOCDEF ist die Kenntnis von PPFA nicht Voraussetzung, dadurch
sind aber die Stärken von DOCDEF im Vergleich zu PPFA besser zu erkennen.
DOCDEF verfügt über viele zusätzliche Funktionen, die nicht nur die entsprechenden
PPFA-Funktionen erweitern, sondern auch zahlreiche neue Funktionen in Form von
Befehlen, String- und numerischen Funktionen, Konvertierungen, Kalkulationen, Grafiken und
Diagrammen bieten.
Der konzeptuelle Unterschied zwischen DOCDEF und PPFA erlaubt die Erstellung
dynamischer Dokumente.
Konzeptuelle Unterschiede
Das Konzept von PPFA besteht aus dem Einlesen von Eingabedaten aus einer Datei, der
Formatierung der Daten und der Ausgabe als AFP-Datenstrom in eine AFPDS-Datei, die auf
vorgefertigten "vorgedruckten" Formularen (Blättern mit Overlays) gedruckt wird.
Der gesamte Formatierungsprozess von PPFA ist vorbestimmt, seine Abfolge hängt direkt
von den Daten der Eingabedatei ab.
PPFA bietet lediglich ein Mindestmaß an Flexibilität mit Hilfe der Einbindung sehr
eingeschränkter Bedingungen in den Verarbeitungsprozess. Das Ergebnis ist eine starre
Folge formatierter Blätter, jedoch nicht das, was allgemein unter "Dokument" verstanden
wird.
Ein Dokument, das mit DOCDEF erstellt wurde, besteht aus verarbeitungsspezifischen
Blättern, deren Abfolge bestimmt und dynamisch ausgewählt werden können. Die Anzahl der
Blätter, ihr Inhalt und ihre Abfolge werden durch die Verwendung und Wiederaufnahme der
Daten für einen bestimmten DOCDEF-Lauf wie auch durch die interne Verarbeitung der
Daten bestimmt.
Eingabedaten
DOCDEF ermöglicht die mehrmalige Verwendung von Daten, indem jede Art von
Zeilendatensätzen eingelesen und die einzelnen Felder in indizierten Variablen gespeichert
werden können.
Die Eingabedatensätze können in ASCII- oder EBCDIC-Format in jeder beliebigen Codepage
mit oder ohne Channel Code vorliegen.
Interne Verarbeitung
Die interne Verarbeitung übernehmen neue Befehle, String- und numerische Funktionen,
Konvertierungen, Kalkulationen etc. Bedingungen können über IF/THEN/ELSE-Logik
eingebaut werden.
Jedes Dokument umfasst formatierte (errechnete) Daten, komplexe Textblöcke,
Pagesegmente, TIFFs, Overlays etc.
Farb- und Schattierungsunterstützung
Die Farbunterstützung bezieht sich auf Dokument- und Komponenten-Ebene und basiert
nicht nur auf den Standard-Grundfarben blau, rot, grün, magenta, türkis, gelb, braun und
schwarz, sondern kann auch (in Laufzeit) vom Benutzer definiert werden. Zusätzlich werden
mehrere Schattierungstypen unterstützt. Die Steuerung von Farben und Schattierungen wird
(in Laufzeit) sowohl für die Schattierungstypen und Farben eines Teiles oder Textes als auch
für die Abfolge und Zahl der verschiedenen Schattierungstypen und Farben unterstützt. Das
heißt, der Benutzer hat die volle Kontrolle über Farben und Schattierungen in Laufzeit.

Kap. 3, S. 10 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einleitung 17/308

Felder und Variablen


Die Inhalte von Eingabefeldern und Variablen können nicht nur wie mit PPFA formatiert und
ausgegeben, sondern auch mit Hilfe von Ersetzungstabellen ausgetauscht, in Berechnungen
wie Additionen weiterverarbeitet, in die Steuerung mittels IF-THEN-ELSE-Bedingungen
eingebaut, in komplexe Textelemente eingebaut werden etc.
Seitenumbrüche, Kopf- und Fußzeilen
DOCDEF bietet komplexe Möglichkeiten für Seitenumbrüche.
Die Verarbeitung von Kopf- und Fußzeilen ist auf Befehls- wie auf Seitenebene verfügbar.
Fortlaufende Fußzeilen bieten z.B. die Möglichkeit zur fortlaufenden Paginierung.
Ausgabe (Output)
DOCDEF ermöglicht die Erstellung mehrerer AFPDS Dateien in einem Durchlauf.
Simultan kann DOCDEF andere (nicht-AFPDS) Dateien wie z.B. Logdateien erstellen.
Externe AFPDS-Dateien können beim Erstellen eines Dokuments eingebaut werden.
Datenbankzugriff
Die Speicherung und Abfrage von SQL-Datenbanken oder Papyrus Objects Depot erlaubt die
Archivierung und die Wiederherstellung von Dokumenten und dazugehörigem Material.
Zusammenfassung
Somit kann eine einzelne DOCDEF unbeschränkt viele verschiedene Dokumente erstellen,
wobei als Entscheidungsfaktor z.B. eine Bedingung für ein Eingabedatenfeld, aber auch eine
interne Berechnung dienen kann.

3.3 Fragen zum einführenden Kapitel


“ Welche Ressourcen werden für einen AFP benötigt?

.................................................................................................................................

“ Welche sind die wichtigsten Unterschiede zwischen PPFA und DOCDEF?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 3, S. 11


18/308 Lektion 0: Einstieg in Papyrus Designer

4.0 Lektion 0: Einstieg in Papyrus Designer

In dieser einführenden Lektion werden die verschiedenen Elemente der Programmoberfläche


(Fenster, Toolbars etc.) von Papyrus Designer näher vorgestellt und die Bedienkonzepte
erläutert. Darüber hinaus wird auf einige Aspekte der Konfigurationsdateien eingegangen.

4.1 Erste Schritte mit Papyrus Designer


Zur Ansicht wird Papyrus Designer mit der fertig vorbereiteten Lektion 1 über das Windows
Startmenü geöffnet:
Start | All Programs | ISIS Papyrus Designer & DocEXEC Workshop | Lesson 1

Dieser Eintrag im Startmenü ruft ein Kommandozeilenskript aus


<Kursinstallationsverzeichnis>\cmd
auf. Das Skript sorgt für das Setzen der notwendigen Umgebungsvariablen und die
Verwendung der benötigten Profildateien und stellt somit die korrekte Funktion der
Kursumgebung - unabhängig von eventuell vorhandenen anderen ISIS-Installationen - sicher.

Es wird dringend empfohlen, die Verknüpfungen im Windows Startmenü zu


verwenden, um die Beispiele im Rahmen dieses Kurses zu öffnen!
Die Werkzeugleisten und Fenster des Papyrus Designer stellen unter anderem folgende
Funktionalitäten zur Verfügung:

“ Visueller Code-Editor und Logikbaum


“ Drag & Drop-Symbolleisten für DOCDEF-Befehle und Definitionen
“ 100%ig genaue Dokumentdarstellung im Vorschaufenster (WYSIWYG)
“ Eingabedaten-Anzeige

4.1.1 Das Hauptfenster


Das Hauptfenster beinhaltet Menüs und Werkzeugleisten und fungiert als Container für die
Unterfenster. Zu den wichtigsten Unterfenstern gehören das Vorschaufenster ("View
Document") und die beiden Logikbaum-Editoren ("Document Format Definitions",
"FormatGroupDefinitions").

Kap. 4, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 19/308

Die Oberfläche von Papyrus Designer präsentiert sich mit einem geöffneten Projekt in etwa
folgendermaßen:

Abbildung 5: Hauptfenster des Papyrus Designer

Die Unterfenster können mit Hilfe der Maus frei platziert bzw. verkleinert und vergrößert
werden. Die üblichen Symbole in den Titelleisten der einzelnen Fenster erlauben auch die
Minimierung bzw. Maximierung einzelner Unterfenster. Auf diese Weise lässt sich die
Arbeitsoberfläche nach eigenen Wünschen bzw. den jeweiligen Anfordernissen anpassen.
Der Menüpunkt WINDOW kann dazu verwendet werden, Unterfenster in den Vordergrund zu
bringen:

Abbildung 6: Ein offenes Unterfenster kann über "Window" ausgewählt werden

4.1.2 Werkzeugleisten
Um Dokumentformat-Definitionen (DOCDEFs) zu entwerfen, werden die geeigneten Symbole
für die Anweisungen aus den Werkzeugleisten ausgewählt und in die Logikbaum-Editoren
bewegt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 2


20/308 Lektion 0: Einstieg in Papyrus Designer

Abbildung 7: Schaltflächen für die Werkzeugleisten im Palettenmodus

Wenn die Schaltflächen für die Werkzeugleisten nicht bereits auf der Titel- oder der
Menüleiste des Hauptfensters sichtbar sind, können die gewünschten Werkzeugleisten über
WINDOW | TOOLBARS mit einem Haken markiert werden.

Abbildung 8: Auswahlliste für die Wahl einer Toolbar im Menü "Window"

Mit einem Klick auf eine der Werkzeugleisten-Schaltflächen öffnet sich ein Fenster mit einer
Anzahl von Symbolen, die die Anweisungen repräsentieren, mit denen
Dokumentformat-Definitionen (DOCDEFs) auf einfache Weise erstellt werden können. Diese
Art der Darstellung der Werkeugleiste wird in Papyrus Designer als Palettenmodus
bezeichnet.
Die wichtigsten drei Werzeugleisten sind im Folgenden dargestellt:

Die Werkzeugleiste "Definitions"

Abbildung 9: Toolbar "Definitions"

Kap. 4, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 21/308

Die Werkzeugleiste "Frequent commands"

Abbildung 10: Toolbar "Frequent commands"

Die Werkzeugleiste "Special commands"

Abbildung 11: Toolbar "Special commands"

Anpassen der Werkzeugleisten

Abbildung 12: Öffnen eines Kontextmenüs mit der rechten Maustaste

Mittels Rechtsklick auf eine der Werkzeugleisten-Schaltflächen können die Werkzeugleisten


angepasst werden. Der Menüpunkt EDIT TOOLBAR erlaubt das Einstellen von
Symbolgröße, Werkzeugleisten-Layout etc. sowie das Hinzufügen und Entfernen von
Symbolen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 4


22/308 Lektion 0: Einstieg in Papyrus Designer

Abbildung 13: Einstellungsmöglichkeiten im Fenster "Edit ToolBar"

In den Werkzeugleisten "Frequent commands", "Special commands" und "Definitions"


sollten keine Symbole hinzugefügt oder entfernt werden. Die zusätzliche
Werkzeugleiste "User toolbar" ist für persönliche Anpassungen vorgesehen.
Ein Rechtsklick auf eine Werkzeugleisten-Schaltfläche erlaubt auch das Verschieben der
Schaltfläche und damit eine Positionsänderung der gesamten Werkzeugleiste: Durch
Drücken und Halten der rechten Maustaste wird die Schaltfläche mit einem dicken Rahmen
umgeben und kann frei zu einem anderen Ort bewegt werden. Beim Loslassen der rechten
Maustaste wird die neue Position übernommen.
Durch Ziehen der Werkzeugleisten-Schaltfläche an einen der inneren Ränder des
Hauptfensters kann vom Palettenmodus in den integrierten Modus gewechselt werden (der
dicke Rahmen ändert sich dabei beim Ziehen in einen feinen Rahmen):

Abbildung 14: Die Werkzeugleiste "Special commands" im integrierten Modus (ohne


Symbolbeschriftung) unterhalb der Symbolleiste des Hauptfensters

4.1.3 Die Logikbaum-Editoren


Eine Dokument wird aus Seitenkomponenten und der Verarbeitungslogik aus
DOCDEF-Befehlen aufgebaut. Diese Befehle werden in Papyrus Designer aus den
Werkzeugleisten ausgewählt und in den zwei Logikbaum-Editoren grafisch arrangiert:

Verarbeitungslogik: Das Fenster "Document Format Definitions"


Die "Document Format Definitions" beschreiben die eigentliche Verarbeitungslogik des
Dokuments. Verschiedene Befehle können hier gesetzt werden, die die Verarbeitung der
Eingabedaten und die Formatierung des Dokuments steuern.

Kap. 4, S. 5 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 23/308

Abbildung 15: Document Format Definitions des Dokuments von Lektion 1

Seitenkomponenten: Das Fenster "FormatGroup Definitions"


Die "FormatGroup Definitions" umfassen die physische und logische Organisation des
Dokuments sowie die Definitionen der Ein- und Ausgabedaten (die Dateien selber werden im
Projekt angegeben), der Fonts und der Farben, die verwendet werden.

Abbildung 16: Format Group Definitions für das Beispieldokument

Benützen der Logikbaum-Editoren


Befehle werden mittels Drag and Drop aus den Werkzeugleisten zu den Fenstern "Document
Format Definitions" oder "FormatGroup Definitions" hinzugefügt. Beim Hinzufügen
übernimmt Papyrus Designer die Überprüfung der Syntax und verhindert das Hinzufügen von
Befehlen an nicht zulässigen Stellen. Dem Benutzer wird dies über ein großes "X" über dem
hinzuzufügenden Symbol angezeigt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 6


24/308 Lektion 0: Einstieg in Papyrus Designer

Abbildung 17: Hinzufügen nicht möglich: "X" über dem hinzuzufügenden Befehl

Mit einem Doppelklick auf einem Befehl in den "Document Format Definitions" oder
"FormatGroup Definitions" wird ein Kontextmenü geöffnet. Hierin können einerseits sog.
Haltepunkte gesetzt werden, die das Debuggen eines Dokuments erleichtern, andererseits
können alle gleichen Befehle über "Mark same commands" farblich hervorgehoben werden.

Abbildung 18: Öffnen eines Kontextmenüs im Logikbaum mittels Doppelklick

Abbildung 19: Hervorheben gleicher Befehle mit "Mark same commands"

Ein Rechtsklick auf einen Befehl im Logikbaum öffnet das Fenster zum Definieren und
Bearbeiten der Befehlsparameter.

Kap. 4, S. 7 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 25/308

Befehle können einfach mit der Maus verschoben werden: dazu wird ein Befehl ausgewählt
und bei gedrückter Maustraste an seine neue Position verschoben (drag and drop). Wenn ein
Befehl nicht verschoben, sondern kopiert werden soll, muss die Taste Strg vor Beginn der
Operation betätigt werden und währenddessen gedrückt bleiben.
Befehle werden grundsätzlich immer hierarchisch nach jenem Befehl eingefügt, auf den sie
fallengelassen wurden. Falls dieser Befehl ein Elternknoten für Unterebenen-Befehle ist, wird
in einem Pop-up Menü nach dem gewünschten Ziel gefragt: "Main level" fügt den neuen
Befehl auf der Hauptebene ein, "Sub level" führt zum Hinzufügen in der Unterebene.
Zum Entfernen von Befehlen werden diese ausgewählt und mit der Taste Entf gelöscht.

4.1.4 Das Vorschaufenster "View Document"


Im Vorschaufenster wird das Dokument dargestellt, wie es bei einem DocEXEC-Lauf in einen
AFPDS geschrieben wird (WYSIWYG).

Abbildung 20: Fenster "View Document"

Die Symbolleiste des Fensters View Document bietet mehrere Optionen für die Anzeige
eines Dokuments:

“ Verändern der Größe der Anzeige (mehrere Zoom-Levels)


“ Auswahl von Objekten (z.B.Text, Graphik, Overlay)
“ Anzeige von Textteilen, die im Papyrus Client gepromptet werden (mehr über
Prompting in Lektion 6)
“ Einblenden von Stickern (Kommentare, die nicht gedruckt werden)

Verwenden des Vorschaufensters

Um die Anzeige des Fensters "View Document" nach Änderungen zu aktualisieren, wählt
man FILE | REFORMAT PROJECT... im Menü des Hauptfensters von Papyrus Designer
oder klickt auf das Symbol REFORMAT in der Symbolleiste (siehe Abbildung) oder benutzt
die Tastenkombination Strg + R.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 8


26/308 Lektion 0: Einstieg in Papyrus Designer

Abbildung 21: Anzeige aktualisieren: Links mit File | Reformat Project, rechts mit Symbol
"Reformat"

Was im Vorschaufenster mit der Maus ausgewählt ist, wird auch automatisch in den Fenstern
"Document Format Definitions" und "FormatGroup Definitions" ausgewählt:

Abbildung 22: Die Auswahl eines Elements im Vorschaufensters zeigt die entsprechenden
Befehle in den Logikbäumen an (und umgekehrt)

Umgekehrt wird auch ein Element im Vorschaufenster hervorgehoben, wenn der zugehörige
Befehl im Logikbaum ausgewählt wurde.
Der Einstellungsdialog für die Parameter eines Befehls kann auch aus dem Vorschaufenster
durch Rechtsklick auf ein Element aufgerufen werden.

Kap. 4, S. 9 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 27/308

4.1.5 Die Eingabedaten betrachten: Das Datenfenster "Data Window"


Dieses Fenster zeigt Struktur und Inhalt der Eingabedaten:

Abbildung 23: Datenfenster des Dokuments von Lektion 1

Die Eingabedaten werden im Datenfenster abhängig vom Status ihrer Verarbeitung in


verschiedenen Farben dargestellt:

“ Bereits verarbeitete Daten werden blau eingefärbt


“ Eingabedaten, die noch nicht gelesen wurden, sind rot dargestellt
“ Ein Datensatz, der gerade von einem Befehl verarbeitet wird, erscheint in schwarz
“ In grün angezeigt werden reaktivierte Datensätze, die erneut gelesen werden sollen

4.1.6 Das Variablenfenster


Das Variablenfenster zeigt alle Variablen, die zu einem bestimmten Zeitpunkt erstellt wurden
und noch verfügbar sind. Über die Option "Select" kann ein Filter im Textfeld definiert
werden, der eine Auswahl an Variablen anzeigt.
Beispielsweise werden durch eine Bedingung G*|$ACT* lediglich jene Variablen angezeigt,
deren Name mit "G" oder "$ACT" beginnt:

Abbildung 24: Variablenfenster mit eingeschränkter Auswahl von Variablen

4.1.7 Warnungen und Fehler: Das Meldungsfenster "Message List"


Immer, wenn DocEXEC gestartet wird (z.B. wenn der Benutzer REFORMAT im Papyrus
Designer anklickt) und dabei auf einen Fehler stößt, erscheint das Meldungsfenster
"Message List" am Bildschirm und informiert den Benutzer:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 10


28/308 Lektion 0: Einstieg in Papyrus Designer

Abbildung 25: Fenster "Message List" für die effiziente Fehlersuche

Die Auswahl einer Meldung im Fenster "Message List" führt zum Hervorheben eines damit in
Verbindung stehenden Befehls in den Fenstern "Document Format Definitions" bzw.
"FormatGroup Definitions".

Das Meldungsfenster sollte immer geschlossen werden und nicht im Hintergrund


geöffnet bleiben! Falls das Meldungsfenster hinter den anderen Fenstern geöffnet
bleibt, erscheint es bei neuerlichem Auftreten einer Warnung nicht mehr im
Vordergrund. Dies kann zum Übersehen wichtiger Hinweise führen.

4.2 Voraussetzungen und Setup


4.2.1 Daten
Für die Entwicklung des Ausgabeprozesses werden Echtdaten verwendet, diese müssen
daher auf dem PC verfügbar sein. Falls die Daten zum Zeitpunkt der Entwicklung nicht
vorhanden sind, wird eine Beispieldatei erstellt. Das Default-Verzeichnis für die
Eingabedateien heißt
<ISIS Anwendungsverzeichnis>\DATA

In der Projekt-Datei wird der Pfad der Eingabedateien festgelegt (siehe unten, Lektion 1).

4.2.2 Ressourcen
Alle Ressourcen (Fonts, Pagesegmente, Overlays, FormDefs etc.) müssen zum Zeitpunkt
der Dokumentgestaltung vorhanden sein. Informationen über die notwendigen Ressourcen
sind oben im Abschnitt über die AFP-Elemente zu finden.

Papyrus Designer bzw. DocEXEC kann neben Pagesegmenten auch schwarz-weiße sowie
farbige TIFFs und JPEGs direkt importieren.

4.2.3 Setup
Die folgenden drei Dateien bestimmen das Setup des Papyrus Designers entsprechend der
Benutzeranforderungen. Alle drei Dateien liegen im Arbeitsverzeichnis <ISIS
Anwendungsverzeichnis>\USERISIS . Dieses Arbeitsverzeichnis wird auch im Eingabefeld
"Start in:" der Papyrus Designer-Verknüpfungsparameter im Windows-Startmenü eingestellt:

Kap. 4, S. 11 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 29/308

Abbildung 26: Papyrus Designer Verknüpfungseigenschaften unter Windows

4.2.3.1 DocEXEC Hauptprofil (ppde.prf)

Abbildung 27: DocEXEC Hauptprofil (ppde.prf)

Diese Datei enthält die Parameter von DocEXEC, die sowohl im Hintergrund des Papyrus
Designers als auch in der späteren Produktionsumgebung formatiert. Zum Beispiel beinhaltet
sie die wichtigen Codepage-Parameter CODEOWN, CODEFNT, CODEINP und CODESRC.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 12


30/308 Lektion 0: Einstieg in Papyrus Designer

CODEOWN Enthält die System-Codepage von DocEXEC. Falls


CODEOWN nicht spezifiziert ist, erfolgt unter OS/2,
Windows 95, 98, NT, 2000, XP und AIX eine
Systemabfrage. Unter OS 390 - z/OS ist die
Default-Codepage 273. CODEOWN wird für die
Interpretation der Eingabedaten und für die Ausgabe von
AFPDS- und nicht-AFPDS-Dateien herangezogen.

CODEFNT Enthält die Font-Codepage, die hauptsächlich für die


Erzeugung des AFPDS erforderlich ist. Als Host-Codepage
ist der Default-Wert auf allen Plattformen 273.

CODEINP Enthält die Codepage, die herangezogen werden soll, um


die Eingabedaten zu lesen. CODEINP muss ausdrücklich
spezifiziert werden, falls die Eingabedaten mit einer
anderen Codepage erstellt wurden als durch CODEOWN
festgelegt. Auf Windows-Plattformen hängt der Default-Wert
von CODEINP von der Spezifikation von CODEOWN ab:
Wenn CODEOWN nicht definiert (leer) ist, wird die OEM
(ASCII) Codepage als default für CODEINP gewählt. Wenn
CODEOWN spezifiziert ist, wird die gleiche Codepage für
CODEINP verwendet.

CODESRC Enthält die Codepage, mit der die DOCDEF-Datei


interpretiert werden soll. Grundsätzlich wird der Defaultwert
für CODESRC in CODEOWN spezifiziert. Auf
Windows-Plattformen hängt der Default-Wert von
CODESRC von der Spezifikation von CODEOWN ab: Wenn
CODEOWN nicht definiert (leer) ist, wird die OEM (ASCII)
Codepage als default für CODESRC gewählt. Wenn
CODEOWN spezifiziert ist, wird die gleiche Codepage für
CODESRC verwendet.

Weitere Details über Codepage-Parameter sind im Handbuch ISIS Papyrus DocEXEC


Installation & User's Guide (pdeeiu) zu finden.
Das DocEXEC Hauptprofil ppde.prf enthält außerdem die Pfade einiger anderer wichtiger
Dateien:

DDefLib Den Pfad und die Erweiterung der Document


Definition-Dateien wie z.B. in: DDefLib="..\DOCDEF<dfa>"

LibProf Den Pfad und den Dateinamen des Default Library Profiles,
in dem die Bibliotheken festgelegt sind (siehe den folgenden
Abschnitt), wie z.B. in:
LibProf="..\userisis\default.lbp"

Einige der Parameter in ppde.prf können durch Spezifikationen in der DOCDEF sowie beim
Aufruf von DocEXEC über die Kommandozeile überschrieben werden. Hierbei besitzt der
Aufruf über die Kommandozeile die höchste Priorität, gefolgt von den Spezifikationen in der
DOCDEF und den Festlegungen im Profil.

Kap. 4, S. 13 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 31/308

4.2.3.2 Default Library Profile (default.lbp)

Abbildung 28: Default Library Profile (default.lbp)

Das Default Library Profile enthält die Pfade und Erweiterungen der Ressourcen wie Fonts,
Overlays, Pagesegmente etc., die für das Dokument benötigt werden. Diese Datei können im
Dialog editiert werden, der über das Menü OPTIONS | LIBRARIES... geöffnet wird (1):

Abbildung 29: Dialogfenster "Libraries"

Die Verzeichnisse werden in der Reihenfolge durchsucht, in der sie im Bibliotheksprofil


festgelegt sind. Diese Hierarchie ist mit Hilfe der beiden verschiedenen Schaltknöpfe
APPEND (Hinzufügen) und INSERT (Einfügen) zu erstellen.
Weitere Informationen über das Default Library Profile finden sich im Dokument ISIS
Resource Library Profile Description (reslibpe).
Änderung in diesem Dialog werden durch Klicken auf die Schaltfläche BUILD CAT. (2)
aktiviert.
Ein Eintrag in default.lbp kann wie folgt aussehen:
FON="..\FONTS240<FON>"
CHS="..\FONTS240<CHS>"
CDP="..\FONTS240<CDP>,..\FONTS300<CDP>"
PSG="..\PSEG<240>"

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 14


32/308 Lektion 0: Einstieg in Papyrus Designer

OVL="..\OVL240<OVL>"
FDF="..\FDF_PDF<FDF>"
PDF="..\FDF_PDF<PDF>"

4.2.3.3 Default Document Definition (default.dfa)


Die Default-DOCDEF (im Verzeichnis USERISIS) wird aufgerufen, wenn ein neues Projekt im
Papyrus Designer erstellt werden soll. Im Prinzip handelt es sich dabei um ein
DOCDEF-Beispiel, das auch als Modell für eigene DOCDEFs verwendet werden kann.

Abbildung 30: Standard DocDEF (default.dfa)

4.2.4 Verzeichnisstruktur auf dem PC


In einer Default-Installation für Windows sind die Ressourcen auf folgende Verzeichnisse
verteilt:

Kap. 4, S. 15 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 0: Einstieg in Papyrus Designer 33/308

Abbildung 31: Unterverzeichnisse mit den Ressourcen für ein Dokument

cpts Codepage-Tabellen

data Datendateien (Eingabedateien)

docdef Document Definition-Dateien

fdf_pdf Form Definitions und Page Definitions

fonts240, fonts300, Fonts, Codepages und Zeichensätze für Raster Fonts in


fonts600 verschiedenen Auflösungen

fontsout Fonts, Codepages und Zeichensätze für Vektorschriften


(Outline Fonts)

implib Externe Textelemente

ovl240, ovl300, ovl600 Overlays in verschiedenen Auflösungen

pseg Pagesegemente

userisis Persönliche Einstellungen wie Profile etc.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 4, S. 16


34/308 Lektion 0: Einstieg in Papyrus Designer

4.3 Fragen zu Lektion 0


“ DocEXEC main profile: Wie lautet dessen Dateinamen und Verzeichnis und seine
wichtigsten Funktionen?

.................................................................................................................................

“ Default library Profile: Wie lautet dessen Dateinamen und Verzeichnis und seine
wichtigsten Funktionen?

.................................................................................................................................

“ Wie und wo werden die Ressource-Bibliotheken angelegt?

.................................................................................................................................

Kap. 4, S. 17 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 35/308

5.0 Lektion 1: Einfaches Dokument

Wie im Zieldokument auf der folgenden Seite zu sehen ist, soll als Aufgabe der ersten
Lektion ein einfaches Dokument erstellt werden. In dieser Lektion liegt der Schwerpunkt vor
allem auf den Grundvoraussetzungen wie der Definition eines Projektes einerseits und
andererseits auf einer Vorstellung der wichtigsten DocEXEC Befehle und der
entsprechenden Definitionsdialoge in Papyrus Designer.

5.1 In dieser Lektion vermitteltes Wissen


Lektion 1 (lesson01.prj) vermittelt,

“ wie ein Projekt definiert wird,


“ wie Daten zu analysieren sind,
“ wie die grundsätzliche Aufteilung eines Dokuments in FORMATGROUPs, SHEETs,
LAYERs und LOGICALPAGEs festzulegen ist,
“ wie das Eingabe- und das Ausgabeformat definiert wird,
“ wie man Fonts definiert,
“ wie Daten eingelesen werden,
“ wie Text, Daten, Pagesegmente und Linien positioniert werden,
“ wie die Verarbeitung des Dokuments durch Bedingungen (IF-THEN-ELSE) und
Steueranweisungen (USE) gelenkt wird.
Zusatzlektion 1a (lesson01a.prj) vermittelt,

“ wie für die bedingte Verarbeitung von Dokumenten anstatt IF-THEN-ELSE eine andere
Möglichkeit genutzt werden kann: SELECT-CASE. Die grundsätzliche Struktur des
Dokumentenaufbaus bleibt dieselbe wie bei Lektion 1.
Zusatzlektion 1b (lesson01b.prj) vermittelt,

“ wie TIFF- und JPG-Dateien in das Dokument importiert werden können. Die
grundsätzliche Struktur des Dokumentenaufbaus bleibt dieselbe wie bei Lektion 1, sie
ist lediglich um die Importbeispiele erweitert.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 1


36/308 Lektion 1: Einfaches Dokument

Abbildung 32: Beispieldokument von Lektion 1

5.2 Die Definition eines Projektes


Der erste Schritt zur Applikationsentwicklung ist die Projekt-Definition. Im Projekt wird der
grundsätzliche Rahmen für die Dokumentenanwendung festgelegt: Welche Eingabedaten
sollen verwendet werden, wie soll der Ausgabe-AFP heißen, welche DocDef und welches
Profil sollen verwendet werden.

“ Projektname
“ Name und Pfad der Eingabedatei
“ Name und Pfad der Ausgabe-AFP-Datei
“ Pfade der Profildateien

Kap. 5, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 37/308

Man startet den Papyrus Designer aus dem Windows Startmenü mit dem MenüpunktStart |
All Programs | ISIS Papyrus Designer & DocEXEC Workshop | Papyrus Designer:

Abbildung 33: Starten des Papyrus Designer

Ein leerer Papyrus Designer wird geöffnet.


Nun wird eine neue Projekt-Datei erstellt. Dazu wählt man File | New project... (1) im
Papyrus Designer.
Folgender Dialog wird geöffnet:

Abbildung 34: Dialogfenster zum Erstellen eines neuen Dokuments

In den verschiedenen Eingabefeldern können nun die einzelnen Dateien bestimmt werden.
Zunächst ist lediglich das Feld Document Project Name (2) aktiv. Man gibt einen
Projektnamen ein, z.B. MyLesson01.prj. Durch Eingabe des Projektnamens und
anschließender Bestätigung der Schaltlfäche File select (3) bzw. der Tab-Taste auf der
Tastatur werden auch die anderen Felder zur Eingabe aktiviert (ihre Hintergrundfarbe
wechselt von grau auf weiß).

Als Projektname sollte nicht lesson01.prj verwendet werden, weil dadurch das fertige
Musterprojekt überschrieben würde.

Document Project Name Der Pfad und Dateiname des Projekts sind einzugeben. Die
Erweiterung der Projektdateien ist prj.
Eingabe eines Projektnamens, z.B. MyLesson01.prj

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 3


38/308 Lektion 1: Einfaches Dokument

DocEXEC Profile Name Der Pfad und der Name des DocEXEC Hauptprofils, in dem
die Parameter für DocEXEC gesetzt werden, die im
Hintergrund von Papyrus Designer für die Ansicht und
schließlich für die Ausgabe des AFP aufgerufen wird.
Man platziert den Cursor in diesem Eingabefeld und betätigt
die Schaltlfäche File select (3). Im folgenden Dialog wählt
man die Datei ppde.prf und bestätigt mit Open.

Dateiname der DOCDEF Der Pfad und der Name der Document Definition. Die
Erweiterung der DOCDEFs ist dfa. Falls bereits mehrere
DOCDEFs in der DOCDEF-Bibliothek vorhanden sind,
werden nur die Namen (ohne Pfad und Erweiterung) in
einer Select Box angezeigt.
In diesem Beispiel wird keine Auswahl aus der Box
vorgenommen sondern ein DOCDEF-Dateiname eingetippt,
z.B. MyLesson01

Line Data File Name Der Pfad und der Name der Eingabedaten-Datei.
Man platziert den Cursor in diesem Eingabefeld und betätigt
die Schaltlfäche File select (3). Im folgenden Dialog wählt
man die Datei lesson01.asc aus dem Verzeichnis data und
bestätigt mit Open.

Output File Name Der Pfad und der Name des Ausgabe-AFPDS.
Eingabe von ..\afpds300\mylesson01.afp

Sticker File Name Pfad und Name einer externen Sticker-Datei


Keine Angabe in diesem Beispiel

Umgebungsvariable Es ist möglich, auf der Befehlszeile Variablen an DocEXEC


weiterzugeben. In Papyrus Designer werden diese in
diesem Feld eingegeben.
Keine Angabe in diesem Beispiel

Die Schaltfläche File select bezieht sich immer auf jenes Eingabefeld, in welchem der
Cursor zuvor platziert wurde.
Schließlich bestätigt man die Angaben mit einem Klick auf die Schaltfläche OK im Dialog
"Define new Document". Anschließend wählt man File | Save Project bzw. die F2-Taste um
das Projekt abzuspeichern und die DOCDEF-Datei zu erstellen.
Die Projektdatei, die in diesem Beispieldialog erstellt wurde, enthält ähnliche Informationen
wie im folgenden Beispiel:

Abbildung 35: Projekt-Datei für Lektion 1

Kap. 5, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 39/308

Relative Pfadangaben

Um möglichst unabhängig von der Verzeichnisstruktur zu sein, soll nicht der absolute Pfad,
welcher den Laufwerksbuchstaben enthält (z.B. C:\ISIS\...), angegeben werden, sondern ein
Pfad relativ zum Arbeitsverzeichnis der ISIS Produkte (im Eigenschaften-Dialog des Shortcut
definiert). Wie unter File | Edit Project zu sehen, beginnen die Pfade mit "..\".
Wenn das Stammverzeichnis
C:\ISIS_PDDBasicCourse\PDDBasic\USERISIS
ist und der Pfad der Datei mit den Eingabedaten
..\data\data.asc
dann bedeuten die beiden Punkte vor dem Backslash: "Wechsle in die nächsthöhere
Verzeichnisebene", das ist in diesem Fall:
C:\ISIS_PDDBasicCourse\PDDBasic\
DocEXEC sucht die Datei DATA.ASC dann in:

C:\ISIS_PDDBasicCourse\PDDBasic\DATA

5.3 Die Datenanalyse


Vor der Entwicklung des Dokuments werden die Eingabedaten analysiert.

Abbildung 36: Datenfenster für die Analyse der Daten

Wenn man sich die Daten von Lektion 1 im Datenfenster des Papyrus Designer ansieht - was
läßt sich darüber sagen?

“ Jede Zeile repräsentiert einen Datensatz


“ Jeder Datensatz beginnt mit einer Zahl nach dem Sternchen, das das
Zeilentrennzeichen symbolisiert. Diese Zahl wird Channel Control Character (CCC)
genannt und dient zur Unterscheidung von Datensätzen mit unterschiedlichen Feldern
(in Lektion 1 nicht relevant).
“ Jeder Datensatz besteht aus sechs Datenfeldern
“ Jedes Feld (Spalte) hat in jedem Datensatz dieselbe Länge. Das bedeutet, dass alle
Datensätze gleich lang sind.
“ Das waagrechte Linieal unter der Symbolleiste des Datenfensters zeigt die Länge der
einzelnen Datenfelder an, deren Summe 110 Zeichen in jeder Zeile ergibt (um das
Lineal sichtbar zu machen, klickt man auf die vier, quadratisch angeordneten Punkte
am rechten Ende der Symbolleiste).
Diese Informationen werden im Abschnitt APPLICATION-INPUT-FORMAT erstmals im
Projekt Anwendung finden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 5


40/308 Lektion 1: Einfaches Dokument

5.4 Die Definition einer FormatGroup


Beim Starten eines neuen Projekts lädt Papyrus Designer die Standard-DOCDEF
default.dfa. Diese Default-DOCDEF besteht aus einer Folge von häufig verwendeten
Anweisungen, die das Grundgerüst bilden, mit dem der Entwickler rasch neue
Dokumentenanwendungen erstellen kann.

5.4.1 Die FORMATGROUP-Definition


Die FORMATGROUP definiert die Organisation der SHEETs (Blätter), LAYERs
(Seitengruppen) und LOGICALPAGEs (logischen Seiten).

Um eine FORMATGROUP zu definieren, zieht man das Symbol für die FormatGroup aus der
Symbolleiste "Definitions" in das Fenster "FormatGroup Definitions". Im darauf
erscheinenden Dialog gibt man einen Namen für die FORMATGROUP an.

Abbildung 37: Dialogfenster

Jede FormatGroup enthält zumindest ein SHEET, einen LAYER und eine LOGICALPAGE.

5.4.2 Die SHEET-Definition


Das SHEET beschreibt das physische Blatt des Dokuments. Das SHEET selbst ist in
LAYERs organisiert.
Um ein SHEET zu definieren, zieht man das Symbol SHEET aus der Symbolleiste
"Definitions" in die erstellte Formatgroup. Der folgende Dialog wird angezeigt:

Abbildung 38: Dialogfenster

Im vorliegenden Beispiel ist das Blatt Papier in A4-Format festgelegt, d.h. 210 x 297 mm.
Dieses Format wird auch als Defaultwert gewählt, wenn keine Größe angegeben wird.

CopyGroup Name Ein COPYGROUP-Name für die COPYGROUP, die mit


dem SHEET verbunden ist, ist nur bei Bedarf zu
spezifizieren.

Width Spezifiziert die Breite.

Height Spezifiziert die Höhe.

Kap. 5, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 41/308

5.4.3 Die LAYER-Definition


Ein LAYER enthält eine Gruppe von LOGICLAPAGEs. LOGICALPAGEs werden in
aufsteigender Reihenfolge ihrer Nummern in einer Schleife formatiert, bis eine andere
LOGICALPAGE mit einem USE-Befehl aufgerufen wird.
Um ein LAYER zu definieren, zieht man das Symbol für den LAYER aus der Symbolleiste
"Definitions" in das Fenster "FormatGroup Definitions". Im folgenden Dialog gibt man einen
Namen für den LAYER ein.

Abbildung 39: Dialogfenster

Nach der Definition des LAYERs wird automatisch der Dialog "Logical Page Parameters"
geöffnet, da ein LAYER mindestens eine LOGICALPAGE hat.

5.4.4 Die Definition der LOGICALPAGE


Auf der LOGICALPAGE wird die gedruckte Seite (SHEET) formatiert. Mehrere
LOGICALPAGEs können für ein einzelnes SHEET definiert werden. Um eine
LOGICALPAGE zu definieren, zieht man das Symbol für die LOGICALPAGE aus der
Symbolleiste "Definitions" in das Fenster "FormatGroup Definitions". Nach Definition des
Layers (siehe oben) erscheint der folgende Dialog.

Abbildung 40: Dialog Fenster

Number Dient zum Nummerieren der LOGICALPAGEs, die


innerhalb eines LAYERs definiert werden.

Side Auswahl der Druckseite

Front die Vorderseite

Back die Rückseite

Position Spezifiziert die Position der LOGICALPAGE in absoluten


Offsets vom linken und oberen Rand des Papiers:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 7


42/308 Lektion 1: Einfaches Dokument

Horizontal Spezifiziert den Offset vom linken Rand des Papiers


entweder als Vielfaches einer Maßeinheit oder als variablen
Ausdruck.

Vertical Spezifiziert den Offset vom oberen Rand des Papiers


entweder als Vielfaches einer Maßeinheit oder als variablen
Ausdruck.

Size Spezifiziert die Dimensionen der LOGICALPAGE.

Width Spezifiziert die Breite der LOGICALPAGE entweder als


Vielfaches einer Maßeinheit oder als variablen Ausdruck.

Height Spezifiziert die Höhe der LOGICALPAGE entweder als


Vielfaches einer Maßeinheit oder als variablen Ausdruck.

Direction Spezifiziert die Druckrichtung relativ zum SHEET.


Defaultwert: ACROSS.

5.4.5 Der entsprechende DOCDEF-Quellcode


Sind alle Parameter eingegeben, enthält die DOCDEF-Datei lesson01.dfa die folgenden
Einträge für die Definition der FORMATGROUP:

Abbildung 41: Quellcode der FormatGroup Definition

5.5 APPLICATION INPUT FORMAT


Im Fenster "FormatGroup Definitions" wird das Format der Eingabedaten festgelegt, indem
die Parameter des Befehls APPLICATION-INTPUT-FORMAT bestimmt werden. Man zieht
das Symbol "Appl.Inp.Format" aus der Symbolleiste "Definitions" in das Fenster
"FormatGroup Definitions". Im darauf folgenden Dialog legt man die einzelnen Parameter für
das Eingabeformat fest.
In der rechten Hälfte des Dialogfensters werden die jeweils zur auf der linken Seite
getroffenen Auswahl passenden Parameter zur Bearbeitung angeboten.

Kap. 5, S. 8 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 43/308

5.5.1 Input codepage

Abbildung 42: Dialogfenster

In diesem Dialog wird die Codepage zur Interpretation der Eingabedaten festgelegt. In
diesem Beispiel sollen die Eingabedaten in der System-Codepage interpretiert werden.
Eine allgemeine Einführung in den Zusammenhang zwischen Computerdaten und
Codepages bietet das Dokument
ISIS Codepage and Cross Platform Considerations - General Information.

Own System Codepage (1) Die Codepage, die im Parameter CODEOWN im DocEXEC
Profil (ppde.prf) spezifiziert ist, wird für die Interpretation der
Daten verwendet.

5.5.2 Input record format

Abbildung 43: Dialogfenster

In diesem Dialog definiert man das Format der Datensätze.


In diesem Beispiel wird das Datensatzformat auf "VarPC" festgelegt, d.h. auf "variable", auf
dem PC erstellte Datensätze. Da solche Datensätze über kein Längenfeld verfügen, ist die
Auswahl der Option "VarPC" erforderlich, auch wenn die Datensätze augescheinlich
dieselbe, fixe Länge haben (siehe "Datenanalyse" weiter oben). Bei Auswahl von "VarPC"
muss ein Datensatzbegrenzungszeichen (Record delimiter) definiert werden.
Als Datensatzbegrenzungszeichen wird der Default-Wert X'0D0A' (Carriage Return, Line
Feed)(1) akzeptiert.In diesem Beispiel wird die Datensatzlänge auf maximal 255 Zeichen
beschränkt (2).

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 9


44/308 Lektion 1: Einfaches Dokument

5.5.3 Channel/TRC code definition

Abbildung 44: Dialogfenster

In diesem Dialog definiert man allenfalls Channel Codes und Table Reference Characters
(TRC). In diesem Beispiel ist ANSI Channel Code (1) ausgewählt. Eine angehakte Checkbox
"TRC byte exists" (2) verhindert die Verwendung einer in den Eingabedaten vorhandenen
Table Reference Character-Information (die Nutzdaten werden dann erst ab Byte 3
ausgelesen). Da die Eingabedaten keinen TRC aufweisen, ist die Checkbox nicht
ausgewählt.

ANSI Als Channel Code gelten folgende Zeichen: 1 ... 9, A, B, C

5.5.4 Dezimaltrennzeichen

Abbildung 45: Dialogfenster

In diesem Dialog wird das Dezimaltrennzeichen des Datensatzes als Textstring eingegeben
und muss daher von einfachen Anführungszeichen umgeben sein.

Kap. 5, S. 10 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 45/308

5.5.5 Linecache limit

Abbildung 46: Dialogfenster

In diesem Dialog gibt man die Anzahl der im Speicher zu haltenden Datensätze ein. In
diesem Beispiel beträgt das Line stack limit 5.

5.5.6 OMS cache limit

Abbildung 47: Dialogfenster

In diesem Dialog gibt man die maximale Anzahl der Objekte ein, die im Speicher gehalten
werden sollen, um unnötigen Austausch zwischen DE/DD und dem Kernel zu vermeiden. Im
Rahmen des Kurses ist dieser Parameter jedoch nicht von Bedeutung, da hier nicht auf die
Kommunikation mit Papyrus Objects eingegangen wird.

5.5.7 Der entsprechende DOCDEF-Quellcode


Die DOCDEF-Datei lesson01.dfa weist nun die folgenden Einträge für den Befehl
APPLICATION-INPUT-FORMAT auf:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 11


46/308 Lektion 1: Einfaches Dokument

Abbildung 48: Quellcode von Application Input Format parameters

5.6 APPLICATION OUTPUT FORMAT


Im folgenden Dialog wird das Format der AFP-Datei definiert, die von der Anwendung
ausgegeben wird. Man zieht das Symbol "Appl.Out.Format" aus der Symbolleiste
"Definitions" in das Fenster "FormatGroup Definitions".

Abbildung 49: Dialogfenster "Application Output Format Parameters"

In diesem Beispieldialog werden folgende Werte für die Spezifikation des AFP-Formates
festgelegt.
DocEXEC Profile Codepage Parameters (1)

CODEFNT Erstellung des AFPDS in der System-Codepage des Ziels


(Hosts).

AFP Type (2)

Filetransfer Zielsystem VM oder MVS

Max. record length (3) spezifiziert die maximale Datensatzlänge für die generierte
AFPDS-Datei. In diesem Beispiel wird der Default-Wert 8192 belassen.

Kap. 5, S. 12 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 47/308

Resolutions (4) definiert die Ressourcen- und Druckauflösung. Falls eine Ressource beim
Drucken nicht in der erforderlichen Auflösung vorhanden ist, wird reskaliert.

Source Auflösung der Ressourcen, also jene Overlays, PSEGs,


Fonts und Tiffs, die in default.lbp angegeben sind.

Target Druckauflösung für die zu erzeugende Datei. Falls


notwendig, werden bestehende Ressourcen reskaliert.
Images (Charts, Schattierungen oder in Bitmaps
konvertierte Outline Fonts) werden in dieser Auflösung
erzeugt.

Units per inch (5) spezifiziert die Genauigkeit, mit der Objekte (Text, Pagesegmente) intern
im AFP positioniert werden. Im Beispiel ist 1440 upi ausgewählt; die Objekte werden also auf
1/1440 Zoll genau positioniert. Außerdem steht die Option "Target Resolution" zur Verfügung,
die auf die Druckauflösung für die zu erzeugende Datei Bezug nimmt. Je nach dem, welche
Auflösung für "Target" gewählt wurde, wird mit einer Genauigkeit von 240, 300 oder 600 upi
positioniert.
Image mode (6) spezifiziert die Image-Architektur für die Präsentation von Bildern.

IM IM image object

Sind alle Parameter wie in diesem Beispiel eingegeben, enthält die DOCDEF-Datei
lesson01.dfa die folgenden Einträge für den Befehl APPLICATION-OUTPUT-FORMAT:

Werte, die nicht explizit spezifiziert wurden, erhalten den Default-Wert (im Falle von
Checkboxen ist das der Wert NO)

Abbildung 50: Quellcode von Application Output Format der Lektion 1

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 13


48/308 Lektion 1: Einfaches Dokument

5.7 Auflösung und Positionierung von Elementen im Dokument


5.7.1 DocEXEC internes Koordinatensystem

DocEXEC verwendet intern ein Koordinatensystem mit einer Auflösung von 1440 ppi (parts
per inch), um Texte und Objekte zu positionieren. Ein Zoll (Inch) ist daher in 1440 Segmente
aufgeteilt und ausschließlich Kreuzungspunkte der X-/Y-Koordinaten können zur
Positionierung von Objekten verwendet werden. Der Schalter "Units per inch" im
Appl.-Output-Format Dialog entscheidet ob das interne Koordinatensystem in die AFP-Datei
mit 240 ppi oder 1440 ppi abgebildet wird. Daraus ergibt sich die Genauigkeit der
Objektpositionierung, ohne jedoch in Zusammenhang mit der Druckerauflösung zu stehen.
1440 ppi wird empfohlen, um höchste Genauigkeit zu erreichen, jedoch akzeptieren
bestimmte Druckermodelle diese Einstellung nicht und benötigen 240 ppi (bei Verwendung
der Auflösung 240 ppi werden alle Koordinaten durch 6 dividiert, wodurch die Positionierung
weniger exakt wird).
Diese interne Koordinaten sind in Systemvariablen abgespeichert und können nicht
überschrieben werden (die Einheit basiert auf 1440 ppi).
Mehr zu diesem Thema in: DocEXEC Referenzhandbuch - DOCDEF-Syntaxregeln /
Systemvariablen.
Man unterscheidet Objekte der Hauptebene (Main Level; z.B. OUTLINE) und Objekte der
Unterebene (Sublevel; z.B.OUTPUT, TEXT, PLACE). Systemvariablen der Hauptebene
beziehen sich auf absolute Objektkoordinaten auf der aktuellen Logicalpage.
Systemvariablen der Unterebene beziehen auf sich Objektkoordinaten, die relativ zur
übergeordneten Hauptebene positionieren. Dadurch werden beim Verschieben und beim
Neupositionieren der ML-Objekte auch alle SL-Objekte mit gleichem Abstand zueinander
verschoben.

5.7.2 Objektpositionierung
SL-Objekte werden relativ zu ihren ML-Objekten positioniert. Für Objekte mit nur einer Zeile
(PLACE, OUTPUT) wird der Schnittpunkt der Basislinie mit dem linken Rand als
Bezugspunkt verwendet. Für Objekte mit mehr als einer Zeile (TEXT) bzw. graphische
Objekte (SEGMENT, CHART, ...) dient die linke obere Ecke des imaginären Rechtecks als
Bezugspunkt für Positionsangaben.

Anhang 3 bietet eine Liste der Schlüsselwörter für die Positionierung von Objekten auf
Unterebenen.

Kap. 5, S. 14 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 49/308

Abbildung 51: Positionierung von Objekten auf einer LOGICALPAGE

Abbildung 52: Mehrere Ebenen der Objektpositionierung

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 15


50/308 Lektion 1: Einfaches Dokument

5.7.3 MM, CM, INCH, PELS, POINTS


Alle Positionsangaben sind in Zoll (=Inch). Um andere Einheiten zu verwenden, sind diese
explizit mit dem Wert einzugeben. Positionsschlüsselworte (z.B. LASTMAX) beziehen sich
auf Systemvariablen, wie z.B. $ML_LMAXY und verwenden daher das interne
DocEXEC-Koordinatensystem (1440 ppi). Alle anderen zum Positionieren verwendeten
benutzerdefinierten Variablen müssen ebenfalls Werte aufweisen, die zu diesem
Koordinatensystem passen. Die Konvertierungsfunktionen MM, CM, INCH, PELS und
POINTS (siehe Lektion 2) bieten die Möglichkeit, Positionen und Dimensionen mit Hilfe von
Variablen auszudrücken.

“ 1 INCH entspricht 1440 ppi


“ 1 POINT entspricht 1440/20 ppi
“ 1 PEL entspricht 1440/240 ppi
“ 1 MM entspricht 1440/25.4 ppi
“ 1 CM entspricht 1440/2.54 ppi

5.8 Die FONT-Definition


Die Fonts, die in der Anwendung verwendet werden, bestimmt man in der FONT Definition.

Zuerst muss ein Katalog der Font-Ressourcen erstellt werden, der Verweise auf alle
verfügbaren Fonts enthält:

Abbildung 53: Dialogfenster

Hierfür öffnet man aus dem Menü "Options | Libraries ..." den Dialog "Libraries" und erstellt
über [Build cat] diesen Katalog.
Dieser Katalog ist nur für das Arbeiten mit dem Papyrus Designer notwendig und nicht für
einen Produktionslauf mit DocEXEC.
Zur FONT-Definition zieht man das Symbol "Font Def." aus der Symbolleiste "Definitions" in
das Fenster "FormatGroup Definitions", um den folgenden Dialog zu öffnen:

Kap. 5, S. 16 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 51/308

Abbildung 54: Dialogfenster

Dieser Dialog definiert oder modifiziert eine Raster- oder Outline-Schriftart mit Hilfe des
Befehls FONT und weist dieser einen internen Namen zu. In diesem Beispiel wird dem
ausgewählten Font der Name STD010 zugewiesen. Für diese Schriftart sind vier Arial 10
Punkt-Fonts definiert, jeweils einer für jeden Schriftschnitt, d.h. Normal, Fett, Kursiv und
Fett-Kursiv. Da keine Rotation gewünscht wird, bleibt der Defaultwert (0° Rotation)
unverändert.
Zusätzlich wird ein weiterer Font mit dem internen Namen BIGFONT definiert (Arial, 36
Punkt, Normal und Fett), der für hervorgehobenen Text verwendet wird.
Der erste bzw. oberste Eintrag in dieser Liste stellt zugleich den Default-Font dar, der
herangezogen wird, wenn für die Ausgabe kein Fontname ausdrücklich angegeben wurde.
Die hier getroffene Font-Definition überlagert die Font-Information des DocEXEC-Profils.
Über die Schaltfläche [Search] kann ein neuer Font definiert werden. Man wählt im folgenden
Dialog entweder eine Schriftart aus dem bestehenden Font-Katalog aus oder sucht über
[Fileselect] direkt nach der Fontdatei.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 17


52/308 Lektion 1: Einfaches Dokument

Abbildung 55: Definieren einer Schrift

( 1 ) Dialogfenster "Font Definitions"


( 2 ) Dialogfenster "Select Font"
( 3 ) Dialogfenster "Font Select"

Falls anstatt des Dialogs "Select Font" eine Fehlermeldung erscheint, die auf das
Fehlen einer Datei, z.B. default.300, hinweist, sollte der Katalog der Font-Ressourcen
neu erstellt werden (siehe oben).

5.9 Die Befehle zur Document Format Definition


5.9.1 Der Befehl DOCFORMAT
Der Befehl DOCFORMAT bestimmt den Beginn einer DOCFORMAT-Hauptebene. Die
Hauptebene DOCFORMAT beinhaltet die Logik der Dokumenterstellung (-formatierung). Sie
endet mit dem nächsten DOCFORMAT-Befehl.

Um ein neues DOCFORMAT zu erstellen, zieht man das Symbol "DOCFORMAT" aus der
Symbolleiste "Frequent Commands" in das Fenster "Document Format Definitions". Der
folgende Dialog wird geöffnet.

Abbildung 56: Dialogfenster

Der einzige Parameter dieses Dialogs ist der Name des DOCFORMATs.

Kap. 5, S. 18 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 53/308

5.9.2 Der Befehl USE


Der Befehl USE steuert die DOCFORMAT-Verarbeitung, indem er zu den physischen
und/oder logischen Seitenfolgen schaltet, die in den folgenden Objekten definiert sind:
FORMATGROUP, DOCFORMAT, LAYER, LOGICALPAGE. Um einen USE-Befehl
einzufügen, zieht man das Symbol USE aus der Symbolleiste "Frequent Commands" in das
Fenster "Document Format Definitions".

5.9.2.1 Eine FormatGroup mit USE FormatGroup ansteuern


In diesem Beispiel ruft die USE-Anweisung die FormatGroup FORMGR_01 auf.

Abbildung 57: Dialogfenster

5.9.2.2 Eine LOGICALPAGE mit USE ansteuern


Der Befehl USE mit dem Parameter LOGICALPAGE und der Option "Print all logical pages"
veranlaßt die Ausgabe aller bis zu diesem Aufruf noch nicht gedruckten LOGICALPAGEs,
um dann mit der nächsten LOGICALPAGE die Verarbeitung fortzusetzen.

Abbildung 58: Dialogfenster

5.9.3 Der Befehl MARGIN


Der Befehl MARGIN definiert die Ränder oben, unten, links und rechts der LOGICALPAGE.
Das Symbol für diesen Befehl findet man in der Symbolleiste "Frequent Commands".

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 19


54/308 Lektion 1: Einfaches Dokument

Abbildung 59: Dialogfenster

Wie in diesem Beispieldialog zu sehen ist, können die Seitenränder in verschiedenen


Einheiten angegeben werden:

Top 1 inch (Werte ohne Angabe der Einheit werden als Inch
interpretiert)

Bottom 25 mm

Left 300 pels

Right 20 mm

5.9.4 Der Befehl SETUNITS/LINESP


Der Befehl SETUNITS wird im Papyrus Designer automatisch generiert, wenn ein
LINESP-Unterbefehl definiert wird. Dieser Unterbefehl befindet sich in der Symbolleiste
"Frequent Commands". Der folgende Dialog wird geöffnet.

Abbildung 60: Einstellen des Zeilenabstandes auf 6 lpi - der automatische Zeilenabstand könnte
über das Anhaken von "Auto" (1) aktiviert werden

Auto (1) Der automatische Zeilenabstand stellt sicher, dass


aufeinander folgende Objekte wie Textausgaben oder
Pagesegmente nicht überschrieben werden. Das zu
platzierende Objekt wird auf die nächste druckbare Position
gesetzt, ohne aber das zuvor ausgegebene Objekt zu
überlagern.

Die Spezifikation für den fixen Zeilenabstand in diesem Beispieldialog fügt die folgende Zeile
in den DOCDEF-Quellcode ein:
SETUNITS LINESP 6 LPI ; /*LPI = lines per inch*/

Kap. 5, S. 20 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 55/308

5.9.5 Der Befehl PRINTLINE


Der Befehl PRINTLINE ist ein DOCFORMAT-Eingabe-/Ausgabebefehl. Er leitet eine
Formatierungsebene PRINTLINE ein und liest einen (wiederholten) Datensatz aus einer
Eingabedatei ein, dessen Felder unmittelbar anschließend mit dem Befehl FIELD gedruckt
werden können. Um einen PRINTLINE-Befehl einzufügen, zieht man das Symbol
PRINTLINE aus der Symbolleiste "Frequent Commands" in das Fenster "Document Format
Definitions". Der folgende Dialog wird geöffnet.

Abbildung 61: Dialogfenster

In diesem Beispiel wird für jede Dokumentinstanz nur eine Datenzeile eingelesen (Repeat 1).

In diesem Fall wird kein Name für die PRINTLINE-Anweisung angegeben. Der Name der
PRINTLINE-Anweisung repräsentiert eine Variable, die die Zahl der Wiederholungen zählt.
Im Falle eines nicht wiederholten Datensatzes ist es daher nicht sinnvoll, einen Namen
zuzuweisen.

5.9.6 Der Befehl FIELD


Der Befehl FIELD definiert ein Daten-Feld innerhalb des von PRINTLINE eingelesenen
Datensatzes. Die Daten werden unmittelbar anschließend ausgegeben.
Wird für den Befehl FIELD ein Name vergeben, wird eine (indizierte) Variable erzeugt, die
dessen Wert speichert. Dieser Wert steht für eine spätere Ausgabe, Berechnungen, die
Verwendung in Ausdrücken, die Evaluierung von Bedingungen etc. zur Verfügung. Erhält das
FIELD keinen Namen, so wird keine Variable angelegt, sondern der Wert unmittelbar
ausgegeben.
Erhält das FIELD keinen Namen, so wird keine Variable angelegt, sondern lediglich der Wert
ausgegeben. Das Symbol für den Befehl FIELD findet man in der Symbolleiste "Frequent
Commands".

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 21


56/308 Lektion 1: Einfaches Dokument

Abbildung 62: Dialogfenster

Die Parameter:

Name (1) Wird die FIELD-Anweisung benannt, wird eine Variable


erzeugt, die die eingelesenen Daten speichert. Mit der
ersten FIELD-Anweisung wird der Vorname eingelesen. Da
diese FIELD-Anweisung keinen Namen erhält, wird deren
Wert unmittelbar ausgegeben, aber nicht gespeichert.
Obwohl der Vorname erst nach dem Nachnamen in den
Eingabedaten erscheint, wird er als erster eingelesen, da er
auch die erste zu druckende Position im Adresskopf bildet.

Start (2) Das Feld beginnt mit dem zwanzigsten Byte nach dem
Steuerzeichen. Wenn statt dem Zahlenwert das Zeichen "*"
eingegeben wird, beginnt das Feld mit dem ersten Byte
nach dem letzten Feld. Wird "*" für die Startposition des
ersten Felds definiert, beginnt das Feld ebenfalls mit dem
ersten Byte nach dem Steuerzeichen.

Length (3) Die Länge des Datenfelds beträgt 20 Bytes. Wenn statt des
Zahlenwerts das Zeichen "*" eingegeben wird, wird bis zum
Ende der PRINTLINE gelesen.

Type (4) Als Feldtyp ist "Text" definiert, das Feld wird als String
interpretiert.

(5) "No Spaces" Falls die eingelesenen Zeichenkette am Beginn oder am


Ende Leerzeichen enthält, können diese entfernt werden.
Leerzeichen innerhalb der Zeichenkette, d.h. zwischen
Wörtern, bleiben bestehen.

Keep spaces Vorhandene Leerzeichen am Anfang und Ende bleiben


bestehen

Kap. 5, S. 22 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 57/308

No spaces Leerzeichen am Anfang und am Ende werden entfernt

No trailing sp Leerzeichen am Ende werden entfernt.

Folgende Darstellung zeigt die Parametereinstellungen für die PRINTLINE-Unterebene.

Abbildung 63: Printline Unterebene mit Feld- und Variablendefinition

5.9.7 Der Befehl VARIABLE


Der Befehl VARIABLE definiert eine (indizierte) Variable zur Speicherung von Daten-Werten,
die entweder mit einem PRINTLINE- oder RECORD-Befehl eingelesen werden. Diese Werte
werden dann für die Ausgabe, für Berechnungen, in Ausdrücken, für die Evaluierung von
Bedingungen etc. weiterverwendet.
Das Symbol für diesen Befehl findet man in der Symbolleiste "Frequent Commands".

Abbildung 64: Dialogfenster

Folgende Werte werden für die Parameter angegeben:

Variable Name (1) Im obigen Dialog wird in die Variable GENDER das
Geschlecht des Adressaten eingelesen. Für diese Variable
ist das Format "Text" vorgesehen.

Start (2) Die Variable beginnt bei Position 110. Die Verwendung des
Zeichen "*" unterliegt dabei denselben Bestimmungen wie
für den Befehl FIELD.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 23


58/308 Lektion 1: Einfaches Dokument

Length (3) Die Länge der Variablen beträgt 1 Byte. Die Verwendung
des Zeichen "*" unterliegt dabei denselben Bestimmungen
wie für den Befehl FIELD.

Type (4) Als Variablentyp ist "Text" definiert, die Variable wird als
String eingelesen.

Falls die eingelesenen Strings am Beginn oder am Ende Leerzeichen enthalten, können
diese entfernt werden. Leerzeichen innerhalb des Strings bleiben bestehen.

5.9.8 Der Befehl RULE


Der Befehl RULE ermöglicht die Ausgabe einer Linie mit PRINTLINE oder OUTLINE.
Das entsprechende Symbol ist in der Symbolleiste "Frequent Commands" zu finden:

Abbildung 65: Dialogfenster

In diesem Beispiel ist die Länge der Linie dynamisch über Positionsschlüsselwörter
spezifiziert.
Man definiert Position und Länge der Linie wie folgt:
LASTMAX (1)
Die horizontalen und vertikalen Offsets der rechten unteren Ecke eines virtuellen
Rechtecks, das das unmittelbar vorangehende Unterebenen-Objekt des aktuellen
Hauptebenen-Objektes umfasst.
MIN (2)
Die äußerste linke Position, die durch den übergeordneten Hauptebenenbefehl
vorgegeben ist. Das heißt, die Linie ist so lang wie die vorangehende Adresszeile.

Die Form der Linie wird mit den Parametern "Line thickness" (3) und "Type" (4) spezifiert. In
diesem Fall wird eine durchgehende Linie mit der Stärke 1 PEL gezeichnet.

Im Fenster "View Document" werden gestrichelte und punktierte Linien immer als
durchgezogen angezeigt. Mit Menü TOOLS|Generate and view kann die tatsächliche
Ausgabe sichtbar gemacht werden.

Kap. 5, S. 24 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 59/308

5.9.9 Der Befehl OUTLINE


Der Befehl OUTLINE ist ein Ausgabebefehl. Er leitet eine OUTLINE-Formatierungsebene ein
und gibt (formatierte) Daten aus, die mit einem vorangehenden PRINTLINE- oder
RECORD-Befehl eingelesen wurden oder sich aus der internen Verarbeitung ergeben.

Der OUTLINE-Befehl selbst nimmt noch keine Ausgaben vornimmt. Er wirkt wie eine
Klammerung und definiert das Verhalten bei Seitenumbrüchen mit "Widow" und "Orphan"
oder den Zusammenhalt ohne Seitenumbruch aller Ausgaben für die in der Unterebene
folgenden Befehle.
Das entsprechende Symbol findet man in der Symbolleiste "Frequent Commands". Der
folgende Dialog wird geöffnet:

Abbildung 66: Dialogfenster

In diesem Beispiel ist für die OUTLINE nur deren Position spezifiziert. Für die OUTLINE
wurde kein Name vergeben, weil auch keine Wiederholungen definiert sind.
Eine vollständige Aufstellung aller Unterebenenbefehle des OUTLINE-Befehls ist in Anhang 1
zu finden.

5.9.10 Der Befehl PLACE


Der Befehl PLACE ermöglicht unter anderem die Ausgabe:

“ des Inhalts eines Ausdrucks wie z.B. des Inhalts einer Variablen,
“ eines direkt spezifizierten Textstrings,
“ einer direkt spezifizierten Zahl

auf einer PRINTLINE- oder OUTLINE-Unterebene.

Der Befehl PLACE bietet ein Subset der Möglichkeiten des OUTPUT-Befehls und soll
anstelle dieses Befehls in Applikationen mit besonderen Leistungsanforderungen verwendet
werden.
Das entsprechende Symbol befindet sich in der Symbolleiste "Frequent Commands":

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 25


60/308 Lektion 1: Einfaches Dokument

Abbildung 67: Dialogfenster

In diesem Beispieldialog wird in Abhängigkeit von der Variablen GENDER z.B. der Textstring
"Dear Mr. " über dem Verknüpfungsoperator (Rufzeichen !) mit der Variablen LNAME
verbunden. Direkt eingegebener Text wird in einfachen Anführungszeichen angegeben.
Auf der linken Seite dieses Dialogs werden die Parameter ausgewählt, die für den
PLACE-Befehl spezifiziert werden sollen. Je nach Auswahl verändert sich die rechte Hälfte
des Dialogs.

5.9.11 IF-THEN-ELSE Steueranweisung


Für bedingte Verarbeitung stehen die Befehle IF, THEN und ELSE zu Verfügung.
Das Ergebnis des Bedingungsausdrucks kann nur WAHR oder FALSCH sein.

WAHR Jeder Wert ungleich null oder eine Bedingung, die erfüllt ist
("1","M","1<2")

FALSCH Der Wert Null oder eine Bedingung, die nicht erfüllt ist
("0","A-A","1<1")

Die Symbole für IF und ELSE befinden sich in der Symbolleiste "Frequent Commands". Der
Befehl THEN wird automatisch mit dem IF-Befehl eingefügt.

Abbildung 68: Dialogfenster

Im Beispieldialog definiert man die folgende Bedingung:


UPPER(GENDER)=='M'
Die Funktion UPPER ersetzt alle Zeichen der Variablen GENDER durch Großbuchstaben.
Damit wird verhindert, dass die Bedingung bei Kleinbuchstaben in den Variablenwerten (die
aus den Daten kommen) nicht erfüllt ist.

Die Bedingung IST GLEICH wird als doppeltes IST-GLEICH-Zeichen (==) eingegeben.

Kap. 5, S. 26 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 61/308

Aus der folgenden Abbildung ist ersichtlich, dass die Auswahl der Anrede ("Dear Mrs. ...",
"Dear Mr. ..." oder "Dear Sirs!") mit Hilfe von zwei IF-Bedingungen anhand der Variablen
GENDER implementiert wird.

Abbildung 69: Verschachteltes IF-THEN-ELSE

5.9.12 SELECT-CASE-Verarbeitung (Lektion 1a)


Für komplexere bedingte Verarbeitung ist die Verwendung der Befehle SELECT und CASE
oftmals praktischer.
Der SELECT-Befehl enthält eine Variable oder einen bedingten Ausdruck, dessen Wert mit
den Werten der folgenden CASE-Befehle verglichen wird. Es wird jener CASE-Befehl
ausgeführt, der bei diesem Vergleich den Wahrheitswert WAHR ergibt. Die Symbole für die
beiden Befehle befinden sich in der Symbolleiste "Frequent Commands".

Abbildung 70: SELECT-Anweisung anstatt verschachtelter IF-THEN-ELSE-Anweisungen

Diese Verarbeitung funktioniert äquivalent zur oben beschriebenen verschachtelten


IF-THEN-ELSE-Verarbeitung. Der DOCDEF-Code dieses SELECT-CASE-Beispiels findet
sich in lesson01a.dfa.

CASE-Bedingungen dürfen nur konstante Werte enthalten. Ein Ausdruck wie z.B. "CASE
A<>0" ist nicht zulässig.
SELECT-CASE bei der Abfrage von Wertebereichen
Im folgenden Beispiel wird SELECT/CASE dazu verwendet, nicht einzelne Werte, sondern
ganze Wertebereiche abzufragen. Dieses Beispiel ist nur dazu gedacht, diese Möglichkeit
vorzuführen, stellt aber keinen Bestandteil der Lektion dar.
Im Gegensatz zum vorherigen Beispiel findet die Abfrage der Variablen nicht im
SELECT-Befehl statt, sondern in den einzelnen CASE-Befehlen. In SELECT wird nur nach
dem Wert 1, d.h. nach einer wahren Aussage, abgefragt. Derjenige CASE-Befehl, der die
wahre Aussage enthält ("true" retourniert), wird ausgeführt, d.h. "AGE is > 10 and AGE is <=
30" wird ausgegeben.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 27


62/308 Lektion 1: Einfaches Dokument

Abbildung 71: SELECT-CASE mit Wertbereichen für die Variable

5.9.13 Der Befehl TEXT


Der Befehl TEXT gibt Text in einer PRINTLINE oder OUTLINE aus.
Das entsprechende Symbol befindet sich in der Symbolleiste "Frequent Commands":

Abbildung 72: Dialogfenster

In Lektion 1 werden explizit folgende Parameter definiert:

Horizontal position LEFT - Bezeichnet die zum linken Rand nächste


bedruckbare Position im Koordinatensystem der
PRINTLINE oder OUTLINE.

Vertical position: NEXT+8 mm

Kap. 5, S. 28 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 63/308

Texteingabefeld Text, der mit dem Befehl TEXT ausgegeben werden soll,
wird in einfachen Anführungszeichen eingegeben. Wie aus
dem Beispieldialog hervorgeht, kann der TEXT-Befehl auch
Variablen, Funktionen sowie Unterbefehle beinhalten. Diese
Unterbefehle dienen z.B. zum Wechseln der Schriftart, zur
Bestimmung der Textausrichtung, zum Einfügen von Zeilen-
und Absatzsprüngen.

Im TEXT-Befehl ist kein "!" für das Zusammenfügen notwendig.

5.9.13.1 Textbefehle
In Lektion 1 werden die im Folgenden beschriebenen Textbefehle vorgeführt. Textbefehle
sind Anweisungen, die sich entweder auf den Stil von Text beziehen (z.B. Farbe, Font,
Schriftschnitt) oder auf die Absatzformatierung (z.B Zeilenumbruch, Absätze, Ausrichtung,
Spalten). Über Textbefehle können auch externer Text (ELEMENT, DFACODE, FILTER)
oder sogar Bilder (SEGMENT) einbezogen werden. Die unten aufgelisteten Textbefehle
finden ausschließlich im Befehl TEXT (und einem später beschriebenen Befehl) Verwendung.
Neben den Textbefehlen können aber auch diverse Funktionen im Befehl TEXT eingesetzt
werden, wie z.B. die Funktion FIRSTUP.

NEWLINE Fügt einen Zeilenumbruch ein.

NEWPARAGRAPH Fügt ebenfalls einen Zeilenumbruch ein und beginnt einen


neuen Absatz. D.h. der folgende Absatz kann neu
ausgerichtet werden.

NORMAL Wechselt die Schriftart zu Normal.

BOLD Wechselt die Schriftart zu Fett. Der Font dafür wird in der
FONT-Definition bestimmt.

COLOR Definiert eine Farbe, die weder eine Standardfarbe ist, noch
im Befehl DEFINE COLOR definiert wurde.

ALIGN CENTER Zentriert den folgenden Text.

ALIGN LEFT Richtet den folgenden Text am linken Rand aus.

Weitere TEXT-Steuerbefehle können im Anhang 2 dieses Kurshandbuches gefunden


werden. Details zu den Textsteuerbefehlen ist der Beschreibung des Befehls TEXT im
DocEXEC Referenzhandbuch oder der Papyrus Designer Online Help zu entnehmen.

5.9.13.2 Texteigenschaften

FIRSTUP Tauscht jeden Anfangsbuchstaben des spezifizierten


Strings durch einen Großbuchstaben aus.

Einfache Anführungszeichen werden durch zwei einfache Anführungszeichen repräsentiert,


weil das einfache Anführungszeichen als Textstringbegrenzung dient. Die Phrase "...we've..."
wird also als "...we''ve..." eingegeben.
Der Befehl TEXT bietet außerdem noch mehrere Funktionalitäten, die vor allem das
Verhalten bei Zeilenumbrüchen oder Worttrennung betreffen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 29


64/308 Lektion 1: Einfaches Dokument

NB space Um sicherzustellen, dass der Inhalt von Variablen oder


bestimmte Wörter eines Textes auf derselben Linie
ausgegeben werden, kann die Funktion NBSPACE
verwendet werden. Hierbei wird ein String definiert, z.B.
'##', der das Zusammenhalten der Wörter signalisiert. Der
String selber wird in der Ausgabe durch ein Leerzeichen
ersetzt.

Hyphen Es kann ein String definiert werden, z.B. '==', der bei
einem Zeilenumbruch das Wort an der entsprechenden
Stelle trennt. Der String selber wird durch einen Trennstrich
ersetzt.

Continue Die Option "Continue" bewirkt, dass zwei unmittelbar


aufeinander folgende TEXT-Objekte zusammengefasst
werden. Der Text des zweiten Objekts schließt unmittelbar
an den des vorausgehenden an; bestimmte Einstellungen,
die für das ganze Objekt getroffen werden wie z.B. "Width"
werden auch für das zweite Objekt übernommen. Die
beiden Objekte zusammen bilden nun einen gemeinsamen
Objektbereich.

5.9.13.3 Direkte Eingabe von Text


Der Befehl TEXT bietet die Möglichkeit, direkt über das Fenster "View Document" Text
einzugeben.
Über die Schaltfläche Edit the Text wird der Text Editor gestartet, der alle zur Formatierung
notwendigen Funktionalitäten bereitstellt.

Alle im Kurs verwendeten Texte - ohne Textsteuerbefehle - stehen im Unterverzeichnis "text"


der Kursumgebung zur Verfügung. Von dort können sie in einem Texteditor geöffnet werden,
kopiert und in Papyrus Designer eingefügt werden.

5.9.14 Der Befehl SEGMENT


Der Befehl SEGMENT gibt ein Image (Logo) mit einer PRINTLINE oder OUTLINE aus.
Das entsprechende Symbol findet man in der Symbolleiste "Frequent Commands":

Kap. 5, S. 30 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 65/308

Abbildung 73: Dialogfenster

In diesem Dokument wird die Unterschrift als Pagesegment mit dem Name SIGN1 eingefügt.
Das Pagesegment wird mit seiner oberen linken Ecke positioniert.
Beim SEGMENT-Befehl steht die Option "Inline" zur Verfügung. Diese Option bewirkt, dass
das Pagesegment an der Stelle für die es spezifiziert ist direkt in den AFP geschrieben wird.
Die Einstellungen für Ressourcen im APPLICATION-OUTPUT-FORMAT werden für dieses
Pagesegment übergangen.

Abbildung 74: Pagesegment SIGN1

Der Name des Pagesegments wird in diesem Beispiel ohne Präfix angegeben.

5.9.15 Die Definition des LOGICALPAGE FOOTERs


Das Beispiel in Lektion 1 enthält eine einfache Fußzeile, die die Seitennummer ausgibt. Um
eine Fußzeile zu definieren, ist das Symbol FOOTER aus der Symbolleiste "Definitions" in
das Fenster "FormatGroup Definitions" zu ziehen - direkt über die logische Seite, für die die
Fußzeile definiert werden soll.In diesem Beispiel enthält die Fußzeile die folgenden Befehle:

“ Einen ASSIGN-Befehl, um den einzelnen Seiten jeder Dokumentinstanz eine


Seitennummer zuzuweisen.
“ Einen OUTLINE-Befehl für die Ausgabe der Seitennummerierung an der spezifizierten
Position.

5.9.16 Der Befehl ASSIGN


Der Befehl ASSIGN weist einer Variablen, einen Wert zu, der selbst auch der Inhalt einer
Variablen sein kann. Das Symbol für den ASSIGN-Befehl befindet sich in der Symbolleiste
"Frequent Commands". Der Befehl wird in folgendem Dialog definiert.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 31


66/308 Lektion 1: Einfaches Dokument

Abbildung 75: Dialogfenster

In diesem Beispiel weist man der Variablen TOT_PAGE den Wert TOT_PAGE+1 zu. In
anderen Worten, der Wert der Variablen TOT_PAGE wird um 1 erhöht.

5.9.17 Der Befehl OUTPUT


OUTPUT ist ein den Befehlen OUTLINE und PRINTLINE untergeordneter Befehl und
ermöglicht unter anderem die Ausgabe:

“ des Inhalts eines Ausdrucks wie z.B. des Inhalts einer Variablen,
“ eines direkt spezifizierten Textstrings,
“ einer direkt spezifizierte Zahl

Der Befehl PLACE bietet ein Subset der Möglichkeiten des OUTPUT-Befehls und soll statt
dieses Befehls in Applikationen mit besonderen Leistungsanforderungen verwendet werden
soll.
Das Symbol für den OUTPUT-Befehl ist in der Symbolleiste "Frequent Commands" zu finden:

Abbildung 76: Die Befehle OUTLINE und OUTPUT

In diesem Beispieldialog spezifiziert man die folgenden Parameter:

“ Es soll der aus zwei Variablen und einem String zusammengesetzte String 'page
'!TOT_PAGE ausgegeben werden, der aus einem String und einer Variablen besteht, die
die aktuelle Seitennummer enthält.
“ Der Font, mit dem dieser String gedruckt werden soll, ist mit seinem internen, in der
FONT-Definition bestimmten Namen STD010 angegeben.
“ Die Position ist in horizontaler und vertikaler Richtung mit festen Werten angegeben.

Exkurs: Anzeige der Variablennamen anstatt der Variableninhalte

Kap. 5, S. 32 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 67/308

Manchmal mag es für Testzwecke erforderlich sein, im Papyrus Designer anstatt der
Variableninhalte die Variablennamen angezeigt zu bekommen.
Über View | Output syntax kann zwischen den beiden Ansichten hin- und her geschalten
werden:

Abbildung 77: Anzeigen des Wertes einer Variablen statt ihres Namens

5.10 Generierung des Dokuments in einem


DocEXEC-Produktionslauf
5.10.1 Dokumente mit Papyrus Designer generieren
Mit Papyrus Designer kann das Aussehen der Dokumente nicht nur festgelegt, sondern sie
können auch in begrenztem Rahmen generiert werden. Dazu öffnet man das Menü Tools in
der Menüleiste des Papyrus Designer.

Abbildung 78: Menü Tools, Generate

Generate Generiert den AFPDS des Dokuments mit Ausgabe im


Standard-Ausgabeverzeichnis laut Profildatei (z.B.
lesson01.prj).

Generate and view Generiert den AFPDS mit Ausgabe im


Standard-Ausgabeverzeichnis und öffnet diese Datei
anschließend mit Payprus Client. Diese Anwendung dient
u.a. zur Ansicht und zum Drucken von AFP-Dateien.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 33


68/308 Lektion 1: Einfaches Dokument

Generate PDF Generiert das Dokument im PDF-Format. Speicherort der


Ausgabe ist entweder das Standard-Ausgabeverzeichnis
oder ein Verzeichnis, das mit dem Befehl
DEFINEPDFOUTPUT festgelegt wurde (mehr darüber in
Lektion 5).

Generate and view as PDF Generiert ein PDF des Dokuments wie unter "Generate
PDF" beschrieben und öffnet ein PDF-Viewer Plug-in.

Die Plug-ins müssen in isiscomm\w3\plugins31 verfügbar sein. Wird ein Plug-in eines
Drittanbieters verwendet, muss dieses Plug-in in dieses Verzeichnis kopiert werden, z.B. ist
für das Adobe Reader Plug-in die Datei nppdf32.dll von
C:\Program Files\Adobe\Reader x.y\Reader\Browser
nach
c:\ISIS_PDDBasicCourse\isiscomm\w3\plugins31
zu kopieren.
Da Papyrus Designer lediglich für die Gestaltung, aber nicht für die eigentliche Produktion
von Dokumenten dienen soll, ist der Produktionsumfang auf 100 Seiten begrenzt. Die
eigentliche Massenformatierung von Dokumenten übernimmt Papyrus DocEXEC.

5.10.2 Dokumente mit Papyrus DocEXEC generieren


Wenn ein Projekt vollständig definiert ist, kann es mit einem Kommandozeilenaufruf von
DocEXEC in Produktion gehen. Es empfiehlt sich, den Kommandozeilenaufruf über eine
Batchdatei ("*.bat" unter Windows) zu steuern. Über die verschiedenen Möglichkeiten des
Kommandozeilenaufrufs und wie einzelne Profilparameter überschrieben werden können,
informiert der DocEXEC Installation and User's Guide.
Grundsätzlich gibt es vier Möglichkeiten, DocEXEC aus der Kommandozeile aufzurufen:

5.10.2.1 A. Übergabe von einzelnen Parametern im Kommandozeilenaufruf


Einzelne Parameter werden auf der Kommandozeile an DocEXEC übergeben, die u.U. die
Spezifikationen im Profil überlagern. Auf der Kommandozeile können auch
Umgebungsvariablen definiert werden; diese beginnen mit einem "$". Da "$" unter UNIX
reserviert ist, müssen die Definitionen von Umgebungsvariablen in diesem Betriebssystem in
einfachen Hochkommata eingeschlossen werden. Mehr zu Umgebungsvariablen in Lektion 5.
Beispiel unter Windows
pdew3 /profile=C:\ISIS_PDDBasicCourse\PDDBasic\userisis\ppde.prf /docdef=test01
/input=C:\ISIS_PDDBasicCourse\PDDBasic\data\test.asc
/output=C:\ISIS_PDDBasicCourse\PDDBasic\afpds300\test.afp

5.10.2.2 B. Übergabe einer Projektdatei im Kommandozeilenaufruf


Die Parameter sind in der Projektdatei enthalten, die anschließend von DocEXEC
ausgewertet wird.
Beispiel unter Windows:
pdew3 C:\ISIS_PDDBasicCourse\PDDBasic\docdef\test.prj

Die Pfadangabe richtet sich nach dem tatsächlichen Installationspfad dieses Kurses.

5.10.2.3 C. Übergabe einer Struct-Datei im Kommandozeilenaufruf


Sämtliche Parameter, die auf der Kommandozeile übergeben werden sollen, sind in dieser
Struct-Datei enthalten. Darüber hinaus sind mehrfache Aufrufe von DocEXEC möglich; jeder
dieser Aufrufe findet in einer eigenen Zeile statt. Der Vorteil beim Arbeiten mit Struct-Dateien
besteht darin, dass DocEXEC nur einmal gestartet wird, und solange aktiv bleibt und auf
Eingaben wartet, bis die letzte Aufgabe in der Struct-Datei abgearbeitet ist.
Beispiel unter Windows:

Kap. 5, S. 34 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 69/308

pdew3 @C:\ISIS_PDDBasicCourse\PDDBasic\docdef\struct.txt

Die Pfadangabe richtet sich nach der aktuellen Installation dieses Kurses.

5.10.2.4 D. Beschreibung der Batch-Datei


Das Verzeichnis ..\PDDBASIC\bat enthält eine Batchdatei lesson01.bat, die DocEXEC aufruft
und einzelne Parameter übergibt.
Im Detail werden die Parameter "c", "profile", "docdef", "input" und "output" spezifiziert.
/c
Legt fest, dass die DOCDEF auf jeden Fall zuvor kompiliert werden soll. Ist dieser Parameter
nicht definiert, wird die DOCDEF nur kompiliert, wenn keine entsprechende kompilierte
DOCDEF existiert. Kompilierte DOCDEFs werden in dem Verzeichnis abgelegt, das für den
DocEXEC Profile Parameter IDFDLIB spezifiziert ist.
/profile=..\pddbasic\userisis\ppde.prf
Enthält Default-Pfadangaben für Parameter und die Codepage-Parameter.
/docdef=lesson01
Hier wird lediglich der Name der DOCDEF ohne Erweiterung angegeben. Pfad und
Default-Erweiterung stehen im Profil. /input=lesson01.asc
Hier werden lediglich Name und Erweiterung der DOCDEF angegeben. Der Pfad ist im Profil
definiert.
/output=lesson01.afp
Die explizite Pfadangabe überlagert die Pfadangabe im Profil.
Starten der Batch-Datei
1. Doppelklick auf die Batchdatei
2. Nach dem DocEXEC-Lauf kann der erzeugte AFP über Papyrus Client betrachtet werden
Weitere Informationen über die Parameter von Papyrus DocEXEC findet man im ISIS
Papyrus DocEXEC Installation and User's Guide.

5.11 Der Import von TIFFs mit den Befehl SEGMENT (Lektion 1b)
Das Dokument von Lektion 1b weist dieselbe Struktur auf wie das Dokument von Lektion 1.
Es ist lediglich um einen Anhang erweitert, in dem verschiedene Möglichkeiten zum Import
von Bildern vorgeführt werden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 35


70/308 Lektion 1: Einfaches Dokument

Abbildung 79: Einfügen eines Page Segments in das Dokument

In Lektion 1 fand der Import von Pagesegments über den Befehl SEGMENT statt. Dieser
Befehl bietet auch die Möglichkeit, TIFF-Dateien zu importieren. Hierfür stehen zwei Wege
offen: Einerseits können TIFF-Dateien in Pagesegments konvertiert werden. Wie bei
herkömmlichen Pagesegments wird dann innerhalb des AFPDS auf diese Ressourcen
referenziert, oder sie können direkt in den AFPDS eingebettet werden (inline).
Grundsätzlich wird der Import von TIFFs über die DLL TIFFG4 durchgeführt.
Über den Befehl SEGMENT können nur schwarz-weiße single-page TIFFs importiert werden.
Der Import von farbigen TIFFs kann nur über den Befehl INVOKE DLL geschehen.
Falls der Import erfolgreich war, wird im Papyrus Designer das importierte Bild durch ein
rechteckiges gemustertes Feld dargestellt.

5.11.1 Option 1: Konvertierung in PSEGs


In diesem Beispiel wird die TIFF-Datei in ein Pagesegment konvertiert.

Kap. 5, S. 36 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 71/308

Abbildung 80: Dialogfenster

Segment Name (1) Eingabe eines Namens. Der eigentliche Name für das
umgewandelte Pagesegment wird vom Namen für die
TIFF-Datei abgeleitet.

Import DLL (2) Der Name der Import-DLL ist einzugeben.

File name (3) Eingabe des Namens der TIFF-Datei, die importiert werden
soll. Da der Befehl SEGMENT beim Importieren von TIFFs
nicht auf das Bibliotheksprofil zurückgreift (wo
Verzeichnisse für TIFFs angegeben werden können) muss
hier ein absoluter oder relativer Pfad zum Verzeichnis des
TIFFs angegeben werden.

Das Verzeichnis ..\PDDBasic\tiff enthält eine TIFF-Datei cheq001.tif, die für Testzwecke
importiert werden kann. Nach der Konvertierung befindet sich ein Pagesegment mit dem
Namen s1cheq00.300 in dem Verzeichnis für Pagesegments.
Da die Konvertierung in Pagesegmente die Performance drückt, soll in Anbetracht einer
großen Menge zu konvertierender Bilder in Erwägung gezogen werden, die Bilder vor dem
eigentlichen DocEXEC-Lauf mit dem Overview Image Editor oder dem Papyrus Image
Converter in Pagesegmente umzuwandeln.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 37


72/308 Lektion 1: Einfaches Dokument

5.11.2 Option 2: Einbetten in den AFPDS

Abbildung 81: Dialogfenster

Inline (4) Wenn "Inline" markiert ist, werden die TIFFs direkt in den
AFP eingebettet. Außerdem stehen dem Benutzer noch
Optionen offen, die Größe des Bildes zu verändern (5).

5.12 Der Import von Bildern über den Befehl INVOKE DLL
Ein weiterer Befehl, mit dem sich Bilder in das Dokument importieren lassen, ist INVOKE
DLL. Momentan werden zwei Bildformate unterstützt: TIFF und JPEG.
Dieser Befehl befindet sich im Menü "Frequent commands".
Um diesen multifunktionalen Befehl für den Import von Bildern zu nutzen, muss die
Subroutine IOBDEFS verwendet werden.

Kap. 5, S. 38 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 73/308

5.12.1 JPEGs mit INVOKE DLL importieren

Abbildung 82: Dialogfenster

DLL definition

DLL name Eingabe von IOBDLL

Function Eingabe von IOBDEFS

Position

X position LASTMAX + 10 MM

Y position SAME

FileName

Enter parameter value Eingabe der Datei, die importiert werden soll (ohne
Dateinamenserweiterung). Der Name muss nicht in
einfachen Anführungszeichen stehen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 39


74/308 Lektion 1: Einfaches Dokument

ObjectType

Select options Die Option "Other object data" auswählen.

OtherTypes

Select parameter value Die Option "Jpeg" auswählen.

5.12.2 TIFFs mit INVOKE DLL importieren


Außer JPEGs können über den Befehl INVOKE DLL auch TIFFs importiert werden. Die
Spezifikation der Parameter ist hierfür im Wesentlichen die gleiche wie für den Import von
JPEGs. Lediglich für OtherTypes wird anstatt Jpeg nun Tiff gewählt.
Mit INVOKE DLL lassen sich auch farbige mehrseitige Tiffs importieren, während die DLL
TIFFG4 nur für einseitige schwarz-weiße Tiffs geeignet ist.

5.13 Zusammenfassung
Diese Lektion zeigt, wie ein Projekt definiert wird und wie Eingabe- und Ausgabedaten
analysiert werden.
Es werden Schnittstellen für die Ein- und Ausgabedaten zu definiert
Weiters wird in dieser Lektion gezeigt, wie Dokumente generiert werden.

5.14 Fragen zu Lektion 1


“ Wie wird ein Designerprojekt definiert?

.................................................................................................................................

“ Warum ist die Datenanalyse ein wichtiger Schritt bei der Entwicklung eines Dokuments
und wie hilft Papyrus Designer dabei?

.................................................................................................................................

“ Mit welchem Befehl wird das Format der Inputdaten spezifiziert und wo wird dieser
Befehl definiert?

.................................................................................................................................

“ Mit welchem Befehl wird das Format der Ausgabe spezifiziert und wo wird dieser Befehl
definiert?

.................................................................................................................................

“ Wo und wie sind die Schriftarten zu definieren, die für das zu erstellende Dokument
benötigt werden?

.................................................................................................................................

Kap. 5, S. 40 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 1: Einfaches Dokument 75/308

“ Welche Elemente und Befehle sind für die Organisation einer Format Group möglich
bzw. notwendig?

.................................................................................................................................

“ Wo sind Befehle zu definieren, die auf jeder Seite ausgeführt werden sollen?

.................................................................................................................................

“ Welche Befehle werden für das Einlesen der Eingabedaten benötigt?

.................................................................................................................................

“ Auf welche Arten können Objekte positioniert werden?

.................................................................................................................................

“ Wie können TIFF- oder JPG-Dateien importiert werden?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 5, S. 41


76/308 Zusatzaufgabe 1: Vertikale Linien einfügen

6.0 Zusatzaufgabe 1: Vertikale Linien einfügen

Lektion 1 führte in die Ausgabe von Text durch den TEXT-Befehl ein. Dabei wurde unter
anderem gezeigt, wie verschiedene Steuerbefehle es ermöglichen, innerhalb einer einzigen
TEXT-Befehlsdefinition z.B. Text zu strukturieren oder Schriftarten, Schriftfarben sowie
Schriftgröße zu ändern.
Diese Zusatzaufgabe schließt an das Beispiel in Lektion 1 an und erweitert dieses: Der Name
des Workshops soll stärker hervorgehoben werden. Dafür werden senkrechte fettgedruckte
blaue Linien hinzugefügt, die auf beiden Seiten den Namen des Workshops sowie die
Absätze davor und danach umschließen. Der Abstand dieser Linien vom Text soll auf jeder
Seite 1 cm betragen.
Das Ergebnis sollte wie folgt aussehen:

Abbildung 83: Erweitern des Dokuments um senkrechte Linien

6.1 Vorbereitung
Man erstellt unter Verwendung der folgenden Angaben ein neues Projekt aus der
vorhandenen Lektion 1:
Basisbeispiel: Lesson 1b (lesson01b.prj)
Neue Projektdatei: MyAssignment01.prj
Neue DOCDEF: MyAssignment01

1. Man öffnet das oben angeführte Basisbeispiel in Papyrus Designer. Dieses dient als
Ausgangspunkt für die Zusatzaufgabe.

Kap. 6, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusatzaufgabe 1: Vertikale Linien einfügen 77/308

2. Man speichert das Projekt vor der weiteren Bearbeitung unter einem neuen Namen ab.
Dazu wählt man aus dem Menü File den Punkt Save Project as...

3. Dabei vergibt man im Dialogfenster Save Document as... einen neuen Namen sowohl
für die Projektdatei (Document Project Name) (1) als auch für die DOCDEF (Doc. Def.
File Name) (2) und bestätigt mit OK (3). Vorschläge für neue Namen sind oben
angegeben.

Dadurch wird vermieden, dass die mit der Kursumgebung mitgelieferten Beispiellösungen
überschrieben werden.

6.2 Lösungshilfe
Die Positionsschlüsselwörter "min", "max", "lastmin" und "lastmax" sollten für die
Positionierung der Linien verwendet werden.
Um vertikale Linien zu zeichnen, ist der Parameter "Direction" hilfreich.
Eine beispielhafte Lösung wird in der Projektdatei lesson01b_extended.prj gezeigt, die in
Papyrus Designer geöffnet werden kann.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 6, S. 2


78/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

7.0 Lektion 2: Fortgeschrittene Dokumentgestaltung

Das Dokument, das in Lektion 2 gestaltet werden soll, geht vom Dokument in Lektion 1 aus
und erweitert es um einige Funktionen. Teilweise werden die Befehle aus Lektion 1 um einige
Parameter erweitert, teilweise werden dafür neue Befehle benötigt.

7.1 In dieser Lektion vermitteltes Wissen


Lektion 2 (lesson02.prj) zeigt, wie

“ ein kundenabhängiges Logo einzufügen ist,


“ automatische Kopien des Dokuments anzufertigen und als solche zu markieren sind,
“ ein neues Datenformat einzulesen (in diesem Fall EBCDIC-Daten) ist,
“ wiederholte Datensätze einzulesen sind,
“ diese Daten in einer Tabelle (über TABLE/COLUMN) zu positionieren sind
“ eine Fußzeile mit dem Inhalt "page M of N" einzufügen ist,
“ für bestimmte Seiten eine konstante Fußzeile zu definieren ist,
“ Widow & Orphan-Steuerung zu implementieren ist.

Kap. 7, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 79/308

Abbildung 84: Dokument, das in Lektion 2entsteht

7.2 Datenanalyse, Eingabedefinition und wiederholte Datensätze


7.2.1 Datenanalyse
In Lektion 2 werden Host-Daten in EBCDIC-Format eingelesen. Auf deren
Dateneigenschaften muss im APPLICATION-INPUT-FORMAT (1) eingegangen werden.
Über den Schalter [Font Codepage] (2) wird auf den Parameter CODEFNT im
DocEXEC-Hauptprofil verwiesen. Da CODEFNT hier nicht explizit spezifiziert ist, wird als
Default Codepage 273 angenommen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 2


80/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 85: Dialogfenster

Es ist von Vorteil, die Codepage im DocEXEC-Hauptprofil zu spezifizieren statt sie in der
DOCDEF über die Option "User" händisch festzulegen, denn die DOCDEF bleibt
plattformunabhängig und braucht auch nicht geändert werden, wenn Entwicklung und
Produktion unterschiedliche Plattformen mit unterschiedlichen Codepages verwenden. Nur
die plattformspezifischen DocEXEC-Profile sind einmal richtig einzustellen.

Die Daten sind trotz EBCDIC-Format im Datenfenster lesbar!


Im folgenden Datenfenster ist zu sehen, dass die Daten - im Gegensatz zu Lektion 1 -
wiederholte Datensätze aufweisen:

Abbildung 86: Datenfenster mit den Eingabedaten von Lektion 2

7.2.2 Der Befehl RECORD


Anstelle des Befehls PRINTLINE, den lesson01.prj zum Einlesen der Zeilendaten verwendet,
wird nun als Alternative der Befehl RECORD eingeführt.
Der Befehl RECORD ist ein DOCFORMAT-Eingabebefehl. Er leitet eine Formatierungsebene
RECORD ein und liest einen (wiederholten) Datensatz aus einer Eingabedatei ein. Um einen
RECORD-Befehl einzufügen, zieht man das Symbol RECORD aus der Symbolleiste
"Frequent Commands" in das Fenster "Document Format Definitions".

Kap. 7, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 81/308

Abbildung 87: Dialogfenster

In diesem Beispiel wird für jede Dokumentinstanz nur ein RECORD eingelesen.

In diesem Beispiel ist kein Name für den ersten RECORD angegeben. Der RECORD-Name
ist eigentlich eine Variable, die die Anzahl der Wiederholungen zählt. Im Falle eines nicht
wiederholten Datensatzes ist es daher nicht sinnvoll, einen Namen zuzuweisen. Falls jedoch
ein wiederholter RECORD definiert und später die Anzahl der Wiederholungen benötigt wird,
muss dieser einen Namen haben (so wie es beim zweiten RECORD-Befehl der Fall ist).
Der Befehl PRINTLINE liest lediglich Adressinformationen ein und gibt diese unmittelbar
wieder aus, ohne diese in Variablen zu speichern. Einzig der Nachname "LNAME" wird in
einer Variablen abgelegt, da er noch ein zweites mal ausgegeben wird.
Der Befehl RECORD verfügt lediglich über den Funktionsumfang von PRINTLINE, der zum
Einlesen der Daten dient. Sollen diese auch ausgegeben werden, geschieht dies über
OUTLINE mit den entsprechenden Ausgabebefehlen. Mit RECORD werden alle Daten in
Variablen (mit Namen) gespeichert, da sie nicht mehr unmittelbar ausgegeben werden
können. Der erste Datensatz enthält - wie in Lektion 1 - die Adressinformationen, die in
mehrere Variablen eingelesen werden.
Da sich die folgenden Daten jedoch über mehrere Zeilen erstrecken, muss der folgende
RECORD-Befehl als wiederholter RECORD definiert werden. Aufgrund der Wiederholungen
dieses RECORDs werden Arrays von Variablen gebildet.

Abbildung 88: Liste der Variablen zum Einlesen der Datensätze

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 4


82/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 89: Dialogfenster

Es gibt vier Bedingungen, weshalb die Wiederholungsschleife eines RECORD-Befehls endet:

“ Die Anzahl der spezifizierten Wiederholungen wurde erreicht.


“ EOF wurde erreicht
“ Der Channel Code wechselt
“ Durch eine bestimmte Bedingung tritt der Befehl ENDREPEAT in Kraft (siehe
lesson04.prj).

Der Name des Record-Befehls ist eine Variable, die die Anzahl der eingelesenen Zeilen
enthält (1).

7.2.3 PRINTLINE/FIELD vs. RECORD/VARIABLE und OUTLINE/OUTPUT

Der Befehl PRINTLINE vereinigt die Funktionalitäten eines RECORD sowie einer OUTLINE;
der Befehl FIELD umfasst den Funktionsumfang der Befehle VARIABLE und OUTPUT.
Die Aufteilung RECORD/VARIABLE auf der Eingabe-Seite und OUTLINE/OUTPUT (oder
PLACE bzw. TEXT) aus der Ausgabe-Seite stellt eine Differenzierung gegenüber dem
Konzept PRINTLINE/FIELD dar, das jeweils Eingabe und Ausgabe zusammenfasst.
Während sich PRINTLINE/FIELD an das relativ starre PPFA-Konzept anlehnt, bietet
demgegenüber die differenziertere Arbeitsteilung von DOCDEF die Möglichkeit, Dokumente
wesentlich dynamischer aufzubauen.
Lektion 7 zeigt, wie eine PPFA-Anwendung in eine Papyrus Designer Anwendung importiert
wird.

Kap. 7, S. 5 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 83/308

Abbildung 90: PPFA im Vergleich zu DOCDEF hinsichtlich des Einlesens von Daten

7.2.4 Der Wechsel von PRINTLINE zu RECORD/OUTLINE

Wegen der funktionellen Aufteilung in Lese- und Schreibvorgänge wird nun zusätzlich eine
OUTLINE eingefügt, mit der die Daten der Adressaten nun ausgegeben werden können.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 6


84/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 91: "Übersetzen" von PRINTLINE zu RECORD/OUTLINE

7.2.5 Der Befehl PLACE

In diesem Beispieldialog sind die folgenden Parameter spezifiziert:

“ Es soll der aus zwei Variablen und einem String zusammengesetzte String ZIP!' '!CITY
ausgegeben werden.
“ Der Font, mit dem dieser String gedruckt werden soll, ist mit seinem internen, in der
FONT-Definition bestimmten Namen angegeben.
“ Die Position ist mit SAME in horizontaler und NEXT in vertikaler Richtung spezifiziert.

7.2.6 Exkurs: Objektgrößen


Die Unterebenen-Befehle OUTPUT, TEXT und SEGMENT berechnen anhand der
auszugebenden Objekte ihre Objektgröße.
Der Befehl PLACE verwendet im Gegensatz dazu eine fixe Größe und berechnet nicht die
tatsächliche Größe des Ausgabeobjekts.

Kap. 7, S. 7 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 85/308

Abbildung 92: Objektgrößen und relative Positionierung der Objekte

In obigem Beispiel werden diese Objektbereiche anhand der Rechtecke, die den Text oder
das Bild einschließen, dargestellt. Die Größe eines Objekts erhält dann Bedeutung, wenn
anschließend auszugebende Objekte über Positionsschlüsselwörter wie LASTMIN oder
LASTMAX positioniert werden sollen.

TEXT Der Befehl TEXT berechnet seine Objektgröße anhand der


Menge des auszugebenden Texts, des benutzten Fonts und
der auszugebenden Zeilen.

FIELD Der Befehl FIELD berechnet seine Objektgröße anhand


Menge des auszugebenden Texts und des benutzten Fonts.

OUTPUT Ähnlich dem Befehl FIELD berechnet der Befehl OUTPUT


seine Objektgröße anhand des benutzten Fonts.

PLACE Der Befehl PLACE besitzt eine fixe Objektgröße von 0.1 mal
0.1 Zoll, die unabhängig vom auszugebenden Font und der
auszugebenden Textmenge ist. Deshalb sollen nach
PLACE keine Positionsschlüsselwörter wie LASTMIN,
LASTMAX oder NEXT verwendet werden.

RULE Der Befehl RULE berechnet seine Objektgröße anhand der


Länge und der Stärke des Strichs.

SEGMENT Der Befehl SEGMENT berechnet seine Objektgröße


anhand des Umgangs des auszugebenden Bildes.

7.2.7 Exkurs: Zeilenabstand über LINESP


Die folgende Darstellung zeigt den Unterschied zwischen LINESP AUTO und LINESP mit
einem festen Wert für unterschiedliche Situationen
Eine automatische Wahl des Zeilenabstands bietet sich an, wo Objekte unterschiedlicher
Größe ausgegeben werden wie z.B. Textausgaben mit unterschiedlichen Fonts, die Ausgabe
mehrzeiliger TEXT-Befehle oder die Ausgabe von Pagesegmenten. Die folgende Darstellung
zeigt, wie der automatische Zeilenabstand das Überlappen von Objekten verhindert.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 8


86/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 93: Automatischer Zeilenabstand

Im Gegensatz dazu führt ein fest eingestellter Zeilenabstand zu ungewollten


Überschneidungen.

Abbildung 94: Zeilenabstand mit festgelegtem Wert

Ein fest eingestellter Zeilenabstand bietet sich dort an, wo einzeilige Texte z.B. mit dem
PLACE-Befehl ausgegeben werden sollen.

Kap. 7, S. 9 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 87/308

Der PLACE-Befehl berücksichtigt keine Objektgröße, der OUTPUT-Befehl aber sehr wohl.

Abbildung 95: Oben: Automatischer Zeilenabstand; Unten: Fixer Zeilenabstand

Dadurch käme es bei der Verwendung von LINESPACING AUTO bei gleichzeitiger
Verwendung von PLACE und OUTPUT zu ungleichmäßigen Zeilenabständen.

Abbildung 96: Zeilenabstand und Positionierung von PLACE und OUTPUT

Um sicherzustellen, dass der vertikale Zeilenabstand zwischen einem OUTPUT und einem
folgenden FIELD oder OUTPUT gleich wie der Basislinienabstand der Schriftart ist, wenn der
automatische Zeilenabstand aktiv ist, kann für diese Befehle die Option "Use font BLI"
verwendet werden.
Der Befehl TEXT bietet die Option "Baseline", um so wie OUTPUT oder FIELD den Text auf
der ersten Zeile zu positionieren.

7.3 Typen von Variablen


7.3.1 Wie werden Variablen erstellt?
VARIABLE oder FIELD
Die Befehle VARIABLE und FIELD wurden bereits in Lektion 1 und Lektion 2 eingeführt.
VARIABLE und FIELD bieten die Möglichkeit, Eingabedaten Variablen zuzuweisen, die im
weiteren Verlauf zur Dokumentengenierierung verwendet werden können.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 10


88/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

VARIABLE und FIELD können auf den Unterebenen von RECORD oder PRINTLINE definiert
werden, wobei folgende Kombinationen möglich sind:

PRINTLINE/FIELD Um Variablen zu definieren, muss FIELD ein Name


gegeben werden. Hierdurch kann der Inhalt nicht nur
ausgegeben sondern auch für die bedingte
Dokumentenverarbeitung verwendet werden.

PRINTLINE/VARIABLE Um Variablen zu definieren, muss VARIABLE ein Name


gegeben werden. Der Inhalt der Variablen kann nur über
einen Ausgabebefehl ausgegeben werden.

RECORD/VARIABLE Das Konzept von RECORD/VARIABLE (und


OUTLINE/OUTPUT) resultiert aus einer Differenzierung des
Konzepts von PRINTLINE/FIELD.

In den bisherigen Beispielen wurden die Variablen als indizierte Variablen (Defaulteinstellung
bei den Befehlen VARIABLE und FIELD) definiert. In den bisherigen Beispielen wurden
jedoch keine aus mehreren Elementen bestehenden Arrays erzeugt, sondern immer nur ein
Array, der aus einem Datenelement (also einer Variablen) besteht. Je nach Datenstruktur
können PRINTLINE oder RECORD wiederholt (repeated) werden, wodurch ein Array erzeugt
werden kann.
ASSIGN
Variablen können auch durch einen ASSIGN-Befehl ohne explizite Definition erzeugt werden.
Hierdurch kann die Deklaration einer Variablen an jedem Punkt im Dokumentenprozess
stattfinden.
{ ... } - Einen Namen über geschwungene Klammern referenzieren
Mit geschwungenen Klammern kann eine Variable (z.B. in einem ASSIGN-Befehl) über das
Referenzieren eines Namens erstellt werden. Der Vorteil dieser Methode ist, dass
Variablennamen dynamisch generiert werden können, was beispielsweise dann eine Rolle
spielt, wenn Variablen dynamisch angelegt werden sollen. So können Variablen aus
Eingabedaten erstellt werden, die nicht nur - wie bisher gezeigt - den Variableninhalt
aufweisen, sondern auch den Namen, mit dem die neue Variable erzeugt werden soll. So
erzeugen zum Beispiel die zwei ASSIGN-Befehle
VARNAME = 'CUSTOMER' ;
{VARNAME} = 'Smith' ;

eine Variable mit Namen CUSTOMER und dem Inhalt "Smith".


Das Konzept der dynamisch generierten Variablen wird in Lektion 5 vorgestellt.
Automatisch erzeugte Variablen
Während der Erstellung des Dokuments erzeugt Papyrus Designer/DocEXEC von sich aus
viele Variablen. Siehe hierzu den folgenden Absatz "Automatisch erzeugte Variablen".

7.3.2 Skalare oder indizierte Variable

7.3.2.1 Indizierte Variable


Indizierte Variablen bezeichnen Arrays, die aus mehreren Elementen bestehen. Jedes
Element des Array kann über einen Index in eckigen Klammern angesprochen werden.
Beispielsweise bezeichnet "CUSTOMER[5]" das fünfte Element des Arrays CUSTOMER.

Kap. 7, S. 11 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 89/308

Die Befehle VARIABLE oder FIELD legen als Default indizierte Variablen an. Hierfür wird der
dazugehörige Befehl PRINTLINE oder RECORD als "repeated" definiert. Mit jeder
Wiederholung inkrementiert dann der Index der Variablen (der nicht gesondert spezifiziert
werden muss).
Wenn über den Befehl ASSIGN eine indizierte Variable definiert werden soll, wird der Index
gesondert angegeben.
CUSTOMER[1] = 'Smith'; CUSTOMER[2] = 'Miller'; usw.
Wenn über geschwungene Klammern (beispielsweise mit dem Befehl ASSIGN) eine
indizierte Variable definiert werden soll, wird der Index gesondert angegeben, z.B.:
{CUSTOMER}[1] = 'Smith'; {CUSTOMER}[2] = 'Miller'; usw.

7.3.2.2 Skalare Variablen


Skalare Variable bezeichnen Variablen, die nur aus einem Datenelement ohne Index
bestehen.
Diese Variablen werden im Definitionsdialog des Befehls VARIABLE oder FIELD über die
Checkbox "Scalar" als solche spezifiziert. Wenn dennoch wiederholte PRINTLINEs oder
RECORDs verwendet werden, wird die Variable mit jeder Wiederholung überschrieben.
In Lektion 1 wurde die skalare Variable TOT_PAGE mit dem Befehl ASSIGN für die Zählung
der Seitennummern definiert. Durch den fehlenden Index wird lediglich eine skalare Variable
erstellt.

7.3.2.3 Zweidimensionale Arrays


Über die Funktion SETVARIABLECOLUMNS ist es möglich, eine Variable zu definieren, die
wie ein zweidimensionales Feld über zwei Indizes angesprochen werden kann. Zunächst
erfolgt die Definition über SETVARIABLECOLUMNS, bei der ein Name und die Anzahl der zu
bildenden Array angegeben wird. Z.B. in einem ASSIGN-Befehl:
ARRAY_OK = SETVARIABLECOLUMNS(ARRAY_SAMPLE,7);

Anschließend kann der zweidimensionale Array ARRAY_SAMPLE beispielsweise über einen


ASSIGN-Befehl gefüllt werden:
ARRAY_SAMPLE[2,7] = 'Smith';
ARRAY_SAMPLE[3,3] = 'Miller';

7.3.3 Gültigkeitsbereiche von Variablen


Variablen werden auch nach ihrer Gültigkeit unterschieden:
Lokale Dokumenten Variablen (gültig für eine Dokumenteninstanz)
Diese Variablen behalten ihren Wert über eine einzige Dokumentinstanz und verlieren ihren
Wert beim Wechsel zum nächsten Dokument. Das bedeutet, dass sie für jedes Dokument
neu definiert werden müssen.
Lokale DOCFORMAT Variablen (gültig für ein DOCFORMAT)
Diese Variablen behalten ihren Wert über ein einziges DOCFORMAT und verlieren ihren
Wert beim Wechsel zum nächsten DOCFORMAT. Der Name dieser Variablen muss stets mit
einem Tilde-Zeichen ("~") als Präfix gekennzeichnet werden, z.B. "~CUSTOMER".
Globale Variablen (gültig für alle Dokumente)
Globale Variablen behalten ihren Wert über alle Dokumentinstanzen hinweg und werden
daher nicht für jedes Dokument neu definiert. Die Namen dieser Variablen erhalten das Präfix
"&" (z.B. &var1). Diese Art globaler Variablen wird häufig vor Formatierung des ersten
Dokuments in einem besonderen DOCFORMAT erzeugt ($_BEFOREFIRSTDOC - Siehe
Lektion 3).

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 12


90/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Umgebungsvariable (gültig für alle Dokumente)


Einen anderen Typ von globalen Variablen stellen die so genannten Umgebungsvariablen
dar, die anstatt in der DOCDEF, in der Projektdatei definiert werden. Mit ihrer Hilfe lassen
sich Variablenwerte als Parameter beim Programmaufruf übergeben. Mehr über
Umgebungsvariable in Lektion 5.

7.3.4 Automatisch erzeugte Variablen


Es gibt zwei weitere Variablentypen, die automatisch erzeugt werden.
Systemvariablen
Die Namen von Systemvariablen beginnen mit einem Dollar-Zeichen ($). Bei diesen
Variablen handelt es sich um Variablen, die nur gelesen werden können, die von DocEXEC
erzeugt und zur Verfügung gestellt werden. Sie können z.B. als Elemente von Formeln und
Positionsausdrücken verwendet werden. So kann z.B. die Systemvariable $MR_LEFT, die
den Wert des linken Seitenrandes enthält, anstatt LEFT für die Spezifikation der X-Position
verwendet werden.
Befehlsgenerierte Variablen
Das sind Variablen, die durch den Aufruf eines bestimmten Befehls (z.B. AFPIMPORT oder
SQLQUERY) automatisch erzeugt werden. Diese Variablen werden im Papyrus Output
Management Kurs beschrieben.

7.4 Definitionen
7.4.1 Der Befehl SUBSTITUTE
In Lektion 1 wurde die Auswahl der Anrede "Dear Mrs. ..." oder "Dear Mr. ..." mit Hilfe einer
IF-THEN-ELSE-Bedingung implementiert. Um zu viele IF-Bedingungen zu vermeiden, wird
diese Auswahl jetzt mit Hilfe einer Ersetzungstabelle über den Befehl SUBSTITUTE
getroffen.

Das Symbol für diesen Befehl findet man in der Symbolleiste "Definitions". Dieser Befehl wird
im Fenster "FormatGroup Definitions" angezeigt. Sobald man das Symbol in dieses Fenster
zieht, fügt Papyrus Designer automatisch den Befehl DEFINITIONS ein. Der Befehl
SUBSTITUTE wird im folgenden Dialog spezifiziert:

Abbildung 97: Dialogfenster

In diesem Dialog ist die Ersetzungstabelle zu benennen, ein Default-Wert zu definieren und
eine Liste von Strings zu erstellen, die durch andere Strings ersetzt werden sollen.

Kap. 7, S. 13 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 91/308

Diese Substitutionstabelle wird später mit der Funktion SUBSTITUTE aufgerufen. Dazu siehe
das folgende Beispiel:
SUBSTITUTE(<Tabellenname>,<Variablenname>)

also:
SUBSTITUTE(GENDER_TABLE,GENDER)

Abbildung 98: Verwendung der Funktion "Substitute"in einer PLACE-Anweisung

Mit dieser Funktion wird der Inhalt der Variablen GENDER in der Ersetzungstabelle
GENDER_TABLE gesucht. Falls der String gefunden wird, wird der Variableninhalt
entsprechend der Tabelle ersetzt.

Eine Ersetzungstabelle kann auch direkt im Definitionsdialog des Befehls VARIABLE


aufgerufen werden:

Abbildung 99: Ersetzungtabelle im Dialogfenster "Variable" festlegen

7.4.2 Der Befehl TEXTELEMENT


Ein weiterer Befehl, der auf der DEFINITIONS-Ebene definiert wird, ist der Befehl
TEXTELEMENT. Mit diesem Befehl können Textblöcke definiert werden, die im Laufe der
Dokumentverarbeitung an späterer Stelle eingebunden werden.
Das entsprechende Symbol befindet sich in der Symbolleiste "Definitions". Wie beim Befehl
SUBSTITUTE wird von Papyrus Designer automatisch eine DEFINITIONS-Ebene eingefügt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 14


92/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 100: Dialogfenster

Im gegenwärtigen Beispiel wird der Haupttext des Dokuments als TEXTELEMENT definiert.
Wie im obigen Dialog zu sehen ist, können in einem TEXTELEMENT die gleichen
Steuerungsbefehle wie im TEXT-Befehl verwendet werden.
Der Name des Textelements wird dann in einem folgenden TEXT-Befehl nach dem
Steuerungsbefehl ELEMENT eingefügt: ELEMENT TXT_ELEM.
Wie eine Ersetzungstabelle wird auch ein Textelement in die DOCDEF eingetragen:

Abbildung 101: DOCDEF source code des TEXTELEMENTs von Lektion 2

7.5 Die Befehle im Fenster "Document Format Definitions"


In den Lektionen 2 und 3 werden Tabellen erstellt. Während Lektion 2 hierfür den Befehl
TABLE verwendet, greift Lektion 3 auf wiederholte OUTLINEs zurück. Über TABLE können
schnell einfache Tabellen erzeugt werden, über wiederholte OUTLINEs lassen sich sehr
komplexe Tabellen gestalten, die allerdings einen höheren Aufwand an Programmierung
erfordern.

7.5.1 Der Befehl ASSIGN mit Maßeinheiten


Der Befehl ASSIGN wurde bereits in Lektion 1 für die Zuweisung von Positionsangaben
eingeführt, auch hier kommt er auf die gleiche Weise zum Einsatz:
ASSIGN TABLE_GAP = MM(1)

Kap. 7, S. 15 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 93/308

In dieser Form wird der Variablen nicht nur ein Wert, sondern zusätzlich auch die Maßeinheit
zugewiesen. Die Variable TABLE_GAP (im Befehl TABLE) wird für den Abstand zwischen
den Tabellengitterlinien und dem Text in den Zellen gebraucht werden.
Folgende Abbildung zeigt die Funktionen MM, CM, INCH, PELS und POINTS die auf der
Basis verschiedener Einheiten jeweils die gleiche Entfernung (1 Zoll) einer Variablen
zuordnen. Alle werden zunächst intern auf 1440 ppi konvertiert.

Abbildung 102: Wertzuweisung an Variable in Maßeinheiten

7.5.2 Tabellen über die Befehle TABLE und COLUMN

Abbildung 103: Tabelle mit TABLE- und COLUMN-Befehlen erzeugen

In dieser Lektion werden über einen wiederholten RECORD-Befehl mehrere Datensätze


eingelesen. Die Struktur dieser Datensätze eignet sich für eine Ausgabe in Form einer
Tabelle.
Wiederholte Datensätze können als einfache Tabellen mit einem Standardgitter/-umrandung
sehr leicht mit dem Befehl TABLE definiert werden.

Das Symbol hierzubefindet sich in der Toolbar "Frequent Commands". Man legt jede Spalte
innerhalb der Tabelle über einen Befehl COLUMN an. Erst auf dieser Ebene erfolgt die
Ausgabe der eigentlichen Inhalte über Ausgabebefehle wie TEXT, OUTPUT oder PLACE.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 16


94/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

7.5.2.1 Der Befehl TABLE

Abbildung 104: Dialogfenster "Table Parameters"

In diesem Beispiel spezifiziert man den Befehl wie folgt:

Name LINES

Repeat INGREDIENTS

Widow 3

Orphan 3

Position Horizontal: LEFT + 10 MM; Vertical: NEXT + 15 MM

Line thickness Über den Radio-Button [Expr.] kann ein Ausdruck (1 PELS)
im Eingabefeld eingegeben werden.

Type solid

Gap TABLE_GAP

Name
Der Name des TABLE-Befehls ist eine Variable, die die Nummer der aktuellen Wiederholung
speichert (so wie der Name eines Befehles RECORD oder OUTLINE). Den Namen der
Tabelle kann man dazu verwenden, eine aktuelle Zeilennummer auszugeben.
Repeat
Legt die Anzahl der Zeilen fest, die von dem TABLE-Befehl ausgegeben werden sollen.
INGREDIENTS ist der Name des RECORD-Befehls (und daher auch eine Variable), der die
Anzahl der eingelesenen Datensätze speichert.
Widow and Orphan
In den Feldern "Widow" und "Orphan" ist die Mindestzahl von Zeilen anzugeben, die bei
einem Seitenumbruch zusammengehalten werden sollen.

Kap. 7, S. 17 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 95/308

“ WIDOW legt die Mindestanzahl der Wiederholungen einer OUTLINE fest, die auf der
Seite, die den Seitenumbruch auslöst, formatiert werden sollen.
“ ORPHAN legt die Mindestanzahl der Wiederholungen einer OUTLINE fest, die auf der
Seite nach dem Seitenumbruch formatiert werden sollen.
In diesem Beispiel sind beide Parameter mit dem Wert 3 spezifiziert. Im Zieldokument ist zu
sehen, dass auf der zweiten Seite drei OUTLINEs zusammengehalten werden.
"Orphan" dominiert "Widow", falls nur eines der beiden Kriterien erfüllt werden kann (z.B. 4
Wiederholungen, "Widow" = 3 und "Orphan" = 3: alle 4 Wiederholungen werden auf der
folgenden Seite platziert). Die Spezifikation für "Widow" wird dabei ignoriert.

7.5.2.2 Der Befehl COLUMN


Der Befehl COLUMN (zu finden in der Werkzeugleiste "Frequent commands") wird auf der
Unterebene von TABLE spezifiziert:

Abbildung 105: Dialogfenster "Column"

Name Der Name von COLUMN ist eine Variable, die die Breite der
Spalte, umgelegt auf 1440 ppi enthält.

Width Legt die Breite der Spalte fest.

Die folgenden Spalten werden angelegt:

Name Width
COL_POS 8 MM
COL_ARTICLE 30 MM
COL_AMOUNT 17 MM
COL_TOTAL 25 MM

1. Spalte
Die erste Spalte zeigt eine fortlaufende Nummerierung, den Zeilenzähler an. Hierzu wird der
Inhalt der Variablen LINES ausgegeben (der Zeilenzähler von TABLE).

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 18


96/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 106: Der Wert von LINES wird in Spalte 1 ausgegeben

2. Spalte
Die zweite Spalte platziert den Namen des Artikels über den Befehl PLACE.

Abbildung 107: Ausgabe des Werts der Variable "Article" in Spalte 2

3. Spalte
Die dritte Spalte gibt die Menge des Artikel aus, umgewandelt in einen String mit einem
bestimmten Format, sowie die Einheit für die Angabe der Menge.

Kap. 7, S. 19 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 97/308

Abbildung 108: In Spalte 3 druckt OUTPUT die Variable "Amount", PLACE die Variable "Unit"

4. Spalte
Die vierte Spalte gibt den Preis für das jeweilige Produkt aus.

Abbildung 109: In einem OUTPUT-Befehl wird der Gesamtpreis des Artikels in Spalte 4 platziert

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 20


98/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

7.5.3 Die Funktion NUMPICTURE


Im OUTPUT-Befehl der dritten und vierten Spalte wird die neue Funktion NUMPICTURE
eingeführt:

Abbildung 110: Verwenden von NUMPICTURE in einem OUTPUT-Befehl

NUMPICTURE(<Ausdruck>,<Format>) - Ergibt einen Wert im festgelegten <format>.


In diesem Beispiel verwendet man die Funktion folgendermaßen:
NUMPICTURE(TOTAL,'#,##0.00 USD')

Wenn der Wert der Variablen TOTAL 15 beträgt, liefert die Anwendung dieser Funktion:
"15.00 USD".
Folgende Formatzeichen werden bei der Maske verwendet:

# jede Ziffer (0 bis 9) oder nichts

0 jede Ziffer (0 bis 9) oder das Zeichen Null

. obligatorischer (Default) Dezimalseparator

, obligatorischer (Default) Tausenderseparator

Über weitere Formatiermöglichkeiten mit diesem Befehl gibt das DocEXEC


Referenzhandbuch oder die Papyrus Designer Online Help Auskunft.

Weiters ist zu beachten, dass im OUTPUT-Befehl der Parameter ALIGNMENT auf DECIMAL
gesetzt ist. D.h. alle Werte, die mit diesem Befehl ausgegeben werden, werden an ihrem
Dezimalseparator ausgerichtet (siehe Zieldokument).

7.5.4 Der Befehl KEEP


Der Befehl KEEP ist ein DOCFORMAT-Steuerungsbefehl, der formatierte Objekte bei einem
Seitenumbruch zusammenhält.

Das entsprechende Symbol befindet sich in der Symbolleiste "Frequent Commands":

Kap. 7, S. 21 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 99/308

Abbildung 111: Dialogfenster KEEP

In diesem Beispiel verhindert dieser Befehl, dass die Grußformel "With my best regards,"
vom Rest des Textes getrennt wird und damit am Anfang einer Seite stehen kann.

7.5.5 Der Befehl ENDGROUP


Der Befehlt ENDGROUP wirkt als eine Art Schalter, der das grundsätzlich seitenorientierte
"Speicherverhalten" von DocEXEC auf ein dokumentenorientiertes umstellt.
Das Auftreten eines ENDGROUP-Befehls in einer DOCDEF signalisiert, dass im Lauf der
Erstellung des Dokuments (zum Zeitpunkt der Ausführung) alle formatierten Seiten im
Speicher verbleiben sollen, bis der ENDGROUP-Befehl ausgeführt wird. Ohne ENDGROUP
würde eine Seite formatiert und sogleich ausgegeben werden. Dazu muss DocEXEC den
Befehl ENDGROUP bereits zum Zeitpunkt des Kompilierens im DOCDEF-Code
erkennen! Es ist also Vorsicht geboten, wo ENDGROUP positioniert wird: Sollte
ENDGROUP beispielsweise in einem externen DOCFORMAT stehen, kann DocEXEC ihn
nicht zur Kompilierzeit erkennen und daher nicht die Seiten im Speicher halten.

Das Symbol des Befehls ist in der Symbolleiste "Frequent Commands" zu finden:

Abbildung 112: Angabe der Kopienanzahl in einer ENDGROUP-Definition

Die Gruppe von Seiten, die im Speicher gehalten werden, wird dann ausgegeben, wenn der
Befehl ENDGROUP ausgeführt wird. Eine weitere Verarbeitung der Seiten ist nur mit dem
Befehl LOGICALPAGE PRINTFOOTER möglich, der vom Druckmechanismus ausgelöst
wird, also eigentlich mit dem Befehl ENDGROUP. Diese weitere Verarbeitung kann sich z.B.
auf eine Gesamtseitenzahl, z.B. 100, beziehen, wobei der Wert 100 erst bei der Ausführung
des Befehls ENDGROUP verfügbar ist. Somit können auf den einzelnen Seiten Seitenzahlen
in der Form "1 von 100", "2 von 100" etc. gedruckt werden.

Da ENDGROUP alle formatierten Seiten im Speicher hält, bis sie ausgegeben werden,
muss genügend Speicherplatz zur Verfügung stehen, um auch alle Seiten lagern zu
können; dieser Umstand muss besonders bei der Erstellung großer Dokumente
berücksichtigt werden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 22


100/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Die Anzahl der Seiten, die im Speicher gelagert werden können, hängt vom
Speicherplatz ab, den die Seiten benötigen. Falls Leistungsprobleme auftreten, soll
dieser Aspekt untersucht und die Nutzung des Speicherplatzes optimiert werden. Als
"Daumenregel" kann von einer Speicherbelastung von 100 KB pro Seite ausgegangen
werden (sehr viel mehr als die resultierende AFP-Seite!).
Es können außerdem mehrere Kopien von Dokumentgruppen spezifiziert werden, wie im
obigen Beispieldialog schon angedeutet ist. Die folgende Darstellung veranschaulicht wie
nach Erreichen von ENDGROUP der LOGICALPAGE PRINTFOOTER ausgelöst wird und
nacheinander die Dokumentkopien formatiert. Da es sich um Kopien handelt, bleibt der
Speicheraufwand der gleiche wie einem Dokument.

Abbildung 113: Verarbeitungsfluss nach einer ENDGROUP Anweisung

7.6 Die Befehle im Fenster "FormatGroup Definitions"


7.6.1 Der LOGICALPAGE PRINTFOOTER
Der LOGICALPAGE PRINTFOOTER wird für alle Instanzen der momentan im Speicher
gehaltenen LOGICALPAGE ausgeführt. Seine Ausführung wird durch den Befehl
ENDGROUP ausgelöst. Um einen PRINTFOOTER zu definieren:

Man zieht dazu das Symbol LOGICALPAGE PRINTFOOTER aus der Symbolleiste
"Definitions" auf das gewünschte LOGICALPAGE-Symbol.
In der folgenden Abbildung des "FormatGroup Definitions"-Fensters wird die Organisation
des LOGICALPAGE PRINTFOOTERS für das Zieldokument veranschaulicht. Der
PRINTFOOTER fügt den Seiten folgendes hinzu:

“ eine Kopie-Markierung auf den Kopien Nr. 2 und 3,


“ ein spezielles Overlay auf die jeweils letzte Seite einer Dokumentkopie

Kap. 7, S. 23 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 101/308

Abbildung 114: PRINTFOOTER des Dokuments von Lektion 2

7.6.2 Der Befehl FOR


Der Befehl FOR leitet eine FOR-Schleife ein. Die Befehle innerhalb einer FOR-Schleife
werden so oft wiederholt, wie es im Parameter REPEAT festgelegt ist.

Das Symbol für den Befehl FOR befindet sich in der Symbolleiste "Frequent Commands".

Abbildung 115: Einstellungen für den FOR-Befehl

Im Feld "For name" wird der Name der Schleifenvariablen angegeben (Zähler), in diesem
Beispiel "I" (Großbuchstabe i). "Repeat count" entspricht dem Zielwert, d.h. bei jedem
Schleifendurchlauf wird der Zähler um 1 erhöht bis der Zielwert erreicht ist (I = 5). In diesem
Beispiel werden also alle Unterbefehle des FOR-Befehls fünfmal ausgeführt.

7.6.3 Weitere Parameter des Befehls OUTPUT


In diesem Beispiel für den PRINTFOOTER werden alle Kopien als solche markiert. Diese
Markierung wird mit dem folgenden OUTPUT-Befehl auf jeder Seite fünfmal angebracht (wie
im Befehl FOR definiert):

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 24


102/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 116: Dialogfenster OUTPUT

Spezifizierung der Parameter:

Output (1) Der String, der ausgegeben werden soll, ist


folgendermaßen definiert: ' Copy #'!$COPY-1!' '. Die
Systemvariable $COPY (die die Anzahl der Kopien
inklusive des Originals enthält) wird hier um 1 reduziert, um
die Nummer der Kopie zu drucken (Kopie 1 entspricht
$COPY=2, da die erste Kopie eines Dokuments die zweite
Ausgabe inkl. des Originals ist).

Fonts (2) Die zu verwendende Schriftart ist mit ihrem internen


FONT-Namen spezifiziert. Um die neue Schriftart
"BIGFONT" zu verwenden, wird diese zuerst - wie zuvor die
Standartschriftart "STD010" - in der FONT-Definition
festgelegt.

Direction (3) Die Druckrichtung ist mit -45 Grad spezifiziert.

Alignment (4) Der Text soll rechts ausgerichtet werden.

PAD (5) Der Parameter PAD erhält alle vorangehenden und


nachfolgenden Leerzeichen im auszugebenden String.

Shadetext (6) Der Text soll im Ausmaß von 30% schattiert werden. Diese
Eigenschaft wird im Parameter SHADETEXT angegeben.

Kap. 7, S. 25 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 103/308

Dieses Beispiel wurde konstruiert, um weitere Parameter für den Befehl OUTPUT zu
demonstrieren. Da sich die Ausgabe eigentlich nicht verändert (abgesehen von der
Kopien-Nummer), wäre in diesem Fall die Verwendung eines Pagesegments für die
Markierung sinnvoller. Die Druckrichtungsangabe von -45 Grad erzwingt nämlich die
Erzeugung eines Bitmaps für jede Wiederholung und erhöht somit die benötigte Zeit und
auch die Größe des Ausgabe-AFPs erheblich.

7.6.4 Der Befehl OVERLAY


Der Befehl OVERLAY definiert die Ausgabe eines Overlays. Das entsprechende Symbol
findet man in der Symbolleiste "Frequent Commands".

Abbildung 117: Dialogfenster für den OVERLAY-Befehl

In diesem Beispiel wird das Overlay an seiner linken oberen Ecke positioniert (Parameter
LEFT und TOP). Die Positionierung auf der logischen Seite wird im übergeordneten
OUTLINE-Befehl geregelt.
Mit der Bedingung vor dem OVERLAY-Befehl bestimmt man, dass das Overlay nur auf der
letzten Seite jeder Dokumentinstanz gedruckt wird.

7.6.5 Der LOGICALPAGE FOOTER


Der LOGICALPAGE FOOTER wird um eine Bedingung erweitert, mittels derer in
Abhängigkeit vom Geschlecht des Kunden ein spezifisches Logo auf die erste Seite jedes
Dokuments gedruckt wird.
Da das Logo auf der ersten Seite platziert wird, muss dieser Vorgang nicht durch den
LOGICALPAGE PRINTFOOTER ausgeführt werden (es muss nicht auf die
Gesamtseitenzahl eines Dokuments Rücksicht genommen werden).

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 26


104/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 118: Logical Page Footer

7.7 Der Debug-Modus


Das Menü Debug und das Fenster Debug panel bieten die Möglichkeit, die Ausführung von
DocEXEC zu überwachen und die Erzeugung des Dokuments (Schritt für Schritt) zu
beobachten.

Abbildung 119: Debug-Menü und Debug-Konsole

Kap. 7, S. 27 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 105/308

7.7.1 Debug-Modus

Nach dem Aufrufen des Debug-Modus über das Menü "Debug | Debug document" kann das
Dokument entweder schrittweise oder in ganzen Zügen bis zum nächsten Haltepunkt
durchlaufen werden.

Step Durchläuft schrittweise das Dokument. Die jeweils


auszuführende Anweisung wird hervorgehoben, nach deren
Ausführung wird die nächste Anweisung hervorgehoben.
Die schrittweisen Veränderungen des Dokuments werden in
den übrigen Fenstern (Document Format Definition, Data,
View Document und die Übersicht im Variablenfenster)
nachvollzogen.

Go Durchläuft das Dokument in einem Zug bis zum Ende oder


bis zum nächsten Haltepunkt.

7.7.2 Haltepunkte

Um das Dokument bis zu einem bestimmten Punkt zu generieren oder ab einem bestimmten
Punkt das Dokument vollständig zu generieren, können sogenannte "Haltepunkte" gesetzt
werden. Haltepunkte können nicht nur in der DOCDEF, sondern auch in den Eingabedaten
gesetzt werden.

Abbildung 120: Haltepunkt im Logikbaum setzen

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 28


106/308 Lektion 2: Fortgeschrittene Dokumentgestaltung

Abbildung 121: Haltepunkt in den Eingabedaten setzen

Durch einen Doppelklick mit der linken Maustaste auf den Befehlstext im Fenster "Document
Format Definitions", "FormatGroup Definitions" oder auf eine Datenzeile im Datenfenster
klappt ein Menüfenster auf, das u.a. den Eintrag "Toggle breakpoint" aufweist.Mit einem
einfachen Klick der linken Maustaste auf diesen Eintrag kann ein Haltepunkt entweder
gesetzt oder, falls schon vorhanden, wieder gelöscht werden.
Außerdem bietet dieses Menü die Möglichkeit, alle Marken zu löschen bzw. das Dokument
bis zu einem bestimmten Punkt generieren zu lassen, ohne vorher einen Haltepunkt zu
setzen.

7.8 Zusammenfassung
Lektion 2 zeigte das

“ Einfügen eines Logos in das Dokument


“ Erzeugen von Kopien des Originaldokuments
“ Dateneingabe im EBCDIC Format
“ Einlesen gleichartiger Datensätze
“ Erstellen einer Tabelle mit TABLE/COLUMN
“ Erstellen eines dynamischen (Keine Vorschläge)
“ Seitenumbruchkontrolle: Witwen und Waisen

7.9 Fragen zu Lektion 2


“ Welche Arten von Variablen werden von der DOCDEF verwendet und wodurch
unterscheiden sich diese?

.................................................................................................................................

“ Wie können in den Eingabedaten vorhandene Channel Codes genutzt werden?

.................................................................................................................................

Kap. 7, S. 29 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 2: Fortgeschrittene Dokumentgestaltung 107/308

“ Wie können mit einem Befehl mehrere Datensätze eingelesen werden?

.................................................................................................................................

“ Wie kann die Anzahl der tatsächlich eingelesenen Datensätze ermittelt werden?

.................................................................................................................................

“ Wie können eingelesene wiederholte Datensätze in einer Tabelle ausgegeben werden?

.................................................................................................................................

“ Wie kann verhindert werden, dass in einer Tabelle oder einem Text bei Seitenumbruch
einzelne Zeilen auf einer Seite ausgegeben werden?

.................................................................................................................................

“ Was bewirkt der Befehl ENDGROUP?

.................................................................................................................................

“ Was ist der Unterschied zwischen LOGICALPAGE FOOTER und LOGICALPAGE


PRINTFOOTER?

.................................................................................................................................

“ Wie können von einem Dokument mehrere Kopien erstellt werden?

.................................................................................................................................

“ Wie kann eine Gruppe von Objekten auf einer Seite zusammengehalten werden?

.................................................................................................................................

“ Was sind die Unterschiede zwischen PLACE, OUTPUT und TEXT?

.................................................................................................................................

“ Was sind die Unterschiede zwischen PRINTLINE/FIELD und RECORD/VARIABLE?

.................................................................................................................................

“ Wie funktioniert der Befehl LINESP?

.................................................................................................................................

“ Wie kann man ein Projekt schrittweise überprüfen?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 7, S. 30


108/308 Zusatzaufgabe 2: Summenzeile und zusätzliche Kopie

8.0 Zusatzaufgabe 2: Summenzeile und zusätzliche Kopie

In Lektion 2 wurde unter anderem gezeigt, wie mit dem Befehl TABLE auf einfache Weise
Tabellen erstellt werden können. Ebenso wurde ein Weg gezeigt, in der Dokumentdefinition
die Erstellung von Dokumentkopien festzulegen.
Diese Zusatzaufgabe schließt an das Beispiel in Lektion 2 an und erweitert dieses:

“ Unter der Tabelle soll eine weitere Zeile eingefügt werden, in der der Gesamtpreis der
Zutaten für das Wiener Fiakergulasch dargestellt werden kann. Die Summe soll
unterstrichen erscheinen (1).
“ Außerdem soll eine zusätzliche Kopie des Dokuments ausgegeben werden. Die erste
Kopie nach dem Originaldokument soll dabei mit dem Wasserzeichen "Archive"
versehen werden (2).

Das Ergebnis sollte wie folgt aussehen:

Abbildung 122: Hinzufügen einer Summenzeile unter der Tabelle und Erstellen einer weiteren
Kopie mit dem Wasserzeichen "Archive"

8.1 Vorbereitung
Man erstellt unter Verwendung der folgenden Angaben ein neues Projekt aus der
vorhandenen Lektion 2:
Basisbeispiel: Lesson 2 (lesson02.prj)
Neue Projektdatei: MyAssignment02.prj
Neue DOCDEF: MyAssignment02

1. Man öffnet das oben angeführte Basisbeispiel in Papyrus Designer. Dieses dient als
Ausgangspunkt für die Zusatzaufgabe.

Kap. 8, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusatzaufgabe 2: Summenzeile und zusätzliche Kopie 109/308

2. Man speichert das Projekt vor der weiteren Bearbeitung unter einem neuen Namen ab.
Dazu wählt man aus dem Menü File den Punkt Save Project as...

3. Dabei vergibt man im Dialogfenster Save Document as... einen neuen Namen sowohl
für die Projektdatei (Document Project Name) (1) als auch für die DOCDEF (Doc. Def.
File Name) (2) und bestätigt mit OK (3). Vorschläge für neue Namen sind oben
angegeben.

Dadurch wird vermieden, dass die mit der Kursumgebung mitgelieferten Beispiellösungen
überschrieben werden.

8.2 Lösungshilfe
Damit die Gesamtsumme der in der Tabelle aufgelisteten Preise ausgegeben werden kann,
muss eine Möglichkeit geschaffen werden, die Einzelpreise zu summieren und
Zwischensummen zu speichern.
Nach Abschluss dieser Zusatzaufgabe wird das Dokument aus vier Kopien bestehen: eine
ohne Wasserzeichen (Original), die folgende mit dem Wasserzeichen "Archive" und
schließlich zwei Kopien mit den Wasserzeichen "Copy #1" bzw. "Copy #2".
Eine beispielhafte Lösung wird in der Projektdatei lesson02_extended.prj gezeigt, die in
Papyrus Designer geöffnet werden kann.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 8, S. 2


110/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

9.0 Lektion 3: Flexible Strukturen mit wiederholten Outlines

In Lektion 3 stehen folgende Aufgaben im Mittelpunkt: die Ausgabe von Listen und Tabellen
einerseits und die Erstellung von Dokument-Berichten mit Hilfe der System-DOCFORMATs
andererseits.
Die Tabelle in Lektion 3 soll diesmal über andere Befehle als in Lektion 2 erstellt werden.
Auch wenn dieses Verfahren komplizierter erscheint, bietet es dennoch mehr Freiheiten als
der TABLE-Befehl. Die Tabelle erhält zusätzlich einen Tabellenkopf und -fuß. Außerdem wird
das Seitenumbruchsverhalten festgelegt.

9.1 In dieser Lektion vermitteltes Wissen


Für die Erstellung von Listen und Tabellen wird gezeigt,

“ wie Tabellen mit wiederholten OUTLINEs erstellt werden,


“ wie Boxen gezeichnet werden,
“ wie die Zeilen der Tabelle über die Modulo-Funktion alternierend eingefärbt werden
“ wie Zwischensummen berechnet und ausgegeben werden,
“ wie Seitenumbrüche innerhalb einer Liste behandelt werden.
Für die Erstellung von Dokument-Berichten werden die folgenden System-DOCFORMATs
eingeführt:

“ $_BEFOREFIRSTDOC
“ $_AFTERDOC
“ $_AFTERLASTDOC

Außerdem wird auch das System-DOCFORMAT $_BEFOREDOC vorgestellt.


Zusätzlich werden einige neue Systemvariablen vorgestellt und Beispiele für die Definition
von globalen Variablen gezeigt.

Kap. 9, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 111/308

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 2


112/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 123: Dokument der Lektion 3

Nach der letzten Dokumentinstanz soll eine einfache Seite gedruckt werden, die einen
Bericht über die erstellten Dokumente beinhaltet.

Abbildung 124: Dokument der Lektion 3 - Report

Kap. 9, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 113/308

9.2 Auswahl der Papierlade (Bin) am Drucker


Fast alle Einzelblattdrucker haben mehrere Papierladen, in denen unterschiedliche
Papiersorten eingelegt sein können (z.B. Papier mit vorgedrucktem, farbigem Firmenlogo, mit
Firmenanschrift, farbiges Papier). Um gezielt auf eine Lade zuzugreifen bzw. einen
dynamischen Wechsel der Lade während der Verarbeitung zu ermöglichen, muss diese
definiert werden.

9.2.1 Definieren der Papierladen in OverView AFP-Designer


1. Der OverView AFP Designer wird aus dem Windows Startmenü mit Start | All Programs
| ISIS Papyrus Designer & DocEXEC Workshop | OverView AFP Designer gestartet:

2. Über den Menüpunkt Window | Data Placement (1) wird in den


Datenplatzierungsmodus des AFP Designers geschalten. Dadurch wechselt der
Menüname "Datei" auf "PPFA" (2).

3. Eine neue FORMDEF wird über den Menüpunkt PPFA | Form | New (1) angelegt.
Im Eingabedialog wird das Verzeichnis angegeben, in dem dieser Kurs installiert ist:
z.B. C:\ISIS_PDDBasicCourse\PDDBasic\ gefolgt von ppfa (2).
Dies entspricht dem Standardverzeichnis für PPFA-Quellcode.
Der Dateiname für die neue FORMDEF (z.B. mybins.pfa) muss eingegeben (3) und der
Vorgang anschließend mit OK (4) abgeschlossen werden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 4


114/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

4. Im Fenster "View/Edit" werden durch Klick auf das Icon FORM/PAGEDEF TREE
WINDOW in der Fenster-Werkzeugleiste (1) die beiden Fenster "Form Definitions" und
"Page Definitions" geöffnet. Letzteres wird nicht benötigt und kann daher wieder
geschlossen werden.

Der Baum im Fenster "Form Definitions" besteht aus einer Form Definition (FDEF1),
einer Copy Group (COPY1) und einer Subgroup (SUBGROUP1).
5. Die SUBGROUP1 kann gelöscht werden, da diese zur Papierladenwahl nicht benötigt
wird: Dazu wählt man die Subgroup aus und betätigt die Entf Taste auf der Tastatur.
6. Durch Rechtsklick auf das FDEF1-Icon (1) wird der Eigenschaftsdialog "Form
definition properties" geöffnet:

7. Im Fenster "Form definition properties" ändert man den Namen der FORMDEF auf
"MYBINS" (2) und bestätigt mit OK (3).

Kap. 9, S. 5 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 115/308

8. Anschließend wird der Eigenschaftsdialog der Copy Group durch Rechtsklick auf das
Icon COPY1 (1) geöffnet:

9. Auf der Registerkarte "Name" wird der Name der Copy Group in "MYBIN1" geändert (2)
und auf der Registerkarte "Misc." die Nummer der gewünschten Papierlade im Feld
"Bin" eingegeben, hier z.B. "1" (3). Um beidseitigen Druck (Duplex) zu ermöglichen, wird
auf der Registerkarte "Duplex" aus der Dropdown-Liste "Duplex" der Eintrag "Normal"
(4) gewählt (zur Seitenbindung, d.h. Vorder- und Rückseite haben die gleiche
Druckrichtung).
10. Um eine zweite CopyGroup zu erstellen, zieht man das CopyGroup-Symbol aus der
Werkzeugliste des "Form Definitions"-Fensters mittels Drag&Drop in den Baum:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 6


116/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

11. Die Subgroup kann erneut gelöscht werden. Im Eigenschaftsdialog der neuen Copy
Group (zu erreichen über einen Rechtsklick auf das eben hinzugefügte CopyGroup-Icon)
wird der Name als "MYBIN2" angegeben und die zweite Papierlade durch die Eingabe
"2" im Feld "Bin" ausgewählt. Ein Eintrag für den Duplex-Druck kann hier unterbleiben.

Das Resultat der bisherigen Schritte sollte dem folgenden Beispiel ähnlich sehen:

Der Vorgang kann für weitere Papierladen, z.B. CopyGroup: "BIN3", "BIN4", u.s.w.
wiederholt werden.
12. Die erstellte FORMDEF wird über PPFA | Form | Save (oder über die Taste F2)
gespeichert:

Schließlich übersetzt man den PPFA-Quellcode mit dem im OverView AFP Designer
implementierten AFPDS-Compiler:

Kap. 9, S. 7 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 117/308

13. Im Menü wählt man PPFA | PPFA Compiler (1). Im erscheinenden Dialogfenster ist der
Dateiname (2) bereits vorgegeben (er wird aus dem Namen der Form Definition
abgeleitet). Ein Klick auf die Schaltfläche Compile (3) führt die Kompilierung durch.

Der PPFA-Quellcode wurde unter <Kursinstallationsverzeichnis>\PDDBasic\ppfa\


gespeichert, in diesem Beispiel unter dem Namen mybins.pfa
Das kompilierte Ergebnis befindet sich in
<Kursinstallationsverzeichnis>\PDDBasic\fdf_pdf\ als F1MYBINS.FDF

9.2.2 Aufruf der Papierladen (BINs) im Papyrus Designer


Um die Form Definition und die Copy Groups zu verwenden, die im vorhergehenden
Arbeitsschritt in OverView AFP Designer erstellt wurden, kann in den untenstehenden
Arbeitsanweisungen statt "BINS" "MYBINS" eingesetzt werden, statt "BIN1" "MYBIN1" etc.
Alternativ dazu besteht die Möglichkeit, über "BINS" auf eine bereits erstellte und im Kurs
mitgelieferte Form Definition zurückzugreifen.

In Papyrus Designer wird aus der Symbolleiste "Definitions" jetzt das Icon "Appl. FormDef." in
das Fenster "FormatGroup Definitions" gezogen und fallen gelassen. Man wählt im Dialog
"Application Formdef Definition" aus der Liste den Namen "BINS" aus und bestätigt durch
Klicken des [OK]-Schaltfeldes.

Abbildung 125: Application Formdef Definition - Auswahl von "BINS" oder "MYBINS"

Im Dialog "Sheet Definition" wird der CopyGroup-Namen "BIN1" ausgewählt, um dem Sheet
die passende Papierlade zuzuweisen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 8


118/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 126: Dialogfenster "Sheet Definition" - Zuweisen von "MYBIN1" der "BIN1"

Die COPYGROUP-Namen lassen sich erst nach dem Reformatieren auswählen


(Reformatieren bewirkt, dass Papyrus Designer die Ressourcen aus der Bibliothek lädt).
Um die für Duplexdruck benötigte Rückseite des Blatts zu erstellen, erzeugt man eine Kopie
der Logicalpage 1 und ändert die folgenden Parameter im LOGICALPAGE-Befehl:
Number (1): 2
Side (2): Back

Abbildung 127: Ändern der Parameter für die zweite Logicalpage in der FormatGroup
FORMGR_01

Abbildung 128: Die neue Logicalpage 2 für die Rückseite wurde als Kopie der Logicalpage 1
erstellt

Kap. 9, S. 9 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 119/308

Wenn die COPYGROUP zum Zeitpunkt des Drucks nicht vorhanden ist, kann die AFP-Datei
nicht ausgedruckt werden. Der SHEET-Name soll daher nicht als Kommentar verwendet
werden.
Im Dialog "Application-Output-Format Parameters" soll die Checkbox [Include FormDef]
markiert sein, um die FDF bei der Ausgabe zu inkludieren. Dadurch wird ein nahtloses
Drucken möglich.

Abbildung 129: Dialogfenster "Application Output Format Parameters" - "Include FormDef"


aktivieren

Man richtet nun eine Formatgruppe zum Drucken des Jobreports auf einer anderen
Papiersorte aus der zweiten Papierlade ein. Dazu definiert man eine Formatgruppe REPORT
und wählt in der SHEET-Definition BIN2 aus:

Abbildung 130: Erzeugen der FormatGroup "Report"

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 10


120/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

9.3 Die Erstellung von Tabellen mit wiederholten OUTLINEs


Die in dieser Lektion verwendetet Daten sind dieselben wie in Lektion 2. In diesem Dokument
soll aber die Tabelle nicht durch den Befehl TABLE erstellt werden, sondern über wiederholte
OUTLINEs. Mit wiederholten OUTLINEs können komplexere Tabellen erstellt werden als mit
dem Befehl TABLE.
Das Zeichnen der Tabelle erfolgt diesmal über RULES, die pro gedruckter Zeile links und
rechts positioniert werden. Der Hintergrund jeder Datenzeile wird alternierend in weiß und
blau eingefärbt. Die Tabelle setzt sich aus drei Teilen zusammen: HEADER, BODY und
FOOTER. HEADER und FOOTER werden hierbei über den Befehl BOX gerahmt. Tritt in der
Tabelle ein Seitenumbruch auf, so soll vor und nach dem Seitenumbruch jeweils die
Zwischensumme ausgedruckt werden.

9.3.1 Schritt 1: Tabelle mittels wiederholter OUTLINEs


In einem ersten Schritt soll eine einfache Tabelle erzeugt werden, die lediglich jene
Datenzeilen, die der wiederholte RECORD-Befehl in Variablen eingelesen hat, wieder
ausgibt. Mittels einer wiederholten OUTLINE wird dieses Vorhaben umgesetzt. Zusätzlich soll
links und rechts neben jeder Datenzeile eine vertikal verlaufende Linie (RULE) gedruckt
werden, die gleichsam den äußeren Rahmen der Tabelle bildet.

Abbildung 131: Tabelle von Lektion 3

Die folgende Darstellung zeigt die OUTLINE mit allen Befehlen die auf der Unterebene dieser
OUTLINE zu definiert sind.

Abbildung 132: Document Format Definitions der Tabelle

Kap. 9, S. 11 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 121/308

Die folgenden Befehle werden eingefügt:


OUTLINE

Name LINES

Repeat INGREDIENTS, Widow: 3, Orphan: 3

Position Horizontal: LEFT + 20 MM, Vertical: NEXT + 15 MM

OUTPUT

Output LINES!'.'

Position Horizontal: &TAB1_COL1, Vertical: NEXT

Alignment Decimal

PLACE

Expression to print ARTICLE

Position X position: &TAB1_COL2, Y position: CURRENT

OUTPUT

Output NUMPICTURE(AMOUNT,'#,##0.00')!' '!UNIT

Position Horizontal: &TAB1_COL3, Vertical: CURRENT

Alignment Decimal

OUTPUT

Output NUMPICTURE(TOTAL,'#,##0.00 USD')

Position Horizontal: &TAB1_COL4, Vertical: CURRENT

Alignment Decimal

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 12


122/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

ASSIGN

Variable Name RULE_POSITION

Expression LASTMIN

RULE

Length &ROW_HEIGHT

Position Horizontal: &RULE_POSITION_LEFT, Vertical: RULE_POSITION

Line thickness Expr. &RULE_THICKNESS

Type Solid

Direction Down

RULE

Length &ROW_HEIGHT

Position Horizontal: &RULE_POSITION_RIGHT , Vertical: RULE_POSITION

Line thickness Expr. &RULE_THICKNESS

Type Solid

Direction Down

DOCFORMAT $_BEFOREFIRSTDOC
Einige dieser Befehle verwenden globale Variablen, die in dem System-DOCFORMAT
$_BEFOREFIRSTDOC definiert sind. Dieses DOCFORMAT wird genau einmal, und zwar
bevor das erste Dokument formatiert wird, ausgeführt. In diesem DOCFORMAT werden
oftmals globale Variablen definiert, die ihre Gültigkeit für den gesamten
Dokumentendurchlauf behalten sollen.

In diesem Beispiel werden die X-Positionen der Tabellenspalten als globale Variablen in
diesem Document Format definiert. Die Namen von globalen Variablen beginnen mit dem
Zeichen "&".

Kap. 9, S. 13 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 123/308

Abbildung 133: Definition der globalen Variablen zur Erstellung der Tabelle

In der Horizontalen wird jeder Ausgabebefehl auf dieser OUTLINE gemäß der Definition in
einer der Variablen &TAB1_COL1 bis &TAB1_COL4 positioniert. All diese Offsets beziehen
sich auf die Position der OUTLINE.
Die Stärke der rahmenden Linien ist über die Variable &RULE_THICKNESS festgelegt, ihre
Positionen definieren &RULE_POSITION_LEFT und &RULE_POSITION_RIGHT.
&RULE_POSITION_LEFT wird relativ zur Position der ersten Spalte berechnet und
&RULE_POSITION_RIGHT relativ zur Position der letzen Spalte.
Die Höhe jeder einzelnen Tabellenzeile ist durch &ROW_HEIGTH festgelegt und die Länge
jeder Tabellenzeile wird über die Differenz der zwei horizontalen Offsets
&RULE_POSITION_RIGHT and &RULE_POSITION_LEFT berechnet.

Die folgenden Befehle werden eingefügt:


ASSIGN

Variable Name &TAB1_COL1

Expression MM(0)

ASSIGN

Variable Name &TAB1_COL2

Expression MM(3)

ASSIGN

Variable Name &TAB1_COL3

Expression MM(43)

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 14


124/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

ASSIGN

Variable Name &TAB1_COL4

Expression MM(63)

ASSIGN

Variable Name &RULE_THICKNESS

Expression PELS(5)

ASSIGN

Variable Name &RULE_POSITION_LEFT

Expression &TAB1_COL1-MM(10)

ASSIGN

Variable Name &RULE_POSITION_RIGHT

Expression &TAB1_COL4+MM(20)

ASSIGN

Variable Name &ROW_HEIGHT

Expression MM(4)

ASSIGN

Variable Name &ROW_LENGTH

Expression &RULE_POSITION_RIGHT-&RULE_POSITION_LEFT

Unterebenen-Objekte auf der wiederholten OUTLINE


Folgende Darstellung beschreibt die Positionierung der Unterebenen-Objekte einer einzelnen
OUTLINE-Wiederholung. Anzumerken ist, dass der hier eingeschlagene Weg nur einer unter
vielen Möglichkeiten ist, wie mit RULEs in einer wiederholten OUTLINE eine Tabelle
gezeichnet werden kann. Wegen der Möglichkeit, relativ zu positionieren, kann das gleiche
Ziel auf verschiedene Weise erreicht werden.

Kap. 9, S. 15 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 125/308

Abbildung 134: Die Anweisungen zur Erstellung der Tabelle und deren Parameter

9.3.2 Schritt 2: Farbig hinterlegte Zeilen


In einem zweiten Schritt sollen die Datenzeile der Tabelle farblich hinterlegt werden. Hierfür
wird der Befehl BOX verwendet, um eine farbige Fläche auszugeben. In einem späteren
Beispiel wird gezeigt, wie über diesen Befehl ein Rahmen gedruckt wird. Der alternierende
Rhythmus kommt hierbei über die Modulo-Funktion zustande.

Zu diesem Zweck fügt man in den Code eine Bedingung für die Variable LINES ein. Wenn ihr
Wert modulo 2 FALSE ergibt (ungerade Zahl), dann wird eine BOX erzeugt.

Abbildung 135: Tabelle von Lektion 3 mit abwechselnd gefärbtem Hintergrund der
Tabellenzeilen

Der Befehl BOX


Der Befehl BOX ermöglicht die Formatierung einer wahlweise schattierten und/oder farbigen
Box mit einer bestimmten Linienform und -stärke und die Ausgabe dieser Box auf einer
PRINTLINE- oder OUTLINE-Unterebene.
Das entsprechende Symbol befindet sich in der Symbolleiste "Frequent Commands".

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 16


126/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 136: Dialogfenster "Box parameters"

Position und Größe der BOX werden wie folgt festgelegt:

Position Die Position der linken oberen Ecke der BOX bestimmt ihre
Lage relativ zu anderen Objekten des Dokuments. Sie kann
sowohl mit Positionsschlüsselwörtern als auch in
Maßeinheiten festgelegt werden.

Dimension Breite und Höhe der BOX werden relativ zur linken oberen
Ecke in Maßeinheiten oder mit Positionsschlüsselwörtern
angegeben.

Line thickness Vordefiniert wählbar als light (2 PELS), medium (4 PELS)


oder bold (6 PELS) oder im Feld "Expr." beliebig in
Einheiten von PELS.

Type Bestimmt den Linientyp (durchgezogen, gestrichelt,


punktiert).

Im Fenster View Document werden gestrichelte und punktierte Linien immer als
durchgezogen angezeigt. Mit Menü TOOLS|Generate and view kann die tatsächliche
Ausgabe sichtbar gemacht werden.

Shade und Color Ermöglichen das Füllen der BOX mit einer Farbe oder
Schattierung. Die Schattierung wird in Prozent der
vollständig gesättigten Farbe angegeben.

Round Versieht das Rechteck mit abgerundeten Ecken, wobei X


und Y den Radius der Rundung bestimmen (wenn X = Y,
dann bildet die Ecke einen Viertelkreis).

Die BOX des Beispiels wird wie folgt festgelegt:

Kap. 9, S. 17 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 127/308

Abbildung 137: Documentormat Definitions: Ausgabe einer Tabellenzeile - hervorgehoben: BOX


command

Die folgenden Befehle werden eingefügt:


IF-THEN

Condition LINES%2

BOX

Position Horizontal: &RULE_POSITION_LEFT, Vertical: LASTMIN

Dimension Width: &ROW_LENGTH-&RULE_THICKNESS , Height: &ROW_HEIGHT

Line thickness Expr. 0 PELS

Type Solid

Shade 20

Color Blue

Da der Befehl BOX für die vertikale Positionierung LASTMIN verwendet, wird der Befehl
unmittelbar nach der linken Rahmenlinie (RULE) positioniert, da sich LASTMIN auf deren
Position bezieht.

9.3.3 Schritt 3: HEADER, BODY und FOOTER


In einem weiteren Schritt soll die Tabelle in eine HEADER-, BODY- und FOOTER-Sektion
unterteilt werden. Die Befehle HEADER, BODY und FOOTER umfassen folgende
Funktionalitäten:

“ Die Kopfzeile (HEADER) gibt die Bezeichnungen für die einzelnen Spalten aus und wird
von einer BOX gerahmt.
“ BODY enthält die eigentliche Tabelle
“ Die Fußzeile (FOOTER) gibt die Gesamtsumme aus und wird ebenfalls von einer BOX
gerahmt.
Die Tabelle sieht dann wie folgt aus:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 18


128/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 138: Tabelle von Lektion 3 mit Kopf- und Fußzeile

Der Befehl BODY


Der Befehl BODY definiert den Beginn eines Abschnitts von Formatierungsbefehlen, die für
jede PRINTLINE- oder OUTLINE-Wiederholung ausgeführt werden sollen.

Das BODY-Symbol befindet sich in der Symbolleiste "Definitions". Man zieht das Symbol
einfach auf die OUTLINE und alle Unterebenen-Befehle werden automatisch unter dem
Befehl BODY zusammengefasst.

Abbildung 139: Document Format Definitions: Einfügen des Befehls BODY

Der Befehl HEADER


Der Befehl HEADER definiert den Beginn eines Abschnitts von Formatierungsbefehlen, die
vor einer PRINTLINE oder OUTLINE (im Falle von wiederholten PRINTLINEs oder
OUTLINEs vor der ersten PRINTLINE) ausgeführt werden sollen.
Das HEADER-Symbol befindet sich in der Symbolleiste "Definitions".

Kap. 9, S. 19 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 129/308

Abbildung 140: Document Format Definitions: Kopfzeile der Tabelle

Die folgenden Befehle werden eingefügt:


OUTPUT

Output 'Pos.'

Position Horizontal: &TAB1_COL1, Vertical: NEXT

Alignment Right

PLACE

Expression to print 'Article'

Position X position: &TAB1_COL2, Y position: SAME

OUTPUT

Output 'Amount'

Position Horizontal: &TAB1_COL3, Vertical: CURRENT

Alignment Center

OUTPUT

Output 'Total'

Position Horizontal: &TAB1_COL4, Vertical: CURRENT

Alignment Center

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 20


130/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

BOX

Position Horizontal: &RULE_POSITION_LEFT-&RULE_THICKNESS ,


Vertical: LASTMIN-&RULE_THICKNESS

Dimension Width: &ROW_LENGTH+&RULE_THICKNESS , Height:


&ROW_HEIGHT+&RULE_THICKNESS*#2

Line thickness Expr. &RULE_THICKNESS

Type Solid

Color Black

Die Multiplikation &RULE_THICKNESS*#2 (2 Mal den Wert von &RULE_THICKNESS) muss mit *#2
ausgedrückt werden, da *2 als * 2 INCH interpretiert würde.

Der Befehl FOOTER


Der Befehl FOOTER definiert den Beginn eines Abschnitts von Formatierungsbefehlen, die
nach einer PRINTLINE oder OUTLINE (im Falle von wiederholten PRINTLINEs oder
OUTLINEs nach der letzten Wiederholung) ausgeführt werden sollen.
Das FOOTER-Symbol befindet sich in der Symbolleiste "Definitions".

Abbildung 141: Document Format Definitions: Fußzeile der Tabelle

Die folgenden Befehle werden eingefügt:


OUTPUT

Output 'Grandtotal: '!NUMPICTURE(ST_TOTAL,'#,##0.00 USD')

Position Horizontal: &TAB1_COL4, Vertical: NEXT+&RULE_THICKNESS

Alignment Decimal

Kap. 9, S. 21 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 131/308

BOX

Position Horizontal: &RULE_POSITION_LEFT-&RULE_THICKNESS ,


Vertical: LASTMIN-&RULE_THICKNESS

Dimension Width: &ROW_LENGTH+&RULE_THICKNESS , Height:


&ROW_HEIGHT+&RULE_THICKNESS*#2

Line thickness Expr. &RULE_THICKNESS

Type Solid

Color Black

Die Berechnung von Zwischensummen


DocEXEC kann automatisch Zwischensummen für wiederholte PRINTLINEs/OUTLINEs
berechnen. Dazu wird im OUTPUT-Befehl der entsprechenden Parameter "Subtotal" gesetzt.
Die folgenden zwei Dialoge sollen veranschaulichen, wie (a) der Parameter für die
Berechnung von Zwischensummen gesetzt wird und (b) die Zwischensumme in diesem
Beispiel ausgegeben wird.
Dialogfenster (a) der folgenden Abbildung zeigt, die Definition einer Variablen zur
automatischen Berechnung einer Zwischensumme im OUTPUT-Befehl, der den Summanden
enthält. Dialogfenster (b) zeigt die Verwendung dieser Variablen in einem entsprechenden
OUTPUT-Befehl.

Abbildung 142: Berechnen einer Zwischensumme: a) Setzen des Parameters "Subtotal"

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 22


132/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 143: Berechnen einer Zwischensumme: b) Ausgabe der Zwischensumme

"Subtotal" summiert die Werte jeder Wiederholung einer PRINTLINE/OUTLINE oder TABLE.
Sollen einzelne Wiederholungen unterdrückt, also nicht ausgegeben werden, würden deren
Werte trotzdem summiert, was zu unerwarteten Ergebnissen führen kann.
Da Zwischensummen oft bei Seitenumbrüchen ausgegeben werden sollen, werden zwei
neue Abschnitte vorgestellt.

9.3.4 Schritt 3: BEFORE_BREAK and AFTER_BREAK

BEFORE_BREAK
Der Befehl BEFORE-BREAK definiert den Beginn eines Formatierungsabschnitts, der vor
einem Seitenumbruch innerhalb einer PRINTLINE oder OUTLINE ausgeführt werden soll.
Das entsprechende Symbol befindet sich in der Symbolleiste "Definitions".
In diesem Beispiel enthält der Abschnitt BEFORE_BREAK folgende Befehle:

“ ein RULE-Befehl für die Begrenzung der Tabelle,


“ einen OUTPUT-Befehl um die Zwischensumme in folgender Form auszugeben:
'Subtotal: '!NUMPICTURE(ST_TOTAL,'#,##0.00 USD')
“ einen weiteren RULE-Befehl, um die Zwischensumme zu unterstreichen.

Abbildung 144: Document Format Definitions: BEFORE_BREAK

Kap. 9, S. 23 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 133/308

Die folgenden Befehle werden eingefügt:


RULE

Length &ROW_LENGTH+&RULE_THICKNESS

Position Horizontal: &RULE_POSITION_LEFT-&RULE_THICKNESS ,


Vertical: NEXT

Line thickness Expr. &RULE_THICKNESS

Type Solid

OUTPUT

Output 'Subtotal: '!NUMPICTURE(ST_TOTAL,'#,##0.00 USD')

Position Horizontal: &TAB1_COL4, Vertical: NEXT+2 MM

Alignment Decimal

RULE

Length LASTMAX-LASTMIN

Position Horizontal: LASTMIN, Vertical: NEXT

Line thickness Expr. &RULE_THICKNESS

Type Solid

Die Länge der zweiten Line wird über LASTMAX-LASTMIN festgelegt.


Die beiden Positionsangaben beziehen sich auf die Ausmaße (in Offsets) des zuvor
definierten Befehls OUTPUT und bezeichnen je nach Richtung (horizontal oder vertikal) die
Position der den oberen linken oder unteren rechten Ecke der Objektfläche.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 24


134/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 145: Positionierung der Zwischensumme

AFTER_BREAK
Der Befehl AFTER-BREAK definiert den Beginn eines Abschnitts von
Formatierungsbefehlen, die nach einem Seitenumbruch innerhalb einer PRINTLINE oder
OUTLINE ausgeführt werden sollen.
Das entsprechende Symbol befindet sich in der Symbolleiste "Definitions".
In diesem Beispiel enthält der Abschnitt AFTER_BREAK folgende Befehle:

“ einen OUTPUT-Befehl, um die Zwischensumme in folgender Form zu wiederholen:


'from page '!TOT_PAGE!': '!NUMPICTURE(ST_TOTAL,'#,##0.00 USD')
“ die Befehle, die für den oberen Rand, den Header der Tabelle, notwendig sind, d.h. den
BOX-Befehl und die verschiedenen OUTPUT-Befehle für die Spaltenbezeichnungen
wie am Beginn der Tabelle.

Abbildung 146: Document Format Definitions: AFTER_BREAK

Die folgenden Befehle werden eingefügt:


OUTPUT

Output 'from page '!TOT_PAGE!':


'!NUMPICTURE(ST_TOTAL,'#,##0.00 USD')

Position Horizontal: &TAB1_COL4, Vertical: SAME

Alignment Decimal

Kap. 9, S. 25 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 135/308

OUTPUT

Output ' '

Position Horizontal: CURRENT, Vertical: NEXT

Alignment Right

OUTPUT

Output 'Pos.'

Position Horizontal: &TAB1_COL1, Vertical: NEXT

Alignment Right

PLACE

Expression to print 'Article'

Position X position: &TAB1_COL2, Y position: SAME

OUTPUT

Output 'Amount'

Position Horizontal: &TAB1_COL3, Vertical: CURRENT

Alignment Center

OUTPUT

Output 'Total'

Position Horizontal: &TAB1_COL4, Vertical: CURRENT

Alignment Center

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 26


136/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

BOX

Position Horizontal: &RULE_POSITION_LEFT-&RULE_THICKNESS ,


Vertical: LASTMIN-&RULE_THICKNESS

Dimension Width: &ROW_LENGTH+&RULE_THICKNESS , Height:


&ROW_HEIGHT+&RULE_THICKNESS*#2

Line thickness Expr. &RULE_THICKNESS

Type Solid

Color Black

Die Verwendung von BEFORE_BREAK und AFTER_BREAK ist an die folgenden


Bedingungen geknüpft:

“ Diese beiden Befehle können nur für wiederholte OUTLINEs/PRINTLINEs verwendet


werden
“ Sie werden nur aktiv, wenn mindestens eine Wiederholung vor dem Seitenumbruch
gedruckt wird

9.4 Drucken eines Produktionsberichts


Im folgenden Abschnitt wird gezeigt, wie ein Bericht über die Dokumentproduktion erstellt
werden kann. Der Beispielbericht enthält die folgenden Informationen:

“ Datum und Zeit des Produktionsauftrags,


“ Datum und Zeit des Produktionsabschlusses,
“ die Gesamtanzahl der erstellten Dokumente,
“ die Gesamtanzahl der erstellten Seiten.

9.4.1 Die Systemvariable $TIME


Die Systemvariable $TIME enthält die Systemzeit zum Zeitpunkt des DocEXEC-Starts. In
diesem Beispiel wird ihr Wert an eine globale Variable weitergegeben.

“ &JOB_START_TIME

im Document Format $_BEFOREFIRSTDOC (siehe oben)

9.4.2 Die Funktion GENTIME


Die Funktion GENTIME() gibt die aktuelle CPU-Zeit für die DocEXEC-Formatierung in
Sekunden an. Dieser Wert wird an die folgende globale Variable übergeben:

“ &JOB_END_TIME

im Document Format $_AFTERLASTDOC (siehe unten)

9.4.3 Das DOCFORMAT $_AFTERDOC


Das DOCFORMAT $_AFTERDOC wird nach jeder Formatierung einer Dokumentinstanz
verarbeitet und wird zur Ausgabe von dokumentspezifischer Information nach der
Dokumentinstanz oder zur Definition von globalen VARIABLEn verwendet, die für die
nächste Dokumentinstanz verfügbar sein sollen.
Im Beispiel zählen die globalen Variablen

Kap. 9, S. 27 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 137/308

“ &TOT_JOB_PAGES
“ &TOT_JOB_DOCS

die Gesamtzahl der Seiten und Dokumente nach jeder Dokumentinstanz zusammen. Die
Variablen sind als globale Variablen definiert, damit sie von einer Dokumentinstanz an die
nächste mit ihren derzeitigen Werten weitergegeben werden können.

9.4.4 Das DOCFORMAT $_AFTERLASTDOC


Das DOCFORMAT $_AFTERLASTDOC wird nach der Formatierung der letzten
Dokumentinstanz verarbeitet und wird zur Ausgabe von Information über einen gesamten
DocEXEC-Lauf verwendet.
Im Beispiel übernimmt dieses DOCFORMAT folgende Aufgaben:

“ Es schreibt die für die Dokumenterzeugung gebrauchte CPU-Zeit in die Variable


&JOB_END_TIME (1),
“ ruft die FormatGroup REPORT auf (2) und
“ gibt die während des Produktionsprozesses gesammelten Daten aus (3).

Abbildung 147: Document Format Definitions: DOCFORMAT $_AFTERLASTDOC

9.5 Seitenzählung pro Dokumentinstanz


Das System-DOCFORMAT $_BEFOREFIRSTDOC, das bereits vorgestellt wurde, wird nur
einmal am Beginn des DocEXEC-Laufes aufgerufen. Um ein bestimmtes DOCFORMAT am
Beginn jeder Dokumentinstanz aufzurufen, wird das System DOCFORMAT $_BEFOREDOC
verwendet. Bei einem Multi-Dokument-Job wird also $_BEFOREFIRSTDOC nur einmal
aufgerufen, $_BEFOREDOC jedoch mehrmals.

1. Man fügt ein DocFormat $_BEFOREDOC zum Fenster "Document Format Definitions"
hinzu.

2. Mit Hilfe des ASSIGN-Befehls wird am Beginn jeder Dokumentinstanz die Seitenzählung
auf 0 zurückgesetzt:

ASSIGN
Variable Name: TOT_PAGE
Expression: 0

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 28


138/308 Lektion 3: Flexible Strukturen mit wiederholten Outlines

Abbildung 148: Verwendung von ASSIGN im System-DOCFORMAT $_BEFOREDOC um den


Seitenzähler neu zu initialisieren

Dadurch wird nun sichergestellt, dass der Seitenzähler vor jedem Dokument zurückgesetzt
wird. Zusätzlich erfolgt durch diese Zuweisung eine zuverlässige Initialisierung der Variable.

9.6 System-DOCFORMATs

Vier DOCFORMAT-Namen sind von DocEXEC vordefiniert. DOCFORMATs mit diesen


Namen werden in einer gegebenen Reihenfolge verarbeitet, die von den Regeln für die
einzelnen Namen bestimmt wird.

$_BEFOREFIRSTDOC DOCFORMAT $_BEFOREFIRSTDOC wird vor der


allerersten Dokumentinstanz verarbeitet. Es wird für die
Initialisierung der Variablen vor dem ersten Dokument
verwendet.

$_BEFOREDOC DOCFORMAT $_BEFOREDOC wird vor jeder einzelnen


Dokumentinstanz verarbeitet. Es wird für die Initialisierung
der Variablen, für die Ausgabe von vorangehenden
Informationsseiten etc. für die folgende Dokumentinstanz
verwendet.

$_AFTERDOC DOCFORMAT $_AFTERDOC wird nach der Formatierung


jeder einzelnen Dokumentinstanz verarbeitet. Es wird für die
Ausgabe spezifischer Informationen nach der
Dokumentinstanz oder für die Definition globaler Variablen
verwendet, die für die nächste Dokumentinstanz verfügbar
sind.

$_AFTERLASTDOC DOCFORMAT $_AFTERLASTDOC wird nach der


Formatierung der letzten Dokumentinstanz verarbeitet. Es
wird für die Ausgabe von Informationen über den gesamten
DocEXEC-Durchlauf verwendet.

Die Reihenfolge der Definitionen von DOCFORMATs in einer DOCDEF ist beliebig. Ein
System-DOCFORMAT mit einem der oben genannten vordefinierten Namen kann
jedoch nicht das erste DOCFORMAT sein.

Beim Transfer auf OS/390 - z/OS darf ein externer DOCFORMAT-Name nicht "_"
(Unterstrich/underscore) enthalten.

Kap. 9, S. 29 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 3: Flexible Strukturen mit wiederholten Outlines 139/308

9.7 Zusammenfassung
Lektion 3 machte mit folgenden Themen vertraut:

“ Erstellen von Tabellen mit wiederholten OUTLINE


“ Zeichnen von Rechtecken und Tabellenrahmen
“ Berechnen von Zwischensummen bei Seitenumbrüchen innerhalb einer Tabelle
“ Die Funktion der vier System-DOCFORMATe:
$_BEFOREFIRSTDOC
$_BEFOREDOC
$_AFTERDOC
$_AFTERLASTDOC

9.8 Fragen zu Lektion 3


“ Welche System-DOCFORMATs gibt es und wozu können diese verwendet werden?

.................................................................................................................................

“ Welche Elemente werden für eine Tabelle definiert, die sich über mehr als eine Seite
erstreckt?

.................................................................................................................................

“ Wie werden Boxen gezeichnet?

.................................................................................................................................

“ Wie können Boxen mit Farbe ausgefüllt werden?

.................................................................................................................................

“ Wie können in einer Tabelle Zwischensummen berechnet und ausgegeben werden?

.................................................................................................................................

“ Wie können verschiedene FormatGroups angewählt werden?

.................................................................................................................................

“ Wie können bei einem Drucker verschiedene Papierfächer angesteuert werden?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 9, S. 30


140/308 Zusatzaufgabe 3/1: Tabellenaussehen verändern

10.0 Zusatzaufgabe 3/1: Tabellenaussehen verändern

Ein wesentlicher Punkt in Lektion 3 stellte das Erstellen tabellenartiger Strukturen unter
Verwendung von wiederholten OUTLINE-Befehlen dar. Dieser Ansatz ist im Vergleich zum
zuvor verwendeten TABLE-Befehl deutlich flexibler. Weiters wurde gezeigt, wie mit OverView
AFP Designer Form Definitions erstellt werden, die zur Ansteuerung unterschiedlicher
Einzelblattladen in Druckern und zum Definieren von ein- oder beidseitigem Druck zum
Einsatz kommen.
Diese Zusatzaufgabe schließt an das Beispiel in Lektion 3 an und erweitert dieses:

“ Die Seiten 1 und 2 befinden sich auf der Vorder- und Rückseite desselben Blatts
(Duplexdruck). Daher werden diese beiden Seiten im Vorschaufenster von Papyrus
Designer nebeneinander dargestellt. Man soll nun in der DOCDEF die notwendigen
Änderungen durchführen, um das Dokument wieder auf Simplexdruck umzustellen.
“ In der Tabelle sollen die Kopf- und Fußzeilen der Tabelle durch eine unterschiedliche
Blauschattierung von den restlichen Tabellenzeilen abgehoben werden.
“ Die Lesbarkeit der Tabellenzeilen soll durch Einführen einer dritten Farbe erhöht
werden. Statt - wie bisher - blau/keine sollen sich nun die Farben grau/blau/keine
abwechseln.
Das Ergebnis sollte wie folgt aussehen:

Abbildung 149: Ändern des Aussehens der Tabelle

10.1 Vorbereitung
Man erstellt unter Verwendung der folgenden Angaben ein neues Projekt aus der
vorhandenen Lektion 3:
Basisbeispiel: Lesson 3 (lesson03.prj)
Neue Projektdatei: MyAssignment03.prj
Neue DOCDEF: MyAssignment03

Kap. 10, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusatzaufgabe 3/1: Tabellenaussehen verändern 141/308

1. Man öffnet das oben angeführte Basisbeispiel in Papyrus Designer. Dieses dient als
Ausgangspunkt für die Zusatzaufgabe.
2. Man speichert das Projekt vor der weiteren Bearbeitung unter einem neuen Namen ab.
Dazu wählt man aus dem Menü File den Punkt Save Project as...

3. Dabei vergibt man im Dialogfenster Save Document as... einen neuen Namen sowohl
für die Projektdatei (Document Project Name) (1) als auch für die DOCDEF (Doc. Def.
File Name) (2) und bestätigt mit OK (3). Vorschläge für neue Namen sind oben
angegeben.

Dadurch wird vermieden, dass die mit der Kursumgebung mitgelieferten Beispiellösungen
überschrieben werden.

10.2 Lösungshilfe
Für die dreifärbige Gestaltung der Tabellenzeilen ist es übersichtlicher, die Befehle
SELECT-CASE statt einer Abfolge von IFs zu verwenden. Nähere Informationen dazu sind in
Lektion 1a zu finden.
Eine beispielhafte Lösung wird in der Projektdatei lesson03_extended.prj gezeigt, die in
Papyrus Designer geöffnet werden kann.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 10, S. 2


142/308 Zusatzaufgabe 3/2: Ausgabe als Duplex 2-Up

11.0 Zusatzaufgabe 3/2: Ausgabe als Duplex 2-Up

Lektion 3 zeigte, wie mit OverView AFP Designer und Papyrus Designer Form Definitions
erstellt werden und die Ansteuerung von Druckern erfolgt, was z.B. beim Definieren von ein-
oder beidseitigem Druck (Simplex/Duplex) zum Einsatz kommt.
Diese Zusatzaufgabe schließt an das Beispiel in Lektion 3 an und erweitert dieses:

“ Das Dokument soll als Duplex 2-Up ausgegeben werden.


Im Unterschied zu Standard 2-Up (erste Seite links, zweite Seite rechts etc.) kombiniert
Duplex 2-Up Duplexdruck mit N-Up, was zu folgender Reihenfolge führt: erste Seite
links, dritte Seite rechts, zweite Seite hinten rechts, vierte Seite hinten links,...
Man nimmt daher die notwendigen Erweiterungen vor, damit das Dokument wie in der
folgenden Abbildung dargestellt ausgegeben werden kann:

Kap. 11, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusatzaufgabe 3/2: Ausgabe als Duplex 2-Up 143/308

11.1 Vorbereitung
Man erstellt unter Verwendung der folgenden Angaben ein neues Projekt aus der
vorhandenen Lektion 3:
Basisbeispiel: Lesson 3 (lesson03.prj)
Neue Projektdatei: MyAssignment03_2.prj
Neue DOCDEF: MyAssignment03_2

1. Man öffnet das oben angeführte Basisbeispiel in Papyrus Designer. Dieses dient als
Ausgangspunkt für die Zusatzaufgabe.
2. Man speichert das Projekt vor der weiteren Bearbeitung unter einem neuen Namen ab.
Dazu wählt man aus dem Menü File den Punkt Save Project as...

3. Dabei vergibt man im Dialogfenster Save Document as... einen neuen Namen sowohl
für die Projektdatei (Document Project Name) (1) als auch für die DOCDEF (Doc. Def.
File Name) (2) und bestätigt mit OK (3). Vorschläge für neue Namen sind oben
angegeben.

Dadurch wird vermieden, dass die mit der Kursumgebung mitgelieferten Beispiellösungen
überschrieben werden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 11, S. 2


144/308 Zusatzaufgabe 3/2: Ausgabe als Duplex 2-Up

11.2 Lösungshilfe
Zuerst muss eine FormDef mit zwei CopyGroups erstellt werden. Die erste CopyGroup
benützt INVOKE SHEET um das erste Blatt einzuziehen, mit N_UP Enhanced werden die 4
möglichen logischen Seiten auf diesem Blatt entsprechend der Vorgabe platziert.
Diese CopyGroup wird in Papyrus Designer mit einer FormatGroup und 2 Logicalpages
(Vorder- und Rückseite) verknüpft. Würde man gleich alle 4 nötigen Logicalpages in dieser
Formatgroup definieren, dann wäre die Dokument-Vorschau (Fenster "View Document")
durch Überlappungen gestört.
Daher definiert man in der FormDef eine zweite CopyGroup, die jedoch INVOKE NEXT
verwendet, um einen Blattwechsel zu vermeiden. Diese CopyGroup verbindet man mit einer
zweiten FormatGroup in Papyrus Designer.
Anschließend muss dafür gesorgt werden, dass die entsprechenden FormatGroups - und
damit die CopyGroups - auch zum jeweils richtigen Zeitpunkt aufgerufen werden:

“ 1. Seitenwechsel: Nächste Logicalpage


“ 2. Seitenwechsel: FormatGroup umschalten
“ 3. Seitenwechsel: Nächste Logicalpage
“ 4. Seitenwechsel: FormatGroup umschalten
Da die als Basisbeispiel verwendete Lektion 3 nur über zwei Seiten pro Dokument verfügt, ist
auf geeignete Weise dafür zu sorgen, dass mehr Seiten bedruckt werden (z.B. durch
mehrfache Wiederholung des Brieftextes).

In der Voransicht von Papyrus Designer ist der eigentliche Zweck, das Umreihen der Seiten
für den Druckvorgang, nicht zu sehen, da dies vom Drucker zum Druckzeitpunkt durchgeführt
wird.
Eine beispielhafte Lösung wird in der Projektdatei lesson03_extended_02.prj gezeigt, die in
Papyrus Designer geöffnet werden kann. Die FormDef DUP2UP wird in Overview AFP
Designer in duplex2up.pfa definiert, das ebenfalls zum Vergleich herangezogen werden
kann.
In der beispielhaften Lösung umfasst das erste Dokument nur zwei Seiten, das zweite
Dokument bereits drei Seiten und das dritte Dokument verfügt über die vollen vier Seiten.

Kap. 11, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 145/308

12.0 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Die Eingabedaten in Lektion 4 (lesson04.prj) haben eine andere Datenstruktur, daher muss
den Aufbau der Document Definition geändert werden. Außerdem wird ein Diagramm aus
den Daten erzeugt und in das Dokument eingefügt.

12.1 In dieser Lektion vermitteltes Wissen


Lektion 4 erläutert folgende Problemstellungen

“ Verwendung von Multibyte-Channel-Code


“ Erstellen von externen DOCFORMATs
“ Auswerten des Inhalts von Variablen zur Laufzeit mit der Funktion REFERENCE
“ Alphabetisches Sortieren einer Tabelle
“ Erweiterung des Texts um sortierte und unsortierte Listen
“ Einfügen von Barcodes
“ Erstellen und Einfügen eines Kreisdiagramms
Multibyte-Channel-Code (MbCC)
In Lektion 4 wird das Einlesen der Daten durch einen Multibyte-Channel-Code gesteuert. Die
folgende Lektion zeigt eine einfache Anwendung, in welcher die verschiedenen
Datensatztypen mittels Channel-Codes unterschieden werden:

“ Wie man die Eingabedatei definiert.


“ Wie man das Input Record Format (Eingabedefinition) für einen
Multibyte-Channel-Code im APPLICATION-INPUT-FORMAT-Dialog definiert.
“ Wie der Multibyte-Channel-Code verwendet wird.

Der strukturelle Aufbau der Document Definition


Teile der Document Definition können vielleicht auch in anderen Projekten verwendet
werden. Sie können extern gespeichert und beim Formatieren eingebunden werden. Diese
Lektion erklärt die dazu nötigen Aktionen.

“ Es werden externe DOCFORMATs erstellt.


“ Diese DOCFORMATs werden eingebunden und aufgerufen.

Ausgabe
Die Ausgabe der bisherigen Lektionen wird durch folgende Aufgaben erweitert:

“ Der Text des Befehls TEXT wird um eine unsortierte und eine sortierte Liste erweitert.
“ Die Daten in der Tabelle werden alphabetisch sortiert.
“ Ein Barcode wird in das Dokument importiert.
“ Ein Kreisdiagramm wird in das Dokument eingefügt.
“ Die Unterschrift soll abhängig von den Eingabedaten variieren.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 1


146/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Kap. 12, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 147/308

Abbildung 150: Dokument von Lektion 4

12.2 Notwendige Vorarbeiten


Die folgenden Schritte ermöglichen den Übergang von einer fertiggestellten Lektion 3 zu
Lektion 4. Die hier beschriebenen Vorarbeiten müssen also vor Beginn der eigentlichen
Lektion 4 durchgeführt werden.
1. Man öffnet die Projektdatei einer fertiggestellten Lektion 3 (z.B. lesson03.prj) in Papyrus
Designer.
2. Aus dem Menü wählt man File | Save Project as...

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 3


148/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

3. Im Dialogfenster vergibt man mylesson04.prj (1) als Projektname (Document Project


Name) und MYLESSON04 (2) als DocDef-Name (Doc. Def. File Name).

4. Mit einem Klick auf OK (3) bestätigt man die Änderungen. Dadurch werden im
Dateisystem auch die neuen Dateien mylesson04.prj und mylesson04.dfa angelegt.
5. Da in Lektion 4 eine andere Eingabedaten-Struktur zum Einsatz kommen soll, löscht
man im Fenster "Document Format Definitions" die beiden RECORD-Befehle aus dem
DocFormat DF_MAIN. Dies sollte vor dem Ändern der Eingabedatendatei durchgeführt
werden!
6. Ebenso löscht man den USE-Befehl im DocFormat DF_MAIN. Das DocFormat
DF_MAIN ist damit vorerst völlig leer. Alle anderen DocFormats einschließlich
DF_PRINT bleiben erhalten.

DF_PRINT soll vorerst als Container für Befehle aus Lektion 3 dienen, die in Lektion 4
wiederverwendet werden sollen. Während dieser Lektion werden einzelne Komponenten
aus DF_PRINT in neue DocFormate gezogen und schlussendlich kann DF_PRINT
gelöscht werden.

Das Vorschaufenster "View Document" erscheint nun leer, im Fenster "Message List"
wird eine Reihe von Meldungen angezeigt. Dieses Verhalten ist - bedingt durch die
zuvor vorgenommen Löschungen - normal und zu erwarten.
7. Man wählt File | Edit Project.

Kap. 12, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 149/308

8. Als Eingabedatendatei (Line Data File Name) wählt man lesson04.asc (4) aus und gibt
Lesson04.afp (5) als Ausgabedatei (Output File Name) an.

9. Erneut bestätigt man die Änderungen mit OK (6).


Damit ist die Vorbereitung des Projekts auf Lektion 4 abgeschlossen. Im nächsten Schritt
werden die Eingabedaten analysiert um die Einleseroutine erstellen zu können.

12.3 Eingabedaten mit Multibyte Channel Code


Bevor die Einleseroutinen für die Eingabedaten in der DocDef erstellt werden können,
müssen diese Daten analysiert werden.

Dazu öffnet man die Eingabedatendatei für Lektion 4 - die Datei lesson04.asc - in einem
Texteditor (z.B. Notepad).

12.3.1 Datenanalyse
Die Datensätze haben hier an den ersten vier Stellen verschiedene Kennungen eingetragen
(CUST,TAB1,TOTA und ENDD), diese werden nun als vierstelliger Multibyte-Channel-Code
(MbCC) verwendet. Generell darf der MbCC überall im Datensatz positioniert sein; er muss
jedoch in jedem Datensatz an der selben Position stehen, da er nur einmal definiert werden
kann.
Der Channel-Code unterscheidet die Eingabedaten nach ihrer Funktion:

“ CUST - für die Kundenadresse,


“ TAB1 - für die Tabellendaten,
“ TOTA - enthält den Gesamtpreis für einen Artikel sowie ein Kürzel für den Manager,
“ ENDD - bezeichnet das Ende des Datensatzes.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 5


150/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 151: Eingabedaten der Lektion 4

Anstatt Felder mit einer fixen Länge enthalten die Daten das Feldbegrenzungszeichen
Semikolon (;).

12.3.2 Die Parameter im APPLICATION-INPUT-FORMAT


Die Einstellungen im Bereich Application-Input-Format werden nun an die Struktur der
Eingabedaten von Lektion 4 angepasst:

Mit der rechten Maustaste klickt man auf Application-Input-Format im Fenster "FormatGroup
Definitions" in Papyrus Designer. Dadurch öffnet sich das zugehörige Dialogfenster
"APPLICATION-INPUT-FORMAT parameters".

Abbildung 152: Application Input Format

Man wählt Input codepage aus der Liste aus und spezifiziert "Own System Codepage" (1).

Kap. 12, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 151/308

Abbildung 153: Input codepage: Own System Codepage

Man wählt im Bereich Input record format "VarPC" (2) aus, den "Record Delimiter" X'0D0A'
(3) und eine "Record length" von 255 (4).

Abbildung 154: Input record format: VarPC

Man klickt auf Channel / TRC code definition und aktiviert die Multibyte Option (8). Im Feld
"CC at" (5) gibt man mit "1" die Position des ersten Zeichens des Channel Codes im
Datensatz an und im Feld "Length" (6) die Länge 4 (= Bytes) des Channel Codes. Man
aktiviert außerdem die Checkbox "No break at CC" (7).

Abbildung 155: Channel/TRC code definition: Multibyte, no break at CC

Die Option "No break at CC" (7) hat folgende Funktion: Der Multibyte-Channel-Code steht
nicht notwendigerweise am Anfang des Datensatzes, sondern kann an jeder beliebigen
Position beginnen und beliebig lang sein.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 7


152/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Nach dem Schließen des Dialogfensters über OK können nun die Eingabedaten auch im
"Data Window" von Papyrus Designer dargestellt werden.

Abbildung 156: Datenfenster: Verwendung der Option "No break at CC"

Mit der Option "No break at CC" werden sämtliche Zeilen, die in einem Block mit demselben
MbCC beginnen ("TAB1") eingelesen. In Beispiel (1) würde der Lesevorgang ohne diese
Option nach der ersten gelesenen Zeile abbrechen.
Üblicherweise beginnt nur die erste Zeile mit dem Channel Code und alle weiteren enthalten
stattdessen Leerzeichen, siehe Beispiel (2).

12.4 Entwurf der Einleseroutine


In einem ersten Schritt entwirft man das zentrale DOCFORMAT "DF_MAIN" der Anwendung,
das die Daten dokumentweise einliest und dann verschiedene DOCFORMATs aufruft, die
diese Daten formatieren und ausgeben.

Kap. 12, S. 8 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 153/308

Abbildung 157: Definieren der RECORD-Befehle im DocFormat DF_MAIN

Zuerst zieht man die Befehle Linespace und Margin aus dem DocFormat DF_PRINT in das
DocFormat DF_MAIN.

Abbildung 158: Verschieben von Befehlen in das DocFormat DF_MAIN im Fenster "Document
Format Definitions"

12.4.1 Der Befehl RECORD


Der Befehl RECORD im DOCFORMAT "DF_MAIN" wird wie folgt verwendet:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 9


154/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Man gibt im Feld "Channel" des RECORD-Befehls den entsprechenden Multibyte Channel
Code ein: "CUST", "TAB1", "TOTA" und "ENDD". In diesem Dialog ist das Semikolon als
Feldbegrenzungszeichen spezifiziert. Das Begrenzungszeichen wird in einfachen
Anführungszeichen eingegeben. In einem ersten Schritt definiert man pro Channel-Code
einen RECORD-Befehl, und zwar genau in der Reihenfolge, in der die Channel-Codes in den
Daten auftauchen:
'CUST'
'TAB1'
'TOTA'
'ENDD'
Pro Channel Code wird also je ein RECORD-Befehl definiert:

Name:
Repeat: 1
Channel: 'CUST'
Delimiter: ';'

Name: INGREDIENTS
Repeat: 100
Channel: 'TAB1'
Delimiter: ';'

Name:
Repeat: 1
Channel: 'TOTA'
Delimiter: ';'

Kap. 12, S. 10 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 155/308

Name: DOCUMENT_END
Repeat: 1
Channel: 'ENDD'
Delimiter: ';'

Für jeden Channel Code muss ein eigener RECORD-Befehl definiert werden. Dies gilt auch,
wenn keine weiteren Daten für den RECORD vorhanden sind, wie z.B. beim MbCC "ENDD".

12.4.2 Der Befehl VARIABLE zum Einlesen der MbCC


Wird mit Delimiter-Variablen gearbeitet, so muss ein Dummy-Feld (Variable REC_ID)
definiert werden, das den MbCC in eine Dummy-Variable einliest. Der Inhalt dieser Variablen
spielt für die weitere Verarbeitung keine Rolle mehr.

Abbildung 159: Definieren einer "Dummy"-Variable für den Channel Code

Die Behandlung von MbCC unterscheidet sich also von ANSI Channel-Codes, die
automatisch und nicht von VARIABLE- oder FIELD-Kommandos gelesen werden können.
Der ANSI Channel-Code steht in einer separaten Spalte vor dem eigentlichen Datensatz.

Man fügt daher jeweils eine Variable mit dem Namen MAIN_REC_ID zu den ersten drei oben
definierten RECORD-Befehlen hinzu (d.h. zu den "Channels" 'CUST', 'TAB1' und 'TOTA').
Folgende Werte werden dabei festgelegt:
Variable Name (1): MAIN_REC_ID
Type (2): Delimiter
Whitespace-Behandlung (3): No Spaces

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 11


156/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 160: Festlegen der Parameterwerte für die "Dummy"-Variable MAIN_REC_ID

12.4.3 Einlesen der Datenwerte


Alle anderen Werte werden von ähnlichen VARIABLE-Befehlen eingelesen. Gemeinsam sind
dabei folgende Werte:
Type: Delimiter
Whitespace-Behandlung: No Spaces

Abbildung 161: Beispielhafte Variablendefinition zum Einlesen der Daten

Man definiert nun die folgenden Variablen:


Im Channel 'CUST':
LNAME
FNAME
ZIP
CITY
STREET
GENDER
LANG
Im Channel 'TAB1':
ARTIKEL
ARTICLE
AMOUNT
EINHEIT
UNIT

Kap. 12, S. 12 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 157/308

TOTAL
Im Channel 'TOTA':
GRAND_TOTAL
MGR_SIGN
Nachdem alle Variablen erstellt wurden, sollte das DocFormat DF_MAIN folgendermaßen
aussehen:

Abbildung 162: DocFormat DF_MAIN nach Hinzufügen aller VARIABLE-Definitionen

12.5 Die Organisation der DOCFORMATs


12.5.1 Verschiedene Datensätze - verschiedene DOCFORMATs
Für die Wartung der Projekte ist es wichtig, die Document Definition klar und übersichtlich zu
gestalten. Da die Eingabedaten MbCC beinhalten, ist es auch sinnvoll, die verschiedenen
Datensätze in verschiedenen DOCFORMATs zu verarbeiten - jeder MbCC wird also in einem
eigenen DOCFORMAT behandelt.
Während in Lektion 3 die verschiedenen Aufgaben im DOCFORMAT DF_PRINT
zusammengefasst waren, werden sie nun, in Lektion 4, auf verschiedene DOCFORMATs
aufgeteilt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 13


158/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Jeder MbCC wird in einem entsprechendem DOCFORMAT abgearbeitet. Lediglich "ENDD"


wird nicht im herkömmlichen Sinn "verarbeitet", da dieser Channel Code lediglich das Ende
des Dokuments anzeigt.

12.5.2 ENDD - Der Abschluss des Dokuments


Unmittelbar nachdem "ENDD" eingelesen ist, und somit die Bedingung IF
DOCUMENT_END==1 erfüllt ist, werden nacheinander die DOCFORMATs DF04CUST,
DF_TEXT, DF04TAB1, und DF04TOTA verarbeitet. In diesem Zusammenhang ist es wichtig,
dass die Überprüfung der Bedingung immer unmittelbar nach dem RECORD-Befehl steht,
der auf den Channel Code "ENDD" reagiert.
Nach dem Abarbeiten der DOCFORMATs wird mit dem Befehl ENDGROUP der
LOGICALPAGE PRINTFOOTER ausgelöst.
Ein ENDDOCUMENT-Befehl beendet schließlich die Dokumenteninstanz.
Bei der gegebenen Abfolge der RECORD-Befehle scheint die Definition von
ENDDOCUMENT nicht unbedingt notwendig zu sein, da das Dokument offenbar richtig
formatiert wird. Die beiden folgenden Abschnitt beschreiben die Funktionalität von
ENDDOCUMENT und erklären, warum ENDDOCUMENT in diesem Beispiel notwendig ist.

Die System-DOCFORMATs

“ $_BEFOREFIRSTDOC
“ $_BEFOREDOC
“ $_AFTERDOC
“ $_AFTERLASTDOC
entsprechen den Definitionen in Lektion 3.

Abbildung 163: Aufruf verschiedener DOCFORMATs

Kap. 12, S. 14 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 159/308

12.5.3 Die Verarbeitung von DF_MAIN


In Lektion 2 und Lektion 3 werden die Eingabedaten in der Reihenfolge eingelesen, in der sie
in der Eingabedatei aufscheinen. Zuerst wird Channel Code "1" mit den Kundendaten
eingelesen, anschließend Channel Code "2", der die Zutaten enthält. Daher ist für das
Erfassen der Daten das DOCFORMAT DF_MAIN genau einmal je Datensatz durchlaufen.
Was passiert allerdings, wenn die RECORDs nicht in der Reihenfolge der Datensätze
angelegt werden? Folgende Situation sei angenommen:
Eingabedaten: RECORD-Befehle:
CUST TAB1 (100 Wdh.)
TAB1 (100 Wdh.) TOTA
TOTA CUST
ENDD ENDD

Abbildung 164: Die Tabelle und die Abbildung der Document Format Definitions zeigen
Eingabedaten und RECORD-Befehle in unterschiedlicher Reihenfolge

Da das Dokument korrekt formatiert wird, muss DF_MAIN innerhalb einer einzigen
Dokumenteninstanz mehrmals durchlaufen werden.
Dies muss insbesondere beachtet werden, wenn beispielsweise die Abfolge von "TAB1"
durch "CUST" oder "TOTA" in den Eingabedaten unterbrochen wird. Dann setzt sich das
wiederholende Einlesen wieder mit dem Feldindex "1" fort und überschreibt Daten, die
bereits gelesen wurden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 15


160/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 165: Eingabedaten mit "unterbrochenen" Channel Codes: "TAB1" wird hier durch
"CUST" unterbrochen und anschließend fortgesetzt

Um hier einen Datenverlust zu vermeiden, müsste das Einlesen über temporäre Variablen
erfolgen und der Speichervorgang muss daran angepasst werden. Die folgende Abbildung
zeigt eine Möglichkeit, das zu realisieren.

Abbildung 166: Beispiel für die notwendigen Änderungen zur Unterstützung von
"unterbrochenen" Channel Codes: "TAB1" wird in temporäre Variablen eingelesen, die
anschließend in einer FOR-Schleife verarbeitet werden

Für die weitere Lektion wird jedoch angenommen, dass die Datenzeilen in geschlossenen
Blöcken vorliegen.
Wie wird nun dieses mehrmalige Durchlaufen von DF_MAIN abgebrochen?

Kap. 12, S. 16 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 161/308

12.5.4 Der Befehl ENDDOCUMENT


Der Befehl ENDDOCUMENT spezifiziert das Ende einer Dokumentinstanz. Das Auftreten
eines ENDDOCUMENT-Befehls signalisiert DocEXEC zur Laufzeit, dass solange das
äußerste DOCFORMAT durchlaufen werden soll, bis ENDDOCUMENT ausgeführt wird.
Nachdem ENDDOCUMENT ausgeführt wurde, ist die Dokumenteninstanz beendet.
Anschließend werden die nächsten Eingabedatensätze verarbeitet und die nächste
Dokumentinstanz wird, beginnend mit dem ersten DOCFORMAT, formatiert.
In diesem Beispiel garantiert der Befehl ENDDOCUMENT, dass das erste DOCFORMAT
THE_MAIN solange wiederholt durchlaufen wird, bis der Befehl ENDDOCUMENT selbst
tatsächlich ausgeführt wird. Das ist erst der Fall, wenn MbCC "ENDD" in den Daten erreicht
ist.

Abbildung 167: Die Function von ENDDOCUMENT für die Verarbeitung DF_MAIN

12.5.5 Dokumenteninstanz
Eine Dokumenteninstanz ist in folgenden Fällen auf richtige Weise abgeschlossen:

“ Die Verarbeitung hat das Ende der DOCDEF erreicht (kein ENDDOCUMENT definiert).
Falls die DOCDEF kein ENDDOCUMENT enthält, soll der Befehl USE Logical Page:
Print all Logical Pages verwendet werden, um den Abschluss der jeweiligen Seite
bewusst herbeizuführen (siehe Lektion 1).
“ wenn der Befehl ENDDOCUMENT ausgeführt wird.
“ Wenn das Ende (EOF) der Eingabedatei erreicht wird (bezieht sich auf die letzte
Dokumenteninstanz).

12.5.6 Hinzufügen von ENDGROUP und ENDDOCUMENT


Um die oben beschriebene Funktionalität zu implementieren, fügt man folgende Befehle zum
Projekt hinzu:
1. Nach dem RECORD-Befehl DOCUMENT_END (für den "Channel" 'ENDD') fügt man im
Fenster "Document Format Definitions" eine Bedingung (Symbol If-Then in "Frequent
commands") hinzu:
Condition: DOCUMENT_END
2. Zum Then-Zweig fügt man die Befehle End Group und End Document hinzu. In beiden
Fällen werden dabei keine Optionen aktiviert.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 17


162/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Der entsprechende Logikbaum im Fenster "Document Format Definitions" sollte nun


folgendes Aussehen haben:

Abbildung 168: DocFormat DF_MAIN nach Hinzufügen der Bedingung

Die weiter oben bereits sichtbaren USE-Befehle werden erst zu einem späteren Zeitpunkt
zum DocFormat DF_MAIN hinzugefügt werden. Zuerst werden die DOCFORMATs angelegt,
auf die diese USE-Befehle verweisen.

12.5.7 Erstellen des DocFormats zur Ausgabe des Textblocks (DF_TEXT)


Im nächsten Schritt erstellt man ein neues DocFormat DF_TEXT, mit dem der
Haupt-Textblock des Dokuments ausgegeben werden soll. Der Inhalt dieses DocFormats
wird vorerst aus dem in der vorherigen Lektion verwendeten DocFormat DF_PRINT
entnommen und später mit weiteren Textbefehlen erweitert.

1. Man fügt ein neues DocFormat DF_TEXT im Fenster "Document Format Definitions"
ein.

Kap. 12, S. 18 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 163/308

2. Man zieht den Outline-Befehl, der den Haupt-Textblock beinhaltet (der mit "As you may
have heard...") beginnt, aus DF_PRINT nach DF_TEXT.

Um das neu erstellte DocFormat aufzurufen, kommt der USE-Befehl zum Einsatz:
3. In DF_MAIN fügt man einen USE-Befehl zum THEN-Zweig hinzu und platziert ihn vor
dem ENDGROUP-Befehl. Im Dialogfenster "USE parameters" wählt man DF_TEXT aus
der Liste unter "DocFormat":

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 19


164/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Die entsprechenden Teile des Logikbaums im Fenster "Document Format Definitions"


beinhalten nun die folgenden Befehle:

Abbildung 169: Der USE-Befehl ruft das DocFOrmat DF_TEXT auf

Kap. 12, S. 20 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 165/308

Reformatiert man nun das Dokument, wird der in DF_TEXT definierte Haupt-Textblock des
Briefes wieder sichtbar:

Abbildung 170: Vorschau-Ansicht des Dokuments nach Hinzufügen von DF_TEXT. Momentan
wird nur der Haupt-Textblock ausgegeben.

12.5.8 Externe DOCFORMATs


Wenn ein Teil der Document Definition nicht nur in einer, sondern in verschiedenen
DOCDEFs Verwendung finden soll, ist es sinnvoll, diesen Teil extern, d.h. in einer eigenen
Datei zu speichern und je nach Bedarf einzubinden. Diese Möglichkeit bietet der Befehl
INCLUDE.

12.5.8.1 Der Befehl INCLUDE


Der Befehl INCLUDE fügt beim Kompilieren die Inhalte einer externen Quelldatei ein, die
unter dem Pfad und mit der Erweiterung gesucht wird, die im Parameter DDFILIB des
DocEXEC-Hauptprofils festgelegt wurde. Üblicherweise wird das Verzeichnis docdef\includes
verwendet.
Das Symbol für den INCLUDE-Befehl findet man in der Symbolleiste "Frequent Commands".
Der Befehl kann entweder zum

“ Erstellen von neuem externen DFA-Code oder zum


“ Importieren von bestehendem externen DFA-Code verwendet werden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 21


166/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Im INCLUDE-Dialogfenster wird der Name der externen Datei eingegeben. Die


Dateierweiterung ist im Parameter DDFILIB des DocEXEC-Hauptprofils definiert. Die
empfohlene Erweiterung ist inc (für "include").

In dieser Lektion werden einige DOCFORMATs extern gespeichert und in die DOCDEF
eingebunden. Um die entsprechenden Teile in der externen Datei zu speichern, sind deren
Symbole auf das INCLUDE-Symbol zu ziehen.
Nach einer INCLUDE Definition zeigt der Papyrus Designer im Fenster Document Format
Definitions zusätzlichen Text wie z.B. (m a) und (cdp=-1) an. Dieser Text gibt Auskunft über
den Sicherungs-Status der externen Datei und zeigt die Codepage an, mit der der Text
gespeichert wurde.

M Das INCLUDE wurde modifiziert, die Datei allerdings nicht


im Verzeichnis für INCLUDEs gespeichert.

m Das INCLUDE wurde modifiziert und im Verzeichnis für


INCLUDEs gespeichert.

A Das INCLUDE wurde modifiziert, die Datei allerdings nicht


im AUTOSAVE-Verzeichnis gespeichert.

a Das INCLUDE wurde modifiziert und im


AUTOSAVE-Verzeichnis gespeichert.

cdp Die Codepage, mit der das INCLUDE gespeichert wurde.


Der Default-Wert ist CODESRC ("cdp=-1").

12.5.8.2 Erstellen neuer externer DocFormate


Die noch vorhandenen Teile des DocFormats DF_PRINT sollen nun auf neue externe
DocFormate aufgeteilt werden.
1. Man fügt einen INCLUDE-Befehl in das Fenster "Document Format Definitions" ein und
platziert ihn ganz am Beginn des DocFormats DF_PRINT (siehe Abbildung weiter
unten).
2. Im Dialogfenster des INCLUDE-Befehls wählt man als Namen ("File name") DF04CUST.
Dies soll der Name des DocFormats sein, das die Ausgabe der Kundenadresse
übernimmt.

Kap. 12, S. 22 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 167/308

3. Anschließend zieht man den ersten Outline-Befehl im DocFormat DF_PRINT (der für die
Ausgabe der Anschrift veranwortlich ist) auf das Include-Symbol und wählt die Option
"In" aus dem Kontextmenü. Es ergibt sich folgende Struktur im Logikbaum:

4. Betätigt man nun die "Speichern"-Schaltfläche in Papyrus Designer, erscheint folgende


Meldung:

5. Man bestätigt hier mit "Save all". Im Verzeichnis docdef\includes wird daraufhin die
Include-Datei DF04CUST.inc angelegt. Sie beinhaltet die zuvor auf das
INCLUDE-Symbol gezogenen DocDef-Befehle.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 23


168/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

6. Mit der gleichen Vorgangsweise erstellt man zwei weitere INCLUDE-Dateien, nämlich
DF04TAB1 und DF04TOTA. DF04TAB1 soll die Zutaten-Tabelle enthalten, DF04TOTA
die Verabschiedung und Unterschrift ausgeben. Die Aufteilung der in DF_PRINT
vorhandenen Befehle auf die neuen DocFormate erfolgt wie in der folgenden Abbildung
dargestellt:

7. Nach Betätigen der "Speichern"-Schaltfläche von Papyrus Designer und Bestätigen der
Meldung mit "Save all" sollten auch die Dateien DF04TAB1.inc und DF04TOTA.inc im
Include-Verzeichnis angelegt werden.

8. Schlussendlich löscht man das DocFormat DF_PRINT, es wird nicht mehr benötigt (der
Befehl "End group" wird dabei mitgelöscht). Die externen DocFormate werden nun mit
dem USE-Befehl aufgerufen.

12.5.8.3 Einbinden externer DocFormate mit USE


Um über den Befehl "USE DOCFORMAT" jene DOCFORMATs aufrufen, die das Dokument
formatieren, muss man die Checkbox "External Docformat" markieren.

Kap. 12, S. 24 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 169/308

Abbildung 171: Dialogfenster "Use" - Markieren des Aufrufs eines DOCFORMATs als extern

1. Im DocFormat DF_MAIN fügt man nach der Bedingung "DOCUMENT_END" die


USE-Befehle im THEN-Zweig in folgender Reihenfolge hinzu:

• DF04CUST
• DF_TEXT (internes DocFormat, bereits eingefügt)
• DF04TAB1
• DF04TOTA

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 25


170/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

2. Nach dem Reformatieren des Projekts in Papyrus Designer erscheinen nun auch die
zuvor fehlenden Inhalte im Vorschaufenster "View Document". Man beachte auch, dass
die mit dem USE-Befehl aufgerufenen externen DocFormate nun auch im Fenster
"Document Format Definitions" vollständig angezeigt werden:

Dadurch können die externen DocFormate auch weiter bearbeitet werden. Dies wird in
den nächsten Abschnitten gezeigt.

12.6 Auswerten des Inhalts von Variablen zur Laufzeit - die Funktion
REFERENCE
Die Unterschrift des Managers soll in Zukunft in Abhängigkeit von entsprechenden Angaben
in den Eingabedaten ausgegeben werden. In den Eingabedaten kommen dazu folgende
Angaben vor:
Mgr_1
Mgr_2
Mgr_3

Abbildung 172: Auszug aus den Eingabedaten von Lektion 4 mit den Angaben zum Manager

Diese Angaben werden beim Einlesen der Eingabedaten in der Variable MGR_SIGN
abgelegt.
Die Bilddateien mit den Unterschriften der Manager liegen als Pagesegmente (PSEGs) vor.
Sie haben jedoch andere Namen:

Kap. 12, S. 26 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 171/308

S1SIGN1.300
S1SIGN4.300
S1SIGN02.300

Auch unter Weglassung der Dateinamen-Präfixe ("S1") bzw. -Suffixe (".300") müssen die
Werte aus den Eingabedaten auf die Namen der PSEGs abgebildet werden, d.h. es muss
z.B. eine Verbindung zwischen dem Eingabedatenwert "Mgr_1" und "SIGN1" für das
zugehörige PSEG S1SIGN1.300 hergestellt werden.
1. Daher ist es notwendig, im Fenster "FormatGroup Definitions" eine neue
Ersetzungstabelle (Symbol "Substitute") mit dem Namen MGR_SIGN_TABLE
anzulegen:

2. Anschließend verknüpft man diese Ersetzungsfunktion direkt mit der Variable


MGR_SIGN. Dazu öffnet man die Definition der Variable MGR_SIGN und wählt im
Dialogfenster "Variable parameters" im Bereich "Substitute" den Eintrag
"MGR_SIGN_TABLE" aus:

Dadurch wird der Wert der Variable MGR_SIGN mit Hilfe der Ersetzungstabelle
MGR_SIGN_TABLE geändert, d.h. MGR_SIGN enthält nun nicht mehr die den
Eingabedaten entnommenen Werte, sondern bereits die diesen zugeordneten Werte aus
der Ersetzungtabelle.

Der Aufruf des Pagesegments für die Unterschrift erfolgt im externen DocFormat DF04TOTA
mit dem SEGMENT-Befehl:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 27


172/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 173: Der SEGMENT-Befehl fügt die Abbildung der Unterschrift des Managers ein

Der Befehl SEGMENT erwartet als Name des Pagesegments ("Segment Name") direkt
dessen Namen. Im vorliegenden Fall ist der Name des zu verwendenden Pagesegments
jedoch der Wert der Variable MGR_SIGN. Daher muss hier die Funktion REFERENCE zum
Einsatz gebracht werden. Ein REFERENCE-Ausdruck wird für Befehle spezifiziert, bei denen
das Element, auf das verwiesen wird, erst zur Laufzeit verfügbar ist, z.B. der Inhalt einer
Variablen.
1. Man selektiert im externen DocFormat DF04TOTA den SEGMENT-Befehl und öffnet das
zugehörige Dialogfenster.
2. Man ändert den "Segment Name" auf REFERENCE(MGR_SIGN).

Wie nun beim Betrachten der einzelnen Briefe im Vorschaufenster zu sehen ist, wird
abhängig von den Eingabedaten jeweils eine andere Unterschriftsabbildung gedruckt.

Allerdings muss nun noch der im Brief angegebene Name des Managers, der unter der
Unterschrift abgedruckt werden soll, entsprechend angepasst werden. Auch hier soll die
Information aus den Eingabedaten verwendet werden.

Kap. 12, S. 28 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 173/308

1. Man definiert also eine weitere Ersetzungstabelle (Symbol "Substitute") mit dem Namen
MGR_NAME_TABLE:

Diese Ersetzungstabelle stellt eine Verbindung zwischen dem durch die erste
Ersetzungstabelle geänderten Wert von MGR_SIGN und den Namen der
entsprechenden Manager her.

2. Nun wählt man den PLACE-Befehl im externen DocFormat DF04TOTA aus und ändert
den Wert von "Expression to print" auf
SUBSTITUTE(MGR_NAME_TABLE,MGR_SIGN).

Mit Hilfe der Funktion SUBSTITUTE wird hier also die in der Ersetzungstabelle
MGR_NAME_TABLE definierte Ersetzung auf die Variable MGR_SIGN angewandt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 29


174/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

3. Außerdem verbessert man über den PLACE-Befehl die vertikale Positionierung ("Y
position") des Managernamens im Dokument beispielsweise wie folgt:

4. Nun speichert man das Projekt über die "Speichern"-Schaltfläche in Papyrus Designer
ab.
Man beachte, dass beim Speichern nun sowohl die "Haupt-DFA" als auch die geänderte
externe DFA (DF04TOTA.inc) gespeichert werden.

12.7 Sortieren von Tabellen - der Befehl SORT


In diesem Beispiel wird der Inhalt der Tabelle alphabetisch geordnet. Dafür wird ein neuer
Befehl eingeführt:
Der Befehl SORT ermöglicht das Sortieren einer oder mehrerer spezifizierter Tabellen von
Variablen in der Reihenfolge entsprechend einer Tabelle von Sortierelementen
(Sortiertabelle).

Das Symbol für den Befehl SORT findet man in der Symbolleiste "Frequent Commands".
Das Fenster "Document Format Definitions" zeigt, an welcher Stelle der SORT-Befehl
eingefügt wird. In diesem Beispiel erfolgt das Sortieren am Beginn des DOCFORMATs, in
dem die Ausgabe der Tabelle (und des darauf folgenden Diagramms) definiert ist. Die
SORT-Parameter werden im folgenden Dialog angegeben:

Abbildung 174: Dialogfenster "Sort" - Auswahl der Spalte, nach der sortiert wird

Kap. 12, S. 30 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 175/308

Sort expression Ein Ausdruck für das Tabellenargument, nach dem sortiert
werden soll.

Dieses Argument ist als Ausdruck spezifiziert. Es können daher mehrere Einzelausdrücke
zusammengefasst und damit die Sortierfolge mit mehreren Kriterien verfeinert werden. So
führt beispielsweise die Angabe AMOUNT!UNIT zu einer Sortierung nach "Amount" mit "Unit"
als zweitem Kriterium.
Die Variablen, die mit dem Sortierargument mitsortiert werden sollen, werden über "List of
variables" ausgewählt.

Abbildung 175: Dialogfenster "Sort" - Liste der Variablen

List of variables Erstellt eine Liste der Variablennamen, die parallel mit den
Sortierargumenten geordnet werden sollen.

In diesem Beispiel werden alle Variablen der Tabelle zusammen mit der Variable ARTICLE
sortiert.

Man öffnet die Liste aller verfügbaren Variablen (1) und wählt die Variablen aus. Man
bestätigt jede ausgewählte Variable mit "Add" (2). Bereits selektierte Variable können entfernt
werden, indem man sie anwählt und dann auf "Delete" (3) klickt.

Die Sortiervariable (deklariert als "Sort expression") wird hier in der Liste der Variablen
ebenfalls eingetragen.
Damit der Befehl SORT die Eingabedaten mit der richtigen Codepage liest, wählt man "Sort
codepage" (1) aus der Liste und wählt "Input Linedata Codepage" (2):

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 31


176/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 176: Dialogfenster "Sort" - Man wählt "Input Linedata Codepage" im Bereich "Sort
codepage"

Sort codepage Bestimmt die Codepage der SORT-Kriterien.

Die weiteren Parameter, die für den Befehl SORT gesetzt werden können, sind die
folgenden:

From..to Schränkt die Sortierung ein.

Sort direction Bestimmt die Sortierrichtung.

12.8 Ungeordnete und nummerierte Listen


Innerhalb eines TEXT-Befehls können nummerierte oder ungeordnete Listen erstellt werden.

Abbildung 177: Einfügen von sortierten und unsortierten Listen

Kap. 12, S. 32 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 177/308

Das Erscheinungsbild der Listenabsätze wird über den Befehl TEXTSTYLE fest. In einem
TEXT-Befehl referenziert man dann auf diese Definitionen.

Abbildung 178: Einfügen einer TEXTSTYLE-Definition

12.8.1 Der Befehl TEXTSTYLE


Der Befehl TEXTSTYLE definiert Absatzformatierungen, d.h. das Erscheinungsbild für
Absatznummerierungen oder die Formatierung für Absatztext.
Für TEXTSTYLEs für Absatzformatierung stehen all die Textbefehle zur Verfügung, die auch
im Befehl TEXT zur Absatzformatierung zum Zuge kommen (z.B. INDENT, COLUMN,...).
Ein "Character Style" bestimmt die Eigenschaften der Schrift, die für Absatzformatierung
verwendet wird, wie: Schrifttyp (Font), Farbe, Schriftgröße.

Abbildung 179: Dialogfenster "Text styles"

Listenfeld links (1) Hier werden die bereits definierten TEXTSTYLEs angezeigt.
Dies können sowohl TEXTSTYLEs für Character als auch
für Paragraph sein (Siehe Punkt 5).

Append to previously (2) Hängt die Definitionen in diesem TEXTSTYLE-Befehl an die


Definitionen eines vorhergehenden TEXTSTYLE-Befehls.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 33


178/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Style Name (3) Hier kann ein Name für einen TEXTSTYLE bestimmt
werden. Nach Drücken der Schaltfläche [Add] erscheint der
Name im Listenfeld links.

Comment (4) Hier kann ein Kommentar eingegeben werden, der die
jeweilige Definition beschreibt.

Paragraph/Character (5) Mit den Radio-Buttons wählt man aus, ob es sich bei der
TEXTSTYLE-Definition um einen Character-Style oder um
einen Paragraph-Style handelt.

Charstyle (6) Diese Optionsliste enthält die zu Verfügung stehend


Character-TEXTSTYLEs.

Definitionsfeld (7) Das Textfeld rechts unten zeigt die Eigenschaften des
gewählten (bzw. soeben definierten) TEXTSTYLEs:

Registerreiter (8) Nachdem der Cursor im Definitionsfeld an der gewünschten


Stelle platziert wurde, können über die Registerreiter
verschiedene Textbefehle für den TEXTSTYLE gesetzt
werden.

Add/Delete (9) Über Add bzw. Delete können TEXTSTYLEs aus dem
Definitionsfeld zur Definitionsliste hinzugefügt oder aus
dieser gelöscht werden.

An Hand von vier Bespielen zeigt Lektion 4 wie TEXTSTYLES definiert werden. Sie sind als
Anregung gedacht, um selbst eigene TEXTSTYLEs zu entwerfen, mit denen man sich das
Design von Dokumenten erheblich erleichtern kann.

Das DocFormat DF_TEXT wird nun um eine Textstyle-Definition erweitert.


NUMBER_STYLE
Der TEXTSTYLE NUMBER_STYLE fasst alle Schriftdefinitionen zusammen, die für
nummerierte Listen verwendet werden. Eine Schriftdefinition kann entweder von einer
Absatzdefinition oder direkt von einem TEXT-Befehl referenziert werden.

Abbildung 180: Text styles: NUMBER_STYLE

BULLET_STYLE

Kap. 12, S. 34 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 179/308

Der TEXTSTYLE BULLET_STYLE fasst alle Schriftdefinitionen zusammen, die für


nicht-nummerierte Listen verwendet werden. Eine Schriftdefinition kann entweder von einer
Absatzdefinition oder direkt von einem TEXT-Befehl referenziert werden.

Abbildung 181: Text styles: BULLET_STYLE

NUMBER_PARAGRAPH
Der TEXTSTYLE NUMBER_PARAGRAPH bestimmt das Aussehen eines Absatzes als
nummerierte Liste und verwendet dabei den Character Style NUMBER_STYLE. Auch dieser
TEXTSTYLE wird in einem TEXT-Befehl angesprochen.

Abbildung 182: Text styles: NUMBER_PARAGRAPH

In diesem TEXTSTYLE wird der Character Style NUMBER_STYLE verwendet. Damit lässt
sich vermeiden, dass die Font- und Farbeinstellung starr an zwei Stellen erfolgt. Der
referenzierte TEXTSTYLE muss bereits definiert sein, um ihn an dieser Stelle verwenden zu
können.
Der TEXTSTYLE NUMBER_PARAGRAPH verwendet die Funktion
PARAGRAPH_NUMBERING($PAR_NUMBER!'.')

Die Systemvariable $PAR_NUMBER ist ein Zähler, der die Anzahl der Absätze im gerade
formatierten TEXT-Befehl zählt. Dadurch dass $PAR_NUMBER mit dem String . verbunden
ist, ergibt der Ausdruck die Nummerierung des Absatzes in der Form: 1., 2., 3., etc. Vor jeden
neuen Absatz (NEWPARAGRAPH) im TEXT-Befehl wird somit eine Listennummerierung
gesetzt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 35


180/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

BULLET_PARAGRAPH
Der TEXTSTYLE BULLET_PARAGRAPH legt die Absatzformatierung in einer
nicht-nummerierten Liste fest. BULLET_PARAGRAPH wird in einem TEXT-Befehl wie die
anderen TEXTSTYLEs mit dem Textsteuerbefehl _STYLE angesprochen.

Abbildung 183: Text styles: BULLET_PARAGRAPH

Der TEXTSTYLE BULLET_PARAGRAPH verwendet den Character-Style BULLET_STYLE.


Der Paragraph Style BULLET_PARAGRAPH verwendet die Funktion
PARAGRAPH_NUMBERING(X'8B')

Diese Absatzformatierung verwendet keinen inkrementierenden Zähler, sondern ein


"konstantes" Zeichen, und zwar jenes, das dem hexadezimalen Code X'8B' des Fonts
STD010 entspricht (dies ist das "französische Anführungszeichen").

Zurücksetzen der Texteigenschaften bei Verwendung von TEXTSTYLE


Wenn die Eigenschaften von Text im TEXT-Befehl mit Hilfe von TEXTSTYLE geändert
werden, benötigt man eine Möglichkeit, den ursprünglichen Zustand wieder herzustellen. So
wird es gemacht:
Schritt 1: Definition des Standard-Character-Style

Abbildung 184: Definition der Default-Schrift: Character Style

Kap. 12, S. 36 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 181/308

Obige Abbildung zeigt, wie ein Standard-Character-Style für die Default-Schrift (Default
TEXTSTYLE) erstellt wird:

“ Man wählt einen Namen (Style Name), hier: NORMAL_STYLE


“ Man fügt einen Kommentar ein, z.B.: 'defines default style'
“ Man wählt den Radiobutton "Character" aus, um einen Character Style zu erstellen
“ Man gibt die Font-Eigenschaften wie folgt ein: FONT STD010 COLOR
“ Zum Speichern klickt man auf die Schaltfläche [Add]
Schritt 2: Definition des Standard-Paragraph-Style

Abbildung 185: Definition der Default-Schrift: Paragraph Style

Wie man in der obigen Abbildung sieht, erfolgt das Erstellen des neuen Paragraph Styles fast
auf die selbe Weise wie soeben für den Character Style beschrieben. Anders ist:

“ Man wählt den Radiobutton "Paragraph" aus, um eine Absatzdefinition (Paragraph


Style) zu erstellen
“ Man wählt den zuvor erstellten Character Style "NORMAL_STYLE" in der
Drop-down-Liste
Im großen Textfeld rechts unten fügt man die Absatzigenschaften hinzu:

“ Die Funktion PARAGRAPH_NUMBERING() (ohne Argumente) erzeugt keine Nummern


oder Bullets
“ INDENT(0,0,0) hebt den Zeileneinzug auf. Der linke Rand stimmt mit dem der aktuellen
Ebene überein

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 37


182/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Schritt 3: Zurücksetzen der STYLE-Einstellung

Abbildung 186: Wiederherstellen des Standard-Textstyles

Die Abbildung zeigt, dass das Wiederherstellen des Standard-Textstyles jetzt sehr einfach
ist: Man benötigt nur den Befehl _STYLE NORMAL_PARAGRAPH im Text an der richtigen
Stelle einzufügen (siehe den hervorgehobenen Text in der Abbildung).

12.8.2 TEXTSTYLEs im Befehl TEXT verwenden


Ein TEXTSTYLE kann von einem TEXT-Befehl aus über den Unterbefehl _STYLE
referenziert werden, z.B. _STYLE BULLET_PARAGRAPH. Über _STYLE Name kann sowohl
auf eine Absatzdefinition als auch auf eine Schriftdefinition referenziert werden.
Für diese Lektion verändert man den Text im TEXT-Befehl wie folgt:

Kap. 12, S. 38 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 183/308

Abbildung 187: Verändern des Textes durch Anwenden von TEXTSTYLEs

Ein einmal angewandter Paragraph Style (Absatzdefinition) - wie im obigen Beispiel


BULLET_PARAGRAPH - wird auch für alle folgenden, mit NEWPARAGRAPH eingeleiteten
Absätze verwendet, bis eine andere Absatzdefinition - im Beispiel NUMBER_PARAGRAPH -
angewandt wird.

12.8.3 Text einfügen mit Variablen


Im Text des Dokuments von Lektion 4 ist zweimal die Anrede des Kunden in roter Schrift zu
sehen. Mit einem Rechtsklick auf den entsprechenden TEXT-Befehl lässt sich feststellen,
dass sich an der entsprechenden Stelle der Variablenname "addressing" befindet. Um mit
einer Variablen Text einzufügen, fügt man ihn in runden Klammern in den Text ein:
...' TEXTOPT_SAVE(COLOR) COLOR RED (ADDRESSING) TEXTOPT_RESTORE(COLOR) '...

Dazu muss zuerst die Variable Addressing erstellt worden sein. Dies erfolgt ebenfalls im
DocFormat DF_TEXT durch folgende Definition für den ASSIGN-Befehl:
ADDRESSING = SUBSTITUTE(GENDER_TABLE,GENDER)!LNAME

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 39


184/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 188: Erstellen der Variable "Addressing" im DocFormat DF_TEXT

Außerdem ändert man die Ersetzungstabelle GENDER_TABLE geringfügig indem man das
"Dear" aus der Anrede entfernt. Dazu wählt man einen Tabelleneitnrag, ändert den Wert im
Feld "Target:" und betätigt dann die Schaltfläche "Change":

Abbildung 189: Ändern der Ersetzungstabelle GENDER_TABLE

Anschließend muss die Anredezeile am Beginn des Briefes geändert werden. Sie lautet nun:
'Dear '!ADDRESSING!','

Kap. 12, S. 40 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 185/308

Abbildung 190: Ändern der Anredezeile des Briefes im entsprechenden PLACE-Befehl

12.8.4 Exkurs: Weitere Einstellungen mit TEXTOPT_SAVE und


TEXTOPT_RESTORE
Die beiden zusammengehörenden Funktionen TEXTOPT_SAVE und TEXTOPT_RESTORE
bieten eine einfache Möglichkeit, einzelne Textteile anders zu gestalten und danach wieder
zu den ursprünglichen Einstellungen zurückzukehren.
Der Parameter gibt an, welche Texteigenschaft gespeichert werden soll. Als Parameter sind
alle Steuerungsbefehle zulässig, die mehrfach in einem Absatz verwendet werden können,
z.B. COLOR, FONT, INDENT, LINESP, INTERSPACE

Abbildung 191: Dialogfenster "Text" - Textopt_save und Textopt_restore

In diesem Beispiel speichert die Funktion TEXTOPT_SAVE(COLOR) die eingestellte


Textfarbe, bevor diese mit COLOR RED umgestellt wird. Um wieder die ursprüngliche
Einstellung zu erhalten, wird die Funktion TEXTOPT_RESTORE(COLOR) aufgerufen.

Die gespeicherten Einstellungen können nur einmal zurückgeladen werden. Nach


Aufruf der Funktion TEXTOPT_RESTORE stehen die gespeicherten Einstellungen
nicht mehr zur Verfügung.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 41


186/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

12.9 Barcodes
DocEXEC bietet zahlreiche Möglichkeiten, Barcode zu drucken. Die unterstützten ein- und
zweidimensionalen Barcodetypen sind dem Dokument "ISIS Papyrus DocEXEC Reference
Manual" zu entnehmen.

Um einen Barcode zu einzufügen, ist das Symbol INVOKE DLL aus der Symbolleiste
"Frequent Commands" in das Fenster "FormatGroup Definitions" oder "Document Format
Definitions" zu ziehen.
In diesem Beispiel soll der Barcode unterhalb des Adressabschnitts gedruckt werden und die
Postleitzahl und den Namen der Stadt codieren; der Befehl wird ins DOCFORMAT
"DF04CUST" gezogen.
Es werden die folgenden Parameter definiert:
DLL definition

DLL name PDF417

Function PDF417

Position

X position: MIN

Y position: 25 MM

SymbolCharInOneRow

Parameterwert 4

StringToBeCoded

Enter parameter value ZIP!' '!CITY

Kap. 12, S. 42 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 187/308

Abbildung 192: Dialogfenster "Invoke DLL" - Einfügen eines Barcodes

Beispielausgabe
Mit den oben angeführten Parametern wird ein PDF417-Barcode (ein
ISO/IEC-standardisierter zweidimensionaler Barcode für eine Vielzahl von Anwendungen)
ähnlich der folgenden Abbildung ausgegeben:

Abbildung 193: Der String "2344 Ma. Enzersdorf" als PDF417-Barcode

12.10 Diagramme - der Befehl CHARTDLL


DocEXEC bietet zahlreiche Möglichkeiten, auf der Basis der Eingabedaten Diagramme zu
zeichnen. Die folgenden Diagrammtypen werden unterstützt:

“ Liniendiagramme
“ Balkendiagramme
“ Kreisdiagramme

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 43


188/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

“ Flächendiagramme
“ Radardiagramme

Innerhalb dieser Haupttypen werden noch zahlreiche Subtypen, z.B. zwei- oder
dreidimensionale Kreisdiagramme, angeboten. Das Beispiel in dieser Lektion enthält ein
dreidimensionales Kreisdiagramm.

Abbildung 194: 3D-Tortendiagramm

Das Diagramm soll unterhalb der Zutatentabelle ausgegeben werden. Daher bearbeitet man
das externe DocFormat DF04TAB1 und fügt eine OUTLINE unterhalb der Tabelle ein.

Der Befehl CHARTDLL gibt Linien- und Flächendiagramme aus, sowie zwei- und
dreidimensionale Kreis- und Balkendiagramme. Um ein Diagramm in das Dokument
einzufügen, zieht man das Symbol CHARTDLL aus der Symbolleiste "Frequent Commands"
und fügt es in der gewünschten PRINTLINE oder OUTLINE ein. Der folgende Dialog
spezifiziert die Parameter für das Diagramm.

Abbildung 195: Dialogfenster "ChartDLL" - DLL definition

Kap. 12, S. 44 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 189/308

Auf der ersten "Seite" dieses Dialogs, d.h. wenn in der Parameterliste in der linken
Dialoghälfte der Eintrag "DLL definition" ausgewählt ist, wird die DLL definiert, die verwendet
werden soll, sowie deren Funktion, d.h. der Diagrammtyp:

DLL name Definiert den DLL-Namen. ISIS liefert die CHARTEX DLL.

Function Bestimmt eine DLL-Funktion (Auswahl über die Liste).

In diesem Beispiel ist die Default-DLL CHARTEX definiert und PIE3D für ein
dreidimensionales Kreisdiagramm ausgewählt.
Die Parameterliste in der linken Dialoghälfte verändert sich entsprechend der
Diagrammauswahl.
Im folgenden werden die zahlreichen Parameter beschrieben, die für dieses Beispiel von
Bedeutung sind. Einige Parameter werden durch eine Abbildung des entsprechenden
Dialogs verdeutlicht, einige werden nur aufgelistet.

Auf einigen Seiten dieses Dialog muss zuerst die Checkbox "Set value" ausgewählt
werden, um die diversen Dialogfelder zu aktivieren. Andernfalls werden die
Default-Werte angenommen.

12.10.1 Chart values


Bestimmt den deskriptiven Text (den X-"Wert") und einen zugeordneten Wert (den Y-Wert).
Zumindest ein Text-Wert-Paar muss eingegeben werden.

Abbildung 196: Dialogfenster "ChartDLL" - Chart values

Das Beispieldiagramm soll die Rezeptzutaten und ihren Prozentanteil am Gesamtpreis


darstellen. Daher ist die Variable ARTICLE als TEXT, die Variable TOTAL als VALUE
definiert.

12.10.2 From ... to


Da alle eingelesenen Werte dargestellt werden sollen, setzt man für diesen Parameter die
folgenden Werte:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 45


190/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 197: Dialogfenster "ChartDLL" - From ... to

From: 1

To: INGREDIENTS (die Anzahl der eingelesenen Datenzeilen -


und somit der Artikel)

12.10.3 Position
Spezifiziert die Positionsoffsets als Koordinaten im Koordinatensystem der
OUTLINE/PRINTLINE. In diesem Beispiel gibt man die folgenden Werte an:

X position: CURRENT-30 MM

Y position: CURRENT

12.10.4 Dimensions
Gibt die Breite und Höhe des Diagramms an.

Width: 150 MM

Height: 80 MM

12.10.5 BaseColor
Hier kann die Farbe des Diagramms ausgewählt werden. Dieser Parameter ist eng mit dem
Parameter "ShadeMode" verbunden, der in diesem Beispiel nicht spezifiziert ist. Falls z.B. für
"ShadeMode" "True Color" ausgewählt wird, um damit ein mehrfarbiges Diagramm zu
definieren, wird die Spezifikation von "BaseColor" überlagert. In diesem Beispiel wird das
Diagramm in Rotstufen dargestellt.

12.10.6 ChartInfo
Dieser Parameter bestimmt, welche Informationen im Diagramm gedruckt werden sollen.

“ Text
“ Percent
“ Value

Kap. 12, S. 46 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 191/308

12.10.7 GroupSegments, GroupText, GroupValue


Diese Parameter legen fest, ob und wie besonders kleine Werte gruppiert werden sollen. Das
Beispieldiagramm soll die billigsten Artikel wie Wasser, Salz, etc. nicht getrennt anzeigen:

GroupSegments: Always (kleine Werte werden immer gruppiert)

GroupText: nicht spezifiziert, der Default "Others" wird akzeptiert

GroupValue: 5% (Damit werden alle Zutaten, die weniger als 5% des


Gesamtpreises ausmachen, unter der Bezeichnung
"Others" zusammengefasst. Ihre Werte werden addiert.)

12.10.8 LineThickness
Mit einer ganzen Zahl wird die Linienstärke in PELs bestimmt.

LineThickness: 3

12.10.9 Optimizations
Über die folgenden Parameter können Optimierungen vorgenommen werden. Z.B. kann
vermieden werden, dass die Texte einander überlappen etc.

“ Optimize text
“ Optimize radius
“ Optimize color

12.10.10 ShadeRangeFrom und ShadeRangeTo


Mit diesen Parametern wird der Schattierungsbereich der verschiedenen Segmente
spezifiziert. Die Werte werden in Prozent der Vollfarbe angegeben.

ShadeRangeFrom: 5

ShadeRangeTo: 95

Das erste Segment wird mit 5% der Vollfarbe Rot, also nahezu Weiß (0%) schattiert, das
letzte Segment wird mit 95%, also nahezu Rot (100%) schattiert. Die Werte dazwischen
werden entsprechend der Anzahl an Segmenten berechnet.

12.10.11 StartPosition
Die Position, an der das erste Segment beginnt, wird anhand des Vergleichs mit einer Uhr
angegeben.

“ Start 3 hour

12.10.12 3D_Proportion
Spezifiziert einen Faktor (Verhältnis zwischen längerer und kürzerer Achse) für den 3D-Effekt
des Kreisdiagramms. Die folgende Illustration zeigt verschiedene Möglichkeiten:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 47


192/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

Abbildung 198: Erzeugen von Charts - 3D-Proportionen

In diesem Beispiel wurde der Wert 4 angegeben.

12.10.13 Weitere Informationen zu Diagrammen


Dieses Beispiel konnte nur einen kurzen Eindruck von den unzähligen Möglichkeiten geben,
die DocEXEC für die Erstellung von Diagrammen bietet. Eine detaillierte Darstellung der
zahlreichen Parameter ist im Handbuch "Papyrus DocEXEC Reference Manual" zu finden. In
der folgenden Darstellung werden noch einige mögliche Diagramme gezeigt, die mit
DocEXEC erstellt werden können.

Die Verwendung von Diagrammen kann die Dateigröße des AFPs vervielfachen!

Kap. 12, S. 48 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 4: Externe Dokumentdefinitionen, Diagramme 193/308

Abbildung 199: Eine Auswahl von Diagrammarten, die Papyrus Designer unterstützt

12.11 Zusammenfassung
Lektion 4 zeigte

“ Die Verwendung eines Multibyte Channel Codes für die Dateneingabe,


“ Die Verwendung externer DocFORMATs,
“ Beenden einer Dokumenteninstanz mit dem Befehl ENDDOCUMENT,
“ Auswerten des Inhalts von Variablen zur Laufzeit mit der Funktion REFERENCE,
“ Sortieren von Tabellen mit dem SORT-Befehl,
“ Wie mit den Befehlen TEXT und TEXTSTYLE unsortierte und nummerierte Listen
erzeugt werden.
“ Das Erstellen und Einfügen von Barcodes und Kreisdiagrammen.

12.12 Fragen zu Lektion 4


“ Wie können Feldbegrenzungszeichen in den Eingabedaten genutzt werden?

.................................................................................................................................

“ Was ist der Unterschied zwischen ANSI Channel Code (oder Extended ANSI Channel
Code und Multibyte Channel Code?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 12, S. 49


194/308 Lektion 4: Externe Dokumentdefinitionen, Diagramme

“ An welcher Stelle im Datensatz kann der MbCC positioniert sein?

.................................................................................................................................

“ Welche DOCDEF-Kommandos sind notwendig zur Definition eines MbCC?

.................................................................................................................................

“ Wie lange darf der MbCC sein?

.................................................................................................................................

“ Was bedeutet "No break at CC"?

.................................................................................................................................

“ Mittels welcher Befehle bzw. Durch welche Umstände wird eine Dokumenteninstanz
richtig beendet?

.................................................................................................................................

“ Wie können Teile der Document Definition auch für die Verwendung in anderen
Document Definitions zur Verfügung gestellt werden?

.................................................................................................................................

“ Wie können solche Routinen in einer anderen Document Definition aufgerufen werden?

.................................................................................................................................

“ Wie kann ein Diagramm auf der Basis der Eingabedaten in das Dokument eingefügt
werden?

.................................................................................................................................

“ Wie kann Barcode erzeugt werden?

.................................................................................................................................

“ Warum wird in dieser Art der DOCDEF-Organisation der Befehl ENDDOCUMENT


benötigt?

.................................................................................................................................

“ Was gilt sowohl für den Befehl ENDGROUP als auch für den Befehl ENDDOCUMENT?

.................................................................................................................................

Kap. 12, S. 50 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusatzaufgabe 4: Eingabedatenverarbeitung 195/308

13.0 Zusatzaufgabe 4: Eingabedatenverarbeitung

In Lektion 4 wurde gezeigt, wie Eingabedaten mit Multibyte Channel Code verarbeitet werden
können und dafür eine mögliche Einleseroutine entworfen.
Diese Zusatzaufgabe schließt an das Beispiel in Lektion 4 an und erweitert dieses:

“ Die Eingabedaten sollen nun aus der Datei lesson04_b.asc bezogen werden. Um die in
den Eingabedaten aufgelisteten Zutaten (Channel Code "TAB1") korrekt auszugeben,
sind die entsprechenden Änderungen vorzunehmen.

“ Es sollen außerdem zwei Kopien des Dokuments ausgegeben werden: Diese Kopien
sollen ohne Firmenlogo (oben auf der ersten Seite) und ohne Kontaktdaten (unten auf
der letzten Seite) erstellt werden.

Abbildung 200: Auf den Kopien fehlen das Firmenlogo und die Kontaktdaten

13.1 Vorbereitung
Man erstellt unter Verwendung der folgenden Angaben ein neues Projekt aus der
vorhandenen Lektion 4:
Basisbeispiel: Lesson 4 (lesson04.prj)
Neue Projektdatei: MyAssignment04.prj
Neue DOCDEF: MyAssignment04

1. Man öffnet das oben angeführte Basisbeispiel in Papyrus Designer. Dieses dient als
Ausgangspunkt für die Zusatzaufgabe.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 13, S. 1


196/308 Zusatzaufgabe 4: Eingabedatenverarbeitung

2. Man speichert das Projekt vor der weiteren Bearbeitung unter einem neuen Namen ab.
Dazu wählt man aus dem Menü File den Punkt Save Project as...

3. Dabei vergibt man im Dialogfenster Save Document as... einen neuen Namen sowohl
für die Projektdatei (Document Project Name) (1) als auch für die DOCDEF (Doc. Def.
File Name) (2) und bestätigt mit OK (3). Vorschläge für neue Namen sind oben
angegeben.

Dadurch wird vermieden, dass die mit der Kursumgebung mitgelieferten Beispiellösungen
überschrieben werden.

13.2 Lösungshilfe
Einge genaue Analyse der Eingabedaten über das Datenfenster in Papyrus Designer unter
besonderer Berücksichtigung der Channel Codes wird empfohlen. Die Einleseprozedur ist
entsprechend anzupassen.
Um die für die Ausgabe der zwei zusätzlichen Kopien notwendigen Änderungen leichter
implementieren zu können, kann man auf Simplexdruck zurückwechseln (siehe auch
Zusatzaufgabe 3).
Eine beispielhafte Lösung wird in der Projektdatei lesson04_extended.prj gezeigt, die in
Papyrus Designer geöffnet werden kann.

Kap. 13, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 197/308

14.0 Lektion 5: Textbausteine und Mehrsprachigkeit

Lektion 5 erweitert das Dokument von Lektion 4 und stellt neue Elemente der DOCDEF vor.

14.1 In dieser Lektion vermitteltes Wissen


Lektion 5 zeigt

“ Verwendung verschiedener Textbausteine in Abhängigkeit von den Eingabedaten


“ Dynamische Erstellung von Variablen
“ Verarbeitung externer Texte mit DFACODE, FILTER und ELEMENT
“ Unterstützung für mehrere Ausgabesprachen

Daten
Die Multibyte-Channel-Codes von Lektion 4 werden in dieser Lektion nicht als
Channel-Codes, sondern als Datensatz-IDs interpretiert. Lektion 5 stellt vor:

“ Es werden begrenzte Eingabedatensätze definiert.


“ Verwendung von Feldbegrenzungszeichen (delimiter) anstatt fester Längen für
Datensatzfelder
“ Das wiederholte Einlesen eines RECORDs wird abgebrochen, wenn eine bestimmte
Bedingung zutrifft.
Die Eingabedaten enthalten nicht nur die Werte, sondern auch die Namen der Variablen.
Daher wird eine Methode vorgestellt, Variablen dynamisch zu erstellen. Über die Funktion
REFERENCE ist eine äußerst dynamische Dokumentenverarbeitung möglich, da
Variableninhalte referenziert werden können.
Funktionen und Textbefehle
Einige Textsteuerbefehle werden vorgestellt, die die Möglichkeit bieten, Text aus Variablen,
Textbausteinen oder Dateien in den Befehl TEXT einzubinden.
Mehrsprachigkeit
Je nach Vorgabe der Eingabedaten können verschiedensprachige Textblöcke eingebunden
werden. Sprachspezifische Zeichen (z.B. Umlaute) werden richtig dargestellt.
Job-Report
Ein Job-Report schließt die Verarbeitung aller Dokumente ab.

Abbildung 201: Der Job-Report listet nützliche Informationen auf

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 1


198/308 Lektion 5: Textbausteine und Mehrsprachigkeit

14.2 Notwendige Vorarbeiten


Die folgenden Schritte ermöglichen den Übergang von einer fertiggestellten Lektion 4 zu
Lektion 5. Die hier beschriebenen Vorarbeiten müssen also vor Beginn der eigentlichen
Lektion 5 durchgeführt werden.
1. Man öffnet die Projektdatei einer fertiggestellten Lektion 4 (z.B. lesson04.prj) in Papyrus
Designer.
2. Aus dem Menü wählt man File | Save Project as...
3. Im Dialogfenster vergibt man mylesson05.prj (1) als Projektname (Document Project
Name) und MYLESSON05 (2) als DocDef-Name (Doc. Def. File Name).

4. Mit einem Klick auf OK (3) bestätigt man die Änderungen. Dadurch werden im
Dateisystem auch die neuen Dateien mylesson05.prj und mylesson05.dfa angelegt.

5. Da in Lektion 5 eine andere Eingabedaten-Struktur zum Einsatz kommen soll, löscht


man im Fenster "Document Format Definitions" alle RECORD-Befehle aus dem
DocFormat DF_MAIN. Dies sollte vor dem Ändern der Eingabedatendatei durchgeführt
werden!
6. Ebenso löscht man die Condition ("If-Then") im DocFormat DF_MAIN. Das DocFormat
DF_MAIN ist damit vorerst leer, mit Ausnahme einer Linespace-Definition und eines
MARGIN-Befehls.

Die in der obigen Abbildungen markierten Einträge (schwarz hinterlegt) werden zur
Vorbereitung auf Lektion 5 aus dem DocFormat DF_MAIN entfernt.

7. Außerdem löscht man das DocFormat DF_TEXT im Fenster "Document Format


Definitions".

Kap. 14, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 199/308

Das Vorschaufenster "View Document" erscheint nun leer und im Fenster "Message
List" wird eine Fehlermeldung angezeigt. Dieses Verhalten ist - bedingt durch die zuvor
vorgenommen Löschungen - normal und zu erwarten.
8. Man wählt File | Edit Project.
9. Als Eingabedatendatei (Line Data File Name) wählt man lesson05.asc (4) aus und gibt
Lesson05.afp (5) als Ausgabedatei (Output File Name) an.

10. Erneut bestätigt man die Änderungen mit OK (6).


Damit ist die Vorbereitung des Projekts auf Lektion 5 abgeschlossen. Im nächsten Schritt
werden die Eingabedaten analysiert um die Einleseroutine erstellen zu können.

14.3 Datenstruktur und Einleseprozedur


Die ASCII-Eingabedaten dieser Lektion (Datei lesson05.asc) können mit einem Texteditor
betrachtet und analysiert werden:

Abbildung 202: Eingabedaten von Lektion 5 mit Variablennamen in den Datenzeilen

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 3


200/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Die Datenstruktur von Lektion 5 scheint der von Lektion 4 ziemlich ähnlich zu sein: Bereits in
Lektion 4 wurden "CUST", "TAB1", "TOTA" und "ENDD" eingeführt. Zusätzlich taucht nun ein
weiterer Datensatztyp auf, der anzeigt, welcher Textbaustein verwendet werden soll: "TXTB".
Anders als in Lektion 4 enthalten die Daten Variablennamen und Gleichheitszeichen wie in
"LNAME=Smithson". Um diese Daten einlesen zu können, werden einige neue Funktionen
und Parameter benötigt. Allerdings enthalten die Datenzeilen mit der Datensatz-ID "TAB1"
keine Variablennamen. Wie in Lektion 4 werden die Datenfelder durch Semikola (;) von
einander getrennt.

14.3.1 Die Parameter im APPLICATION-INPUT-FORMAT-Befehl


Die Definition des APPLICATION-INPUT-FORMAT ähnelt dem von Lektion 4. Allerdings
werden in Lektion 5 die Qualifier "CUST", "TAB1", usw. nicht als Channel Codes interpretiert,
sondern als Variable eingelesen.

Man öffnet APPLICATION-INPUT-FORMAT und wählt "Channel/TRC code definition" aus


der Liste. Man wählt dort die Option "No channel". Die Option "No break at CC" wird nicht
markiert.

Abbildung 203: Dialogfenster "Application Input Format" - "No channel"

Im Bereich "Input codepage" wählt man die Codepage 1252, damit alle Zeichen inkl.
Umlaute im Datenfenster "Data Window" richtig angezeigt werden.

Abbildung 204: Einstellen der Codepage 1252 im Dialogfenster "Application Input Format"

Kap. 14, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 201/308

14.3.2 Datensatz-IDs
Als ersten Schritt wählt man das DocFormat DF_MAIN und definiert dort einen
RECORD-Befehl, der die ID eines Datensatzes in der Variablen MAIN_REC_ID ablegt.

Abbildung 205: Dialogfenster "Record Parameters": ohne Channel Code, mit Trennzeichen '';''

Als erste Variable wird die Datensatz-ID eingelesen, die im folgenden VARIABLE-Dialog
festgelegt wird.

Abbildung 206: Dialogfenster "Variable Parameters": Definieren der Variable MAIN_REC_ID

MAIN_REC_ID wird als Trennzeichen-Variable angelegt (Type = Delimiter) (1) definiert. Das
Begrenzungszeichen selbst (Delimiter) wurde bereits im übergeordneten RECORD-Befehl
definiert. Wichtig ist auch das Aktivieren des Kontrollkästchens "Scalar" (2), da der Befehl
VARIABLE standardmäßig indizierte Variablen erzeugt.
Im DOCDEF-Quellcode liest sich dieser Einlesemechanismus folgendermaßen:
RECORD
REPEAT 1
DELIMITER ';' ;
VARIABLE MAIN_REC_ID SCALAR DELIMITED ;
ENDIO;

Der RECORD-Befehl wird im Quellcode mit dem Befehl ENDIO abgeschlossen. Der Befehl
ENDIO beendet die Formatierungsunterebenen der Befehle PRINTLINE, RECORD,
OUTLINE oder WRITERECORD.
Diese erste Variable, die die Datensatz-ID enthält, steuert die weitere Behandlung der Daten.
Das DocFormat DF_MAIN sollte nun wie folgt aussehen:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 5


202/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 207: DocFormat DF_MAIN nach Hinzufügen des RECORD- und des VARIABLE-Befehls

14.4 Verschiedene Datensätze - verschiedene DOCFORMATs


Wie bereits in Lektion 4 erwähnt, ist es für die Wartung der Projekte wichtig, die Document
Definition klar und übersichtlich zu gestalten. Da die Eingabedaten Datensatz-IDs beinhalten,
ist es auch hier sinnvoll, die verschiedenen Datensätze in verschiedenen DOCFORMATs
einzulesen und zu verarbeiten.

14.4.1 Flexible Einleseroutine


Einer der großen Vorzüge von Lektion 5 ist die äußerst flexible Einleseroutine für die
Eingabedaten. Grundsätzlich lassen sich die Eingabedaten in zwei Kategorien trennen:

“ Die Daten mit den Datensatz-IDs "CUST", "TXTB" und "TOTA" beinhalten bereits die
Namen der Variablen, in denen die Werte abgelegt werden sollen. Daher können die
Variablen dynamisch erstellt werden und es wird nur eine einzige Einleseroutine
benötigt. Diese wird im DocFormat DF05VAR_READ implementiert werden.
“ Die Daten mit den Datensatz-IDs "TAB1" werden mit einem wiederholten
RECORD-Befehl eingelesen. Die Variablenwerte sind in bereits definierte Variablen
"ARTIKEL", "AMOUNT" usw. einzulesen. Dazu wird das DocFormat DF05TAB_READ
erstellt.
Sobald die DocFormate zum Einlesen der Daten erstellt sind, wird das DocFormat DF_MAIN
dahingehend erweitert, dass diese von dort aus aufgerufen werden.

14.4.2 Dynamische Erzeugung von Variablen im DocFormat


DF05VAR_READ
Man erstellt zuerst ein neues temporäres DocFormat, z.B. mit dem Namen "TEMP" im
Fenster "Document Format Definitions". Zu diesem fügt man anschließend einen
INCLUDE-Befehl hinzu. Als Namen vergibt man hier "DF05VAR_READ".

Kap. 14, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 203/308

Abbildung 208: Einfügen eines INCLUDE-Befehls im temporären DocFormat

Anschließend erstellt man innerhalb des INCLUDE-Befehls den Inhalt des DocFormats
DF05VAR_READ:

Abbildung 209: Das fertiggestellte DocFormat DF05VAR_READ

Das DocFormat DF05VAR_READ soll einen RECORD-Befehl mit lediglich einer


Wiederholung (Repeat: 1) und dem Trennzeichen (Delimiter) ';' enthalten, mit dem zuerst
die Variable MAIN_REC_ID eingelesen wird. Diese wird als skalare Variable angelegt:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 7


204/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 210: Erstellen des RECORD- und des VARIABLE-Befehls im DocFormat


DF05VAR_READ

Alle Felder in der Eingabedatendatei (Record-IDs CUST, TXTB, TOTA) werden in einer
FOR-Schleife eingelesen:
For name: I
Repeat count: 1
Mit dem folgenden, ersten VARIABLE-Befehl wird der Variablenname, unter Verwendung
des Gleichheitszeichens als Begrenzer ("Delimiter"), eingelesen:

Abbildung 211: Dialogfenster "Variable" - Definieren der Variable VAR_NAME

Es folgt die Prüfung einer Bedingung (If-then):


Condition: VAR_NAME== ''

Die Zeichen '' stellen dabei zwei einfache Anführungszeichen dar!


Ist diese Bedingung erfüllt, so bedeutet dies, dass der Lesevorgang das Ende der Datenzeile
erreicht hat. Daher wird im THEN-Zweig über einen ASSIGN-Befehl der Zähler I auf 1
gesetzt, damit die FOR-Schleife und damit der Einlesevorgang abgebrochen wird.
ASSIGN Definition
Variable Name: I
Expression: 1
Im ELSE-Zweig - das heißt so lange die Datenzeile noch nicht vollständig eingelesen wurde -
wird der Zähler I auf 0 gesetzt, damit der Einlesevorgang in der FOR-Schleife weiter
durchgeführt wird:

Kap. 14, S. 8 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 205/308

ASSIGN Definition
Variable Name: I
Expression: 0
Mit einem zweiten VARIABLE-Befehl wird nun dem mit dem ersten VARIABLE-Befehl
eingelesenen Variablennamen mittels geschwungener Klammern der Wert nach dem
Gleichheitszeichen in der Eingabedatendatei zugewiesen:

Abbildung 212: Dialogfenster "Variable" - Definieren einer dynamischen Variable

Ein Variablenname kann indirekt - über geschwungene Klammern ({Variablennamen}) -


angegeben werden, um den einmaligen Variablennamen aus den Daten zu erhalten.

14.4.3 Einlesen von Variablen im DocFormat DF05TAB_READ


Man fügt einen weiteren INCLUDE-Befehl zum temporären DocFormat "TEMP" hinzu und
vergibt den Namen "DF05TAB_READ".

Abbildung 213: Einfügen eines weiteren INCLUDE-Befehls im temporären DocFormat

Unterhalb des Include-Befehls fügt man den Inhalt des neuen DocFormats hinzu. Es wird
dazu verwendet, die Zutatenliste aus den Eingabedaten einzulesen, also jene Zeilen mit der
Datensatz-ID "TAB1":

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 9


206/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 214: Das fertiggestellte DocFormat DF05TAB_READ

Das DOCFORMAT DF05TAB_READ enthält einen wiederholten RECORD-Befehl, mit dem


zuerst die Variable REC_ID eingelesen wird:

Abbildung 215: Erstellen des RECORD- und des VARIABLE-Befehls im DocFormat


DF05TAB_READ

Für den RECORD-Befehl wird als Name "INGREDIENTS" festgelegt und ein "Repeat"-Wert
von 100 angegeben. Als Trennzeichen (Delimiter) wird ';' definiert. Die Variable REC_ID
wird als skalare Variable angelegt.
Abhängig vom Inhalt der Variablen MAIN_REC_ID - die im DocFormat DF_MAIN angelegt
wird, von wo aus später auch DF05TAB_READ aufgerufen werden wird - werden entweder
weitere Variablen eingelesen oder der RECORD-Befehl wird abgebrochen. Im vorliegenden
Beispiel bricht der Einlesevorgang ab, sobald der Inhalt der eingelesenen Variablen REC_ID
nicht mehr "TAB1" entspricht. Dazu dient folgende Bedingung:
Condition: UPPER(REC_ID)<>UPPER(MAIN_REC_ID)
Das eigentliche Abbrechen des RECORD-Befehls erfolgt im THEN-Zweig mit dem Befehl
ENDREPEAT:

Kap. 14, S. 10 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 207/308

14.4.3.1 Verwenden des Befehls ENDREPEAT


ENDREPEAT ist ein DOCFORMAT-Steuerbefehl, der die Verarbeitung von wiederholten
PRINTLINE-, OUTLINE-, RECORD- oder WRITERECORD-Befehlen vorzeitig beendet. Das
entsprechende Symbol befindet sich in der Symbolleiste "Frequent Commands".

ENDREPEAT ist nicht dafür geeignet, um beispielsweise eine FOR-Schleife


abzubrechen!
Der Befehl ENDREPEAT benötigt keine Parameter-Einstellungen und wird direkt auf das
THEN-Element im Fenster "Document Format Definitions" gezogen.

14.4.3.2 Einlesen der Variablenwerte


Im ELSE-Zweig - also solange der RECORD-Befehl nicht abgebrochen wurde - werden die
einzelnen Variablenwerte eingelesen. Man definiert dazu die folgenden VARIABLE-Befehle:
ARTIKEL
ARTICLE
AMOUNT
EINHEIT
UNIT
TOTAL

Abbildung 216: Beispiel für eine Variablendefinition im ELSE-Zweig von DF05TAB_READ

Wie beschrieben, wird das Einlesen abgebrochen, sobald der eingelesene Wert REC_ID
nicht mehr mit MAIN_REC_ID aus DF_MAIN übereinstimmt - dies ist dann der Fall, wenn die
gesamte Zutatenliste in den Eingabedaten gelesen wurde. Dies wird aber erst dann erkannt,
wenn ein anderer Wert als "TAB1" in die Variable REC_ID eingelesen wurde, also bereits
eine Zeile über das Ende der mit "TAB1" gekennzeichneten Zutatenliste hinaus gelesen
wurde. Damit aber nun auch diese Zeile, mit deren Lesen hier bereits begonnen wurde, an
anderer Stelle erneut verarbeitet werden kann, benötigt man einen Befehl um zwischen
Datensätzen zu springen:

14.4.3.3 Der Befehl SKIPRECORD


Der Befehl SKIPRECORD ist ein Steuerungsbefehl, der das Überspringen einer bestimmten
Anzahl von Datensätzen der Eingabedatei ermöglicht (vorwärts und rückwärts).

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 11


208/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 217: Zurückspringen um einen Datensatz - Definition im Dialogfenster "Skiprecord"

In diesem Beispiel soll der Befehl SKIPRECORD zur eben verarbeiteten Datenzeile
zurückspringen, man fügt daher einen Skiprecord-Befehl ein und definiert dort:
Skip record count: -1
Mit Hilfe eines abschließenden ASSIGN-Befehls korrigiert man die Zählvariable
INGREDIENTS. Es ist vom darin gespeicherten Wert 1 abzuziehen, da INGREDIENTS - das
die Anzahl der Zutaten zählt und somit die Anzahl der zu erstellenden Tabellenzeilen in der
Zutatenliste bestimmt - beim letzten Aufruf der RECORD-Befehls, der ja bereits mit einer
anderen Datensatz-ID als "TAB1" erfolgte, fälschlicherweise nochmals erhöht wurde.
Man fügt also einen ASSIGN-Befehl am Ende des DocFormats DF05TAB_READ ein und
definiert:
ASSIGN Definition
Variable Name: INGREDIENTS
Expresion: INGREDIENTS-1

14.5 Aufrufen der DocFormats


Das DocFormat DF_MAIN soll nun so erweitert werden, dass die beiden zuvor erstellten
DocFormate DF05VAR_READ und DF05TAB_READ zum Einlesen der Daten aufgerufen
werden und anschließend die Formatierung und Ausgabe des Dokuments erfolgen kann.

Zuerst wird eine Bedingung (If-then) in das DocFormat DF_MAIN eingefügt:


Condition: UPPER(MAIN_REC_ID)=='ENDD'
Diese Bedingung fragt das Ende eines Datensatzes ab. Ist die Bedingung erfüllt, der
Datensatz also vollständig eingelesen, kann die Datenausgabe starten und das Dokument
abgeschlossen werden.
Man fügt im THEN-Zweig der Bedingung vorerst einen End Group-Befehl und einen End
Document-Befehl (jeweils ohne Optionen) hinzu. Der Aufruf der DocFormate zum
Formatieren und Ausgeben der eingelesenen Daten wird später hier hinzugefügt:

Abbildung 218: Hinzufügen einer Bedingung im DocFormat DF_MAIN und Abschluss des
Dokuments im THEN-Zweig

Kap. 14, S. 12 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 209/308

Anschließend fügt man einen ELSE-Zweig hinzu. Dieser wird dann aufgerufen, solange das
Ende eines Datensatzes noch nicht erreicht ist, also noch Daten einzulesen sind. Daher sind
von hier aus die DocFormate zum Einlesen der Daten aufzurufen.
Da zu diesem Zeitpunkt die Datenzeile bereits eingelesen und nur die Datensatz-ID in einer
Variablen (nämlich in MAIN_REC_ID) gespeichert wurde, benötigt man zuerst einen
Skiprecord-Befehl, um in die vorangehende Zeile zurückzuspringen und die restlichen
Felder dieser Zeile einlesen zu können:
Skip record count: -1
Wie bereits erwähnt, werden die Datensatz-IDs "CUST", "TXTB" und "TOTA" vom
DocFormat DF05VAR_READ verarbeitet, die Datensatz-ID "TAB1" vom DocFormat
DF05TAB_READ. Um den Aufruf dieser DocFormate aus dem ELSE-Zweig zu vereinfachen,
verwendet man eine Ersetzungstabelle.
Man legt daher im Fenster "FormatGroup Definitions" eine neue Ersetzungstabelle
("Substitute") DF_TO_USE an:
Source: Target:
'CUST' 'VAR_READ'
'TOTA' 'VAR_READ'
'TXTB' 'VAR_READ'
'TAB1' 'TAB_READ'

In dieser Substitutionstabelle wird der Inhalt der Variablen MAIN_REC_ID, z.B. "CUST",
"TAB1" entweder durch den String "VAR_READ" oder "TAB_READ" ersetzt.
Im Gegensatz zu Lektion 4 dienen "DF05VAR_READ" and "DF05TAB_READ" lediglich dazu,
die Datensätze einzulesen. Sobald "ENDD" erreicht ist, werden im THEN-Zweig
entsprechende DocFormate referenziert, um den Inhalt zu auszugeben.
Man fügt nun im Fenster "Document Format Definitions" im DocFormat DF_MAIN nach dem
Skiprecord-Befehl einen USE-Befehl ein. Damit werden die DocFormate zum Einlesen der
Daten aufgerufen:

Abbildung 219: Dialogfenster "Use" - Aufruf eines DocFormats unter Verwendung der Funktion
REFERENCE

Im Dialogfenster des USE-Befehls wählt man DocFormat aus der Liste links, selektiert
"External DocFormat" und gibt folgenden Ausdruck als DocFormat-Name an:
REFERENCE('DF05'!SUBSTITUTE(DF_TO_USE,MAIN_REC_ID))

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 13


210/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Wie bereits in Lektion 4 gezeigt, wird ein REFERENCE-Ausdruck für Befehle spezifiziert, bei
denen das Element, auf das verwiesen wird, erst zur Laufzeit verfügbar ist, z.B. der Inhalt
einer Variablen. In diesem Beispiel wird der Name des aufzurufenden DOCFORMATs über
einen REFERENCE-Ausdruck spezifiziert, dessen Inhalt erst mit dem Einlesen der
Datensatz-ID bekannt ist. Dieser Ausdruck besteht aus zwei Strings, die mit Hilfe des
Konkatenations-Operators "!" verbunden sind. Der spezifizierte String "DF05" wird also mit
dem Returnwert aus der Substitutionstabelle DF_TO_USE zur Laufzeit entweder zum String
"DF05VAR_READ" oder "DF05TAB_READ" verbunden.

Abbildung 220: Document Format Definitions: Substitutionstabelle für den Aufruf der adäquaten
DOCDEF

Nach einem Reformatieren werden die externen DocFormate DF05VAR_READ und


DF05TAB_READ eingebunden und somit auch im Fenster "Document Format Definitions"
sichtbar. Daher kann nun das temporäre DocFormat TEMP gelöscht werden.
Im Fenster "Variables" kann man nachprüfen, dass die beiden externen DocFormate
DF05VAR_READ und DF05TAB_READ die Daten eingelesen und in entsprechenden
Variablen abgelegt haben:

Abbildung 221: Anzeige der beim Einlesen angelegten Variablen im Fenster "Variables"

Kap. 14, S. 14 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 211/308

Nun erweitert man den THEN-Zweig im DocFormat DF_MAIN. Hier werden nun - vor dem
End Group-Befehl - drei USE-Befehle eingefügt, mit denen folgende drei externe
DocFormate aufgerufen werden:
DF04CUST
DF04TAB1
DF04TOTA
Es handelt sich hierbei um die in Lektion 4 erstellten externen DocFormate. Da die
Variablennamen ident sind, können diese DocFormate auch in Lektion 5 zum Einsatz
gebracht werden. Hier zeigt sich ein großer Vorteil der Verwendung externer DocFormate.
Das DocFormat DF_MAIN sieht nun wie folgt aus:

Abbildung 222: DocFormat DF_MAIN nach Hinzufügen der drei USE-Befehle für die DocFormate
aus Lektion 4

Nach einem Reformatieren wird im Vorschaufenster das Dokument dargestellt. Es fehlt


allerdings noch der Hauptteil des Briefes, der Text. Dieser wird im nächsten Schritt unter
Verwendung einer neuen Vorgangsweise hinzugefügt.

14.6 Weitere Textsteuerungsbefehle


14.6.1 Ausgabe von Text im DocFormat DF05TEXT
Zur Ausgabe des Brieftextes erstellt man ein neues DocFormat mit Namen DF05TEXT.
Darin platziert man einen OUTLINE-Befehl, sowie den folgenden ASSIGN-Befehl (wie in
Lektion 4):
Assign definition
Variable Name: ADDRESSING
Expression: SUBSTITUTE(GENDER_TABLE,GENDER)!LNAME
Die Begrüßungszeile wird, ebenfalls wie in Lektion 4, über einen PLACE-Befehl realisiert:
Expression to print: 'Dear '!ADDRESSING!','

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 15


212/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 223: Hinzufügen der Befehle ASSIGN und PLACE im neu erstellten DocFormat
DF05TEXT

Der eigentliche Text des Briefes soll aus einem externen Textblock bezogen werden. Im
Verzeichnis implib stehen dafür folgende Dateien zur Verfügung:
1_ENG.imp
1_GER.imp
2_ENG.imp
2_GER.imp
Zum Einfügen des Inhalts einer externen Datei kann der Befehl FILTER zum Einsatz
kommen:

14.6.2 Der Textsteuerungsbefehl FILTER


Man fügt einen TEXT-Befehl zum DocFormat DF05TEXT hinzu. Der folgende Dialog zeigt,
wie ein externer Textblock in eine Document Definition eingefügt wird:

Abbildung 224: Dialogfenster "Text" - Importieren eines Textblocks

Die Syntax dieses TEXT-Unterbefehls lautet:


FILTER ({ SOURCE | NATIVE | HTML }, { <Name> | REFERENCE(<Ausdruck>) })

SOURCE Die externe Datei enthält DOCDEF-Textsteuerungsbefehle.


Der Quellcode des TEXT-Befehls wird kompiliert und
ausgeführt.

NATIVE Die externe Datei enthält reinen ASCII-Text. CRLF, TABs


etc. werden nicht beachtet und als Text ausgegeben.

HTML Die externe Datei enthält HTML-Code. Der TEXT Befehl


Source code wird nicht als solcher fortgesetzt.

Kap. 14, S. 16 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 213/308

<Name> Der Name der externen Datei ohne Erweiterung, um sie


beim Kompilieren einzufügen.

REFERENCE(<Ausdruck>) Die externe Datei ohne Erweiterung wird über eine


REFERENCE zur Laufzeit eingefügt.

Der Pfad und die Erweiterung der einzufügenden Dateien werden im Parameter IDFTLIB des
DocEXEC-Hauptprofils angegeben.
IDFTLIB="..\IMPLIB<imp>"

Im Beispiel spezifiziert man den Unterbefehl FILTER folgendermaßen:


FILTER(SOURCE,REFERENCE(TXT_EL!'_'!LANG))

Variablenname wie auch -wert werden aus den Daten eingelesen. Zur Erinnerung nochmals
die zweite Datenzeile:
TXTB;TXT_EL=1;

Das Beispiel zeigt, dass die Entscheidung, welcher Textblock eingefügt werden soll, bereits
in den Daten getroffen wird. Da der Variablenwert im ersten Dokument 1 beträgt, wird
entweder die Datei "1_eng.imp" bzw. "1_ger.imp" eingefügt.
Die Wahl der Sprachvariante erfolgt ebenfalls über die Eingabedaten. Dafür wird die Variable
LANG herangezogen.

Abbildung 225: Das vollständige DocFormat DF05TEXT

14.6.3 Variablen in einem inkludierten Textelement


Wie bereits in Lektion 4 wird der Adressat (mit der Variablen ADDRESSING) in einen Satz
eingefügt. Im hier eingefügten externen Textelement wird dieses Konzept ebenfalls
verwendet:
'In dieser Übersicht sind außerdem die weiteren von ISIS angebotenen Kurse
beschrieben, sodass Sie, 'COLOR RED (ADDRESSING) COLOR BLACK', sicherlich den
für Ihre Anforderungen passenden Kurs finden.'

Mit dem Befehl FILTER können im externen Textelement Variablen enthalten sein, deren
Inhalte dann im Textbefehl angezeigt werden.

14.6.4 Der Textsteuerungsbefehl DFACODE


Ein ähnlicher Textbefehl - der im Beispieldokument nicht verwendet wird - ist der
Textsteuerungsbefehl DFACODE(<Variablenname>). DFACODE ist für Fälle vorgesehen, in
denen eine Mischung aus Textstrings und Befehlen aus einer Variablen eingelesen werden
sollen - im Gegensatz zur Funktionalität, die die Textsteuerungsbefehle ELEMENT und
FILTER bieten.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 17


214/308 Lektion 5: Textbausteine und Mehrsprachigkeit

14.6.5 DFACODE, FILTER und ELEMENT


Diese drei Funktionen erfüllen im Grunde die gleiche Aufgabe: Sie laden und interpretieren
externe Inhalte (Text vermischt mit Text-Steuerungsbefehlen) in eine TEXT-Definition. Der
Hauptunterschied besteht darin, woher diese Inhalte geladen werden.

DFACODE Eine Variable enthält Text und Text-Steuerungsbefehle.

FILTER Eine externe Datei enthält Text und


Text-Steuerungsbefehle. Der Inhalt kann entweder
ausgewertet und interpretiert (Option: SOURCE) oder
lediglich als ASCII-Text gelesen werden (Option: NATIVE).

ELEMENT Eine ELEMENT-Definition, die in die DOCDEF geschrieben


wird, beinhaltet Text und Text-Steuerungsbefehle.

DFACODE und FILTER wirken sich unterschiedlich auf die Performance aus. Anmerkungen
hierzu sind im Dokument DocEXEC and Designer Tips and Notes zu finden.

14.6.6 Der Textsteuerungsbefehl COLOR


Der TEXT-Befehl wie auch interne und externe Textelemente können Farbspezifikationen
enthalten. Dabei gilt dasselbe wie für Fonts: Die Namen müssen am Beginn (in den COLOR
DEFINITIONS) festgelegt sein.

14.7 Unterstützung für mehrere Sprachen


Im folgenden Abschnitt soll das Projekt so erweitert werden, dass die Ausgabe des
Dokuments in verschiedenen Sprachen erfolgen kann. In den Eingabedaten ist - durch die
Variable LANG - bereits angegeben, in welcher Sprache das Dokument jeweils erstellt
werden soll.
Der über den Textsteuerungsbefehl FILTER importierte externe Textblock im DocFormat
DF05TEXT wird bereits in verschiedenen Sprachen ausgegeben. Hier zeigt sich jedoch
bereits ein erstes Problem: die Ausgabe von Sonderzeichen wie z.B. der Umlaute in der
deutschsprachigen Version ist nicht korrekt. Hier kann mit dem Befehl LANGUAGESET eine
Lösung erreicht werden.

14.7.1 Der Befehl LANGUAGESET


Da in diesem Beispiel externe Textblöcke mit verschiedenen Sprachen verwendet werden,
wird zu deren Interpretation je nach Sprache eine andere Codepage herangezogen, um die
landestypischen Sonderzeichen (im Deutschen beispielsweise die Umlaute) richtig
darzustellen. Da in diesem Beispiel der Parameter CODESRC per Default auf OEM
eingestellt ist, wird der englische Textbaustein richtig interpretiert. Für die korrekte
Darstellung des deutschen Textes wird jedoch die Codepage 1252 benötigt. Je nach Wert
der Variablen LANG soll also entweder die Standard-OEM-Codepage oder die Windows
Codepage 1252 verwendet werden. Die jeweilige Einstellung wird mit dem Befehl
LANGUAGESET vorgenommen. Dieser Befehl erlaubt die dynamische Neueinstellung
bereits gesetzter Parameter während der DocEXEC-Verarbeitung.

Dazu erstellt man im DocFormat DF_MAIN zum bereits vorhandenen THEN-Zweig der
Bedingung eine SELECT-CASE Abfrage, die den Inhalt der Variablen LANG, also die für den
Datensatz gewünschte Sprache, prüft:

Kap. 14, S. 18 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 215/308

Abbildung 226: Select-Case Abfrage im DocFormat DF_MAIN

Man fügt nun zu beiden CASE-Ausdrücken einen LANGUAGESET-Befehl hinzu. Das


entsprechende Symbol befindet sich in der Symbolleiste "Frequent Commands". Der
folgende Dialog wird geöffnet:

Abbildung 227: Dialogfenster "Languageset" - Auswahl der Codepage

Der LANGUAGESET-Befehl für den Fall einer englischsprachigen Ausgabe (Case 'ENG')
bleibt unverändert, im Fall der deutschsprachigen Ausgabe (Case 'GER') vergibt man
folgende Parameterwerte für den Befehl LANGUAGESET:
Source codepage: User: 1252
Input codepage: User: 1252

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 19


216/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 228: Hinzufügen von zwei LANGUAGESET-Befehlen, der markierte Befehl ist bei
Ausgabe deutschsprachigen Texts aktiv

Betrachtet man die Eingabedaten für Lektion 5, kann man erkennen, dass
Nachkommastellen (z.B. bei den Preisangaben) sprachabhängig mit unterschiedlichen
Dezimalseparatoren geschrieben werden. Datensätze, deren Ausgabe in deutscher Sprache
erfolgen soll (LANG=GER) enthalten den regional üblichen Dezimalseparator ',' - also
beispielsweise "17,95". Bei Datensätzen mit englischer Sprache (LANG=ENG), wird '.' als
Dezimalseparator verwendet, z.B. "17.95". Damit dieser Unterschied in der Formatierung der
Eingabedaten richtig verarbeitet werden kann, passt man eine weitere Einstellung des
LANGUAGESET-Befehls an.
Man öffnet den LANGUAGESET-Befehl für die englischsprachige Ausgabe (Case 'ENG') und
gibt als "Decimal separator" an:
Decimal separator: '.'
Anschließend öffnet man den LANGUAGESET-Befehl für die deutschsprachige Ausgabe
(Case 'GER') und gibt an:
Decimal separator: ','

Kap. 14, S. 20 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 217/308

Abbildung 229: Unterschiedliche Einstellung des Dezimalseparators für die Sprachvarianten

Obwohl das Beispiel lediglich die Optionen "Source codepage", "Input codepage" und
"Decimal separator" verwendet, sollen an dieser Stelle auch noch die restlichen
Eigenschaften vorgestellt werden.
In diesem Dialog können die folgenden Parameter spezifiziert werden:

Font codepage Definiert die Default-Font-Codepage neu, die im


USE-Befehl spezifiziert ist. Die Parameter, auf die sich die
Schaltknöpfe beziehen, sind diejenigen, die im
DocEXEC-Hauptprofil festgelegt sind, oder deren Defaults.

Source codepage Ein Schaltknopf ist auszuwählen, um die Codepage für die
Interpretation des DFA-Code neu zu definieren.

Input codepage Definiert die Codepage für die Interpretation der


Eingabedaten neu (Befehl
APPLICATION-INPUT-FORMAT), wenn zum Beispiel
verschiedene sprachabhängige Datensätze enthalten sind.
Die Parameter, auf die sich die Schaltknöpfe beziehen, sind
diejenigen, die im DocEXEC-Hauptprofil festgelegt sind,
oder deren Defaults.

Decimal separator Definiert einen String für den (sprachabhängigen)


Dezimalseparator (z.B. ',') ein.

Thousands separator Definert einen String für den (sprachabhängigen)


Tausenderseparator (z.B. '.') ein.

Text entry direction Definiert die Richtung der Texteingabe neu, die im
USE-Befehl festgelegt wurde.

Date format Definiert das Datumsformat für PROMPT-Abschnitte neu,


das in einem USE-Befehl definiert wurde.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 21


218/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Hyphen dictionary Gibt den Namen der Worttrennungsdatei (mit der


Erweiterung <HYP> an. Dieser besteht aus drei Zeichen,
z.B. 'GRM' oder 'ENG' (in einfachen Anführungszeichen!).
Die Datei befindet sich in dem Verzeichnis, das im
Parameter HYPHENLIB im DocEXEC-Hauptprofil definiert
ist.

Spell dictionary Gibt den String für die Identifizierung der Sprache an, z.B.
'GRM_NEW' oder 'ENG'. Dieser String ist in der Datei
PCLS.CFG enthalten, die im Papyrus Client-Verzeichnis
liegt. Dadurch wird die Rechtschreibkontrolle im Text Editor
ermöglicht (siehe Lektion 6).

Signum as postfix Legt fest, ob ein nachgestelltes Minuszeichen automatisch


als Minuszeichen interpretiert wird (z.B. 1234.89- wird als
-1234.89 interpretiert).

14.7.2 Lokalisierung
Durch die zuvor durchgeführten Erweiterungen ist es möglich geworden, je nach Wert der
Variablen LANG, der Textblock entwender in deutscher oder englischer Sprache
ausgegeben. Durch die Einstellungen im Befehl LANGUAGESET werden auch die
Sonderzeichen des deutschsprachigen Texts korrekt wiedergegeben.
Allerdings sind in den Dokumenten, in denen der Textblock auf Deutsch ausgegeben wird,
noch weite Teile des Briefs auf Englisch, z.B. die Anrede, die Tabelle mit der Zutatenliste etc.
Um auch diese Dokumentteile in der passenden Sprache ausgeben zu können, werden alle
Übersetzungen in einem DocFormat zentralisiert, das vor dem ersten Dokument, also in
$_BEFOREFIRSTDOC, aufgerufen wird. In diesem DocFormat werden die zu übersetzenden
Strings als indizierte Variablen angelegt und können dann zum Ausgabezeitpunkt abgerufen
werden.

14.7.2.1 Anlegen der Übersetzungen


Man legt im Fenster "Document Format Definitions" ein neues DocFormat "Translations"
an und definiert darin über ASSIGN-Befehle folgende Variablen:

Kap. 14, S. 22 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 219/308

&TRA_MR[1] = 'Mr.' ;
&TRA_MR[2] = 'Herr' ;
&TRA_MRS[1] = 'Mrs.' ;
&TRA_MRS[2] = 'Frau' ;
&TRA_SIRS[1] = 'Sirs' ;
&TRA_SIRS[2] = 'werter Kunde' ;
&TRA_DEAR_MR[1] = 'Dear' ;
&TRA_DEAR_MR[2] = 'Sehr geehrter' ;
&TRA_DEAR_MRS[1] = 'Dear' ;
&TRA_DEAR_MRS[2] = 'Sehr geehrte' ;
&TRA_DEAR_SIRS[1] = 'Dear' ;
&TRA_DEAR_SIRS[2] = 'Sehr geehrte Damen und Herren,' ;
&TRA_POS[1] = 'Pos.' ;
&TRA_POS[2] = 'Pos.' ;
&TRA_ARTICLE[1] = 'Article' ;
&TRA_ARTICLE[2] = 'Artikel' ;
&TRA_AMOUNT[1] = 'Amount' ;
&TRA_AMOUNT[2] = 'Menge' ;
&TRA_TOTAL[1] = 'Total' ;
&TRA_TOTAL[2] = 'Gesamt' ;
&TRA_ARTICLE_VAR[1] = 'ARTICLE' ;
&TRA_ARTICLE_VAR[2] = 'ARTIKEL' ;
&TRA_UNIT_VAR[1] = 'UNIT' ;
&TRA_UNIT_VAR[2] = 'EINHEIT' ;
&TRA_CUR[1] = 'USD' ;
&TRA_CUR[2] = 'EUR' ;
&TRA_SUBTOTAL[1] = 'Subtotal:' ;
&TRA_SUBTOTAL[2] = 'Übertrag: ' ;
&TRA_FROM[1] = 'from' ;
&TRA_FROM[2] = 'von' ;
&TRA_GRANDTOTAL[1] = 'Grandtotal:' ;
&TRA_GRANDTOTAL[2] = 'Gesamtsumme: ' ;
&TRA_CHART_OTHERS[1] = 'Others' ;
&TRA_CHART_OTHERS[2] = 'Andere' ;
&TRA_REGARD[1] = 'With my best regards' ;
&TRA_REGARD[2] = 'Mit freundlichen Grüßen' ;
&TRA_FOOTER_PAGE[1] = 'page ' ;
&TRA_FOOTER_PAGE[2] = 'Seite ' ;
&TRA_FOOTER_OF[1] = ' of ' ;
&TRA_FOOTER_OF[2] = ' von ' ;

Abbildung 230: Anlegen von Übersetzungen im neuen DocFormat TRANSLATIONS

Im DocFormat $_BEFOREFIRSTDOC fügt man nun einen USE-Befehl für das neu erstellte
DocFormat TRANSLATIONS hinzu:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 23


220/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 231: USE-Befehl im DocFormat $_BEFOREFIRSTDOC für das neue erstellte


DocFormat TRANSLATIONS

Wie aus der Variablen-Definition im DocFormat TRANSLATIONS ersichtlich wird, ist dem
englischen Text jeweils der Index 1 zugeordnet, der deutschsprachigen Variante der Index 2.
Im DocFormat DF_MAIN stellt man daher eine Verbindung zwischen diesen Indexwerten und
den Sprachvarianten her. Im SELECT-CASE-Konstrukt werden die beiden "Fälle" (Case
'ENG' bzw. Case 'GER') jeweils mit einem ASSIGN-Befehl erweitert, der die neue Variable
LANG_IND (für "Language Index") definiert:

Abbildung 232: Definieren der Variable LANG_IND: Wert 1 für Englisch, Wert 2 für Deutsch

14.7.2.2 Aufrufen der Übersetzungen


Der praktische Einsatz kann nun am Beispiel der Fußzeile mit der Seitenangabe ("page 1 of
2") verdeutlicht werden. Man ändert die Output-Definition im Fenster "FormatGroup
Definitions" wie folgt:
von: 'page '!ACT_PAGE!' of '!TOT_PAGE
auf: &TRA_FOOTER_PAGE[LANG_IND]!ACT_PAGE!&TRA_FOOTER_OF[LANG_IND]!TOT_PAGE

Je nach aktuell verwendeter Sprachvariante wird nun die jeweils gewünschte Übersetzung
aus dem DocFormat TRANSLATIONS geholt und ausgegeben.

14.7.2.3 Speichern externer DocFormate unter einem neuen Namen


In ähnlicher Weise werden die restlichen Übersetzungen implementiert. Externe DocFormate,
die auch in anderen Projekten zum Einsatz kommen, sollten vor Veränderungen unter einem
neuen Namen gespeichert werden:
Durch einen Rechtsklick auf ein externes DocFormat im Fenster "Document Format
Definitions" öffnet sich das Dialogfenster "Save Include file as". Im Falle des externen
DocFormats DF04TOTA gibt man hier nun DF05TOTA ein und bestätigt mit OK.

Kap. 14, S. 24 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 221/308

Abbildung 233: Speichern eines externen DocFormats unter einem neuen Namen

Anschließend ändert man den USE-Befehl im DocFormat DF_MAIN, damit das neu erstellte
DocFormat DF05TOTA statt DF04TOTA aufgerufen wird. Nach einem Klick auf "Speichern"
in Papyrus Designer und einem Reformatieren steht das neue DocFormat zur Verfügung.
Nun passt man die Ausgabe der Verabschiedung im PLACE-Befehl im DocFormat
DF05TOTA auf
&TRA_REGARD[LANG_IND]
an.
Ebenso speichert man das DocFormat DF04TAB1 unter einem neuen Namen, z.B.
DF05TAB1. Für die sprachabhänginge Beschriftung des Diagramms fügt man eine neue
Variable ein:
Assign definition:
Variable name: ~CHART_VAR
Expression: &TRA_ARTICLE_VAR[LANG_IND]
Im CHARTDLL-Befehl ändert man dann den Eintrag im Bereich "Chart values" von
ARTICLE auf {~CHART_VAR}:

Abbildung 234: Erstellen einer neuen Variable und Aufruf derselben im CHARTDLL-Befehl

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 25


222/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Außerdem ändert man im CHARTDLL-Befehl den Eintrag im Bereich "GroupText" auf den
Ausdruck ("Expression") &TRA_CHART_OTHERS[LANG_IND]. Dieses Feld steuert die
Beschriftung jenes Segments im Tortendiagramm, in dem kleinere Werte zusammengefasst
werden:

Abbildung 235: Lokalisierung der Beschriftung der Zusammenfassung kleinerer Elemente im


Tortendiagramm über einen Ausdruck im Bereich "GroupText" des Befehls ChartDll

Im DocFormat DF05TAB1 ändert man ebenfalls die bisher hartkodierten Strings in


Variablenaufrufe. Besondere Aufmerksamkeit erfordert die Tatsache, dass auch die
Sortierung der Tabelle an die jeweilige Ausgabesprache angepasst wird. Dazu ändert man im
SORT-Befehl die "Sort expression" von ARTICLE auf:
Sort expression: {&TRA_ARTICLE_VAR[LANG_IND]}
Während die Spaltenüberschriften in der Tabelle wie folgt definiert werden
z.B.: &TRA_ARTICLE[LANG_IND]
müssen für die Ausgabe der eigentlichen Artikelnamen in den einzelnen Tabellenzeilen
geschwungene Klammern verwendet werden
z.B. {&TRA_ARTICLE_VAR[LANG_IND]}

Kap. 14, S. 26 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 223/308

Abbildung 236: Ausschnitt aus dem DocFormat DF05TAB1 nach Anbringen der Veränderungen
zur Unterstützung der Lokalisierung

Zur Ausgabe der Anrede in der gewünschten Sprache muss zuerst die Substitutionstabelle
GENDER_TABLE im Fenster "FormatGroup Definitions" angepasst werden. Man löscht den
"Default"-Text und entfernt bei jedem Tabelleneintrag das Leerzeichen und den Punkt, so
ändert man z.B. den bisherigen Eintrag 'Mr. ' auf 'Mr':

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 27


224/308 Lektion 5: Textbausteine und Mehrsprachigkeit

Abbildung 237: Anpassungen an der Ersetzungstabelle

Das DocFormat DF05TEXT, das die Ausgabe der Anrede enthält verändert und erweitert
man durch Ändern bzw. Hinzufügen von ASSIGN-Befehlen:
Variable name: DEAR
Expression: '&TRA_DEAR_'!SUBSTITUTE(GENDER_TABLE,GENDER)
Variable name: DEAR
Expression: {DEAR}[LANG_IND]
Variable name: ADDRESSING
Expression: '&TRA_'!SUBSTITUTE(GENDER_TABLE,GENDER)
Variable name: ADDRESSING
Expression: {ADDRESSING}[LANG_IND]!' '!LNAME
Die Ausgabe erfolgt dann über den leicht veränderten PLACE-Befehl:
Expression to print: DEAR!' '!ADDRESSING!','

Abbildung 238: Modifikationen im DocFormat DF05TEXT zur Unterstützung der Mehrsprachigkeit


im Dokument

Kap. 14, S. 28 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5: Textbausteine und Mehrsprachigkeit 225/308

Durch die hier besprochenen Erweiterungen wird nun für jedes Dokument sowohl der
Haupt-Textblock als auch alle anderen Texte, Tabelleneinträge und Diagrammbeschriftungen
in der jeweils gewünschten Sprache ausgegeben. Ebenso ist die Formatierung von Zahlen
an die jeweiligen regionalen Gegebenheiten angepasst. Beim Durchblättern durch die
einzelnen Dokumente im Projekt zeigt sich, dass diese Änderungen dynamisch pro
Dokument vorgenommen werden.

14.7.3 Alternative Lokalisierungsimplementationen


Die im praktischen Beispiel vorgestellte Implementation zur Unterstützung von
Lokalisierungen im DOCDEF-Projekt hat den Nachteil, dass die Übersetzungen als Variablen
in der DOCDEF (im DocFormat TRANSLATIONS) abgespeichert sind. Dies hat zur Folge,
dass der Übersetzer entweder über DOCDEF-Kenntnisse verfügen muss oder auf andere
Weise eng mit den DOCDEF-Entwicklern zusammenarbeiten muss. In der geschäftlichen
Praxis wird dies jedoch nicht immer möglich sein.
Eine Lösung für die Problematik stellt, der gängigen Praxis folgend, das Externalisieren von
Übersetzungen dar (d.h. das Herauslösen der sprachabhängigen Zeichenketten aus dem
Programmcode, in diesem Fall aus dem DOCDEF-Code):

“ Verwendung der ISIS Translation Collection


Die empfohlene Variante (unter Einbeziehung von Papyrus WebRepository) umfasst
das Ablegen der Übersetzungen im verteilten Object Space in der ISIS Translation
Collection oder einer vergleichbaren kundenspezifisichen Objektstruktur. Über die für
Papyrus DocEXEC verfügbaren Zugriffsfunktionen auf Papyrus Objects (OMSACCESS)
kann dann aus der DOCDEF auf die Übersetzungen zur weiteren Verarbeitung
zugegriffen werden.
Die ISIS Translation Collection wird im Dokument ISIS Papyrus WebRepository and
Papyrus Objects Developer´s Guide (pwride) näher vorgestellt, im Handbuch ISIS
Papyrus DocEXEC Zugriff auf Papyrus Objects Entwicklerhandbuch (pdedoa) finden
sich weitere Informationen zu den Papyrus DocEXEC-Zugriffsfunktionen auf Papyrus
Objects.

“ Übersetzungen in einer externen Datei


Die zu übersetzenden Strings können auch in eine externe Datei ausgelagert werden
(z.B. im XML-Format). Mit Hilfe der PDECON READLINE-Funktion in Papyrus
DocEXEC können diese dann aus der externen Datei eingelesen werden und ähnlich
dem vorliegenden Beispiel in der DOCDEF verarbeitet werden.
Die PDECON-Zugriffsroutinen auf zusätzliche Eingabedateien werden im Dokument
ISIS Papyrus DocEXEC Referenzhandbuch (pdedrm) besprochen.

14.8 Zusammenfassung
Lektion 5 zeigte

“ Die Verwendung verschiedener Textbausteine in Abhängigkeit von den Eingangsdaten


wird in den Befehlen APPLICATION-INPUT-FORMAT und RECORD gezeigt.
“ Die dynamische Erstellung von Variablen wurde erklärt,
“ ebenso die Verarbeitung externer Texte mit DFACODE, FILTER und ELEMENT.
“ Die Unterstützung für mehrere Sprachen wurde gezeigt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 14, S. 29


226/308 Lektion 5: Textbausteine und Mehrsprachigkeit

14.9 Fragen zu Lektion 5


“ Wie können in den Eingabedaten vorhandene Datensatz-IDs (Tags, etc.) genutzt
werden?

.................................................................................................................................

“ Wie können Variablen dynamisch aus den Eingabedaten generiert werden?

.................................................................................................................................

“ Wie können verschiedene Textblöcke dynamisch in die DOCDEF eingefügt werden?

.................................................................................................................................

“ Welche Möglichkeiten zur Unterstützung der Lokalisierung in DocDef-Projekten gibt es?

.................................................................................................................................

Kap. 14, S. 30 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5A: Indizierung und Inhaltsverzeichnis 227/308

15.0 Lektion 5A: Indizierung und Inhaltsverzeichnis

Lektion 5A erweitert das Dokument von Lektion 5 und stellt neue Elemente der DOCDEF vor.

15.1 In dieser Lektion vermitteltes Wissen


Lektion 5A zeigt

“ Erstellen eines Dokumentindexes und eines Inhaltsverzeichnisses

Index
Für die Ansicht des Dokuments in Papyrus Client wird ein Index erzeugt.
Inhaltsverzeichnis
Für jede Dokumentinstanz soll ein Inhaltsverzeichnis erstellt werden.

Abbildung 239: Ein Inhaltsverzeichnis für jedes Dokument

15.2 Notwendige Vorarbeiten


Die folgenden Schritte ermöglichen den Übergang von einer fertiggestellten Lektion 5 zu
Lektion 5A. Die hier beschriebenen Vorarbeiten müssen also vor Beginn der eigentlichen
Lektion 5A durchgeführt werden.
1. Man öffnet die Projektdatei einer fertiggestellten Lektion 5 (z.B. lesson05.prj) in Papyrus
Designer.
2. Aus dem Menü wählt man File | Save Project as...
3. Im Dialogfenster vergibt man mylesson05a.prj als Projektname (Document Project
Name) und MYLESSON05A als DocDef-Name (Doc. Def. File Name).
4. Mit einem Klick auf OK bestätigt man die Änderungen. Dadurch werden im Dateisystem
auch die neuen Dateien mylesson05a.prj und mylesson05a.dfa angelegt.

15.3 Die Erstellung eines Suchindex


Um sich in Papyrus Client gezielt eine bestimmte Gruppe von Seiten (die sich beispielsweise
auf einen Kunden beziehen) anzeigen zu lassen, werden die Dokumente mit einem
besonderen Index versehen: einem Gruppenindex.
Zuerst wird festgelegt, wo diese Indizes angelegt werden sollen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 15, S. 1


228/308 Lektion 5A: Indizierung und Inhaltsverzeichnis

Man modifiziert dazu den Befehl APPLICATION-OUTPUT-FORMAT:

Abbildung 240: Dialogfenster "Application Output Format" - Setzen der Parameter zur Erstellung
eines Index

In obigem Dialog markiert man die Checkbox "TLE Records in Doc" (1). TLEs steht für "Tag
Logical Elements", d.h. Index-Einträge im Ausgabe-AFPDS. Über die Checkbox "ACIF Index
generation" (2) erzeugt DocEXEC eine externe Indexdatei <NDX>.
Man speichert anschließend das eingebundene externe DocFormat DF04CUST wie in der
vorhergehenden Lektion beschrieben unter einem neuen Namen, z.B. DF05ACUST. Danach
ist auch der entsprechende USE-Befehl anzupassen. Im DocFormat DF05ACUST wird der
Index selbst im Befehl GROUPINDEX definiert.
Man zieht das Symbol INDEX aus der Symbolleiste "Frequent Commands" in das Fenster
"Document Format Definitions" und platziert es am Beginn des DocFormat DF05ACUST
innerhalb des INCLUDE-Befehls.

Abbildung 241: Positionieren des INDEX-Befehls im DocFormat DF05ACUST

Kap. 15, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5A: Indizierung und Inhaltsverzeichnis 229/308

Der folgende Dialog wird geöffnet:

Abbildung 242: Dialogfenster "Index Definition"

In diesem Dialog kann über die Eingabe eines Indexnamens und eines Indexwerts entweder
ein GROUPINDEX- oder INDEX-Befehl definiert werden. Für einen GROUPINDEX wählt
man die Checkbox "Group Index" aus.

Ein GROUPINDEX bezieht sich immer auf ein ganzes Dokument, während ein einfacher
INDEX sich immer nur auf die Seiten bezieht, auf denen er spezifiziert wird.
Im Beispiel werden Vor- und Nachnamen des Kunden dem Index CUSTOMER (pro
Dokumentinstanz) zugewiesen:
Index Name: CUSTOMER
Value: LNAME!', '!FNAME

Im Papyrus Client kann der generierte AFPDS angesehen werden. Dazu wird in Papyrus
Designer über Tools | Generate ein AFPDS erzeugt:

Abbildung 243: Papyrus Designer - Generate AFPDS

Dieses AFPDS soll in Papyrus Client betrachtet werden. Dazu wird Papyrus Client aus dem
Windows Startmenü über Start | All Programs | ISIS Papyrus Designer & DocEXEC
Workshop | Papyrus Client aufgerufen:

Abbildung 244: Starten von Papyrus Client

1. Der "Viewer"-Modus in Papyrus Client muss aktiviert sein. Dazu wird das Icon Viewer in
der Symbolleiste (1) angeklickt bzw. aus dem Menü Extras | Mode | Viewer gewählt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 15, S. 3


230/308 Lektion 5A: Indizierung und Inhaltsverzeichnis

2. Anschließend wird aus der Symbolleiste das Icon Load (2) bzw. im Menü File | Load
gewählt. Daraufhin öffnet das Dialogfenster "Load AFP File".

3. Der Cursor wird im Feld "File Name" (3) positioniert und anschließend die Schaltfläche
Select file (4) betätigt.

4. Das AFPDS ..\afpds300\lesson05.afp wird auswählt und mit mit Open geöffnet.

Abbildung 245: Papyrus Client - Auswahl der generierten AFP-Datei

Mit Find | Index... werden die TLEs eingelesen. Daraufhin kann das Dokument anhand der
Indizes durchsucht werden:

Abbildung 246: Papyrus Client - Ansehen des generierten Indexes

15.4 Erstellung eines Inhaltsverzeichnisses


Für die Erstellung eines Inhaltsverzeichnisses am Beginn jeder Dokumentinstanz enthält das
Beispiel eine FORMATGROUP CONTENT und zwei weitere DOCFORMATs:

Kap. 15, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5A: Indizierung und Inhaltsverzeichnis 231/308

“ In PUT_CONTENT werden den Variablen CONT_ENTRY_PAGE und CONT_ENTRY,


die die Seitennummern und Texte des Inhaltsverzeichnisses enthalten, ihre Werte
zugewiesen. Es wird während der Dokumenterzeugung an jenen Stellen aufgerufen, für
die Einträge im Inhaltsverzeichnis erstellt werden sollen.

“ In MAKE_CONTENT wird das Inhaltsverzeichnis ausgegeben:

Abbildung 247: Das Inhaltsverzeichnis für das Dokument aus Lektion 5

15.4.1 Speichern von Verzeichniseinträgen und Seitennummern (DocFormat


PUT_CONTENT)
Man erstellt im Fenster "Document Format Definitions" ein neues DocFormat
PUT_CONTENT und füllt es mit drei ASSIGN-Befehlen:

Abbildung 248: DocFormat PUT_CONTENT

Dabei stellt CONT_CNT einen Zähler für die Anzahl der Inhaltsverzeichnis-Einträge dar, der
Variable CONT_ENTRY_PAGE wird die aktuelle Seitenzahl zugewiesen und in
CONT_ENTRY der Verzeichniseintrag abgespeichert. Dieser wird aus der Variable
CONTENT übernommen, die zum Zeitpunkt des Aufrufs von PUT_CONTENT mit dem
gewünschten Verzeichniseintrag befüllt sein muss.
Das DocFormat $_BEFOREDOC wird mit einem ASSIGN-Befehl erweitert, um den Zähler
CONT_CNT zu initialisieren und vor jedem Dokument zurückzusetzen:
Assign definition
Variable Name: CONT_CNT
Expression: 0

Abbildung 249: Initialisieren des Zählers CONT_CNT im DocFormat $_BEFOREDOC

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 15, S. 5


232/308 Lektion 5A: Indizierung und Inhaltsverzeichnis

15.4.2 Erstellen und Ausgeben des Inhaltsverzeichnisses


Zuerst werden die für die Ausgabe des Inhaltsverzeichnisses benötigten Zeichenketten in
beiden unterstützten Sprachvarianten zum DocFormat TRANSLATIONS hinzugefügt.
Man erstellt im DocFormat TRANSLATIONS über ASSIGN-Befehle folgende zusätzliche
Variablen:
&TRA_TOC_TITLE[1] = 'Contents' ;
&TRA_TOC_TITLE[2] = 'Inhalt' ;
&TRA_TOC_ENTRY_ING[1] = 'Ingredients' ;
&TRA_TOC_ENTRY_ING[2] = 'Zutaten' ;
&TRA_TOC_ENTRY_GRA[1] = 'Graphical Overview' ;
&TRA_TOC_ENTRY_GRA[2] = 'Grafische Übersicht' ;
&TRA_TOC_ENTRY_MAN[1] = 'Manager on charge' ;
&TRA_TOC_ENTRY_MAN[2] = 'Zuständiger Manager' ;

15.4.2.1 Erstellen der FormatGroup CONTENT


Im Fenster "FormatGroup Definitions" erstellt man eine neue FormatGroup mit Namen
"CONTENT", welche die Seiten definiert, auf denen das Inhaltsverzeichnis gedruckt wird.
Es handelt sich dabei um eine vereinfachte Kopie der bereits vorhandenen FormatGroup
"FORMGR_01", wobei vor allem darauf zu achten ist, die Seitenzähl-Variablen ACT_PAGE
und TOT_PAGE mit dem Präfix CONT_ zu erweitern (also zu CONT_ACT_PAGE und
CONT_TOT_PAGE).
In der Fußzeile wird folgendermaßen auf diese Zählvariablen und auf die Übersetzungen aus
dem DocFormat TRANSLATIONS zurückgegriffen:
Output: &TRA_TOC_TITLE[LANG_IND]!',
'!&TRA_FOOTER_PAGE[LANG_IND]!CONT_ACT_PAGE!&TRA_FOOTER_OF[LANG_IN
D]!CONT_TOT_PAGE

Abbildung 250: Die neu erstellte FormatGroup CONTENT

Damit für die Formatierung der übrigen Seiten des Dokuments aber weiterhin auf die
FormatGroup FORMGR_01 zurückgegriffen wird, fügt man ganz am Beginn des
DocFormats DF_MAIN einen USE-Befehl für diese FormatGroup hinzu:

Kap. 15, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5A: Indizierung und Inhaltsverzeichnis 233/308

Abbildung 251: Hinzufügen des USE FormatGroup-Befehls zum DocFormat DF_MAIN

Die neu erstellte FormatGroup CONTENT wird später an anderer Stelle aufgerufen.

15.4.2.2 Formatieren und Ausgeben des Inhaltsverzeichnisses (DocFormat


MAKE_CONTENT)
Man erstellt im Fenster "Document Format Definitions" ein neues DocFormat
MAKE_CONTENT mit folgendem Inhalt:

Abbildung 252: Das neue DocFormat MAKE_CONTENT

In einer "CONT_CNT"-mal wiederholten Outline (also so oft wiederholt, wie es Einträge im


Inhaltsverzeichnis gibt) werden die einzelnen Einträge (CONT_ENTRY) und die
dazugehörigen Seitenzahlen (CONT_ENTRY_PAGE) ausgegeben. Im Header wird die
Überschrift für das Inhaltsverzeichnis ausgegeben, der Text dafür wird aus den
Übersetzungen im DocFormat TRANSLATIONS bezogen.

15.4.2.3 Die Systemvariablen $SL_LMAXX und $SL_LMINX


Im DocFormat MAKE_CONTENT sollen Linien zwischen den Einträgen im Inhaltsverzeichnis
und den zugehörigen Seitenzahlen gezogen werden. Die Länge einer Fülllinie soll dynamisch
über Systemvariablen berechnet werden.

Zur Erinnerung: So findet man die Systemvariablen im Papyrus Designer: Menu Windows |
Variables. Systemvariablen haben das Präfix $.

$SL_LMAXX X-Position der rechten unteren Ecke eines imaginären


Rechtecks, das das unmittelbar vorangegangene
Unterebenen-Objekt des aktuellen Hauptebenen-Objekts
auf der aktuellen logischen Seite umfasst.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 15, S. 7


234/308 Lektion 5A: Indizierung und Inhaltsverzeichnis

$SL_LMINX X-Position der linken oberen Ecke eines imaginären


Rechtecks, das das unmittelbar vorangegangene
Unterebenen-Objekt des aktuellen Hauptebenen-Objekts
auf der aktuellen logischen Seite umfasst.

Abbildung 253: Dialogfenster "Rule" - Festlegen der Länge der Fülllinie zwischen Einträgen im
Inhaltsverzeichnis und den Seitennummern

Im Befehl RULE wird der Parameter LENGTH (Länge) folgendermaßen spezifiziert:


END_RL-START_RL-4 MM

wobei

“ START_RL (1) enthält $SL_MAXX, d.h. die X-Koordinate nach der Ausgabe des
Inhalts,
“ END_RL (2) enthält $SL_MINX, d.h. die X-Koordinate des Beginns der Seitenzahl.

Weiters wird TYPE (3) auf "dotted" gesetzt.

15.4.3 Ändern der Reihenfolge der FORMATGROUPs


Da DocEXEC zuerst das Dokument formatiert, bevor das Inhaltsverzeichnis erstellt wird, wird
ein neuer Parameter für den Befehl USE eingeführt, um das Inhaltsverzeichnis am Anfang
einer Dokumentinstanz auszugeben.

Man fügt am Anfang des DocFormats MAKE_CONTENT einen USE-Befehl hinzu:

Kap. 15, S. 8 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5A: Indizierung und Inhaltsverzeichnis 235/308

Abbildung 254: Dialogfenster "Use" - Festlegen der Reihenfolge der FormatGroups

Im DOCFORMAT MAKE_CONTENT wird die FormatGroup CONTENT mit einem


USE-Befehl aufgerufen. Die FormatGroup CONTENT wurde zuvor bereits definiert. Für den
Befehl USE FORMATGROUP kann optional die Position innerhalb der Abfolge von
FormatGroups bestimmt werden. Die folgenden Optionen stehen zur Auswahl:

First am Anfang des Dokuments

Last am Ende des Dokuments

Prev vor der aktuellen FORMATGROUP

Next direkt nach der aktuellen FORMATGROUP

At an der Position in einer Folge von FORMATGROUPs, die in


das aktivierte Eingabefeld "Place" eingeben wird

Da das Inhaltsverzeichnis am Anfang jeder Dokumenteninstanz ausgegeben werden soll, ist


in diesem Fall die Option FIRST (1) ausgewählt.

15.4.4 Aufrufen des DocFormats PUT_CONTENT


Der Befehl USE DOCFORMAT PUT_CONTENT springt jedes mal, wenn eine neue Zeile in
das Inhaltsverzeichnis geschrieben werden soll, auf das DOCFORMAT PUT_CONTENT, wo
der Text bzw. die Seitennummern in Arrays abgelegt werden.
An geeigneten Stellen in den DocFormats DF05TAB1 und DF05TOTA (die dafür zuvor in
DF05ATAB1 bzw. DF05ATOTA umbenannt werden - die entsprechenden USE-Befehle im
DocFormat DF_MAIN müssen auch angepasst werden) werden daher jeweils ein
ASSIGN-Befehl (für den Text des Inhaltsverzeichnis-Eintrags, dafür werden erneut
Übersetzungen aus dem DocFormat TRANSLATIONS verwendet) und ein USE-Befehl zum
Aufrufen des DocFormats PUT_CONTENT eingefügt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 15, S. 9


236/308 Lektion 5A: Indizierung und Inhaltsverzeichnis

Abbildung 255: Aufrufen des DocFormats PUT_CONTENT zum Erstellen von


Inhaltsverzeichnis-Einträgen

Bei dieser Vorgehensweise, ein Inhaltsverzeichnis zu erzeugen, können Probleme


auftauchen, nämlich wenn die endgültige Positionierung eines Objekts erst nach einem
Seitenumbruch feststeht. Dies kann beispielsweise der Fall sein, wenn bei wiederholten
OUTLINEs, TABLEs mit WIDOW und ORPHAN oder mit KEEP gearbeitet wird. Dann ist es
möglich, das in PUT_CONTENT eine Seitennummer für ein Objekt festgehalten wird, das im
Dokument tatsächlich aber erst auf einer Folgeseite positioniert ist. Wie dieses etwas
schwierige Problem gelöst werden kann, ist unter anderem Gegenstand des Papyrus
Experten Workshop Modul 1.

15.4.5 Aufrufen des DocFormats MAKE_CONTENT


Abschließend wird das DocFormat DF_MAIN so erweitert, dass am Ende der
Dokumentverarbeitung - also vor dem End Group-Befehl - das DocFormat MAKE_CONTENT
mit einem USE-Befehl aufgerufen wird:

Kap. 15, S. 10 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5A: Indizierung und Inhaltsverzeichnis 237/308

Abbildung 256: Aufrufen des DocFormats MAKE_CONTENT aus DF_MAIN

Nach einem Reformatieren wird nun jedem Dokument ein Inhaltsverzeichnis vorangestellt.

15.5 Zusammenfassung
Lektion 5A zeigte

“ Hinzufügen eines Index und Erstellen eines Inhaltsverzeichnisses

15.6 Fragen zu Lektion 5A


“ Wie ist ein Index für das Dokument zu erzeugen?

.................................................................................................................................

“ Wie kann die Reihenfolge der Seiten des Dokuments verändert werden?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 15, S. 11


238/308 Lektion 5B: Zusätzliche Ausgabekanäle

16.0 Lektion 5B: Zusätzliche Ausgabekanäle

Lektion 5B erweitert das Dokument von Lektion 5A und stellt neue Elemente der DOCDEF
vor.

16.1 In dieser Lektion vermitteltes Wissen


Lektion 5B zeigt

“ Definition von Umgebungsvariablen und die Funktion ENVIRONMENT


“ Ausgabe eines Reports in eine nicht-AFPDS-Datei
“ Einfügen von Kommentaren

PDF-Ausgabe
Die Kopien der Dokumente werden als PDF-Datei erstellt.
Produktionsbericht
Der Produktionsbericht (Project Report) enthält zusätzlich die Benutzer-ID, die durch eine
Umgebungsvariable bereitgestellt wird. Die Informationen, die der Produktionsbericht enthält,
werden in ein externes Logfile geschrieben.

16.2 Notwendige Vorarbeiten


Die folgenden Schritte ermöglichen den Übergang von einer fertiggestellten Lektion 5A zu
Lektion 5B. Die hier beschriebenen Vorarbeiten müssen also vor Beginn der eigentlichen
Lektion 5B durchgeführt werden.
1. Man öffnet die Projektdatei einer fertiggestellten Lektion 5A (z.B. lesson05a.prj) in
Papyrus Designer.
2. Aus dem Menü wählt man File | Save Project as...
3. Im Dialogfenster vergibt man mylesson05b.prj als Projektname (Document Project
Name) und MYLESSON05B als DocDef-Name (Doc. Def. File Name).
4. Mit einem Klick auf OK bestätigt man die Änderungen. Dadurch werden im Dateisystem
auch die neuen Dateien mylesson05b.prj und mylesson05b.dfa angelegt.

16.3 Umgebungsvariablen
Zusätzlich zur gedruckten Form des Endberichtes (Job-Report) wird in dieser Lektion eine
Log-Datei erstellt. Um das Ausgabeverzeichnis inklusive des Dateinamens dieser Log-Datei
zu spezifizieren, erstellt man eine Umgebungsvariable im Dialog "Edit Document Project".
Außerdem soll dort auch eine Umgebungsvariable definiert werden, die Pfad und Namen der
PDF-Datei enthält, die innerhalb dieser Lektion erstellt werden soll.
Umgebungsvariablen sind Variablen, die den Zugriff auf Objekte außerhalb der Anwendung
ermöglichen (z.B. Dateien im NTFS-Dateisystem). Ihre Werte werden dem aufrufenden
Programm (hier: DocEXEC) als Parameter übergeben. Sie werden extern definiert, d.h. die
Definition ist nicht Teil der DOCDEF. Naturgemäß ist die Umgebungsvariable erst bei
Laufzeit der DocEXEC verfügbar. Der Zugriff innerhalb der Anwendung erfolgt mittels der
Funktion ENVIRONMENT:
Beispiel für Lektion 5B:
Assign &ID_OPERATOR = ENVIRONMENT('ID_OPERATOR');

Kap. 16, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5B: Zusätzliche Ausgabekanäle 239/308

Die Befehle DEFINEOUTPUT, DEFINEPDFOUTPUT, SELECTOUTPUT, LISTOUT und


WRITERECORD greifen auf Umgebungsvariable ohne die Funktion ENVIRONMENT zu
(siehe die Befehle DEFINEPDFOUTPUT, SELECTOUTPUT, LISTOUT und WRITERECORD
am Ende von Lektion 5B).

In Papyrus Designer werden Umgebungsvariablen im Dialog zur Projektdefinition


eingegeben:

Abbildung 257: Dialogfenster "Edit Document Project" - Erstellen von Umgebungsvariablen

Man verwendet die beiden Eingabefelder unten im Dialogfenster "Edit Document Project" zur
Eingabe von Umgebungsvariablen:

ID_OPERATOR Hier wird der Name des Operators eingegeben

LESSON05 ..\pdf\lesson05.pdf

JOBREP ..\afpds300\jobrep.dat

Der Variablenname wird dazu in das linke Eingabefeld eingetragen, der zugehörige Wert in
das rechte Feld. Mit der Schaltfläche "Set" wird die Eingabe bestätigt.

16.4 Ausgabe der Dokumentkopien im PDF-Format


Man aktiviert die Ausgabe von Dokumentkopien, indem man den Befehl End Group im
DocFormat DF_MAIN bearbeitet. Im Feld "Number of copies" trägt man den gewünschten
Wert ein, in diesem Fall "3".

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 16, S. 2


240/308 Lektion 5B: Zusätzliche Ausgabekanäle

Abbildung 258: Anfordern von 3 Dokumentkopien über den Befehl End Group

Um die Kopien des Dokuments als PDF zu erstellen werden an dieser Stelle zwei neue
Befehle vorgestellt: SELECTOUTPUT und DEFINEPDFOUTPUT.

16.4.1 Der Befehl DEFINEPDFOUTPUT


Der Befehl DEFINEPDFOUTPUT erzeugt anstatt eines AFPDS (wie er über
APPLICATION-OUTPUT-FORMAT oder DEFINEOUTPUT definiert werden kann) eine
PDF-Ausgabe.

Das entsprechende Symbol für diesen Befehl findet man in der Symbolleiste "Definitions". Es
wird im Fenster "FormatGroup Definitions" platziert.

Abbildung 259: Dialogfenster "Define PDF Output"

In dem Befehl lassen sich mehrere Parameter spezifizieren. In diesem Beispiel ist als
Angabe der Name für die PDF-Ausgabe ausreichend, der Rest wird über Default-Werte
geregelt.

Name of PDF output Eingabe von "LESSON05", den Namen der


Umgebungsvariablen, die Pfad und Namen der PDF-Datei
enthält.

16.4.2 Der Befehl SELECTOUTPUT


Für den Fall, dass mehrere Ausgabekanäle vorhanden sind, regelt der Befehl
SELECTOUTPUT die Ansteuerung der jeweiligen Ausgabekanäle.
Das entsprechende Symbol für diesen Befehl findet man in der Symbolleiste "Special
commands". Es kann sowohl im Fenster "FormatGroup Definitions" als auch im Fenster
"Document Format Definitions" platziert werden.

Kap. 16, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5B: Zusätzliche Ausgabekanäle 241/308

Positionierung der SELECTOUTPUT-Befehle


Das Hin- und Herschalten zwischen verschiedenen Ausgabekanälen erfordert die Definition
von mehreren SELECTOUTPUTs.
Man platziert den ersten Befehl SELECTOUTPUT, der eine Default-AFPDS-Ausgabe
ansteuert, im DOCFORMAT $_BEFOREDOC, um zu gewährleisten, dass das
Original-Dokument als AFP erzeugt wird.

Abbildung 260: Dialogfenster "Select output" - Festlegen des Default AFP-Output

Da lediglich die Kopien der Dokumente im PDF-Format zu erzeugen sind, stehen die
entsprechenden SELECTOUTPUTs in enger Verbindung zur Systemvariablen $COPY. Für
den Fall $COPY > 1 soll auf die PDF-Ausgabe umgeschaltet werden. Dies geschieht in den
FormatGroups für den normalen Brief und das Inhaltsverzeichnis. Zur Vereinfachung kann für
den normalen Brief wieder auf Simplexdruck umgeschaltet werden, wodurch die Logicalpage
2 entfällt.

Abbildung 261: Document Format Definitions: Platzierung des SELECTOUTPUT-Befehls für


PDF-Output

Der Job-Report soll wiederum als AFP erzeugt werden. Hierfür sorgt der SELECTOUTPUT
im DOCFORMAT $_AFTERLASTDOC:

Abbildung 262: Document Format Definitions: Position des SELECTOUTPUT-Befehls für den
Job-Report

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 16, S. 4


242/308 Lektion 5B: Zusätzliche Ausgabekanäle

16.5 Die Erstellung eines Logfiles


In Lektion 5B soll nicht nur ein Bericht ausgedruckt werden, sondern diese Daten sollen auch
in einem Logfile protokolliert werden. Dafür werden die folgenden Befehle benötigt.

16.5.1 Der Befehl LISTOUT


Zunächst wird der Name und das Format des Logfiles festgelegt. Das erfolgt im Fenster
"FormatGroup Definitions" mit dem Befehl LISTOUT. Das entsprechende Symbol ist in der
Symbolleiste "Definitions" zu finden.

Abbildung 263: Dialogfenster "Listout" - Definieren der Ausgabedatei für die Log-Datei

Der Befehl LISTOUT definiert und benennt eine (nicht-AFPDS-)Datei, in die mit dem
Hauptebenen-Befehl WRITERECORD und dem Unterebenen-Befehl PUT geschrieben wird.
Die Parameter für den Befehl LISTOUT werden wie folgt definiert:

File name (1) JOBREP

Profile Codepage (2) CODEINP

Record Delimiter (3) X'0D0A'

Record Format (4) VarPC

Record Length 255

Channel Code (5) No Channel

Der Eintrag "JOBREP" im Feld "File name" (1) des Dialogfensters "Listout parameters"
bezieht sich auf die Umgebungsvariable JOBREP, die weiter oben im Dialogfenster "Edit
Document Project" gesetzt wurde. Daher werden in diesem Beispiel die Protokolldaten in
eine Datei mit dem Namen JOBREP.DAT in dasselbe Verzeichnis wie der Ausgabe-AFPDS
geschrieben. Die Ausgabe selbst ist im DOCFORMAT $_AFTERLASTDOC definiert.

Kap. 16, S. 5 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5B: Zusätzliche Ausgabekanäle 243/308

16.5.2 Der Befehl WRITERECORD


Der Befehl WRITERECORD leitet eine Unterebene WRITERECORD ein und schreibt
(modifizierte) Datensätze und Wiederholungen in eine Datei (die im Befehl LISTOUT
bestimmt wurde). Das entsprechende Symbol befindet sich in der Symbolleiste "Frequent
Commands". Es wird auf das DOCFORMAT $_AFTERLASTDOC gezogen.

Abbildung 264: WRITERECORD wird zu $_AFTERLASTDOC hinzugefügt

Abbildung 265: Dialofenster "Writerecord"

In der Listbox "To file:" kann eine der Dateien ausgewählt werden, die zuvor im Befehl
LISTOUT definiert wurde. In diesem Fall ist nur die Datei JOBREP definiert. Eine
Wiederholung und der Begrenzer X'0D0A' sind vorgesehen.

16.5.3 Der Befehl PUT


Der Befehl PUT gibt einen Ausdruck aus, dessen Inhalt (Daten-Wert) mit einem
WRITERECORD-Befehl in eine Datei ausgegeben wird. Das entsprechende Symbol findet
man in der Symbolleiste "Frequent Commands".

Abbildung 266: Dialogfenster "Put"

In diesem Beispieldialog wird die Operator-ID, die in der globalen Variablen


&ID_OPERATOR enthalten ist (die ihren Wert wiederum von einer Umgebungsvariable
übernommen hat), in das Logfile geschrieben.
Wenn der Schalter "Delimiter" ausgewählt ist, wird das im LISTOUT-Befehl definierte
Begrenzungszeichen verwendet.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 16, S. 6


244/308 Lektion 5B: Zusätzliche Ausgabekanäle

Dem WRITERECORD-Befehl werden folgende PUT-Befehle hinzugefügt:

Abbildung 267: WRITERECORD-Befehl und PUT-Befehle auf der Unterebene zur Erstellung der
Log-Datei

&ID_OPERATOR Gibt den Wert von &ID_OPERATOR aus, der den Namen
des print operator enthält

'-----------------' Eine Trennlinie

'Start= Beginnzeit des Jobs


'!&JOB_START_TIME

' Secs= '!&JOB_END_TIME Laufzeit des Jobs

' Docs= '!&TOT_JOB_DOCS Anzahl der erzeugten Dokumente

'Pages= '!&TOT_JOB_PAGES Anzahl der erzeugten Seiten

'=================' Abschlusslinie

Der WRITERECORD-Befehl in Lektion 5 erstellt die folgende Datei:

Abbildung 268: Die mit den Befehlen WRITERECORD und PUT erzeugte Log-Datei

Dazu ist es noch nötig, zwei weitere Variablen über den ASSIGN-Befehl im DocFormat
$_BEFOREFIRSTDOC zu definieren:

Kap. 16, S. 7 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5B: Zusätzliche Ausgabekanäle 245/308

Abbildung 269: Definition zusätzlicher Variablen, die für den WRITERECORD-Befehl benötigt
werden

Dabei wird die aktuelle Systemzeit (Systemvariable $TIME) in der Variable


&JOB_START_TIME abgelegt sowie die Variable &ID_OPERATOR mit der
Umgebungsvariable ID_OPERATOR befüllt.

16.6 Kommentare in der Dokument-Definition - der Befehl


COMMENT
Für die Wartung eines Projekts ist es von großer Bedeutung, die Document Definition
übersichtlich und lesbar zu strukturieren. Der letzte Befehl, der in dieser Lektion vorgestellt
wird, soll dabei helfen.
Einerseits enthalten viele Dialoge ein Eingabefeld für Kommentare aller Art. Andererseits
können mit dem folgenden Befehl Kommentare direkt in die Document Definition einfügt
werden.

Um einen Kommentar einzufügen, zieht man das Symbol COMMENT aus der Symbolleiste
"Frequent Commands" in das gewünschte Definitionsfenster. Der folgende Dialog wird
angezeigt:

Abbildung 270: Eingeben eines Kommentars im Dialogfenster "Comment parameters"

Im DOCDEF-Quellcode werden Kommentare folgendermaßen eingetragen:


/*This concludes this lesson*/

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 16, S. 8


246/308 Lektion 5B: Zusätzliche Ausgabekanäle

Ist ein Kommentar einmal definiert, wird er immer vollständig angezeigt, wenn sich der
Mauszeiger über das Definitionsfenster bewegt.

Abbildung 271: "Mouse over"-Anzeige eines Kommentars

Um diese Anzeigeart zu ermöglichen, muss Options | Enable comments aktiviert sein.

16.7 Zusammenfassung
Lektion 5B zeigte

“ Die Definition von Umgebungsvariablen und die Funktion ENVIRONMENT


“ Erstellen eines Reports außerhalb des AFPDS mit den Befehlen SELECTOUTPUT and
LISTOUT.
“ Einfügen von Kommentaren - der Befehl COMMENT.

Kap. 16, S. 9 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 5B: Zusätzliche Ausgabekanäle 247/308

16.8 Fragen zu Lektion 5B


“ Was sind Umgebungsvariablen?

.................................................................................................................................

“ Wo wird eine Umgebungsvariable im Papyrus Designer definiert?

.................................................................................................................................

“ Wie wird in der Produktionsumgebung eine Umgebungsvariable an DocEXEC


weitergegeben?

.................................................................................................................................

“ Wie wird der Inhalt einer Umgebungsvariable in der DOCDEF ermittelt?

.................................................................................................................................

“ Wie kann eine externe Textdatei definiert werden, in die im Laufe der Verarbeitung
geschrieben werden soll?

.................................................................................................................................

“ Welche Befehle müssen definiert sein, um Daten in eine externe Textdatei zu


schreiben?

.................................................................................................................................

“ Wie kann eine PDF-Datei in einem DocEXEC-Lauf erzeugt werden?

.................................................................................................................................

“ Wie schaltet man von einem Ausgabedatenstrom zum nächsten?

.................................................................................................................................

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 16, S. 10


248/308 Zusatzaufgabe 5: Zusätzliche Ausgabedateien

17.0 Zusatzaufgabe 5: Zusätzliche Ausgabedateien

In Lektion 5B wurde erläutert, wie Ausgabedateien außerhalb des AFPDS (z.B. externe
Textdateien) erstellt werden können.
Diese Zusatzaufgabe schließt an das Beispiel in Lektion 5B an und erweitert dieses:

“ Eine zusätzliche Ausgabedatei CustomerList.txt soll im Verzeichnis data erstellt


werden: diese soll eine Liste aller Kunden in alphabetischer Reihenfolge enthalten.
“ Weiters soll eine zusätzliche Kopie des Dokuments mit dem Wasserzeichen "Archive" in
einem eigenen PDF-Datei Lesson05_Archive.pdf ausgegeben werden.

Abbildung 272: Die Datei CustomerList.txt mit allen Kunden in alphabetischer Reihenfolge

17.1 Vorbereitung
Man erstellt unter Verwendung der folgenden Angaben ein neues Projekt aus der
vorhandenen Lektion 5B:
Basisbeispiel: Lesson 5B (lesson05b.prj)
Neue Projektdatei: MyAssignment05.prj
Neue DOCDEF: MyAssignment05

1. Man öffnet das oben angeführte Basisbeispiel in Papyrus Designer. Dieses dient als
Ausgangspunkt für die Zusatzaufgabe.
2. Man speichert das Projekt vor der weiteren Bearbeitung unter einem neuen Namen ab.
Dazu wählt man aus dem Menü File den Punkt Save Project as...

Kap. 17, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusatzaufgabe 5: Zusätzliche Ausgabedateien 249/308

3. Dabei vergibt man im Dialogfenster Save Document as... einen neuen Namen sowohl
für die Projektdatei (Document Project Name) (1) als auch für die DOCDEF (Doc. Def.
File Name) (2) und bestätigt mit OK (3). Vorschläge für neue Namen sind oben
angegeben.

Dadurch wird vermieden, dass die mit der Kursumgebung mitgelieferten Beispiellösungen
überschrieben werden.

17.2 Lösungshilfe
Der Pfad zur Ausgabedatei wird über eine Umgebungsvariable definiert.
Folgende Dateien sollen erstellt werden: ein AFP mit den Originaldokumenten, eine externe
Logdate mit dem Produktionsbericht, ein PDF mit den als "Copy #1" bzw. "Copy #2"
markierten Dokumenten, ein weiteres PDF für die Dokumente mit dem Wasserzeichen
"Archive" sowie eine Textdatei mit allen Kundennamen in alphabetischer Reihenfolge.
Eine beispielhafte Lösung wird in der Projektdatei lesson05_extended.prj gezeigt, die in
Papyrus Designer geöffnet werden kann.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 17, S. 2


250/308 Lektion 6: Prompting

18.0 Lektion 6: Prompting

18.1 In dieser Lektion vermitteltes Wissen


DocEXEC kann in Kombination mit Papyrus Client dynamisch Variablenwerte und Textinhalte
in der Produktionsumgebung abfragen.
Das folgende Beispiel zeigt eine einfache Anwendung, in welcher der Benutzer im Papyrus
Client

“ seinen Benutzernamen am Anfang eingeben muss,


“ für jeden abgefragten Kunden zwischen zwei Textblöcken auswählen muss
“ für jeden abgefragten Kunden zwischen drei Unterschriften auswählen muss
“ optional Barcode oder ein Diagramm einfügen kann
“ ergänzenden Text in den vorgeschlagenen Text einfügen kann
“ über ein Font Viewer Plug-in Sonderzeichen in den Text eingeben kann.
“ Im folgenden Beispiel wird auch der Befehl STICKER beschrieben, über den das
Dokument betreffende Informationen transportiert werden können.

Kap. 18, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 251/308

Abbildung 273: Dokument von Lektion 6

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 2


252/308 Lektion 6: Prompting

Abbildung 274: Dokument von Lektion 6 - Inhaltsverzeichnis und Report

18.2 Erstellen von Eingabeaufforderungen (Prompting)

Da die Abfrage von Variablen eine sehr wesentliche Eigenschaft darstellt und Papyrus Client
auf diesem Konzept basiert, wird sich die folgende Lektion ausschließlich mit dieser Thematik
befassen. Die erforderliche Umgebung basiert strikt auf der vorhergehenden Lektion 5B. Der
gesamte Einlesevorgang für die Daten bleibt unverändert.
Die folgenden DocFormats bleiben unverändert:

“ $_BEFOREDOC
“ PUT_CONTENT
“ MAKE_CONTENT
“ $_AFTERDOC
“ DF05VAR_READ
“ DF05TAB_READ
Als Vorbereitungsarbeit speichert man das Projekt aus Lektion 5B unter einem neuen Namen
ab, man wählt dazu z.B. mylesson06.prj als Projektname und MYLESSON06 als
DocDef-Name.

Kap. 18, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 253/308

18.3 Variablenabfrage
18.3.1 Der Befehl PROMPT
Der Befehl PROMPT definiert eine Gruppe von Variablen und Feldern, deren Variablenwerte
mit Hilfe des Befehls VARPROMPT abgefragt werden können. Im DOCDEF-Quellcode wird
ein solcher PROMPT-Abschnitt mit dem Befehl ENDPROMPT beendet. In Papyrus Designer
wird nur der PROMPT-Befehl definiert.
Das entsprechende Symbol findet man in der Symbolleiste "Special commands".

18.3.2 Der Befehl VARPROMPT


Der Befehl VARPROMPT spezifiziert eine Variable oder ein Feld und definiert die
Abfrageparameter für diese Variable oder dieses Feld. Zu diesen Parametern gehören
mögliche Bedingungen für die Abfrage (z.B. wenn ein Variablenwert nicht aus den
Eingabedaten eingelesen werden kann), Listen und Eingabebeschränkungen der erlaubten
Werte etc.
Das entsprechende Symbol findet man in der Symbolleiste "Special commands".

18.4 Textabfragen - der Befehl TEXTPROMPT


Der Befehl TEXTPROMPT ermöglicht die Bearbeitung eines Textstrings. Jeder
TEXTPROMPT-Befehl ruft den Text Editor auf, in dem der Text modifiziert werden kann.

Abbildung 275: Dialogfenster "Prompt" in Papyrus Designer

In dieser Beispiellektion wird der Befehl TEXTPROMPT in den DOCFORMATs DF05N_GER


bzw. DF05_ENG definiert.

Der Texteditor und die Abfragedialoge (für den Befehl VARPROMPT) können auch im
Papyrus Designer getestet werden, wenn die Option "Use defaults in prompting" im Menü
"Options" ausgeschaltet ist.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 4


254/308 Lektion 6: Prompting

18.5 Das neue DocFormat MAKE_INDEX


Es wird lediglich ein neues DocFormat MAKE_INDEX eingerichtet (1), das einen
INDEX-Befehl enthält, um CUSTOMER finden zu können.

Dieses DocFormat wird mit einem USE-Befehl in den FormatGroup Definitions im


PRINTFOOTER der FORMGR_01 vor dem OUTLINE OVERLAY-Befehl aufgerufen (3).
Weiters muss der Gruppenindex zu Beginn des DocFormats $_AFTERLASTDOC
referenziert werden (2).

Abbildung 276: Document Format Definitions: Einfügen des DocFormats MAKE_INDEX

18.6 Das DocFormat $_BEFOREFIRSTDOC


Man fügt im DocFormat $_BEFOREFIRSTDOC eine Abfrage ein, um eine Variable
INTERFACE_LANG zu definieren, über die die Sprache des Eingabe-Interfaces gesteuert
werden kann (1). Dabei werden die Listenwerte "ENGLISH" und "GERMAN" vorgesehen, als
"Type" der Abfrage ist daher "List" auszuwählen.

Kap. 18, S. 5 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 255/308

Der gewählte Wert wird anschließend in der Variablen &PROMPT_LANG_IND abgelegt (2).
Dieser dient - wie die vergleichbare Variable LANG_IND - als Indexwert für das Beziehen der
entsprechenden Übersetzungen. Bei allen weiteren Abfragen - auch in den folgenden
DocFormaten - wird darüber die entsprechende Sprachvariante für die Benutzerschnittstelle
bezogen.

Die Auswahl der Eingabesprache betrifft in keiner Weise die Sprachdefinition des
Dokuments, die aus den Eingangsdaten gelesen wird. Diese beiden Definitionen sind völlig
unabhängig von einander. Man kann auch mit deutschem Interface englische Dokumente
erstellen (und umgekehrt)!
Weiters wird der Benutzer aufgefordert, seinen Benutzernamen einzugeben, der dann am
Ende, d.h. nach dem letzten Dokument im Arbeitsbericht aufscheint (3).

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 6


256/308 Lektion 6: Prompting

Abbildung 277: Dialogfenster "VARPROMPT parameters" für die Variable &ID_OPERATOR

Dazu werden im DocFormat TRANSLATIONS neue Übersetzungen angelegt:


&TRA_PROMPT_OPERATOR[1] = 'Name' ;
&TRA_PROMPT_OPERATOR[2] = 'Name' ;
&TRA_PROMPT_OPERATOR_DESC[1] = 'Type in your full name' ;
&TRA_PROMPT_OPERATOR_DESC[2] =
'Bitte geben Sie Ihren vollständigen Namen an' ;

In der VARPROMPT-Definition werden diese Sprachvarianten z.B. wie folgt referenziert:


Expression: &TRA_PROMPT_OPERATOR_DESC[&PROMPT_LANG_IND]

Abbildung 278: Eingabe der Beschreibung für den VARPROMPT unter Verwendung der
Übersetzungen aus dem DocFormat TRANSLATIONS

Wenn der Benutzer im Papyrus Client die Datei lesson06.prj im "Document Creation Mode"
öffnet, erscheint nach der Auswahl der Interface-Sprache der folgende Abfragedialog:

Kap. 18, S. 7 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 257/308

Abbildung 279: Abfragen des Benutzernamens in Papyrus Client

18.7 Einbau von Abfragen


Nun wird der Benutzer aufgefordert, eine Auswahl für das zu druckende Dokument zu treffen:

“ Welche Einladung soll dem Kunden geschickt werden? Für diese Variablenabfrage ist
eine Liste mit den Einträgen "Papyrus Designer Basic" und "Papyrus Experts" definiert.
“ Welcher Manager soll das Dokument unterschreiben? Auch für diese Variablenabfrage
ist eine Liste von Namen definiert. Der entsprechende Dateiname des Pagesegments
mit der Unterschrift ist in der Ersetzungstabelle MGR_SIGN_TABLE definiert.
“ Soll dem Dokument ein Barcode und/oder ein Diagramm hinzugefügt werden?

Zur Liste der Übersetzungen im DocFormat TRANSLATIONS werden weitere Einträge


hinzugefügt:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 8


258/308 Lektion 6: Prompting

&TRA_PROMPT_LNAME[1] = 'Last name' ;


&TRA_PROMPT_LNAME[2] = 'Nachname' ;
&TRA_PROMPT_LNAME_DESC[1] = 'Last name of the customer' ;
&TRA_PROMPT_LNAME_DESC[2] = 'Nachname des Kunden' ;
&TRA_PROMPT_FNAME[1] = 'First name' ;
&TRA_PROMPT_FNAME[2] = 'Vorname' ;
&TRA_PROMPT_FNAME_DESC[1] = 'First name of the customer' ;
&TRA_PROMPT_FNAME_DESC[2] = 'Vorname des Kunden' ;
&TRA_PROMPT_COURSE[1] = 'Select course' ;
&TRA_PROMPT_COURSE[2] = 'Kursauswahl' ;
&TRA_PROMPT_COURSE_DESC[1] = 'Please choose your course' ;
&TRA_PROMPT_COURSE_DESC[2] =
'Bitte wählen Sie den gewünschten Kurs' ;
&TRA_PROMPT_MGR[1] = 'Manager' ;
&TRA_PROMPT_MGR[2] = 'Manager' ;
&TRA_PROMPT_MGR_DESC[1] = 'Select the manager on duty' ;
&TRA_PROMPT_MGR_DESC[2] =
'Bitte wählen Sie den diensthabenden Manager' ;
&TRA_PROMPT_CHART[1] = 'Pie chart' ;
&TRA_PROMPT_CHART[2] = 'Diagramm' ;
&TRA_PROMPT_CHART_DESC[1] = 'Append pie chart?' ;
&TRA_PROMPT_CHART_DESC[2] = 'Diagramm hinzufügen?' ;
&TRA_PROMPT_BARCODE[1] = 'Bar code' ;
&TRA_PROMPT_BARCODE[2] = 'Barcode' ;
&TRA_PROMPT_BARCODE_DESC[1] = 'Append bar code?' ;
&TRA_PROMPT_BARCODE_DESC[2] = 'Barcode hinzufügen?' ;

Nun erweitert man das DocFormat DF_MAIN: Man fügt zunächst einen PROMPT-Befehl für
die Variablen FNAME und LNAME ein, lässt aber keine Änderungen zu (1). Weiters werden
Abfragen für COURSE_TYPE, MGR_TO_SIGN, PIE_CHART und BAR_CODE hinzugefügt
(2).

Abbildung 280: Erstellen der PROMPT-Befehle für die benötigten Variablen

Kap. 18, S. 9 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 259/308

Vor- und Nachname scheinen im Abfragedialog auf. Beide sind in einzelnen


VARPROMPT-Befehlen definiert, in denen der Parameter CONSTANT auf "YES" gesetzt ist,
d.h. die Werte werden angezeigt, können aber nicht verändert werden. Für die
modifizierbaren Variablen "Course Type" und "Manager to sign" ist der Parameter MUSTFILL
auf "YES" gesetzt, d.h. der Benutzer kann nicht fortfahren, ohne diese beiden Felder
auszufüllen. Für die Eingabeaufforderung für "Course Type" wird der Eingabetyp "Radio
buttons" verwendet. Jeder Eintrag in der Liste für diesen Eingabetyp wird anschließend durch
einen einzelnen "Radio button" repräsentiert. Bei MGR_TO_SIGN wird hingegen der Typ
"List" gewählt, dadurch wird eine Dropdown-Box für die Listeneinträge angeboten. Über zwei
Felder zum Ankreuzen ("Check boxes") können ein Diagramm und Barcode dem Dokument
hinzugefügt werden - hier werden keine Listeneinträge definiert, sodass automatisch
"Yes/No" neben den Checkboxen angezeigt wird.
Im nächsten Schritt wird die erforderlich Bedingung für die Ausgabe des Barcodes (1)
eingefügt:

Für die Ausgabe des Course Type wird die Angabe in der Abfrage entsprechenden Werten
der bereits bekannten Variable TXT_EL zugewiesen (2):

Die Ausgabe des Diagramms ("Pie Chart") wird ebenfalls von einer Bedingung abhängig
gemacht (3):

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 10


260/308 Lektion 6: Prompting

Für die Ausgabe der Unterschrift des gewünschten Managers wird zunächst eine neue
Ersetzungstabelle SIGNATURE_TABLE im Fenster "FormatGroup Definitions" angelegt:

Abbildung 281: "Substitute tables" - Ersetzen der Managernamen durch Dateinamen

Anschließend wird der Ausgabe der Unterschrift und des Managernamens ein
ASSIGN-Befehl vorangestellt, der über die eben erstellte Ersetzungstabelle die bereits
bekannte Variable MGR_SIGN entsprechend befüllt (4), die dann zur Ausgabe verwendet
wird:

Für die Ausgabe des Haupt-Textblocks wird der bisherige TEXT-Befehl durch einen
TEXTPROMPT (5) ersetzt:

Kap. 18, S. 11 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 261/308

Der Definitionsdialog für den Befehl TEXTPROMPT gleicht demjenigen für den TEXT-Befehl:

Abbildung 282: Dialogfenster "Text prompt definition"

In diesem Beispiel liest der Textbefehl FILTER eine Datei ein, deren Name in einem
Referenzausdruck enthalten ist:
REFERENCE(TXT_EL!'_'!LANG)

Der PROMPT-Befehl ruft im Papyrus Client im "Document Creation Mode" den folgenden
Eingabedialog auf:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 12


262/308 Lektion 6: Prompting

Abbildung 283: Eingabeaufforderung in Papyrus Client

18.8 Papyrus Client


Abschließend kann Lektion 6 lesson06.prj in Papyrus Client geöffnet werden, um die
Eingaben vorzunehmen.
Bevor Papyrus Client geöffnet wird, sollten die folgenden Parameter im Papyrus Client Profil
papyrus.prf geändert werden:

“ Prompting="Yes"
“ PromptFrames="1"
“ PromptAutoPreview="No"

Der Parameter Prompting ermöglicht, Werte für eine Eingabeaufforderung einzugeben.


PromptAutoPreview legt fest, ob eine Vorschau des ganzen Dokuments (mit Defaultwerten)
gezeigt wird oder ob das Dokument nur bis zur aktuellen Eingabeaufforderung angezeigt
wird. PromptFrames bestimmt, ob die Eingabeaufforderungen in Form der herkömmlichen
Dialoge oder der neuen Frame-Windows erscheinen. Da in dieser Lektion VARPROMPTs mit
dem Variablentyp "Checkbox" und "Radiobutton" verwendet werden, sind Frame-Windows zu
verwenden.
Weitere Prompt-Parameter

“ PromptHighlighting="Yes | No"
“ TextPromptColor="<red value>,<green value>,<blue value>"
“ VarPromptColor="<red value>,<green value>,<blue value>"
“ SelectedPromptColor="<red value>,<green value>,<blue value>"
“ ShowFrameTextMargin="Yes | No"

Kap. 18, S. 13 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 263/308

18.8.1 Dateneingabe in Papyrus Client


Papyrus Client kann nun aus dem Windows-Startmenü über Start | All Programs | ISIS
Papyrus Designer & DocEXEC Workshop | Papyrus Client geöffnet werden. Über das
Menü Extras | Modus | Dokumenterzeugung anschließend in den Modus wechseln, in dem
ein Projekt geöffnet werden kann. Lektion 6 wird über das Menü File | Load geöffnet. Hierzu
öffnet man im entsprechenden Verzeichnis
z.B. C:\ISIS_PDDBasicCourse\PDDBasic\docdef\*.*
die Datei lesson06.prj.

Die Pfadangabe richtet sich nach der aktuellen Installation dieses Kurses.
Das Projekt startet mit der ersten Eingabeaufforderung, bei der die gewünschte
Eingabesprache auszuwählen ist. Nach der Bestätigung mit [F2] gelangt man zur nächsten
Eingabeaufforderung.

Abbildung 284: Abfrage der Eingabesprache in Papyrus Client

Auswahl von Dokumenteneigenschaften


Nun wird man zur Eingabe des Benutzernamens aufgefordert. Man bestätigt die Eingabe
wieder mit [F2].

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 14


264/308 Lektion 6: Prompting

Abbildung 285: Abfragen des Benutzernamens in Papyrus Client

In der folgenden Eingabeaufforderung können über ein Listenfenster, Schaltknöpfe und


Checkboxen verschiedene Bestandteile des Dokuments bestimmt werden. Bestätigt wird
anschließend wieder mit [F2].

Abbildung 286: Abfrage in Papyrus Client

Bearbeiten von Text


In der abschließenden Eingabeaufforderung kann der Text selbst bearbeitet werden (1). Der
Texteditor bietet sämtliche Möglichkeiten für die Formatierung des Textes. Über [F2] beendet
man auch diese Eingabeaufforderung und zugleich den Prozess der Dokumentenerstellung.

Kap. 18, S. 15 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 265/308

Abbildung 287: Textbearbeitung in Papyrus Client

Exkurs: Textstyles
Im Tab "Style" können über die Drop-Down Listen (2) Textstyles auf den Text anwenden.
Diese müssen zuvor in einem Textstyle-Befehl eingerichtet worden sein.

Da die Einstellungen interaktiv vorgenommen und wieder zurückgestellt werden können,


stehen die Befehle TEXTOPT_SAVE und TEXTOPT_RESTORE in diesem Texteditor nicht
zur Verfügung.
Das Font Viewer Plug-in
Das Font Viewer Plug-in kann verwendet werden, um Sonderzeichen im Text einzufügen.
1. Man platziert den Cursor an der entsprechenden Stelle im Text (1)

2. Man öffnet den Font Viewer durch Klicken auf das Icon Font view (2)

3. Im Font Viewer wählt man das gewünschte Zeichen aus und fügt es mit einem Klick ein
(3)

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 16


266/308 Lektion 6: Prompting

Abbildung 288: Editieren von Text mit dem Font Viewer

18.8.2 Permanente Rechtschreibüberprüfung


Wenn die Rechtschreibüberprüfung installiert ist, fügen Papyrus Designer bzw. Papyrus
Client automatisch den Parameter AUTO_SPELL_CHECK="YES" in ihr Profil (also
PDDW3.PRF bzw. PAPYRUS.PRF) ein.
Um die Rechtschreibüberprüfung zu aktivieren, muss der Parameter "Spell dictionary" des
Befehls LANGUAGESET definiert sein. In Form eines String (z.B. "ENG" für Englisch,
"GRM_NEW" für Deutsch) wird dem Programm mitgeteilt, für welche Sprache die
Rechtschreibprüfung geladen werden soll.
Ist die permanente Rechtschreibüberprüfung aktiviert, markiert diese beim Arbeiten im Text
Editor alle falsch geschriebenen Wörter mit einer gewellten roten Linie. Außerdem erscheint
ein Fenster aus dem Korrekturvorschläge entnommen werden können.

Die Proximity Rechtschreibprüfung und Silbentrennung benötigt für jede Sprache eine
eigene Lizenzvereinbahrung mit ISIS. Die Proximity-Softwaremodule sind daher weder
Bestandteil der Standard ISIS CD noch der Kursinstallation. Details zur Installation
sind dem Dokument ISIS OverView und Papyrus Rechtschreibprüfung und
Silbentrennung (prox_e.txt bzw. prox_d.txt) zu entnehmen.
Die untere Grafik zeigt den Parameter LANGUAGESET sowie das Erscheinungsbild der
Rechtschreibüberprüfung.

Kap. 18, S. 17 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 267/308

Abbildung 289: Links: Definieren von LANGUAGESET in Papyrus Designer - Rechts:


Rechtschreibprüfung in Papyrus Client

18.8.3 Vorausschau auf das Dokument


Papyrus Designer/Client bieten die Möglichkeit, eine Vorschau auf das Dokument zu einem
Zeitpunkt zu bekommen, an dem noch keine Werte für die Abfragen eines VARPROMPTs
oder TEXTPROMPTs eingegeben wurden. Das Umschalten erfolgt über den Menüpunkt
View | Preview prompts.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 18


268/308 Lektion 6: Prompting

View | Preview prompts ist nicht aktiviert:

Abbildung 290: Preview prompts nicht aktiviert: das Fenster "View Document" ist leer

Kap. 18, S. 19 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 269/308

View | Preview prompts ist aktiviert:

Abbildung 291: Preview prompts aktiviert: das Fenster "View Document" zeigt eine Vorschau
des Dokuments mit bereits abgefragten bzw. Default-Werten an

18.9 Der Befehl STICKER


Mit dem Befehl STICKER kann ein Dokument mit zusätzlicher Information oder einem
Kommentar versehen werden. In erster Linie handelt es sich dabei um Informationen, die
nicht zum Druck gedacht sind wie z.B. Anmerkungen der Dokumentenentwickler. Sticker
erscheinen im Dokument als farbige Felder, deren Position, Farbe, Größe und natürlich Inhalt
bestimmt werden kann. Der eigentliche Inhalt erscheint als Pop-up Fenster im Papyrus
Designer bzw. Papyrus Client, sobald die Maus über das Feld bewegt wird. Aus dem Menü
View | View stickers oder das Symbol VIEW STICKERS können Sticker ein- oder
ausgeblendet werden.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 20


270/308 Lektion 6: Prompting

Abbildung 292: Durch das Bewegen der Maus über ein Sticker-Feld erscheint der zugehörige
Inhalt als Pop-up Fenster

18.9.1 Der Befehl STICKER im Papyrus Designer


Die STICKER, die Papyrus Designer erstellt, sind so genannte dynamische Sticker, da jedes
Mal, wenn während der Dokumentenformatierung der Befehl ausgeführt wird, ein Sticker
generiert wird.

Abbildung 293: Document Format Definitions: Befehl Sticker

Ein Sticker mit folgenden Angaben soll eingefügt werden:

Sticker name MANAGER_TO_SIGN

Position X Position: SAME Y Position: SAME

Dimension Width: LASTMAX-LASTMIN Height: LASTMAX-LASTMIN


(Hierdurch deckt sich die Größe des Stickers exakt mit der
Größe des Pagesegments)

Color Yellow

Kap. 18, S. 21 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 6: Prompting 271/308

Text for the Sticker 'Enhance spacing between \n signature page segment and
name'
(Das Steuerzeichen "\n" verursacht innerhalb des
Stickertextes einen Zeilenumbruch)

18.9.2 Der Befehl STICKER im Papyrus Client


Je nach Profileinstellungen für den Papyrus Client können auch hier neue Sticker definiert
bzw. Bestehende Sticker verändert werden. Die reine Betrachtung von Stickern erfordert
keine gesonderte Lizenz. Um aber Sticker in Papyrus Client neu zu definieren oder zu
verändern ist eine Autorisierung von Papyrus WebRepository erforderlich.
Im Ansichtsmodus von Papyrus Client können neue Sticker oder Änderungen an Stickern
entweder direkt in der AFP-Datei oder in einer zusätzlichen Sticker-Datei (welche über den
Parameter StickerFileName in PAPYRUS.PRF definiert ist) abgespeichert werden.
Im Dokumenterzeugungsmodus von Papyrus Client können Sticker in ein zu ein
erzeugendes Dokument eingefügt werden. Die Sticker werden hierbei in eine Datei
geschrieben, die über den Parameter STICKERFILENAME="filename" in der Projektdatei
definiert ist.

18.10 Zusammenfassung
Lektion 6 zeigte:

“ die dynamische Eingabe in Dokumente während der Laufzeit mit den Befehlen
PROMPT, VARPROMPT und TEXTPROMPT.
“ Der Text kann mit dem Befehl FILTER von einer externen Datei eingelesen werden.
“ Das Dokument wird mit Papyrus Client geöffnet und die Textbearbeitung
vorgenommen.
“ Weiters werden STICKER behandelt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 18, S. 22


272/308 Lektion 6: Prompting

18.11 Fragen zu Lektion 6


“ Wie ist ein Abfragedialog zu definieren, der im "Document Creation Mode" im Papyrus
Client aufgerufen wird?

.................................................................................................................................

“ Mit welchem Befehl sind die einzelnen Dialogfelder eines Abfragedialogs zu definieren?

.................................................................................................................................

“ Wie kann verhindert werden, dass der Benutzer bestimmte Eingabefelder verändert?

.................................................................................................................................

“ Wie wird sichergestellt, dass der Benutzer bestimmte Eingabefelder ausfüllen muss?

.................................................................................................................................

“ Wie ist eine Liste mit bestimmten Variablenwerten zu definieren?

.................................................................................................................................

“ Wie kann dem Benutzer ein editierbares Textfeld zur Verfügung gestellt werden?

.................................................................................................................................

Kap. 18, S. 23 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 7: Import von PPFA-Code 273/308

19.0 Lektion 7: Import von PPFA-Code

Die Struktur und Syntax von DOCDEF ist kompatibel zur Struktur von PAGEDEF von PPFA
(Page Printer Formatting Aid). DOCDEF stellt eine umfangreiche Erweiterung von PAGEDEF
dar, und nimmt im Wesentlichen dort Änderungen der PAGEDEF-Struktur vor, wo neue
Funktionalitäten eingebunden wurden.
Im Vergleich zur PPFA PAGEDEF weist DOCDEF wesentlich mehr Befehle auf. Darüber
hinaus bietet Papyrus Designer die Möglichkeit, PAGEDEF-Code zu importieren und quasi in
DOCDEF-Code zu übersetzen.

19.1 In dieser Lektion vermitteltes Wissen


“ Import von PPFA-Code

19.2 Schritt 1: Ein Projekt definieren


Man öffnet Papyrus Designer aus dem Windows Startmenü über Start | All Programs | ISIS
Papyrus Designer & DocEXEC Workshop | Papyrus Designer.
Ein neues Projekt wird über die Menüpunkte FILE | NEW PROJECT angelegt bzw. durch
Klicken auf die Schaltfläche NEW in der Symbolleiste des Hauptfensters:

Abbildung 294: Symbolleiste des Hauptfensters - "New" ist die erste Schaltfläche von links

Im folgenden Dialog Define New Document... werden folgende Angaben gemacht:

Document Project Name Angabe des Projektnamens, z.B. mylesson07.prj - um


(1): anschließend die übrigen Eingabefelder zu aktivieren, ist die
Schaltfläche FILE SELECT (2) zu betätigen (bzw. alternativ
die Tab-Taste auf der Tastatur)

DocEXEC Profile Name (3): Den Cursor im Eingabefeld platzieren und den
Auswahldialog für die Dateien über FILE SELECT (2)
öffnen: hier wird das DocEXEC-Hauptprofil ppde.prf (im
Verzeichnis userisis) ausgewählt und mit OPEN bestätigt.

Doc. Def. File Name (4): Als Name für die noch nicht existierende DOCDEF wird z.B.
mylesson07 eingegeben. Aus der Drop-down Liste ist keine
Auswahl zu treffen!

Line Data File Name (5): Den Cursor im Eingabefeld platzieren und den
Auswahldialog für die Dateien über FILE SELECT (2)
öffnen: hier wird die Eingabedatei lesson07.ebc (im
Verzeichnis data) ausgewählt und mit OPEN bestätigt.

Output File Name (6): Der Name der auszugebenden AFP-Datei wird mit z.B.
..\afpds300\mylesson07.afp angegeben.
Dadurch wird das AFP im Verzeichnis afpds300 erstellt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 19, S. 1


274/308 Lektion 7: Import von PPFA-Code

Sticker File Name: Muss nicht definiert werden.

Environment: Muss nicht definiert werden.

Das Dialogfenster sieht nun ähnlich der folgenden Abbildung aus:

Abbildung 295: Erstellen eines neuen Projekts

Anschließend bestätigt man die Angaben mit der Schaltfläche OK (7) und öffnet das Projekt
somit im Papyrus Designer.
Da keine DOCDEF mit Namen mylesson07 gefunden werden kann, wird die
Standard-DOCDEF default.dfa geladen.

Über FILE | SAVE PROJECT wird das Projekt gespeichert. Dabei wird auch die
DOCDEF-Datei mylesson07.dfa (abhängig von den Angaben unter "DOCDEF file name" im
Dialog "Define New Project") geschrieben.
Nun werden alle Einträge in den Fenstern "Document Format Definitions" und "FormatGroup
Definitions" gelöscht (dazu die Einträge markieren und mit der Entf-Taste löschen). Beim
Reformatieren (FILE | REFORMAT PROJECT) erscheint nun die Fehlermeldung
"PPDE7046F No LOGICALPAGE to generate document". Dies entspricht dem erwarteten
Verhalten, da nach dem Löschen der Einträge in den Logikbaum-Editoren kein
DOCDEF-Code mehr vorhanden ist. Das Fenster "Message list" kann also geschlossen
werden.

Kap. 19, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 7: Import von PPFA-Code 275/308

Abbildung 296: Fehlermeldung "No LOGICALPAGE to generate document" beim Reformatieren


des Projekts nach dem Löschen der Einträge in den Logikbäumen

19.3 Schritt 2: Importieren einer PAGEDEF

Im zweiten Schritt wird eine zu importierende PAGEDEF über den Menüpunkt FILE |
IMPORT PPFA angegeben. Im Dialog "Select PPFA File Name..." wird die Datei
lesson07.pfa (im Verzeichnis ppfa) angegben und dies mit OPEN bestätigt.

Der Code der zu importierenden PAGEDEF wird automatisch in DOCDEF-Code konvertiert.


Ein Informationsfenster öffnet sich, das darauf hinweist, dass gegebenenfalls die interne
Auflösung im APPLICATION-OUTPUT-FORMAT zu verändern ist, falls diese nicht 240 dpi
entspricht.

Da die in diesem Beispiel verwendeten Ressourcen nur in einer Auflösung von 300 dpi zu
Verfügung stehen, müssen die Parameter "Source Resolution" (1) und "Target Resolution"
(2) im Application Output Format entsprechend auf 300 dpi gesetzt werden:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 19, S. 3


276/308 Lektion 7: Import von PPFA-Code

Abbildung 297: Ändern der "Resolution"-Parameterwerte im Application Output Format

An dieser Stelle wird auch die Checkbox "Include FormDef" (3) aktiviert um die FDF beim
AFP-Output einzuschließen. Dies ermöglicht das nahtlose Drucken.
Diese Änderung wird anschließend über FILE | REFORMAT PROJECT aktiviert.

19.4 Schritt 3: PRINTLINE -> RECORD/OUTLINE

Obwohl auch DOCDEF den Befehl PRINTLINE kennt, wird die Kombination aus
PRINTLINE/FIELD beim Import zum Konzept RECORD/VARIABLE bzw. OUTLINE/OUTPUT
erweitert. Hierdurch erlangt DOCDEF seine hohe Flexibilität in Bezug auf dynamische
Dokumentengenerierung.

Kap. 19, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 7: Import von PPFA-Code 277/308

Abbildung 298: Umwandeln des PPFA-Codes Printline/Field in DocDef Record/Outline-Code

19.5 Schritt 4: Modifikation der DOCDEF


Nach dem Import erfordert die neue DOCDEF noch eine kleine Modifikation, nicht nur, um
die Anforderungen an eine gute Gestaltung der Seite, sondern auch um die Anforderungen
an eine gute Gestaltung als Dokument zu erfüllen.

Das Dokument, das in dieser Lektion erstellt wird, ist vollendet, wenn das DOCFORMAT
MAIN_CONTROL durchlaufen ist. Um die aktuelle Seite korrekt abzuschließen, ändert man
noch den Befehl
USE Logical Page: Goto next Logical page

auf
USE Logical Page: Print all Logical pages

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 19, S. 5


278/308 Lektion 7: Import von PPFA-Code

Abbildung 299: Ändern des USE-Befehls

Kap. 19, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 279/308

20.0 Lektion 8: Papyrus WebRepository

20.1 Was geschieht nun mit den erstellten Dokumenten?


In diesem Kurs wurde Papyrus Designer bisher verwendet, um damit im Rahmen eines
Projekts einen druckfertigen AFP-Datenstrom bzw. eine DOCDEF-Datei zu erstellen.
Im realen Alltag sind diese Tätigkeiten normalerweise im Rahmen eines Geschäftsvorganges
oder -prozesses nicht isoliert zu sehen, sondern sind mit anderen Tätigkeiten verknüpft,
indem sie entweder Daten benötigen, die zuvor im Rahmen anderer Bearbeitungen erfasst
werden, oder die Ausgangsdaten werden ihrerseits mit anderen Prozessen weiter verarbeitet.
Ein Brief wird beispielsweise von einem Bearbeiter erstellt, wird von einer übergeordneten
Stelle kontrolliert und kann entweder wieder zur Korrektur zurückgeleitet werden oder
freigegeben werden, wodurch eine weitere Verarbeitungskette für den Ausdruck,
Kuvertierung und Versand aktiviert wird.
Zu diesem Zweck bietet Papyrus WebRepository die Hilfsmittel an, um mit minimalem
Programmieraufwand komplexe Arbeitsabläufe zu definieren und zu beschreiben. Im Zuge
dessen lassen sich auch anwenderspezifische Bedienoberflächen erstellen, auf denen der
jeweilige Anwender genau die Elemente sieht, die er für seine Arbeit benötigt.

20.2 Papyrus Desktop


Papyrus Desktop stellt die grafische Schnittstelle zu Papyrus Objects dar und bietet für
Entwickler, Systemadministratoren und Anwender eine einheitliche Oberfläche. Auf dieser
sieht der Anwender alle Objekte, für die er die entsprechende Berechtigung hat, ohne
Einschränkung, auf welcher Maschine des Netzwerks diese tatsächlich liegen. Das bedeutet,
dass auch Objekte auf Maschinen mit unterschiedlichen Betriebssystemen gesehen werden
können. Die Arbeit auf dem Desktop erfolgt in einer grafischen Umgebung mit Drag and
Drop. Trotz dieser großen Flexibilität bietet Papyrus Desktop ein zeitgemäßes,
objektbasiertes Sicherheitskonzept.
Eine detaillierte Beschreibung ist im Dokument "ISIS Papyrus WebRepository and Papyrus
Objects Developer's Guide" zu finden.

20.3 Objekte
Ein Objekt ist die kleinste funktionale Einheit im Objekt Space: eine Datenstruktur, die aus
Attributen, Methoden, Zuständen und Zustandsänderungen besteht.
Papyrus Objects ist die Infrastrukturkomponente von Papyrus WebRepository und fungiert
als Objekt Meta System" (OMS), um vom ISIS Papyrus System definierte Business-Objekte
zu verwalten. Diese Business-Objekte umfassen Datenbankapplikationen, Briefsysteme,
Altanwendungen, Druckwarteschlangen, u.a.m. Papyrus Objects is so beschaffen, dass
damit Geschäftsdokumente und die damit verbundenen Daten in einer unternehmensweit
verteilten Umgebung verwaltet werden können. Jedes vom Benutzer für die tägliche Arbeit
benötigte Business-Objekt als ein von Papyrus Objects definiertes Objekt integriert und
verwaltet werden.

20.3.1 Attribute
Attribute speichern die Daten eines Objekts und definieren dessen Eigenschaften.
Name, Passwort und Nebenstelle können zum Beispiel Attribute eines Objekts "Anwender"
sein. Die Attribute können verschiedene Typen haben, wie String, Integer oder Float. Sie
können auf unterschiedliche Weise dargestellt werden, z.B. als Eingabefeld, Listbox oder
Combobox.
Typische Attribute für den Papyrus Designer werden in folgenden praktischen
Beispielsanwendung gezeigt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 1


280/308 Lektion 8: Papyrus WebRepository

20.3.2 Methoden
Methoden definieren die Operationen, die ein Objekt ausführen kann. Ein Drucker-Objekt
kann zum Beispiel die Methoden "Print" oder "Cancel" haben, während ein Brief-Objekt die
Methode "Create Document" aufweist. Als Parameter verwenden Methoden die Attribute
eines Objekts. So verwendet die Methode "Print" beispielsweise das Attribut "Printer Port" um
zu bestimmen, wohin die Ausgabe erfolgen soll.

20.4 Papyrus Designer/DocEXEC im Papyrus Document System

Abbildung 300: Papyrus Document System: Komponenten und Beziehungen

Da Papyrus DocEXEC einen integralen Bestandteil dieser Infrastruktur darstellt, ist es in der
Lage mit Papyrus Objects zu interagieren. Papyrus DocEXEC bietet verschiedene
Möglichkeiten des Zugriffs; über Befehle und Funktionen lassen sich Objekte manipulieren.
DocEXEC kann die Werte von Objektattributen lesen und verändern sowie Objektfunktionen
aufrufen.
Alle Ressourcen, die zur Erstellung eines Dokuments benötigt werden, werden nun durch
Objekte repräsentiert. Für diese Präsentation ist es nicht erforderlich, die exakte Definition
und Anordnung zu wissen.

20.5 Beispielanwendung für Papyrus Objects


Vorbemerkungen:

“ Papyrus Repository stellt ein äußerst flexibles System zur Entwicklung von
Geschäftsanwendungen dar, um die im folgenden beschriebenen Prozesse und Abläufe
an kundenspezifische Anforderungen anzupassen. Um das Kursziel zu erreichen und
gleichzeitig möglichst einfache Handhabung zu gewährleisten, wurde eine
Kursumgebung mit gebrauchsfertigen Objekten eingerichtet, die nur nach Anleitung
verwendet werden müssen.

Kap. 20, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 281/308

“ Da diese Kursunterlage keine Dokumentation von Papyrus Objects darstellt,


beschränken sich die Beschreibungen auf die für die Arbeit mit Papyrus Designer
relevanten Aspekte. Hinweise zu Informationen über Papyrus Objects kann im Abschnitt
"Weiterführende Literatur" gefunden werden.
“ Im weiterführenden Kurs Papyrus Experten Workshop Modul 2 wird anhand einer
Correspondence Framework-Anwendung der Befehlsumfang von Papyrus DocEXEC
für den Zugriff auf Papyrus Objects vorgestellt. Da dieser Kurs ein Mindestmaß an
Basiswissen voraussetzt, wird empfohlen, zuvor das Papyrus Objects Developer
Workshop zu besuchen.

20.5.1 Papyrus Objects starten


Papyrus Objects besteht aus einer Anzahl funktionaler Einheiten, die als Knoten bezeichnet
werden. In einem auf dem Protokoll TCP/IP beruhenden Netzwerk sind alle Knoten innerhalb
einer Domäne miteinander verbunden.
Es ist jedoch auch möglich, mehrere Knoten auf einer Workstation zu installieren. So sind für
diesen Kurs die erforderlichen Knoten auf jedem Kursrechner installiert.
Die Kurse Papyrus Objects Administrator und Papyrus Objects Entwickler widmen sich dem
Thema Papyrus Objects in aller Ausführlichkeit.
Papyrus Objects zu starten ist ein Vorgang, der aus folgenden Schritten besteht:

Starten des Kernel des Der Domain Controller ist die zentrale Einheit des Systems,
Domain Controllers dessen Aufgabe die Verwaltung aller Ressourcen und
versionierter Objekte sowie die zentrale Autorisierung von
Knoten und Benutzern ist.

Starten des Kernel des Entwicklungsknoten sind jene Systemeinheiten, auf denen
Entwicklungsknoten die Benutzer ihre Aufgaben erledigen. Papyrus Designer
und DocEXEC finden sich auf diesem Knotentyp.

Starten des Desktop des Papyrus Desktop ist die Schnittstelle des Systems zum
Entwicklungsknotens Anwender. Der Benutzer erledigt seine Aufgaben, indem er
mit graphischen Symbolen operiert, die die Objekte des
Systems repräsentieren.

Im Rahmen der Lektionen dieses Kurses wurden bisher Papyrus Designer und Papyrus
DocEXEC als selbständige Anwendungen für den Entwurf und die Erstellung von
Dokumenten verwendet. Nun wird Papyrus Designer als Systemkomponente von Papyrus
Objects vorgestellt.

Um Papyrus Desktop zu starten, wählt man aus dem Windows Startmenü: Start | Programs
| ISIS Papyrus Designer & DocEXEC Workshop | Start Papyrus Objects. Beide
benötigten Kernels und Papyrus Desktop werden gestartet.

Abbildung 301: Starten von Papyrus Objects: Papyrus Desktop

Papyrus Desktop öffnet das folgende Fenster mit der Eingabeaufforderung für
Benutzernamen und Passwort:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 3


282/308 Lektion 8: Papyrus WebRepository

Abbildung 302: Papyrus Desktop: Benutzeranmeldung

Benutzername: Designer
Passwort: Basic

Bitte den vollständigen Start beider Kernels vor dem Einloggen in Papyrus Desktop
abwarten!
Papyrus Desktop startet mit der folgenden Ansicht:

Abbildung 303: Papyrus Desktop: Course samples

Die linke Seite des Fensters zeigt jene View-Objekte, die die aktuelle Sicht (View) dem
Benutzer bietet.
Die rechte Seite des Fensters ermöglicht es, die Inhalte des links ausgewählten Objekts
anzuzeigen, so wurde in obiger Abbildung das Objekt "Course Samples" gewählt und die
rechte Seite listet die Lektionen dieses Kurses auf (die ihrerseits ebenfalls durch Objekte
repräsentiert werden).

Kap. 20, S. 4 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 283/308

Abbildung 304: Papyrus Desktop: Local Tool Collection

Dieses Fenster zeigt rechts die Tools mit denen in diesem Kurs gearbeitet wird: Designer und
DocEXEC.

20.5.2 Die Ansicht "Tool Collection"


Mit Klick auf das View-Objekt Tool Collection auf der linken Seite des Fensters öffnet man
die "Tool Collection"-Ansicht:

Abbildung 305: Öffnen der "Tool Collection"-Ansicht

Man wählt das Tool Designer mittels Doppelklick an und scrollt, falls nötig, dann im rechten
Bereich des Fensters nach unten:

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 5


284/308 Lektion 8: Papyrus WebRepository

Abbildung 306: In Papyrus WebRepository werden Einträge aus dem Profil ppde.prf durch
Objektattribute des Designer Tools repräsentiert

Alle Definitionen, die aus dem Profil bereits bekannt sind, werden nun durch Objektattribute
repräsentiert.

20.5.3 Die Ansicht "Course Samples"


Mit der Zurück-Schaltfläche in der vorherigen Ansicht und, wenn notwendig, mit einem Klick
auf das View-Objekt Course Samples kehrt man zur Ansicht "Course Samples" zurück:

Abbildung 307: Verwenden von "Go back" zum Zurückkehren zu einer Ansicht

Abbildung 308: Öffnen der "Course Samples"-Ansicht

Jede Lektion wird als ein Material-Objekt für das Tool Designer dargestellt.
Man klickt auf das +-Symbol und expandiert ein Material (1):

Kap. 20, S. 6 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 285/308

Abbildung 309: Material-Objekt und äquivalente Projektdefinition von Lektion 1

Ähnlich der Projektdefinition im Papyrus Designer besteht das Material für das Tool Designer
aus den folgenden Objekten:

“ DOCDEF - Dokumentendefiniton
“ AFPDS - Ausgabedatei
“ Material LOG - Logdatei
“ Linedata - Eingabedaten
“ (PDF - Ausgabedatei)

20.5.4 Verwenden des Papyrus Designers als Tool in Papyrus Objects

Abbildung 310: Fenster "Course Samples" - Starten von Papyrus Designer

1. Auf das Material FORMAT LINEDATA - Lesson01 - Ready klicken


2. Die Schaltfläche Design in der Toolbar anklicken

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 7


286/308 Lektion 8: Papyrus WebRepository

Der Papyrus Designer wird gestartet und erscheint mit seinem bekannten Fenster außerhalb
des Object-Desktops.

In der Kopfzeile des Designerfensters wird ein Hinweis angezeigt, dass der Designer nicht
aus dem Windows-Dateisystem gestartet wurde.

Klicken auf die Schaltfläche Format statt auf Design würde einen DocEXEC-Lauf im
Hintergrund starten.

Abbildung 311: Papyrus Designer: Titelleiste mit Anzeige des Startmodus

Ein Material kann nur dann verwendet werden, wenn sein Zustand auf "Ready" steht. Nach
dem erfolgreichen Formatieren eines Dokuments durch DocEXEC (über die Methode
Format) ändert sich der Zustand des Materials auf "Final".
Um ein Material wieder verwenden zu können, geht man wie folgt vor:
1. Man klickt mit der rechten Maustaste auf das Material (1)
2. In dem nun erscheinenden Menü wählt man Set State (2)
3. Im Menü darunter wählt man nun Ready (3)

Abbildung 312: Wiederherstellen des Material-Status "Ready"

Kap. 20, S. 8 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 287/308

20.5.5 Papyrus Versionsverwaltung und Änderungsmanagement

Änderungsmanagement Ein Change Management System ist erforderlich, weil eine


(Change Management) laufende Produktionsumgebung nicht immer ausgeschaltet
werden kann, wenn an einem Objekt eine Änderung
erfolgen soll. Es ist unerläßlich, die Produktionsumgebung
klar von der Entwicklungs- und Testumgebung zu trennen.

Versionsverwaltung Die Versionsverwaltung bietet die Möglichkeit, neue


(Version Control) Versionen anzulegen, die nur von Entwicklern und Testern
gesehen werden können. Diese Objekte sind für den
Produktionsprozess unsichtbar bis sie für die Produktion
freigegeben werden. Durch die Unterscheidung von
Objekten in Entwicklung, im Test oder in Produktion lassen
sich störende Interferenzen vermeiden.

Man wechselt zur Ansicht "Project Management" durch Klicken auf Project Management auf
der linken Seite des Fensters:

Abbildung 313: Öffnen der "Project Management"-Ansicht

Diese Vorführung verwendet ein bereits voreingestelltes Projekt. Dieses ist in der Ansicht
"Project Management" des Papyrus Desktop zu sehen:

Abbildung 314: Ansicht "Project Management"

Der Ausdruck "Projekt" hat hier nicht die Bedeutung wie sie bisher bekannt war. Ein Projekt
des Papyrus Designers ist eine Anzahl zusammengehöriger Dateien, bietet aber keine
Unterstützung für eine Versionsverwaltung. Hingegen ermöglicht ein "Projekt" in Papyrus
Objects die Überwachung von Änderungen und Versionen.
Man führt nun die folgenden Schritte aus: Zurückkehren zum Fenster "Course Samples",
markieren von "Lesson01" (1) und klicken auf die Schaltfläche Design (2). Der Papyrus
Designer öffnet sich mit Lektion 1.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 9


288/308 Lektion 8: Papyrus WebRepository

Abbildung 315: "Design" anklicken, um Papyrus Designer mit dem ausgewählten Material zu
starten

Das folgende Einfügen eines Stickers kann mit mit Lektion 6 verglichen werden.
Man zieht ein Sticker-Symbol aus dem Menü Frequent Commands in das Fenster
"Document Format Definitions" und positioniert es (1) wie folgt:

Abbildung 316: Papyrus Designer: Einfügen eines STICKER-Befehls

Kap. 20, S. 10 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 289/308

Die folgenden Werte werden eingegeben:

Abbildung 317: Dialogfenster "Sticker" - Festlegen der Parameterwerte

Die Änderungen wie bisher gewohnt speichern.

Der Dialog, der nun erscheint, ist nicht der bisher bekannte: Das Change Management
System muss für die Änderungen eine neue Version des Objekts anlegen, das die DOCDEF
enthält.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 11


290/308 Lektion 8: Papyrus WebRepository

Abbildung 318: Papyrus Designer: Erstellen einer neuen Version beim Speichern in einer
Objects-Umgebung

Man bestätigt mit "Yes" (1) und schließt den Papyrus Designer. Man vergleiche die "Project
Management"-Ansicht mit der Abbildung oben: Für das geänderte Objekt der Lektion 1 wurde
ein Eintrag im Projekt erzeugt.

Abbildung 319: Ansicht "Project Management": Eintrag für eine neue Version eines Objekts

20.5.6 Resource Collection


Diese Demonstration zeigte, dass weder Papyrus Designer noch DocEXEC auf Ressourcen
zugreifen, die im Dateisystem liegen. Alle Referenzen beziehen sich auf Objekte innerhalb
der Resource Collection. Über die Resource Collection werden die Ressourcen der meisten
ISIS-Produkte verwaltet, wie Fonts, Overlays oder Pagesegmente. Die Resource Collection
Manager enthalten die Ressourcen auf verteilten Systemen, nachdem sie in den Object
Space importiert wurden.

Kap. 20, S. 12 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 291/308

Abbildung 320: Alle Referenzen beziehen sich auf Objekte innerhalb der Resource Collection

20.5.7 Vorteile der Resource Collection

Vorteile von Ressourcen in der Resource Collection:

“ Ressourcen werden über das ganze Netzwerk auf alle Knoten verteilt
“ Die aktuell gültige Version kann über die Versionsverwaltung anstatt mit direkten
Eingriffen eingestellt werden
“ Einfacher Import von Ressourcen über das Resource Import/Export-Objekt
“ Einfache Verwaltung mittels GUI

Die Versionsverwaltung erlaubt für jede Ressource die Definition einer Gültigkeitsperiode,
durch die sie automatisch zu einem definierten Zeitpunkt aktiviert wird. Durch das integrierte
Change Management können Ressourcen vollständig getestet werden, bevor sie in der
Produktion eingesetzt werden.
Nachteile von Ressourcen-Management auf Basis von Dateisystemen:

“ Ressourcen können nicht über das gesamte Netzwerk verteilt sein, sondern müssen auf
einem zentralen Server liegen
“ Keine plattformunabhängige Wartung möglich
“ Jeweils nur eine Version zu einem Zeitpunkt möglich
“ Versionen können nur durch administrative Eingriffe geändert werden, da keine
Gültigkeitsfristen festgelegt werden können

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 13


292/308 Lektion 8: Papyrus WebRepository

20.5.8 Der Resource Explorer


Der Resource-Explorer ist ein Tool, mit dem Entwickler Ressourcen innerhalb der
Resource-Collection suchen, verwalten oder editieren können, wie z.B. DFA, OVL, GIF, JPG,
ASC und AFP.

Der Resource-Explorer befindet sich in dieser Kursumgebung in der Ansicht "Resource


Collection Management".
Man wechselt zur Ansicht "Resource Collection Management" durch Klicken auf Resource
Collection Management auf der linken Seite des Fensters:

Abbildung 321: Öffnen der "Resource Collection Management"-Ansicht

Anschließend wählt man den Resource Explorer (1) aus und klickt auf die Schaltfläche
Explore resources (2):

Abbildung 322: Starten des Resource Explorers

Kap. 20, S. 14 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 293/308

Der Resource-Explorer erscheint:

Abbildung 323: Resource Explorer: Auswahl einer Art von Ressourcen

Ein Doppelklick auf die Combo-Box "Type" aktiviert diese und erlaubt die Auswahl von "DFA"
(1). Diese Einstellung wird mit Speichern (2) oder F2 abgespeichert.
In der Liste unterhalb der Auswahlkriterien werden nun ausschließlich Ressourcen des Typs
DFA gezeigt. Man durchsucht die Liste und markiert das Element LESSON01 (1). In der
rechten Fensterhälfte wird der Inhalt dieses Objekts angezeigt (2):

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 15


294/308 Lektion 8: Papyrus WebRepository

Abbildung 324: Resource Explorer: Anzeige des Inhalts einer ausgewählten Ressource (DFA)

Nun werden wie zuvor Ressourcen vom Typ JPG ausgewählt und diese Einstellung
gespeichert. Die Auswahl zeigt nun das JPG-Bild "Surfer", das in das Dokument von Lektion
1b importiert wurde:

Kap. 20, S. 16 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Lektion 8: Papyrus WebRepository 295/308

Abbildung 325: Resource Explorer: Anzeige des Inhalts einer ausgewählten Ressource (JPG)

20.5.9 Herunterfahren von Papyrus Objects


Beim Herunterfahren muss die Objects-Datenbank synchronisiert und aktualisiert werden.
Nach einem harten Niederfahren muss die Datenbank beim nächsten Hochlauf neu
aufgebaut werden, was zu einer langen Hochlaufzeit führt.
Deshalb ist zum korrekten Beenden des Object Space eine definierte Reihenfolge
einzuhalten:
1. Den Desktop entweder mit File | Exit oder dem Close-Button auf der rechten oberen
Ecke des Fensters beenden.
2. Danach das Fenster, in dem der Kernel des Entwicklungsknotens läuft, auswählen und
Strg+C eingeben.
3. Mit der Shell des DC genauso verfahren.

Diese Shells nicht vorzeitig schließen! Sobald die Kernels heruntergefahren sind,
werden die Fenster automatisch geschlossen.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 20, S. 17


296/308 Zusammenfassung des Kursinhalts

21.0 Zusammenfassung des Kursinhalts


Diese Kurszusammenfassung faßt alle Punkte und Fragen zusammen, die berücksichtigt
werden sollen, um eine gute Dokumentenanwendung zu erstellen.

21.1 Input Data


“ Wie sind die Eingabedaten strukturiert?
“ Wie viele Datensätze umfasst ein Dokument? Wird ein wiederholter RECORD-Befehl
zum einlesen benötigt?
“ Welche Arten von Channel Code werden verwendet? ->
APPLICATION-INPUT-FORMAT
“ Welche Zeilen- und Feldbegrenzer werden verwendet?
“ Wie sollen Variablen definiert werden (RECORD/VARIABLE), um Daten sinnvoll
aufzunehmen?
“ Enthalten die Eingabedaten bereits die Variablennamen?
“ Wird ENDDOCUMENT benötigt, um das Haupt-DOCFORMAT immer wieder zu
durchlaufen?

21.2 Betriebssystem
“ Auf welchem Betriebssystem wurden die Eingabedaten erstellt? Mit welcher Codepage
wurden diese Daten erstellt?
“ Für welches Betriebssystem, also mit welcher Codepage sollen die Ausgabedaten
erstellt werden?

21.3 Codepage
“ Welche Codepage für Eingabedaten? APPLICATION-INPUT-FORMAT
“ Welche Codepage für Ausgabedaten? APPLICATION-OUTPUT-FORMAT
“ Welche Codepage verwendet das eigene Betriebssystem?
“ Verwendung von CODEINP, CODEOWN, CODEFNT, CODESRC?
“ Werden für die Verarbeitung mehrsprachiger Eingabedaten oder externer Dateien
verschiedene Codepages benötigt?

21.4 Reihenfolge der Dokumentengestaltung


Projekt Definition

“ Verwendung der Vorlage von "default.dfa" für eigene Anwendungen?

Definition der Ein-und Ausgabedateien

“ APPLICATION-INPUT-FORMAT and APPLICATION-OUTPUT-FORMAT


“ Wird eine alternative Ausgabedatei benötigt? ( DEFINEOUTPUT, DEFINEPDFOUT)

Abstraktes Layout des Dokuments:

“ Definition der Physical Page


“ Wie viele FORMATGROUPs, SHEETs, LAYERs und Logicalpages?

Definition der zu verwendenden Fonts, Colors


Definition von Ersetzungstabellen: SUBSTITUTE
Spezifikation der DOCFORMATs

“ Modulares Design der DOCDEF in mehreren DOCFORMATs anstatt ein einziges


großes DOCFORMAT.
“ Ist es angebracht, externe DOCFORMATs zu definieren?

Kap. 21, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Zusammenfassung des Kursinhalts 297/308

“ Wie kann zwischen diversen FORMATGROUPs, Layers, Logicalpages und


DOCFORMATs umgeschaltet werden: USE
“ Wird ENDGROUP benötigt? Sollen die Seiten im Speicher zur Nachbearbeitung
gehalten werden (z.B. zur Ausgabe der Gesamtseitenzahl)? Sollen Kopien angefertigt
werden?
“ Wird ENDDOCUMENT benötigt? Wird das erste DOCFORMAT wiederholt durchlaufen?
Erfordert die Struktur der Eingabedaten eine ausgeklügelte Verarbeitung?

Programmierlogik

“ Welche Methode soll zum Lesen und Ablegen der Daten verwendet werden?
RECORD/VARIABLE oder PRINTLINE/FIELD
“ Wie werden Variablen definiert: RECORD/VARIABLE, PRINTLINE/FIELD, ASSIGN,
braces, CHANGEENV, ENVIRONMENT
“ Bedingte Verarbeitung: IF/THEN/ELSE vs. SELECT/CASE
“ Einen Ausgabebefehl setzen: OUTLINE
“ Tabellen einfügen: TABLE/COLUMN vs. OUTLINE/RULE/BOX
“ TEXT drucken: PLACE, OUTPUT, TEXT
“ Werden die FORMATGROUPs neu geordnet, um beispielsweise ein Inhaltsverzeichnis
einzufügen?
“ Barcode oder Diagramme einfügen: INVOKE DLL, CHARTDLL
“ Pagesegments, Overlays, TIFFs oder JPGs einfügen: SEGMENT, OVERLAY, INVOKE
DLL

21.5 Verarbeitung von DOCFORMATs und Dokumenten


Jede DOCDEF enthält zumindest ein DOCFORMAT.
Die Reihenfolge der Definitionen von DOCFORMATs in einer DOCDEF ist beliebig. Ein
System-DOCFORMAT darf jedoch nicht das erste DOCFORMAT sein.

21.5.1 Verarbeitungsbeginn
DocEXEC beginnt die Verarbeitung mit dem ersten (äußersten) DOCFORMAT in der
DOCDEF (außer es wurden System-DOCFORMATs definiert). Der Wechsel zu einem
anderen DOCFORMAT erfolgt mit dem Befehl USE FORMAT Name.

21.5.2 Verarbeitung innerhalb eines DOCFORMATs


Die Verarbeitung innerhalb eines DOCFORMATs wird solange fortgesetzt, bis

“ ein Wechsel zu einem anderen DOCFORMAT erfolgt. Die Verarbeitung wird dann in
diesem DOCFORMAT fortgesetzt.
“ das Ende dieses DOCFORMATs erreicht wird. Die Verarbeitung geht dann in dem
DOCFORMAT weiter, welches das aktuelle aufgerufen hat, sofern es ersteres gibt.
Andernfalls verbleibt die Verarbeitung im selben DOCFORMAT, was beim ersten
DOCFORMAT der Fall wäre.

21.5.3 Verarbeitung des ersten (äußersten) DOCFORMATs


Die Verarbeitung kehrt zum Beginn des ersten (äußersten) DOCFORMATs zurück und
wiederholt die Verarbeitung vom Beginn dieses ersten DOCFORMATs in den folgenden
Situationen:

“ Die Verarbeitung hat innerhalb einer Dokumenteninstanz das Ende des ersten
DOCFORMATs erreicht (ENDDOCUMENT wurde zwar definiert, wurde aber während
der Verarbeitung noch nicht erreicht).
“ Innerhalb einer Dokumenteninstanz wurde ein USE DOCFORMAT-Befehl für das erste
DOCFORMAT an irgendeiner Stelle der DOCDEF ausgeführt.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 21, S. 2


298/308 Zusammenfassung des Kursinhalts

“ Ein ENDDOCUMENT-Befehl wird ausgeführt, der das Ende einer Dokumentinstanz


markiert. Die darauf folgende Dokumenteninstanz beginnt wieder im ersten
DOCFORMAT. Nach der Beendigung einer Dokumentinstanz werden die nächsten
Eingabedatensätze verarbeitet und die nächste Dokumentinstanz wird, beginnend mit
dem ersten DOCFORMAT, formatiert.

21.5.4 Dokumenteninstanzen
Eine Dokumenteninstanz ist in folgenden Fällen auf richtige Weise abgeschlossen:

“ Die Verarbeitung hat das Ende der DOCDEF erreicht (kein ENDDOCUMENT definiert).
In diesem Fall soll der Befehl USE Logical Page: Print all Logical Pages verwendet
werden, um den Abschluss der jeweiligen Seite bewusst herbeizuführen (siehe Lektion
1).
“ Wenn der Befehl ENDDOCUMENT ausgeführt wird.
“ Wenn das Ende (EOF) der Eingabedatei erreicht wird.

21.5.5 Ausgabe der Logical Pages


Alle SHEETs, die für den Druck formatierte LOGICALPAGES beinhalten (und nur solche
SHEETs), werden ausgegeben:

“ sobald versucht wird, eine LOGICALPAGE ein zweites Mal zu formatieren.


“ wenn zu einer anderen FORMATGROUP geschalten wird.
“ wenn der Befehl ENDDOCUMENT ausgeführt wird.
“ das Ende (EOF) der Eingabedatei erreicht wird.
“ die Ausgabe mit dem Befehl USE Logical Page: Print all Logical Pages erzwungen wird.

21.5.6 DocEXEC Verarbeitung


Die Verarbeitung von DocEXEC wird in folgenden Fällen abgeschlossen:

“ Wenn das Ende (EOF) der Eingabedatei erreicht wird.


“ Wenn ein MESSAGE-Befehl der Kategorie 4 (Fatal Error) ausgeführt wird.

21.6 Drucker
“ Wird eine FORMDEF erstellt und eingebunden?
“ Druck auf Einzelblatt- oder Endlospapier?
“ Welche Seitengrößen?
“ Einseitiger oder beidseitiger Druck?
“ Wie viele Logicalpages sollen auf einer physischen Seite platziert werden (N_UP
Partitionierung)? In welcher Reihenfolge sollen die LogicalPages platziert werden?

Kap. 21, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Einführung in Papyrus Postprocessing 299/308

22.0 Einführung in Papyrus Postprocessing


Die mit DocEXEC erzeugten Dokumente können innerhalb des ISIS Papyrus Dokumenten
Systems in weitere Prozesse einbezogen werden. Dazu werden die Dokumente in einem
Printpool oder Process Pool abgelegt. Dieser Pool kann aus einer Verzeichnisstruktur, einem
Datenbanksystem oder dem Papyrus Objects Depot bestehen.
Papyrus PostProcessing umfasst Aufgaben wie

“ Bündeln
“ Verteilen
“ Sortieren
“ Mail-Optimierung
“ Archivierung
PostProcessing als Teil des Output Managements basiert auf des um drei Befehle
erweiterten Funktionsumfangs von DocEXEC

“ AFPIMPORT
“ SQLQUERY
“ SQLWRITE

Mit Hilfe von Gruppenindizes werden bestimmte Dokumente aus einem Dateisystem oder
einer Datenbank importiert und zu einem neuen AFPDS zusammengesetzt. In dem
weiterführenden Kurs Papyrus Experten Workshop Modul 1 wird in einem Kapitel der
Befehlsumfang von Papyrus Postprocessing vorgestellt. Einen generellen Überblick in
Papyrus Postprocessing gibt das Dokument ISIS Papyrus Postprocessing Allgemeine
Information und Referenzhandbuch.
Tiefere Einsichten in Funktion und Technik und die Anwendungsmöglichkeiten von Papyrus
Postprocessing vermittelt der Kurs Papyrus Output Management Workshop.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 22, S. 1


300/308 Anhang 1: OUTLINE-Sublevel-Befehle

23.0 Anhang 1: OUTLINE-Sublevel-Befehle


OUTPUT Ausgabe formatierter Daten

PLACE Ausgabe formatierter Daten - schneller als OUTPUT, aber


eingeschränkte Optionen

TEXTPROMPT Eingabeaufforderung für Text

IMAGEPROMPT Eingabeaufforderung für ein grafisches Objekt zur Eingabe


über Touchscreen oder Zeichtablett

RULE Einfache Linie ausgeben

BOX Rechteck ausgeben

OVERLAY Overlayelement einfügen

SEGMENT Pagesegment einfügen

CHART-BAR-HORIZONTA Horizontales Balkendiagramm zeichnen


L

CHART-BAR-VERTICAL Vertikales Balkendiagramm zeichnen

CHARTDLL Kreis-, Balken- und Liniendiagramme erzeugen

POLYLINE Zeichnen eines Polygons, Kreises, Bogens u.ä.

CREATEOBJECT Barcode einfügen

Kap. 23, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Anhang 2: Parameter des TEXT-Befehls 301/308

24.0 Anhang 2: Parameter des TEXT-Befehls


Diese Zusammenfassung kann nur eine kurze Einführung in die Möglichkeiten der
Textformatierung geben. Detaillierte Beschreibungen der Befehle befinden sich im Handbuch
ISIS Papyrus DocEXEC Reference Manual.

ALIGN Definiert die Ausrichtung des Textes

BASELINE Definiert die Position des Textes über die Basislinie der
Schriftart

BREAK Definiert, was mit dem nächsten Absatz bei einem


Seitenumbruch geschehen soll

COLOR Definiert die Farbe, mit der der Text ausgegeben wird

COLUMN Druckt Text in Spalten aus

CONTINUE Hängt den aktuellen Text unmittelbar an den vorherigen


Text an

DFACODE Fügt den Wert einer Variablen als Text ein

DIRECTION Definiert die Druckrichtung des Textes relativ zur linken


oberen Ecke der LOGICALPAGE

ELEMENT Fügt in den TEXT Texte und TEXT-Unterbefehle ein, die


zuvor als Textelement mit einem Namen definiert wurden

FILTER Fügt eine externe Datei ein

FONT Legt die Schriftart (Font) fest

HTMLCODE Konvertiert HTML-Tags in DFA-Befehle

INDENT Rückt den Text links oder rechts ein

INTERSPACE Definiert den Abstand zwischen angrenzenden Zeichen

INVERT Vertauscht die Text- und Hintergrundfarbe des Textes

LINESP Definiert den Zeilenabstand ausgehend von der aktuellen


Textposition

NBSPACE Definiert einen Trennungsstring, der, wenn er zwischen


zwei Texten auftritt, sicherstellt, dass beide Texte auf
derselben Zeile gedruckt werden

NEWLINE Beginnt eine neue Zeile

NEWPARAGRAPH Beginnt einen neuen Absatz

ORPHAN Definiert die Mindestzahl von "Überlauf"-Zeilen, die nach


einem Seitenumbruch auf der Folgeseite gedruckt werden
sollen

PAGEBREAK Fügt einen Seitenumbruch ein

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 24, S. 1


302/308 Anhang 2: Parameter des TEXT-Befehls

PARAGRAPHSPACE Definiert den Abstand zwischen Absätzen

PARAGRAPH_NUMBERIN Versieht den Absatz mit einer Nummerierung


G

POSITION Definiert die Startposition für die Ausgabe von Text relativ
zur PRINTLINE- oder OUTLINE-POSITION

SECTIONSPACE Definiert den vertikalen Abstand zwischen


Spaltenabschnitten

SEGMENT Beinhaltet ein Bild in der Textdefinition

SHADE Schattiert den Texthintergrund

SHADETEXT Schattiert den TEXT-Vordergrund (den Text selbst)

SOFTHYPHEN Definiert einen Silbentrennungsstring, der, wenn er im Text


bei einem Zeilenumbruch entdeckt wird, durch einen
Trennstrich ersetzt wird

SPACEBREAK Legt fest, dass ein Zeilenumbruch nur bei einem


Leerzeichen erfolgen kann

TAB Definiert, dass der Text an der entsprechenden


Tabulatorposition positioniert wird

TABULATORS Definiert die Tabulatoren und ihre Eigenschaften

TEXTOPT_RESTORE Stellt Definitionen von Textoptionen wieder her, die zuvor


mit TEXTOPT_SAVE gespeichert wurde

TEXTOPT_SAVE Speichert die aktuelle Definition der Textoptionen

UNDERLINE Text unterstrichen ausgeben

WIDOW Definiert die Mindestzahl von "Überlauf"-Zeilen, die auf der


Seite gedruckt werden sollen, die den Seitenumbruch
auslöst

WIDTH Definiert die Textbreite

_JOIN Verhindert einen Seitenumbruch zwischen Absätzen

_STYLE Referenziert auf die Style-Definition eines Absatzes oder


einer Schrift, die im letzten Befehl TEXTSTYLE festgelegt
wurde

Kap. 24, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Anhang 3: Positionsschlüsselwörter 303/308

25.0 Anhang 3: Positionsschlüsselwörter


Diese Liste bietet eine Einführung in die Textformatierung. Details findet man im ISIS
Papyrus DocEXEC Referenzhandbuch.

25.1 Positionsschlüsselwörter der Hauptebene


LEFT Der horizontale Offset ist der freie Rand auf der linken Seite

RIGHT Der horizontale Offset ist der freie Rand auf der rechten
Seite

TOP Der vertikale Offset ist der freie Rand oben

BOTTOM Der vertikale Offset ist der freie Rand unten

MARGIN horizontaler Offset - LEFT, vertikaler Offset - TOP

LASTMIN Die horizontalen und vertikalen Offsets der linken oberen


Ecke eines virtuellen Rechtecks, das alle
Unterebenen-Objekte des unmittelbar vorangehenden
Hauptebenen-Objekts umfasst

LASTMAX Die horizontalen und vertikalen Offsets der rechten unteren


Ecke eines virtuellen Rechtecks, das alle
Unterebenen-Objekte des unmittelbar vorangehenden
Hauptebenen-Objekts umfasst

MIN Die horizontalen und vertikalen Offsets der linken oberen


Ecke eines virtuellen Rechtecks, das alle
Unterebenen-Objekte aller vorangehender
Hauptebenen-Objekte umfasst

MAX Die horizontalen und vertikalen Offsets der rechten unteren


Ecke eines virtuellen Rechtecks, das alle
Unterebenen-Objekte aller vorangehender
Hauptebenen-Objekts umfasst

SAME Die horizontalen und vertikalen Offsets des unmittelbar


vorangehenden Hauptebenen-Objekts

NEXT Bezeichnet die Position der nächsten freien (Druck-)Position


für ein Hauptebenen-Objekt, wobei der vertikale Offset vom
Parameter AUTO für den Zeilenabstand abhängt

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 25, S. 1


304/308 Anhang 3: Positionsschlüsselwörter

25.2 Sublevel-Positionsschlüsselwörter
LASTMIN Die horizontalen und vertikalen Offsets der linken oberen
Ecke eines virtuellen Rechtecks, das das unmittelbar
vorangehende Unterebenen-Objekt des aktuellen
Hauptebenen-Objekts umfasst

LASTMAX Die horizontalen und vertikalen Offsets der rechten unteren


Ecke eines virtuellen Rechtecks, das das unmittelbar
vorangehende Unterebenen-Objekt des aktuellen
Hauptebenen-Objekts umfasst

MIN Die horizontalen und vertikalen Offsets der linken oberen


Ecke eines virtuellen Rechtecks, das alle
Unterebenen-Objekte des aktuellen Hauptebenen-Objekts
umfasst

MAX Die horizontalen und vertikalen Offsets der rechten unteren


Ecke eines virtuellen Rechtecks, das alle
Unterebenen-Objekte des aktuellen Hauptebenen-Objekts
umfasst

SAME Die horizontalen und vertikalen Offsets des unmittelbar


vorangehenden Unterebenen-Objekts

NEXT Bezeichnet die "baseline"- und "inline"-Offsets vom oberen


und vom linken Rand der LOGICALPAGE für die nächste
druckbare Position. Die "baseline"-Richtung ist die
Richtung, in der ein Unterebenen-Objekt (z.B. FIELD) in
aufeinander folgenden Zeilen hinzugefügt wird. Die
inline-Richtung ist die Richtung, in der die Zeichen
hinzugefügt werden. Die Position NEXT in der
baseline-Richtung hängt davon ab, ob der Zeilenabstand
auf AUTO gesetzt ist oder nicht.

CURRENT Bezeichnet die nächste bedruckbare Position im


Koordinatensystem der PRINTLINE oder OUTLINE in
Abhängigkeit von Typ und Richtung des vorangehenden
Unterebenen-Objekts.

Die Hauptebenen-Positionsschlüsselwörter "LEFT", "RIGHT", "TOP", "BOTTOM" und


"MARGIN" sind auf der Unterebene nicht zugelassen. Es wird zwar keine Fehlermeldung
ausgegeben, aber die Ausdrücke werden ignoriert.

Kap. 25, S. 2 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Weiterführende Literatur 305/308

26.0 Weiterführende Literatur


Die hier angeführte Auswahl an Dokumenten ermöglicht eine vertiefte Auseinandersetzung
mit den in diesem Kurs besprochenen Themenbereichen.

26.1 ISIS Papyrus Dokumente


“ ISIS Ressource Bibliothek Beschreibung
“ Building Page- and Formdef Applications
“ Overview AFP Designer Referenzhandbuch
“ OverView Font Editor Referenzhandbuch
“ OverView Image Editor Referenzhandbuch
“ Papyrus Font Converter Benutzerhandbuch
“ Papyrus Client Benutzerhandbuch
“ PageEXEC Module Referenzhandbuch
“ Papyrus DocEXEC Referenzhandbuch
“ Papyrus DocEXEC & Designer Tips & Notes
“ Papyrus DocEXEC Installation & User's Guide
“ ISIS Codepage and Cross Platform Considerations

26.2 Literatur über Papyrus Objects


“ Installation of Papyrus Objects for Papyrus WebRepository & WebControl Installation
and Administrator's Guide
“ ISIS Papyrus WebRepository and Papyrus Objects Developer's Guide
“ Print Management Framework for ISIS Papyrus WebControl Administrator's Guide
“ Papyrus Correspondence Framework for ISIS Papyrus WebRepository Administrator's
and Developer's Guide
“ Papyrus Objects Interfaces Receivers and Type Managers Administrator's and
Developer's Guide
“ ISIS Papyrus WebPortal Installation and Developer's Guide
“ Tuning Papyrus Objects Installations for Papyrus WebRepository & WebControl
Administrator's Guide

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 26, S. 1


306/308 Abkürzungen

27.0 Abkürzungen
ACIF
AFP Conversion and Indexing Facility. Ein IBM AFP-Programm in PSF zur Konvertierung,
Indizierung und Einbettung von Ressourcen für ein MO:DCA Archiv-Dokument. Eine
ähnliche Funktion ist auch in ISIS PageEXEC und Papyrus DocEXEC verfügbar.
AFP
Advanced Function Printing (oder Presentation). IBM Druckarchitektur.
AFPDS
Advance Function Printing Data Stream. AFP Datenstrom ist das Dokumentdateiformat
von AFP. Bekannt ist es auch als LIST3820-Format in der S/390-Umgebung. AFPDS wird
z.B. von DCF/Script oder von Papyrus DocEXEC erzeugt.
ANSI
American National Standards Institute
APA
All Points Addressability (Punktgenaue Steuerbarkeit).
ASCII
American Standard Code for Information Interchange
BCOCA
Bar Code Object Content Architecture. Ein Teil von MO:DCA.
CCITT
International Telegraph and Telephone Consultative Committee. CCITT3 und CCITT4
sind Industrie-Standards für Fax-Geräte und Scanner.
CPI
characters per inch (Zeichen pro Zoll).
CRLF
Carriage Return and Line Feed
DBCS
Double Byte Character Set. Wird für die Repräsentation von Dokumenten in Koreanisch,
Chinesisch und Japanisch verwendet, die bis zu 17.000 Zeichen pro Schriftart brauchen.
Für die Repräsentation eines Zeichens werden statt eines Bytes zwei Bytes verwendet.
BDCS erfordert auch die Unterstützung durch das Betriebssystem, um Text über die
Tastatur eingeben zu können. AFP und damit alle ISIS Produkte unterstützen DBCS.
DCF
Document Composition Facility. IBM-Programm, mit dem Input für Zeilendrucker
formatiert wird.

Kap. 27, S. 1 Papyrus Designer/DocEXEC Workshop pdcgd/700/3


Abkürzungen 307/308

DLL
Dynamically Linked Library
DPI
Dots per Inch (Punkt pro Zoll).
EBCDIC
Extended Binary Coded Decimal Interchange Code
EOF
End of File
FOCA
Font Object Content Architecture. Ein Teil von MO:DCA.
FS-45
Ein IOCA-Format für Bilder in Echtfarben.
GOCA
Graphic Object Content Architecture. Ein Teil von MO:DCA. ISIS Produkte unterstützen
GOCA zur Generierung von Diagrammgrafiken.
HP-PCL4/5
Hewlett Packard - Printer Command Language 4/5. Eine PC-Druckersprache.
IOCA
Image Object Content Architecture
IPDS
Intelligent Printer Data Stream. Das Standard IBM Hardware Druckerprotokoll. IPDS und
AFPDS sind intern sehr ähnlich, dürfen aber nicht verwechselt werden. IPDS ist ein
Protokoll und AFPDS ist ein Dateiformat.
ipm
impressions per minute (Ausdrucke pro Minute).
lpi
lines per inch (Zeilen pro Zoll).
MO:DCA
Mixed Objects : Document Content Architecture. Das SAA-Dokumentformat.
OGL
Overlay Generation Language. Der IBM Formularsprach-Compiler für IBM/390. OGL ist
auch das Ein- und Ausgabeformat des ISIS AFP Designers.

pdcgd/700/3 Papyrus Designer/DocEXEC Workshop Kap. 27, S. 2


308/308 Abkürzungen

PCL
Printer Command Language. Von Hewlett Packard festgelegt.
PDF
Portable Document Format
PEL
Picture Element. Die kleinste Einheit eines Bildes, kann für Farbe aus mehreren Punkten
bestehen. Ein PEL entspricht einem 1/240 Zoll.
PPFA
Page Printer Formatting Aid. Ein IBM VM/VSE/MVS Produkt zur Generierung von
PAGEDEF und FORMDEF aus dem Quellcode im Batch-Modus. Wird als Eingabe vom
OverView AFP Designer verwendet.
PPM, ppm
pages per minute (Seiten pro Minute).
PSEG
Pagesegment. Ein AFP-Pagesegment, gewöhnlich ein Bild wie eine Unterschrift oder ein
Logo.
PSF
Print Services Facility. PSF/2, /6000, /400, /VM, /VSE, /MVS, Print Service Facility Produkt
zur Steuerung von IPDS-Druckern auf verschiedenen Plattformen.
PTOCA
Presentation Text Object Content Architecture. Ein Teil von MO:DCA.
RTF
Rich Text Format. Ein Microsoft Textformat, das in Windows und MS Word verwendet
wird.
SBCS
Single Byte Character Set
TIFF
Tagged Image File Format. Ein Dateiformat, welches für das Scannen, Speichern und
Austauschen von Farb- und Graustufenbildern verwendet wird.
TLE
Tag Logical Element
TRC
Table Reference Character
WYSIWYG
What You See Is What You Get

Kap. 27, S. 3 Papyrus Designer/DocEXEC Workshop pdcgd/700/3