[librecat-dev] sorting MARC fields
Patrick Hochstenbach
Patrick.Hochstenbach at UGent.be
Thu Jul 13 14:16:50 CEST 2017
Can you create an issue for this and explain how you would like to see the MARC ordering implemented?
I’m now on a vacation for the next month and am busy to clean my inbox :)
> On 13 Jul 2017, at 12:47, Uldis Bojars <captsolo at gmail.com> wrote:
>
> On 13 July 2017 at 12:13, Patrick Hochstenbach <Patrick.Hochstenbach at ugent.be> wrote:
> There is no sorting of MARC fields in the Fix language. One can add fields by `marc_add` fixes. The order of the new fields is in the order you execute the marc_add commands.
>
> I am still trying to understand if sorting is needed (in our use case, at least):
>
> One place where the MARC spec mention field order is this: "Control fields precede data fields in the record and are arranged in the same sequence as the corresponding entries in the directory."
>
> https://www.loc.gov/marc/specifications/specrecstruc.html
>
> If we assume that this is true and control fields should come before data fields, then adding control fields using 'marc_add' would result on MARC data that violate this assumption.
>
> A quick fix [to avoid the need for sorting] here would be to allow inserting new fields before "100" field (= after the last control field).
>
> With the marc_paste (the nephews of marc_copy and marc_cut) you can decide where in the record the new marc record should be pasted:
>
> # Paste mycopy after the last 300 field
> marc_paste(mycopy, at:300)
>
> https://metacpan.org/pod/Catmandu::Fix::marc_paste
>
> This is a cool feature! :)
>
> What would happen if there are no "300" fields in the record?
>
> In general there is no condition how MARC records could be sorted. Marc tags can be repeated:
>
> 500 $aZorro, this is my First note
> 500 $aAlso a nice not, but not the first
> 500 $aWell this is the last note
>
> Sorting the notes will result in errors in the catalogging. MARC is not a table or database format but markup language ..
>
> Agreed. If sorting were to be implemented it would need to preserve the order of the existing fields that have the same code.
>
> Uldis
>
> > On 13 Jul 2017, at 10:25, Uldis Bojars <captsolo at gmail.com> wrote:
> >
> > set_array(ok_fields, FMT, LDR,
> > 008, 040, 041, 075, 100,
> > 240, 245, 246, 260,
> > 377, 380, 388, 400, 490,
> > 600, 630, 650, 670, 677,
> > 700, 720, 908, 910)
> >
> > do marc_each()
> >
> > copy_field(record.0.0, fld_type)
> >
> > unless in(fld_type, ok_fields)
> > remove_field(record)
> > end
> >
> > remove_field(fld_type) # is this needed?
> >
> > end
> >
> > remove_field(ok_fields)
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.uni-bielefeld.de/mailman2/unibi/public/librecat-dev/attachments/20170713/17bc2aa3/attachment.asc>
More information about the librecat-dev
mailing list