% DOCUMENT OPTION STYLE
%
% This style has to be used as an optional style.
%
% Copyright (c) 1991,1992 by Steffen Steinhaeuser
% Permission to copy all or part of this work is granted, provided
% that the copies are not made or distributed for resale, and that
% the copyright notice and this notice are retained.
%
% THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
% FOR ANY PARTICULAR PURPOSE.
%
% If you make any improvements, I'd like to hear about them.
%
% Steffen Steinh\"auser
% Landwehrstr. 47
% 6100 Darmstadt
% Federal Republic of Germany
% steinhaeuser@ddagsi5.bitnet
% steffen_steinhaeuser@mz.maus.de
%
\def~{ }
\typeout{-------------------------------------------------------}
\typeout{| FINDER.STY V2.1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|}
\typeout{| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c'91 stone |}
\typeout{-------------------------------------------------------}

\newif\ifstillmore
\newif\iffoundname
\newif\iffoundfirstname
\newif\iffoundsecondname

\newif\iffindnameokay
\findnameokayfalse

\newif\ifserienbrief
\serienbrieffalse

\newread\datafile

\gdef\firstname{???\message{Kein 1.Suchwort definiert!}}
\gdef\secondname{???\message{Kein 2. Suchwort definiert!}}

\def\meldung#1{
\typeout{}
\typeout{#1}
\typeout{}}

\def\serienbrief#1{\long\def\serientext{#1}
\meldung{Der Text des Serienbriefes wurde abgespeichert.}
\serienbrieftrue
\findnameokayfalse
\foundnamefalse}

\def\findname{\DblArg{\findn@me}}
\def\DblArg #1{\def\DAtemp{#1}\futurelet\DALook\Decide }
\def\Decide{\ifx \DALook [  \let\DAdo=\DAtemp
            \else           \let\DAdo=\DBarg    \fi \DAdo }
\def\DBarg #1{\DAtemp[#1]{#1}}

\long\def\findn@me[#1]#2{ %
\gdef\firstname{#1}
\gdef\secondname{#2}
\serienbrieffalse
\ifx\firstname\@empty
    \ifx\firstname\secondname
        \meldung{Es wurden keine Suchdaten uebergeben !!!}
        \findnameokayfalse
    \else
        \findnameokaytrue
        \foundnamefalse
        \global\edef\firstname{\secondname}
    \fi
\else
    \ifx\secondname\@empty
        \global\edef\secondname{\firstname}
        \findnameokaytrue
    \else
    \findnameokaytrue
    \foundnamefalse
    \fi
\fi}

\def\lookat#1 #2@@@{\gdef\found{#1}\gdef\rest{#2}
\iffoundfirstname\else
    \ifx\found\firstname
        \foundfirstnametrue
    \else
        \foundfirstnamefalse
    \fi
\fi
\iffoundsecondname\else
    \ifx\found\secondname
        \foundsecondnametrue
    \else
        \foundsecondnamefalse
    \fi
\fi
\iffoundfirstname
    \iffoundsecondname
        \foundnametrue
    \else
        \ifx\rest\@empty\else
            \expandafter\lookat\rest @@@
        \fi
    \fi
\else
    \ifx\rest\@empty\else
        \expandafter\lookat\rest @@@
    \fi
\fi}

\def\addressfile#1{\gdef\filename{#1}
\iffoundname
    \meldung{Datei \filename~ wird nicht durchsucht !!!}
\else
    \foundnamefalse
    \analysefile
    \ifserienbrief
	\foundnamefalse
    \fi
\fi}

\long\def\analysefile{ %
\immediate\openin\datafile = \filename
\iffindnameokay
    \stillmoretrue
\else
    \ifserienbrief
        \stillmoretrue
        \foundnametrue
    \else
        \meldung{\string\findname{...}~ vor \string\addressfile~ aufrufen !!!}
        \stillmorefalse
    \fi
\fi
\message{finder.sty is searching in \filename}
\loop
\message{.}
\foundfirstnamefalse
\foundsecondnamefalse
\ifeof\datafile\relax\else 
    \immediate\read\datafile to \lineone
\fi
\ifeof\datafile\stillmorefalse\else
    \gdef\name{\lineone}
    \iffoundname\else
        \if\endgraf\lineone
            \gdef\name{\message{\string\name~ nicht definiert !!!}}
        \else
            \expandafter\lookat\lineone @@@
        \fi
    \fi
\fi
\ifeof\datafile\relax\else\immediate\read\datafile to \linetwo \fi
\ifeof\datafile\stillmorefalse\else
    \gdef\street{\linetwo}
    \iffoundname\else
        \if\endgraf\linetwo
            \gdef\street{\message{\string\street~ nicht definiert !!!}}
        \else
            \expandafter\lookat\linetwo @@@
        \fi
    \fi
\fi
\ifeof\datafile\relax\else\immediate\read\datafile to \linethree \fi
\ifeof\datafile\stillmorefalse\else
    \gdef\city{\linethree}
    \iffoundname\else
        \if\endgraf\linethree
            \gdef\city{\message{\string\city~ nicht definiert !!!}}
        \else
            \expandafter\lookat\linethree @@@
        \fi
    \fi
\fi
\ifeof\datafile\relax\else\immediate\read\datafile to \linefour \fi
\ifeof\datafile\stillmorefalse\else
    \gdef\telephone{\linefour}
    \iffoundname\else
        \if\endgraf\linefour
            \gdef\telephone{\message{\string\telephone~ nicht definiert !!!}}
        \else
            \expandafter\lookat\linefour @@@
        \fi
    \fi
\fi
\ifeof\datafile\relax\else\immediate\read\datafile to \linefive \fi
\ifserienbrief
    \ifstillmore
        \typeout{Adresse -> Serienbrief : \name}
        \typeout{~~~~~~~~~~~~~~~~~~~~~~~~ \street}
        \typeout{~~~~~~~~~~~~~~~~~~~~~~~~ \city}
        \typeout{~~~~~~~~~~~~~~~~~~~~~~~~ \telephone}
        \serientext
    \else
        \gdef\name{}
        \gdef\street{}
        \gdef\city{}
        \gdef\telephone{}
    \fi
\else
    \iffoundname
        \stillmorefalse
        \typeout{Adresse gefunden: ~~~~~~ \name}
        \typeout{~~~~~~~~~~~~~~~~~~~~~~~~ \street}
        \typeout{~~~~~~~~~~~~~~~~~~~~~~~~ \city}
        \typeout{~~~~~~~~~~~~~~~~~~~~~~~~ \telephone}
    \fi
\fi
\ifstillmore\else
    \iffoundname\else
        \foundnamefalse
        \meldung{Datensatz nicht gefunden!!!}
        \gdef\name{}
        \gdef\street{}
        \gdef\city{}
        \gdef\telephone{}
    \fi
\fi
\ifstillmore
\repeat
\closein\datafile}
