/[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 795 - (hide annotations)
Sun Feb 4 12:37:42 2007 UTC (17 years, 3 months ago) by dpavlin
File MIME type: text/plain
File size: 9333 byte(s)
local

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

  ViewVC Help
Powered by ViewVC 1.1.26