Beruflich Dokumente
Kultur Dokumente
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
1.0 Vorwort
In der Kopfzeile jeder Seite bezeichnen die folgenden Symbole die jeweilige inhaltliche
Ausrichtung eines Abschnitts:
Theoriekapitel
Praxiskapitel (Lektionen)
Die Randspalte kann für persönliche Notizen verwendet werden und zeigt außerdem durch
weitere Symbole Textstellen an, die besonderer Aufmerksamkeit bedürfen:
Englisch Deutsch
Ctrl Strg
Shift Umschalttaste
Del Entf
Enter Eingabetaste
2.0 Kursprogramm
2.1 Erster Tag
Grundlagen
Lektion 0
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
Lektion 2
Lektion 3
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
Lektion 5
Lektion 5A
Lektion 5B
Lektion 6
Lektion 7
Lektion 8
3.0 Einleitung
Ressourcen Management
Version Control
Workflow Management
Produktautorisierung
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.
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:
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.
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:
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:
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.
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.
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.
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.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:
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
Character sets für Raster Präfix: C0; für Bounded Fonts, C0, C1, C2, etc. für
Fonts Unbounded Fonts. Dateinamenserweiterung: chs
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.
.................................................................................................................................
.................................................................................................................................
Die Oberfläche von Papyrus Designer präsentiert sich mit einem geöffneten Projekt in etwa
folgendermaßen:
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:
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.
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.
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:
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.
Ein Rechtsklick auf einen Befehl im Logikbaum öffnet das Fenster zum Definieren und
Bearbeiten der Befehlsparameter.
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.
Die Symbolleiste des Fensters View Document bietet mehrere Optionen für die Anzeige
eines Dokuments:
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.
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.
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".
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:
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.
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.
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):
OVL="..\OVL240<OVL>"
FDF="..\FDF_PDF<FDF>"
PDF="..\FDF_PDF<PDF>"
cpts Codepage-Tabellen
pseg Pagesegemente
.................................................................................................................................
Default library Profile: Wie lautet dessen Dateinamen und Verzeichnis und seine
wichtigsten Funktionen?
.................................................................................................................................
.................................................................................................................................
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.
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.
Projektname
Name und Pfad der Eingabedatei
Name und Pfad der Ausgabe-AFP-Datei
Pfade der Profildateien
Man startet den Papyrus Designer aus dem Windows Startmenü mit dem MenüpunktStart |
All Programs | ISIS Papyrus Designer & DocEXEC Workshop | Papyrus Designer:
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
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
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:
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
Wenn man sich die Daten von Lektion 1 im Datenfenster des Papyrus Designer ansieht - was
läßt sich darüber sagen?
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.
Jede FormatGroup enthält zumindest ein SHEET, einen LAYER und eine LOGICALPAGE.
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.
Nach der Definition des LAYERs wird automatisch der Dialog "Logical Page Parameters"
geöffnet, da ein LAYER mindestens eine LOGICALPAGE hat.
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.
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.
5.5.4 Dezimaltrennzeichen
In diesem Dialog wird das Dezimaltrennzeichen des Datensatzes als Textstring eingegeben
und muss daher von einfachen Anführungszeichen umgeben sein.
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.
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.
In diesem Beispieldialog werden folgende Werte für die Spezifikation des AFP-Formates
festgelegt.
DocEXEC Profile Codepage Parameters (1)
Max. record length (3) spezifiziert die maximale Datensatzlänge für die generierte
AFPDS-Datei. In diesem Beispiel wird der Default-Wert 8192 belassen.
Resolutions (4) definiert die Ressourcen- und Druckauflösung. Falls eine Ressource beim
Drucken nicht in der erforderlichen Auflösung vorhanden ist, wird reskaliert.
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)
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.
Zuerst muss ein Katalog der Font-Ressourcen erstellt werden, der Verweise auf alle
verfügbaren Fonts enthält:
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:
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.
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).
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.
Der einzige Parameter dieses Dialogs ist der Name des DOCFORMATs.
Top 1 inch (Werte ohne Angabe der Einheit werden als Inch
interpretiert)
Bottom 25 mm
Right 20 mm
Abbildung 60: Einstellen des Zeilenabstandes auf 6 lpi - der automatische Zeilenabstand könnte
über das Anhaken von "Auto" (1) aktiviert werden
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*/
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.
Die Parameter:
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.
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.
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.
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.
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:
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.
des Inhalts eines Ausdrucks wie z.B. des Inhalts einer Variablen,
eines direkt spezifizierten Textstrings,
einer direkt spezifizierten Zahl
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":
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.
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.
Die Bedingung IST GLEICH wird als doppeltes IST-GLEICH-Zeichen (==) eingegeben.
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.
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.
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.
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.
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.
5.9.13.2 Texteigenschaften
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.
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.
Der Name des Pagesegments wird in diesem Beispiel ohne Präfix angegeben.
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.
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:
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.
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
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.
Die Pfadangabe richtet sich nach dem tatsächlichen Installationspfad dieses Kurses.
pdew3 @C:\ISIS_PDDBasicCourse\PDDBasic\docdef\struct.txt
Die Pfadangabe richtet sich nach der aktuellen Installation dieses Kurses.
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.
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.
Segment Name (1) Eingabe eines Namens. Der eigentliche Name für das
umgewandelte Pagesegment wird vom Namen für die
TIFF-Datei abgeleitet.
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.
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.
DLL definition
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.
ObjectType
OtherTypes
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.
.................................................................................................................................
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?
.................................................................................................................................
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?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
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:
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.
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.
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.
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.
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.
Der Name des Record-Befehls ist eine Variable, die die Anzahl der eingelesenen Zeilen
enthält (1).
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.
Abbildung 90: PPFA im Vergleich zu DOCDEF hinsichtlich des Einlesens von Daten
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.
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.
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.
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.
Ein fest eingestellter Zeilenabstand bietet sich dort an, wo einzeilige Texte z.B. mit dem
PLACE-Befehl ausgegeben werden sollen.
Der PLACE-Befehl berücksichtigt keine Objektgröße, der OUTPUT-Befehl aber sehr wohl.
Dadurch käme es bei der Verwendung von LINESPACING AUTO bei gleichzeitiger
Verwendung von PLACE und OUTPUT zu ungleichmäßigen Zeilenabständen.
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.
VARIABLE und FIELD können auf den Unterebenen von RECORD oder PRINTLINE definiert
werden, wobei folgende Kombinationen möglich sind:
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' ;
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.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:
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.
Diese Substitutionstabelle wird später mit der Funktion SUBSTITUTE aufgerufen. Dazu siehe
das folgende Beispiel:
SUBSTITUTE(<Tabellenname>,<Variablenname>)
also:
SUBSTITUTE(GENDER_TABLE,GENDER)
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.
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:
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.
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.
Name LINES
Repeat INGREDIENTS
Widow 3
Orphan 3
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.
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.
Name Der Name von COLUMN ist eine Variable, die die Breite der
Spalte, umgelegt auf 1440 ppi enthält.
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).
2. Spalte
Die zweite Spalte platziert den Namen des Artikels über den Befehl PLACE.
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.
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
Wenn der Wert der Variablen TOTAL 15 beträgt, liefert die Anwendung dieser Funktion:
"15.00 USD".
Folgende Formatzeichen werden bei der Maske verwendet:
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).
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.
Das Symbol des Befehls ist in der Symbolleiste "Frequent Commands" zu finden:
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.
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.
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:
Das Symbol für den Befehl FOR befindet sich in der Symbolleiste "Frequent Commands".
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.
Shadetext (6) Der Text soll im Ausmaß von 30% schattiert werden. Diese
Eigenschaft wird im Parameter SHADETEXT angegeben.
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.
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.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.
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.
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
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Wie kann die Anzahl der tatsächlich eingelesenen Datensätze ermittelt werden?
.................................................................................................................................
.................................................................................................................................
Wie kann verhindert werden, dass in einer Tabelle oder einem Text bei Seitenumbruch
einzelne Zeilen auf einer Seite ausgegeben werden?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Wie kann eine Gruppe von Objekten auf einer Seite zusammengehalten werden?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
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).
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.
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.
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.
$_BEFOREFIRSTDOC
$_AFTERDOC
$_AFTERLASTDOC
Nach der letzten Dokumentinstanz soll eine einfache Seite gedruckt werden, die einen
Bericht über die erstellten Dokumente beinhaltet.
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.
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).
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:
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:
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.
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.
Abbildung 126: Dialogfenster "Sheet Definition" - Zuweisen von "MYBIN1" der "BIN1"
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
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.
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:
Die folgende Darstellung zeigt die OUTLINE mit allen Befehlen die auf der Unterebene dieser
OUTLINE zu definiert sind.
Name LINES
OUTPUT
Output LINES!'.'
Alignment Decimal
PLACE
OUTPUT
Alignment Decimal
OUTPUT
Alignment Decimal
ASSIGN
Expression LASTMIN
RULE
Length &ROW_HEIGHT
Type Solid
Direction Down
RULE
Length &ROW_HEIGHT
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 "&".
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.
Expression MM(0)
ASSIGN
Expression MM(3)
ASSIGN
Expression MM(43)
ASSIGN
Expression MM(63)
ASSIGN
Expression PELS(5)
ASSIGN
Expression &TAB1_COL1-MM(10)
ASSIGN
Expression &TAB1_COL4+MM(20)
ASSIGN
Expression MM(4)
ASSIGN
Expression &RULE_POSITION_RIGHT-&RULE_POSITION_LEFT
Abbildung 134: Die Anweisungen zur Erstellung der Tabelle und deren Parameter
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
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.
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.
Condition LINES%2
BOX
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.
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:
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.
Output 'Pos.'
Alignment Right
PLACE
OUTPUT
Output 'Amount'
Alignment Center
OUTPUT
Output 'Total'
Alignment Center
BOX
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.
Alignment Decimal
BOX
Type Solid
Color Black
"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.
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:
Length &ROW_LENGTH+&RULE_THICKNESS
Type Solid
OUTPUT
Alignment Decimal
RULE
Length LASTMAX-LASTMIN
Type Solid
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:
Alignment Decimal
OUTPUT
Alignment Right
OUTPUT
Output 'Pos.'
Alignment Right
PLACE
OUTPUT
Output 'Amount'
Alignment Center
OUTPUT
Output 'Total'
Alignment Center
BOX
Type Solid
Color Black
&JOB_START_TIME
&JOB_END_TIME
&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.
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
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
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.
9.7 Zusammenfassung
Lektion 3 machte mit folgenden Themen vertraut:
.................................................................................................................................
Welche Elemente werden für eine Tabelle definiert, die sich über mehr als eine Seite
erstreckt?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
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:
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
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.
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:
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.
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:
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.
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.
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.
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.
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.
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:
Anstatt Felder mit einer fixen Länge enthalten die Daten das Feldbegrenzungszeichen
Semikolon (;).
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".
Man wählt Input codepage aus der Liste aus und spezifiziert "Own System Codepage" (1).
Man wählt im Bereich Input record format "VarPC" (2) aus, den "Record Delimiter" X'0D0A'
(3) und eine "Record length" von 255 (4).
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).
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.
Nach dem Schließen des Dialogfensters über OK können nun die Eingabedaten auch im
"Data Window" von Papyrus Designer dargestellt werden.
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).
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"
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: ';'
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".
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
TOTAL
Im Channel 'TOTA':
GRAND_TOTAL
MGR_SIGN
Nachdem alle Variablen erstellt wurden, sollte das DocFormat DF_MAIN folgendermaßen
aussehen:
Die System-DOCFORMATs
$_BEFOREFIRSTDOC
$_BEFOREDOC
$_AFTERDOC
$_AFTERLASTDOC
entsprechen den Definitionen in Lektion 3.
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.
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?
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).
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.
1. Man fügt ein neues DocFormat DF_TEXT im Fenster "Document Format Definitions"
ein.
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":
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.
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.
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:
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.
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.
Abbildung 171: Dialogfenster "Use" - Markieren des Aufrufs eines DOCFORMATs als extern
DF04CUST
DF_TEXT (internes DocFormat, bereits eingefügt)
DF04TAB1
DF04TOTA
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:
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:
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:
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.
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.
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.
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
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.
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):
Abbildung 176: Dialogfenster "Sort" - Man wählt "Input Linedata Codepage" im Bereich "Sort
codepage"
Die weiteren Parameter, die für den Befehl SORT gesetzt werden können, sind die
folgenden:
Das Erscheinungsbild der Listenabsätze wird über den Befehl TEXTSTYLE fest. In einem
TEXT-Befehl referenziert man dann auf diese Definitionen.
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).
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.
Definitionsfeld (7) Das Textfeld rechts unten zeigt die Eigenschaften des
gewählten (bzw. soeben definierten) TEXTSTYLEs:
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.
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.
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.
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.
Obige Abbildung zeigt, wie ein Standard-Character-Style für die Default-Schrift (Default
TEXTSTYLE) erstellt wird:
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:
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).
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
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":
Anschließend muss die Anredezeile am Beginn des Briefes geändert werden. Sie lautet nun:
'Dear '!ADDRESSING!','
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
Function PDF417
Position
X position: MIN
Y position: 25 MM
SymbolCharInOneRow
Parameterwert 4
StringToBeCoded
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:
Liniendiagramme
Balkendiagramme
Kreisdiagramme
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.
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.
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.
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.
From: 1
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
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
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:
Die Verwendung von Diagrammen kann die Dateigröße des AFPs vervielfachen!
Abbildung 199: Eine Auswahl von Diagrammarten, die Papyrus Designer unterstützt
12.11 Zusammenfassung
Lektion 4 zeigte
.................................................................................................................................
Was ist der Unterschied zwischen ANSI Channel Code (oder Extended ANSI Channel
Code und Multibyte Channel Code?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
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?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Was gilt sowohl für den Befehl ENDGROUP als auch für den Befehl ENDDOCUMENT?
.................................................................................................................................
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.
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.
Lektion 5 erweitert das Dokument von Lektion 4 und stellt neue Elemente der DOCDEF vor.
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:
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.
Die in der obigen Abbildungen markierten Einträge (schwarz hinterlegt) werden zur
Vorbereitung auf Lektion 5 aus dem DocFormat DF_MAIN entfernt.
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.
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.
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"
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.
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:
Abbildung 207: DocFormat DF_MAIN nach Hinzufügen des RECORD- und des VARIABLE-Befehls
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.
Anschließend erstellt man innerhalb des INCLUDE-Befehls den Inhalt des DocFormats
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:
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:
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":
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:
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:
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
Abbildung 218: Hinzufügen einer Bedingung im DocFormat DF_MAIN und Abschluss des
Dokuments im THEN-Zweig
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))
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
Abbildung 221: Anzeige der beim Einlesen angelegten Variablen im Fenster "Variables"
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
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:
Der Pfad und die Erweiterung der einzufügenden Dateien werden im Parameter IDFTLIB des
DocEXEC-Hauptprofils angegeben.
IDFTLIB="..\IMPLIB<imp>"
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.
Mit dem Befehl FILTER können im externen Textelement Variablen enthalten sein, deren
Inhalte dann im Textbefehl angezeigt werden.
DFACODE und FILTER wirken sich unterschiedlich auf die Performance aus. Anmerkungen
hierzu sind im Dokument DocEXEC and Designer Tips and Notes zu finden.
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:
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
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: ','
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:
Source codepage Ein Schaltknopf ist auszuwählen, um die Codepage für die
Interpretation des DFA-Code neu zu definieren.
Text entry direction Definiert die Richtung der Texteingabe neu, die im
USE-Befehl festgelegt wurde.
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).
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.
&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 ' ;
Im DocFormat $_BEFOREFIRSTDOC fügt man nun einen USE-Befehl für das neu erstellte
DocFormat TRANSLATIONS hinzu:
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
Je nach aktuell verwendeter Sprachvariante wird nun die jeweils gewünschte Übersetzung
aus dem DocFormat TRANSLATIONS geholt und ausgegeben.
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
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 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':
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!','
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.8 Zusammenfassung
Lektion 5 zeigte
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Lektion 5A erweitert das Dokument von Lektion 5 und stellt neue Elemente der DOCDEF vor.
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 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.
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:
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:
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.
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.
Mit Find | Index... werden die TLEs eingelesen. Daraufhin kann das Dokument anhand der
Indizes durchsucht werden:
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
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:
Die neu erstellte FormatGroup CONTENT wird später an anderer Stelle aufgerufen.
Zur Erinnerung: So findet man die Systemvariablen im Papyrus Designer: Menu Windows |
Variables. Systemvariablen haben das Präfix $.
Abbildung 253: Dialogfenster "Rule" - Festlegen der Länge der Fülllinie zwischen Einträgen im
Inhaltsverzeichnis und den Seitennummern
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.
Nach einem Reformatieren wird nun jedem Dokument ein Inhaltsverzeichnis vorangestellt.
15.5 Zusammenfassung
Lektion 5A zeigte
.................................................................................................................................
Wie kann die Reihenfolge der Seiten des Dokuments verändert werden?
.................................................................................................................................
Lektion 5B erweitert das Dokument von Lektion 5A und stellt neue Elemente der DOCDEF
vor.
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.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');
Man verwendet die beiden Eingabefelder unten im Dialogfenster "Edit Document Project" zur
Eingabe von Umgebungsvariablen:
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.
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.
Das entsprechende Symbol für diesen Befehl findet man in der Symbolleiste "Definitions". Es
wird im Fenster "FormatGroup Definitions" platziert.
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.
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.
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
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:
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.
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.
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
'=================' Abschlusslinie
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:
Abbildung 269: Definition zusätzlicher Variablen, die für den WRITERECORD-Befehl benötigt
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:
Ist ein Kommentar einmal definiert, wird er immer vollständig angezeigt, wenn sich der
Mauszeiger über das Definitionsfenster bewegt.
16.7 Zusammenfassung
Lektion 5B zeigte
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Wie kann eine externe Textdatei definiert werden, in die im Laufe der Verarbeitung
geschrieben werden soll?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
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:
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...
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.
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.
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".
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.
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).
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:
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?
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).
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):
Für die Ausgabe der Unterschrift des gewünschten Managers wird zunächst eine neue
Ersetzungstabelle SIGNATURE_TABLE im Fenster "FormatGroup Definitions" angelegt:
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:
Der Definitionsdialog für den Befehl TEXTPROMPT gleicht demjenigen für den TEXT-Befehl:
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:
Prompting="Yes"
PromptFrames="1"
PromptAutoPreview="No"
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"
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.
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.
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)
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.
Abbildung 290: Preview prompts nicht aktiviert: das Fenster "View Document" ist leer
Abbildung 291: Preview prompts aktiviert: das Fenster "View Document" zeigt eine Vorschau
des Dokuments mit bereits abgefragten bzw. Default-Werten an
Abbildung 292: Durch das Bewegen der Maus über ein Sticker-Feld erscheint der zugehörige
Inhalt als Pop-up Fenster
Color Yellow
Text for the Sticker 'Enhance spacing between \n signature page segment and
name'
(Das Steuerzeichen "\n" verursacht innerhalb des
Stickertextes einen Zeilenumbruch)
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.
.................................................................................................................................
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 kann dem Benutzer ein editierbares Textfeld zur Verfügung gestellt werden?
.................................................................................................................................
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.
Abbildung 294: Symbolleiste des Hauptfensters - "New" ist die erste Schaltfläche von links
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.
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.
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.
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:
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.
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.
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
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.
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.
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.
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.
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.
Papyrus Desktop öffnet das folgende Fenster mit der Eingabeaufforderung für
Benutzernamen und Passwort:
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:
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).
Dieses Fenster zeigt rechts die Tools mit denen in diesem Kurs gearbeitet wird: Designer und
DocEXEC.
Man wählt das Tool Designer mittels Doppelklick an und scrollt, falls nötig, dann im rechten
Bereich des Fensters nach unten:
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.
Abbildung 307: Verwenden von "Go back" zum Zurückkehren zu einer Ansicht
Jede Lektion wird als ein Material-Objekt für das Tool Designer dargestellt.
Man klickt auf das +-Symbol und expandiert ein Material (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)
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.
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)
Man wechselt zur Ansicht "Project Management" durch Klicken auf Project Management auf
der linken Seite des Fensters:
Diese Vorführung verwendet ein bereits voreingestelltes Projekt. Dieses ist in der Ansicht
"Project Management" des Papyrus Desktop zu sehen:
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.
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:
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.
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
Abbildung 320: Alle Referenzen beziehen sich auf Objekte innerhalb 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
Anschließend wählt man den Resource Explorer (1) aus und klickt auf die Schaltfläche
Explore resources (2):
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):
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:
Abbildung 325: Resource Explorer: Anzeige des Inhalts einer ausgewählten Ressource (JPG)
Diese Shells nicht vorzeitig schließen! Sobald die Kernels heruntergefahren sind,
werden die Fenster automatisch geschlossen.
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?
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.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.
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.
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.
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.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?
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.
BASELINE Definiert die Position des Textes über die Basislinie der
Schriftart
COLOR Definiert die Farbe, mit der der Text ausgegeben wird
POSITION Definiert die Startposition für die Ausgabe von Text relativ
zur PRINTLINE- oder OUTLINE-POSITION
RIGHT Der horizontale Offset ist der freie Rand auf der rechten
Seite
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
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.
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.
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