% Dies ist eine Umsetzung der Datei Converter.DOK  in  Amiga-TeX
% geschrieben von Torsten Drees am 25.12.91.  Verbesserungen und
% Vereinfachungen  des  Skriptes  sind   jederzeit   willkommen.
% Ich bin zu erreichen via Z-Netz : RUDE-BOY@WB.ZER.
% Verbessert anläßlich der Version 2.03 von TheAnswer am 20.06.92

\documentstyle[german]{article}
\input{amiga}
\setlength{\textwidth}{16.5cm}
\setlength{\oddsidemargin}{0.0cm}
\setlength{\evensidemargin}{0.0cm}
\setlength{\topmargin}{0.0cm}
\setlength{\footskip}{1.0cm}
\setlength{\textheight}{23.0cm}
\pagestyle{headings}       

\def\ta{{\bf TheAnswer }}

\begin{document}

\title{THE ANSWER -- Eine neue Point--Generation
        \thanks{The Answer und Converter sind \copyright 1990, 1991, 1992 von Toni
                             Günzel Peltner}\\
       \medskip
       Deutsche Dokumentation zum CONVERTER\\
       \medskip
       Version 1.01 vom 20.12.1991}

\author{von\\
       Toni Günzel--Peltner\\
       WEGAR@AMC.ZER}

\date{}

\maketitle

\tableofcontents

\newpage
\noindent
Der  Converter  wurde  ursprünglich geschrieben, da die Daten von \ta V1.xx
(V1.00  bis  V1.12)  nicht mehr zu den Daten von \ta V2.xx kompatibel sind.
Inzwischen bietet er noch einige Features mehr an, die man ``immer wieder''
mal gebrauchen kann.\\


\section[A -- Alles von \ta 1.xx auf \ta 2.xx konvertieren]
        {A -- Alles von \ta 1.xx auf \ta 2.xx konvertieren}

Hinter  diesem  Menüpunkt versteckt sich der Hauptteil des Programms.  Nach
der  Anwahl  dieses  Menüpunkts  kommt  man  nach  2 Requestern in das neue
Konfigurationsmenü.  Es wird mit den Daten der alten \ta 1.xx-Konfiguration
gefüllt  bzw.   belegt  die Werte, die es unter \ta 1.xx noch nicht gab mit
den Defaultwerten.\\

\noindent
Die  Bedeutung  der einzelnen Punkte in der Konfiguration etc.  sind in der
Dokumentation zu \ta nachzulesen.\\

\noindent
Verläßt  man das Konfigurationmenü mit SPEICHERN der neuen Konfiguration so
wird  die  alte  \ta 1.xx Brettliste eingelesen und alle Daten auf das neue
Format  für  \ta 2.xx konvertiert.  Dabei gehen KEINE alten Daten verloren,
da für die neuen Listen andere Filenamen benutzt werden.\\

\noindent
Wichtig ist nur, daß das alte und neue Hauptverzeichnis das Gleiche bleibt,
da die Daten sonst nicht gefunden werden.\\


\section[K -- \ta 2.xx Konfiguration editieren]
        {K -- \ta 2.xx Konfiguration editieren}

Dieser  Befehl  ruft einfach das Konfigurationsmenü auf.  Man kann dann die
Konfiguration außerhalb von \ta editieren.\\

\noindent
Die  weitere Dokumentation zur Konfiguration befindet sich im Hauptteil der
Dokumentation.

\section[B -- \ta 2.xx Brettliste validieren/reparieren]
        {B -- \ta 2.xx Brettliste validieren/reparieren}

Falls  es  einmal  passieren  sollte,  daß  wegen  eines  Systemfehlers die
Brettliste NICHT korrekt gespeichert wurde, so kann man sie mit diesem Tool
reparieren.\\

\noindent  Zuerst  wählt  man per File-Requester die Konfiguration aus, die
für die defekete Brettliste zuständig ist.\\

\noindent
Dann  prüft  Converter  alle Bretter auf Gültigkeit.  Dabei geht er in drei
Schritten vor:

\begin{enumerate}
\item {\bf Exestiert ein Unterverzeichnis zu einem Bretteintrag:\\}
      Converter  sucht  nach  Bretteinträgen,  zu  denen  es  KEIN
      Unterverzeichnis  gibt.   Falls  ein solches Brett existiert
      wird  man gefragt, ob man den Bretteintrag löschen will oder
      das  Unterverzeichnis  erzeugen.   Ein  solcher  Fehler kann
      produziert  werden,  wenn ein Brett gelöscht wurde, aber vor
      dem Speichern der Brettliste das System abgestürzt ist.

