1 |
|
# konvertira se ako postoji polje 200^a |
2 |
|
|
3 |
if ( rec('200','a') ) { |
if ( rec('200','a') ) { |
4 |
|
|
5 |
# Leader |
### LEADER |
6 |
# raspraviti 17,18 |
# raspraviti 17,18 |
|
|
|
7 |
# u nekim knjižnicama koristi se 999a i 999b |
# u nekim knjižnicama koristi se 999a i 999b |
8 |
|
|
|
|
|
|
# vrijedi za ffan... |
|
|
|
|
9 |
if ( rec('999') && first(rec('999')) =~ m/pregledan/i) { |
if ( rec('999') && first(rec('999')) =~ m/pregledan/i) { |
10 |
marc_leader('05','c'); |
marc_leader('05','c'); |
11 |
} else { |
} else { |
20 |
marc_leader('19','r'); |
marc_leader('19','r'); |
21 |
} |
} |
22 |
|
|
23 |
|
### 001 - Voyager |
24 |
|
|
25 |
# 001 polje - Voyager |
### 008 |
26 |
|
|
27 |
|
### 035$6 |
28 |
|
# Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku. |
29 |
|
# marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako? |
30 |
|
# kako mora izgledati polje 035$9? može li sadržavati slova i razmake? |
31 |
|
|
|
# privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku |
|
32 |
|
|
33 |
marc('035','6', |
marc('035','6', |
34 |
join_with('', |
join_with(' ', |
35 |
# config('input normalize path'), |
# config('input normalize path'), |
36 |
# config('name'), |
# config('name'), |
37 |
config(), |
config(), |
43 |
) |
) |
44 |
); |
); |
45 |
|
|
|
# u marc 035a treba dodati System Number - |
|
|
# NSK zapisuje Voyagerov ID (001) - kako ??? |
|
46 |
|
|
47 |
# u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - ' |
### 020 |
48 |
|
# postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) |
49 |
|
|
50 |
marc('020','a', |
marc('020','a', |
51 |
rec('10') |
regex('s/ ISBN //g', |
52 |
|
rec('10') |
53 |
|
) |
54 |
); |
); |
55 |
|
|
56 |
# u polje 040a možda još dodati prefiks HR |
|
57 |
# NSK ima HR NSB (možda u novijim zapisima ima NSK?) |
### 040 |
58 |
|
# za sve je isti |
59 |
|
|
60 |
marc('040','a', |
marc('040','a', |
61 |
'HR FFZG' |
'HR FFZG' |
69 |
'HR PPIAK' |
'HR PPIAK' |
70 |
); |
); |
71 |
|
|
72 |
if (rec('300') && first(rec('300')) =~ m/Prijevod/) { |
|
73 |
|
### 041 indikatori |
74 |
|
# pretpostavke o indikatorima: |
75 |
|
# |
76 |
|
# 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadrži /Prijevod/ , i1 = 1 |
77 |
|
# (Da li je napomena uvijek pisana?) |
78 |
|
# |
79 |
|
# 2. Podatak o prevodiocu u 200g. Problem: različiti oblici riječi, različiti jezici. |
80 |
|
# |
81 |
|
# 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod |
82 |
|
# (ako postoje zagrade pr. 94(=411.16) onda su to pomoćne oznake) |
83 |
|
# pr. 821.111-2=163.42 je prijevod engleske drame na HR. |
84 |
|
# to ima samo za književna djela, eseje.... |
85 |
|
|
86 |
|
|
87 |
|
if ( rec('675') =~ m/\d=\d/ ) { |
88 |
|
#if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) { |
89 |
marc_indicators('041', 1, ' '); |
marc_indicators('041', 1, ' '); |
90 |
} else { |
} else { |
91 |
marc_indicators('041', 0, ' '); |
marc_indicators('041', 0, ' '); |
92 |
} |
} |
93 |
|
|
|
## naci primjer u NSK |
|
94 |
|
|
95 |
|
### 041 |
96 |
|
# ponovljivo polje konvertira se u ponovljivo potpolje |
97 |
|
|
98 |
|
#_debug(2); |
99 |
marc_repeatable_subfield('041','a', |
marc_repeatable_subfield('041','a', |
100 |
rec('101') |
rec('101') |
101 |
); |
); |
102 |
|
#_debug(0); |
103 |
|
|
104 |
|
|
105 |
|
### 080 |
106 |
|
# 675 podpolja c, d ... - što s njima ??? |
107 |
|
|
108 |
|
marc('080','a', |
109 |
|
rec('675','a') |
110 |
|
); |
111 |
|
|
112 |
|
|
113 |
|
### 084 - other classification (R) |
114 |
|
# NSK ga koristi za stručnu oznaku NSK iz polja 681 |
115 |
|
# NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom |
116 |
|
# polje 686 koristi FFPS |
117 |
|
|
118 |
|
|
119 |
|
marc('084','a', |
120 |
|
rec('686') |
121 |
|
); |
122 |
|
|
123 |
|
### 100 |
124 |
|
# I1 = 0 ako je pseudonim (ima 700a, nema 700b) |
125 |
|
|
126 |
|
marc_indicators('100', 1, ' '); |
127 |
|
marc('100','a', |
128 |
|
join_with(', ', |
129 |
|
rec('700', 'a'), |
130 |
|
rec('700', 'b') |
131 |
|
) |
132 |
|
); |
133 |
|
|
134 |
|
|
135 |
|
### 111 i 110 |
136 |
|
# provjeriti ispise naslova iz svake baze - moguće su greške. |
137 |
|
|
138 |
|
if ( rec('710','f') ) { |
139 |
|
|
140 |
|
marc_indicators('111', 2, ' '); |
141 |
|
marc('111','a', |
142 |
|
rec('710','a') |
143 |
|
); |
144 |
|
|
145 |
|
marc('111','c', |
146 |
|
rec('710','e') |
147 |
|
); |
148 |
|
|
149 |
|
marc('111','d', |
150 |
|
rec('710','f') |
151 |
|
); |
152 |
|
|
153 |
|
marc('111','e', |
154 |
|
rec('710','b') |
155 |
|
); |
156 |
|
|
157 |
|
marc('111','n', |
158 |
|
rec('710','d') |
159 |
|
); |
160 |
|
|
161 |
|
|
162 |
|
} else { |
163 |
|
|
164 |
|
marc_indicators('110', 2, ' '); |
165 |
|
marc('110','a', |
166 |
|
rec('710','a') |
167 |
|
); |
168 |
|
|
169 |
|
marc('110','c', |
170 |
|
rec('710','c') |
171 |
|
); |
172 |
|
|
173 |
|
}; |
174 |
|
|
175 |
|
|
176 |
|
### 245 indikatori |
177 |
|
# i1 = 1 za sve zapise |
178 |
|
# i2 = pretpostavlja se na temelju člana na početku naslova i jezika |
179 |
|
# treba nadopuniti i dati podatke na verifikaciju knjižničarima |
180 |
|
|
181 |
|
marc_indicators('245', 1, 0); |
182 |
|
|
183 |
if ( ( rec('200','a') =~ m/^Die /) || |
if ( ( rec('200','a') =~ m/^Die /) || |
184 |
( rec('200','a') =~ m/^Das /) || |
( rec('200','a') =~ m/^Das /) || |
185 |
( rec('200','a') =~ m/^The /) ) { |
( rec('200','a') =~ m/^The /) ) { |
186 |
marc_indicators('245', 0, 4); |
marc_indicators('245', 1, 4); |
187 |
} else { |
} |
|
marc_indicators('245', 0, 0); |
|
|
} |
|
188 |
|
|
189 |
#_debug(3); |
if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) |
190 |
|
{ |
191 |
|
marc_indicators('245', 1, 2); |
192 |
|
} |
193 |
|
|
194 |
|
### 245 |
195 |
|
# redoslijed polja |
196 |
|
|
197 |
|
#_debug(3); |
198 |
marc_compose('245', |
marc_compose('245', |
199 |
'a', suffix( |
'a', suffix( |
200 |
rec('200','b') ? '. ' : |
rec('200','b') ? '. ' : |
205 |
'.', |
'.', |
206 |
rec('200','a') |
rec('200','a') |
207 |
), |
), |
208 |
'h', rec('200','b'), |
# 'h', rec('200','b'), |
209 |
'b', suffix( |
'b', suffix( |
210 |
( rec('200','k') && rec('200','f') ) ? ' / ' : |
( rec('200','k') && rec('200','f') ) ? ' / ' : |
211 |
' ', |
' ', |
226 |
), |
), |
227 |
), |
), |
228 |
|
|
229 |
# ovo trenutno radi za slučaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!! |
'c', rec('200','f'), |
230 |
'c', join_with('. ', |
|
231 |
rec('200','f'), |
# append to last subfield |
232 |
rec('200','c'), |
'+', prefix('. ', |
233 |
|
rec('200','c') |
234 |
), |
), |
|
# FIXME append to last subfield |
|
|
# '+', prefix('. ', rec('200','c') ), |
|
235 |
); |
); |
236 |
|
|
237 |
|
|
238 |
|
|
239 |
#_debug(0); |
#_debug(0); |
240 |
|
|
241 |
|
|
242 |
|
### 250 |
243 |
|
|
244 |
marc('250','a', |
marc('250','a', |
245 |
suffix( |
suffix( |
246 |
rec('205','f') ? ' / ' : |
rec('205','f') ? ' / ' : |
253 |
rec('205','f') |
rec('205','f') |
254 |
); |
); |
255 |
|
|
256 |
|
|
257 |
|
### 260 |
258 |
# ponovljiva potpolja u originalnom redosljedu |
# ponovljiva potpolja u originalnom redosljedu |
259 |
# |
|
260 |
marc_original_order('260', '210'); |
marc_original_order('260', '210'); |
261 |
|
|
262 |
|
|
263 |
|
### 300 |
264 |
# provjeriti interpunkcije !! |
# provjeriti interpunkcije !! |
|
# u NSK nesto ne stima |
|
265 |
|
|
266 |
marc('300','a', |
marc('300','a', |
267 |
suffix( |
suffix( |
268 |
rec('215','c') ? ' : ' : |
rec('215','c') ? ' : ' : |
269 |
rec('215','d') ? ' ; ' : |
rec('215','d') ? ' ; ' : |
270 |
rec('215','e') ? ' + ' : |
rec('215','e') ? ' + ' : |
271 |
' ', |
' ', |
272 |
rec('215','a') |
rec('215','a') |
273 |
) |
) |
275 |
|
|
276 |
marc('300','b', |
marc('300','b', |
277 |
suffix( |
suffix( |
278 |
( rec('215','c') && rec('215','d') ) ? ' ; ' : |
( rec('215','c') && rec('215','d') ) ? ' ; ' : |
279 |
( rec('215','c') && rec('215','e') ) ? ' + ' : |
( rec('215','c') && rec('215','e') ) ? ' + ' : |
280 |
' ', |
' ', |
281 |
rec('215','c') |
rec('215','c') |
282 |
) |
) |
295 |
); |
); |
296 |
|
|
297 |
|
|
298 |
# provjeriti |
### 440 |
299 |
|
# 2.ind. prema jeziku i članu |
300 |
|
|
301 |
|
marc_indicators('440', ' ', '0'); |
302 |
|
|
303 |
marc_indicators('490', 0, ' '); |
marc('440','a', |
304 |
|
join_with(' : ', |
305 |
|
rec('225','a'), |
306 |
|
rec('225','e') |
307 |
|
) |
308 |
|
) ; |
309 |
|
|
310 |
marc('490','a', |
marc('440','n', |
311 |
rec('225','a') |
rec('225','h') |
312 |
); |
); |
313 |
|
|
314 |
marc('490','v', |
marc('440','p', |
315 |
|
rec('225','i') |
316 |
|
); |
317 |
|
|
318 |
|
marc('440','v', |
319 |
join_with(', ', |
join_with(', ', |
320 |
rec('225','v'), |
rec('225','v'), |
321 |
rec('225','w') |
rec('225','w') |
322 |
), |
), |
323 |
); |
); |
324 |
|
|
325 |
marc('490','x', |
marc('440','x', |
326 |
rec('225','x') |
rec('225','x') |
327 |
); |
); |
328 |
|
|
329 |
|
marc('440','a', |
330 |
|
rec('225','b'), |
331 |
|
); |
332 |
|
|
333 |
|
|
334 |
|
### 490 |
335 |
|
# |
336 |
#marc('490','a', |
#marc('490','a', |
337 |
# join_with(' : ', |
# rec('225','a') |
|
# rec('225','a'), |
|
|
# join_with(" = ", |
|
|
# rec('225','d'), |
|
|
# join_with(" / ", |
|
|
# rec('225','e'), |
|
|
# rec('225','f') |
|
|
# ) |
|
|
# ) |
|
|
# ) |
|
338 |
#); |
#); |
339 |
|
|
340 |
#marc('490','v', |
|
341 |
# join2_with(225, 'v', ' , ', 225,'w'); |
### 500 |
|
# join_with(', ', |
|
|
# rec('225','v'), |
|
|
# rec('225','w') |
|
|
# ) |
|
|
#); |
|
342 |
|
|
343 |
marc('500','a', |
marc('500','a', |
344 |
rec('300') |
rec('300') |
345 |
); |
); |
346 |
|
|
347 |
marc('500','a', |
marc('500','a', |
348 |
|
rec('305') |
349 |
|
); |
350 |
|
|
351 |
|
marc('500','a', |
352 |
|
rec('307') |
353 |
|
); |
354 |
|
|
355 |
|
marc('500','a', |
356 |
rec('314') |
rec('314') |
357 |
); |
); |
358 |
|
|
359 |
|
### 504 |
360 |
|
|
361 |
marc('504','a', |
marc('504','a', |
362 |
rec('320') |
rec('320') |
363 |
); |
); |
367 |
# u LOC konv. tablici stoji 327 (NP) u 505 (NR) |
# u LOC konv. tablici stoji 327 (NP) u 505 (NR) |
368 |
# standard i validacije dopuštaju 501 (R) i 505 (R) |
# standard i validacije dopuštaju 501 (R) i 505 (R) |
369 |
|
|
370 |
|
## 505 |
371 |
## FFPS 327 - sadrzaj |
## FFPS 327 - sadrzaj |
372 |
|
|
373 |
if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) { |
if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) { |
374 |
marc_indicators('505', '1', ' '); |
marc_indicators('505', '0', ' '); |
375 |
marc('505','a', |
marc('505','a', |
376 |
regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g', |
regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g', |
377 |
rec('327') |
rec('327') |
380 |
} |
} |
381 |
|
|
382 |
|
|
383 |
|
|
384 |
## napomene uz konverziju polja 330: |
## napomene uz konverziju polja 330: |
385 |
# NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica |
# NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica |
386 |
|
|
387 |
|
|
388 |
|
### 520 |
389 |
|
# možda i polje 520y - jezik napomene ako je uvijek isti jezik |
390 |
|
|
391 |
# FFPS 330 (NP) - sažetak |
# FFPS 330 (NP) - sažetak |
392 |
if ( config() =~ m/ffps/ ) { |
if ( config() =~ m/ffps/ ) { |
393 |
marc('520','a', |
marc('520','a', |
405 |
} |
} |
406 |
|
|
407 |
|
|
408 |
# možda i polje 520y - jezik napomene ako je uvijek isti jezik |
### 538 |
409 |
|
|
410 |
|
marc('538','a', |
411 |
|
rec('337','a') |
412 |
|
); |
413 |
|
|
414 |
|
|
415 |
|
### 246 |
416 |
|
|
417 |
marc_indicators('246', 1, 3); |
marc_indicators('246', 1, 3); |
418 |
marc('246','a', |
marc('246','a', |
419 |
rec('532') |
rec('532') |
420 |
); |
); |
421 |
|
|
422 |
|
### 655 |
423 |
|
|
424 |
marc_indicators('655', ' ', 4); |
marc_indicators('655', ' ', 4); |
425 |
marc('655','a', |
marc('655','a', |
426 |
rec('608') |
rec('608') |
427 |
); |
); |
428 |
|
|
429 |
|
### 653 |
430 |
|
|
431 |
marc_indicators('653', 0, ' '); |
marc_indicators('653', 0, ' '); |
432 |
marc('653','a', |
marc('653','a', |
433 |
rec('610') |
rec('610') |
434 |
); |
); |
435 |
|
|
436 |
# 675 podpolja c, d ... - što s njima ??? |
#_debug(2); |
|
|
|
|
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') |
|
|
); |
|
437 |
|
|
|
marc_indicators('100', 1, ' '); |
|
|
marc('100','a', |
|
|
join_with(', ', |
|
|
rec('700', 'a'), |
|
|
rec('700', 'b') |
|
|
) |
|
|
); |
|
438 |
|
|
439 |
#_debug(2); |
### 700 |
440 |
|
|
441 |
marc_indicators('700', 1, ' '); |
marc_indicators('700', 1, ' '); |
442 |
|
|
505 |
); |
); |
506 |
|
|
507 |
## 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? |
## 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? |
508 |
|
# |
|
|
|
509 |
# marc('700','a', |
# marc('700','a', |
510 |
# rec('330','a') |
# rec('330','a') |
511 |
# ); |
# ); |
535 |
#_debug(0); |
#_debug(0); |
536 |
|
|
537 |
|
|
|
if ( rec('710','f') ) { |
|
|
|
|
|
marc_indicators('111', 2, ' '); |
|
|
marc('111','a', |
|
|
rec('710','a') |
|
|
); |
|
538 |
|
|
|
marc('111','c', |
|
|
rec('710','e') |
|
|
); |
|
539 |
|
|
540 |
marc('111','d', |
### 740 |
|
rec('710','f') |
|
|
); |
|
541 |
|
|
542 |
marc('111','e', |
marc_indicators('740', 0, ' '); |
|
rec('710','b') |
|
|
); |
|
543 |
|
|
544 |
marc('111','n', |
# if ( ! rec('464') ) { |
545 |
rec('710','d') |
# marc('740','a', |
546 |
); |
# rec('200','c') |
547 |
|
# ); |
548 |
|
|
549 |
|
marc('740','a', |
550 |
|
rec('200','k') |
551 |
|
); |
552 |
|
|
553 |
} else { |
# } else { |
|
|
|
|
marc_indicators('110', 2, ' '); |
|
|
marc('110','a', |
|
|
rec('710','a') |
|
|
); |
|
554 |
|
|
555 |
marc('110','c', |
#marc('740','a', |
556 |
rec('710','c') |
# rec('464','a') |
557 |
); |
#); |
558 |
|
|
559 |
}; |
# }; |
560 |
|
|
561 |
|
### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim |
562 |
|
|
|
marc_indicators('740', 0, ' '); |
|
563 |
|
|
564 |
if ( ! rec('464') ) { |
my $series_key = join_with('', |
565 |
marc('740','a', |
rec('225','a'), |
566 |
rec('200','c') |
rec('210','a'), |
567 |
|
rec('210','b'), |
568 |
); |
); |
569 |
|
|
570 |
marc('740','a', |
if ($series_key) { |
|
rec('200','k') |
|
|
); |
|
571 |
|
|
572 |
} else { |
marc_indicators('760', 0, ' '); |
573 |
marc('740','a', |
|
574 |
rec('464','a') |
marc('760','w', |
575 |
); |
get( $series_key ) |
576 |
}; |
); |
577 |
|
|
578 |
|
} |
579 |
|
|
580 |
|
### testing |
581 |
|
# |
582 |
|
# my $dup_key = join_with('', |
583 |
|
# rec('200','a'), |
584 |
|
#); |
585 |
|
# |
586 |
|
#if ($dup_key) { |
587 |
|
# marc('995','a', |
588 |
|
# get( $dup_key ) |
589 |
|
# ); |
590 |
|
#} |
591 |
|
# |
592 |
|
# |
593 |
|
# marc_indicators('776', 0, ' '); |
594 |
|
# |
595 |
|
# marc('776','a', |
596 |
|
# rec('452','1') |
597 |
|
# ); |
598 |
|
# |
599 |
|
|
600 |
|
|
601 |
## višerazinci |
### višerazinci |
602 |
|
# odvojiti u posebnu datoteku i dokumentirati |
603 |
|
|
604 |
|
|
605 |
if ( rec('230') ) { |
if ( rec('230') ) { |
606 |
|
|
700 |
rec('260') |
rec('260') |
701 |
); |
); |
702 |
|
|
703 |
marc_remove('490'); |
marc_remove('440'); |
704 |
marc('490','a', |
marc('440','a', |
705 |
rec('270') |
rec('270') |
706 |
); |
); |
707 |
|
|
732 |
); |
); |
733 |
|
|
734 |
|
|
735 |
}; |
} |
736 |
|
|
737 |
|
################################## |
738 |
|
## ## |
739 |
|
## pomoćni ispisi - privremeno! ## |
740 |
|
## ## |
741 |
|
################################## |
742 |
|
|
743 |
|
if ( ! rec('464') && rec('200','c') ) { |
744 |
|
marc('002', |
745 |
|
'ima-200c-nema-464' |
746 |
|
); |
747 |
|
} |
748 |
|
|
749 |
|
if ( ! rec('464') && rec('200','k') ) { |
750 |
|
marc('003', |
751 |
|
'ima-200k-nema-464' |
752 |
|
); |
753 |
|
} |
754 |
|
|
755 |
|
if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) { |
756 |
|
marc('004', |
757 |
|
'ima-464-nema-200c-ili-200k' |
758 |
|
); |
759 |
|
} |
760 |
|
|
761 |
|
|
762 |
|
|
763 |
|
#_debug(2); |
764 |
|
|
765 |
|
if ( rec('200') =~ m/prev/ ) { |
766 |
|
marc('005', |
767 |
|
'prijevod' |
768 |
|
); |
769 |
|
} |
770 |
|
|
771 |
|
#_debug(0); |
772 |
|
|
773 |
|
|
774 |
|
|
775 |
} |
} |