diff options
Diffstat (limited to 'doc/eudas/eudas.ref.11')
-rw-r--r-- | doc/eudas/eudas.ref.11 | 347 |
1 files changed, 0 insertions, 347 deletions
diff --git a/doc/eudas/eudas.ref.11 b/doc/eudas/eudas.ref.11 deleted file mode 100644 index 48d36c3..0000000 --- a/doc/eudas/eudas.ref.11 +++ /dev/null @@ -1,347 +0,0 @@ -#limit (11.0)##pagelength (16.5)##block# -#start (2.0,0.0)# -#page (105)# -#headodd# -#center#EUDAS#right#% - -#end# -#headeven# -%#center#EUDAS - -#end# -#center#1 - -11 Programmierung von Anwendungen - - - -Zur Realisierung eigener EUDAS-Anwendungen mit Hilfe von ELAN- -Programmen gibt es mehrere Möglichkeiten mit zunehmender Lei -stungsfähigkeit, aber auch steigender Komplexität und Fehleranfäl -ligkeit. In den folgenden Abschnitten werden die drei wesentlichen -Methoden vorgestellt. Sie sollten erst dann eine kompliziertere -Methode in Angriff nehmen, wenn Sie die einfachere beherrschen. - - -11.1 Musterprogramme - -Die bevorzugte Methode zur Erstellung eigener Anwendungen unter -EUDAS ist die Programmierung von Mustern. EUDAS läßt dies bei -Druckmustern, Kopiermustern und Änderungsmustern zu. - In diesem Fall steuert EUDAS den Ablauf des Programms im -groben automatisch. Die jeweils unterschiedlichen Anweisungen, was -im einzelnen zu tun ist, werden in ELAN programmiert. Aus dem -Muster mit diesen zusätzlichen Anweisungen generiert EUDAS dann -das Programm und führt es mit Hilfe des ELAN-Compilers aus. - -#on("b")#Vorteile#off("b")# Diese Methode hat den Vorteil, daß nur die -minimal not -wendigen Anweisungen tatsächlich selbst programmiert werden -müssen. Dafür reichen bereits geringe ELAN-Kenntnisse vollkommen -aus. Ein Muster kann relativ schnell erstellt und getestet werden. -Durch den einfachen Aufbau ist auch die Fehlerwahrscheinlichkeit -beim Entwickeln geringer als bei anderen Methoden. - Daneben lassen sich die Musterprogramme jeweils bequem im -Menü durch Angabe des Namens oder durch Ankreuzen ausführen, -also auch durch unbedarfte Benutzer. - -#on("b")#Nachteile#off("b")# Nachteil dieser Methode ist, daß jeweils beim -Aufruf das -Programm nochmal neu erzeugt und übersetzt werden muß, da die -Übersetzung auch von der gerade geöffneten Datei abhängt. Dies -stört besonders bei umfangreichen Druckmustern (auf langsamen -Rechnern). - Zum zweiten wird ein umfangreiches Druckmuster auch bald -unübersichtlich, da Strukturierungshilfen für größere Programme -fehlen. Der eigentliche Mustertext ist dann schwer von den zahlrei -chen Abkürzungen zu trennen. - Als Abhilfe für diese beiden Nachteile bietet es sich an, um -fangreichere Abkürzungen bzw. Ausdrücke eingebettet in ein -ELAN-Paket aus dem Muster herauszunehmen und vorher zu in -sertieren. - Dadurch fällt zum einen die ständige Neuübersetzung dieser -Ausdrücke weg, zum anderen ist das eigentliche Muster wieder -überschaubar. Voraussetzung zur Anwendung eines solchen Musters -ist dann jedoch, daß das zugehörige Paket in der jeweiligen Task -bereits vorher übersetzt wurde. - Die nachfolgenden Beispiele zeigen, wie dieses Verfahren in der -Realität aussehen kann. - -#on("b")#Beispiel 1#off("b")# In der Schulverwaltung soll ein Kopier- oder -Ände -rungsmuster erstellt werden, das die Versetzung am Schuljahresende -realisiert. Angenommen wird eine Datei, die alle Schüler enthält. -Schüler, die nicht versetzt werden, sind vorher im Feld 'Versetzung' -mit einem beliebigen Text gekennzeichnet worden (zum Beispiel -'Nachprüfung' o.ä.). - Die Versetzung kann auf zweierlei Weise erfolgen: zum einen -durch automatische Änderung, wenn die alte Version noch auf einer -Archivdiskette aufgehoben wird, oder durch Kopieren in eine neue -Datei. - Bei beiden Mustern ist die einzige Änderung die Angabe der -neuen Klasse. Daher bietet es sich an, eine Prozedur 'neue klasse' -zu definieren, die als Ergebnis die neue Klasse eines Schülers lie -fert. Diese Prozedur kann dann im Änderungsmuster wie folgt ver -wendet werden: - - - "Klasse" V neue klasse; - - -Entsprechend läuft die Verwendung im Kopiermuster: - - - "Name" K f ("Name"); - "Vorname" K f ("Vorname"); - "Klasse" K neue klasse; - ... - - -Die Prozedur 'neue klasse' muß dann in einem Paket definiert wer -den, das etwa folgendes Aussehen haben könnte (spezifische Ände -rungen natürlich möglich): - - - PACKET klassenwechsel DEFINES neue klasse: - - TEXT PROC neue klasse : - - IF f ("Versetzung") = "" THEN - klasse um 1 erhoeht - ELSE - alte klasse ohne zusatz - END IF . - - klasse um 1 erhoeht : - INT CONST alte klasse := int (f ("Klasse")); - IF alte klasse < 9 THEN - "0" + text (alte klasse + 1) + zusatz - ELSE - text (alte klasse + 1) + zusatz - END IF . - - zusatz : - f ("Klasse") SUB 3. - - alte klasse ohne zusatz : - subtext (f ("Klasse"), 1, 2) . - - END PROC neue klasse; - - END PACKET klassenwechsel; - - -Schüler, die versetzt werden, erhalten ihre neue Jahrgangsstufe mit -dem alten Klassenzusatz zugeteilt. Dabei ist darauf zu achten, daß -die Klassen 5 bis 9 eine '0' vorangestellt bekommen, damit die -Sortierung funktioniert. - Schüler, die nicht versetzt werden, behalten ihre alte Jahr -gangsstufe, allerdings ohne einen Klassenzusatz, der ihnen an -schließend manuell zugewiesen werden muß. - Zur Benutzung muß das oben angegebene Paket in eine Text -datei geschrieben und mit dem Kommando 'insert' fest insertiert -werden. - -#on("b")#Beispiel 2#off("b")# Aus einer Datei mit bibliographischen Einträgen -sollen -bestimmte Literaturhinweise gedruckt werden. Der Literaturhinweis -soll jeweils als Endlostext umbrochen werden. Dafür müssen in einer -Abkürzung alle Daten verkettet werden. Es sei das folgende ein -fache Druckmuster vorgegeben: - - - % WIEDERHOLUNG - % MODUS 3 - [&<krz>] &titel - - % ABKUERZUNGEN - &krz : f ("Kurzbez") . (* z.B. "Lew84" *) - &titel : titel lang . - - -Die Prozedur 'titel lang' wird in folgendem Paket definiert: - - - PACKET bibliographie DEFINES titel lang : - - TEXT VAR puffer; (* verringert Heap-Belastung *) - - TEXT PROC titel lang : - - puffer := f ("Name 1"); - puffer CAT ", "; - puffer CAT f ("Vorname 1"); - ggf weitere namen; - titel kursiv; - enthalten in; - erscheinungsort und jahr; - puffer . - - ggf weitere namen: - IF f ("Name 2") <> "" THEN - puffer CAT "; "; - puffer CAT f ("Name 2") - END IF . - - titel kursiv : - puffer CAT " \#on (""i"")\#"; - puffer CAT f ("Titel"); - puffer CAT "\#off (""i"")\#, " . - - enthalten in : - IF f ("in") <> "" THEN - puffer CAT " in: "; - puffer CAT f ("in"); - puffer CAT ", " - END IF . - - erscheinungsort und jahr : - puffer CAT f ("Ort"); - puffer CAT ", "; - puffer CAT f ("Jahr") . - - END PROC titel lang; - - END PACKET bibliographie; - - -Die Puffervariable wird verwendet, um die bei Verwendung des -Operators '+' entstehende Heapbelastung zu verringern. An diese -Variable werden nacheinander alle notwendigen Daten mit den ent -sprechenden Trennzeichen angehängt. - Im Druckmuster wird dieser lange Text dann im Modus 3 auf -mehrere Zeilen umbrochen, wobei die Einrückung erhalten bleibt. Die -Druckausgabe kann dann bei Bedarf noch mit 'lineform' bearbeitet -werden, um einen noch besseren Umbruch zu erzielen. - - -11.2 Dateianwendungen - -Die zweite Möglichkeit der Programmierung unter EUDAS besteht -darin, ELAN-Programme zu schreiben, die EUDAS-Dateien mit Hilfe -des in Kapitel 6 beschriebenen Datentyps EUDAT manipulieren. Die -Programmierung gestaltet sich ähnlich wie mit FILEs. - -#on("b")#Vorteile#off("b")# Durch dieses Verfahren haben Sie volle Freiheit -der Pro -grammierung. Da lediglich die Struktur der EUDAS-Dateien als -Datenspeicher verwendet wird, sind sehr viele Anwendungen denk -bar. - Außerdem können so beliebig viele Dateien gleichzeitig bear -beitet werden. Da die Programme nicht auf die virtuelle Datei zu -greifen, ist ein Konflikt mit dem aktuellen Zustand von EUDAS -nahezu ausgeschlossen. - -#on("b")#Nachteile#off("b")# Der Nachteil dieses Verfahrens ist, daß viele -Dinge -selbst programmiert werden müssen, so zum Beispiel das Durchgehen -einer Datei. Auch die Hilfsmittel der virtuellen Datei wie Such -muster, Koppeln und alle Anwendungen, die auf die virtuelle Datei -zugreifen, stehen nicht zur Verfügung. - -#on("b")#Beispiel 1#off("b")# Die in Abschnitt 6.6 vorgestellte Anwendung als -Asso -ziativspeicher kann als Beispiel für diese Methode dienen. - -#on("b")#Beispiel 2#off("b")# Eine EUDAS-Datei (zum Beispiel eine -Schülerdatei) soll -in mehrere Dateien aufgespalten werden (zum Beispiel klassen -weise). Dies kann durch das folgende Beispielprogramm bewirkt -werden: - - - LET - klassenfeld = 3, - quellname = "Schüler", - zielname = "Jahrgang "; - ROW 9 EUDAT VAR ziel; - EUDAT VAR quelle; - SATZ VAR feldnamen; - - quelle oeffnen; - zieldateien einrichten; - auf satz (quelle, 1); - WHILE NOT dateiende (quelle) REP - aktuellen satz kopieren; - weiter (quelle) - END REP . - - quelle oeffnen : - oeffne (quelle, quellname); - feldnamen lesen (quelle, feldnamen) . - - zieldateien einrichten : - INT VAR i; - FOR i FROM 1 UPTO 9 REP - oeffne (ziel (i), zielname + text (i + 4)); - feldnamen aendern (ziel (i), feldnamen) - END REP . - - aktuellen satz kopieren : - SATZ VAR satz; - satz lesen (quelle, satz); - satz einfuegen (ziel (stufe), satz); - weiter (ziel (stufe)) . - - stufe : - TEXT VAR klasse; - feld lesen (satz, klassenfeld, klasse); - int (klasse) - 4 . - - - -11.3 Integrierte Anwendungen - -Die schwierigste Möglichkeit, Anwendungen unter EUDAS zu reali -sieren, ist ihre Integration. Ein solches Programm greift selbst auf -die virtuelle Datei zu, nutzt die Funktionen von EUDAS so weit wie -möglich und definiert vielleicht sogar ein eigenes Menü. - -#on("b")#Vorteile#off("b")# Auf diese Weise können natürlich alle -Möglichkeiten -ausgeschöpft werden. Sie können Programme erstellen, die als eine -natürliche Erweiterung von EUDAS wirken oder EUDAS ganz erset -zen. - -#on("b")#Nachteile#off("b")# Eine solche Integration ist aber besonders -schwierig, -wenn EUDAS und die Erweiterung nebeneinander benutzt werden -sollen. In diesem Fall hat EUDAS keine komplette Kontrolle der -Interaktion, so daß leicht undefinierte Zustände möglich sind. - Weniger Probleme treten auf, wenn sichergestellt ist, daß nur -die Anwendung selbst verwendet wird. Auch in diesem Fall ist zu -beachten, daß EUDAS nicht als Programmierumgebung für Anwen -dungssysteme konzipiert wurde und daher nicht immer leicht zu -benutzen ist. - Am einfachsten ist es noch, nur eigene Menüs für eine andere -Anwendung zu verwenden, da die Menüprozeduren relativ unabhän -gig vom Rest sind. - -#on("b")#Richtlinien#off("b")# Bei Erweiterungen von EUDAS sind folgende -Richtlinien zu beachten: - -1. Ein Programm, das selber Dateien für die virtuelle Datei öffnen - will, sollte vorher prüfen, ob noch eine Datei geöffnet ist und in - diesem Fall abbrechen. Beim Multi-User-Betrieb ist nämlich - sonst nicht gewährleistet, daß alle Sperren wieder entfernt - werden. - -2. Ein solches Programm sollte seine eigenen Dateien vor dem - Wechsel zu EUDAS selbst wieder sichern und die Arbeitskopien - löschen, damit der Ausgangszustand zu Beginn des Programms - wiederhergestellt wird. - -3. Programme, die Menüs benutzen, sollten nicht unter EUDAS auf - gerufen werden, da sonst eine Beeinflussung der EUDAS-Menüs - möglich ist. - -An dieser Stelle soll noch einmal von der Erstellung integrierter -Anwendungen abgeraten werden, wenn es auch andere Möglichkeiten -gibt, das gegebene Problem mit EUDAS zu lösen. Der hohe Aufwand -dieser Methode rechtfertigt sich nur in wenigen Fällen. - Experimentierfreudige Anwender werden sich durch diese War -nung sowieso nicht abhalten lassen. Ihnen sollte aber bewußt sein, -daß ein solches Vorgehen auf eigene Gefahr stattfindet und kein -Anspruch auf Beratung oder Fehlerbeseitigung in einem solchen Fall -besteht. - |