\item {\bf Exestiert   ein  Unterverzeichnis  OHNE  Bretteintrag:\\}
      Converter   durchsucht   alle   Unterverzeichnisse,  die  im
      Message-Verzeichnis     liegen.      Wird     ein    solches
      Unterverzeichnis gefunden, so wird der passende Bretteintrag
      erzeugt  und  an  die Brettliste gehängt.  Ein solches Brett
      heißt dann ``/VAL-DUMMY/[Name des Unterverzeichnisses]''.

\item {\bf Neu-Status und Nachrichtenanzahl neu setzten:\\}
      Der häufigste Fehler, der bei \ta passiert, ist da die
      Anzahl  der  Nachrichten  oder NEU-Status eines Brettes nach
      einem  System-Absturz  fehlerhaft  ist.   Die  Folge ist, das
      beim  Einsortieren neuer Nachrichten der falsche Anzahl-Wert
      genommen  wird  und  doppelte Einträge oder falsche EInträge
      erzeugt werden.
\end{enumerate}
\medskip
\noindent

Diese  Routine  setzt den Wert der Nachrichtenanzahl auf den aktuellen Wert
laut  Inhaltsverzeichnis  ebenso wie den Neu-Status.  Bretter, die unter 2.
erzeugt wurden, erhalten so ihre korrekten NEU- und Anzahl-Werte.


\section[I -- \ta 2.xx BrettINHALT validieren/reparieren]
        {I -- \ta 2.xx Brettinhalt validieren/reparieren}

Hinter  diesem  Befehl verbirgt sich ein Menü, um auf vielfältige Weise ein
einzelnes  Brett  zu  reparieren, falls es defekt ist.  Die Programme gehen
immer vom günstigsten Fall aus.  Daher kann auch nichts passieren, wenn mit
diesen Routinen ein Brett überprüft wird, das in Ordnung ist/scheint.\\

\noindent
Nach der Anwahl dieses Menüpunkts wählt man zunächst die Konfiguration aus,
unter  dem  die betroffene Brettliste gespeichert ist.  Die Brettliste wird
eingelesen und das erste Brett wird zunächst als Zielbrett festgelegt.\\

\noindent
Im Menü hat man dann folgende Möglichkeiten:

\subsection[B -- Neues Brett auswählen]{B -- Neues Brett auswählen}

Die  aus  \ta  bekannte  Brettliste  wird  aufgelistet.  Man kann ein Brett
auswählen,  auf  das  sich  die folgenden Befehle beziehen.  Rechts daneben
wird das aktive Brett angezeigt.

\subsection[K -- Neue Konfiguration laden]{K -- Neue Konfiguration laden}

Man  kann  den  Vorgang  vom  Anfang  wiederholen und ggf.  über eine ander
Konfiguration eine andere Brettliste prüfen.

\subsection[ESC - Zurück zum Hauptmenü]{ESC -- Zurück zum Hauptmenü}

Falls  durch  den  Validator  die  Brettliste  verändert  wurde, wird diese
gespeichert und anschließend ins Hauptmenüe zurückgesprungen.

\subsection[Inhaltsverzeichnis prüfen]{Inhaltsverzeichnis prüfen}

\subsubsection[E -- Haben alle Einträge ein File]
           {E -- Haben alle Einträge ein File}

Die  Routine  prüft,  ob  tote  Inhaltsverzeichniseinträge
vorhanden sind, zu denen gar keine Nachricht mehr exestiert.
Falls sie gefunden werden werden sie aus der Liste entfernt.

\subsubsection[F -- Haben alle Files einen Eintrag]
           {F -- Haben alle Files einen Eintrag}

Diese Routine liest alle Files des Brettes ein und prüft, ob
zu  jedem gefundenen File (Falls es sich tatsächlich um eine
Nachricht   handelt)   ein   Eintrag  im  Inhaltsverzeichnis
exestiert.
Wird so ein File gefunden, kann man per Requester auswählen,
ob  dieses File eingebunden , gelöscht oder ignoriert werden
soll.

