--- trunk/tools/mods2unimarc.pl 2004/05/15 19:52:01 328 +++ trunk/tools/mods2unimarc.pl 2004/05/16 22:12:02 330 @@ -231,7 +231,7 @@ if ($t =~ m/([^:]+):\s+(.+)$/) { $tmp->{$1} = $2; } else { - die "can't parse $t"; + print STDERR "can't parse '$t' in ",Dumper($phy_desc); } } my $data = $tmp->{pagin}; @@ -262,10 +262,22 @@ if ($related eq "series") { marc_add_rep($m_cache,'225','a',$ri->{titleInfo}->{title}); foreach my $pn (@{$ri->{titleInfo}->{partNumber}}) { - marc_add_rep($m_cache,'999','a',$pn); + if ($journal) { + marc_add_rep($m_cache,'999','a',$pn); + } else { + marc_add_rep($m_cache,'225','v',$pn); + } } } elsif ($related eq "preceding") { - marc_add_rep($m_cache,'430','a',$ri->{titleInfo}->{title}); + marc_add($m_cache,'520','a',$ri->{titleInfo}->{title}); + if ($ri->{identifier}) { + if ($ri->{identifier}->{type} eq "issn") { + marc_add($m_cache,'520','x',$ri->{identifier}->{content}); + } else { + die "can't store identifier type $type"; + } + } + marc_rep($m_cache,'520'); } else { die "can't parse related item type $related" if ($related); } @@ -274,6 +286,8 @@ marc_add_single($m_cache,'205','a',$ref->{originInfo}->{edition}); + marc_add($m_cache,'210','a',$ref->{originInfo}->{place}); + my $publisher = $ref->{originInfo}->{publisher}; if ($publisher =~ m,^(.+?)\s*/\s*(.+)$,) { marc_add($m_cache,'210','a', $2); @@ -282,7 +296,6 @@ marc_add($m_cache,'210','c', $publisher); } - marc_add($m_cache,'210','a',$ref->{originInfo}->{place}); marc_add($m_cache,'210','d',$ref->{originInfo}->{dateIssued}); marc_single($m_cache,'210');