my @fields = $record->field($tag);
if (@fields) {
for my $field (@fields) {
- unless ( defined $field->subfield($subfield) ) {
+ if ( $field->is_control_field ) {
+ $field->update($defaultvalue) if not defined $field->data;
+ }
+ elsif ( not defined $field->subfield($subfield) ) {
$field->add_subfields(
$subfield => $defaultvalue );
}
}
}
else {
- $record->insert_fields_ordered(
- MARC::Field->new(
- $tag, '', '', $subfield => $defaultvalue
- )
- );
+ if ( $tag < 10 ) { # is_control_field
+ $record->insert_fields_ordered(
+ MARC::Field->new(
+ $tag, $defaultvalue
+ )
+ );
+ }
+ else {
+ $record->insert_fields_ordered(
+ MARC::Field->new(
+ $tag, '', '', $subfield => $defaultvalue
+ )
+ );
+ }
}
}
}
'GetMarcStructure',
sub {
{
+ # default for a control field
+ '008' => {
+ x => { defaultvalue => $default_x },
+ },
+
# default value for an existing field
'245' => {
c => { defaultvalue => $default_author },
$record->leader('03174nam a2200445 a 4500');
my @fields = (
MARC::Field->new(
+ '008', '1', ' ',
+ '@' => '120829t20132012nyu bk 001 0ceng',
+ ),
+ MARC::Field->new(
100, '1', ' ',
a => 'Knuth, Donald Ervin',
d => '1938',