Not long after posting that I started using some existing libraries for parsing marc records, but found some interesting things in the records that didn’t fit with the libraries, like alphanumeric tags. Not only that, but it seemed that the format looked very general for just library use so I dug through the layers a bit. This sometimes feels like the computing equivalent of archeology, looking for artefacts that indicate the history of the code. For example, whenever you see the EBCDIC character encoding you may well find an IBM mainframe used to lurk around there some time ago.
Only a little digging led me to two equivalent standards, ISO2709 and ANSI/NISO Z39.2 (pdf). For those familiar with Z39.50 it should be no surprise that there was also a Z standard for the interchange format that underpins MARC.
Like the US Constitution, the forefathers of our domain helped develop and implement these standards in a spirit of freedom and openness that has allowed many to share knowledge widely over the decades since. That’s why I work for Talis.