# UNIMARC formatu, sa vi¹estrukim odstupanjima od standarda.
-## lookup rezultat za sabrana djela
-my $sabrana;
+## lookup rezultat za sabrana djela (probna procedura za filozofiju od koje se odustalo)
+# my $sabrana;
-## konvertira se ako postoji polje 200^a
+## sve skupa se konvertira tek ako postoji polje 200^a
if ( rec('200','a') ) {
### LEADER
-## LDR 05 - c = pregledan ; n = new
-## provjeriti za svaku bazu koje polje koristi
-## 999^aP - SFM
-
-if ( rec('999','a') && rec('999','a') =~ m/(pregledan|P)/i) {
- marc_leader('05','c');
-} else {
- marc_leader('05','n');
-}
+## LDR 05 - n - new
+marc_leader('05','n');
## LDR 06 - a - language material
-
- marc_leader('06','a');
+marc_leader('06','a');
## LDR 07 - m - Monograph/item
+marc_leader('07','m');
+
+# ovo je bila proba za filozofiju
+# if ( config() =~ m/fffi/ ) {
+# $sabrana =
+# lookup(
+# sub{ rec('A') },
+# 'fffi','sabrana',
+# sub { rec('B') },
+# sub { rec('000') }
+# );
+# }
+#
+# if ( ! $sabrana ) {
+# marc_leader('07','m');
+# } else {
+# marc_leader('07','c');
+# }
-if ( config() =~ m/fffi/ ) {
- $sabrana =
- lookup(
- sub{ rec('A') },
- 'fffi','sabrana',
- sub { rec('B') },
- sub { rec('000') }
- );
-}
-
-if ( ! $sabrana ) {
- marc_leader('07','m');
-} else {
- marc_leader('07','c');
-}
-
-## LDR 17 - Encoding level ; 7 - minimal level
- marc_leader('17','7');
+## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
+marc_leader('17','u');
## LDR 18 - i - isbd
- marc_leader('18','i');
+marc_leader('18','i');
-## LDR 19
-# # - Not specified or not applicable; a - Set; b - Part with independent title; c - Part with dependent title
+## LDR 19 - Multipart resource record level ; # - Not specified or not applicable, a - Set, b - Part with independent title, c - Part with dependent title
#if ( ( ! $sabrana ) && ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
# marc_leader('19','a');
),
);
} elsif ( rec('994','c') =~ m/\d{6}/ ) {
- marc_fixed('008', 00,
+ marc_fixed('008','00',
regex('s/^\d\d//',
rec('994','c')
),
);
- marc_fixed('008', '04',
+ marc_fixed('008','04',
'01'
);
} elsif ( rec('994','c') =~ m/\d{4}/ ) {
rec('994','c')
),
);
- marc_fixed('008', '02',
+ marc_fixed('008','02',
'0101'
);
+} else {
+ marc_fixed('008','00',
+ '010101'
+ );
}
#warn( dump(
## 008 06 - Type of date/Publication status
-## 008 07-10 - Date 1 -
-## srediti sve moguæe oznake za godine (06)
+## 008 07-10 - Date 1
+## 008 11-14 - Date 2
## 210d kroz modify postaje 210c
if ( rec('210','c') ) {
my $d1 = '';
my $d2 = '';
- if ( rec('210','c') =~ m/(\?)/ ) {
- marc_fixed('008','06','q');
- if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
- $d1 = $1.'uu';
- }
- if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
- $d1 = $1.'u';
- }
- if ( rec('210','c') =~ m/(\d{4})/ ) {
- $d1 = $1;
- }
- } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
- if ( $sabrana ) {
- marc_fixed('008','06','i');
- } else {
- marc_fixed('008','06','m');
- }
+ if ( rec('210','c') =~ m/(\d{4})-/ ) {
+ marc_fixed('008','06','m');
if ( rec('210','c') =~ m/(\d{4})-/ ) {
$d1 = $1;
$d2 = '9999';
if ( rec('210','c') =~ m/(\d{4})/ ) {
$d1 = $1;
}
+ if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
+ $d1 = $1.'uu';
+ }
+ if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
+ $d1 = $1.'u';
+ }
}
+
+# if ( rec('210','c') =~ m/(\?)/ ) {
+# marc_fixed('008','06','q');
+# if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
+# $d1 = $1.'uu';
+# }
+# if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
+# $d1 = $1.'u';
+# }
+# if ( rec('210','c') =~ m/(\d{4})/ ) {
+# $d1 = $1;
+# }
+# } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
+# if ( $sabrana ) {
+# marc_fixed('008','06','i');
+# } else {
+# marc_fixed('008','06','m');
+# }
+# marc_fixed('008','06','m')
+# if ( rec('210','c') =~ m/(\d{4})-/ ) {
+# $d1 = $1;
+# $d2 = '9999';
+# }
+# if ( rec('210','c') =~ m/-(\d{4})/ ) {
+# $d2 = $1;
+# }
+# } else {
+# marc_fixed('008','06','s');
+# if ( rec('210','c') =~ m/(\d{4})/ ) {
+# $d1 = $1;
+# }
+# }
marc_fixed('008','07',$d1); # 07-10 - Date 1
marc_fixed('008','11',$d2); # 07-10 - Date 1
}
-## 008 11-14 - Date 2
-## 008 15-17 - Place of publication, production, or execution - ¹to ako nema 102?
-## raspraviti
-
-marc_fixed('008','15','xx');
+## 008 15-17 - Place of publication, production, or execution - ako nema 102, popunjava se s |
+marc_fixed('008','15','|||');
#marc_fixed('008','15',
# lc ( rec('102') )
lc( frec('101'))
);
-## 008 38 - Modified record - razjasniti
+## 008 38 - Modified record
marc_fixed('008','38','|');
## 008 39 - Cataloging source - d (other)
marc_fixed('008','22','|');
## 008 23 - Form of item
+marc_fixed('008','23','|');
## 008 24-27 - Nature of contents
marc_fixed('008','24','||||');
marc_fixed('008','34','|');
### 020
-## modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
-
-if ( frec('10') ne ( frec('290') ) ) {
+## postoji modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
+#if ( frec('10') ne ( frec('290') ) ) {
if ( rec('10','a') !~ /pogre/ ) {
marc('020','a',
# isbn_13(
marc('020','z',
rec('10','z')
);
-}
+#}
#warn(
# dump(
### 035$
## marc 035a - System Number
-## polje mo¾e sadr¾avati slova i razmake, problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
+## polje mo¾e sadr¾avati slova i razmake
+## moguæ problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
marc('035','a',
join_with('',
# config('name'),
'HR-ZaFF ',
config(),
- 'L-',
+ 'L',
# config('input name'),
# id(),
# rec('994','a'),
## (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....
+## ovo treba kasnije ispravljati
#if ( rec('675') =~ m/\d=\d/ ) ?
);
}
- ### 041
- ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
- ## polje se koristi kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu
- #_debug(2);
-
-#_debug(0);
+### 041
+## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
+## koristi se kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu
+## nadopuniti
### 044
-## kako dobiti zemlju izdavanja?
+## koristi se kad ima vi¹e zemalja izdavanja
### 080
## 675 podpolja b, c, d ... - ¹to s njima? - provjeriti za svaku bazu
## fi: abcd
+## sk: ima \r\n na kraju
marc('080','a',
rec('675','a')
## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
## polje 686 koristi FFPS. jo¹ netko?
+marc('084','2',
+ 'APA CC'
+);
marc('084','a',
rec('686')
);
### formalna odrednica - iz 503 u 110, i1=0, i2=1
### 111 i 110
-## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
+## provjeriti za svaku bazu
+## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake zbirke - moguæe su gre¹ke.
## popraviti interpunkciju
# ovo vrijedi za FFSFB
## i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
## treba provjeriti
-my $i1;
+my $titleind1;
if ( rec('700') || rec('710') ) {
- $i1 = 1;
+ $titleind1 = 1;
} else {
- $i1 = 0;
+ $titleind1 = 0;
}
-marc_indicators('245', $i1, 0);
+marc_indicators('245', $titleind1, 0);
if ( rec('200','a') =~ m/^Einen / ) {
- marc_indicators('245', $i1, 6);
+ marc_indicators('245', $titleind1, 6);
}
if ( rec('200','a') =~ m/^Eine / ) {
- marc_indicators('245', $i1, 5);
+ marc_indicators('245', $titleind1, 5);
}
if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
- marc_indicators('245', $i1, 4);
+ marc_indicators('245', $titleind1, 4);
}
if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) {
- marc_indicators('245', $i1, 3);
+ marc_indicators('245', $titleind1, 3);
}
if ( ( rec('101') =~ m/ENG/ ) && ( rec('200','a') =~ m/^A / ) ) {
- marc_indicators('245', $i1, 2);
-}
+ marc_indicators('245', $titleind1, 2);
+}
if ( rec('200','a') =~ m/^L / ) {
- marc_indicators('245', $i1, 2);
+ marc_indicators('245', $titleind1, 2);
}
if ( rec('200','a') =~ m/^L'/ ) {
- marc_indicators('245', $i1, 2);
+ marc_indicators('245', $titleind1, 2);
}
#_debug(0);
### 246
-## i1=1 ukoliko pravilo nalaze napomenu, ali napomenu necemo pisati ponovo u 500
-## i1=3 ako pravlo na nalze napomenu
+## i1=1 ukoliko pravilo nala¾e napomenu, ali napomenu necemo pisati ponovo u 500
+## i1=3 ako pravlo na nala¾e napomenu
## vidi na wiki
## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
-
marc_indicators('246', 3, ' ');
marc('246','a',
rec('532')
);
### 250
-## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
-
+## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti za svaku bazu
marc_compose('250',
'a',suffix(
rec('205','f') ? ' / ' :
### 260
## ponovljiva potpolja u originalnom redosljedu - priprema u modify
-
- marc_original_order('260', '210');
+marc_original_order('260', '210');
### 300
## urediti interpunkcije za sve kombinacije
-
marc('300','a',
suffix(
rec('215','c') ? ' : ' :
);
### 362 - brojèani podaci za nakladnièku cjelinu - to mi nemamo, polje se koristi samo za èasopise
-
+## i1 = 0 - formalizirani oblik navoda
+## i1 = 1 - neformalizirani
+## i2 nema
# if ( ! rec('225','z') ) {
}
### 526 - STUDY PROGRAM INFORMATION NOTE
-## provjeriti za svaku bazu sta je u 996?
-
+## u nekim bazame je to u 996 - provjeriti za svaku bazu sta je u 996?
marc_indicators('526', 8, ' ');
-
marc('526','a',
rec('996')
);
### 538 - zahtjevi sustava
-
marc('538','a',
rec('337','a')
);
-### 655
-
-marc_indicators('655', ' ', 4);
-marc('655','a',
- rec('608')
-);
-
-### 653
+### 653 - Index Term-Uncontrolled
## da li ponovljivo polje ili potpolje, pogledati u Koha tags
-
marc_indicators('653', ' ', ' ');
marc('653','a',
rec('610')
);
+### 655 - Index Term-Genre/Form
+marc_indicators('655', ' ', 4);
+marc('655','a',
+ rec('608')
+);
+
#_debug(2);
### 700
## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
-## ako ima samo podpolje a onda je pseudonim - popraviti indikator
-
-marc_indicators('700', 1, ' ');
+## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
+if ( rec('701','a') =~ m/, / ) {
+ marc_indicators('700', 1, ' ');
+} else {
+ marc_indicators('700', 0, ' ');
+}
marc('700','a',
rec('701', 'a'),
);
+
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'),
+ rec('702','a'),
);
marc('700','a',
join_with(', ',
#_debug(0);
+## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
-### 740 - sta s tim?
-marc_indicators('740', 0, ' ');
+### 740 - Added Entry - Uncontrolled Related/Analytical Title
+## raspraviti
+## nadopuniti prvi indikator prema èlanovima
+marc_indicators('740', '0', ' ');
# if ( ! rec('464') ) {
# marc('740','a',
# };
-# -------------------------------------------------------------------
-### 760 w
+### 760 w ---------------------------------------------
## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
#if (
# rec('293'),
# )
#);
-#
+
+
### 852 - ne koristimo, koristimo 942 i 952
-### 876 - item information - basic bibliographic unit
+### 876 - item information - basic bibliographic unit (R)
+## da li ovdje zapisati stare inventarne brojeve?
#marc('876','a',
# rec('991','t'),
#);
### 886 - former marc
# inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba
-
-marc_indicators('886', 2, ' ');
-marc('886','2',
- 'ffmarc'
-);
-marc('886','a',
- '994'
-);
-marc('886','b',
- join_with(''.
- '##^a',
- join_with('',
- prefix('^a',
- rec('994','a'),
- ),
- prefix('^b',
- rec('994','b')
- )
- )
- )
-);
+#
+# marc_indicators('886', 2, ' ');
+# marc('886','2',
+# 'ffmarc'
+# );
+# marc('886','a',
+# '994'
+# );
+# marc('886','b',
+# join_with(''.
+# '##^a',
+# join_with('',
+# prefix('^a',
+# rec('994','a'),
+# ),
+# prefix('^b',
+# rec('994','b')
+# )
+# )
+# )
+#);
### KOHA items
'LIB'
);
-
if ( grep( m/Posebni otisak/, rec('300') ) ) {
marc('942','c',
'SEP'
);
}
+## 990 u sk ima \r\n na kraju
+
marc('942','d',
join_with(' | ',
rec('990')
)
);
-if ( config() =~ m/ffan/ ) {
- my $novasig1 =
- lookup(
- sub { rec('C') },
- 'ffan','mapirano',
- sub { rec('B') },
- sub { rec('990') }
- );
- my $novasig2 =
- lookup(
- sub { rec('C') . ' ' . rec('D') },
- 'ffan','starasig',
- sub { rec('A') },
- sub { rec('000') },
- );
- marc('942','h',
- $novasig1
+my $novasig1 =
+ lookup(
+ sub { rec('C') },
+ 'ffiz','mapirano',
+ sub { rec('B') },
+ sub { rec('990') }
);
- marc('942','i',
- $novasig2
+my $novasig2 =
+ lookup(
+ sub { rec('C') . ' ' . rec('D') },
+ 'ffiz','starasig',
+ sub { rec('A') },
+ sub { rec('000') },
);
-}
+marc('942','h',
+ $novasig1
+);
+
+marc('942','i',
+ $novasig2
+);
-if ( config() =~ m/ffsf|ffpo|fffi/ ) {
- my $sig1 =
+if ( config() =~ m/ffar/ ) {
+ my $novasig1 =
lookup(
- sub { rec('C') },
- 'fffi','signature',
- sub { rec('B') },
- sub { frec('990') },
+ sub { rec('E') },
+ 'ffar','mapirano',
+ sub { rec('A') },
+ sub { rec('000') }
);
- if ( rec('700','a') ) {
+ if ( $novasig1 ) {
marc('942','h',
- $sig1,
+ $novasig1
);
+ } else {
+ marc('942','h',
+ 'ARH'
+ );
+ }
+
+
+}
+
+if ( config() =~ m/ffsf|ffpo|fffi|ffar|ffsk/ ) {
+# my $sig1 =
+# lookup(
+# sub { rec('C') },
+# 'fffi','signature',
+# sub { rec('B') },
+# sub { frec('990') },
+# );
+ if ( rec('700','a') ) {
+# marc('942','h',
+# $sig1,
+# );
if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
marc('942','i',
join_with(' ',
);
}
} elsif ( rec('710','a') ) {
- marc('942','h',
- $sig1,
- );
+# marc('942','h',
+# $sig1,
+# );
if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
marc('942','i',
join_with(' ',
);
}
} elsif ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
- marc('942','h',
- $sig1,
- );
+# marc('942','h',
+# $sig1,
+# );
marc('942','i',
regex('s/^.{4}(.{3}).*/$1/',
uc ( rec('200','a') )
);
} else {
- marc('942','h',
- $sig1,
- );
+# marc('942','h',
+# $sig1,
+# );
marc('942','i',
regex('s/(^\w{3}).*/$1/',
uc ( rec('200','a') )
)
)
}
-} # if config()
+} # if config() za oznaku primjerka
if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
- warn "nema primjeraka";
+ warn "skupni zapis - nema primjeraka";
} else {
marc('952','8',
rec('991','8')
rec('991','y')
);
}
+
+### LOKALNA POLJA
+## 1. da li je zapis pregledan ili nije i datum kad je pregledan
+## provjeriti za svaku bazu koje polje koristi
+## SFM: 999^aP
+## AN: 999 Pregledan
+## raspraviti
+
+
+
} # polje 200a
# } sig