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

  ViewVC Help
Powered by ViewVC 1.1.26