#!/usr/bin/perl

require "dudenv.pl";
&profil;

require "dudparse.pl";
&ReadParse;

$sw1=$in{'sw1'};
$sw2=$in{'sw2'};
$bedingung1=$in{'bedingung1'};
$verzeichnis=$in{'verzeichnis'};

require "dudqsub.pl";
&sw_test;


# Neben den eigentlichen Umlauten soll es auch  erlaubt sein, diese
# in TeX-Notation einzugeben:

if ($sw1 =~ /\\/) {
   $sw1=&tex_convert($sw1);
}

if ($sw2 =~ /\\/) {
   $sw2=&tex_convert($sw2);
}

if ($sw1) {
   chdir ("$DB_DIR");
   $prozess = $$;
   $ausgabe = "/duderstadt/ergebnis/ergebnis" . "$prozess" . ".htm";
   $ausgabe_lang = "$ENV{'DOCUMENT_ROOT'}" . "$ausgabe";

   if ($OS=~/WIN/i) {
      &dt;
   }
 $zl=1;
 while ($zl==1) {
   $zl=2;
   open (ASK, "|$KL_START");
   if ($verzeichnis eq "soundex") {
      $verzeichnis="person";
      if ($sw2) {
         $sw1=~s/\&//;
         $sw2=~s/\&//;
         print ASK ("query name=tektonik;part=/catalogue[$verzeichnis,complete,\"lemma[\'$sw1\'] $bedingung1 lemma[\'$sw2\']\"]\n");
      } else {
         print ASK ("query name=tektonik;part=/catalogue[$verzeichnis,algorithm,\"$sw1\"]\n");
      }
   } else {
      if ($sw2) {
         print ASK ("query name=tektonik;part=/catalogue[$verzeichnis,start,\"\'$sw1\' $bedingung1 \'$sw2\'\"]\n");
      } else {
         print ASK ("query name=tektonik;part=/catalogue[$verzeichnis,start,\"$sw1\"]\n");
      }
   }
   if ($verzeichnis eq "titel") {
         print ASK ("write self=no;start=no;
               part=/test[:bestand=not null]:package[:conversion[:bestand,text],bestand] &+ :package[:abteilung &+ :form[\"\/\"] &+ :html,fundstellen_ref] &+ :package[:rep,fundstelle],
                    /test[:gruppe=not null]:package[:systematik,systematik] &+ :package[/back[1]:rep,bestand] &+ :package[/back[1]:html,systematik_ref] &+ :package[/query[]:gruppe,schliessen1] &+ :package[/back[1]:bestand,bindestrich] &+ :package[/query[]:gruppe,eintragsende],
                    /test[:klassifikation=not null]:package[:klassifikation,klassifikation] &+ :package[/back[2]:rep,bestand] &+ :package[/back[2]:verzeichnis,klass_ref] &+ :package[/query[]:conversion[:klass_nr,press],schliessen2] &+ :package[/back[2]:bestand,bindestrich] &+ :package[/query[]:klass_nr,eintragsende],
                    /test[:quelle=not null]:package[:titel,fragmente] &+ :package[:quelle,quelle] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[:form[\"Fragmente\"],fragment_ref],
                    /test[:regest=not null]:package[:conversion[:regest,text],regest] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[/back[1]:rep,bestand] &+ :package[/back[1]:verzeichnis,urkunden_ref] &+ :package[/query[]:bestellnr,schliessen2] &+ :package[/back[1]:bestand,bindestrich] &+ :package[:bestellnr,urkundenende],
                    /test[:reihe=not null]:package[:titel,reihentitel] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[:form[\"Rep 10\"],bestand] &+ :package[:reihe,reihen_ref2],
                    /test[/back[1]:reihe=not null]:package[:titel,abtitel] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[:form[\"Rep 10\"],bestand] &+ :package[/back[1]:reihe,reihen_ref] |+ :package[:substring[:bestellnr,3],schliessen2] |+ :package[:substring[:bestellnr,3],amtsbuchende2],
                    /test[/back[folio]:datei=not null]:package[/back[amtsbuch]:conversion[:titel,text],amtsbuch] |+ :package[:collect[:text[:laufzeit1,date]],laufzeit] |+ :package[/back[reihen]:reihe,reihen_ref] |+ :package[:substring[/query[]/back[amtsbuch]:bestellnr,3],schliessen2] |+ :package[:substring[:bestellnr,3],amtsbuchende] |+ :package[/back[reihen]:reihe,seiten_ref] |+ :package[/query[]/back[folio]:datei,schliessen4],
                    /test[/back[2]:klass_nr=not null]:package[/back[1]:conversion[:titel,text],titel] |+ :package[:collect[:text[:laufzeit1,date]],laufzeit] |+ :package[/back[3]:rep,bestand] |+ :package[/back[3]:verzeichnis,klass_ref] |+ :package[/query[]/back[2]:conversion[:klass_nr,press],schliessen3] |+ :package[/query[]/back[1]:aktennr,schliessen1] |+ :package[/query[]/back[4]:bestand,bindestrich] |+ :package[/query[]/back[1]:aktennr,aktenende],
                    /test[/back[1]:klass_nr=not null]:package[:conversion[/query[]:titel,text],titel] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[/back[3]:rep,bestand] &+ :package[/back[3]:verzeichnis,klass_ref] &+ :package[/back[1]:conversion[:klass_nr,press],schliessen3] &+ :package[/query[]:aktennr,schliessen1] &+ :package[/back[3]:bestand,bindestrich] &+ :package[/query[]:aktennr,aktenende]\n");
   } elsif ($verzeichnis eq "regest") {
         print ASK ("write self=no;start=no;
               part=:package[:conversion[:regest,text],regest] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[/back[1]:rep,bestand] &+ :package[/back[1]:verzeichnis,urkunden_ref] &+ :package[/query[]:bestellnr,schliessen2] &+ :package[/back[1]:bestand,bindestrich] &+ :package[:bestellnr,urkundenende]\n");
   } elsif ($verzeichnis eq "person") {
         print ASK ("write self=no;start=no;
               part=/test[/back[1]:regest=not null]:package[:name |+ :package[:vorname,vorname]|+ :package[:namenszusatz,vorname],person] |+ :package[:collect[:amt],nennung] |+ :package[:collect[:funktion],nennung] |+ :package[/back[1]:conversion[:regest,text],regest] &+ :package[/back[1]:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[/back[2]:rep,bestand] &+ :package[/back[2]:verzeichnis,urkunden_ref] &+ :package[/back[1]:bestellnr,schliessen2] &+ :package[/back[2]:bestand,bindestrich] &+ :package[/back[1]:bestellnr,urkundenende],
                    /test[/back[folio]:datei=not null]:package[:name |+ :package[:vorname,vorname]|+ :package[:namenszusatz,vorname],person] |+ :package[:collect[:amt],nennung] |+ :package[:collect[:funktion],nennung] |+ :package[/back[amtsbuch]:conversion[:titel,text],amtsbuch] |+ :package[/back[amtsbuch]:collect[:text[:laufzeit1,date]],laufzeit2] |+ :package[/back[1]:collect[:text[:datum,date]],datum] |+ :package[/back[2]:collect[:text[:datum,date]],datum] |+ :package[/back[3]:collect[:text[:datum,date]],datum] |+ :package[:collect[:text[:jahr,date]],amtsjahr] |+ :package[/back[reihen]:reihe,reihen_ref] |+ :package[/back[amtsbuch]:substring[:bestellnr,3],schliessen2] |+ :package[/back[amtsbuch]:substring[:bestellnr,3],amtsbuchende] |+ :package[/back[recht]:nummer,posten] |+ :package[/back[eintrag]:nummer,posten] |+ :package[/back[reihen]:reihe,seiten_ref] |+ :package[/back[folio]:datei,schliessen4],
                    /test[/back[2]:klass_nr=not null]:package[:name |+ :package[:vorname,vorname]|+ :package[:namenszusatz,vorname],person] |+ :package[:collect[:amt],nennung] |+ :package[:collect[:funktion],nennung] |+ :package[/back[1]:conversion[:titel,text],titel] |+ :package[/back[1]:collect[:text[:laufzeit1,date]],laufzeit] |+ :package[/back[4]:rep,bestand] |+ :package[/back[4]:verzeichnis,klass_ref] |+ :package[/back[2]:conversion[:klass_nr,press],schliessen3] |+ :package[/back[1]:aktennr,schliessen1] |+ :package[/back[4]:bestand,bindestrich] |+ :package[/back[1]:aktennr,aktenende]\n");
   } elsif ($verzeichnis eq "ort") {
         print ASK ("write self=no;start=no;
               part=/test[/back[1]:regest=not null]:package[:query[],person] |+ :package[/back[1]:conversion[:regest,text],regest] &+ :package[/back[1]:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[/back[2]:rep,bestand] &+ :package[/back[2]:verzeichnis,urkunden_ref] &+ :package[/back[1]:bestellnr,schliessen2] &+ :package[/back[2]:bestand,bindestrich] &+ :package[/back[1]:bestellnr,urkundenende],
                    /test[/back[folio]:datei=not null]:package[:query[],person] |+ :package[/back[amtsbuch]:conversion[:titel,text],amtsbuch] |+ :package[/back[amtsbuch]:collect[:text[:laufzeit1,date]],laufzeit] |+ :package[/back[reihen]:reihe,reihen_ref] |+ :package[/back[amtsbuch]:substring[:bestellnr,3],schliessen2] |+ :package[/back[amtsbuch]:substring[:bestellnr,3],amtsbuchende] |+ :package[/back[reihen]:reihe,seiten_ref] |+ :package[/back[folio]:datei,schliessen4],
                    /test[/back[2]:klass_nr=not null]:package[:query[],person] |+ :package[/back[1]:conversion[:titel,text],titel] |+ :package[/back[1]:collect[:text[:laufzeit1,date]],laufzeit] |+ :package[/back[4]:rep,bestand] |+ :package[/back[4]:verzeichnis,klass_ref] |+ :package[/back[2]:conversion[:klass_nr,press],schliessen3] |+ :package[/back[1]:aktennr,schliessen1] |+ :package[/back[4]:bestand,bindestrich] |+ :package[/back[1]:aktennr,aktenende]\n");
   } elsif ($verzeichnis eq "transkript") {
         print ASK ("write self=no;start=no;
               part=/test[/back[2]:klass_nr=not null]:package[/back[1]:conversion[:titel,text],titel] |+ :package[:collect[:text[:laufzeit1,date]],laufzeit] |+ :package[/back[3]:rep,bestand] |+ :package[/back[3]:verzeichnis,klass_ref] |+ :package[/query[]/back[2]:conversion[:klass_nr,press],schliessen3] |+ :package[/query[]/back[1]:aktennr,schliessen1] |+ :package[/query[]/back[4]:bestand,bindestrich] |+ :package[/query[]/back[1]:aktennr,aktenende2] |+ :package[/query[]:datei,seiten_ref_aktentsc],
                    /test[/back[2]:reihe=not null]:package[/back[1]:titel,abtitel] &+ :package[:collect[:text[:laufzeit1,date]],laufzeit] &+ :package[:form[\"Rep 10\"],bestand] &+ :package[/back[1]:reihe,reihen_ref] &+ :package[:substring[:bestellnr,3],schliessen2] &+ :package[:substring[:bestellnr,3],amtsbuchende]&+ :package[/back[1]:reihe,seiten_ref_tsc] |+ :package[/query[]:datei,schliessen4]\n");
   }
   print ASK ("stop target=\"$ausgabe_lang\";package=ergebnisdatei;overwrite=yes\n");
   close ASK;
   if (-e $ausgabe_lang) {
      & doublettentest;
   } else {
      if ($sw2 && $bedingung1 eq "or") {
         $sw1=$sw2;
         $sw2="";
         $zl=1;
         $sw1=~s/\&//;
      }  else {
         print "Location: /duderstadt/fehler/fehler2e.htm", "\n\n";
      }
   }
 }
} else {
     print "Location: /duderstadt/fehler/fehler1e.htm", "\n\n";
}

