local
[webpac2] / conf / normalize / ff-peri.pl
index da6f110..d68ec41 100644 (file)
@@ -25,33 +25,45 @@ if ( rec('225','a') ) {
 marc_fixed('007',00,'ta');
 
 
-## 008
-marc_fixed('008','00', '070707');
-marc_fixed('008','06', '|');   # Type of date/Publication status
-marc_fixed('008','07', '|');   # Date 1
-marc_fixed('008','08', '|');
-marc_fixed('008','09', '|');
-marc_fixed('008','10', '|');
-marc_fixed('008','11', '|');   # Date 2
-marc_fixed('008','12', '|');
-marc_fixed('008','13', '|');
-marc_fixed('008','14', '|');
-marc_fixed('008','15',         # Place of publication, production, or execution
-       lookup(
-               sub { rec('102','a') },
-               'nsk','bbaza',
-               sub { rec('011','a') },
-               sub { rec('11') },
-       ),
-);
-marc_fixed('008','18', '');
-marc_fixed('008','35',                 # Language
-       rec('101') 
-);
-marc_fixed('008','39','|');    # Cataloging source
+## 008 - All materials
+marc_fixed('008','00', '070707');      # Date entered on file
+marc_fixed('008','06', 's');           # Type of date/Publication status
+if ( rec('11') ) {
+       if ( my $lookup = lookup(
+                       sub { rec('210','d') },
+                       'nsk','bbaza',
+                       sub { first( rec('011','a') ) },
+                       sub { rec('11') },
+               )
+       ) {
+               marc_fixed('008','07', $lookup);
+       } else {
+               marc_fixed('008','07',
+                       rec('210','d')
+               );
+       }
+}                                      # Date 1
+marc_fixed('008','11', ' ');           # Date 2
+marc_fixed('008','15', 
+       lc ( rec('102') ) 
+);                             # Place of publication, production, or execution
+#marc_fixed('008','35',        
+#      rec('101') 
+#);                            # Language
+marc_fixed('008','38', '|');   # Modified record
+marc_fixed('008','39','d');    # Cataloging source
+
+
+## 008 - Continuing resources
+marc_fixed('008','18', '|');   # Frequency
+marc_fixed('008','19', '|');   # Regularity
+marc_fixed('008','21', 'p');   # Type of continuing resource
+marc_fixed('008','29', '|');   # Conference publication
+marc_fixed('008','33', '|');   # Original alphabet or script of title
+marc_fixed('008','34', '|');   # Entry convention
 
-## 022
 
+## 022
 if ( ! rec('225','a') ) {
        marc('022','a',
                rec('11')
@@ -68,14 +80,6 @@ marc('035','6',
        )
 );
 
-# u marc 035a treba dodati System Number - 
-# NSK zapisuje Voyagerov ID (001) - kako ???
-
-# u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
-
-
-# u polje 040a mo¾da jo¹ dodati prefiks HR
-# NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
 
 marc('040','a',
        'HR FFZG'
@@ -89,59 +93,47 @@ marc('040','e',
        'HR PPIAK'
 );
 
-# if (rec('300') && first(rec('300')) =~ m/Prijevod/) {
-#      marc_indicators('041', 1, ' ');
-# } else {
-#      marc_indicators('041', 0, ' ');
-# }
-
-## naci primjer u NSK
+marc_indicators('041', 0, ' ');
 
 marc_repeatable_subfield('041','a',
        rec('101')
 );
 
 
-if (   ( rec('200','a') =~ m/^Die /) || 
-       ( rec('200','a') =~ m/^Das /) || 
-       ( rec('200','a') =~ m/^The /) ) {
-               marc_indicators('245', 0, 4);
-} else {
-       marc_indicators('245', 0, 0);
-}
-
 #_debug(3);
 
-marc('044','a',
-       lookup(
-               sub { rec('102','a') },
-               'nsk','bbaza',
-               sub { rec('011','a') },
-               sub { rec('11') },
-       ),
-);
+## 044 - zemlja izdavanja
+
+if ( rec('11') ) {
+       marc('044','a',
+               lookup(
+                       sub { rec('102','a') },
+                       'nsk','bbaza',
+                       sub { first( rec('011','a') ) },
+                       sub { rec('11') },
+               ),
+       );
+}
 
 marc('080','a',
        rec('675','a')
 );
 
-marc_indicators('100', 1, ' ');
-marc('100','a',
-       join_with(', ',
-               rec('700', 'a'),
-               rec('700', 'b')
-       )
-);
-
-marc_indicators('110', 2, ' ');
-marc('110','a',
-       rec('710','a')
-);
+marc_indicators('210', '1',' ');
 
-marc('110','c',
-       rec('710','c')
+if ( rec('11') ) {
+marc('210','a',
+       lookup(
+               sub { rec('531','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
 );
+}
 
+marc_indicators('222',' ','0');                # drugi indikator prema èlanu
+if ( rec('11') ) {
 marc('222','a',
        lookup(
                sub { rec('530','a') },
@@ -150,9 +142,20 @@ marc('222','a',
                sub { rec('11') },
        ) 
 );
+}
  
 ### 245 indikatori
 
+if (   ( rec('200','a') =~ m/^Die /) || 
+       ( rec('200','a') =~ m/^Das /) || 
+       ( rec('200','a') =~ m/^The /) ) {
+               marc_indicators('245', 0, 4);
+} else {
+       marc_indicators('245', 0, 0);
+}
+
+
+## 245
 marc_compose('245',
        'a', suffix(
                ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
@@ -189,40 +192,76 @@ marc_compose('245',
 );
 
 ## 246
+if (   ( rec('200','a') =~ m/^Die /) || 
+       ( rec('200','a') =~ m/^Das /) || 
+       ( rec('200','a') =~ m/^The /) ) {
+               marc_indicators('246', 0, 4);
+} else {
+       marc_indicators('246', 0, 0);
+}
 
-marc_indicators('246', 1, 3);
 
-marc('246','a',
-       rec('532')
-);
+if ( rec('532') ) {
+       marc('246','a',
+               rec('532')
+       );
+} 
+
+#else {
+#      marc('246','a',
+#              lookup(
+#                      sub { rec('532','a') },
+#                      'nsk','bbaza',
+#                      sub { rec('011','a') },
+#                      sub { rec('11') },
+#              )
+#      );
+#}
 
 #_debug(0);
 
-marc('250','a',
-       suffix(
-               rec('205','f') ? ' / ' :
-                                ' '.
-                       rec('205','a')
-       )
-);
 
-marc('250','b',
-       rec('205','f')
-);
-
-# ponovljiva potpolja u originalnom redosljedu
-# 
-marc_original_order('260', '210');
+## 260 - izdavanje
+
+# if ( rec('11') ) {
+#      marc_repeatable_subfield('260','a',
+#              lookup(
+#                      sub { rec('210','a') },
+#                      'nsk','bbaza',
+#                      sub { rec('011','a') },
+#                      sub { rec('11') },
+#              ) 
+#      );
+#      marc_repeatable_subfield('260','b',
+#              lookup(
+#                      sub { rec('210','c') },
+#                      'nsk','bbaza',
+#                      sub { rec('011','a') },
+#                      sub { rec('11') },
+#              ) 
+#      );
+#      marc('260','c',
+#              lookup(
+#                      sub { rec('210','d') },
+#                      'nsk','bbaza',
+#                      sub { rec('011','a') },
+#                      sub { rec('11') },
+#              ) 
+#      );
+# } else {
+#      marc_original_order('260', '210');
+# }
 
+marc_original_order('260','210');
 
 # provjeriti interpunkcije !!
 # u NSK nesto ne stima
 
 marc('300','a',
        suffix(
-               rec('215','c')  ?  ' : ' :
-               rec('215','d')  ?  ' ; ' :
-               rec('215','e')  ?  ' + ' :
+               ( rec('215','a') && rec('215','c') )    ?  ' : ' :
+               ( rec('215','a') && rec('215','d') )    ?  ' ; ' :
+               ( rec('215','a') && rec('215','e') )    ?  ' + ' :
                                   ' ',
                        rec('215','a')
        )
@@ -249,41 +288,49 @@ marc('300','e',
        rec('215','e')
 );
 
+## 310 - current stated publication frequency
 marc('310','a',
-       lookup(
-               sub { rec('326','a') },
-               'nsk','bbaza',
-               sub { rec('011','a') },
-               sub { rec('11') },
-       ) 
-);
-marc('321','a',
        rec('326')
 );
 
+## 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
+# marc('321','a',
+#      ovo bi trebalo procitati iz NSK konvertiranih podataka
+#);
+
 marc_indicators('362', 0, ' ');
 
-marc('362','a',
-       lookup(
-               sub { rec('207','a') },
-               'nsk','bbaza',
-               sub { rec('011','a') },
-               sub { rec('11') },
-       ),
-);
 
+## 362
+if ( rec('207','a') ) {
+       marc('362','a',
+               rec('207','a'),
+       );
+} else {
+       if ( rec('11') ) {
+               marc('362','a',
+                       lookup(
+                               sub { rec('207','a') },
+                               'nsk','bbaza',
+                               sub { first( rec('011','a') ) },
+                               sub { rec('11') },
+                       ) 
+               );
+       }
+}
 
+## 5xx
 marc('500','a',
-       lookup(
-               sub { rec('300','a') },
-               'nsk','bbaza',
-               sub { rec('011','a') },
-               sub { rec('11') },
-       ) 
+       rec('300','a'),
 );
  
-marc('500','a',
+marc('534','a',
+       rec('324')
+);
+
+if ( rec('11') ) {
+marc('546','a',
        lookup(
                sub { rec('302','a') },
                'nsk','bbaza',
@@ -291,151 +338,60 @@ marc('500','a',
                sub { rec('11') },
        ) 
 );
-marc('504','a',
-       lookup(
-               sub { rec('320','a') },
+
+marc('550','a',
+       lookup(
+               sub { rec('314','a') },
                'nsk','bbaza',
                sub { rec('011','a') },
                sub { rec('11') },
        ) 
 );
 
-marc('562','a',
+marc('555','a',
        lookup(
-               sub { rec('316','a') },
+               sub { rec('320','a') },
                'nsk','bbaza',
                sub { rec('011','a') },
                sub { rec('11') },
        ) 
 );
-
-#marc('500','a',
-#      rec('300')
-#);
-#
-#marc('500','a',
-#      rec('314')
-#);
-#
-#marc('504','a',
-#      rec('320')
-#);
-
-## napomene uz konverziju polja 327 (sadrzaj):
-# NSK konvertira 327 (NP) u 501 (R)
-# u LOC konv. tablici stoji 327 (NP) u 505 (NR)
-# standard i validacije dopu¹taju 501 (R) i 505 (R)
-
-## FFPS 327 - sadrzaj
-if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
-       marc_indicators('505', '1', ' ');
-       marc('505','a',
-               regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
-                       rec('327')
-               )       
-);
-}
-
 
-## napomene uz konverziju polja 330:
-# NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
 
-
-# FFPS 330 (NP) - sa¾etak
-if ( config() =~ m/ffps/ ) { 
-       marc('520','a',
-               regex('s/[\\r\\n]+/. /g',
-                       rec('330')
-               )       
-       );
+# marc('562','a',
+#      lookup(
+#              sub { rec('316','a') },
+#              'nsk','bbaza',
+#              sub { rec('011','a') },
+#              sub { rec('11') },
+#      ) 
+# );
 }
-
-# FFTU 330 - ???
-if ( config() =~ m/fftu/ ) { 
-       marc('520','a',
-               rec('330')
-       );
-}
-
-
-# mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
-
-
-### 534
-
-marc('534','a',
-       rec('324')
-);
-
-
-marc_indicators('655', ' ', 4);
-marc('655','a',
-       rec('608')
-);
-
 marc_indicators('653', 0, ' ');
 marc('653','a',
        rec('610')
 );
 
-# 675 podpolja c, d ... - ¹to s njima ???
-
-# 084 je other classification (R)
-# NSK ga koristi za struènu oznaku NSK iz polja 681
-# NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
-#
-
+# marc_indicators('655', ' ', 4);
+# marc('655','a',
+#      lookup(
+#              sub { rec('608','a') },
+#              'nsk','bbaza',
+#              sub { rec('011','a') },
+#              sub { rec('11') },
+#      ) 
+# );
 
 
 #_debug(2);
 
 marc_indicators('700', 1, ' ');
 
-if ( rec('701') ) { 
-marc('700','4', 
-       'aut'
-); 
-}
-
-marc('700','a',
-       join_with(', ',
-               rec('701', 'a'),
-               rec('701', 'b')
-       )
-);
-
-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'),
 );
 
-
-# ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
-
-
 marc('700','a',
        join_with(', ',
                rec('702','c'),
@@ -443,82 +399,40 @@ marc('700','a',
        )
 );
 
-marc('700','a',
-       join_with(', ',
-               rec('702','e'),
-               rec('702','f')
-       )
-);
-
-marc('700','a',
-       join_with(', ',
-               rec('702','g'),
-               rec('702','h')
-       )
-);
-
  
 #_debug(0);
 
-
-
-marc_indicators('740', 0, ' ');
-
-if ( ! rec('464') ) {
-marc('740','a',
-       rec('200','c')
-);
-
-marc('740','a',
-       rec('200','k')
+marc_indicators('710', '2', ' ');
+marc('710','a',
+       rec('710','a')
 );
 
-} else {
-marc('740','a',
-       rec('464','a')
-);
-};
 
 marc_indicators('770', 0, ' ');
 marc('770','t',
-       rec('430','a'),
+       rec('421','a'),
 );
 
-marc('770','x',
-       rec('430','b'),
+marc_indicators('772', 0, ' ');
+marc('772','t',
+       rec('422','a'),
 );
 
-if ( rec('225','a') ) {
-
-marc_indicators('773', 0, ' ');
-marc('773','g',
-       rec('207','a')
+marc_indicators('777', 0, ' ');
+marc('777','t',
+       rec('423','a'),
 );
 
-marc('773','t',
-       join_with(' : ',
-               rec('225','a'),
-               rec('225','e')
-       ),
+marc_indicators('780', 0, 0);
+marc('780','t',
+       rec('430','a'),
 );
 
-marc('773','w',
-       lookup(
-               sub { 
-                       join_with('', 
-                               uc( config() ),
-                               ' P',
-                               rec('000')
-                       ),
-               },
-               'ffsf','peri',
-               sub { rec('200','a') },
-               sub { rec('225','a') },
-       )
+marc_indicators('785', 0, 0);
+marc('785','t',
+       rec('440','a'),
 );
 
-}
-
 marc('852','j',
        join_with(' ',
                rec('990')
@@ -535,39 +449,38 @@ marc('992','a',
        )
 );
 
-
  
-marc('997','a',
-       sort(
-               lookup(
-                       sub { rec('001') },
-                       'nsk','bbaza',
-                       sub { rec('011','a') },
-                       sub { rec('11') },
-               )
-       )
-);
-
-marc('998','a',
-       sort(
-               lookup(
-                       sub { rec('001') },
-                       'nsk','bbaza',
-                       sub { first(rec('200','a')) . first(rec('200','e')) },
-                       sub { rec('200','a') . rec('200','e') },
-               )
-       )
-);
-
-marc('998','a',
-       sort(
-               lookup(
-                       sub { rec('001') },
-                       'nsk','bbaza',
-                       sub { first(rec('200','a')) },
-                       sub { rec('200','a') },
-               )
-       )
-);
+marc('997','a',
+#      sort(
+#              lookup(
+#                      sub { rec('001') },
+#                      'nsk','bbaza',
+#                      sub { rec('011','a') },
+#                      sub { rec('11') },
+#              )
+#      )
+);
+# 
+marc('998','a',
+#      sort(
+#              lookup(
+#                      sub { rec('001') },
+#                      'nsk','bbaza',
+#                      sub { first(rec('200','a')) . first(rec('200','e')) },
+#                      sub { rec('200','a') . rec('200','e') },
+#              )
+#      )
+);
+# 
+marc('998','a',
+#      sort(
+#              lookup(
+#                      sub { rec('001') },
+#                      'nsk','bbaza',
+#                      sub { first(rec('200','a')) },
+#                      sub { rec('200','a') },
+#              )
+#      )
+);
 
 }