%format latexg
%
\documentstyle[11pt,din_a4,german,twocolumn]{article}
\title{MDAT2 - Mini-Datenverwaltung Anleitung}
\author{ Alexander Clauss \\ Stresemannstra"se 44 \\ 6100 Darmstadt 13 }
\begin{document}
\maketitle
%
%
\onecolumn
\tableofcontents
\twocolumn
\clearpage
%
\section{Einleitung}
MDAT ist ein kleines Datenverwaltungs-Programm. Es dient zur 
Verwaltung von beliebigen Daten (z.B. Adressen, CD's, B"ucher 
usw.). Mit dem Maskeneditor k"onnen Masken f"ur die Eingabe und f"ur 
die Ausgabe auf Dru"cker und Bildschirm erstellt werden. Mit Hilfe 
einer geeigneten Ausgabe-Maske k"onnen zum Beispiel Adress-
Aufkleber oder Listen gedruckt werden. Die Funktionstasten k"onnen 
mit Tasten-Makros belegt werden, um h"aufig sich wiederholende 
Eingaben schnell per Tastendruck zu erledigen.
Fast alle Funktionen des Programms lassen sich sowohl mit der 
Maus als auch mit der Tastatur ausf"uhren.
%
%
\subsection{Copyright}
Das Programm MDAT2 ist in GFA-BASIC 3.0 geschrieben. Es ist 
Public Domain, d.h. jeder darf es kopieren. Untersagt ist der 
Verkauf und das Ver"andern des Programms! Das Copyright bleibt 
beim Autor. Ich "ubernehme keine Verantwortung f"ur Sch"aden, die
das Programm aufgrund von Programmierfehlern oder Fehlbedienung
verursacht.
%
%
\subsection{Rechnerkonfiguration}
Das Programm ben"otigt mindestens 300 KBytes Speicher (je mehr 
freier Speicher desto besser) und l"auft in jeder Aufl"osung 
(Grafikerweiterungen d"urften keine Probleme bereiten; getestet 
wurde es nur mit PROTOS, welches einen virtuellen Bildschirm mit 
fast beliebiger Aufl"osung einrichtet). MDAT m"usste mit jeder TOS-
Version laufen (getestet: RAM TOS 1.0 und TOS 1.4).
%
%
\section{Dateizugriff}
%
%
\subsection{Laden}
Mit dem Men"upunkt "`Laden..."' aus dem {\tt Datei}-Men"u oder durch die 
Tastenkombination CONTROL-L wird die Fileselector-Box angezeigt. 
Hier kann eine Datei ausgew"ahlt werden, die dann in den Speicher 
geladen wird. Falls die Daten im Speicher noch nicht gespeichert 
wurden, wird nachgefragt, ob sie "uberladen werden sollen. Es 
k"onnen aber nur Dateien geladen werden die mit MDAT2 erstellt 
wurden. Falls der Speicher nicht ausreicht, wird ein 
entsprechender Hinweis gegeben und soviel geladen wie m"oglich 
(Vorsicht! Wenn die Datei jetzt unter dem alten Namen gespeichert 
wird, gehen die Daten verloren, die nicht mehr in den Speicher 
passten, da die alte Datei "uberschrieben wird.). 
Wenn MDAT2.PRG im DESKTOP mit "`Anwendung anmelden"' mit der 
Extension "`.MDT"' angemeldet wird, wird beim Doppelklick auf eine 
Daten-Datei diese automatisch geladen.
%
%
\subsection{Speichern}
Mit dem Men"upunkt "`Speichern..."' oder CONTROL-Z werden die Daten 
im Speicher gespeichert, wobei der Dateiname in der 
Fileselektorbox bestimmt (bzw. ge"andert) wird. Wenn der Dateiname
ohne Extension angegeben wird, wird die Endung "`.MDT"' angenommen. 
Mit "`Speichern"' (ohne "`..."') oder CONTROL-S werden die Daten ohne 
Nachfrage gespeichert. Der Dateiname ist entweder NONAME.MDT 
(falls Daten neu angelegt wurden) oder gleich dem, mit dem die 
Daten geladen wurden. Informationen "uber diesen Dateinamen 
bekommt man durch den Men"upunkt "`Speicher..."' im {\tt Extras}-Men"u 
oder die Taste HELP. 
Zus"atzlich zu den Daten werden die Makros (siehe Eingabe) 
gespeichert. F"ur jede Datei kann somit ein eigener Makro-Satz 
definiert werden.
%
%
\subsection{L"oschen}
Mit "`L"oschen..."' (oder CONTROL-D) k"onnen beliebige Dateien gel"oscht 
werden. 
%
%
\subsection{Programmende}
Der Men"upunkt "`Programmende"' oder CONTROL-Q beendet das Programm.
Falls die Daten im Speicher ver"andert aber noch nicht gespeichert 
wurden, wird nachgefragt, ob das Programm wirklich verlassen 
werden soll.
%
%
\section{Masken-Editor}
Mit "`Maske..."' (CTRL-M) im {\tt Edit}-Men"u "offnet man ein Fenster, in 
dem Eingabe und Ausgabe-Masken erstellt werden. In der oberen 
Zeile des Fensters befinden sich einige Buttons mit folgender 
Bedeutung: $ \leftarrow $ (oder Taste SHIFT $ \leftarrow $ ) 
und $ \rightarrow $ (SHIFT $ \rightarrow $ ) 
wechseln die Masken; "`L"oschen"' (CLR/HOME) l"oscht die Maske (beim 
L"oschen der Eingabe-Maske werden alle Masken und Daten (!!!) 
gel"oscht); "`Neu"' (CTRL-N) legt eine neue Ausgabe-Maske an (max. neun
verschiedene Ausgabe-Masken sind m"oglich). Der 
Masken-Name wird in dem Button zwischen $ \leftarrow $ und $ \rightarrow $ angezeigt. 
Mit einem Klick auf diesen Button (ESC) kann der Name ge"andert 
werden. Weiterhin wird hier bestimmt, ob bei der Ausgabe der 
Feldname angezeigt wird, die Daten (einer Zeile) hintereinander 
oder an festen Positionen ausgegeben werden und wieviele 
Leerzeilen zwischen den Datens"atzen eingef"ugt 
werden sollen (z.B.: bei Listen keine Leerzeilen). Diese Funktion 
kann nur bei den Ausgabe-Masken (nicht bei der Eingabe-Maske) 
aufgerufen werden.

In der Eingabe-Maske werden alle Datenfelder definiert. Man zieht 
bei gedr"uckter Maustaste ein Rechteck auf; die L"ange und Position 
des Rechtecks entspricht der des dadurch entstandenen 
Datenfeldes. Positioniert man die Maus "uber ein Datenfeld, wird 
bei gedr"uckter Maustaste die L"ange (Mausposition am Ende des 
Feldes) oder die Position (Maus am Anfang des Feldes) ge"andert. 
Schiebt man dabei ein Datenfeld "uber den "`L"oschen"'-Button wird 
das Feld gel"oscht. Ein Doppelklick auf ein Datenfeld "offnet eine 
Dialogbox. Hier kann der Feldname eingegeben werden. Ausserdem 
kann gew"ahlt werden, welche Eingaben f"ur dieses Datenfeld 
zul"assig sind:
\begin{description}
\item[Text:] alle Zeichen zul"assig.
\item[TEXT:] wie "`Text"' aber alle Kleinbuchstaben werden zu Gro"sbuchstaben.
\item[Ziffern:] nur die Ziffern 0-9.
\item[Zahlen:] Ziffern, Klammern, +-*/., ; 
\item[Datum/Zeit:] Ziffern, ./-: bei Eingabe von "`\#"' wird das 
aktuelle Datum (bzw. Zeit) eingetragen.
\end{description}

Nach "`Neu"' (CTRL-N) wird eine Ausgabe-Maske definiert. Hier
k"onnen keine neuen Datenfelder angelegt werden. Position und 
L"ange der Felder k"onnen ge"andert werden. Datenfelder, die nicht 
angezeigt werden sollen, werden mit einem Doppelklick 
deselektiert (ein weiterer Doppelklick aktiviert das Feld 
wieder). 

Bei der Definition der Datenfelder sollte man die Reihenfolge 
beachten (von oben nach unten). Ausserdem sollte jede Maske in 
der obersten Zeile beginnen, da sonst bei der Ausgabe die oberen 
Zeilen als zus"atzliche Leerzeilen erscheinen.
Falls schon Daten eingegeben wurden, kann die Eingabe-Maske nicht 
mehr ge"andert werden (Ausnahme: die Position der Datenfelder kann 
noch ver"andert werden).
%
%
\section{Eingabe}
Mit "`Eingabe..."' im {\tt Edit}-Men"u (CTRL-I) wird das Eingabe-Fenster 
ge"offnet. Mit den Buttons $ \leftarrow $ (SHIFT $ \leftarrow $ ) 
und $ \rightarrow $ (SHIFT $ \rightarrow $ ) 
wird zwischen den Datens"atzen gebl"attert. Nach einem Doppelklick auf 
$ \leftarrow $ oder $ \rightarrow $ (CTRL-1 oder CTRL-0) wird der erste bzw. letzte 
Datensatz angezeigt. "`Neu"' (CTRL-N) legt einen neuen Datensatz an; 
"`L"oschen"' (CLR/HOME) l"oscht den angezeigten Datensatz.
Im {\tt Extras}-Men"u kann mit "`Einf"ugen"' oder "`�berschreiben"' (INSERT) 
bestimmt werden ob die Eingaben an der Cursorposition eingef"ugt 
werden (die Zeichen hinter dem Cursor werden entsprechend 
verschoben), oder ob die Eingaben die vorhandenen Zeichen 
"uberschreiben. Die Taste DELETE l"oscht das Zeichen unter dem 
Cursor, BACKSPACE l"oscht das Zeichen vor dem Cursor und ESC 
l"oscht das ganze Datenfeld. Der Cursor wird mit den Tasten $ \leftarrow $ 
und $ \rightarrow $ zeichenweise bewegt; wenn zus"atzlich die CONTROL Taste 
gedr"uckt wird, bewegt sich der Cursor wortweise. Mit den Tasten 
$\uparrow $ bzw. $\downarrow $ (oder RETURN) wird der Cursor auf das 
vorherige bzw. n"achste Datenfeld gesetzt (Reihenfolge im Masken-
Editor festgelegt). Der Cursor kann nat"urlich auch mit der Maus direkt
positioniert werden.
%
%
\subsection{Speicherplatz}
Informationen "uber den benutzten und noch freien Speicher erh"alt 
man mit "`Speicher..."' im {\tt Extras}-Men"u (HELP).
%
%
\subsection{Makros}
Im {\tt Extras}-Men"u werden mit "`MAKROS..."' (ALTERNATE-M) Makros 
definiert. Diese Makros sind Texte, die bei Druck auf eine 
Funktionstaste (F1-F10) an der Cursorposition in die Datenfelder 
eingetragen werden. H"aufige Eingaben k"onnen damit schneller 
erledigt werden.
%
%
\subsection{Blockfunktionen}
Wenn in vielen Datens"atzen gleiche Eintr"age in mehreren 
Datenfeldern erfolgen sollen, kann die Eingabe mit den 
Blockfunktionen beschleunigt werden. Man kann Datenfelder eines 
Datensatzes markieren ("`Block markieren"' oder CTRL-B) und den 
Inhalt in den aktuellen Datensatz kopieren ("`Block kopieren"' oder 
CTRL-V). Es wird immer das Datenfeld markiert, auf dem der Cursor 
steht. Die Markierungen k"onnen komplett durch "`Markierung 
l"oschen"' (CTRL-E) gel"oscht werden. Einzelne Block-Markierungen 
k"onnen durch ein zweites "`Markieren"' wieder gel"oscht werden.
%
%
\subsection{Suchen}
Mit "`Suchen..."' (CTRL-F) im {\tt Edit}-Men"u k"onnen Datens"atze gesucht 
werden. Man tr"agt in die Dialogbox einen Text ein. Es werden die 
Datens"atze nach diesem Text durchsucht. Wenn in 
einem Datensatz der Text vorkommt, wird dieser im Eingabe-
Fenster angezeigt. Die Suche kann durch verschiedene Buttons 
gesteuert werden. Sie kann von vorne beginnen (Button "`v. vorn") 
oder vom aktuellen Datensatz (im Eingabe-Fenster angezeigt) in 
Richtung erster Datensatz (Button $ \leftarrow $ ) oder in Richtung letzter 
Datensatz ( $ \rightarrow $ ). Weiterhin wird festgelegt, ob die 
Gro"s/Kleinschreibung beim Vergleichen ber"ucksichtigt werden soll.
%
%
\subsection{Suchen und Ersetzen}
Mit "`Ersetzen..."' (CTRL-R) im {\tt Edit}-Men"u k"onnen Texte durch andere 
Texte ersetzt werden. Es wird wie bei "`Suchen..."' ein Text 
eingetragen, der gesucht und ersetzt werden soll. Zus"atzlich mu"s ein 
Ersatztext  eingetragen werden. Mit der "`Nachfragen"'-
Option wird bestimmt, ob vor jedem Ersetzen eine Best"atigung 
erfolgen soll. Es kann dann vor jedem Ersetzen mit dem "`OK"'-
Button das Ersetzen best"atigt, mit dem "`Nein"'-Button verhindert 
werden; mit dem "`Abbruch"'-Button kann  die Funktion komplett 
abgebrochen werden.
%
%
\section{Ausgabe}
Das Ausgabe-Fenster wird mit "`Ausgabe..."' (CTRL-O) im {\tt Edit}-Men"u 
ge"offnet. Mit den $ \leftarrow $ und $ \rightarrow $ Buttons 
(SHIFT $ \leftarrow $ und SHIFT 
$ \rightarrow $ ) wird die Ausgabe-Maske gewechselt. 
%
%
\subsection{Sortieren}
Der "`Sortieren"'-Button 
(CTRL-T) "offnet eine Dialogbox. In dieser Box wird ausgew"ahlt, 
nach welchem Datenfeld die Daten sortiert werden sollen. Beim 
Sortieren wird kein Unterschied zwischen Gro"s- und 
Kleinschreibung gemacht. Umlaute werden auch richtig einsortiert.
%
%
\subsection{Auswahl}
Mit einen Doppelklick auf einen Datensatz wird dieser 
deselektiert (bzw. selektiert). Nur selektierte Datens"atze werden 
auf dem Dru"cker ausgegeben! Diese Selektion kann auch allgemeiner 
erfolgen. Der "`Auswahl"'-Button (CTRL-A) "offnet eine Dialogbox, 
mit der man alle Datens"atze (bzw. nur Datens"atze die einen 
bestimmten Text enthalten) selektieren oder deselektieren kann.
%
%
\section{Ausgabe auf Dru"cker}
%
%
\subsection{Seitenformat}
Mit "`Seitenformat"' im {\tt Dru"cker}-Men"u (ALTERNATE-F) "offnet sich eine 
Dialogbox, in der Papierl"ange, Kopfzeile (1. Zeile entspricht der 
1. H"alfe, 2. Zeile entspricht der 2. H"alfte der Kopfzeile), 
Fu"szeile und R"ander festgelegt werden. Kopf.- und Fu"szeile k"onnen
auch abgeschaltet werden.
%
%
\subsection{Drucken}
"`Drucken"' im {\tt Datei}-Men"u (CTRL-P) druckt die Datens"atze aus (siehe 
Ausgabe). Die Ausgabe kann auf die Dru"cker-Schnittstelle, die 
serielle Schnittstelle (noch nicht getestet) 
oder in eine Datei erfolgen. Bei der Ausgabe in eine Datei werden 
keine Dru"cker-Steuercodes ausgegeben. 
Wahlweise kann das eingestellte Seitenformat 
ignoriert werden (keine Kopf/Fu"szeilen usw.). Es wird dann auch ohne 
Dru"cker-Steuercodes gedruckt. 
%
%
\subsection{Steuercodes}
Die Dru"cker-Steuercodes werden mit dem Men"upunkt "`Einstellung..."' 
im {\tt Dru"cker}-Men"u (ALTERNATE-P) ge"andert.
Die Steuercodes m"ussen alle in zweistelligen Hexadezimal-Zahlen, 
die durch ein Leerzeichen getrennt werden, angegeben werden.
Die ersten beiden Codes dienen dazu, vor und nach einem Ausdruck, 
den Dru"cker in einen bestimmten Zustand zu versetzen 
(Normalerweise in den Grundzustand = Dru"cker initialisieren). Die 
n"achsten vier Codes aktivieren verschiedene Schriftbreiten. Es 
mu"s in den Eingabefeldern davor jeweils eingetragen werden 
wieviele Zeichen in eine Zeile passen (dezimal). Es wird dann bei der 
Ausgabe die Schriftbreite gew"ahlt, die das Blatt am besten 
ausnutzt. Falls die auszudruckenden Zeilen doch l"anger werden als auf 
das Blatt passen, werden die Zeilen gek"urzt. 
In den letzten Zeilen werden f"ur Zeichen, bei denen der Dru"cker 
und der Atari verschiedene ASCII-Codes haben, neue Ersatzcodes 
angegeben, die der Dru"cker dann druckt. Nach einem Hochkomma wird 
das Zeichen angegeben, danach, durch Leerzeichen getrennt, folgt 
der Ersatzcode in einer zweistelligen Hexadezimal-Zahl.
Diese Einstellungen werden mit "`...laden..."' im {\tt Dru"cker}-Men"u 
(ALTERNATE-R) geladen und mit "`...speichern..."' (ALTERNATE-W) 
abgespeichert. Wenn die Einstellungen unter dem Namen "`MDAT2.PRN"'
gespeichert werden (gleiches Verzeichniss wie MDAT2.PRG), werden sie
beim Starten des Programms automatisch geladen.

%
%
\section{Optionen}
Mit dem Men"upunkt "`Optionen..."' im {\tt Extras}-Men"u 
(ALTERNATE-O) k"onnen verschiedene Einstellungen vorgenommen werden.
Alle Dialogboxen k"onnen wahlweise in der Bildmitte oder an der
Mausposition erscheinen. Es stehen zwei Zeichensatz-Gr"o"sen zur 
Verf"ugung. Die Fehlermeldungen und Sicherheitsabfragen k"onnen 
abgeschaltet werden. (Sicherheitsabfragen: Daten �berschreiben, 
Daten l"oschen, Programmende usw.)
Mit "`...sichern"' im {\tt Extras}-Men"u (CTRL-W) werden die Optionen, das 
Seitenformat und fast alle Einstellungen der anderen Dialogboxen 
gespeichert. Beim Starten des Programms wird diese Datei (falls 
vorhanden) automatisch geladen.
%
%
\section{Fehler}
Bekannte Fehler: Wenn ein Disketten- oder Plattenzugriff fehlgeschlagen 
ist (defekte Diskette etc.), st"urzt das Programm
kurze Zeit sp"ater aus unbekannten Gr"unden ab (Fehler liegt sehr
wahrscheinlich am GFA-BASIC-Compiler, da im Interpreter alles normal
verl"auft).  \\
{\em Abhilfe in der Version 2.2}\\
  Alle Funktionen des Programms, die eine Datei auf die  Diskette
  oder Festplatte schreiben, pr"ufen mit Hilfe der GEMDOS-Funktion  
  FCREATE, ob  die Datei  angelegt  werden kann. Fehlermeldungen,
  die diese Funktion zur"uckliefert (Schreibschutz) werden dadurch
  nicht durch die "`ON ERROR GOSUB"'-Fehlerbehandlung des GFA-BASIC
  behandelt. Bei diesen Fehlern kommt es dann nicht zum  Absturz.
  Die  zus"atzliche  Pr"ufung mit FCREATE wurde eingebaut, da sonst
  auch  schreibgesch"utzte  Disketten  einen  Absturz  verursachen 
  k"onnen. Defekte Disketten sind aber weiterhin problematisch!

Wer weitere Fehler findet, soll sie mir bitte mitteilen (Unter 
welchen Umst"anden tritt der Fehler auf, welche Hardware wurde 
benutzt, welche Programme (Accessories) im Hintergrund?). 
\\[100pt]
Updates, Anregungen, Anfragen und Kritik bitte an: \\
Alexander Clauss\\
Stresemannstra"se 44\\
6100 Darmstadt 13
%
%
\end{document}

