#!c:\perl5\bin\perl -w #************************************************************ # Copyright : (c) 2002 ub.uni-dortmund.de # Autor : Frank Hessemer # Aenderung : 27-09-2002 # Projekt : QDRUCK # Filename : qdruck.pl # Titel : Quittungsdruck # OS : Windows 98 C # Sisis : AC A80 Sisis-SunRise # Drucker : DT-RT648 #************************************************************ $SUID=""; $AORT=""; $NAME=""; $SO=""; $FL=""; @Da = (); $x = 0; $LA = 0; #---------------------------------------------------- # START #---------------------------------------------------- $cntin=0; # Zaehler gelesene Zeilen $cnt=0; # Zaehler Zeilen in Ausgabe $out=""; # Initialisierung des String, in den die Ausgabe kommt $leer=0; # Hilfsflag, das sich merkt, ob vorherige Zeile leer war while ( <> ) { $cntin+=1; # Zeilen, die nicht ausgegeben werden sollen if ( /Leihverk..art\s*:/ ) { next; } if ( /ISBN \s*:/ ) { next; } # entferne Platzhalter aus Briefkoepfen if ( /\#-/ ) { next; } # ersetze aufeinanderfolgende Leerzeilen durch eine if ( /^\s*$/ ) { # das ist eine Leerzeile if ( $leer == 0 ) { # vorherige war nicht leer $out .= "\n"; $leer=1; $cnt+=1; next; } else { # vorherige war leer next; } } else { # es war keine Leerzeile $out .= $_; # fuege Inhalt an Ausgabe chomp; $cnt+=1; $leer=0; # bestimme, um welche Art von Ausdruck es sich handelt # und belege $ART mit entsprechendem Kuerzel if ( /B E S T E L L U N G/ ) { $ART="BEST"; } if ( /V E R S A N D A U F T R A G/ ) { exit 0; } if ( /Universitätsbibliothek Dortmund.*?-\s*(.*)/ ) { if ( $1 =~ /AUSLEI/ ) { $ART="AUSL"; } elsif ( $1 =~ /R.CKGABEQU/ ) { $ART="RUEC"; } elsif ( $1 =~ /KONTOAUSZUG/ ) { $ART="AUSZ"; } elsif ( $1 =~ /BESTELLZETTEL/ ) { $ART="BEST"; } else { $ART="????"; } } # Bestimme weitere Informationen zum Druck der Fusszeile # und fuer das Logging if ( /^ NAME *:\s*(.*?)\s*$/ ) { $NAME=$1; } if ( /^ BENUTZERNUMMER *:\s*(.*)/ ) { $SUID=$1;} if ( /^ Ausgabeort *:\s*(.*)/ ) { $AORT=$1; } #if ( /^ PFL-Nummer *:\s*\@(\d*)/ ) { $PFLN=$1; } #if ( /^ Mediennummer *:\s*(.*)/ ) { push @MNR, $1; } #if (( /^ Mediennummer *:\s*\@(\d*)/ ) || ( /^ PFL-Nummer *:\s*\@(\d*)/ )) if ( /^ {0,3}PFL-Nummer *:\s*\@(\d*)/ ) { $ART="PFL"; $PFLN=$1; # $PFLN="\@".$1; } if ( /^ {0,3}NAME *:\s*\ (\d*)/ ) { $NAME=$1; } } } #---------------------------------------------------- # PFL NEIN #---------------------------------------------------- if ( "$ART" ne "PFL" ) { $out .= "\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0A"; print $out; open (OUT,"> C:\\Perl5\\QDruck\\temp\\protokoll.txt"); print OUT $out; close (OUT); exit 0; } #---------------------------------------------------- # PFL LA Barcode #---------------------------------------------------- if ( "$ART" eq "PFL" ) { #======================================================= # CUT Suchen #======================================================= open (OUT,"> C:\\Perl5\\QDruck\\temp\\protokoll.txt"); print OUT $out; close (OUT); open (IN,"< C:\\Perl5\\QDruck\\temp\\protokoll.txt"); @Da = ; close (IN); $SO = chr(37); $FL = " F"; $out = ""; $LA = $#Da - 2; open (OUT,"> C:\\Perl5\\QDruck\\temp\\drucken.txt"); for $x (0..$LA) { print OUT $Da[$x]; } #======================================================= # Ausgabe in drucken.txt #======================================================= print OUT $out = "\x0eDiesen Zettel auf keinen Fall entfernen!\x14\n\n"; print OUT $out = "\x1C\x42\x05\x00\x40\x01\x00"; # Druckersequenz Barcode an print OUT $out = sprintf ("%s%s",$SO,$PFLN); print OUT $out = "\x18"; # Druckersequenz Barcode aus print OUT $out = "\x0E"; # Druckersequenz fuer Data Techno Fett print OUT $out = sprintf (" %s%s ",$PFLN,$FL); print OUT $out = "\x14"; # Druckersequenz fuer Data Techno Ende-Fett print OUT $out = "\n"; print OUT $out = "\x0A\x0A\x0A\x0A\x0A"; print OUT $out = "\x1C\x49\x00\x00"; close (OUT); #======================================================= # Drucken #======================================================= open (IN,"< C:\\Perl5\\QDruck\\temp\\drucken.txt"); @Da = ; close (IN); for $x (0..$#Da) { print $Da[$x]; } exit 0; } #------------------------------------------------------ # Ende QDRUCK.PL #------------------------------------------------------ exit 0;