1 #########################################################################
3 ## Ova datoteka sadr¾i pravila za generiranje MARC21 ISO 2709 izlazne ##
4 ## datoteke. Ulazni format je CDS/ISIS sa zapisima u UNIMARC-u. ##
6 ##########################################################################
8 # konvertira se ako postoji polje 200^a
10 if ( rec('200','a') ) {
14 # u nekim knji¾nicama koristi se 999a i 999b, a u nekima samo 999
16 if ( rec('999') && first(rec('999')) =~ m/(pregledan|P)/i) {
17 marc_leader('05','c');
19 marc_leader('05','n');
22 marc_leader('06','a');
23 marc_leader('07','m');
24 marc_leader('18','i');
27 marc_leader('19','r');
35 # Privemeno koristimo 035$6 umjesto 035$9, zato ¹to marclint prijavljuje 9 kao gre¹ku.
36 # marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako?
37 # kako mora izgledati polje 035$9? mo¾e li sadr¾avati slova i razmake?
42 # config('input normalize path'),
46 # config('input name'),
55 # postoji modify -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (sfb)
81 # pretpostavke o indikatorima:
83 # 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadr¾i /Prijevod/ , i1 = 1
84 # (Da li je napomena uvijek pisana?)
86 # 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
88 # 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
89 # (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
90 # pr. 821.111-2=163.42 je prijevod engleske drame na HR.
91 # to ima samo za knji¾evna djela, eseje....
94 if ( rec('675') =~ m/\d=\d/ ) {
95 #if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) {
96 marc_indicators('041', 1, ' ');
98 marc_indicators('041', 0, ' ');
103 # ponovljivo polje konvertira se u ponovljivo potpolje
106 marc_repeatable_subfield('041','a',
113 # 675 podpolja c, d ... - ¹to s njima ???
120 ### 084 - other classification (R)
121 # NSK ga koristi za struènu oznaku NSK iz polja 681
122 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
123 # polje 686 koristi FFPS
131 # I1 = 0 ako je pseudonim (ima 700a, nema 700b)
133 marc_indicators('100', 1, ' ');
143 # provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
144 # ovo vrijedi za FFSFB
146 if ( rec('710','f') ) {
148 marc_indicators('111', 2, ' ');
161 marc_indicators('110', 2, ' ');
174 # i1 = 1 za sve zapise
175 # i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
176 # treba nadopuniti i dati podatke na verifikaciju knji¾nièarima
178 marc_indicators('245', 1, 0);
180 if ( ( rec('200','a') =~ m/^Die /) ||
181 ( rec('200','a') =~ m/^Das /) ||
182 ( rec('200','a') =~ m/^The /) ) {
183 marc_indicators('245', 1, 4);
186 if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
188 marc_indicators('245', 1, 2);
197 rec('200','b') ? '. ' :
198 rec('200','k') ? ' ; ' :
199 rec('200','d') ? ' = ' :
200 rec('200','e') ? ' : ' :
201 rec('200','f') ? ' / ' :
205 # 'h', rec('200','b'),
207 ( rec('200','k') && rec('200','f') ) ? ' / ' :
214 ( rec('200','d') && rec('200','f') ) ? ' / ' :
219 ( rec('200','e') && rec('200','f') ) ? ' / ' :
228 # append to last subfield
243 rec('205','f') ? ' / ' :
255 # ponovljiva potpolja u originalnom redosljedu
257 marc_original_order('260', '210');
261 # provjeriti interpunkcije !!
265 rec('215','c') ? ' : ' :
266 rec('215','d') ? ' ; ' :
267 rec('215','e') ? ' + ' :
275 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
276 ( rec('215','c') && rec('215','e') ) ? ' + ' :
284 rec('215','e') ? ' + ' :
296 # 2.ind. prema jeziku i èlanu
298 marc_indicators('440', ' ', '0');
359 ### 502 - bilje¹ka o disertacijama
360 # odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
368 ## napomene uz konverziju polja 327 (sadrzaj):
369 # NSK konvertira 327 (NP) u 501 (R)
370 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
371 # standard i validacije dopu¹taju 501 (R) i 505 (R)
374 ## FFPS 327 - sadrzaj
376 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
377 marc_indicators('505', '0', ' ');
379 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
387 ## napomene uz konverziju polja 330:
388 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
392 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
394 # FFPS 330 (NP) - sa¾etak
395 if ( config() =~ m/ffps/ ) {
397 regex('s/[\\r\\n]+/. /g',
404 if ( config() =~ m/fftu/ ) {
420 marc_indicators('246', 1, 3);
427 marc_indicators('655', ' ', 4);
434 marc_indicators('653', 0, ' ');
444 marc_indicators('700', 1, ' ');
486 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
510 ## treba provjeriti da li polje 330 sadrzi jos neke podatke koji mogu biti u <> ili su tu iskljucivo autori? da li samo autori ili neke druge osobe?
545 marc_indicators('740', 0, ' ');
547 # if ( ! rec('464') ) {
564 ### generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
567 my $series_key = join_with('',
575 marc_indicators('760', 0, ' ');
585 # my $dup_key = join_with('',
596 # marc_indicators('776', 0, ' ');
605 ##################################
607 ## pomoæni ispisi - privremeno! ##
609 ##################################
611 if ( ! rec('464') && rec('200','c') ) {
617 if ( ! rec('464') && rec('200','k') ) {
623 if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
625 'ima-464-nema-200c-ili-200k'
633 if ( rec('200') =~ m/prev/ ) {