MARC 21 Record Builder

December 2000

Network Development MARC Standards Office
Library of Congress


Table of Contents


ONIX Release 1.2 to MARC 21 (December 2000)

Since the input to the Batchload pre-process is MARC 21 data, MARC records must be created from the sequential file data. A MARC record consists of a leader, a directory, control fields, and variable fields.

MARC Leader

Byte Offset Field

0-4

record length
    Five numeric characters equal to the total number of bytes in the logical record. The number is right-justified with leading zeros. The minimum length is 124 and the maximum is 16,000.
5 record status
    will always use the default value of 'n' (new record)
6 type of record
    If tag = ProductForm or b012
      Media type = first character of the data in value
    Media type Type of record
    a (audio) i (non-musical sound recording)
    b (book) a (language material)
    c (map) e (map)
    d (digital) m (computer files)
    f (film) g (projected media)
    v (video) g (projected media)
    w(mixed) p(mixed materials)
    If media type = 'p'
      If second character = 'i' (sheet music)
        Type of record = 'c' (printed music)
    If the media type is not found in the above list, set the type of record to 'a'.
7 bibliographic level

    If any of the following fields are present for the item, it signifies the item is a series, so set the bib level to 's' (serial).

    Tag name Description
    SeriesISSN or b016 ISSN of series
    PublisherSeriesCode or b017 Publisher series code
    TitleOfSeries or b018 Title of series
    ItemNumberWithinSeries or b019 Number within series
    YearOfAnnual or b020 Year of annual

    If none of the above items are found for the product, set the bib level to 'm' (monograph).

8-9 blanks
10 indicator count
    '2' -- indicates each variable field contains two indicators
11 subfield count
    '2' -- indicates each subfield code is two characters in length
12-16 base address
    Five numeric characters equal to the length of the leader plus the record directory (including field terminator). The number is right-justified with leading zeros.
17 encoding level
    will always use the default value of '2' (less than full, material not examined)
18 descriptive cataloging form
    will always use the default value of ' ' (item is not cataloged according to ISBD)
9 blank
20 '4'
21 '5'
22 blank
23 '0'


MARC Record Directory

Record directory entries contain the field tag, length, and starting position for each fixed and variable field in the record. The starting position is expressed as the byte offset from the first character following the record directory field terminator.

Byte Offset Field
0-2 tag
    Three-character numeric symbol identifies the field.
3-6 field length
    Four numeric signify the number of characters in the field; includes the indicators, subfield codes, data, and a field terminator. Right-justified with leading zeros.
7-11 starting character position
    Five numeric characters signify the position in the record of the first byte of the field (related to the base address given in bytes 12-16 of the record leader).


MARC Record Control Fields

The control fields include data useful for record selection or special processing. All MARC records created must contain the 001 and 008 fields.

Tag Description
001 control number
    Contains the record reference number, which is the data in the value field when the tag = 'RecordReference' or 'a001'
007 physical characteristics
007 contains information about the physical characteristics of an item in a coded form and varies depending on the product type. Not all products use an 007.

007 has no indicators or subfields codes; the data elements are postionally defined by category of material. All uncoded bytes are coded with the fill character ( | ), indicating that the cataloging agency has made no attempt to code the position.

