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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 792 - (show 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 # konvertira se ako postoji polje 200^a
2
3 if ( rec('200','a') ) {
4
5 ### LEADER
6 # 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 ### 001 - Voyager
24
25 ### 008
26
27 ### 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 marc('035','6',
34 join_with(' ',
35 # config('input normalize path'),
36 # config('name'),
37 config(),
38 'L',
39 # config('input name'),
40 # id(),
41 # rec('994','a'),
42 rec('000')
43 )
44 );
45
46
47 ### 020
48 # postoji modify -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (sfb)
49
50 marc('020','a',
51 regex('s/ ISBN //g',
52 rec('10')
53 )
54 );
55
56
57 ### 040
58 # za sve je isti
59
60 marc('040','a',
61 'HR FFZG'
62 );
63
64 marc('040','b',
65 'hrv'
66 );
67
68 marc('040','e',
69 'HR PPIAK'
70 );
71
72
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 marc_indicators('041', 1, ' ');
90 } else {
91 marc_indicators('041', 0, ' ');
92 }
93
94
95 ### 041
96 # ponovljivo polje konvertira se u ponovljivo potpolje
97
98 #_debug(2);
99 marc_repeatable_subfield('041','a',
100 rec('101')
101 );
102 #_debug(0);
103
104
105 ### 080
106 # 675 podpolja c, d ... - ¹to s njima ???
107
108 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 if ( ( rec('200','a') =~ m/^Die /) ||
184 ( rec('200','a') =~ m/^Das /) ||
185 ( rec('200','a') =~ m/^The /) ) {
186 marc_indicators('245', 1, 4);
187 }
188
189 if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
190 {
191 marc_indicators('245', 1, 2);
192 }
193
194 ### 245
195 # redoslijed polja
196
197 #_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 # 'h', rec('200','b'),
209 '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 'c', rec('200','f'),
230
231 # append to last subfield
232 '+', prefix('. ',
233 rec('200','c')
234 ),
235 );
236
237
238
239 #_debug(0);
240
241
242 ### 250
243
244 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
257 ### 260
258 # ponovljiva potpolja u originalnom redosljedu
259
260 marc_original_order('260', '210');
261
262
263 ### 300
264 # provjeriti interpunkcije !!
265
266 marc('300','a',
267 suffix(
268 rec('215','c') ? ' : ' :
269 rec('215','d') ? ' ; ' :
270 rec('215','e') ? ' + ' :
271 ' ',
272 rec('215','a')
273 )
274 );
275
276 marc('300','b',
277 suffix(
278 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
279 ( rec('215','c') && rec('215','e') ) ? ' + ' :
280 ' ',
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 ### 440
299 # 2.ind. prema jeziku i èlanu
300
301 marc_indicators('440', ' ', '0');
302
303 marc('440','a',
304 join_with(' : ',
305 rec('225','a'),
306 rec('225','e')
307 )
308 ) ;
309
310 marc('440','n',
311 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 marc('440','a',
330 rec('225','b'),
331 );
332
333
334 ### 490
335 #
336 #marc('490','a',
337 # rec('225','a')
338 #);
339
340
341 ### 500
342
343 marc('500','a',
344 rec('300')
345 );
346
347 marc('500','a',
348 rec('305')
349 );
350
351 marc('500','a',
352 rec('307')
353 );
354
355 marc('500','a',
356 rec('314')
357 );
358
359 ### 504
360
361 marc('504','a',
362 rec('320')
363 );
364
365 ## napomene uz konverziju polja 327 (sadrzaj):
366 # 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 ## 505
371 ## FFPS 327 - sadrzaj
372
373 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
374 marc_indicators('505', '0', ' ');
375 marc('505','a',
376 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
377 rec('327')
378 )
379 );
380 }
381
382
383
384 ## napomene uz konverziju polja 330:
385 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
386
387
388 ### 520
389 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
390
391 # 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
400 # FFTU 330 - ???
401 if ( config() =~ m/fftu/ ) {
402 marc('520','a',
403 rec('330')
404 );
405 }
406
407
408 ### 538
409
410 marc('538','a',
411 rec('337','a')
412 );
413
414
415 ### 246
416
417 marc_indicators('246', 1, 3);
418 marc('246','a',
419 rec('532')
420 );
421
422 ### 655
423
424 marc_indicators('655', ' ', 4);
425 marc('655','a',
426 rec('608')
427 );
428
429 ### 653
430
431 marc_indicators('653', 0, ' ');
432 marc('653','a',
433 rec('610')
434 );
435
436 #_debug(2);
437
438
439 ### 700
440
441 marc_indicators('700', 1, ' ');
442
443 if ( rec('701') ) {
444 marc('700','4',
445 'aut'
446 );
447 }
448
449 marc('700','a',
450 join_with(', ',
451 rec('701', 'a'),
452 rec('701', 'b')
453 )
454 );
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 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
484
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 ## 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 #
509 # 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 ### 740
541
542 marc_indicators('740', 0, ' ');
543
544 # if ( ! rec('464') ) {
545 # marc('740','a',
546 # rec('200','c')
547 # );
548
549 marc('740','a',
550 rec('200','k')
551 );
552
553 # } else {
554
555 #marc('740','a',
556 # rec('464','a')
557 #);
558
559 # };
560
561 ### generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
562
563
564 my $series_key = join_with('',
565 rec('225','a'),
566 rec('210','a'),
567 rec('210','b'),
568 );
569
570 if ($series_key) {
571
572 marc_indicators('760', 0, ' ');
573
574 marc('760','w',
575 get( $series_key )
576 );
577
578 }
579
580 ### 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
600
601 ### vi¹erazinci
602 # odvojiti u posebnu datoteku i dokumentirati
603
604
605 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 '-',
615 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
680 # marc_original_order('260', '250');
681
682 marc('260','c',
683 rec1('251')
684 );
685
686
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 marc_remove('300');
699 marc('300','a',
700 rec('260')
701 );
702
703 marc_remove('440');
704 marc('440','a',
705 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 }
736
737 ##################################
738 ## ##
739 ## pomoæni ispisi - privremeno! ##
740 ## ##
741 ##################################
742
743 if ( ! rec('464') && rec('200','c') ) {
744 marc('002',
745 'ima-200c-nema-464'
746 );
747 }
748
749 if ( ! rec('464') && rec('200','k') ) {
750 marc('003',
751 'ima-200k-nema-464'
752 );
753 }
754
755 if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
756 marc('004',
757 'ima-464-nema-200c-ili-200k'
758 );
759 }
760
761
762
763 #_debug(2);
764
765 if ( rec('200') =~ m/prev/ ) {
766 marc('005',
767 'prijevod'
768 );
769 }
770
771 #_debug(0);
772
773
774
775 }

  ViewVC Help
Powered by ViewVC 1.1.26