# Ova datoteka sadrzi pravila za generiranje MARC21 ISO 2709 izlazne
# datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u
-# UNIMARC formatu, koji sadr¿i visestruka odstupanja od standarda.
+# UNIMARC formatu, koji sadrzi visestruka odstupanja od standarda.
## konvertira se ako postoji polje 200^a
if ( rec('200','a') ) {
marc_fixed('008','34','|');
### 020
-## postoji modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
+## postoji modify za polje 10 -> drugi ISBN pocinje prefixom "ISBN" koji se mice (pr. u sfb)
#if ( frec('10') ne ( frec('290') ) ) {
if ( rec('10','a') !~ /pogre/ ) {
marc('020','a',
### 035
## marc 035a - System Number
-## polje mo¾e sadr¾avati slova i razmake
-## moguæ problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
+## polje moze sadrzavati slova i razmake
+## moguc problem u pretrazivanju ako ima zagrade, kako bi trebalo po standardu
marc('035','a',
join_with('',
# config('input normalize path'),
# config('name'),
- '(HR-ZaHPM)',
+ '(HR-ZaHPM)isis',
# config(),
# config('input name'),
# id(),
'ppiak'
);
-### 041 - indikatori
-## pretpostavke o indikatorima
-## 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
-## (Da li je napomena uvijek pisana?)
-## 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
-## 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
-## (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
-## pr. 821.111-2=163.42 je prijevod engleske drame na HR.
-## to ima samo za knji¾evna djela, eseje....
-## ovo treba kasnije ispravljati
-
-#if ( rec('675') =~ m/\d=\d/ ) ?
-
### 041
## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
-## koristi se kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu
+## koristi se kad ima vise od jednog jezika, ili kad se radi o prijevodu
## nadopuniti
if ( ( count( rec('101','a') ) > 1 ) || ( rec('101','b') ) || ( rec('101','h') ) ) {
- marc_original_order('041','101');
if ( ( grep( m/prijevod/i, rec('300') ) ) || ( rec('101','h') ) ) {
- marc_indicators('041', 1, ' ');
+ marc_indicators('101', 1, ' ');
} else {
- marc_indicators('041', ' ', ' ');
+ marc_indicators('101', ' ', ' ');
}
+ marc_original_order('041','101');
}
my $titleind1;
-if ( rec('700') || rec('710') ) {
+if ( rec('700') || rec('710') || rec('711') ) {
$titleind1 = 1;
} else {
$titleind1 = 0;
( rec('200','d') ) ? ' =' :
( rec('200','e') ) ? ' :' :
( rec('200','k') ) ? ' ;' :
+ ( rec('200','h') ) ? '.' :
'.',
rec('200','a'),
),
'b', suffix(
- ( rec('200','d') && rec('200','f') ) ? ' /' :
- ( rec('200','d') && rec('200','c') ) ? '.' :
+ ( rec('200','d') && ! rec('200','f') ) ? '.' :
+ ( rec('200','d') && ! rec('200','f') ) ? '.' :
'',
rec('200','d'),
),
'b', suffix(
( rec('200','e') && rec('200','f') ) ? ' /' :
- ( rec('200','e') && rec('200','c') ) ? '.' :
+ ( rec('200','e') && rec('200','h') && ! rec('200','f') ) ? '.' :
'',
rec('200','e'),
),
'',
rec('200','k'),
),
+ 'n', suffix(
+ ( rec('200','h') && rec('200','f') ) ? ' /' :
+ ( rec('200','h') && rec('200','i') ) ? '.' :
+ ( rec('200','h') && ! ( rec('200','i') || rec('200','f') ) ) ? '.' :
+ '',
+ rec('200','h'),
+ ),
+ 'p', suffix(
+ ( rec('200','i') && rec('200','f') ) ? ' /' :
+ ( rec('200','i') && ! rec('200','f') ) ? '.' :
+ '',
+ rec('200','i'),
+ ),
'c', suffix(
( rec('200','f') && rec('200','c') ) ? '. ' :
'',
}
# marc_indicators('830',' ','0');
-# i2 ovisi èlanu - popraviti
+# i2 ovisi clanu - popraviti
#
# marc('830','a',
# regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
rec('300')
);
-### 502 - bilje¹ka o disertacijama
-## odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
+### 502 - biljeska o disertacijama
+## odgovarajuceg polja nema u originalnim podacima. mozda se moze pretpostaviti?
### 504
marc('504','a',
);
-#_debug(2);
-
### 700
## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
-if ( rec('700','c') ) {
- if ( rec('700','c') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('700','c'),
- '4', 'aut'
- );
-}
-
-if ( rec('700','e') ) {
- if ( rec('700','e') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('700','e'),
- '4', 'aut'
- );
-}
-
-if ( rec('700','g') ) {
- if ( rec('700','g') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('700','g'),
- '4', 'aut'
- );
-}
-
-if ( rec('700','i') ) {
- if ( rec('700','i') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('700','i'),
- '4', 'aut'
- );
-}
-
-if ( rec('700','k') ) {
- if ( rec('700','k') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('700','k'),
- '4', 'aut'
- );
-}
-
-
if ( rec('701','a') ) {
- marc_indicators('700', 1, ' ');
- marc('700','a',
- rec('701','a')
- );
+ #_debug(3);
+ marc_indicators('701', 1, ' '); # override original indicators
+ marc_original_order('700','701');
+ #_debug(0);
}
-if ( rec('701','c') ) {
- if ( rec('701','c') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('701','c'),
- '4', 'aut'
- );
-}
-
-if ( rec('701','e') ) {
- if ( rec('701','e') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('701','e'),
- '4', 'aut'
- );
-}
+my $relcode = rec('702','4');
+my $relcode_konv = {
+ 'autor' => 'aut',
+ 'autor dodatka' => 'wam',
+ 'autor fotografija' => 'pht',
+ 'autorica' => 'aut',
+ 'autorica i urednica' => 'aut edt',
+ 'autorica teksta' => 'aut',
+ 'autorica uvodnog teksta' => 'aui',
+ 'autor izložbe' => 'cur',
+ 'autor izložbe i fotografije' => 'cur pht',
+ 'autor kataloških jedinica' => 'aqt',
+ 'autorov suradnik' => 'oth',
+ 'autor popratnih tekstova i kataloga' => 'aqt',
+ 'autor predgovora' => 'aui',
+ 'autor projekta' => 'pdr',
+ 'autor projekta i urednik, izrada kazala' => 'pdr edt aqt',
+ 'autor teksta' => 'aut',
+ 'autor teksta i urednik' => 'aut edt',
+ 'autor tekstova u jednom poglavlju i autor fotografija' => 'aut pht',
+ 'autor uvoda' => 'aui',
+ 'bibliografski urednik' => 'pbd',
+ 'crtač geografskih karata' => 'ill',
+ 'crteži' => 'ill',
+ 'crteži karata' => 'ill',
+ 'dizajner' => 'dsr',
+ 'editor' => 'edt',
+ 'fotograf' => 'pht',
+ 'fotografija' => 'pht',
+ 'fotografije' => 'pht',
+ 'fotografije, engleski prijevod' => 'pht trl',
+ 'fotografije i crteži' => 'pht ill',
+ 'general editor' => 'edt',
+ 'GIS i izrada karata' => 'ctg',
+ 'glavna urednica' => 'edt',
+ 'glavni i odgovorni urednik' => 'edt',
+ 'glavni urednik' => 'edt',
+ 'ilustracije' => 'ill',
+ 'ilustracije i izrada karata' => 'ill ctg',
+ 'ilustrator' => 'ill',
+ 'ilustratorica' => 'ill',
+ 'izrada crteža' => 'ill',
+ 'izrada karata' => 'ill',
+ 'izrada karata antičkih prometnica' => 'ctg',
+ 'izrada kazala' => 'ant',
+ 'izvedba CD-ROMa' => 'oth',
+ 'kartograf' => 'ctg',
+ 'kolorirani bakropisi' => 'ill',
+ 'koncepcija' => 'ccp',
+ 'likovno-grafička oprema' => 'ill',
+ 'likovno oblikovanje' => 'ill',
+ 'obrada izvornih karata i izrada kartografskih originala' => 'ctg',
+ 'pisac predgovora' => 'aui',
+ 'pisac uvoda' => 'aui',
+ 'pomoćnica urednika' => 'edt',
+ 'pomoćnik glavnog urednika' => 'edt',
+ 'pomoćnik urednika' => 'edt',
+ 'pomoćni urednik' => 'edt',
+ 'predgovor' => 'aui',
+ 'predsjednik redakcijskog kolegija' => 'pbd',
+ 'prevoditelj' => 'trl',
+ 'prevoditeljica' => 'trl',
+ ' prevoditeljica' => 'trl',
+ 'prevoditeljica i redaktorica' => 'trl',
+ 'priprema fotografija' => 'oth',
+ 'priređivač' => 'edt',
+ 'priređivač izdanja' => 'pbd',
+ 'redaktor' => 'oth',
+ 'savjetnik' => 'oth',
+ 'series editor' => 'pbd',
+ 'stručna suradnica' => 'ctb',
+ 'stručna suradnica i autorica teksta' => 'aut',
+ 'stručni koordinator' => 'oth',
+ 'stručni suradnik' => 'oth',
+ 'stručni suradnik i autor teksta' => 'aut',
+ 'stručni urednik' => 'edt',
+ 'suradnica' => 'oth',
+ 'suradnik' => 'oth',
+ 'tehnička realizacija CD-ROM-a' => 'oth',
+ 'tekstovi o muzejima' => 'aut',
+ 'tekstovi o zbirkama vjerskih zajednica' => 'aut',
+ 'urednica' => 'edt',
+ 'urednik' => 'edt',
+ 'urednik i autor' => 'edt aut',
+ 'urednik i urednik nakladničke cjeline' => 'edt pbd',
+ 'urednik izdanja' => 'edt',
+ 'urednik knjige i nakladničke cjeline' => 'edt',
+ 'urednik nakladničke cjeline' => 'pbd',
+ 'urednik pretiska' => 'edt',
+ 'urednik serije' => 'edt',
+ 'uvod' => 'aui',
+ 'zemljopisne karte' => 'ill',
+ 'zemljovidi' => 'ill',
+ 'zvučni snimci' => 'rce'
+};
-if ( rec('701','g') ) {
- if ( rec('701','g') =~ m/, / ) {
- marc_indicators('700', 1, ' ');
- } else {
- marc_indicators('700', 0, ' ');
- }
- marc_compose('700',
- 'a', rec('701','g'),
- '4', 'aut'
- );
-}
if ( rec('702','a') ) {
marc_indicators('700', 1, ' ');
- marc('700','a',
- rec('702','a'),
- );
-}
-if ( rec('702','c') ) {
- marc_indicators('700', 1, ' ');
- marc('700','a',
- rec('702','c'),
- );
-}
-
-if ( rec('702','e') ) {
- marc_indicators('700', 1, ' ');
- marc('700',
- 'a', rec('702','e'),
- );
+ foreach my $repeat ( rec_array('702') ) {
+ my $sf_a = $repeat->{a} || die "702 doesn't have a ", dump( $repeat );
+ if ( my $sf_4 = $repeat->{4} ) {
+ my $relcode = $relcode_konv->{ $sf_4 } || die "no relcode_konv for ",dump( $sf_4 );
+ marc_compose('700',
+ '4' => $relcode,
+ 'a' => $sf_a,
+ );
+ } else {
+ marc('700', 'a', $sf_a );
+ }
+ }
}
-
#_debug(0);
## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
}
-
-### 740 - Added Entry - Uncontrolled Related/Analytical Title
-## raspraviti
-## nadopuniti prvi indikator prema èlanovima
-marc_indicators('740', '0', ' ');
-
-# if ( ! rec('464') ) {
-# marc('740','a',
-# rec('200','c')
-# );
-
-#marc('740','a',
-# rec('200','k')
-#);
-
-# } else {
-
-#marc('740','a',
-# rec('464','a')
-#);
-
-# };
-
-### 760 w ---------------------------------------------
-## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
-
-#if (
-# rec('225','a') # da li je nakladnièka cjelina?
-#) {
-
-#my $series_key =
-#join_with('',
-# rec('225','a'),
-# rec('210','a'),
-# rec('210','b'),
-#);
-#
-#my $series = get( $series_key );
-#
-#if ($series) {
-# warn "nije novi";
-#} else {
-#
-#$series = join_with('',
-# uc( config() ),
-# ' LS',
-# rec('000')
-#);
-#
-#set( $series_key => $series );
-#
-#} # $series
-#} # nakladnièka cjelina
-#
-#my $series_key = join_with('',
-# rec('225','a'),
-# rec('210','a'),
-# rec('210','b'),
-#);
-#
-#if ($series_key) {
-#
-# marc_indicators('760', 0, ' ');
-#
-# marc('760','t',
-# rec('225','a')
-# );
-# marc('760','w',
-# get( $series_key )
-# );
-#}
-
-# ## testing
-#
-# my $dup_key = join_with('',
-# rec('200','a'),
-#);
-#
-#if ($dup_key) {
-# marc('995','a',
-# get( $dup_key )
-# );
-#}
-#
-#
-# marc_indicators('776', 0, ' ');
-#
-# marc('776','a',
-# rec('452','1')
-# );
-#
-# -------------------------------------------------------------------
-
-### 774 - Constituent Item Entry - to bi trebali koristiti ali ne koristimo jer NSK to koristi za ne¹to drugo
-### 787 - Nonspecific Relationship Entry
-
-#marc_indicators('787','0',' ');
-#
-#marc_compose('787',
-# 'g', rec('230','v'),
-# 't', rec('230','a'),
-# 'b', rec('240','a'),
-# 'd', rec('250','a'),
-# 'd', rec('250','d'),
-# 'h', rec('260','a'),
-# 'k', rec('270','a'),
-# 'n', join_with('. - ',
-# rec('280'),
-# ),
-# 'x', join_with(', ',
-# rec('290'),
-# )
-#);
-#marc_compose('787',
-# 'g', rec('231','v'),
-# 't', rec('231','a'),
-# 'b', rec('241','a'),
-# 'd', rec('251','a'),
-# 'd', rec('251','d'),
-# 'h', rec('261','a'),
-# 'k', rec('271','a'),
-# 'n', join_with('. - ',
-# rec('281'),
-# ),
-# 'x', join_with(', ',
-# rec('291'),
-# )
-#);
-#marc_compose('787',
-# 'g', rec('232','v'),
-# 't', rec('232','a'),
-# 'b', rec('242','a'),
-# 'd', rec('252','a'),
-# 'd', rec('252','d'),
-# 'h', rec('262','a'),
-# 'k', rec('272','a'),
-# 'n', join_with('. - ',
-# rec('282'),
-# ),
-# 'x', join_with(', ',
-# rec('292'),
-# )
-#);
-#marc_compose('787',
-# 'g', rec('233','v'),
-# 't', rec('233','a'),
-# 'b', rec('243','a'),
-# 'd', rec('253','a'),
-# 'h', rec('263','a'),
-# 'k', rec('273','a'),
-# 'n', join_with('. - ',
-# rec('283'),
-# ),
-# 'x', join_with(', ',
-# rec('293'),
-# )
-#);
-
-
### 852 - ne koristimo, koristimo 942 i 952
### 876 - item information - basic bibliographic unit (R)
# rec('991','t'),
#);
-### 886 - former marc
-# inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba
-#
-# marc_indicators('886', 2, ' ');
-# marc('886','2',
-# 'ffmarc'
-# );
-# marc('886','a',
-# '994'
-# );
-# marc('886','b',
-# join_with(''.
-# '##^a',
-# join_with('',
-# prefix('^a',
-# rec('994','a'),
-# ),
-# prefix('^b',
-# rec('994','b')
-# )
-# )
-# )
-#);
### KOHA items
-
marc('942','b',
'LIB'
);
-marc('942','c',
- 'K'
-);
+my $keyword = dump( rec('610') );
+my $itype;
-marc('952','a',
- 'HPM'
-);
-marc('952','b',
- 'HPM'
-);
-marc('952','e',
- rec('991','a')
-);
-marc('952','t',
+if ( rec('200','a') =~ m/Elektroni/ ) {
+ marc('942','c',
+ 'CD'
+ );
+ $itype = 'CD';
+} elsif ( $keyword =~ m/disertacija/ ) {
+ marc('942','c',
+ 'DIS'
+ );
+ $itype = 'DIS';
+} elsif ( $keyword =~ m/magistarski/ ) {
+ marc('942','c',
+ 'MAG'
+ );
+ $itype = 'MAG';
+} elsif ( rec('990') =~ m/(separat|posebni)/ ) {
+ marc('942','c',
+ 'SEP'
+ );
+ $itype = 'SEP';
+} elsif ( rec('990') =~ m/starih/ ) {
+ marc('942','c',
+ 'OLD'
+ );
+ $itype = 'OLD';
+} else {
+ marc('942','c',
+ 'BOOK'
+ );
+ $itype = 'BOOK';
+}
+
+# HPM local
+
+marc('991','a',
rec('991','b')
);
-marc('952','o',
+marc('992','a',
+ rec('992')
+);
+marc('993','a',
rec('990')
);
+# Items
+#marc('952','a',
+# 'HPM'
+#);
+#marc('952','b',
+# 'HPM'
+#);
+#marc('952','e',
+# rec('991','a')
+#);
+#marc('952','o',
+# rec('990')
+#);
+#marc('952','t',
+# rec('991','b')
+#);
+my $copynumber = rec('991','b') ;
+my $callnumber = rec('990') ;
+
+my $location = rec('992');
+my $location_konv = {
+ 'ZB, Min. odjel i Geol. odjel, HPrM' => 'ZB',
+ 'ZB, Min. odjel i Geol. odjel, HPM' => 'ZB',
+ 'ZB i Min. odjel, HPrM' => 'ZB',
+ 'ZB i Min. odjel, HPM' => 'ZB',
+ 'ZB i Geol. odjel, HPrM' => 'ZB',
+ 'ZB i Geol. odjel, HPM' => 'ZB',
+ 'ZB, HRrM' => 'ZB',
+ 'ZB, HrPM' => 'ZB',
+ 'ZB, HPrM' => 'ZB',
+ 'ZB, HPM' => 'ZB',
+ 'ZB, Geol. odjel i Min. odjel, HPM' => 'ZB',
+ 'Min. odjel i ZB, HPM' => 'ZB',
+ 'Min. odjel i Geol. odjel, HPrM' => 'MP',
+ 'Min. odjel i Geol. odjel, HPM' => 'MP',
+ 'Min. odjel, HPrM' => 'MP',
+ 'Min. odjel, HPM' => 'MP',
+ 'Min. odjel' => 'MP',
+ 'Institut Makarska' => 'ZB',
+ 'Geol. odjel i ZB, HPM' => 'ZB',
+ 'Geol. odjel i Min. odjel, HPM' => 'MP',
+ 'Geol. odjel, HPrM' => 'GP',
+ 'Geol. odjel, HPM' => 'GP'
+};
+
+#dump ( $itype );
+
+if ( rec('991','a') ) {
+ foreach my $repeat ( rec_array('991') ) {
+ my $sf_a = $repeat->{a} || die "991 doesn't have a ", dump( $repeat );
+ if ( my $sf_b = $repeat->{b} ) {
+ $sf_b || die "no inv";
+ marc_compose('952',
+ 'a' => 'HPM',
+ 'b' => 'HPM',
+ 'c' => $location_konv->{$location},
+ 't' => $sf_b,
+ 'o' => $callnumber,
+ 'y' => $itype
+ );
+ }
+ }
+}
-
-} # polje 200a
+} # polje 201a