Give marc2sre the ability to read subfields for an id field
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 20 May 2009 20:04:21 +0000 (20:04 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 20 May 2009 20:04:21 +0000 (20:04 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@13210 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/extras/import/marc2sre.pl

index 3687257..49b3ba7 100755 (executable)
@@ -25,11 +25,12 @@ use MARC::Charset;
 
 MARC::Charset->ignore_errors(1);
 
-my ($idfield, $count, $user, $password, $config, $marctype, @files, @trash_fields, $quiet) =
+my ($idfield, $count, $user, $password, $config, $marctype, $idsubfield, @files, @trash_fields, $quiet) =
        ('001', 1, 'admin', 'open-ils', '/openils/conf/opensrf_core.xml', 'USMARC');
 
 GetOptions(
        'idfield=i'     => \$idfield,
+       'idsubfield=a'  => \$idsubfield,
        'startid=i'     => \$count,
        'user=s'        => \$user,
        'password=s'    => \$password,
@@ -62,7 +63,12 @@ my $rec;
 while ( try { $rec = $batch->next } otherwise { $rec = -1 } ) {
        next if ($rec == -1);
        my $id = $count;
-       my $record_field = $rec->field($idfield);
+       my $record_field;
+       if ($idsubfield) {
+               $record_field = $rec->field($idfield, $idsubfield);
+       } else {
+               $record_field = $rec->field($idfield);
+       }
        my $record = $count;
 
        # On some systems, the 001 actually points to the record ID