/[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 1102 - (show annotations)
Mon Aug 4 19:35:05 2008 UTC (15 years, 8 months ago) by dpavlin
File MIME type: text/plain
File size: 23171 byte(s)


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

  ViewVC Help
Powered by ViewVC 1.1.26