local
[webpac2] / conf / normalize / ff-libri.pl
index a940113..35c6fb6 100644 (file)
@@ -4,55 +4,48 @@
 # UNIMARC formatu, sa vi¹estrukim odstupanjima od standarda.
 
 
-## lookup rezultat za sabrana djela
-my $sabrana;
+## lookup rezultat za sabrana djela (probna procedura za filozofiju od koje se odustalo)
+my $sabrana;
 
 
-## konvertira se ako postoji polje 200^a
+## sve skupa se konvertira tek ako postoji polje 200^a
 if ( rec('200','a') ) {
 
 ### LEADER
 
-## LDR 05 - c = pregledan ; n = new
-## provjeriti za svaku bazu koje polje koristi
-## 999^aP - SFM
-
-if ( rec('999','a') && rec('999','a') =~ m/(pregledan|P)/i) {
-       marc_leader('05','c');
-} else {
-       marc_leader('05','n');
-}
+## LDR 05 - n - new
+marc_leader('05','n');
 
 ## LDR 06 - a - language material 
-
-       marc_leader('06','a');
+marc_leader('06','a');
 
 ## LDR 07 - m - Monograph/item
+marc_leader('07','m');
+
+# ovo je bila proba za filozofiju
+# if ( config() =~ m/fffi/ ) { 
+#      $sabrana = 
+#              lookup(
+#                      sub{ rec('A') },
+#                      'fffi','sabrana',
+#                      sub { rec('B') },
+#                      sub { rec('000') }
+#              );
+# } 
+#
+# if ( ! $sabrana ) {
+#      marc_leader('07','m');
+# } else {
+#      marc_leader('07','c');
+# }
 
-if ( config() =~ m/fffi/ ) { 
-       $sabrana = 
-               lookup(
-                       sub{ rec('A') },
-                       'fffi','sabrana',
-                       sub { rec('B') },
-                       sub { rec('000') }
-               );
-}
-
-if ( ! $sabrana ) {
-       marc_leader('07','m');
-} else {
-       marc_leader('07','c');
-}
-
-## LDR 17 - Encoding level ; 7 - minimal level
-       marc_leader('17','7');
+## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
+marc_leader('17','u');
 
 ## LDR 18 - i - isbd 
-       marc_leader('18','i');
+marc_leader('18','i');
 
-## LDR 19
-# # - Not specified or not applicable; a - Set; b - Part with independent title; c - Part with dependent title 
+## LDR 19 - Multipart resource record level ; # - Not specified or not applicable, a - Set, b - Part with independent title, c - Part with dependent title 
 
 #if ( ( ! $sabrana ) && ( rec('230') || rec('231') || rec('232') || rec('233') ) ) { 
 #      marc_leader('19','a');
@@ -73,12 +66,12 @@ if ( rec('994','c') =~ m/\d{8}/ ) {
                ),
        );
 } elsif ( rec('994','c') =~ m/\d{6}/ ) {
-       marc_fixed('008', 00,
+       marc_fixed('008','00',
                regex('s/^\d\d//',
                        rec('994','c')
                ),
        );
-       marc_fixed('008', '04',
+       marc_fixed('008','04',
                '01'
        );
 } elsif ( rec('994','c') =~ m/\d{4}/ ) {
@@ -87,9 +80,13 @@ if ( rec('994','c') =~ m/\d{8}/ ) {
                        rec('994','c')
                ),
        );
-       marc_fixed('008', '02',
+       marc_fixed('008','02',
                '0101'
        );
+} else {
+       marc_fixed('008','00',
+               '010101'
+       );
 }
 
 #warn( dump(
@@ -101,30 +98,15 @@ if ( rec('994','c') =~ m/\d{8}/ ) {
 
 ## 008 06 - Type of date/Publication status
 
-## 008 07-10 - Date 1 - 
-## srediti sve moguæe oznake za godine (06)
+## 008 07-10 - Date 1
+## 008 11-14 - Date 2 
 ## 210d kroz modify postaje 210c
 
 if ( rec('210','c') ) {
        my $d1 = '';
        my $d2 = '';
-       if ( rec('210','c') =~ m/(\?)/ ) {
-               marc_fixed('008','06','q');
-               if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
-                       $d1 = $1.'uu';
-               } 
-               if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
-                       $d1 = $1.'u';
-               }
-               if ( rec('210','c') =~ m/(\d{4})/ ) {
-                       $d1 = $1;
-               }
-       } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
-               if ( $sabrana ) { 
-                       marc_fixed('008','06','i');
-               } else {
-                       marc_fixed('008','06','m');
-               }
+       if ( rec('210','c') =~ m/(\d{4})-/ ) {
+               marc_fixed('008','06','m');
                if ( rec('210','c') =~ m/(\d{4})-/ ) {
                        $d1 = $1;
                        $d2 = '9999';
@@ -137,7 +119,45 @@ if ( rec('210','c') ) {
                if ( rec('210','c') =~ m/(\d{4})/ ) {
                        $d1 = $1;
                }
+               if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
+                       $d1 = $1.'uu';
+               } 
+               if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
+                       $d1 = $1.'u';
+               }
        }
+               
+#      if ( rec('210','c') =~ m/(\?)/ ) {
+#              marc_fixed('008','06','q');
+#              if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
+#                      $d1 = $1.'uu';
+#              } 
+#              if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
+#                      $d1 = $1.'u';
+#              }
+#              if ( rec('210','c') =~ m/(\d{4})/ ) {
+#                      $d1 = $1;
+#              }
+#      } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
+#              if ( $sabrana ) { 
+#                      marc_fixed('008','06','i');
+#              } else {
+#                      marc_fixed('008','06','m');
+#              }
+#              marc_fixed('008','06','m')
+#              if ( rec('210','c') =~ m/(\d{4})-/ ) {
+#                      $d1 = $1;
+#                      $d2 = '9999';
+#              }
+#              if ( rec('210','c') =~ m/-(\d{4})/ ) {
+#                      $d2 = $1;
+#              }
+#      } else {
+#              marc_fixed('008','06','s');
+#              if ( rec('210','c') =~ m/(\d{4})/ ) {
+#                      $d1 = $1;
+#              }
+#      }
 
        marc_fixed('008','07',$d1);             # 07-10 - Date 1
        marc_fixed('008','11',$d2);             # 07-10 - Date 1
@@ -148,12 +168,9 @@ if ( rec('210','c') ) {
 }
 
 
-## 008 11-14 - Date 2 
 
-## 008 15-17 - Place of publication, production, or execution - ¹to ako nema 102?
-## raspraviti
-
-marc_fixed('008','15','xx');
+## 008 15-17 - Place of publication, production, or execution - ako nema 102, popunjava se s |
+marc_fixed('008','15','|||');
 
 #marc_fixed('008','15', 
 #      lc ( rec('102') ) 
@@ -178,7 +195,7 @@ marc_fixed('008','35',
        lc( frec('101'))                
 );
                                        
-## 008 38 - Modified record - razjasniti
+## 008 38 - Modified record
 marc_fixed('008','38','|');            
 
 ## 008 39 - Cataloging source - d (other)
@@ -194,6 +211,7 @@ if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
 marc_fixed('008','22','|');
 
 ## 008 23 - Form of item
+marc_fixed('008','23','|');
 
 ## 008 24-27 - Nature of contents
 marc_fixed('008','24','||||');
@@ -218,9 +236,8 @@ marc_fixed('008','33','|');
 marc_fixed('008','34','|');
 
 ### 020
-## modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
-
-if ( frec('10') ne ( frec('290') ) ) {
+## postoji modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
+#if ( frec('10') ne ( frec('290') ) ) {
        if ( rec('10','a') !~ /pogre/ ) {
                marc('020','a', 
                        # isbn_13(
@@ -241,7 +258,7 @@ if ( frec('10') ne ( frec('290') ) ) {
        marc('020','z',
                rec('10','z')
        );
-}
+#}
 
 #warn( 
 #      dump(
@@ -251,7 +268,8 @@ if ( frec('10') ne ( frec('290') ) ) {
 
 ### 035$
 ## marc 035a - System Number 
-## polje mo¾e sadr¾avati slova i razmake, problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
+## polje mo¾e sadr¾avati slova i razmake
+## moguæ problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
 
 marc('035','a',
 join_with('',
@@ -259,7 +277,7 @@ join_with('',
        # config('name'),
        'HR-ZaFF ',
        config(),
-       'L-',
+       'L',
        # config('input name'),
        # id(),
        # rec('994','a'),
@@ -292,6 +310,7 @@ marc('040','e',
 ## (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/ ) ?
 
@@ -316,19 +335,18 @@ if (
        );
 }
 
-       ### 041
-       ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
-       ## polje se koristi kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu
-       #_debug(2);
-
-#_debug(0);
+### 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
+## nadopuniti
 
 ### 044
-## kako dobiti zemlju izdavanja?
+## koristi se kad ima vi¹e zemalja izdavanja
 
 ### 080
 ## 675 podpolja b, c, d ... - ¹to s njima? - provjeriti za svaku bazu
 ## fi: abcd
+## sk: ima \r\n na kraju
 
 marc('080','a',
        rec('675','a')
@@ -352,6 +370,9 @@ marc('080','a',
 ## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
 ## polje 686 koristi FFPS. jo¹ netko?
 
+marc('084','2',
+       'APA CC'
+);
 marc('084','a',
        rec('686')
 );
@@ -375,7 +396,8 @@ marc('100','a',
 ### formalna odrednica - iz 503 u 110, i1=0, i2=1
 
 ### 111 i 110
-## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
+## provjeriti za svaku bazu
+## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake zbirke - moguæe su gre¹ke.
 ## popraviti interpunkciju
 
 # ovo vrijedi za FFSFB
@@ -429,36 +451,36 @@ marc_compose('111',
 ## i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
 ## treba provjeriti
 
-my $i1;
+my $titleind1;
 
 if ( rec('700') || rec('710') ) {
-       $i1 = 1;
+       $titleind1 = 1;
 } else {
-       $i1 = 0;
+       $titleind1 = 0;
 }
        
-marc_indicators('245', $i1, 0);
+marc_indicators('245', $titleind1, 0);
 
 if ( rec('200','a') =~ m/^Einen / ) {
-               marc_indicators('245', $i1, 6);
+       marc_indicators('245', $titleind1, 6);
 } 
 if ( rec('200','a') =~ m/^Eine / ) {
-               marc_indicators('245', $i1, 5);
+       marc_indicators('245', $titleind1, 5);
 } 
 if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
-               marc_indicators('245', $i1, 4);
+       marc_indicators('245', $titleind1, 4);
 } 
 if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) { 
-               marc_indicators('245', $i1, 3);
+       marc_indicators('245', $titleind1, 3);
 } 
 if ( ( rec('101') =~ m/ENG/ ) && ( rec('200','a') =~ m/^A / ) ) { 
-               marc_indicators('245', $i1, 2);
-} 
+       marc_indicators('245', $titleind1, 2);
+}
 if ( rec('200','a') =~ m/^L / ) { 
-               marc_indicators('245', $i1, 2);
+       marc_indicators('245', $titleind1, 2);
 } 
 if ( rec('200','a') =~ m/^L'/ ) { 
-               marc_indicators('245', $i1, 2);
+       marc_indicators('245', $titleind1, 2);
 } 
 
 
@@ -519,19 +541,17 @@ marc_compose('245',
 #_debug(0);
 
 ### 246
-## i1=1 ukoliko pravilo nalaze napomenu, ali napomenu necemo pisati ponovo u 500
-## i1=3 ako pravlo na nalze napomenu
+## i1=1 ukoliko pravilo nala¾e napomenu, ali napomenu necemo pisati ponovo u 500
+## i1=3 ako pravlo na nale napomenu
 ## vidi na wiki
 ## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
-
 marc_indicators('246', 3, ' ');
 marc('246','a',
        rec('532')
 );
 
 ### 250
-## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
-
+## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti za svaku bazu
 marc_compose('250',
        'a',suffix(
                rec('205','f') ? ' / ' : 
@@ -543,13 +563,11 @@ marc_compose('250',
 
 ### 260
 ## ponovljiva potpolja u originalnom redosljedu - priprema u modify
-
-       marc_original_order('260', '210');
+marc_original_order('260', '210');
 
 
 ### 300
 ## urediti interpunkcije za sve kombinacije
-
 marc('300','a',
        suffix(
                rec('215','c') ? ' : ' :
@@ -579,7 +597,9 @@ marc('300','e',
 );
 
 ### 362 - brojèani podaci za nakladnièku cjelinu - to mi nemamo, polje se koristi samo za èasopise
-
+## i1 = 0 - formalizirani oblik navoda
+## i1 = 1 - neformalizirani
+## i2 nema
 
 # if ( ! rec('225','z')  ) {
 
@@ -879,67 +899,66 @@ if ( config() =~ m/ffps/ ) {
 }
 
 ### 526 - STUDY PROGRAM INFORMATION NOTE
-## provjeriti za svaku bazu sta je u 996?
-
+## u nekim bazame je to u 996 - provjeriti za svaku bazu sta je u 996?
 marc_indicators('526', 8, ' ');
-
 marc('526','a',
        rec('996')
 );
 
 ### 538 - zahtjevi sustava
-
 marc('538','a',
        rec('337','a')
 );
 
-### 655
-
-marc_indicators('655', ' ', 4);
-marc('655','a',
-       rec('608')
-);
-
-### 653
+### 653 - Index Term-Uncontrolled
 ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
-
 marc_indicators('653', ' ', ' ');
 marc('653','a',
        rec('610')
 );
 
+### 655 - Index Term-Genre/Form 
+marc_indicators('655', ' ', 4);
+marc('655','a',
+       rec('608')
+);
+
 #_debug(2);
 
 
 ### 700
 ## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
-## ako ima samo podpolje a onda je pseudonim - popraviti indikator
-
-marc_indicators('700', 1, ' ');
+## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
+if ( rec('701','a') =~ m/, / ) {
+       marc_indicators('700', 1, ' ');
+} else {
+       marc_indicators('700', 0, ' ');
+}
 
 marc('700','a',
        rec('701', 'a'),
 );
+
 marc('700','a',
        join_with(', ',
                rec('701', 'c'),
                rec('701', 'd')
-       )
+       ),
 );
 marc('700','a',
        join_with(', ',
                rec('701', 'e'),
                rec('701', 'f')
-       )
+       ),
 );
 marc('700','a',
        join_with(', ',
                rec('701', 'g'),
                rec('701', 'h')
-       )
+       ),
 );
 marc('700','a',
-               rec('702', 'a'),
+       rec('702','a'),
 );
 marc('700','a',
        join_with(', ',
@@ -962,10 +981,13 @@ marc('700','a',
 
 #_debug(0);
 
+## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
 
-### 740 - sta s tim?
 
-marc_indicators('740', 0, ' ');
+### 740 - Added Entry - Uncontrolled Related/Analytical Title 
+## raspraviti
+## nadopuniti prvi indikator prema èlanovima
+marc_indicators('740', '0', ' ');
 
 # if ( ! rec('464') ) {
 # marc('740','a',
@@ -984,8 +1006,7 @@ marc('740','a',
 
 # };
 
-# -------------------------------------------------------------------
-### 760 w
+### 760 w ---------------------------------------------
 ## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
 
 #if (
@@ -1119,37 +1140,39 @@ marc('740','a',
 #              rec('293'),
 #      )
 #);
-#
+
+
 ### 852 - ne koristimo, koristimo  942 i 952
 
-### 876 - item information - basic bibliographic unit
+### 876 - item information - basic bibliographic unit (R)
+## da li ovdje zapisati stare inventarne brojeve?
 #marc('876','a',
 #      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')
-                       )
-               )
-       )
-);
+#
+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
 
@@ -1157,7 +1180,6 @@ marc('942','b',
        'LIB'
 );
 
-
 if ( grep( m/Posebni otisak/, rec('300') ) ) {
        marc('942','c',
                'SEP'
@@ -1168,48 +1190,70 @@ if ( grep( m/Posebni otisak/, rec('300') ) ) {
        );
 }
 
+## 990 u sk ima \r\n na kraju
+
 marc('942','d',
        join_with(' | ',
                rec('990')
        )
 );     
 
-if ( config() =~ m/ffan/ ) {
-       my $novasig1 =
-               lookup(
-                       sub { rec('C') },
-                       'ffan','mapirano',
-                       sub { rec('B') },
-                       sub { rec('990') }
-               );
-       my $novasig2 = 
-               lookup(
-                       sub { rec('C') . ' ' . rec('D') },
-                       'ffan','starasig',
-                       sub { rec('A') },
-                       sub { rec('000') },
-               );
-       marc('942','h',
-               $novasig1
+my $novasig1 =
+       lookup(
+               sub { rec('C') },
+               'ffiz','mapirano',
+               sub { rec('B') },
+               sub { rec('990') }
        );
-       marc('942','i',
-               $novasig2
+my $novasig2 = 
+       lookup(
+               sub { rec('C') . ' ' . rec('D') },
+               'ffiz','starasig',
+               sub { rec('A') },
+               sub { rec('000') },
        );
-}
 
+marc('942','h',
+       $novasig1
+);
+
+marc('942','i',
+       $novasig2
+);
 
-if ( config() =~ m/ffsf|ffpo|fffi/ ) {
-       my $sig1 = 
+if ( config() =~ m/ffar/ ) {
+       my $novasig1 =
                lookup(
-                       sub { rec('C') },
-                       'fffi','signature',
-                       sub { rec('B') },
-                       sub { frec('990') },
+                       sub { rec('E') },
+                       'ffar','mapirano',
+                       sub { rec('A') },
+                       sub { rec('000') }
                );
-       if ( rec('700','a') ) {
+       if ( $novasig1 ) {
                marc('942','h',
-                       $sig1,
+                       $novasig1
                );
+       } else {
+               marc('942','h',
+                       'ARH'
+               );
+       }
+
+
+}
+
+if ( config() =~ m/ffsf|ffpo|fffi|ffar|ffsk/ ) {
+#      my $sig1 = 
+#              lookup(
+#                      sub { rec('C') },
+#                      'fffi','signature',
+#                      sub { rec('B') },
+#                      sub { frec('990') },
+#              );
+       if ( rec('700','a') ) {
+#              marc('942','h',
+#                      $sig1,
+#              );
                if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
                        marc('942','i',
                                join_with(' ',
@@ -1278,9 +1322,9 @@ if ( config() =~ m/ffsf|ffpo|fffi/ ) {
                        );
                }
        } elsif ( rec('710','a') ) {
-               marc('942','h',
-                       $sig1,
-               );
+#              marc('942','h',
+#                      $sig1,
+#              );
                if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
                        marc('942','i',
                                join_with(' ',
@@ -1349,9 +1393,9 @@ if ( config() =~ m/ffsf|ffpo|fffi/ ) {
                        );
                }
        } elsif ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
-               marc('942','h',
-                       $sig1,
-               );
+#              marc('942','h',
+#                      $sig1,
+#              );
                marc('942','i',
                        regex('s/^.{4}(.{3}).*/$1/',
                                uc ( rec('200','a') )
@@ -1359,19 +1403,19 @@ if ( config() =~ m/ffsf|ffpo|fffi/ ) {
                );
                        
        } else {
-               marc('942','h',
-                       $sig1,
-               );
+#              marc('942','h',
+#                      $sig1,
+#              );
                marc('942','i',
                        regex('s/(^\w{3}).*/$1/',
                                uc ( rec('200','a') )
                        )
                )
        }
-} # if config()
+} # if config() za oznaku primjerka
 
 if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) { 
-       warn "nema primjeraka";
+       warn "skupni zapis - nema primjeraka";
 } else {
        marc('952','8',
                rec('991','8')
@@ -1392,5 +1436,15 @@ if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
                rec('991','y')
        );
 }
+
+### LOKALNA POLJA
+## 1. da li je zapis pregledan ili nije i datum kad je pregledan
+##    provjeriti za svaku bazu koje polje koristi
+##    SFM:     999^aP
+##    AN:      999 Pregledan
+## raspraviti
+
+
+
 } # polje 200a
 # } sig