more local changes
[webpac2] / conf / normalize / ff-peri.pl
index 9f9d833..da6f110 100644 (file)
@@ -1,39 +1,69 @@
 if ( rec('200','a') ) {
 
-# Leader
-# raspraviti 17,18
-
-# u nekim knji¾nicama koristi se 999a i 999b
 
+# LEADER
+# raspraviti 17,18
 
-# vrijedi za ffan...
+marc_leader('05','n');
+marc_leader('06','a');
 
-if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
-       marc_leader('05','c');
+if ( rec('225','a') ) {
+       marc_leader('07','b');
 } else {
-       marc_leader('05','n');
+       marc_leader('07','s');
 }
 
-       marc_leader('06','a');
-       marc_leader('07','s');
-       marc_leader('18','i');
+marc_leader('18','i');
 
+if ( rec('225','a') ) {
        marc_leader('19','r');
-
+}
 
 # 001 polje - Voyager
 
+# 007
+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
+
+## 022
+
+if ( ! rec('225','a') ) {
+       marc('022','a',
+               rec('11')
+       );
+}
+
 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
 
 marc('035','6',
-join_with('',
-#              config('input normalize path'),
-#              config('name'),
-               config(),
-               'L',
-#              config('input name'),
-#              id(),
-#              rec('994','a'),
+       join_with('',
+               uc( config() ),
+               ' P',
                rec('000')
        )
 );
@@ -43,13 +73,6 @@ join_with('',
 
 # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
 
-marc('020','a',
-       rec('10')
-);
-
-marc('022','a',
-       rec('11')
-);
 
 # u polje 040a mo¾da jo¹ dodati prefiks HR
 # NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
@@ -89,47 +112,89 @@ if (       ( rec('200','a') =~ m/^Die /) ||
 
 #_debug(3);
 
+marc('044','a',
+       lookup(
+               sub { rec('102','a') },
+               'nsk','bbaza',
+               sub { 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('110','c',
+       rec('710','c')
+);
+
+marc('222','a',
+       lookup(
+               sub { rec('530','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
+);
+### 245 indikatori
+
 marc_compose('245',
        'a', suffix(
-               rec('200','b') ? '. '   :
-               rec('200','k') ? ' ; '  :
-               rec('200','d') ? ' = '  :
-               rec('200','e') ? ' : '  :
-               rec('200','f') ? ' / '  :
-                                '.',
-                       rec('200','a')
+               ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
+               ( rec('200','d') ) ? ' = ' :
+               ( rec('200','e') ) ? ' : ' :
+               ( rec('200','k') ) ? ' ; ' :
+                       '', 
+                       rec('200','a'),
        ),
-       'h', rec('200','b'),
        'b', suffix(
-               ( rec('200','k') && rec('200','f') ) ? ' / ' :
-                                                      ' ',
-                       join_with(' ; ',
-                               rec('200','k'),
-                       ),
+               ( rec('200','d') && rec('200','f') ) ? ' / ' : 
+               ( rec('200','d') && rec('200','c') ) ? '. '  : 
+                       '',
+                       rec('200','d'),
        ),
        'b', suffix(
-               ( rec('200','d') && rec('200','f') ) ? ' / ' :
-                                                      ' ',
-                               rec('200','d'), 
+               ( rec('200','e') && rec('200','f') ) ? ' / ' : 
+               ( rec('200','e') && rec('200','c') ) ? '. '  : 
+                       '',
+                       rec('200','e'),
        ),
        'b', suffix(
-               ( rec('200','e') && rec('200','f') ) ? ' / ' :
-                                                      ' ',
-                       join_with(' : ',
-                               rec('200','e'),
-                       ),
+               ( rec('200','k') && rec('200','f') ) ? ' / ' : 
+               ( rec('200','k') && rec('200','c') ) ? '. '  : 
+                       '',
+                       rec('200','k'),
        ),
-
-# ovo trenutno radi za sluèaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!!
-       'c', join_with('. ',
-               rec('200','f'),
-               rec('200','c'),
+       'c', suffix(
+               ( rec('200','f') && rec('200','c') ) ? '. ' :
+                       '',
+                       rec('200','f'),
        ),
-# FIXME append to last subfield
-#      '+', prefix('. ', rec('200','c') ),
-
+       '+', rec('200','c'),
 );
 
+## 246
+
+marc_indicators('246', 1, 3);
+
+marc('246','a',
+       rec('532')
+);
 
 #_debug(0);
 
@@ -184,46 +249,67 @@ marc('300','e',
        rec('215','e')
 );
 
-
-# provjeriti
-
-marc_indicators('490', 0, ' ');
-
-marc('490','a',
-       rec('225','a')
+marc('310','a',
+       lookup(
+               sub { rec('326','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
+);
+marc('321','a',
+       rec('326')
 );
 
-marc('490','v',
-       join_with(', ',
-               rec('225','v'),
-               rec('225','w')
+marc_indicators('362', 0, ' ');
+
+marc('362','a',
+       lookup(
+               sub { rec('207','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
        ),
 );
 
-marc('490','x',
-       rec('225','x')
-);
 
-#marc('490','a',
-#      join_with(' : ',
-#              rec('225','a'),
-#              join_with(" =  ",
-#                      rec('225','d'),
-#                      join_with(" / ",
-#                              rec('225','e'),
-#                              rec('225','f')
-#                      )
-#              )
-#      )
-#);
+marc('500','a',
+       lookup(
+               sub { rec('300','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
+);
+marc('500','a',
+       lookup(
+               sub { rec('302','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
+);
+marc('504','a',
+       lookup(
+               sub { rec('320','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
+);
 
-#marc('490','v',
-#      join2_with(225, 'v', ' , ', 225,'w');
-#      join_with(', ',
-#              rec('225','v'),
-#              rec('225','w')
-#      )
-#);
+marc('562','a',
+       lookup(
+               sub { rec('316','a') },
+               'nsk','bbaza',
+               sub { rec('011','a') },
+               sub { rec('11') },
+       ) 
+);
 
 #marc('500','a',
 #      rec('300')
@@ -276,11 +362,14 @@ if ( config() =~ m/fftu/ ) {
 
 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
 
-marc_indicators('246', 1, 3);
-marc('246','a',
-       rec('532')
+
+### 534
+
+marc('534','a',
+       rec('324')
 );
 
+
 marc_indicators('655', ' ', 4);
 marc('655','a',
        rec('608')
@@ -293,27 +382,12 @@ marc('653','a',
 
 # 675 podpolja c, d ... - ¹to s njima ???
 
-marc('080','a',
-       rec('675','a')
-);
-
 # 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
 #
-# polje 686 koristi FFPS
 
-marc('084','a',
-       rec('686')
-);
 
-marc_indicators('100', 1, ' ');
-marc('100','a',
-       join_with(', ',
-               rec('700', 'a'),
-               rec('700', 'b')
-       )
-);
 
 #_debug(2);
 
@@ -387,43 +461,6 @@ marc('700','a',
 #_debug(0);
 
 
-if ( rec('710','f') ) {
-
-marc_indicators('111', 2, ' ');
-marc('111','a',
-       rec('710','a')
-);
-
-marc('111','c',
-       rec('710','e')
-);
-
-marc('111','d',
-       rec('710','f')
-);
-
-marc('111','e',
-       rec('710','b')
-);
-
-marc('111','n',
-       rec('710','d')
-);
-
-
-} else {
-       
-marc_indicators('110', 2, ' ');
-marc('110','a',
-       rec('710','a')
-);
-
-marc('110','c',
-       rec('710','c')
-);
-
-};
-
 
 marc_indicators('740', 0, ' ');
 
@@ -442,54 +479,95 @@ marc('740','a',
 );
 };
 
-marc('500','a',
-       lookup(
-               sub { rec('304','a') },
-               'nsk','baza',
-               sub { rec('200','a') },
-       ) 
+marc_indicators('770', 0, ' ');
+marc('770','t',
+       rec('430','a'),
 );
 
-marc('500','a',
-       lookup(
-               sub { rec('306','a') },
-               'nsk','baza',
-               sub { rec('200','a') },
-       ) 
+marc('770','x',
+       rec('430','b'),
 );
 
-marc('500','a',
-       lookup(
-               sub { rec('314','a') },
-               'nsk','baza',
-               sub { rec('200','a') },
-       ) 
+if ( rec('225','a') ) {
+
+marc_indicators('773', 0, ' ');
+marc('773','g',
+       rec('207','a')
 );
 
-marc('500','a',
-       lookup(
-               sub { rec('316','a') },
-               'nsk','baza',
-               sub { rec('200','a') },
-       ) 
+marc('773','t',
+       join_with(' : ',
+               rec('225','a'),
+               rec('225','e')
+       ),
 );
 
-marc('504','a',
+marc('773','w',
        lookup(
-               sub { rec('320','a') },
-               'nsk','baza',
+               sub { 
+                       join_with('', 
+                               uc( config() ),
+                               ' P',
+                               rec('000')
+                       ),
+               },
+               'ffsf','peri',
                sub { rec('200','a') },
-       ) 
+               sub { rec('225','a') },
+       )
 );
 
-marc('900','a',
-       sort(
-               lookup(
-                       sub { rec('000') },
-                       'ffps','peri',
-                       sub { rec('200','a') },
-               )
+}
+
+marc('852','j',
+       join_with(' ',
+               rec('990')
+       )
+);
+
+marc('876','a',
+       rec('991','a')
+);
+
+marc('992','a',
+       join_with(' ; ', 
+               rec('992')
        )
 );
 
+
+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') },
+               )
+       )
+);
+
 }