<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.4//EN"
 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"
[
     <!ENTITY % local SYSTEM "local.ent">
     %local;
     <!ENTITY % entities SYSTEM "entities.ent">
     %entities;
     <!ENTITY % idcommon SYSTEM "common/common.ent">
     %idcommon;
]>
<refentry id="yaz-marcdump">
 <refentryinfo>
  <productname>YAZ</productname>
  <productnumber>&version;</productnumber>
  <orgname>Index Data</orgname>
 </refentryinfo>

 <refmeta>
  <refentrytitle>yaz-marcdump</refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo class="manual">Commands</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>yaz-marcdump</refname>
  <refpurpose>MARC record dump utility</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>yaz-marcdump</command>
   <arg choice="opt"><option>-i <replaceable>format</replaceable></option></arg>
   <arg choice="opt"><option>-o <replaceable>format</replaceable></option></arg>
   <arg choice="opt"><option>-f <replaceable>from</replaceable></option></arg>
   <arg choice="opt"><option>-t <replaceable>to</replaceable></option></arg>
   <arg choice="opt"><option>-l <replaceable>spec</replaceable></option></arg>
   <arg choice="opt"><option>-c <replaceable>cfile</replaceable></option></arg>
   <arg choice="opt"><option>-s <replaceable>prefix</replaceable></option></arg>
   <arg choice="opt"><option>-C <replaceable>size</replaceable></option></arg>
   <arg choice="opt"><option>-O <replaceable>offset</replaceable></option></arg>
   <arg choice="opt"><option>-L <replaceable>limit</replaceable></option></arg>
   <arg choice="opt"><option>-n</option></arg>
   <arg choice="opt"><option>-p</option></arg>
   <arg choice="opt"><option>-r</option></arg>
   <arg choice="opt"><option>-v</option></arg>
   <arg choice="opt"><option>-V</option></arg>
   <arg choice="opt" rep="repeat">file</arg>
  </cmdsynopsis>
 </refsynopsisdiv>

 <refsect1><title>DESCRIPTION</title>
  <para>
   <command>yaz-marcdump</command> reads MARC records from one or
   more files.
   It parses each record and supports output in line-format,
   ISO2709,
   <ulink url="&url.marcxml;">MARCXML</ulink>,
   <ulink url="&url.marc_in_json;">MARC-in-JSON</ulink>,
   <ulink url="&url.marcxchange;">MarcXchange</ulink>
   as well as Hex output.
  </para>
  <para>
   This utility parses records ISO2709(raw MARC), line format, MARC-in-JSON
   format as well as XML if that is structured as MARCXML/MarcXchange.
  </para>
  <para>
   MARC-in-JSON encoding/decoding is supported in YAZ 5.0.5 and later.
  </para>
  <note>
   <para>
    As of YAZ 2.1.18, OAI-MARC is no longer supported.
    OAI-MARC is deprecated. Use MARCXML instead.
   </para>
  </note>
  <para>
   By default, each record is written to standard output in a line
   format with newline for each field, $x for each sub-field x.
   The output format may be changed with option <literal>-o</literal>,
  </para>
  <para>
   <command>yaz-marcdump</command> can also be requested to perform
   character set conversion of each record.
  </para>
 </refsect1>

 <refsect1><title>OPTIONS</title>

  <variablelist>
   <varlistentry>
    <term>-i <replaceable>format</replaceable></term>
    <listitem><para>
      Specifies input format. Must be one of
      <literal>marcxml</literal>, <literal>marc</literal> (ISO2709),
      <literal>marcxchange</literal> (ISO25577),
      <literal>line</literal> (line mode MARC),
      <literal>turbomarc</literal> (Turbo MARC),
      or <literal>json</literal> (MARC-in-JSON).
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-o <replaceable>format</replaceable></term>
    <listitem><para>
      Specifies output format. Must be one of
      <literal>marcxml</literal>, <literal>marc</literal> (ISO2709),
      <literal>marcxchange</literal> (ISO25577),
      <literal>line</literal> (line mode MARC),
      <literal>turbomarc</literal> (Turbo MARC),
      or <literal>json</literal> (MARC-in-JSON).
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-f <replaceable>from</replaceable></term>
    <listitem><para>
      Specify the character set
      of the input MARC record.
      Should be used in conjunction with option <literal>-t</literal>.
      Refer to the yaz-iconv man page for supported character sets.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-t <replaceable>to</replaceable></term>
    <listitem><para>
      Specify the character set
      of the output.
      Should be used in conjunction with option <literal>-f</literal>.
      Refer to the yaz-iconv man page for supported character sets.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-l <replaceable>leaderspec</replaceable></term>
    <listitem><para>
      Specify a simple modification string for MARC leader. The
      <replaceable>leaderspec</replaceable> is a list of pos=value
      pairs, where pos is an integer offset (0 - 23) for leader. Value
      is either a quoted string or an integer (character value in decimal).
      Pairs are comma separated. For example, to set leader at offset 9
      to a, use <literal>9='a'</literal>.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-s <replaceable>prefix</replaceable></term>
    <listitem><para>
      Writes a chunk of records to a separate file with prefix given,
      i.e. splits a record batch into files with only at most
      "chunk" ISO2709 records per file. By default chunk is 1 (one record
      per file). See option <literal>-C</literal>.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-C <replaceable>chunksize</replaceable></term>
    <listitem><para>
      Specifies chunk size; to be used conjunction with option
      <literal>-s</literal>.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-O <replaceable>offset</replaceable></term>
    <listitem><para>
     Integer offset for at what position records whould be
     written. 0=first record, 1=second, .. With -L option, this
     allows a specific range of records to be processed.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-L <replaceable>limit</replaceable></term>
    <listitem><para>
     Integer limit for how many records should at most be written.
     With -O option, this allows a specific range of records to be
     processed.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-p</term>
    <listitem><para>
      Makes yaz-marcdump print record number and input file offset
      of each record read.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-n</term>
    <listitem><para>
      MARC output is omitted so that MARC input is only checked.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-r</term>
    <listitem><para>
      Writes to stderr a summary about number of records read by
      yaz-marcdump.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-v</term>
    <listitem><para>
      Writes more information about the parsing process.
      Useful if you have ill-formatted ISO2709 records as input.
     </para></listitem>
   </varlistentry>

   <varlistentry>
    <term>-V</term>
    <listitem><para>
      Prints YAZ version.
     </para></listitem>
   </varlistentry>

  </variablelist>
 </refsect1>

 <refsect1><title>EXAMPLES</title>
  <para>
   The following command converts MARC21/USMARC in MARC-8 encoding to
   MARC21/USMARC in UTF-8 encoding. Leader offset 9 is set to 'a'.
   Both input and output records are ISO2709 encoded.
   <screen>
    yaz-marcdump -f MARC-8 -t UTF-8 -o marc -l 9=97 marc21.raw >marc21.utf8.raw
   </screen>
  </para>
  <para>
   The same records may be converted to MARCXML instead in UTF-8:
   <screen>
    yaz-marcdump -f MARC-8 -t UTF-8 -o marcxml marc21.raw >marcxml.xml
   </screen>
  </para>

  <para>
   Turbo MARC is a compact XML notation with same semantics as
   MARCXML, but which allows for faster processing via XSLT. In order
   to generate Turbo MARC records encoded in UTF-8 from MARC21 (ISO), one
   could use:
   <screen>
    yaz-marcdump -f MARC8 -t UTF8 -o turbomarc -i marc marc21.raw >out.xml
   </screen>
  </para>
 </refsect1>

 <refsect1><title>FILES</title>
  <para>
   <filename><replaceable>prefix</replaceable>/bin/yaz-marcdump</filename>
  </para>
  <para>
   <filename><replaceable>prefix</replaceable>/include/yaz/marcdisp.h</filename>
  </para>
  </refsect1>
 <refsect1><title>SEE ALSO</title>
  <para>
   <citerefentry>
    <refentrytitle>yaz</refentrytitle>
    <manvolnum>7</manvolnum>
   </citerefentry>
  </para>
  <para>
   <citerefentry>
    <refentrytitle>yaz-iconv</refentrytitle>
    <manvolnum>1</manvolnum>
   </citerefentry>
  </para>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: nxml
nxml-child-indent: 1
End:
-->
