/[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 802 - (hide annotations)
Thu Feb 15 22:43:03 2007 UTC (17 years, 2 months ago) by dpavlin
File MIME type: text/plain
File size: 9298 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     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     # 675 podpolja 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     marc_indicators('100', 1, ' ');
134     marc('100','a',
135     join_with(', ',
136     rec('700', 'a'),
137     rec('700', 'b')
138     )
139     );
140    
141    
142     ### 111 i 110
143     # provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
144 dpavlin 802 # ovo vrijedi za FFSFB
145 dpavlin 792
146     if ( rec('710','f') ) {
147    
148     marc_indicators('111', 2, ' ');
149    
150 dpavlin 802 marc_compose('111',
151     'a', rec('710','a'),
152     'e', rec('710','b'),
153     'n', rec('710','d'),
154     'd', rec('710','f'),
155     'c', rec('710','e'),
156 dpavlin 792 );
157    
158    
159     } else {
160    
161     marc_indicators('110', 2, ' ');
162     marc('110','a',
163     rec('710','a')
164     );
165    
166     marc('110','c',
167     rec('710','c')
168     );
169    
170 dpavlin 802 }
171 dpavlin 792
172    
173     ### 245 indikatori
174     # i1 = 1 za sve zapise
175     # i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
176     # treba nadopuniti i dati podatke na verifikaciju knji¾nièarima
177    
178     marc_indicators('245', 1, 0);
179    
180 dpavlin 758 if ( ( rec('200','a') =~ m/^Die /) ||
181     ( rec('200','a') =~ m/^Das /) ||
182     ( rec('200','a') =~ m/^The /) ) {
183 dpavlin 792 marc_indicators('245', 1, 4);
184 dpavlin 783 }
185 dpavlin 751
186 dpavlin 783 if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
187     {
188 dpavlin 792 marc_indicators('245', 1, 2);
189 dpavlin 783 }
190    
191 dpavlin 792 ### 245
192     # redoslijed polja
193 dpavlin 783
194 dpavlin 751 #_debug(3);
195     marc_compose('245',
196     'a', suffix(
197     rec('200','b') ? '. ' :
198     rec('200','k') ? ' ; ' :
199     rec('200','d') ? ' = ' :
200     rec('200','e') ? ' : ' :
201     rec('200','f') ? ' / ' :
202     '.',
203     rec('200','a')
204     ),
205 dpavlin 783 # 'h', rec('200','b'),
206 dpavlin 751 'b', suffix(
207     ( rec('200','k') && rec('200','f') ) ? ' / ' :
208     ' ',
209     join_with(' ; ',
210     rec('200','k'),
211     ),
212     ),
213     'b', suffix(
214     ( rec('200','d') && rec('200','f') ) ? ' / ' :
215     ' ',
216     rec('200','d'),
217     ),
218     'b', suffix(
219     ( rec('200','e') && rec('200','f') ) ? ' / ' :
220     ' ',
221     join_with(' : ',
222     rec('200','e'),
223     ),
224     ),
225    
226 dpavlin 783 'c', rec('200','f'),
227    
228     # append to last subfield
229 dpavlin 792 '+', prefix('. ',
230     rec('200','c')
231     ),
232 dpavlin 751 );
233    
234    
235 dpavlin 783
236 dpavlin 792 #_debug(0);
237 dpavlin 783
238    
239 dpavlin 792 ### 250
240 dpavlin 783
241 dpavlin 751 marc('250','a',
242     suffix(
243     rec('205','f') ? ' / ' :
244     ' '.
245     rec('205','a')
246     )
247     );
248    
249     marc('250','b',
250     rec('205','f')
251     );
252    
253 dpavlin 792
254     ### 260
255 dpavlin 751 # ponovljiva potpolja u originalnom redosljedu
256 dpavlin 773
257 dpavlin 751 marc_original_order('260', '210');
258    
259    
260 dpavlin 792 ### 300
261 dpavlin 751 # provjeriti interpunkcije !!
262 dpavlin 758
263 dpavlin 751 marc('300','a',
264     suffix(
265 dpavlin 783 rec('215','c') ? ' : ' :
266     rec('215','d') ? ' ; ' :
267     rec('215','e') ? ' + ' :
268 dpavlin 751 ' ',
269     rec('215','a')
270     )
271     );
272    
273     marc('300','b',
274     suffix(
275 dpavlin 783 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
276     ( rec('215','c') && rec('215','e') ) ? ' + ' :
277 dpavlin 751 ' ',
278     rec('215','c')
279     )
280     );
281    
282     marc('300','c',
283     suffix(
284     rec('215','e') ? ' + ' :
285     ' ',
286     rec('215','d')
287     )
288     );
289    
290     marc('300','e',
291     rec('215','e')
292     );
293    
294    
295 dpavlin 792 ### 440
296     # 2.ind. prema jeziku i èlanu
297 dpavlin 758
298 dpavlin 783 marc_indicators('440', ' ', '0');
299 dpavlin 751
300 dpavlin 783 marc('440','a',
301 dpavlin 792 join_with(' : ',
302 dpavlin 783 rec('225','a'),
303 dpavlin 795 join_with(' / ',
304     rec('225','e'),
305     rec('225','f')
306     )
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 795 ### 502 - bilje¹ka o disertacijama
360     # odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
361    
362 dpavlin 792 ### 504
363    
364 dpavlin 751 marc('504','a',
365     rec('320')
366     );
367    
368 dpavlin 758 ## napomene uz konverziju polja 327 (sadrzaj):
369 dpavlin 751 # NSK konvertira 327 (NP) u 501 (R)
370     # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
371     # standard i validacije dopu¹taju 501 (R) i 505 (R)
372    
373 dpavlin 792 ## 505
374 dpavlin 758 ## FFPS 327 - sadrzaj
375 dpavlin 792
376 dpavlin 758 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
377 dpavlin 773 marc_indicators('505', '0', ' ');
378 dpavlin 758 marc('505','a',
379     regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
380     rec('327')
381     )
382     );
383     }
384 dpavlin 751
385    
386 dpavlin 792
387 dpavlin 758 ## napomene uz konverziju polja 330:
388 dpavlin 751 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
389    
390    
391 dpavlin 792 ### 520
392     # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
393    
394 dpavlin 758 # FFPS 330 (NP) - sa¾etak
395     if ( config() =~ m/ffps/ ) {
396     marc('520','a',
397     regex('s/[\\r\\n]+/. /g',
398     rec('330')
399     )
400     );
401     }
402 dpavlin 751
403 dpavlin 758 # FFTU 330 - ???
404     if ( config() =~ m/fftu/ ) {
405     marc('520','a',
406 dpavlin 751 rec('330')
407 dpavlin 758 );
408 dpavlin 751 }
409    
410 dpavlin 792
411     ### 538
412    
413 dpavlin 773 marc('538','a',
414     rec('337','a')
415     );
416 dpavlin 758
417 dpavlin 773
418 dpavlin 792 ### 246
419 dpavlin 751
420 dpavlin 758 marc_indicators('246', 1, 3);
421     marc('246','a',
422     rec('532')
423     );
424    
425 dpavlin 792 ### 655
426    
427 dpavlin 751 marc_indicators('655', ' ', 4);
428     marc('655','a',
429     rec('608')
430     );
431    
432 dpavlin 792 ### 653
433    
434 dpavlin 758 marc_indicators('653', 0, ' ');
435 dpavlin 751 marc('653','a',
436     rec('610')
437     );
438    
439 dpavlin 792 #_debug(2);
440 dpavlin 751
441    
442 dpavlin 792 ### 700
443 dpavlin 751
444     marc_indicators('700', 1, ' ');
445    
446     if ( rec('701') ) {
447     marc('700','4',
448     'aut'
449     );
450     }
451    
452     marc('700','a',
453 dpavlin 758 join_with(', ',
454     rec('701', 'a'),
455     rec('701', 'b')
456     )
457 dpavlin 751 );
458    
459     marc('700','a',
460     join_with(', ',
461     rec('701', 'c'),
462     rec('701', 'd')
463     )
464     );
465    
466     marc('700','a',
467     join_with(', ',
468     rec('701', 'e'),
469     rec('701', 'f')
470     )
471     );
472    
473     marc('700','a',
474     join_with(', ',
475     rec('701', 'g'),
476     rec('701', 'h')
477     )
478     );
479    
480    
481     marc('700','a',
482     rec('702','a'),
483     );
484    
485    
486 dpavlin 758 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
487 dpavlin 751
488    
489     marc('700','a',
490     join_with(', ',
491     rec('702','c'),
492     rec('702','d')
493     )
494     );
495    
496     marc('700','a',
497     join_with(', ',
498     rec('702','e'),
499     rec('702','f')
500     )
501     );
502    
503     marc('700','a',
504     join_with(', ',
505     rec('702','g'),
506     rec('702','h')
507     )
508     );
509    
510 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?
511 dpavlin 792 #
512 dpavlin 751 # marc('700','a',
513     # rec('330','a')
514     # );
515     #
516     #
517     # marc('700','a',
518     # rec('330','b')
519     # );
520     #
521     # marc('700','a',
522     # rec('330','c')
523     # );
524     #
525     #
526     # marc('700','a',
527     # rec('330','d')
528     # );
529     #
530     # marc('700','a',
531     # rec('330','e')
532     # );
533     #
534     # marc('700','a',
535     # rec('330','f')
536     # );
537    
538     #_debug(0);
539    
540    
541    
542    
543 dpavlin 792 ### 740
544 dpavlin 751
545 dpavlin 792 marc_indicators('740', 0, ' ');
546 dpavlin 751
547 dpavlin 792 # if ( ! rec('464') ) {
548     # marc('740','a',
549     # rec('200','c')
550     # );
551 dpavlin 751
552 dpavlin 792 marc('740','a',
553     rec('200','k')
554     );
555 dpavlin 751
556 dpavlin 792 # } else {
557 dpavlin 751
558 dpavlin 792 #marc('740','a',
559     # rec('464','a')
560     #);
561 dpavlin 751
562 dpavlin 792 # };
563 dpavlin 751
564 dpavlin 792 ### generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
565 dpavlin 751
566    
567 dpavlin 792 my $series_key = join_with('',
568     rec('225','a'),
569     rec('210','a'),
570     rec('210','b'),
571     );
572 dpavlin 751
573 dpavlin 792 if ($series_key) {
574 dpavlin 751
575 dpavlin 792 marc_indicators('760', 0, ' ');
576    
577     marc('760','w',
578     get( $series_key )
579     );
580 dpavlin 751
581 dpavlin 792 }
582 dpavlin 751
583 dpavlin 792 ### testing
584     #
585     # my $dup_key = join_with('',
586     # rec('200','a'),
587     #);
588     #
589     #if ($dup_key) {
590     # marc('995','a',
591     # get( $dup_key )
592     # );
593     #}
594     #
595     #
596     # marc_indicators('776', 0, ' ');
597     #
598     # marc('776','a',
599     # rec('452','1')
600     # );
601     #
602 dpavlin 751
603    
604 dpavlin 783
605 dpavlin 792 ##################################
606     ## ##
607     ## pomoæni ispisi - privremeno! ##
608     ## ##
609     ##################################
610 dpavlin 773
611 dpavlin 783 if ( ! rec('464') && rec('200','c') ) {
612 dpavlin 792 marc('002',
613 dpavlin 783 'ima-200c-nema-464'
614     );
615 dpavlin 751 }
616 dpavlin 783
617     if ( ! rec('464') && rec('200','k') ) {
618 dpavlin 792 marc('003',
619 dpavlin 783 'ima-200k-nema-464'
620     );
621     }
622    
623     if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
624 dpavlin 792 marc('004',
625 dpavlin 783 'ima-464-nema-200c-ili-200k'
626     );
627     }
628    
629    
630    
631 dpavlin 792 #_debug(2);
632    
633     if ( rec('200') =~ m/prev/ ) {
634     marc('005',
635     'prijevod'
636     );
637 dpavlin 783 }
638 dpavlin 792
639     #_debug(0);
640    
641    
642    
643 dpavlin 795 } # polje 200a

  ViewVC Help
Powered by ViewVC 1.1.26