/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 816 - (hide annotations)
Thu Apr 5 21:48:41 2007 UTC (17 years ago) by dpavlin
File MIME type: text/plain
File size: 10725 byte(s)
local

1 dpavlin 802 #########################################################################
2     ## ##
3     ## Ova datoteka sadr¾i pravila za generiranje MARC21 ISO 2709 izlazne ##
4     ## datoteke. Ulazni format je CDS/ISIS sa zapisima u UNIMARC-u. ##
5     ## ##
6     ##########################################################################
7 dpavlin 795
8 dpavlin 792 # konvertira se ako postoji polje 200^a
9 dpavlin 773
10 dpavlin 751 if ( rec('200','a') ) {
11    
12 dpavlin 792 ### LEADER
13 dpavlin 751 # raspraviti 17,18
14 dpavlin 795 # u nekim knji¾nicama koristi se 999a i 999b, a u nekima samo 999
15 dpavlin 751
16 dpavlin 795 if ( rec('999') && first(rec('999')) =~ m/(pregledan|P)/i) {
17 dpavlin 751 marc_leader('05','c');
18     } else {
19     marc_leader('05','n');
20     }
21    
22     marc_leader('06','a');
23     marc_leader('07','m');
24     marc_leader('18','i');
25    
26     if ( rec('230') ) {
27     marc_leader('19','r');
28     }
29    
30 dpavlin 792 ### 001 - Voyager
31 dpavlin 751
32 dpavlin 816 ### 007
33    
34     marc_fixed('007',00,'ta');
35    
36 dpavlin 792 ### 008
37 dpavlin 773
38 dpavlin 816 if ( rec('994','c') ) {
39     marc_fixed('008','00',
40     regex('s/^\d\d//',
41     rec('994','c')
42     ),
43     );
44     } else {
45     marc_fixed('008', 00,
46     '000101'
47     );
48     }
49    
50     #warn( dump(
51     # regex('s/^\d\d//',
52     # rec('994','c')
53     # ),
54     #)
55     #);
56    
57     ## FIXME treba velika slova pretvoriti u mala
58    
59     marc_fixed('008','35',
60     first( rec('101') )
61     );
62    
63    
64    
65 dpavlin 792 ### 035$6
66     # Privemeno koristimo 035$6 umjesto 035$9, zato ¹to marclint prijavljuje 9 kao gre¹ku.
67     # marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako?
68     # kako mora izgledati polje 035$9? mo¾e li sadr¾avati slova i razmake?
69    
70    
71 dpavlin 751 marc('035','6',
72 dpavlin 792 join_with(' ',
73 dpavlin 751 # config('input normalize path'),
74     # config('name'),
75 dpavlin 758 config(),
76     'L',
77 dpavlin 751 # config('input name'),
78     # id(),
79     # rec('994','a'),
80     rec('000')
81     )
82     );
83    
84    
85 dpavlin 792 ### 020
86     # postoji modify -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (sfb)
87 dpavlin 751
88     marc('020','a',
89 dpavlin 783 regex('s/ ISBN //g',
90     rec('10')
91     )
92 dpavlin 751 );
93    
94    
95 dpavlin 792 ### 040
96     # za sve je isti
97    
98 dpavlin 751 marc('040','a',
99     'HR FFZG'
100     );
101    
102     marc('040','b',
103     'hrv'
104     );
105    
106 dpavlin 758 marc('040','e',
107     'HR PPIAK'
108     );
109    
110 dpavlin 792
111     ### 041 indikatori
112     # pretpostavke o indikatorima:
113     #
114 dpavlin 816 # 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
115 dpavlin 792 # (Da li je napomena uvijek pisana?)
116     #
117     # 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
118     #
119     # 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
120     # (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
121     # pr. 821.111-2=163.42 je prijevod engleske drame na HR.
122     # to ima samo za knji¾evna djela, eseje....
123 dpavlin 816 # ????
124 dpavlin 792
125    
126 dpavlin 807 #if ( rec('675') =~ m/\d=\d/ ) {
127 dpavlin 816 if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) {
128 dpavlin 751 marc_indicators('041', 1, ' ');
129     } else {
130     marc_indicators('041', 0, ' ');
131     }
132    
133 dpavlin 758
134 dpavlin 792 ### 041
135     # ponovljivo polje konvertira se u ponovljivo potpolje
136    
137 dpavlin 783 #_debug(2);
138 dpavlin 751 marc_repeatable_subfield('041','a',
139     rec('101')
140     );
141 dpavlin 783 #_debug(0);
142 dpavlin 751
143    
144 dpavlin 792 ### 080
145 dpavlin 807 # 675 podpolja b, c, d ... - ¹to s njima ???
146 dpavlin 783
147 dpavlin 792 marc('080','a',
148     rec('675','a')
149     );
150    
151    
152     ### 084 - other classification (R)
153     # NSK ga koristi za struènu oznaku NSK iz polja 681
154     # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
155     # polje 686 koristi FFPS
156    
157    
158     marc('084','a',
159     rec('686')
160     );
161    
162     ### 100
163     # I1 = 0 ako je pseudonim (ima 700a, nema 700b)
164    
165 dpavlin 807 if ( rec('700','a') && ! rec('700','b') ) {
166     marc_indicators('100', 0, ' ');
167     } else {
168     marc_indicators('100', 1, ' ');
169     }
170    
171 dpavlin 792 marc('100','a',
172     join_with(', ',
173     rec('700', 'a'),
174     rec('700', 'b')
175     )
176     );
177    
178    
179     ### 111 i 110
180     # provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
181 dpavlin 802 # ovo vrijedi za FFSFB
182 dpavlin 792
183     if ( rec('710','f') ) {
184    
185     marc_indicators('111', 2, ' ');
186    
187 dpavlin 802 marc_compose('111',
188     'a', rec('710','a'),
189     'e', rec('710','b'),
190     'n', rec('710','d'),
191     'd', rec('710','f'),
192     'c', rec('710','e'),
193 dpavlin 792 );
194    
195    
196     } else {
197    
198     marc_indicators('110', 2, ' ');
199     marc('110','a',
200     rec('710','a')
201     );
202    
203     marc('110','c',
204     rec('710','c')
205     );
206    
207 dpavlin 802 }
208 dpavlin 792
209    
210     ### 245 indikatori
211 dpavlin 816 # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
212 dpavlin 792 # i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
213     # treba nadopuniti i dati podatke na verifikaciju knji¾nièarima
214    
215 dpavlin 816 my $i1;
216 dpavlin 792
217 dpavlin 816 if ( rec('700') || rec('710') ) {
218     $i1 = 1;
219    
220     } else {
221     $i1 = 0;
222     }
223    
224     marc_indicators('245', $i1, 0);
225    
226 dpavlin 758 if ( ( rec('200','a') =~ m/^Die /) ||
227     ( rec('200','a') =~ m/^Das /) ||
228     ( rec('200','a') =~ m/^The /) ) {
229 dpavlin 816 marc_indicators('245', $i1, 4);
230 dpavlin 783 }
231 dpavlin 751
232 dpavlin 807 if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
233 dpavlin 816 marc_indicators('245', $i1, 2);
234 dpavlin 783 }
235    
236 dpavlin 807 if ( ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
237 dpavlin 816 marc_indicators('245', $i1, 2);
238 dpavlin 807 }
239    
240 dpavlin 792 ### 245
241 dpavlin 816 # redoslijed polja va¾an
242     # podpolja i interpunkcije pripremljeni u modify
243 dpavlin 783
244 dpavlin 751 #_debug(3);
245 dpavlin 816
246 dpavlin 751 marc_compose('245',
247     'a', suffix(
248 dpavlin 816 ( ! rec('200','b') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : ' ',
249     rec('200','a'),
250 dpavlin 751 ),
251     'b', suffix(
252 dpavlin 816 ( rec('200','b') && rec('200','f') ) ? ' / ' :
253     ( rec('200','b') && rec('200','c') ) ? '. ' :
254     ' ',
255     rec('200','b'),
256 dpavlin 751 ),
257 dpavlin 816 'c', suffix(
258     ( rec('200','f') && rec('200','c') ) ? '. ' :
259     ' ',
260     rec('200','f'),
261 dpavlin 751 ),
262 dpavlin 816 '+', rec('200','c'),
263     );
264 dpavlin 751
265 dpavlin 816 #_debug(0);
266 dpavlin 783
267 dpavlin 816 #marc_compose('245',
268     # 'a', suffix(
269     # rec('200','b') ? '. ' :
270     # rec('200','k') ? ' ; ' :
271     # rec('200','d') ? ' = ' :
272     # rec('200','e') ? ' : ' :
273     # rec('200','f') ? ' / ' :
274     # '.',
275     # rec('200','a')
276     # ),
277     ## 'h', rec('200','b'),
278     # 'b', suffix(
279     # ( rec('200','k') && rec('200','f') ) ? ' / ' :
280     # ' ',
281     # join_with(' ; ',
282     # rec('200','k'),
283     # ),
284     # ),
285     # 'b', suffix(
286     # ( rec('200','d') && rec('200','f') ) ? ' / ' :
287     # ' ',
288     # rec('200','d'),
289     # ),
290     # 'b', suffix(
291     # ( rec('200','e') && rec('200','f') ) ? ' / ' :
292     # ' ',
293     # join_with(' : ',
294     # rec('200','e'),
295     # ),
296     # ),
297     # 'c', rec('200','f'),
298     ### append to last subfield
299     # '+', prefix('. ',
300     # rec('200','c')
301     # ),
302     #);
303 dpavlin 751
304    
305 dpavlin 783
306    
307    
308 dpavlin 792 ### 250
309 dpavlin 783
310 dpavlin 751 marc('250','a',
311     suffix(
312     rec('205','f') ? ' / ' :
313     ' '.
314     rec('205','a')
315     )
316     );
317    
318     marc('250','b',
319     rec('205','f')
320     );
321    
322 dpavlin 792
323     ### 260
324 dpavlin 751 # ponovljiva potpolja u originalnom redosljedu
325 dpavlin 773
326 dpavlin 751 marc_original_order('260', '210');
327    
328    
329 dpavlin 792 ### 300
330 dpavlin 751 # provjeriti interpunkcije !!
331 dpavlin 758
332 dpavlin 751 marc('300','a',
333     suffix(
334 dpavlin 783 rec('215','c') ? ' : ' :
335     rec('215','d') ? ' ; ' :
336     rec('215','e') ? ' + ' :
337 dpavlin 751 ' ',
338     rec('215','a')
339     )
340     );
341    
342     marc('300','b',
343     suffix(
344 dpavlin 783 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
345     ( rec('215','c') && rec('215','e') ) ? ' + ' :
346 dpavlin 816 ' ',
347 dpavlin 751 rec('215','c')
348     )
349     );
350    
351     marc('300','c',
352     suffix(
353     rec('215','e') ? ' + ' :
354     ' ',
355     rec('215','d')
356     )
357     );
358    
359     marc('300','e',
360     rec('215','e')
361     );
362    
363    
364 dpavlin 792 ### 440
365     # 2.ind. prema jeziku i èlanu
366 dpavlin 758
367 dpavlin 783 marc_indicators('440', ' ', '0');
368 dpavlin 751
369 dpavlin 816 if ( ( rec('225','a') =~ m/^Die /) ||
370     ( rec('225','a') =~ m/^Das /) ||
371     ( rec('225','a') =~ m/^The /) ) {
372     marc_indicators('440', ' ', 4);
373     }
374    
375     if ( ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
376     marc_indicators('440', ' ', 2);
377     }
378    
379     if ( ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
380     marc_indicators('440', ' ', 2);
381     }
382    
383 dpavlin 783 marc('440','a',
384 dpavlin 816 rec('225','a'),
385     );
386 dpavlin 751
387 dpavlin 792 marc('440','n',
388 dpavlin 783 rec('225','h')
389     );
390    
391     marc('440','p',
392     rec('225','i')
393     );
394    
395     marc('440','v',
396 dpavlin 816 rec('225','v'),
397 dpavlin 783 );
398    
399     marc('440','x',
400     rec('225','x')
401     );
402    
403 dpavlin 792
404     ### 490
405     #
406     #marc('490','a',
407     # rec('225','a')
408 dpavlin 751 #);
409    
410 dpavlin 792
411 dpavlin 816 ### 50x
412 dpavlin 792
413 dpavlin 751 marc('500','a',
414     rec('300')
415     );
416    
417     marc('500','a',
418 dpavlin 773 rec('305')
419     );
420    
421     marc('500','a',
422     rec('307')
423     );
424    
425     marc('500','a',
426 dpavlin 751 rec('314')
427     );
428    
429 dpavlin 795 ### 502 - bilje¹ka o disertacijama
430     # odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
431    
432 dpavlin 792 ### 504
433    
434 dpavlin 751 marc('504','a',
435     rec('320')
436     );
437    
438 dpavlin 758 ## napomene uz konverziju polja 327 (sadrzaj):
439 dpavlin 751 # NSK konvertira 327 (NP) u 501 (R)
440     # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
441     # standard i validacije dopu¹taju 501 (R) i 505 (R)
442    
443 dpavlin 792 ## 505
444 dpavlin 758 ## FFPS 327 - sadrzaj
445 dpavlin 792
446 dpavlin 758 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
447 dpavlin 773 marc_indicators('505', '0', ' ');
448 dpavlin 758 marc('505','a',
449     regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
450     rec('327')
451     )
452     );
453     }
454 dpavlin 751
455 dpavlin 816 if ( config() =~ m/ffan/ ) {
456     marc_indicators('505', '0', ' ');
457     marc('505','a',
458     regex('s/[<>]//g',
459     rec('330')
460     )
461     );
462     }
463 dpavlin 751
464 dpavlin 792
465 dpavlin 816
466 dpavlin 758 ## napomene uz konverziju polja 330:
467 dpavlin 751 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
468    
469    
470 dpavlin 792 ### 520
471     # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
472    
473 dpavlin 758 # FFPS 330 (NP) - sa¾etak
474     if ( config() =~ m/ffps/ ) {
475     marc('520','a',
476     regex('s/[\\r\\n]+/. /g',
477     rec('330')
478     )
479     );
480     }
481 dpavlin 751
482 dpavlin 816 ### 526 - STUDY PROGRAM INFORMATION NOTE
483 dpavlin 751
484 dpavlin 816 marc_indicators('526', 8, ' ');
485 dpavlin 792
486 dpavlin 816 marc('526','a',
487     rec('996')
488     );
489 dpavlin 792
490 dpavlin 816 ### 538 - zahtjevi sustava
491    
492 dpavlin 773 marc('538','a',
493     rec('337','a')
494     );
495 dpavlin 758
496 dpavlin 773
497 dpavlin 792 ### 246
498 dpavlin 751
499 dpavlin 758 marc_indicators('246', 1, 3);
500     marc('246','a',
501     rec('532')
502     );
503    
504 dpavlin 792 ### 655
505    
506 dpavlin 751 marc_indicators('655', ' ', 4);
507     marc('655','a',
508     rec('608')
509     );
510    
511 dpavlin 792 ### 653
512    
513 dpavlin 758 marc_indicators('653', 0, ' ');
514 dpavlin 751 marc('653','a',
515     rec('610')
516     );
517    
518 dpavlin 792 #_debug(2);
519 dpavlin 751
520    
521 dpavlin 792 ### 700
522 dpavlin 751
523     marc_indicators('700', 1, ' ');
524    
525     if ( rec('701') ) {
526     marc('700','4',
527     'aut'
528     );
529     }
530    
531     marc('700','a',
532 dpavlin 758 join_with(', ',
533     rec('701', 'a'),
534     rec('701', 'b')
535     )
536 dpavlin 751 );
537    
538     marc('700','a',
539     join_with(', ',
540     rec('701', 'c'),
541     rec('701', 'd')
542     )
543     );
544    
545     marc('700','a',
546     join_with(', ',
547     rec('701', 'e'),
548     rec('701', 'f')
549     )
550     );
551    
552     marc('700','a',
553     join_with(', ',
554     rec('701', 'g'),
555     rec('701', 'h')
556     )
557     );
558    
559    
560     marc('700','a',
561     rec('702','a'),
562     );
563    
564    
565 dpavlin 758 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
566 dpavlin 751
567    
568     marc('700','a',
569     join_with(', ',
570     rec('702','c'),
571     rec('702','d')
572     )
573     );
574    
575     marc('700','a',
576     join_with(', ',
577     rec('702','e'),
578     rec('702','f')
579     )
580     );
581    
582     marc('700','a',
583     join_with(', ',
584     rec('702','g'),
585     rec('702','h')
586     )
587     );
588    
589 dpavlin 758 ## 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?
590 dpavlin 792 #
591 dpavlin 751 # marc('700','a',
592     # rec('330','a')
593     # );
594     #
595     #
596     # marc('700','a',
597     # rec('330','b')
598     # );
599     #
600     # marc('700','a',
601     # rec('330','c')
602     # );
603     #
604     #
605     # marc('700','a',
606     # rec('330','d')
607     # );
608     #
609     # marc('700','a',
610     # rec('330','e')
611     # );
612     #
613     # marc('700','a',
614     # rec('330','f')
615     # );
616    
617     #_debug(0);
618    
619    
620    
621    
622 dpavlin 792 ### 740
623 dpavlin 751
624 dpavlin 792 marc_indicators('740', 0, ' ');
625 dpavlin 751
626 dpavlin 792 # if ( ! rec('464') ) {
627     # marc('740','a',
628     # rec('200','c')
629     # );
630 dpavlin 751
631 dpavlin 807 marc('740','a',
632     rec('200','k')
633     );
634 dpavlin 751
635 dpavlin 792 # } else {
636 dpavlin 751
637 dpavlin 792 #marc('740','a',
638     # rec('464','a')
639     #);
640 dpavlin 751
641 dpavlin 792 # };
642 dpavlin 751
643 dpavlin 792 ### generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
644 dpavlin 751
645    
646 dpavlin 792 my $series_key = join_with('',
647     rec('225','a'),
648     rec('210','a'),
649     rec('210','b'),
650     );
651 dpavlin 751
652 dpavlin 792 if ($series_key) {
653 dpavlin 751
654 dpavlin 792 marc_indicators('760', 0, ' ');
655    
656     marc('760','w',
657     get( $series_key )
658     );
659     }
660 dpavlin 751
661 dpavlin 792 ### testing
662     #
663     # my $dup_key = join_with('',
664     # rec('200','a'),
665     #);
666     #
667     #if ($dup_key) {
668     # marc('995','a',
669     # get( $dup_key )
670     # );
671     #}
672     #
673     #
674     # marc_indicators('776', 0, ' ');
675     #
676     # marc('776','a',
677     # rec('452','1')
678     # );
679     #
680 dpavlin 751
681    
682 dpavlin 816 ## 852 - lokacija
683 dpavlin 783
684 dpavlin 816 marc_indicators('852', 4, ' ');
685 dpavlin 773
686 dpavlin 816 marc('852','j',
687     join_with(' ',
688     rec('990')
689     )
690     );
691 dpavlin 783
692 dpavlin 816 ## 876 - item information - basic bibliographic unit
693 dpavlin 783
694 dpavlin 816 marc('876','a',
695     rec('991'),
696     );
697 dpavlin 783
698 dpavlin 816 ## 886 - former marc
699 dpavlin 783
700 dpavlin 816 marc_indicators('886', 2, ' ');
701 dpavlin 783
702 dpavlin 816 marc('886','2',
703     'ffmarc'
704     );
705 dpavlin 792
706 dpavlin 816 marc('886','a',
707     '994'
708     );
709 dpavlin 792
710 dpavlin 816 marc('886','b',
711     join_with(''.
712     '##^a',
713     join_with('',
714     prefix('^a',
715     rec('994','a'),
716     ),
717     prefix('^b',
718     rec('994','b')
719     )
720     )
721     )
722     );
723 dpavlin 792
724    
725 dpavlin 795 } # polje 200a

  ViewVC Help
Powered by ViewVC 1.1.26