If ProductForm = 'ca', 'cb', 'cc', 'cd', 'cz' (Map)
( ProductForm data was obtained when building the type of record.)

      byte 00 - category of material
        a (map)
      byte 01 - specific material designation (SMD)
        j (map)
      byte 02 - undefined
        blank (#)
      byte 03 - color
        blank
      byte 04 - physical medium
        fill character ( | )
      byte 05 - type of reproduction
        fill character ( | )
      byte 06 - production/reproduction details
        fill character ( | )
      byte 07 - positive/negative aspect
        fill character ( | )
    If ProductForm = 'ce' (Globe)
      byte 00 - category of material
        d (globe)
      byte 01 - specific material designation (SMD)
        u (unspecified)
      byte 02 - undefined
        blank (#)
      byte 03 - color
        blank
      byte 04 - physical medium
        fill character ( | )
      byte 05 - type of reproduction
        fill character ( | )
    If ProductForm = 'fa', 'fc', 'fd', 'fz' (Projected Graphics)
      byte 00 - category of material
        g (projected graphics)
      byte 01 - specific material designation (SMD)
        If 'fc'
          's' (slide)
        Else if 'fd'
          't' (transparency)
        Else
          'u' (unspecified)
      byte 02 - undefined
        blank (#)
      byte 03 - color
        u (unknown)
      byte 04 - base of emulsion
        fill character ( | )
      byte 05 - sound on medium or separate
        fill character ( | )
      byte 06 - medium for sound
        fill character ( | )
      byte 07 - physical medium
        fill character ( | )
      byte 08 - secondary support material
        fill character ( | )
    If ProductForm = 'fb' (Motion Pictures)
      byte 00 - category of material
        m (motion picture)
      byte 01 - specific material designation (SMD)
        r (film reel)
      byte 02 - undefined
        blank (#)
      byte 03 - color
        u (unknown)
      byte 04 - motion picture presentation format
        fill character ( | )
      byte 05 - sound on medium or separte
        fill character ( | )
      byte 06 - medium for sound
        fill character ( | )
      byte 07 - dimensions
      If tag = 'MeasureTypeCode' or 'c093'
        If value of 'MeasureTypeCode' = '02' (width)
          If 'MeasureUnitCode' or 'c095' not = 'mm'
            dimension = 'u' (unknown)
          Else
            Measurement Dimension
            standard 8 a
            super8/single 8 b
            9.5 c
            16 d
            28 e
            35 f
          end
        end
      end
      byte 08 - configuration of playback channels
        fill character ( | )
      byte 09 - production elements
        fill character ( | )
    If ProductForm = 'ma', 'mb', 'mc', 'mz' (microform)
      byte 00 - category of material
        h (microform)
      byte 01 - specific material designation (SMD)
        If 'mb' 'e' (microfiche)
        Else if 'mc'
          'd' (microfilm reel)
        Else
          'u' (unspecified)
      byte 02 - undefined
        blank (#)
      byte 03 - positive/negative aspect
        u (unknown)
      byte 04 - dimensions
        u (unknown)
      byte 05 - reduction ratio range
        fill character ( | )
      byte 06-08 - reduction ratio
        fill character ( | )
      byte 09 - color
        fill character ( | )
      byte 10 - emulsion on film
        fill character ( | )
      byte 11 - generation
        fill character ( | )
      byte 12 - base of film
        fill character ( | )
    If ProductForm = 'va', 'vb', 'vc', 'vd', 've', 'vf', 'vz' (videorecordings)
      byte 00 - category of material
        v (videorecording)
      byte 01 - specific material designation (SMD)
        If 'vf'
          'c' (videodisc)
        Else if 'vb', 'vc', 'vd', 've'
          'd' (videocartridge)
        Else
          'u' (unspecified)
      byte 02 - undefined
        blank (#)
      byte 03 - color
        u (unknown)
      byte 04 - videorecording format
        If 'vd' or 've'
          'a' (Beta)
        Else if 'vb' or 'vc'
          'd' (VHS)
        Else 'u' (unknown)
      byte 05 - sound on medium or separate
        fill character ( | )
      byte 06 - medium for sound
        fill character ( | )
      byte 07 - Dimensions
        u (unknown)
      byte 08 - configuration of playback channels
        fill character ( | )
008 For all type of records build the 008 as follows:
bytes1-5

blank

byte 6 type of date
The date of publication, if included, will be sent for the product with the tag
= 'PublicationDate' or 'b003'.
'n', if the date of publication is not supplied.
's', if the date of publication is supplied
bytes 7-10

date 1
if byte 6 = 's', the year from the date of publication
(date of publication can be formatted as YYYY, YYYYMM, or YYYYMMDD.)

bytes 11-21 blank
bytes 24-34 blank
bytes 35-37 language
The language will be stored as the 'value' when the tag = 'LanguageOfText' or 'b059'. (ONIX uses the ISO 639-2B standard for language codes. )

If book, computer file, music, or visual material

While there are other combinations, based on the values previously defined in this document, these are defined here as book (type = a, bib level = m), computer file (type = m, bib level = m), music (type = c, bib level = m), and visual material (type = g, bib level = m).

byte 22

target audience
The audience can be transmitted as either the AudienceCode or b073 or the USSchoolGrades or b189.

If AudienceCode is transmitted, use the following table to build the target audience.

AudienceCode
Target Audience
01 (general) g (general)
03 (young adult) d (secondary, senior high)
04 (primary) j (juvenile)
06 (professional) f (specialized)
any other value ' ' (unknown)

If USSchoolGrades is transmitted, use the following table to build the target audience.

US SchoolGrades Target Audience
to 8 j (juvenile)
9 to 12 d (secondary)
any other value ' ' (unknown)

US SchoolGrades to 8 - Can be any of the formats -- 'from n1 to n2', 'to n', or 'n', where n1 is (P,K,1,2,3,4,5,6,7), n2 is (1,2,3,4,5,6,7,8), and n is (P,K,1,2,3,4,5,6,7,8). P can also be transmitted as pre-school and K can also be transmitted as kindergarten.

US SchoolGrades 9 to 12 - Can be any of the formats -- from n1 to n2 or n, where n1 is (9,10,11), n2 is (10,11,12), and n is (9,10,11,12).

If neither AudienceCode nor USSchoolGrades is transmitted, the target audience is blank.

If map, serial, or mixed material

When there are other combinations, based on the values previously defined in this document, these are defined here as maps (type = e, bib level = m), serial (type = a, bib level = s), and mixed material (type = p, bib level = m).

byte 22 blank

If book, music, serial, or mixed material
byte 23 form of item
If tag = ProductForm or b012
    If value = 'MB' (microfiche)
      form of item = 'b'
    else if value = 'MC' (microfilm)
      form of item = 'a'
    else
      form of item = ' '
If computer file, map, or visual material
byte 23 blank


MARC Record Variable Fields

Variable fields consist of variable-length alphanumeric data and differ in content for each record. The first two bytes in each field will be the indicators. All fields end with a field terminator. The last field is followed by both a field terminator and a record terminator. Each variable field is identified by a three-character numeric tag in the record directory.

 
Tag Description
010 LCCN
    Both indicators are blank.
    $a LCCN

      The LCCN is formatted as follows:

      Byte Offset Description
      00-01 alphabetic prefix (left-justified, blank fill)
      02-05 year of cataloging
      06-11 number (right-justified, zero fill)


      LCCN's will be formatted according to the new rules that will be in effect as of January 1, 2001. See www.loc.gov/marc/lccn.html for more information

      Any hyphens in the data transmitted must be removed.
      *** Not being transmitted as part of ONIX at this time ***

020

ISBN

    Both indicators are blank.
    $a ISBN
      If tag = 'ISBN or 'b004'
        ISBN = value of 'ISBN'
    ISBNs are validated according to the following rules:
  • any hyphens in the data transmitted by the vendors must be removed
  • must be ten characters
  • bytes 1-9 must be numeric
  • byte 10 is a check digit, which must 0-9 or an 'x' and pass the check digit validation routine.
  • any ISBN which is invalid including the check digit test will be moved to $z.
022 ISSN
    Both indicators are blank.
    $a ISSN
      If tag = 'SeriesISSN' or 'b16'
        Standard number = value of 'SeriesISSN'
      • Any hyphens transmitted are removed
      • Must be 8 numeric digits
      • Any ISSN which is invalid will be moved to $ z.
024 Other Standard Identifier
    Indicator 1
      1 - Universal Product Code (UPC)
      2 - International Standard Music Number (ISMN)
      3 - International Article Number (EAN)
    Indicator 2 = blank
    $a standard number
    If tag = 'UPC' or b006'
      Standard number = value of 'UPC'
    • UPC
      • Must be 12 characters
      • Bytes 1-11 must be numeric
      • byte 10 is a check digit, which must 0-9 or an 'x' and pass the check digit validation routine.
      • Any UPC which is invalid including the check digit test will be moved to $ z

    Else if tag = 'ISMN' or b008'

      Standard number = value of 'ISMN'
    • ISMN
      • Must be 10 characters
      • Byte 1 must be 'M'
      • bytes 2-10 must be numeric
      • Any ISMN which is invalid will be moved to $ z

    Else if tag = 'EAN13' or b005'

      Standard number = value of 'EAN13'
    • EAN
      • Must be 13 characters
      • bytes 1-13 must be numeric
      • Any EAN which is invalid will be moved to $ z
050 LC Call Number
    Both indicators are blank
    $ a classification number
    If tag = ('SubjectSchemeCode' or 'b067') and value = '03' (LC class number)
      If tag = 'SubjectHeadingText' or 'b070'
        Class number = value of 'SubjectHeadingText'
082 Dewey Call Number
    Both indicators are blank
    $a classification number
      If tag = ('SubjectSchemeCode' or 'b067') and value = '01' (Dewey)
        If tag = 'SubjectHeadingText' or 'b070'
          Class number = value of 'SubjectHeadingText'
100

Personal Name Main Entry

If more than one personal name data is sent, the first one will be used to build the 100 field. A separate 700 field will be created for each subsequent personal name transmitted.

    Indicator 1 = depends on the data content. If only the last name is provided, indicator 1 is 0 (forename). If the last and first names are both provided, indicator 1 is 1 (single surname) Indicator 2 = blank
    $ a personal name
    In ONIX personal names can be sent in three different manners.
    • unstructured ('PersonName' or 'b036'), e.g., Edgar Allen Poe
    • inverted ('PersonNameInverted' or 'b037'), e.g., Poe, Edgar Allen
    • separate
      • titles before name ('TitlesBeforeNames' or 'b038')
      • names before key name ('NamesBeforeKey' or 'b039'), e.g., Edgar Allen
      • key name ('KeyNames' or 'b040'), e.g., Poe
      • names after key name ('NamesAfterKey' or 'b041')
      • letters after name ('LettersAfterNames' or 'b042')
      • titles after name ('TitlesAfterNames' or 'b043')
    If the inverted name is sent
      Personal name = data in the value field.
    Else if the name components are sent separately
      Personal name is built as follows:
      • key name data in the value field
      • if names before key name present, append a comma (,) after the key name followed by the before key name data

    Else if unstructured name is sent
    If multiple names are transmitted, move the data for the first name to the 100 and subsequent names to the 700 field.

    $b numeration
    If tag = 'NamesAfterKey' or 'b041'

      If KeyName transmitted without 'NamesBeforeKey'
        If 'NamesAfterKey' value contains a Roman numeral
          Numeration = value of 'NamesAfterKey'

    $c Titles
    If tag = ('TitlesBeforeNames' or 'b038') or
      ('TitlesAfterNames' or 'b043')

    Titles = value of 'TitlesBeforeNames' or 'TitlesAfterNames'
    If multiple titles are transmitted, enter in separate $ c.

    $u affiliation
    If tag = 'Affiliation' or 'b046'

    affiliation = value of 'Affiliation'

110

Corporate Name Main Entry

If more than one corporate name data is sent, the first one will be used to build the 110 field. A separate 710 field will be created for each subsequent personal name transmitted. If there is a 100 field present, create only the 710 field with this data.
    The indicators are 2 and blank.
    $a corporate name
    If tag = 'CorporateName' or 'b047'
      Corporate name = value of 'CorporateName'
111

Meeting Name Main Entry

Create only a 711 field with this data.

    The indicators are 2 and blank.
    $a meeting name
    If tag = ('ConferenceDescription' or 'b050') or ('ConferenceName' or 'b052')
      Meeting name = value of 'ConferenceDescription' or 'ConferenceName'

    $c location of meeting
    If tag = 'ConferencePlace' or 'b055'
      Location = value of 'ConferencePlace'

    $d date of meeting
    If tag = 'ConferenceDate' or 'b054'
      Date = value of 'ConferenceDate'

    $n number of meeting
    If tag = 'ConferenceNumber' or 'b053'
      number = value of 'ConferenceNumber'
245 Title
    If a 1xx field is present
      First indicator is 1
    Else
      First indicator is 0
    Second indicator is the number of nonfiling characters present.
      The second indicator value is calculated by counting the number of characters in the initial articles plus any spaces, punctuation, and diacritics that precede the first significant word. The language in the bytes 35-37 of the 008 will be used to determine what is a valid initial article.
      $a title
      The title can be transmitted as either the full title or as the prefix and main title
        If tag = 'DistinctiveTitle' or 'b028'
          title = value of 'DistinctiveTitle'
          set 2nd indicator to the number of characters in the initial article of the title, if any.
        Else if tag = ('TitlePrefix' or 'b030') or ('TitleWithoutPrefix' or 'b031')

          Title = value of 'TitlePrefix' followed by value of 'TitleWithoutPrefix'
          Set 2nd indicator to number of characters in 'TitlePrefix' + 1
          (
          The additional byte is to account for the blank between the prefix and title. )

      $b subtitle
      If tag = 'Subtitle' or 'b029'
        subtitle = value of 'Subtitle'
      (Some companies will imbed the subtitle as part of the title. If a colon (:) is found in the title, copy the text after the colon into the subtitle. The colon remains with the data in $a.)
247 Former Title
    Both indicators are 0.
    $a title
    If tag = 'FormerTitle' or 'b033'
      title = value of 'FormerTitle'
    $b subtitle
    Some companies will imbed the subtitle as part of the title. If a semi-colon (:) is found in the title, copy the text after the semi-colon into the subtitle.
250 Edition
    Both indicators are blank.
    $a edition statement
    The edition statement can be transmitted as either a number or statement.
    If tag = 'EditionNumber' or 'b057'
      Edition statement = value of 'EditionNumber'
    Else if tag = 'EditionStatement' or 'b058'
      Edition statement = value of 'EditionStatement'
    $b remainder of edition statement
    Some companies may include the remainder of the edition as part of the edition statement. If a comma (,) is detected in the edition statement, move the data after the comma to subfield $b.
260 Imprint
    The indicators are both blank.
    $a place of publication
    If tag = 'CityOfPublication' or 'b209'
      Place of publication = value of 'CityOfPublication'
    $b publisher name
    If tag = 'PublisherName' or 'b081'
      Publisher name = value of 'PublisherName'
    $c date of publication
    If tag = 'PublicationDate' or 'b003'
      The PublicationDate can be YYYY, YYYYMM, or YYYYMMDD.
      Publication date = the YYYY portion of 'PublicationDate'
300 Physical Description
    The indicators are both blank.
    $a extent
    If tag = 'NumberOfPages' or 'b061'
      extent = value of 'NumberOfPages'
      (Number of pages is a very arbitary value and its accuracy varies greatly between companies. The ONIX conversion software will always build a 300 $a, but the evaluation of the source may cause the set-up to move this data to a different field so it will not be part of the matching.)
    $b other physical details
    If tag = 'IllustrationsNote' or 'b062'
      other = value of 'IllustrationsNote'
    $c dimensions
    If tag = 'MeasureTypeCode' or 'c093'
      If value of 'MeasureTypeCode' = '01' (height)
        Height = value of 'Measurement' or 'c094' appended by value of 'MeasureUnitCode' or 'c095'
      Else if value of 'MeasureTypeCode' = '02' (width)
        width = value of 'Measurement' or 'c094' appended by value of 'MeasureUnitCode' or 'c095'
      end if
      dimensions = height 'x' width
      If the width is not present, do not include the 'x'.
440 Series statement
    First indicator is blank.
    Second indicator is the number of nonfiling characters present.
      The second indicator value is calculated by counting the number of characters in the initial articles plus any spaces, punctuation, and diacritics that precede the first significant word. The language in the bytes 35-37 of the 008 will be used to determine what is a valid initial article.

    $a title
    If tag = 'TitleOfSeries' or 'b018'
      title = value of 'TitleOfSeries'
      set 2nd indicator to the number of characters in the initial article of the title, if any.

    $v volume number
    If tag = 'ItemNumberWithinSeries' or 'b019'
      Volume number = value of ' ItemNumberWithinSeries'

    $x ISSN
    If tag = 'SeriesISSN' or 'b016'
      ISSN = value of 'SeriesISSN'
505 Table of Contents
    The first indicator is 0, the second is blank

    If tag = 'TextTypeCode' or 'd102' If value of 'TextTypeCode' = '04'

    $a contents
      contents = value of 'Text' or 'd104'

    $r statement of responsibility
      statement of responsibility = value of 'TextAuthor' or 'd107'

    $t title
      title = value of 'TextSourceTitle' or 'd108'
520 Summary Note
    See below for the 1st indicator
    The 2nd indicator is blank

    If tag = 'TextTypeCode' or 'd102'
      If value of 'TextTypeCode' = '07' or '08' or '10'
        1st indicator = '1' (review)
      Else if value of 'TextTypeCode' = '32'
        1st indicator = '2' (summary)
      end if
    else
      if tag = ('MainDescription' or 'd101') or ('Annotation' or 'd100')
        1st indicator = '2' (summary)
      end if
    end if
      $a contents
        contents = value of ('Text' or 'd104') or ('MainDescription' or 'd101')

      $r statement of responsibility
        statement of responsibility = value of 'TextAuthor' or 'd107'
        (Statement of responsibility and title are only valid if the contents data is transmitted in the 'TextTypeCode'. )

      $t title
        title = value of 'TextSourceTitle' or 'd108'
521 Target Audience Note
    The indicators are both blank.
    $a target audience
    If tag = 'USSchoolGrades' or 'b189'
      Target audience = value of 'USSchoolGrades'
545

Biographical Note

    Both indicators are blank
    $a biographical note
    If tag = 'TextTypeCode' or 'd102'
      If value of 'TextTypeCode' = '13'
        Biographical note = value of 'Text' or 'd104'
586 Awards Note
    Both indicators are blank
    $a awards note
    If tag = 'PrizesDescription' or 'g124'
      Awards note = value of 'PrizesDescription' or 'g124'
    Else if tag = 'PrizeName' or 'g126'
      Awards note = value of 'PrizeName' or 'g126'
      If tag = 'PrizeYear' or 'g127'
        Append after the existing awards note a comma (,) followed by the value of 'PrizeYear'
650 Subject Added Entry -- Topical Term
    Both indicators 0
    $a topical term
    If tag = ('SubjectSchemeCode' or 'b067') and value = '04' (LC subject heading)
      If tag = 'SubjectHeadingText' or 'b070'
        Topical term = value of 'SubjectHeadingText'
700 Added entry, personal name
    The rules for the 700 field are the same as what is defined for the 100.
710 Added entry, corporate name
    The rules for the 710 field are the same as what is defined for the 110.
711 Added entry, meeting name
    The rules for the 711 field are the same as what is defined for the 111.
856

Electronic Location and Access

Repeat field 856 to record more than one URL.

      1st indicator depends on the data transmitted
      2nd indicator is blank

      $u uniform resource locator
      If tag = 'TextLinkType' or 'd105'
        If value = '01' (URL) or '03' (PURL) or '04' (URN) or '05' (ftp)
          If tag = 'TextLink' or 'd106'
            url = value of 'TextLink'
            if 'TextLinkType' value = '05'
              1st indicator = '1'
            else
              1st indicator = '4'
            end if
          end if
        end if
      end if
      If tag = 'CoverImageLinkTypeCode' or 'f112'
        If value = '01' (URL) or '03' (PURL) or '04' (URN) or '05' (ftp)
          If tag = 'CoverImageLink' or 'f113'
            url = value of 'CoverImageLink'
            $z public note = 'cover image'
            if 'CoverImageLinkType' value = '05'
              1st indicator = '1'
            else
              1st indicator = '4'
            end if
          end if
        end if

      end if

      If tag = 'MediaFileLinkTypeCode' or 'f116'

        If value = '01' (URL) or '03' (PURL) or '04' (URN) or '05' (ftp)
          If tag = 'MediaFileLink' or 'f117'
            url = value of 'MediaFileLink'
            $z public note
            evaluate tag = 'MediaFileTypeCode'
              when '04' public note = 'front cover image'
              when '07' public note = 'front cover thumbnail'
              when '08' public note = 'contributor image'
              when '10' public note = 'series image'
              when '17' public note = 'publisher logo'
              when '18' public note = 'imprint logo'
              when '23' public note = 'inside page image'
              when '30' public note = 'audio segment'
            if 'MediaFileLinkTypeCode' value = '05'
              1st indicator = '1'
            else
              1st indicator = '4'
            end if
          end if
        end if
      end if
      If tag = 'ProductWebsiteLink' or 'f123'
        url = value of 'ProductWebsiteLink'
        $z public note = 'publisher's website for product'
        1st indicator = '4'
      end if

Top of Document


Go to: MARC 21 Mapping to ONIX | MARC Home Page | Library of Congress Home Page


Library of Congress Library of Congress
Library of Congress Help Desk ( 02/07/2005 )