--- trunk/conf/normalize/ff-peri.pl 2007/10/29 21:59:43 905 +++ trunk/conf/normalize/ff-peri.pl 2007/10/31 18:07:33 944 @@ -1,11 +1,13 @@ if ( rec('200','a') ) { ### LEADER -# raspraviti 17,18 +## raspraviti 17,18 marc_leader('05','n'); # Record status marc_leader('06','a'); # Type of record +## izvuci podatke iz tablice (za po i sf) + if ( rec('225','a') ) { marc_leader('07','d'); } else { @@ -14,6 +16,9 @@ marc_leader('18','i'); # Descriptive cataloging form +# ako postoji neko od polja 76x-78x - LDR 19 je r, ako ne postoji onda je prazno +# tematski brojevi imaju vezu u + if ( rec('225','a') ) { marc_leader('19','r'); # Linked record requirement } @@ -23,7 +28,6 @@ ### 007 marc_fixed('007',00,'ta'); - ### 008 - All materials # što zapisati u polje kad datum nije poznat? @@ -33,39 +37,47 @@ ## c - Continuing resource currently published ## d - Continuing resource ceased publication +my $year = rec('210','c'); + if ( rec('210','c') ) { marc_fixed('008','06','s'); # 06 - Type of date/Publication status, s = single know date + +# warn "## year = $year"; - my $year = rec('210','c'); - warn "## year = $year"; if ( $year =~ m/^(\d{4})/ ) { -# warn "## $1 ##"; +# warn "## $1 ##\n"; marc_fixed('008','07',$1); # 07-10 - Date 1 } - + + if ( $year =~ m/^\d{4}-(\d{4})/ ) { +# warn "## $1 ##"; + marc_fixed('008','11',$1); # 11-14 - Date 2 + marc_fixed('008','06','d'); + } + } else { marc_fixed('008','06','n'); # 06 - n = unknown date } - -# marc_fixed('008','11', ' '); # 11-14 - Date 2 -marc_fixed('008','15', +marc_fixed('008','15', # 15-17 - Place of publication, production, or execution lc ( rec('102') ) -); # 15-17 - Place of publication, production, or execution +); + + + marc_fixed('008','35', first( lc(rec('101')) ) # 35-37 - Language ); -marc_fixed('008','38', '|'); # 38 - Modified record -marc_fixed('008','39','d'); # 39 - Cataloging source - + # 38 - Modified record + # 39 - Cataloging source ### 008 - Continuing resources if ( ! rec('225','a') ) { -marc_fixed('008','18', '|'); # 18 - Frequency - ovo treba popuniti iz polja 326 - # 19 - Regularity +marc_fixed('008','18', 'u'); # 18 - Frequency - ovo treba popuniti iz polja 326 +marc_fixed('008','19', 'u'); # 19 - Regularity # 20 - Undefined, ontains a blank (#) or fill character (|) # za polje 008 21 treba lookup u tablicu: @@ -92,16 +104,18 @@ ### 022 -if ( ! rec('225','a') ) { +#if ( ! rec('225','a') ) { marc('022','a', rec('11') ); -} +#} ### 035$6 # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku -marc('035','6', +my $id; + +$id = ( join_with('', uc( config() ), ' P', @@ -109,6 +123,7 @@ ) ); +marc('035','6', $id); ### 040 # za sve je isti @@ -152,12 +167,10 @@ ); ### 210 indikatori - # marc_indicators('210', '1',' '); -### 210 -# pronaći priladan izvor podataka (nsk baza, issn baza) - +### 210 - ABBREVIATED TITLE +# pronaći prikladan izvor podataka (nsk baza, issn baza) ## iz nsk #if ( rec('11') ) { @@ -198,50 +211,70 @@ ### 245 indikatori # generiraju se prema članu i jeziku. potrebna naknadna kontrola. +marc_indicators('245', 0, 0); + if ( ( rec('200','a') =~ m/^Die /) || ( rec('200','a') =~ m/^Das /) || + ( rec('200','a') =~ m/^Der /) || + ( rec('200','a') =~ m/^Les /) || ( rec('200','a') =~ m/^The /) ) { marc_indicators('245', 0, 4); -} else { - marc_indicators('245', 0, 0); -} + +} + +if ( ( rec('200','a') =~ m/^Un /) || + ( rec('200','a') =~ m/^An /) || + ( rec('200','a') =~ m/^La /) || + ( rec('200','a') =~ m/^Le /) || + ( rec('200','a') =~ m/^Il /) ) { + marc_indicators('245', 0, 3); +} + + +if ( ( rec('200','a') =~ m/^A /) || + ( rec('200','a') =~ m/^L'/) ) { + marc_indicators('245', 0, 2); +} + ### 245 marc_compose('245', 'a', suffix( - ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' : - ( rec('200','d') ) ? ' = ' : - ( rec('200','e') ) ? ' : ' : - ( rec('200','k') ) ? ' ; ' : + ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' : + ( rec('200','d') ) ? ' =' : + ( rec('200','e') ) ? ' :' : + ( rec('200','k') ) ? ' ;' : '', rec('200','a'), ), 'b', suffix( - ( rec('200','d') && rec('200','f') ) ? ' / ' : - ( rec('200','d') && rec('200','c') ) ? '. ' : + ( rec('200','d') && rec('200','f') ) ? ' /' : + ( rec('200','d') && rec('200','c') ) ? '.' : '', rec('200','d'), ), 'b', suffix( - ( rec('200','e') && rec('200','f') ) ? ' / ' : - ( rec('200','e') && rec('200','c') ) ? '. ' : + ( rec('200','e') && rec('200','f') ) ? ' /' : + ( rec('200','e') && rec('200','c') ) ? '.' : '', rec('200','e'), ), 'b', suffix( - ( rec('200','k') && rec('200','f') ) ? ' / ' : - ( rec('200','k') && rec('200','c') ) ? '. ' : + ( rec('200','k') && rec('200','f') ) ? ' /' : + ( rec('200','k') && rec('200','c') ) ? '.' : '', rec('200','k'), ), 'c', suffix( - ( rec('200','f') && rec('200','c') ) ? '. ' : + ( rec('200','f') && rec('200','c') ) ? '.' : '', rec('200','f'), ), - '+', rec('200','c'), + '+', suffix('.', + rec('200','c'), + ) ); ### 246 inikatori @@ -345,7 +378,7 @@ ); ### 310 - current stated publication frequency -# potrebno ujednačiti, polje 008? +# potrebno ujednačiti, koristi se i u polju 008 marc('310','a', rec('326') @@ -414,18 +447,27 @@ rec('225','x') ); -#if ( rec('225','a') && rec('11') ) { -# marc('999','a', -# lookup( -# sub { rec('110','a'), }, -# 'nsk','bbaza', -# sub { rec('011','a') }, -# sub { rec('11') } -# ) -# ); -#} +if ( rec('11') ) { + marc('999','a', + lookup( + sub { rec('110','a'), }, + 'nsk','bbaza', + sub { rec('011','a') }, + sub { rec('11') } + ) + ); +} +#marc('998','a', +# lookup( +# sub { rec('H') }, +# 'ffsf','xls', +# sub { rec('A') }, +# sub { $id }, +# ), +#); + ### 5xx # koje podatke povući iz drugih baza? @@ -549,11 +591,37 @@ rec('422','a'), ); +### 773 indikatori + +if ( rec('225','a') ) { + +marc_indicators('773', 0, ' '); + +### 773 +## da li je bitan redoslijed potpolja? + +marc('773','w', + lookup( + sub { rec('000') }, + 'ffsf','peri', + sub { rec('200','a') }, + sub { + regex('s/ ; //g', + rec('225','a') + ) + }, + ) +); + +} + + ### 777 indikatori marc_indicators('777', 0, ' '); ### 777 + marc('777','t', rec('423','a'), ); @@ -645,4 +713,4 @@ # ) # ); -} # 200a +}# 200a