--- trunk/conf/normalize/ff-peri.pl 2007/09/06 19:12:15 889 +++ trunk/conf/normalize/ff-peri.pl 2007/09/06 19:12:31 890 @@ -25,33 +25,45 @@ 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 @@ ) ); -# 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 @@ '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('210', '1',' '); -marc_indicators('110', 2, ' '); -marc('110','a', - rec('710','a') -); - -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 @@ 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 @@ ); ## 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') -); +## 260 - izdavanje -# ponovljiva potpolja u originalnom redosljedu -# -marc_original_order('260', '210'); +# 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 @@ 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 @@ 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') - ) - ); -} - -# FFTU 330 - ??? -if ( config() =~ m/fftu/ ) { - marc('520','a', - rec('330') - ); +# marc('562','a', +# lookup( +# sub { rec('316','a') }, +# 'nsk','bbaza', +# sub { rec('011','a') }, +# sub { rec('11') }, +# ) +# ); } - - -# 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', - 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('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') }, +# ) +# ) +# ); }