--- trunk/conf/normalize/ff-peri.pl 2007/08/23 19:23:46 879 +++ trunk/conf/normalize/ff-peri.pl 2007/08/23 19:23:53 880 @@ -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 @@ # 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 @@ #_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 @@ 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 @@ # 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 @@ # 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 @@ #_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('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') }, + ) + ) +); + }