On Wed, May 28, 2008 at 8:29 PM, Dobrica Pavlinusic <[EMAIL PROTECTED]>
wrote:

> On Tue, May 27, 2008 at 01:03:22PM +0530, Saiful Amin wrote:
> > You can download the sample database of 50 records, in which MFN 18 and
> 19
> > are logically deleted, from the following link:
> > http://122.166.0.252/sample.zip
>
> I can't reproduce your problem. When I try to dump your records using
> dump_isisdb.pl included in Bibio::ISIS distribution (with options to start
> at record 17, and dump just 4 records) I get:
>
> I would love to help you with this, but I'm puzzled.
>

I didn't know about the dump script. My script is quite a long one. I'm
attaching a portion of that script which is not able to ignore the logically
deleted records.

-- 
Saiful Amin
+91 9343826438
#!/usr/bin/perl
# 
# Name: ccf2marc.pl 
# Author: Saiful Amin <[EMAIL PROTECTED]>
# Date: May 2008
# Version: 0.4
# Description: Takes the CDS/ISIS as input and gives valid MARC21 data as 
output.
# 

use strict;
use warnings;
#use diagnostics;
use Biblio::Isis;
use MARC::Record;

# Usage Instructions
die "\nUSAGE: $0 Output_file\n" unless defined $ARGV[0];

# Open the ISIS Database
my $isis = new Biblio::Isis (
        isisdb => 'C:/WINISIS/DATA/sample/',
        #include_deleted => 0,
        debug => 0
);

open (OUTFILE, ">$ARGV[0]");

my $num = 0;

###################################################

for (my $mfn = 1; $mfn <= $isis->count; $mfn++) {
        my $marc = MARC::Record->new();
        my $record = $isis->to_hash($mfn);

        my $first_author_a = $$record{300}[0]{a};
        my $first_author_b = $$record{300}[0]{b};
        my $first_author_e = $$record{300}[0]{f};
        
        my $corp_author_a = $$record{310}[0]{a};
        my $corp_author_b = $$record{310}[0]{b};
        my $corp_author_c = $$record{310}[0]{d};
        my $corp_author_cc = $$record{310}[0]{e};

        my $field_245a = $$record{200}[0]{a};
        my $field_245c = $$record{200}[0]{b};
        
        my $conf_author_a = $$record{320}[0]{a};
        my $conf_author_cc = $$record{320}[0]{e};
        my $conf_author_c = $$record{320}[0]{g};
        my $conf_author_d = $$record{320}[0]{h};
        my $conf_author_n = $$record{320}[0]{j};
        
        $num++;

###################################################
# Create the Leader and map with relevant codes
###################################################

        # Prepare the Leader
        my $leader = '00054nam#a22002891a 4500';
        $marc->leader($leader);

###################################################
# Create the fixed field tags (007/008)
###################################################

        my $data_008 = '080528|                r|    ||111|eng||||';
        my $tag_008 = MARC::Field->new('008', $data_008);
        $marc->append_fields($tag_008);

#######################################################
# Create the first author (Main Entry/Added Entry)
#######################################################

        # First author in tag_100
        if ($first_author_a) {
                my $first_author = "$first_author_a";
                $first_author .= ", $first_author_b" if $first_author_b;
                my $main_author = '';
                
                if ($corp_author_a || $conf_author_a) {
                        $main_author = MARC::Field->new('700', 1,'', 'a' => '');
                } else {
                        $main_author = MARC::Field->new('100', 1,'', 'a' => '');
                }
                $main_author->update('a' => $first_author);
                $main_author->update('e' => $first_author_e) if $first_author_e;
                $marc->append_fields($main_author);
        }

#######################
## The Title Section ##
#######################

        my $title = $field_245a;
        my $state_of_resp = '';
        
        if ($field_245c) {
                $state_of_resp = $field_245c;
        }
        
        #print "$mfn\n" if !defined $title;
        $title = "No title found" if !defined $title;
        
        # Create Title field
        my $tag_245 = MARC::Field->new('245',1,0,
                'a' => "$title"
        );
        $tag_245->update('c' => $state_of_resp) if $state_of_resp;
        $marc->append_fields($tag_245);

###################################################
#  Write output to OUTFILE
###################################################

        print OUTFILE $marc->as_usmarc();
        print STDOUT "Printed record number $mfn\n";
}
close (OUTFILE);

Reply via email to