initialize($conf);
open OF, '>', $conf->{output};
-binmode(OF, ':utf8');
open XF, '>', $conf->{exception};
-binmode(XF, ':utf8');
for my $file (@ARGV) {
print XF "Processing $file\n";
# date1, date2
my $my_008 = $record->field('008');
$my_008 = $my_008->as_string() if ($my_008);
- unless (defined $my_008 and length $my_008 == 40)
- { print XF ">> Bad 008 length in rec ",$marc{id},"\n"; return \%marc }
- $marc{date1} = substr($my_008,7,4) if ($my_008);
- $marc{date2} = substr($my_008,11,4) if ($my_008); # UNUSED
-
+ if (defined $my_008) {
+ unless (length $my_008 == 40) {
+ $my_008 = $my_008 . (' ' x (40 - length($my_008)));
+ print XF ">> Short 008 padded to ",length($my_008)," at rec $count\n";
+ }
+ $marc{date1} = substr($my_008,7,4) if ($my_008);
+ $marc{date2} = substr($my_008,11,4) if ($my_008); # UNUSED
+ }
unless ($marc{date1} and $marc{date1} =~ /\d{4}/) {
my $my_260 = $record->field('260');
my $date1 = $my_260->subfield('c') if $my_260;
if (defined $date1 and $date1 =~ /\d{4}/) {
$marc{date1} = $date1;
- print XF ">> using 260c as date1 on $id\n";
+ print XF ">> using 260c as date1 at rec $count\n";
}
}
sub dump_fingerprints {
my ($marc) = @_;
+ my $good_fp = 0;
if ($conf->{runtype} eq "primary") {
print OF join("\t",$marc->{id}, $marc->{item_form},
$marc->{bib_lvl}, $marc->{title},
$isbn, $marc->{pages}), "\n";
}
+ $good_fp = 1;
}
-
=pod
Looks like case b isn't a terribly good idea most of the time -- it
$marc->{item_form}, $marc->{date1},
$marc->{record_type}, $marc->{bib_lvl},
$marc->{title}, $marc->{edition}), "\n";
+ $good_fp = 1;
}
=cut
$marc->{item_form}, $marc->{date1},
$marc->{record_type}, $marc->{bib_lvl},
$marc->{title}, $marc->{issn}), "\n";
+ $good_fp = 1;
}
if ($marc->{lccn}) { # case d : lccn
$marc->{item_form}, $marc->{date1},
$marc->{record_type}, $marc->{bib_lvl},
$marc->{title}, $marc->{lccn}) ,"\n";
+ $good_fp = 1;
}
if ($marc->{accomp}) { # case e : accomp
$marc->{item_form}, $marc->{date1},
$marc->{record_type}, $marc->{bib_lvl},
$marc->{title}, $marc->{accomp}) ,"\n";
+ $good_fp = 1;
}
# case o: oclc
$marc->{record_type}, $marc->{bib_lvl},
$marc->{title}, $_, "\n");
}
+ $good_fp = 1;
}
# case z : author, publisher, pubyear, pages
$marc->{title}, $marc->{author},
$marc->{publisher}, $marc->{pubyear},
$marc->{pages}), "\n";
+ $good_fp = 1;
+ }
+
+ # case poo : nothing good; dump a primary and move on
+ unless ($good_fp) {
+ print OF join("\t", $marc->{id}, "case poo", $marc->{item_form},
+ $marc->{date1}, $marc->{record_type},
+ $marc->{bib_lvl}, $marc->{title}), "\n";
}
}
}