AW: allegro.pl

"Höppner, Dierk" Dierk.Hoeppner at tib.uni-hannover.de
Fr Aug 2 08:37:05 CEST 2002


Hallo Matthias,

> Bei den "Dierk Hoeppnerschen Skripten" fuer Avanti kann 
> allegro.pl nicht
> immer die Titel liefern, sondern verweist, nachdem die 
> Meldung kommt, dass
> keine Treffer gefunden wurden, auf die naechste, erste... Seite. Dann
> kommen auch die richtigen Treffer.
> Das Lustige ist, dass bei einer kleineren DB, die mit exakt denselben
> Skripten angesprochen wird, dieses Problem erheblich seltener 
> auftritt.
> 
> Weiss jemand, wo da im Skript der Haken liegt?

Genau habe ich das nie herausgefunden. "Was nicht sein darf, das auch nicht
sein kann", aber irgendwie hält sich niemand an den Spruch. Es gibt aber
eine generelle Abhilfe:

In allegro.pl gibt es die Routine TCPConnect. Die wird in deinem Paket immer
am Anfang eines jeden Scriptes aufgerufen. Diesen Aufruf an den Stellen
immer streichen, besser erstmal nur auskommentieren. Dann in allegro.pl am
Anfang der Routine AuftragErgebnis genau den Aufruf wieder einbauen. Die
Routine sieht dann so aus:

### Auftrag abschicken und das Ergebnis einsammeln
sub AuftragErgebnis
{
    if ($TalkModus == 1){
        if(open( NMPIPE, "+>$PipeName" )){
	        NMPIPE->autoflush(1);
	        print NMPIPE $jobtext;
        }
        else {
              # keine Fehlermeldung, sondern es wird versucht eine
TCP/IP-Verbindung 
              # aufzubauen
	        $TalkModus = 2;
	        &TCPConnect;	# wenn avanti nicht laueft, kommt hier der
Abbruch
        }
        read (NMPIPE,$Input,$BufferSize);
        close( NMPIPE );
    }
    # kein elsif, da die Bedingung auch von erstem if erreicht wird
    if ($TalkModus == 2){
        &TCPConnect;            # falls noch nicht verbunden

        print S $jobtext;
        print S "AVANTI:EOJ";
        $Input="";
        while (<S>) {
        # bis das Ende-Signal der Antwort empfangen wird: EOR (=End of
Reply)
          if(/AVANTI:EOR/) {last;}
          $Input.=$_;
        }
        close( S );
    }
    return($Input);
}




Mehr Informationen über die Mailingliste Allegro