--- /dev/null
+#!/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";
+}