HPM config
[webpac2] / conf / hpm / knjige.pl
index a57cf66..78f2fe2 100644 (file)
@@ -1,6 +1,6 @@
 # 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') ) {
@@ -144,7 +144,7 @@ marc_fixed('008','33','|');
 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', 
@@ -170,14 +170,14 @@ marc_fixed('008','34','|');
 
 ### 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(),
@@ -202,32 +202,19 @@ marc('040','e',
        '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');
 }
 
 
@@ -328,7 +315,7 @@ if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
 
 my $titleind1;
 
-if ( rec('700') || rec('710') ) {
+if ( rec('700') || rec('710') || rec('711') ) {
        $titleind1 = 1;
 } else {
        $titleind1 = 0;
@@ -371,18 +358,19 @@ marc_compose('245',
                ( 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'),
        ),
@@ -392,6 +380,19 @@ marc_compose('245',
                        '',
                        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') ) ? '. ' :
                        '',
@@ -473,7 +474,7 @@ if ( rec('225') ) {
 }
 
 # marc_indicators('830',' ','0');
-# i2 ovisi èlanu - popraviti 
+# i2 ovisi clanu - popraviti 
 #
 # marc('830','a',
 #      regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
@@ -525,8 +526,8 @@ marc('500','a',
        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',
@@ -542,139 +543,132 @@ marc('653','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
@@ -728,165 +722,6 @@ marc_compose('711',
 
 }
 
-
-### 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)
@@ -895,59 +730,124 @@ marc_indicators('740', '0', ' ');
 #      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