--- trunk/parse_format.pm 2003/07/04 23:29:27 67 +++ trunk/parse_format.pm 2003/07/13 13:22:50 90 @@ -46,9 +46,10 @@ my $swish; sub cnv_cp { - my $tmp = shift; + my $codepage = shift; + my $tmp = shift || return; if ($codepage) { - $tmp = $codepage->convert($tmp) || print STDERR "$1$2 = '$tmp' can't convert"; + $tmp = $codepage->convert($tmp) || print STDERR "iso: '$tmp' can't convert\n"; } return $tmp; } @@ -58,9 +59,9 @@ # this is EBSCO special to support numeric subfield in # form of 856#3 if ($format =~ s/^(\d\d\d)#*(\w?)//) { - my $tmp = get_sf($row,$1,$2,$i); + my $tmp = cnv_cp($codepage,get_sf($row,$1,$2,$i)); if ($tmp) { - $display .= $prefix.cnv_cp($tmp); + $display .= $prefix.$tmp; $swish .= $tmp." "; #print STDERR " == $tmp"; } @@ -69,9 +70,9 @@ # (as opposed to 010 and 011) so they are strictly listed # here } elsif ($format =~ s/^(1[01])//) { - my $tmp = get_sf($row,$1,undef,$i); + my $tmp = cnv_cp($codepage,get_sf($row,$1,undef,$i)); if ($tmp) { - $display .= $prefix.cnv_cp($tmp); + $display .= $prefix.$tmp; $swish .= $tmp." "; } $prefix = ""; @@ -104,6 +105,8 @@ my $i = shift; my $codepage = shift; + return if ($i > 0); # Excel doesn't support repeatable fields + my $out; my $out_swish;