spit tlc marc holdings
[migration-tools.git] / spit_tlc_marc_holdings.pl
1 #!/usr/bin/perl
2 use open ':utf8';
3 use MARC::Batch;
4 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
5 use MARC::Field;
6 use Unicode::Normalize;
7
8 my $count = 0;
9
10 binmode(STDOUT, ':utf8');
11 binmode(STDIN, ':utf8');
12
13 print join("\t",
14     "bib id",
15     "library",
16     "barcode",
17     "current location",
18     "home location",
19     "call number",
20     "item type",
21     "acq date",
22     "price",
23     "circulate flag",
24     "total charges",
25     "cat1",
26     "cat2"
27 ) . "\n";
28
29 foreach my $argnum ( 0 .. $#ARGV ) {
30
31         print STDERR "Processing " . $ARGV[$argnum] . "\n";
32
33         my $batch = MARC::Batch->new('XML',$ARGV[$argnum]);
34         $batch->strict_off();
35         $batch->warnings_off();
36
37         while ( my $record = $batch->next() ) {
38
39         $count++;
40
41                 print STDERR "WARNINGS: Record $count : " .  join(":",@warnings) . " : continuing...\n" if ( @warnings );
42         my $my_903a = $record->field('903')->subfield('a'); # target bib id's here
43         my @tags = $record->field('949');
44         foreach my $tag ( @tags ) {
45             print join("\t",
46                 $my_903a, # bib id
47                 $tag->subfield('a') || '', # collection code
48                 $tag->subfield('b') || '', # prefix
49                 $tag->subfield('c') || '', # call number
50                 $tag->subfield('d') || '', # cutter number
51                 $tag->subfield('g') || '', # barcode
52                 $tag->subfield('h') || '', # serial year
53                 $tag->subfield('i') || '', # volume number
54                 $tag->subfield('j') || '', # part subdivision 1
55                 $tag->subfield('k') || '', # part subdivision 2
56                 $tag->subfield('l') || '', # part subdivision 3
57                 $tag->subfield('m') || '', # part subdivision 4
58                 $tag->subfield('n') || '', # copy number
59                 $tag->subfield('o') || '', # accession number
60                 $tag->subfield('p') || '', # price
61                 $tag->subfield('q') || '', # condition
62                 $tag->subfield('5') || '', # magnetic media 
63                 $tag->subfield('7') || '' # checkin-in/check-out note
64             ) . "\n";
65         }
66
67         }
68         print STDERR "Processed $count records\n";
69 }