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

  ViewVC Help
Powered by ViewVC 1.1.26