I have been having some problems with a client's catalogue that contains quite a few corrupt MARC records. These are for the most part records that have been kicking around since as long ago as 1965, and that have been transferred between various systems and converted between different formats over the years.

The common problem seems to be that the values for the length of a field in the directory no longer matches the length of the data that is actually in that field, and hence the record length does not match what is in the leader. The difference is typically one character in one field and may be related to what were once hidden control characters or blanks at the end of a formatted line during the data conversion to MARC a number of years ago. The records can be searched and displayed (e.g. within the client's ILS), and they can even updated within the ILS, so they are useful, but they can't be updated and written by MARC::Record. This creates problems when doing large scale global changes.

My thought on how to deal with this would be to read in sequence each field of the offending record, and readjust field lengths, based on the shorter of (a) the value in the field length in the directory, or (b) the actual string in the field up to the field separator character. As you went through the record, you would readjust the index into the data section as you came across an inconsistent field length. The worst that could happen is that a few characters might be lost from the end of a field, but at the end of the process the record would be "clean" again. I would suspect it would still need a human eye to scan over it to ensure that no egregious errors were introduced, but this would be a lot easier than trying to identify the offending field, manually deleting the field, and the re-entering it again.

I wondered if any of you had run into similar problems, or if you had any thoughts on how to tackle this particular issue.

Thanks in advance,

Ron


Ron Davies
Information and documentation systems consultant
Av. Baden-Powell 1 Bte 2, 1200 Brussels, Belgium
Email: ron(at)rondavies.be
Tel: +32 (0)2 770 33 51
GSM: +32 (0)484 502 393

Reply via email to