On Sep 28, 2007 3:16 PM, Bryan Baldus <[EMAIL PROTECTED]> wrote: > A recent posting on the OCLC-CAT discussion list ("Help needed de-duping, > editing and exporting a raw MARC file with Connexion") mentions difficulty > the poster is experiencing with using records with too many 949 fields for > MarcEdit to load. This led me to attempt to create a test MARC file to see > if I could replicate the problem. In the process, I believe I may have found > a problem with the way MARC::Record updates the leader for the record > length. Starting with a file containing a minimal raw MARC record (leader, > 001 of '1', 008, and 245 of '.'), I ran the file through the loop: > > while (my $record = $batch->next()) { > for my $fieldno (0..4810) { #where 4810 was the approximate number > of fields needed to push the record length past 99999 > my $new_field = MARC::Field->new('949', '', '', a => > "$fieldno"); > $record->append_fields($new_field); > } #for fields > > print OUT $record->as_usmarc(); #where OUT is an export file previously > opened > > } # while > > ################################ > > The output file shows the start of the leader as "100032pam 22577931." > MARC::Record::set_leader_lengths has a line "substr($self->{_leader},0,5) = > sprintf("%05d",$reclen);". Is this supposed to limit the $reclen to 5 > characters, or does sprintf "%05d" simply append the necessary 0s to make > sure the length is at least 5 digits? Since a record length over 99999 is > impossible, it might be good to have MARC::Record complain about exceeding > the record size limit if the $reclen > 99999, and to not exceed 5 characters > when setting the record length. > > Please correct me if I am wrong. Thank you for your assistance, >
You're right on. I've updated MARC::Record in CVS to warn (carp) on this condition. When ever 2.0.1 comes out this will be included. I'm inclined to turn this into a hard exception (croak) if I that's the consensus. OT: Since they were right next door, I also adjusted the regrexp's that test the requested encoding to make them a little more lax about how you spell UTF-8 and MARC-8. -- Mike Rylander | VP, Research and Design | Equinox Software, Inc. / The Evergreen Experts | phone: 1-877-OPEN-ILS (673-6457) | email: [EMAIL PROTECTED] | web: http://www.esilibrary.com