I have once again updated my error checking modules. I believe I have finished adding most of the new checks I wanted, though I have a few in mind still. Among these, rewriting the 007 and 008 validation subroutines, adding 006 validation, additional punctuation checks (before title subfields in 6xx and 7xx), check for underscores in fields (should not appear unless they stand for the subfield delimiter), and geographic coding in 6xx vs. topical coding, using a list of common geographic headings (e.g. if United States appears in 650 subfield a, then error).
I am also working on a global subject heading replacement program, in conjunction with my LCSH Weekly List Changes Parser. I am considering distributing my modules (and scripts--probably in the same tar.gz file) on CPAN, once I figure out how to do so (in an easy manner using MacPerl). Before I do this, I am thinking my MARC::BBMARC module may need a new name. Right now it is just named BBMARC for my initials+MARC. It is a collection of functions with little in common, other than that they help my MARC related .pls and .pms function. I should probably move the validate007 and 008 functions to Lintadditions.pm and Errorchecks.pm, making those modules more self-contained. Would it be advisable to change BBMARC's name, and if so, do you have suggestions for a new name? Changes: (Aug. 22, 2004): Module updates: Errorchecks.pm (http://home.inwave.com/eija/bryanmodules/): Version 1.02: Updated Aug. 11-22, 2004. Released Aug. 22, 2004. -Implemented VERSION (uncommented) -Added check for presence of 040 (check_040present($record)). -Added check for presence of 2 082s in full-level, 1 082 in CIP-level records (check_082count($record)). -Added temporary (test) check for trailing punctuation in 240, 586, 440, 490, 246 (check_nonpunctendingfields($record)) --which should not end in punctuation except when the data ends in such. -Added check_fieldlength($record) to report fields longer than 1870 bytes. --This should be rewritten to use the length in the directory of the raw MARC. -Fixed workaround in check_bk008_vs_bibrefandindex($record) (Thanks again to Rich Ackerman). Lintadditions.pm (http://home.inwave.com/eija/bryanmodules/): Version 1.04: Updated Aug. 10-22, 2004. Released Aug.22, 2004. -Implemented VERSION (uncommented) -Revised check_050 exception (Thank you to all who posted about this). -Moved VERSION HISTORY to end of module. -Added preliminary checking of 245 2nd indicator in check_245 (Thanks to Ian Hamilton). BBMARC.pm (http://home.inwave.com/eija/bryanmodules/): Version 1.06: Updated Aug. 10-22, 2004. Released Aug. 15, 2004. -Implemented VERSION (uncommented) -Added subroutine getcontrolstocknos() -General readability cleanup (added tabs) -Bug fix in validate008 for date2 check Planned (next release): -Cleanup of validate008 (and validate007) --Standardization of error reporting --Material specific byte checking (bytes 18-34) abstracted to allow 006 validation. Added and changed scripts: -Updated LCSH Changes Parser script, LCSHchangesparser2.txt (http://home.inwave.com/eija/inprocess/LCSHchangesparser2.txt): --Adds 500 to tag number if it is 1xx, so that it becomes 600-655, in preparation for use in global replacement. --Misc. fixes. -lintwithadditionsselective.txt (http://home.inwave.com/eija/fullrecscripts/lintwithadditionsselective.txt) --Similar to lintwithadditions, but designed to call only specific check_xxx functions in either MARC::Lint or MARC::Lintadditions. --This has been tested only minimally, but may see future use as a basis for test files. ---------------------------------- As usual, I welcome comments, suggestions, questions, etc. Thank you for your assistance, Bryan Baldus Cataloger Quality Books, Inc. [EMAIL PROTECTED] http://home.inwave.com/eija