12 my $class = ref($proto) || $proto;
16 $self->{CAPTIONS} = {};
17 foreach my $caption ($rec->field('853')) {
19 $cap_id = $caption->subfield('8') || '0';
20 if (exists $self->{CAPTIONS}->{$cap_id}) {
21 carp "Multiple unlabelled MFHD captions";
23 $self->{CAPTIONS}->{$cap_id} = new MFHD::Caption($caption);
26 $self->{HOLDINGS} = {};
27 foreach my $holding ($rec->field('863')) {
29 my ($link_id, $seqno);
31 $linkage = $holding->subfield('8');
32 ($link_id, $seqno) = split(/\./, $linkage);
34 if (!exists $self->{HOLDINGS}->{$link_id}) {
35 $self->{HOLDINGS}->{$link_id} = {};
37 $self->{HOLDINGS}->{$link_id}->{$seqno} =
38 new MFHD::Holding($seqno, $holding, $self->{CAPTIONS}->{$link_id});
41 bless ($self, $class);
48 return sort keys %{$self->{CAPTIONS}}
55 return sort {$a->{SEQNO} cmp $b->{SEQNO}} values %{$self->{HOLDINGS}->{$capid}};