$lines++;
if ( ! $text ) {
- print STDERR "\nSKIP $file +$lines [$_] ";
+ print STDERR "\nSKIP $file +$lines [$_] " if $idsl;
next;
}
return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text );
});
+csv_file( 'IDNTAG.csv', sub {
+ my $line = shift;
+
+ my ( $idsl, $tag, $STSL, $KZVS, $BIBRAZ, $HIRAZ, $KPS, $OKO ) = split(/,/,$_);
+
+ my @leader;
+ $leader[5] = $STSL;
+ $leader[6] = $KZVS;
+ $leader[7] = $BIBRAZ;
+ $leader[8] = $HIRAZ;
+ $leader[17] = $KPS;
+ $leader[18] = $OKO;
+
+ $leader[23] = ' '; # last char;
+
+ my $full = join('', map { defined $_ ? $_ : ' ' } @leader);
+ $data->{$idsl}->{'leader'} = $full;
+ return;
+});
+
+csv_file( 'OBRTAG.csv', sub {
+ my $line = shift;
+
+ my ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $CODINF ) = split(/,/,$_);
+ return ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $CODINF );
+});
+
print STDERR "\n# getting all ids ";
-my @ids = keys %$data;
+my @ids = sort keys %$data;
print STDERR scalar(@ids), " found\n";
my $marc_file = 'liberated.marc';
foreach my $id ( @ids ) {
my $rec = MARC::Record->new;
$rec->encoding( 'UTF-8' );
+ $rec->add_fields( [ '001', $id ] );
+
foreach my $field ( sort keys %{ $data->{$id} } ) {
+ if ( $field eq 'leader' ) {
+ $rec->leader( $data->{$id}->{$field} );
+ next;
+ }
foreach my $arr ( @{ $data->{$id}->{$field} } ) {
if ( ! $arr ) {
- print STDERR "SKIPPED $id $field ",dump( $data->{$id} );
+# print STDERR "SKIPPED $id $field ",dump( $data->{$id}->{$field} ), "\n";
next;
}
+ $arr = [ $arr->[3] ] if ( $field < 010 ); # control fields don't have idicators or subfields
$rec->add_fields( $field, @$arr );
}
}