summaryrefslogtreecommitdiff
path: root/doc/eudas/eudas.ref.11
diff options
context:
space:
mode:
Diffstat (limited to 'doc/eudas/eudas.ref.11')
-rw-r--r--doc/eudas/eudas.ref.11347
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.
-