/[webpac2]/trunk/conf/normalize/ff-libri.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/conf/normalize/ff-libri.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1119 - (show annotations)
Sun Oct 26 15:58:55 2008 UTC (15 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 26562 byte(s)
local

1
2 # Ova datoteka sadr¾i pravila za generiranje MARC21 ISO 2709 izlazne
3 # datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u
4 # UNIMARC formatu, sa vi¹estrukim odstupanjima od standarda.
5
6
7 ## lookup rezultat za sabrana djela (probna procedura za filozofiju od koje se odustalo)
8 # my $sabrana;
9
10
11 ## sve skupa se konvertira tek ako postoji polje 200^a
12 if ( rec('200','a') ) {
13
14 ### LEADER
15
16 ## LDR 05 - n - new
17 marc_leader('05','n');
18
19 ## LDR 06 - a - language material
20 marc_leader('06','a');
21
22 ## LDR 07 - m - Monograph/item
23 marc_leader('07','m');
24
25 # ovo je bila proba za filozofiju
26 # if ( config() =~ m/fffi/ ) {
27 # $sabrana =
28 # lookup(
29 # sub{ rec('A') },
30 # 'fffi','sabrana',
31 # sub { rec('B') },
32 # sub { rec('000') }
33 # );
34 # }
35 #
36 # if ( ! $sabrana ) {
37 # marc_leader('07','m');
38 # } else {
39 # marc_leader('07','c');
40 # }
41
42 ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
43 marc_leader('17','u');
44
45 ## LDR 18 - i - isbd
46 marc_leader('18','i');
47
48 ## LDR 19 - Multipart resource record level ; # - Not specified or not applicable, a - Set, b - Part with independent title, c - Part with dependent title
49
50 #if ( ( ! $sabrana ) && ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
51 # marc_leader('19','a');
52 #}
53
54 if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
55 marc_leader('19','a');
56 }
57
58 ### 008 - All materials
59 ## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
60 ## provjereno: fi
61
62 if ( rec('994','c') =~ m/\d{8}/ ) {
63 marc_fixed('008','00',
64 regex('s/^\d\d//',
65 rec('994','c')
66 ),
67 );
68 } elsif ( rec('994','c') =~ m/\d{6}/ ) {
69 marc_fixed('008','00',
70 regex('s/^\d\d//',
71 rec('994','c')
72 ),
73 );
74 marc_fixed('008','04',
75 '01'
76 );
77 } elsif ( rec('994','c') =~ m/\d{4}/ ) {
78 marc_fixed('008', 00,
79 regex('s/^\d\d//',
80 rec('994','c')
81 ),
82 );
83 marc_fixed('008','02',
84 '0101'
85 );
86 } else {
87 marc_fixed('008','00',
88 '010101'
89 );
90 }
91
92 #warn( dump(
93 # regex('s/^\d\d//',
94 # rec('994','c')
95 # ),
96 #)
97 #);
98
99 ## 008 06 - Type of date/Publication status
100
101 ## 008 07-10 - Date 1
102 ## 008 11-14 - Date 2
103 ## 210d kroz modify postaje 210c
104
105 if ( rec('210','c') ) {
106 my $d1 = '';
107 my $d2 = '';
108 if ( rec('210','c') =~ m/(\d{4})-/ ) {
109 marc_fixed('008','06','m');
110 if ( rec('210','c') =~ m/(\d{4})-/ ) {
111 $d1 = $1;
112 $d2 = '9999';
113 }
114 if ( rec('210','c') =~ m/-(\d{4})/ ) {
115 $d2 = $1;
116 }
117 } else {
118 marc_fixed('008','06','s');
119 if ( rec('210','c') =~ m/(\d{4})/ ) {
120 $d1 = $1;
121 }
122 if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
123 $d1 = $1.'uu';
124 }
125 if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
126 $d1 = $1.'u';
127 }
128 }
129
130 # if ( rec('210','c') =~ m/(\?)/ ) {
131 # marc_fixed('008','06','q');
132 # if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
133 # $d1 = $1.'uu';
134 # }
135 # if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
136 # $d1 = $1.'u';
137 # }
138 # if ( rec('210','c') =~ m/(\d{4})/ ) {
139 # $d1 = $1;
140 # }
141 # } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
142 # if ( $sabrana ) {
143 # marc_fixed('008','06','i');
144 # } else {
145 # marc_fixed('008','06','m');
146 # }
147 # marc_fixed('008','06','m')
148 # if ( rec('210','c') =~ m/(\d{4})-/ ) {
149 # $d1 = $1;
150 # $d2 = '9999';
151 # }
152 # if ( rec('210','c') =~ m/-(\d{4})/ ) {
153 # $d2 = $1;
154 # }
155 # } else {
156 # marc_fixed('008','06','s');
157 # if ( rec('210','c') =~ m/(\d{4})/ ) {
158 # $d1 = $1;
159 # }
160 # }
161
162 marc_fixed('008','07',$d1); # 07-10 - Date 1
163 marc_fixed('008','11',$d2); # 07-10 - Date 1
164
165 } else {
166 marc_fixed('008','06','n'); # 06 - n = unknown date
167 marc_fixed('008','07','uuuu');
168 }
169
170
171
172 ## 008 15-17 - Place of publication, production, or execution - ako nema 102, popunjava se s |
173 marc_fixed('008','15','|||');
174
175 #marc_fixed('008','15',
176 # lc ( rec('102') )
177 #);
178
179 #my $zemlja =
180 # lookup(
181 # sub { rec('B') },
182 # 'kodovi','zemlje',
183 # sub { rec('A') },
184 # sub {
185 # regex('s/[\s;:]/g',
186 # rec('210','a')
187 # )
188 # },
189 # );
190
191
192 ## 008 35-37 - Language
193 marc_fixed('008','35',
194 # first( lc(rec('101')) )
195 lc( frec('101'))
196 );
197
198 ## 008 38 - Modified record
199 marc_fixed('008','38','|');
200
201 ## 008 39 - Cataloging source - d (other)
202 marc_fixed('008','39','d');
203
204 ### 008 - Books - raspraviti upotrebu ovih polja
205 ## 008 18-21 - Illustrations
206 if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
207 marc_fixed('008','18','a')
208 }
209
210 ## 008 22 - Target audience
211 marc_fixed('008','22','|');
212
213 ## 008 23 - Form of item
214 marc_fixed('008','23','|');
215
216 ## 008 24-27 - Nature of contents
217 marc_fixed('008','24','||||');
218
219 ## 008 28 - Government publication
220 marc_fixed('008','28','|');
221
222 ## 008 29 - Conference publication
223 marc_fixed('008','29','|');
224
225 ## 008 30 - Festschrift
226 marc_fixed('008','30','|');
227
228 ## 008 31 - Index
229 marc_fixed('008','31','|');
230
231 ## 008 32 - Undefined
232 ## 008 33 - Literary form
233 marc_fixed('008','33','|');
234
235 ## 008 34 - Biography
236 marc_fixed('008','34','|');
237
238 ### 020
239 ## postoji modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
240 #if ( frec('10') ne ( frec('290') ) ) {
241 if ( rec('10','a') !~ /pogre/ ) {
242 marc('020','a',
243 # isbn_13(
244 regex('s/\s\s/ /g',
245 # regex('s/\(\d\)\(/$1 \(//g',
246 rec('10','a')
247 )
248 # )
249 );
250 }
251 if ( rec('10','a') =~ /pogre/ ) {
252 marc('020','z',
253 regex('s/\s\s/ /g',
254 rec('10','a')
255 )
256 );
257 }
258 marc('020','z',
259 rec('10','z')
260 );
261 #}
262
263 #warn(
264 # dump(
265 # frec('10')
266 # ),
267 #);
268
269 ### 035$
270 ## marc 035a - System Number
271 ## polje mo¾e sadr¾avati slova i razmake
272 ## moguæ problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
273
274 marc('035','a',
275 join_with('',
276 # config('input normalize path'),
277 # config('name'),
278 'HR-ZaFF ',
279 config(),
280 'L',
281 # config('input name'),
282 # id(),
283 # rec('994','a'),
284 rec('000')
285 )
286 );
287
288 ### 040
289 ## za sve je isti
290
291 marc('040','a',
292 'HR-ZaFF'
293 );
294 marc('040','b',
295 'hrv'
296 );
297 marc('040','c',
298 'HR-ZaFF'
299 );
300 marc('040','e',
301 'ppiak'
302 );
303
304 ### 041 - indikatori
305 ## pretpostavke o indikatorima
306 ## 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
307 ## (Da li je napomena uvijek pisana?)
308 ## 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
309 ## 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
310 ## (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
311 ## pr. 821.111-2=163.42 je prijevod engleske drame na HR.
312 ## to ima samo za knji¾evna djela, eseje....
313 ## ovo treba kasnije ispravljati
314
315 #if ( rec('675') =~ m/\d=\d/ ) ?
316
317 if (
318 grep( m/prijevod/i, rec('300') )
319 || grep( m/nasl.*izv/i, rec('300') )
320 # ( frec('300') =~ m/Prijevod/ )
321 # || ( rec('300') =~ m/izvorni stvarni naslov/i )
322 # || ( rec('300') =~ m/naslov izvornika/i )
323 # grep( m/[prijevod|stvarni\snaslov]/i, rec('300') )
324 ) {
325 marc_indicators('041', 1, ' ');
326 marc_repeatable_subfield('041','a',
327 map { lc($_) } rec('101')
328 );
329 } elsif (
330 count( rec('101') ) > 1
331 ) {
332 marc_indicators('041', 0, ' ');
333 marc_repeatable_subfield('041','a',
334 map { lc($_) } rec('101')
335 );
336 }
337
338 ### 041
339 ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
340 ## koristi se kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu
341 ## nadopuniti
342
343 ### 044
344 ## koristi se kad ima vi¹e zemalja izdavanja
345
346 ### 080
347 ## 675 podpolja b, c, d ... - ¹to s njima? - provjeriti za svaku bazu
348 ## fi: abcd
349 ## sk: ima \r\n na kraju
350
351 marc('080','a',
352 rec('675','a')
353 );
354
355 marc('080','a',
356 rec('675','b')
357 );
358
359 marc('080','a',
360 rec('675','c')
361 );
362
363 marc('080','a',
364 rec('675','d')
365 );
366
367
368 ### 084 - other classification (R)
369 ## NSK ga koristi za struènu oznaku NSK iz polja 681
370 ## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
371 ## polje 686 koristi FFPS. jo¹ netko?
372
373 marc('084','2',
374 'APA CC'
375 );
376 marc('084','a',
377 rec('686')
378 );
379
380 ### 100
381 ## I1 = 0 ako je pseudonim (ima 700a, nema 700b)
382
383 if ( rec('700','a') && ! rec('700','b') ) {
384 marc_indicators('100', 0, ' ');
385 } else {
386 marc_indicators('100', 1, ' ');
387 }
388
389 marc('100','a',
390 join_with(', ',
391 rec('700', 'a'),
392 rec('700', 'b')
393 )
394 );
395
396 ### formalna odrednica - iz 503 u 110, i1=0, i2=1
397
398 ### 111 i 110
399 ## provjeriti za svaku bazu
400 ## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake zbirke - moguæe su gre¹ke.
401 ## popraviti interpunkciju
402
403 # ovo vrijedi za FFSFB
404 if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
405
406 marc_indicators('111', 2, ' ');
407
408 marc_compose('111',
409 'a', suffix(
410 rec('710','b') ? '.' :
411 '',
412 rec('710','a'),
413 ),
414 'e', rec('710','b'),
415 'n', prefix(
416 rec('710','d') ? '(' :
417 '',
418 rec('710','d')
419 ),
420 'd', prefix(
421 ( ! rec('710','d') ) ? '(' :
422 ( ! rec('710','e') ) ? '(' :
423 '; ',
424 rec('710','f'),
425 ),
426 'c', prefix(
427 ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' :
428 ( ! rec('710','d') && ! rec('710','f') ) ? '(' :
429 '',
430 rec('710','e'),
431 ),
432 '+',')',
433 );
434 } else {
435 marc_indicators('110', 2, ' ');
436 marc('110','a',
437 rec('710','a')
438 );
439 marc('110','b',
440 rec('710','b')
441 );
442 if ( rec('710','c') ) {
443 marc('110','c',
444 surround('(', ')', rec('710','c'))
445 );
446 }
447 }
448
449 ### 245 indikatori
450 ## i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
451 ## i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
452 ## treba provjeriti
453
454 my $titleind1;
455
456 if ( rec('700') || rec('710') ) {
457 $titleind1 = 1;
458 } else {
459 $titleind1 = 0;
460 }
461
462 marc_indicators('245', $titleind1, 0);
463
464 if ( rec('200','a') =~ m/^Einen / ) {
465 marc_indicators('245', $titleind1, 6);
466 }
467 if ( rec('200','a') =~ m/^Eine / ) {
468 marc_indicators('245', $titleind1, 5);
469 }
470 if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
471 marc_indicators('245', $titleind1, 4);
472 }
473 if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) {
474 marc_indicators('245', $titleind1, 3);
475 }
476 if ( ( rec('101') =~ m/ENG/ ) && ( rec('200','a') =~ m/^A / ) ) {
477 marc_indicators('245', $titleind1, 2);
478 }
479 if ( rec('200','a') =~ m/^L / ) {
480 marc_indicators('245', $titleind1, 2);
481 }
482 if ( rec('200','a') =~ m/^L'/ ) {
483 marc_indicators('245', $titleind1, 2);
484 }
485
486
487 ### 245
488 ## postoji modify
489 ## da li treba makivati razmake u inicijalima?
490
491 #_debug(3);
492
493 marc_compose('245',
494 'a', suffix(
495 ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :
496 ( rec('200','d') ) ? ' =' :
497 ( rec('200','e') ) ? ' :' :
498 ( rec('200','k') ) ? ' ;' :
499 '.',
500 rec('200','a'),
501 ),
502 'b', suffix(
503 ( rec('200','d') && rec('200','f') ) ? ' /' :
504 ( rec('200','d') && rec('200','c') ) ? '.' :
505 '',
506 rec('200','d'),
507 ),
508 'b', suffix(
509 ( rec('200','e') && rec('200','f') ) ? ' /' :
510 ( rec('200','e') && rec('200','c') ) ? '.' :
511 '',
512 rec('200','e'),
513 ),
514 'b', suffix(
515 ( rec('200','k') && rec('200','f') ) ? ' /' :
516 ( rec('200','k') && rec('200','c') ) ? '.' :
517 '',
518 rec('200','k'),
519 ),
520 'c', suffix(
521 ( rec('200','f') && rec('200','c') ) ? '. ' :
522 '',
523 join_with(' ; ',
524 regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
525 rec('200','f'),
526 ),
527 regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
528 rec('200','g')
529 )
530 )
531 ),
532 ## append to last subfield
533 '+', suffix('.',
534 join_with(' / ',
535 rec('200','c'),
536 rec('200','x')
537 )
538 ),
539 );
540
541 #_debug(0);
542
543 ### 246
544 ## i1=1 ukoliko pravilo nala¾e napomenu, ali napomenu necemo pisati ponovo u 500
545 ## i1=3 ako pravlo na nala¾e napomenu
546 ## vidi na wiki
547 ## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
548 marc_indicators('246', 3, ' ');
549 marc('246','a',
550 rec('532')
551 );
552
553 ### 250
554 ## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti za svaku bazu
555 marc_compose('250',
556 'a',suffix(
557 rec('205','f') ? ' / ' :
558 '',
559 rec('205','a')
560 ),
561 'b', rec('205','f'),
562 );
563
564 ### 260
565 ## ponovljiva potpolja u originalnom redosljedu - priprema u modify
566 marc_original_order('260', '210');
567
568
569 ### 300
570 ## urediti interpunkcije za sve kombinacije
571 marc('300','a',
572 suffix(
573 rec('215','c') ? ' : ' :
574 rec('215','d') ? ' ; ' :
575 rec('215','e') ? ' + ' :
576 '',
577 rec('215','a')
578 )
579 );
580 marc('300','b',
581 suffix(
582 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
583 ( rec('215','c') && rec('215','e') ) ? ' + ' :
584 '',
585 rec('215','c')
586 )
587 );
588 marc('300','c',
589 suffix(
590 rec('215','e') ? ' + ' :
591 '',
592 rec('215','d')
593 )
594 );
595 marc('300','e',
596 rec('215','e')
597 );
598
599 ### 362 - brojèani podaci za nakladnièku cjelinu - to mi nemamo, polje se koristi samo za èasopise
600 ## i1 = 0 - formalizirani oblik navoda
601 ## i1 = 1 - neformalizirani
602 ## i2 nema
603
604 # if ( ! rec('225','z') ) {
605
606 # ako je naslov nakladnièke cjeline slo¾en, podatak se zapisuje u 490, s pripadajuæim 830
607
608 #if ( frec('225','a') =~ m/[\/=:]/ ) {
609 #
610 ##_debug(3);
611 #
612 #### 490
613 ### 490: Subfield _p is not allowed.
614 #
615 #marc_indicators('490','0',' ');
616 #
617 #marc_template(
618 # from => 225, to => 490,
619 # subfields_rename => [
620 # 'a' => 'a',
621 # 'x' => 'x',
622 # 'v' => 'v',
623 # 'h' => 'n',
624 # 'i' => 'p',
625 # 'w' => 'v',
626 # ],
627 # isis_template => [
628 # 'a',
629 # 'a ;|v',
630 # 'a,|x ;|v',
631 # 'a,|x ;|w',
632 # 'a,|x.|h ;|w',
633 # 'a.|h,|i ;|v',
634 # 'a ;|v.|i',
635 # 'a.|i ;|w',
636 # 'a,|x',
637 # # greske:
638 # 'i ;|v',
639 # 'i'
640 # ],
641 #);
642
643 #marc_template(
644 # from => 225, to => 490,
645 # from => "{ z => 1 }",
646 # to => "{ a => 1 }",
647 #
648 # marc_template => [
649 # 'a',
650 # ],
651 #);
652
653 # marc_indicators('830',' ','0');
654 # i2 ovisi èlanu - popraviti
655 #
656 # marc('830','a',
657 # regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
658 # rec('225','a')
659 # )
660 # );
661
662
663 #} else {
664
665 ### 440 - indikatori
666 ## 2.ind. prema jeziku i èlanu, uskladiti s 245
667
668 marc_indicators('440', ' ', '0');
669
670 if ( rec('225','a') =~ m/^Einen / ) {
671 marc_indicators('440', ' ', 6);
672 }
673
674 if ( rec('225','a') =~ m/^Eine / ) {
675 marc_indicators('440', ' ', 5);
676 }
677
678 if ( rec('225','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
679 marc_indicators('440', ' ', 4);
680 }
681
682 if ( rec('225','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
683 marc_indicators('440', ' ', 3);
684 }
685
686 if ( rec('225','a') =~ m/^(A|L') / ) {
687 marc_indicators('440', ' ', 2);
688 }
689
690 ## 440v nije ponovljivo
691
692 marc_template(
693 from => 225, to => 440,
694 subfields_rename => [
695 'a' => 'a',
696 'x' => 'x',
697 'v' => 'v',
698 'h' => 'n',
699 'i' => 'p',
700 'w' => 'v',
701 ],
702 isis_template => [
703 'a',
704 'a,|x',
705 'a,|x ;|v',
706 'a,|x.|i',
707 'a,|x.|i ;|w',
708 'a,|x.|h ;|w',
709 'a,|x.|h,|i ;|w',
710 'a,|x ;|v.|h ;|w',
711 'a,|x ;|v.|h,|i ;|w',
712 'a ;|v',
713 'a ;|v.|i',
714 'a ;|v.|h,|i',
715 'a ;|w',
716 'a ;|v.|i ;|w',
717 'a ;|v.|h,|i ;|w',
718 'a ;|v.|h ;|w',
719 'a.|h,|i',
720 'a.|h,|i ;|w',
721 'a.|i',
722 'a.|i ;|w',
723 # gre¹ke:
724 'a ;|v ;|w',
725 'a.|h',
726 'a.|h ;|w',
727 'a.|h ;|v',
728 'h,|i',
729 'h ;|v',
730 'i ;|w',
731 'v',
732 'w',
733 ],
734 );
735
736 #}
737
738 #marc_template(
739 # from => 225, to => 490,
740 # subfields_rename => [
741 # 'a' => 'a',
742 # 'x' => 'x',
743 # 'v' => 'v',
744 # 'h' => 'n',
745 # 'i' => 'p',
746 # 'w' => 'v',
747 # ],
748 # isis_template => [
749 # 'a.|h,|i ;|w',
750 # 'a.|h.|w',
751 # 'a.|i ;|w',
752 # 'a ;|v.|i',
753 # 'a ;|v.|i ;|w',
754 # 'a ;|v.|h,|i ;|w',
755 # 'a ;|v.|h ;|w',
756 # 'a ;|v ;|w',
757 # #mozda greska:
758 # 'a ;|v,|x ;|w',
759 # 'a ;|v,|x.|p',
760 # 'a,|x ;|v',
761 # 'a,|x.|p ;|w',
762 # ],
763 # from => "{ a => 1, i => 1, w => 1, \"x\" => 1 }",
764 # to => "{ a => 1, p => 1, v => 1, \"x\" => 1 }",
765 #
766 # marc_template => [
767 # 'a',
768 # 'a ;|v',
769 # 'a,|x',
770 # 'a.|n', # mozda greska
771 # 'a.|n,|p',
772 # 'a.|p',
773 # 'a ;|v.|n',
774 # 'a ;|v.|n,|p', # mozda greska
775 # 'n,|p',
776 # 'n ;|v', # mozda greska
777 # 'p ;|v',
778 # 'v',
779 # 'x',
780 # 'x ;|v' # greska
781 # ],
782 #);
783
784
785 ## marc_compose za 440 radi samo kad polje ni potpolja nisu ponovljiva. ne zapisuje dobro drugo pojavljivanje ^v, tj. ^v iza ^p (iz 225^w)
786
787 #marc_compose('440',
788 # 'a', suffix(
789 # ( rec('225','v') ) ? ' ;' :
790 # ( rec('225','w') ) ? ' ; ' :
791 # ( rec('225','x') ) ? ',' :
792 # ( rec('225','h') || rec('225','i') ) ? '.' :
793 # '.',
794 # frec('225','a')
795 # ),
796 # 'x',suffix(
797 # ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
798 # '',
799 # frec('225','x')
800 # ),
801 # 'v',suffix(
802 # ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
803 # ( rec('225','v') && rec('225','w') ) ? ' ; ' :
804 # '',
805 # frec('225','v')
806 # ),
807 # 'n',suffix(
808 # ( rec('225','h') && rec('225','i') ) ? ',' :
809 # ( rec('225','h') && rec('225','w') ) ? ' ; ' :
810 # '',
811 # frec('225','h')
812 # ),
813 # 'p',suffix(
814 # ( rec('225','i') && rec('225','w') ) ? ' ; ' :
815 # ( rec('225','i') && rec('225','x') ) ? ',' :
816 # '',
817 # frec('225','i')
818 # ),
819 ## 225w treba ici u 440v, na kraj
820 # '+', join_with(' ; ',
821 # rec('225','w'),
822 # )
823 #);
824
825 #marc_original_order('440','225');
826
827
828 #if (
829 # count( lookup(
830 # sub { 1 },
831 # 'ffps','libri',
832 # sub { rec('225','a') }
833 # ) ) > 1
834 #) {
835
836
837 #_debug(0);
838
839
840 ### 500
841
842 marc('500','a',
843 rec('300')
844 );
845
846 marc('500','a',
847 rec('305')
848 );
849
850 marc('500','a',
851 rec('307')
852 );
853
854 marc('500','a',
855 rec('314')
856 );
857
858 ### 502 - bilje¹ka o disertacijama
859 ## odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
860
861 ### 504
862
863 marc('504','a',
864 rec('320')
865 );
866
867 ### 505
868 ## FFPS 327 - sadrzaj
869 ## NSK konvertira 327 (NP) u 501 (R)
870 ## u LOC konv. tablici stoji 327 (NP) u 505 (NR)
871 ## standard i validacije dopu¹taju 501 (R) i 505 (R)
872 ## za svaku bazu posebno provjeriti sta je u poljima 327 i 330
873 if ( config() =~ m/ffps|fftu/ ) {
874 marc_indicators('505', '0', ' ');
875 marc('505','a',
876 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
877 rec('327')
878 )
879 );
880 }
881
882 if ( config() =~ m/ffan/ ) {
883 marc_indicators('505', '0', ' ');
884 marc('505','a',
885 regex('s/[<>]//g',
886 rec('330')
887 )
888 );
889 }
890
891 ### 520
892 ## NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
893 if ( config() =~ m/ffps/ ) {
894 marc('520','a',
895 regex('s/[\\r\\n]+/. /g',
896 rec('330')
897 )
898 );
899 }
900
901 ### 526 - STUDY PROGRAM INFORMATION NOTE
902 ## u nekim bazame je to u 996 - provjeriti za svaku bazu sta je u 996?
903 marc_indicators('526', 8, ' ');
904 marc('526','a',
905 rec('996')
906 );
907
908 ### 538 - zahtjevi sustava
909 marc('538','a',
910 rec('337','a')
911 );
912
913 ### 653 - Index Term-Uncontrolled
914 ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
915 marc_indicators('653', ' ', ' ');
916 marc('653','a',
917 rec('610')
918 );
919
920 ### 655 - Index Term-Genre/Form
921 marc_indicators('655', ' ', 4);
922 marc('655','a',
923 rec('608')
924 );
925
926 #_debug(2);
927
928
929 ### 700
930 ## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
931 ## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
932 if ( rec('701','a') =~ m/, / ) {
933 marc_indicators('700', 1, ' ');
934 } else {
935 marc_indicators('700', 0, ' ');
936 }
937
938 marc('700','a',
939 rec('701', 'a'),
940 );
941
942 marc('700','a',
943 join_with(', ',
944 rec('701', 'c'),
945 rec('701', 'd')
946 ),
947 );
948 marc('700','a',
949 join_with(', ',
950 rec('701', 'e'),
951 rec('701', 'f')
952 ),
953 );
954 marc('700','a',
955 join_with(', ',
956 rec('701', 'g'),
957 rec('701', 'h')
958 ),
959 );
960 marc('700','a',
961 rec('702','a'),
962 );
963 marc('700','a',
964 join_with(', ',
965 rec('702','c'),
966 rec('702','d')
967 )
968 );
969 marc('700','a',
970 join_with(', ',
971 rec('702','e'),
972 rec('702','f')
973 )
974 );
975 marc('700','a',
976 join_with(', ',
977 rec('702','g'),
978 rec('702','h')
979 )
980 );
981
982 #_debug(0);
983
984 ## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
985
986
987 ### 740 - Added Entry - Uncontrolled Related/Analytical Title
988 ## raspraviti
989 ## nadopuniti prvi indikator prema èlanovima
990 marc_indicators('740', '0', ' ');
991
992 # if ( ! rec('464') ) {
993 # marc('740','a',
994 # rec('200','c')
995 # );
996
997 marc('740','a',
998 rec('200','k')
999 );
1000
1001 # } else {
1002
1003 #marc('740','a',
1004 # rec('464','a')
1005 #);
1006
1007 # };
1008
1009 ### 760 w ---------------------------------------------
1010 ## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
1011
1012 #if (
1013 # rec('225','a') # da li je nakladnièka cjelina?
1014 #) {
1015
1016 #my $series_key =
1017 #join_with('',
1018 # rec('225','a'),
1019 # rec('210','a'),
1020 # rec('210','b'),
1021 #);
1022 #
1023 #my $series = get( $series_key );
1024 #
1025 #if ($series) {
1026 # warn "nije novi";
1027 #} else {
1028 #
1029 #$series = join_with('',
1030 # uc( config() ),
1031 # ' LS',
1032 # rec('000')
1033 #);
1034 #
1035 #set( $series_key => $series );
1036 #
1037 #} # $series
1038 #} # nakladnièka cjelina
1039 #
1040 #my $series_key = join_with('',
1041 # rec('225','a'),
1042 # rec('210','a'),
1043 # rec('210','b'),
1044 #);
1045 #
1046 #if ($series_key) {
1047 #
1048 # marc_indicators('760', 0, ' ');
1049 #
1050 # marc('760','t',
1051 # rec('225','a')
1052 # );
1053 # marc('760','w',
1054 # get( $series_key )
1055 # );
1056 #}
1057
1058 # ## testing
1059 #
1060 # my $dup_key = join_with('',
1061 # rec('200','a'),
1062 #);
1063 #
1064 #if ($dup_key) {
1065 # marc('995','a',
1066 # get( $dup_key )
1067 # );
1068 #}
1069 #
1070 #
1071 # marc_indicators('776', 0, ' ');
1072 #
1073 # marc('776','a',
1074 # rec('452','1')
1075 # );
1076 #
1077 # -------------------------------------------------------------------
1078
1079 ### 774 - Constituent Item Entry - to bi trebali koristiti ali ne koristimo jer NSK to koristi za ne¹to drugo
1080 ### 787 - Nonspecific Relationship Entry
1081
1082 #marc_indicators('787','0',' ');
1083 #
1084 #marc_compose('787',
1085 # 'g', rec('230','v'),
1086 # 't', rec('230','a'),
1087 # 'b', rec('240','a'),
1088 # 'd', rec('250','a'),
1089 # 'd', rec('250','d'),
1090 # 'h', rec('260','a'),
1091 # 'k', rec('270','a'),
1092 # 'n', join_with('. - ',
1093 # rec('280'),
1094 # ),
1095 # 'x', join_with(', ',
1096 # rec('290'),
1097 # )
1098 #);
1099 #marc_compose('787',
1100 # 'g', rec('231','v'),
1101 # 't', rec('231','a'),
1102 # 'b', rec('241','a'),
1103 # 'd', rec('251','a'),
1104 # 'd', rec('251','d'),
1105 # 'h', rec('261','a'),
1106 # 'k', rec('271','a'),
1107 # 'n', join_with('. - ',
1108 # rec('281'),
1109 # ),
1110 # 'x', join_with(', ',
1111 # rec('291'),
1112 # )
1113 #);
1114 #marc_compose('787',
1115 # 'g', rec('232','v'),
1116 # 't', rec('232','a'),
1117 # 'b', rec('242','a'),
1118 # 'd', rec('252','a'),
1119 # 'd', rec('252','d'),
1120 # 'h', rec('262','a'),
1121 # 'k', rec('272','a'),
1122 # 'n', join_with('. - ',
1123 # rec('282'),
1124 # ),
1125 # 'x', join_with(', ',
1126 # rec('292'),
1127 # )
1128 #);
1129 #marc_compose('787',
1130 # 'g', rec('233','v'),
1131 # 't', rec('233','a'),
1132 # 'b', rec('243','a'),
1133 # 'd', rec('253','a'),
1134 # 'h', rec('263','a'),
1135 # 'k', rec('273','a'),
1136 # 'n', join_with('. - ',
1137 # rec('283'),
1138 # ),
1139 # 'x', join_with(', ',
1140 # rec('293'),
1141 # )
1142 #);
1143
1144
1145 ### 852 - ne koristimo, koristimo 942 i 952
1146
1147 ### 876 - item information - basic bibliographic unit (R)
1148 ## da li ovdje zapisati stare inventarne brojeve?
1149 #marc('876','a',
1150 # rec('991','t'),
1151 #);
1152
1153 ### 886 - former marc
1154 # inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba
1155 #
1156 # marc_indicators('886', 2, ' ');
1157 # marc('886','2',
1158 # 'ffmarc'
1159 # );
1160 # marc('886','a',
1161 # '994'
1162 # );
1163 # marc('886','b',
1164 # join_with(''.
1165 # '##^a',
1166 # join_with('',
1167 # prefix('^a',
1168 # rec('994','a'),
1169 # ),
1170 # prefix('^b',
1171 # rec('994','b')
1172 # )
1173 # )
1174 # )
1175 #);
1176
1177 ### KOHA items
1178
1179 marc('942','b',
1180 'LIB'
1181 );
1182
1183 if ( grep( m/Posebni otisak/, rec('300') ) ) {
1184 marc('942','c',
1185 'SEP'
1186 );
1187 } else {
1188 marc('942','c',
1189 'KNJ'
1190 );
1191 }
1192
1193 ## 990 u sk ima \r\n na kraju
1194
1195 marc('942','d',
1196 join_with(' | ',
1197 rec('990')
1198 )
1199 );
1200
1201 my $novasig1 =
1202 lookup(
1203 sub { rec('C') },
1204 'ffiz','mapirano',
1205 sub { rec('B') },
1206 sub { rec('990') }
1207 );
1208 my $novasig2 =
1209 lookup(
1210 sub { rec('C') . ' ' . rec('D') },
1211 'ffiz','starasig',
1212 sub { rec('A') },
1213 sub { rec('000') },
1214 );
1215
1216 marc('942','h',
1217 $novasig1
1218 );
1219
1220 marc('942','i',
1221 $novasig2
1222 );
1223
1224 if ( config() =~ m/ffar/ ) {
1225 my $novasig1 =
1226 lookup(
1227 sub { rec('E') },
1228 'ffar','mapirano',
1229 sub { rec('A') },
1230 sub { rec('000') }
1231 );
1232 if ( $novasig1 ) {
1233 marc('942','h',
1234 $novasig1
1235 );
1236 } else {
1237 marc('942','h',
1238 'ARH'
1239 );
1240 }
1241
1242
1243 }
1244
1245 if ( config() =~ m/ffsf|ffpo|fffi|ffar|ffsk/ ) {
1246 # my $sig1 =
1247 # lookup(
1248 # sub { rec('C') },
1249 # 'fffi','signature',
1250 # sub { rec('B') },
1251 # sub { frec('990') },
1252 # );
1253 if ( rec('700','a') ) {
1254 # marc('942','h',
1255 # $sig1,
1256 # );
1257 if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1258 marc('942','i',
1259 join_with(' ',
1260 regex('s/(^.{3}).*/$1/',
1261 uc ( rec('700','a') )
1262 ),
1263 regex('s/^.{4}(.{1}).*/$1/',
1264 lc ( rec('200','a') )
1265 )
1266 )
1267 );
1268 } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
1269 marc('942','i',
1270 join_with(' ',
1271 regex('s/(^.{3}).*/$1/',
1272 uc ( rec('700','a') )
1273 ),
1274 regex('s/^.{3}(.{1}).*/$1/',
1275 lc ( rec('200','a') )
1276 )
1277 )
1278 );
1279 } elsif ( rec('200','a') =~ m/^Eine / ) {
1280 marc('942','i',
1281 join_with(' ',
1282 regex('s/(^.{3}).*/$1/',
1283 uc ( rec('700','a') )
1284 ),
1285 regex('s/^.{5}(.{1}).*/$1/',
1286 lc ( rec('200','a') )
1287 )
1288 )
1289 );
1290 } elsif ( rec('200','a') =~ m/^Einen / ) {
1291 marc('942','i',
1292 join_with(' ',
1293 regex('s/(^.{3}).*/$1/',
1294 uc ( rec('700','a') )
1295 ),
1296 regex('s/^.{6}(.{1}).*/$1/',
1297 lc ( rec('200','a') )
1298 )
1299 )
1300 );
1301 } elsif ( rec('200','a') =~ m/^(A|L) / ) {
1302 marc('942','i',
1303 join_with(' ',
1304 regex('s/(^.{3}).*/$1/',
1305 uc ( rec('700','a') )
1306 ),
1307 regex('s/^.{2}(.{1}).*/$1/',
1308 lc ( rec('200','a') )
1309 )
1310 )
1311 );
1312 } else {
1313 marc('942','i',
1314 join_with(' ',
1315 regex('s/(^.{3}).*/$1/',
1316 uc ( rec('700','a') )
1317 ),
1318 regex('s/(^.{1}).*/$1/',
1319 lc ( rec('200','a') )
1320 )
1321 )
1322 );
1323 }
1324 } elsif ( rec('710','a') ) {
1325 # marc('942','h',
1326 # $sig1,
1327 # );
1328 if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1329 marc('942','i',
1330 join_with(' ',
1331 regex('s/(^.{3}).*/$1/',
1332 uc ( rec('710','a') )
1333 ),
1334 regex('s/^.{4}(.{1}).*/$1/',
1335 lc ( rec('200','a') )
1336 )
1337 )
1338 );
1339 } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
1340 marc('942','i',
1341 join_with(' ',
1342 regex('s/(^.{3}).*/$1/',
1343 uc ( rec('710','a') )
1344 ),
1345 regex('s/^.{3}(.{1}).*/$1/',
1346 lc ( rec('200','a') )
1347 )
1348 )
1349 );
1350 } elsif ( rec('200','a') =~ m/^Eine / ) {
1351 marc('942','i',
1352 join_with(' ',
1353 regex('s/(^.{3}).*/$1/',
1354 uc ( rec('710','a') )
1355 ),
1356 regex('s/^.{5}(.{1}).*/$1/',
1357 lc ( rec('200','a') )
1358 )
1359 )
1360 );
1361 } elsif ( rec('200','a') =~ m/^Einen / ) {
1362 marc('942','i',
1363 join_with(' ',
1364 regex('s/(^.{3}).*/$1/',
1365 uc ( rec('710','a') )
1366 ),
1367 regex('s/^.{6}(.{1}).*/$1/',
1368 lc ( rec('200','a') )
1369 )
1370 )
1371 );
1372 } elsif ( rec('200','a') =~ m/^(A|L) / ) {
1373 marc('942','i',
1374 join_with(' ',
1375 regex('s/(^.{3}).*/$1/',
1376 uc ( rec('710','a') )
1377 ),
1378 regex('s/^.{2}(.{1}).*/$1/',
1379 lc ( rec('200','a') )
1380 )
1381 )
1382 );
1383 } else {
1384 marc('942','i',
1385 join_with(' ',
1386 regex('s/(^.{3}).*/$1/',
1387 uc ( rec('710','a') )
1388 ),
1389 regex('s/(^.{1}).*/$1/',
1390 lc ( rec('200','a') )
1391 )
1392 )
1393 );
1394 }
1395 } elsif ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1396 # marc('942','h',
1397 # $sig1,
1398 # );
1399 marc('942','i',
1400 regex('s/^.{4}(.{3}).*/$1/',
1401 uc ( rec('200','a') )
1402 ),
1403 );
1404
1405 } else {
1406 # marc('942','h',
1407 # $sig1,
1408 # );
1409 marc('942','i',
1410 regex('s/(^\w{3}).*/$1/',
1411 uc ( rec('200','a') )
1412 )
1413 )
1414 }
1415 } # if config() za oznaku primjerka
1416
1417 if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
1418 warn "skupni zapis - nema primjeraka";
1419 } else {
1420 marc('952','8',
1421 rec('991','8')
1422 );
1423 marc('952','a',
1424 rec('991','a')
1425 );
1426 marc('952','b',
1427 rec('991','b')
1428 );
1429 marc('952','c',
1430 rec('991','c'),
1431 );
1432 marc('952','i',
1433 rec('991','i')
1434 );
1435 marc('952','y',
1436 rec('991','y')
1437 );
1438 }
1439
1440 ### LOKALNA POLJA
1441 ## 1. da li je zapis pregledan ili nije i datum kad je pregledan
1442 ## provjeriti za svaku bazu koje polje koristi
1443 ## SFM: 999^aP
1444 ## AN: 999 Pregledan
1445 ## raspraviti
1446
1447
1448
1449 } # polje 200a
1450 # } sig

  ViewVC Help
Powered by ViewVC 1.1.26