### 001 - Voyager
+### 007
+
+marc_fixed('007',00,'ta');
+
### 008
+if ( rec('994','c') ) {
+ marc_fixed('008','00',
+ regex('s/^\d\d//',
+ rec('994','c')
+ ),
+ );
+} else {
+ marc_fixed('008', 00,
+ '000101'
+ );
+}
+
+#warn( dump(
+# regex('s/^\d\d//',
+# rec('994','c')
+# ),
+#)
+#);
+
+## FIXME treba velika slova pretvoriti u mala
+
+marc_fixed('008','35',
+ first( rec('101') )
+);
+
+
+
### 035$6
# Privemeno koristimo 035$6 umjesto 035$9, zato ¹to marclint prijavljuje 9 kao gre¹ku.
# marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako?
### 041 indikatori
# pretpostavke o indikatorima:
#
-# 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadr¾i /Prijevod/ , i1 = 1
+# 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
# (Da li je napomena uvijek pisana?)
#
# 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
# (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
# pr. 821.111-2=163.42 je prijevod engleske drame na HR.
# to ima samo za knji¾evna djela, eseje....
+# ????
#if ( rec('675') =~ m/\d=\d/ ) {
-if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) {
+if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) {
marc_indicators('041', 1, ' ');
} else {
marc_indicators('041', 0, ' ');
### 245 indikatori
-# i1 = 1 za sve zapise
+# i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
# i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
# treba nadopuniti i dati podatke na verifikaciju knji¾nièarima
-marc_indicators('245', 1, 0);
+my $i1;
+
+if ( rec('700') || rec('710') ) {
+ $i1 = 1;
+
+} else {
+ $i1 = 0;
+}
+
+marc_indicators('245', $i1, 0);
if ( ( rec('200','a') =~ m/^Die /) ||
( rec('200','a') =~ m/^Das /) ||
( rec('200','a') =~ m/^The /) ) {
- marc_indicators('245', 1, 4);
+ marc_indicators('245', $i1, 4);
}
if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
- marc_indicators('245', 1, 2);
+ marc_indicators('245', $i1, 2);
}
if ( ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
- marc_indicators('245', 1, 2);
+ marc_indicators('245', $i1, 2);
}
### 245
-# redoslijed polja
+# redoslijed polja va¾an
+# podpolja i interpunkcije pripremljeni u modify
#_debug(3);
+
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','b') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : ' ',
+ rec('200','a'),
),
-# 'h', rec('200','b'),
'b', suffix(
- ( rec('200','k') && rec('200','f') ) ? ' / ' :
- ' ',
- join_with(' ; ',
- rec('200','k'),
- ),
- ),
- 'b', suffix(
- ( rec('200','d') && rec('200','f') ) ? ' / ' :
- ' ',
- rec('200','d'),
+ ( rec('200','b') && rec('200','f') ) ? ' / ' :
+ ( rec('200','b') && rec('200','c') ) ? '. ' :
+ ' ',
+ rec('200','b'),
),
- 'b', suffix(
- ( rec('200','e') && rec('200','f') ) ? ' / ' :
- ' ',
- join_with(' : ',
- rec('200','e'),
- ),
+ 'c', suffix(
+ ( rec('200','f') && rec('200','c') ) ? '. ' :
+ ' ',
+ rec('200','f'),
),
+ '+', rec('200','c'),
+);
- 'c', rec('200','f'),
+#_debug(0);
-# append to last subfield
- '+', prefix('. ',
- rec('200','c')
- ),
-);
+#marc_compose('245',
+# 'a', suffix(
+# rec('200','b') ? '. ' :
+# rec('200','k') ? ' ; ' :
+# rec('200','d') ? ' = ' :
+# rec('200','e') ? ' : ' :
+# rec('200','f') ? ' / ' :
+# '.',
+# rec('200','a')
+# ),
+## 'h', rec('200','b'),
+# 'b', suffix(
+# ( rec('200','k') && rec('200','f') ) ? ' / ' :
+# ' ',
+# join_with(' ; ',
+# rec('200','k'),
+# ),
+# ),
+# 'b', suffix(
+# ( rec('200','d') && rec('200','f') ) ? ' / ' :
+# ' ',
+# rec('200','d'),
+# ),
+# 'b', suffix(
+# ( rec('200','e') && rec('200','f') ) ? ' / ' :
+# ' ',
+# join_with(' : ',
+# rec('200','e'),
+# ),
+# ),
+# 'c', rec('200','f'),
+### append to last subfield
+# '+', prefix('. ',
+# rec('200','c')
+# ),
+#);
-#_debug(0);
### 250
suffix(
( rec('215','c') && rec('215','d') ) ? ' ; ' :
( rec('215','c') && rec('215','e') ) ? ' + ' :
- ' ',
+ ' ',
rec('215','c')
)
);
marc_indicators('440', ' ', '0');
+if ( ( rec('225','a') =~ m/^Die /) ||
+ ( rec('225','a') =~ m/^Das /) ||
+ ( rec('225','a') =~ m/^The /) ) {
+ marc_indicators('440', ' ', 4);
+}
+
+if ( ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
+ marc_indicators('440', ' ', 2);
+}
+
+if ( ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
+ marc_indicators('440', ' ', 2);
+}
+
marc('440','a',
- join_with(' : ',
- rec('225','a'),
- join_with(' / ',
- rec('225','e'),
- rec('225','f')
- )
- )
-) ;
+ rec('225','a'),
+);
marc('440','n',
rec('225','h')
);
marc('440','v',
- join_with(', ',
- rec('225','v'),
- rec('225','w')
- ),
+ rec('225','v'),
);
marc('440','x',
rec('225','x')
);
-marc('440','a',
- rec('225','b'),
-);
-
### 490
#
#);
-### 500
+### 50x
marc('500','a',
rec('300')
);
}
+if ( config() =~ m/ffan/ ) {
+ marc_indicators('505', '0', ' ');
+ marc('505','a',
+ regex('s/[<>]//g',
+ rec('330')
+ )
+);
+}
+
## napomene uz konverziju polja 330:
);
}
-# FFTU 330 - ???
-if ( config() =~ m/fftu/ ) {
- marc('520','a',
- rec('330')
- );
-}
+### 526 - STUDY PROGRAM INFORMATION NOTE
+marc_indicators('526', 8, ' ');
-### 538
+marc('526','a',
+ rec('996')
+);
+
+### 538 - zahtjevi sustava
marc('538','a',
rec('337','a')
#
+## 852 - lokacija
-##################################
-## ##
-## pomoæni ispisi - privremeno! ##
-## ##
-##################################
+marc_indicators('852', 4, ' ');
-if ( ! rec('464') && rec('200','c') ) {
- marc('002',
- 'ima-200c-nema-464'
- );
-}
-
-if ( ! rec('464') && rec('200','k') ) {
- marc('003',
- 'ima-200k-nema-464'
- );
-}
+marc('852','j',
+ join_with(' ',
+ rec('990')
+ )
+);
-if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
- marc('004',
- 'ima-464-nema-200c-ili-200k'
- );
-}
+## 876 - item information - basic bibliographic unit
+marc('876','a',
+ rec('991'),
+);
+## 886 - former marc
-#_debug(2);
+marc_indicators('886', 2, ' ');
-if ( rec('200') =~ m/prev/ ) {
- marc('005',
- 'prijevod'
- );
-}
+marc('886','2',
+ 'ffmarc'
+);
-#_debug(0);
+marc('886','a',
+ '994'
+);
+marc('886','b',
+ join_with(''.
+ '##^a',
+ join_with('',
+ prefix('^a',
+ rec('994','a'),
+ ),
+ prefix('^b',
+ rec('994','b')
+ )
+ )
+ )
+);
} # polje 200a
marc_leader('07','c');
marc_leader('18','i');
+## 008
+
+marc_fixed('008','35',
+ first( rec('101') )
+);
+
marc('035','6', $series );
marc('040','a',
rec('101')
);
-# indikatori za èlanove !!
+# indikatori za 245
-marc_indicators('245', 0, 0);
+my $i1;
+
+if ( rec('700') || rec('710') ) {
+ $i1 = 1;
+
+} else {
+ $i1 = 0;
+}
+
+marc_indicators('245', $i1, 0);
-if ( ( rec('225','a') =~ m/^Die /) ||
- ( rec('225','a') =~ m/^Das /) ||
- ( rec('225','a') =~ m/^The /) ) {
- marc_indicators('245', 0, 4);
+if ( ( rec('200','a') =~ m/^Die /) ||
+ ( rec('200','a') =~ m/^Das /) ||
+ ( rec('200','a') =~ m/^The /) ) {
+ marc_indicators('245', $i1, 4);
}
-if ( ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
- {
- marc_indicators('245', 0, 2);
+if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
+ marc_indicators('245', $i1, 2);
}
-# treba dodati ostala polja za naslov ... !!!
+if ( ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
+ marc_indicators('245', $i1, 2);
+}
-marc('245','a',
- join_with(' : ',
- rec('225','a'),
- rec('225','e')
- ),
-);
-marc('245','c',
- rec('225','f')
-);
+## 245
-marc('245','n',
- rec('225','h'),
+marc('245',
+ 'a', suffix(
+ ( ! rec('225','b') && rec('225','f') ) ? ' / ' :
+ rec('225','c') ? ' / ' : ' ',
+ rec('225','a'),
+ )
);
-
-marc('245','p',
- rec('225','i'),
+marc('245',
+ 'b', suffix(
+ ( rec('225','b') && rec('225','f') ) ? ' / ' :
+ ( rec('225','b') && rec('225','c') ) ? '. ' :
+ ' ',
+ rec('225','b'),
+ ),
+);
+marc('245',
+ 'c', suffix(
+ ( rec('225','f') && rec('225','c') ) ? '. ' :
+ ' ',
+ rec('225','f'),
+ ),
);
-
marc_original_order('260', '210');
marc_remove('260','c');
-marc('300','c',
- suffix(
- rec('215','e') ? ' + ' :
- ' ',
- rec('215','d')
-
- )
-);
+## FIXME - UPISATI PODATAK U 260c
#_debug(2);
-marc('900','a',
- lookup(
- sub { rec('702','a') . ', ' . rec('702','b') },
- 'nsk','baza',
- sub { rec('200','a') . rec('210','a') . rec('210','c') },
- sub { rec('225','a') . rec('210','a') . rec('210','b') },
- )
-);
+
+#marc('900','a',
+# lookup(
+# sub { rec('702','a') . ', ' . rec('702','b') },
+# 'nsk','baza',
+# sub { rec('200','a') . rec('210','a') . rec('210','c') },
+# sub { rec('225','a') . rec('210','a') . rec('210','b') },
+# )
+#);
#_debug(0);