/[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 792 - (hide annotations)
Tue Jan 30 18:23:53 2007 UTC (17 years, 3 months ago) by dpavlin
File MIME type: text/plain
File size: 10557 byte(s)
local

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

  ViewVC Help
Powered by ViewVC 1.1.26