handles winnebago
authorMike Rylander <miker@esilibrary.com>
Tue, 14 Oct 2008 01:45:27 +0000 (01:45 +0000)
committerMike Rylander <miker@esilibrary.com>
Tue, 14 Oct 2008 01:45:27 +0000 (01:45 +0000)
split_colfax_marc_holdings.pl [new file with mode: 0755]

diff --git a/split_colfax_marc_holdings.pl b/split_colfax_marc_holdings.pl
new file mode 100755 (executable)
index 0000000..d6fc008
--- /dev/null
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+use open ':utf8';
+use Error qw/:try/;
+use MARC::Batch;
+use MARC::File::XML ( BinaryEncoding => 'utf-8' );
+use MARC::Field;
+use Unicode::Normalize;
+
+my $count = 0;
+
+binmode(STDOUT, ':utf8');
+binmode(STDIN, ':utf8');
+
+print join("\t",
+    "bib id",
+    "library",
+    "barcode",
+    "current location",
+    "home location",
+    "call number",
+    "item type",
+    "acq date",
+    "price",
+    "circulate flag",
+    "total charges",
+    "cat1",
+    "cat2"
+) . "\n";
+
+foreach my $argnum ( 0 .. $#ARGV ) {
+
+       print STDERR "Processing " . $ARGV[$argnum] . "\n";
+
+    my $M;
+    open $M, '<:utf8', $ARGV[$argnum];
+    my $batch = MARC::Batch->new('XML',$M);
+
+       $batch->strict_off();
+       $batch->warnings_off();
+
+       my $record = -1;
+       while ( try { $record = $batch->next() } otherwise { $record = -1 } ) {
+               next if ($record == -1);
+
+        $count++;
+
+               print STDERR "WARNINGS: Record $count : " .  join(":",@warnings) . " : continuing...\n" if ( @warnings );
+        my $my_903a = $record->field('903')->subfield('a'); # target bib id's here
+        my @tags = $record->field('852');
+        foreach my $tag ( @tags ) {
+                my $lib = $tag->subfield(''); # library
+                my $barcode = $tag->subfield('p'); # barcod
+                my $loc = $tag->subfield(''); # current location
+                my $home_loc = $tag->subfield('c'); # home location
+                my $cn = $tag->subfield('h'); # call number
+                my $type = $tag->subfield(''); # item type
+                my $create_date = $tag->subfield(''); # acq date
+                my $price = $tag->subfield('9'); # price
+               $price =~ s/[^0-9\.]//g;
+                my $circ_flag = $tag->subfield(''); # circulate flag
+                my $total_circ = $tag->subfield(''); # total charges
+                my $cat1 = $tag->subfield(''); # cat1
+                my $cat2 = $tag->subfield(''); # cat2
+            print join("\t",
+                $my_903a, $lib, $barcode, $loc, $home_loc,
+                $cn, $type, $create_date, $price, $circ_flag,
+                $total_circ, $cat1, $cat2) . "\n";
+        }
+
+       }
+       print STDERR "Processed $count records\n";
+}