\subsubsection[I -- Eintrag und File identisch]
           {I -- Eintrag und File identisch}

Diese  Routine  vergleicht  den  Eintrag  des Inhaltsverzeichnisses mit den
Daten,  die  in  der  Nachricht  für den Messageheader verantwortlich sind.
Werden   Differenzen   gefunden,   so  werden  die  fehlerhaften  Daten  im
Inhaltsverzeichnis durch die der Nachricht ersetzt.

\subsubsection[X -- Alles prüfen]{X -- Alles prüfen}

Diese Routine ruft die Punkte E,F und I nacheinander auf.

\subsection[Nachricht prüfen]{Nachricht prüfen}

\subsubsection[H --Header in sich korrekt]{H -- Header in sich korrekt}

Es  werden  die  Header  aller  Nachrichten  eingelesen  und auf Gültigkeit
geprüft.   Dabei  wird  davon  ausgegangen, daß es sich vermutlich um einen
fehlerhaften  Header  handelt, wenn als Typ der Nachricht nicht T(für Text)
oder  B(für  Binär)  erkannt wird und/oder der String, in dem die Länge der
Nachricht steht, keine Zahl ist.\\

\noindent
Ebenso wird geprüft, ob die Länge der Nachricht (sofern eine Zahl) auch der
tatsächliche Länge dieser Nachricht entspricht.\\

\noindent
Trifft eine dieser Möglichkeiten nicht zu, wird die Nachricht aus dem Brett
entfernt.   Um  den  Datenverlust aber möglichst gering zu halten, kann man
ein  solches  Fehlerhaftes  File  auf  Wunsch  auslagern, und außerhalb des
Points weiter prüfen/nutzen.\\

\noindent
Da die Daten des Headers unsicher sind, wird das fehlerhafte File so wie es
ist in die per Filerequester auswählbare Zieldatei kopiert.

\subsection[N -- Neues Inhaltsverzeichnis mit Parametern erzeugen]
           {N -- Neues Inhlatsverzeichnis mit Parametern erzeugen}

Wenn  alles  nichts  mehr  hilft, oder man aus anderen Gründen ein komplett
neues   Inhaltsverzeichnis  erzeugen  möchte,  kann  man  dies  mit  diesem
Menüpunkt erledigen.\\

\noindent
Nach  dem Aufruf werden wie bei F alle Files des Brettes eingelesen und aus
den Header-Daten ein neues Inhaltsverzeichnis erzeugt.\\

\noindent
Folgende   Parameter   allerdings,  die  Point-Intern  sind  und  nicht  im
Nachrichtenheader gespeichert werden, müssen manuell gesetzt werden:

\subsubsection[Status der Nachricht]{Status der Nachricht}

Alle  Nachrichten erhalten den hier ausgewählten Status und werden entweder
als  ALT,  NEU  oder  ARCHIVIERT  makkiert.   Man  kann  sie  auch  als DEL
(gelöscht)  markieren,  Allerdings  überleben  sie  die  Restaurierung dann
nicht,  sonder  werden  gelöscht.   Setzt man also den Paramter auf DEL, so
wird das Brett komplett gelöscht und ein leeres Brett erzeugt.

\subsubsection[Datum der Einsortierung]{Datum der Einsortierung}

Hier  kann  man  wähen, ob man das heutige Datum auf die 1/10-Sekunde genau
nimmt,  oder  das Absende-Datum der Nachricht nimmt, daß nur auf die Minute
genau  ist.   Der  Datumseintrag  beeinflußt  die  Art  der  Sortierung der
Nachrichten innerhalb eines Brettes, wenn der entsprechende Sortierungsmodi
gesetzt ist.\\

\noindent
Wird  das aktuelle Datum benutzt, ist die alte Reihenfolge allerdings nicht
gewährleistet,  da  die  Files  so  gefunden  werden,  wie sie auf Diskette
befindlich sind.  (Als würde mal LIST im SHELL tippen).\\

\noindent
Sortiert  man  sie  nach Ankunftsdatum dauert es nicht merkbar länger, aber
falls  alle  Absendedaten  in  Ordung sind, bleibt die logische Reihenfolge
normalerweise  erhalten.   Da  aber das Absendedatum von Zerberus-Mails nur
auf die Minute genau ist, wird einfach die Sekunde und die 1/10-Sekunde der
aktuellen  Zeit  genommen.  Ein Setzten auf 0 wäre nicht sinngemäß, da sich
die Zeiten des Einsortierungs-Datums schon unterscheiden sollten.

\subsubsection[EmpfängerString]{EmpfängerString}

Normalerweise sollte hier der Original-Empfänger gesetzt bleiben.  Wer aber
ein  Brett,  das durch vieles internes Weiterleiten etc.  total daneben ist
mit  einheitlichen  Headern versehen will, kann hier als Empfänger der Mail
den  Namen  des  Brettes  setzten.  In diesem Fall dauert die Erzeugung des
Inhaltsverzeichnisses  bedeutend  länger,  als  wenn  man den Orignalheader
beibehält,  da  dann nicht nur das Inhaltsverzeichnis neu geschrieben wird,
sondern jede Nachricht mit einem neuen Header versehen wird.

\section[DEL -- \ta 1.xx Informationen löschen]
        {DEL -- \ta 1.xx Informationen löschen}

Diese  Routine  löscht die Datenfiles von \ta 1.xx aus der ausgewählten \ta
2.xx-Brettliste.\\

\noindent
Die  gewünschte Brettliste wird durch die Konfig, die man per Filerequester
laden kann, ausgewählt.  Dies sollte man machen, wenn die Konvertierung von
1.xx  auf  2.xx  in  Ordnung  ging,  da diese Files soweit ungültig werden,
sobald  man  unter  \ta  2.xx  irgendwo  was  ändert.   (Neues  Brett, neue
Nachricht, löschen etc.) Diese Routine löscht aus allen Brettern, die unter
der     gelandenen     Konfiguration     bekannt     sind,     die    alten
Inhaltsverzeichnisse.\\

\noindent
Folgende Dateinen löscht diese Automaitk bewußt NICHT:

\medskip
\begin{tabular}{lcp{12.8cm}}
Bretter.DAT & - & Die 1.xx-Bretterliste\\
Answer.cfg  & - & Die 1.xx-Konfiguration\\
CALL        & - & evtl. vorhandendes Unterverzeichnis, in
                  dem unter 1.xx die Spooldatei während dem
                  editieren gespeichert wurde.\\
\end{tabular}

\medskip
\noindent
Wenn  man  diese  Files  nicht  mehr braucht, düfte es keine
große  Schwierigkeiten  machen  diese  Files  per  hand  zu
löschen.\\

\noindent
Die   \ta   1.xx   Konfiguration   befindet   sich  im
S:-Verzeichnis und heißt ``Answer.cfg''.\\

\noindent
Das File, daß unter \ta 1.xx die Brettliste speicherte
befindet  sich  im  PFad  [Hauptverzeichnis]/MSG/  und heißt
``BRETTER.DAT''.    Die  \ta  2.xx-Brettliste,  die  man
besser nicht löschen sollte heitß dagegen ``BRETTER.LST''. Das
CALL-Unterverzeichnis bfindet sich ebenfalls dort.

\section[S -- Statistik--File mit \ta 2.xx--Bretter füllen]
        {S -- Statistik--File mit \ta 2.xx--Bretter füllen}

Zur  Statistik  gibt  es  ein  eigenes  Dok-File.  Diese Routine liest eine
Brettliste  ein  und  füllt  das  Statistikfile  mit  dessen  Daten.   Sehr
praktisch, wenn man ein neues Statistikfile beginnt.\\

\noindent
Die  gewünschte Brettliste wird durch die Konfig, die man per Filerequester
laden kann, ausgewählt.


\section[L -- Suchstrings aus \ta 2.xx Brettliste löschen]
        {L -- Suchstrings aus \ta 2.xx Brettliste löschen}

Eine  Routine, die ursprünglich für die Beta-Tester vorgesehen war, da sich
während  der Beta-Tests das Format dieser Filter-Strings geändert hat.  Wer
aber  mal  seine  Brettliste  ``aufräumen  möchte''  kann  auch jetzt seine
Suchstrings damit durch Leer-Strings ersetzten.\\

\noindent
Die  gewünschte Brettliste wird durch die Konfig, die man per Filerequester
laden kann, ausgewählt.

\section[HELP -- Hilfe]{HELP -- Hilfe}

Ein kurzer Hilfstext, wie üblich veraltet.

\section[ESC - Ende]{ESC -- Ende}

Der Converter wird verlassen.

\end{document}
