/[webpac2]/trunk/conf/ffcasopisi/perilooksig2marc.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/ffcasopisi/perilooksig2marc.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1278 - (show annotations)
Thu Aug 27 17:32:11 2009 UTC (14 years, 8 months ago) by mglavica
File MIME type: text/plain
File size: 14247 byte(s)
journals data conversion (final conversion done with this version)

1 my $signatura =
2 lookup(
3 sub { rec('C') },
4 'casopisi','sig',
5 sub { rec('A') . rec('B') },
6 sub { config ('input collection') . rec('000') }
7 );
8
9 if ( $signatura ) {
10
11
12 ### LEADER
13
14 ## LDR 05 - n - new
15 marc_leader('05','n');
16
17 ## LDR 06 - a - language material
18 marc_leader('06','a');
19
20 ## LDR 07 - Bibliographic level
21 # izvuci podatke iz tablie (za po i sf)
22
23 my $ldr7 =
24 lookup(
25 sub { rec('D') },
26 'casopisi','kod',
27 sub { rec('B') . rec('A') },
28 sub { config ('input collection') . rec('000') }
29 );
30
31 #if ( rec('225','a') ) {
32 # marc_leader('07','d');
33 #} else {
34 # marc_leader('07','s');
35 #}
36
37 if ( $ldr7 ) {
38 marc_leader('07', $ldr7 );
39 } else {
40 marc_leader('07','s');
41 }
42
43
44 ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
45 marc_leader('17','u');
46
47 ## LDR 18 - i - isbd
48 marc_leader('18','i');
49
50
51 ## LDR 19 - Multipart resource record level ; # - Not specified or not applicable, a - Set, b - Part with independent title, c - Part with dependent title
52 # tematski brojevi?
53
54 ### 008 - All materials
55
56 marc_fixed('008','00', '090820'); # 00-05 - Date entered on file
57
58 ## za 008 06 treba i lookup u tablicu gdje postoji podatak o tome jel tekuci casopis ili nije?
59 ## c - Continuing resource currently published
60 ## d - Continuing resource ceased publication
61 ## u - Continuing resource status unknown
62
63 marc_fixed('008','06','|');
64
65 my $d1 = ' ';
66 my $d2 = ' ';
67
68 if ( rec('210','c') ) {
69 if ( rec ('210','c') =~ m#(\d{4}).*?-.*?(\d{4})# ) {
70 $d1 = $1;
71 $d2 = $2;
72 marc_fixed('008','06','d');
73 }
74 if ( rec ('210','c') =~ m{(\d{4}).*?-\s*$} ) {
75 $d1 = $1;
76 $d2 = '9999';
77 marc_fixed('008','06','c');
78 }
79
80 marc_fixed('008','07', $d1);
81 marc_fixed('008','11', $d2);
82
83 }
84
85 marc_fixed('008','15', # 15-17 - Place of publication, production, or execution
86 rec('102')
87 );
88
89 marc_fixed('008','35',
90 first( lc(rec('101')) ) # 35-37 - Language
91 );
92
93 marc_fixed('008','38','|'); # 38 - Modified record
94 marc_fixed('008','39','d'); # 39 - Cataloging source
95
96 ### 008 - Continuing resources
97
98 my $fre;
99
100 $fre = ( rec('326') eq '2g' ) ? 'g' :
101 ( rec('326') eq 'g1' ) ? 'a' :
102 ( rec('326') eq 'g2' ) ? 'f' :
103 ( rec('326') eq 'g3' ) ? 't' :
104 ( rec('326') eq 'g4' ) ? 'q' :
105 ( rec('326') eq 'g5' ) ? 'z' :
106 ( rec('326') eq 'g6' ) ? 'b' :
107 ( rec('326') eq 'g8' ) ? 'b' :
108 ( rec('326') eq 'g9' ) ? 'm' :
109 ( rec('326') eq 'm1' ) ? 'm' :
110 ( rec('326') eq '10' ) ? 'm' :
111 ( rec('326') eq '11' ) ? 'm' :
112 ( rec('326') eq 'm2' ) ? 's' :
113 ( rec('326') eq '19' ) ? 's' :
114 ( rec('326') eq '20' ) ? 's' :
115 ( rec('326') eq '26' ) ? 's' :
116 ( rec('326') eq 'm3' ) ? 'j' :
117 ( rec('326') eq 't1' ) ? 'w' :
118 ( rec('326') eq 't2' ) ? 'c' :
119 ( rec('326') eq 't2us' ) ? 'c' :
120 ( rec('326') eq 'nr' ) ? ' ' :
121 '|'
122 ;
123
124 marc_fixed('008','18', $fre); # 18 - Frequency - ovo treba popuniti iz polja 326
125 marc_fixed('008','19', '|'); # 19 - Regularity
126 # 20 - Undefined, contains a blank (#) or fill character (|)
127 # za polje 008 21 treba lookup u tablicu s kodovima za sf i po, za ostale nadopuniti naknadno
128
129 my $stype =
130 lookup(
131 sub { rec('E') },
132 'casopisi','kod',
133 sub { rec('B') . rec('A') },
134 sub { config ('input collection') . rec('000') }
135 );
136
137 if ( $stype ) {
138 marc_fixed('008','21', $stype); # 21 - Type of continuing resource
139 } else {
140 marc_fixed('008','21', 'p');
141 }
142 # 22 - Form of original item - blank
143 # 23 - Form of item
144 marc_fixed('008','24','|'); # 24 - Nature of entire work
145 marc_fixed('008','25','|||'); # 25-27 - Nature of contents
146 # 28 - Government publication
147 marc_fixed('008','29','|'); # 29 - Conference publication
148 # 30-32 - Undefined
149 marc_fixed('008','33','|'); # 33 - Original alphabet or script of title
150 marc_fixed('008','34','0'); # 34 - Entry convention
151
152 ### 022
153
154 #if ( ! rec('225','a') ) {
155 marc('022','a',
156 rec('11')
157 );
158 #}
159
160 ### 035
161
162 my $id;
163
164 $id = (
165 join_with('',
166 'HR-ZaFF ',
167 config('input name'),
168 'P',
169 rec('000')
170 )
171 );
172
173 marc('035','a', $id);
174
175 my $csigid = lookup(
176 sub { prefix('HR-ZaFF csig', rec('I') ) },
177 'casopisi','sig',
178 sub { rec('A') . rec('B') },
179 sub { config ('input collection') . rec('000') }
180 );
181
182 marc('035','a', $csigid);
183
184
185 ### 040
186 # za sve je isti
187 # treba utvrditi tocnu oznaku za ustanovu
188
189 marc('040','a',
190 'HR-ZaFF'
191 );
192
193 marc('040','b',
194 'hrv'
195 );
196
197 marc('040','c',
198 'HR-ZaFF'
199 );
200
201 marc('040','e',
202 'ppiak'
203 );
204
205 #### 041 - indikatori
206 #
207 #
208 #marc_indicators('041', 0, ' ');
209 #
210 #### 041
211 #
212 #marc_repeatable_subfield('041','a',
213 # rec('101')
214 #);
215
216
217 #_debug(3);
218
219 ### 080
220
221 marc('080','a',
222 rec('675','a')
223 );
224
225 marc('080','a',
226 rec('675','b')
227 );
228
229 marc('080','a',
230 rec('675','c')
231 );
232
233 marc('080','a',
234 rec('675','d')
235 );
236
237
238 ### 210 indikatori
239 # marc_indicators('210', '1',' ');
240
241 ### 210 - ABBREVIATED TITLE
242 # pronaći prikladan izvor podataka (nsk baza, issn baza)
243
244 ### 222 indikatori
245 # drugi indikator prema clanu
246
247 marc_indicators('222',' ','0');
248
249 ### 222 - Key title
250 # pronaci prikadan izvor podataka - nsk baza, issn baze
251
252 marc('222','a',
253 rec('530')
254 );
255
256 # iz nsk:
257 #if ( rec('11') ) {
258 #marc('222','a',
259 # lookup(
260 # sub { rec('530','a') },
261 # 'nsk','bbaza',
262 # sub { rec('011','a') },
263 # sub { rec('11') },
264 # )
265 #);
266 #}
267
268 ### 245 indikatori
269 # generiraju se prema clanu, trebalo bi możda i prema jeziku (jezika nema uvijek).
270 # potrebna naknadna kontrola
271
272 my $naslov =
273 lookup(
274 sub { rec('E') },
275 'casopisi','sig',
276 sub { rec('A') . rec('B') },
277 sub { config ('input collection') . rec('000') }
278 );
279
280 marc_indicators('245', 0, 0);
281
282 if ( ( $naslov =~ m/^Die /) ||
283 ( $naslov =~ m/^Das /) ||
284 ( $naslov =~ m/^Der /) ||
285 ( $naslov =~ m/^Les /) ||
286 ( $naslov =~ m/^The /) ) {
287 marc_indicators('245', 0, 4);
288
289 }
290
291 if ( ( $naslov =~ m/^Un /) ||
292 ( $naslov =~ m/^An /) ||
293 ( $naslov =~ m/^La /) ||
294 ( $naslov =~ m/^Le /) ||
295 ( $naslov =~ m/^Il /) ) {
296 marc_indicators('245', 0, 3);
297 }
298
299 if ( ( $naslov =~ m/^A /) ||
300 ( $naslov =~ m/^L'/) ) {
301 marc_indicators('245', 0, 2);
302 }
303
304 ### 245
305
306
307 #warn $naslov;
308
309 my ($a,$b,$c);
310 $c = $2 if $naslov =~ s{(\s+/)\s+(.+)$}{$1};
311 if ( $naslov =~ s{^(.+?[:=])\s+}{} ) {
312 $a = $1;
313 $b = $naslov ;
314 } else {
315 $a = $naslov ;
316 }
317
318 #warn "a: $a\nb: $b\nc: $c\n";
319
320 $a = $a . '.' if ( ! ( $b || $c || rec('200','f') ) );
321 $a = $a . ' /' if ( ! ($b || $c) && rec('200','f') );
322 $b = $b . '.' if ( $b && ! ( $c || rec('200','f') ) ) ;
323 $b = $b . ' /' if ( $b && ! $c && rec('200','f') ) ;
324
325 marc('245','a', $a);
326 marc('245','b', $b) if $b;
327 if ( $c ) {
328 marc('245','c',
329 suffix('.', $c)
330 );
331 } elsif ( rec('200','f') ) {
332 marc('245','c',
333 suffix('.', rec('200','f') )
334 );
335 }
336
337 ### 246 inikatori
338 # prema jeziku - provjera
339 #
340 #if ( ( rec('200','a') =~ m/^Die /) ||
341 # ( rec('200','a') =~ m/^Das /) ||
342 # ( rec('200','a') =~ m/^The /) ) {
343 # marc_indicators('246', 0, 4);
344 #} else {
345 # marc_indicators('246', 0, 0);
346 #}
347
348 ### 246
349 # povuci podatke iz prikladnog izvora (nsk, issn)
350 # 532 iz ISIS-a nije konvertirano
351 #marc('246','a',
352 # rec('532')
353 #);
354
355 ## iz nsk:
356 # marc('246','a',
357 # lookup(
358 # sub { rec('532','a') },
359 # 'nsk','bbaza',
360 # sub { rec('011','a') },
361 # sub { rec('11') },
362 # )
363 # );
364
365 #_debug(0);
366
367
368 ## 260 - izdavanje
369 # provjeriti interpunkcije !!, u NSK nesto ne stima
370
371 marc_original_order('260','210');
372
373 ## lookup u NSK:
374 # if ( rec('11') ) {
375 # marc_repeatable_subfield('260','a',
376 # lookup(
377 # sub { rec('210','a') },
378 # 'nsk','bbaza',
379 # sub { rec('011','a') },
380 # sub { rec('11') },
381 # )
382 # );
383 # marc_repeatable_subfield('260','b',
384 # lookup(
385 # sub { rec('210','c') },
386 # 'nsk','bbaza',
387 # sub { rec('011','a') },
388 # sub { rec('11') },
389 # )
390 # );
391 # marc('260','c',
392 # lookup(
393 # sub { rec('210','d') },
394 # 'nsk','bbaza',
395 # sub { rec('011','a') },
396 # sub { rec('11') },
397 # )
398 # );
399 # } else {
400 # marc_original_order('260', '210');
401 # }
402
403
404 ### 300
405
406 marc('300','a',
407 suffix(
408 ( rec('215','a') && rec('215','c') ) ? ' : ' :
409 ( rec('215','a') && rec('215','d') ) ? ' ; ' :
410 ( rec('215','a') && rec('215','e') ) ? ' + ' :
411 ' ',
412 rec('215','a')
413 )
414 );
415
416 marc('300','b',
417 suffix(
418 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
419 ( rec('215','c') && rec('215','e') ) ? ' + ' :
420 ' ',
421 rec('215','c')
422 )
423 );
424
425 marc('300','c',
426 suffix(
427 rec('215','e') ? ' + ' :
428 ' ',
429 rec('215','d')
430 )
431 );
432
433 marc('300','e',
434 rec('215','e')
435 );
436
437 ### 310 - current stated publication frequency
438 # potrebno ujednaciti, koristi se i u polju 008
439
440 #my $fredesc;
441 #
442 #$fredesc = ( rec('326') eq '2g' ) ? 'Dvogodišnje' :
443 # ( rec('326') eq 'g1' ) ? 'Godišnje' :
444 # ( rec('326') eq 'g2' ) ? 'Polugodišnje' :
445 # ( rec('326') eq 'g3' ) ? 'Tri broja godišnje' :
446 # ( rec('326') eq 'g4' ) ? 'Četvrtgodišnje' :
447 # ( rec('326') eq 'g5' ) ? 'Pet brojeva godišnje' :
448 # ( rec('326') eq 'g6' ) ? 'Dvomjesečno' :
449 # ( rec('326') eq 'g8' ) ? 'Osam brojeva godišnje' :
450 # ( rec('326') eq 'g9' ) ? 'Devet brojeva godišnje' :
451 # ( rec('326') eq 'm1' ) ? 'Mjesečno' :
452 # ( rec('326') eq '10' ) ? 'Deset brojeva godišnje' :
453 # ( rec('326') eq '11' ) ? 'Jedanaest brojeve godišnje' :
454 # ( rec('326') eq 'm2' ) ? 'Polumjesečno' :
455 # ( rec('326') eq '19' ) ? 'Devetnaest brojeva godišnje' :
456 # ( rec('326') eq '20' ) ? 'Dvadeset brojeva godišnje' :
457 # ( rec('326') eq '26' ) ? 'Dvadeset i šest brojeva godišnje' :
458 # ( rec('326') eq 'm3' ) ? 'Tri broja mjesečno' :
459 # ( rec('326') eq 't1' ) ? 'Tjedno' :
460 # ( rec('326') eq 't2' ) ? 'Polutjedno' :
461 # ( rec('326') eq 't2us' ) ? 'Polutjedno utorkom u subotom' :
462 # ( rec('326') eq 'nr' ) ? 'Neredovito' :
463 # ' '
464 #;
465
466 #warn $fredesc;
467
468 my $fredesc =
469 lookup(
470 sub { rec('B') },
471 'casopisi','frek',
472 sub { rec('A') },
473 sub { rec('326') },
474 );
475
476 marc('310','a',
477 $fredesc
478 );
479
480 ### 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
481
482 # marc('321','a',
483 # ovo bi trebalo procitati iz NSK konvertiranih podataka
484 #);
485
486 marc_indicators('362', 0, ' ');
487
488 ### 362
489 marc('362','a',
490 rec('207','a'),
491 );
492
493 ## lookup iz nsk
494 #else {
495 # if ( rec('11') ) {
496 # marc('362','a',
497 # lookup(
498 # sub { rec('207','a') },
499 # 'nsk','bbaza',
500 # sub { first( rec('011','a') ) },
501 # sub { rec('11') },
502 # )
503 # );
504 # }
505 #}
506
507 ### 490 ind.
508
509 marc_indicators('490', '0', ' ');
510
511 ### 490
512
513 marc('490','a',
514 join_with('. ',
515 join_with(' / ',
516 join_with(' : ',
517 join_with(' = ',
518 rec('225','a'),
519 rec('225','d')
520 ),
521 rec('225','e')
522 ),
523 join_with(' ; ',
524 rec('225','f'),
525 rec('225','g')
526 ),
527 ),
528 rec('225','h')
529 )
530 );
531
532 marc('490','v',
533 rec('225','v')
534 );
535
536 marc('490','x',
537 rec('225','x')
538 );
539
540 #if ( rec('11') ) {
541 # marc('999','a',
542 # lookup(
543 # sub { rec('110','a'), },
544 # 'nsk','bbaza',
545 # sub { rec('011','a') },
546 # sub { rec('11') }
547 # )
548 # );
549 #}
550
551
552 #marc('998','a',
553 # lookup(
554 # sub { rec('H') },
555 # 'ffsf','xls',
556 # sub { rec('A') },
557 # sub { $id },
558 # ),
559 #);
560
561
562 ### 5xx
563 # koje podatke povuci iz drugih baza?
564
565 marc('500','a',
566 rec('300','a'),
567 );
568
569
570 ### 534 - napomena o pretisku
571
572 marc('534','a',
573 rec('324')
574 );
575
576 ## potencijalno za izvuci iz NSK
577 #if ( rec('11') ) {
578 #marc('546','a',
579 # lookup(
580 # sub { rec('302','a') },
581 # 'nsk','bbaza',
582 # sub { rec('011','a') },
583 # sub { rec('11') },
584 # )
585 #);
586 #
587 #marc('550','a',
588 # lookup(
589 # sub { rec('314','a') },
590 # 'nsk','bbaza',
591 # sub { rec('011','a') },
592 # sub { rec('11') },
593 # )
594 #);
595 #
596 #marc('555','a',
597 # lookup(
598 # sub { rec('320','a') },
599 # 'nsk','bbaza',
600 # sub { rec('011','a') },
601 # sub { rec('11') },
602 # )
603 #);
604 #
605 #
606 ## marc('562','a',
607 ## lookup(
608 ## sub { rec('316','a') },
609 ## 'nsk','bbaza',
610 ## sub { rec('011','a') },
611 ## sub { rec('11') },
612 ## )
613 ## );
614 #}
615
616 ### 653 indikatori
617 marc_indicators('653', ' ', ' ');
618
619 ### 653
620
621 marc('653','a',
622 rec('610')
623 );
624
625 # marc_indicators('655', ' ', 4);
626 # marc('655','a',
627 # lookup(
628 # sub { rec('608','a') },
629 # 'nsk','bbaza',
630 # sub { rec('011','a') },
631 # sub { rec('11') },
632 # )
633 # );
634
635
636 #_debug(2);
637
638 ### 700 indikatori
639
640 marc_indicators('700', 1, ' ');
641
642 ### 700
643
644 marc('700','a',
645 rec('702','a'),
646 );
647
648 marc('700','a',
649 rec('702','c'),
650 );
651
652 marc('700','a',
653 rec('702','e'),
654 );
655
656 #_debug(0);
657
658 ### 710 indikatori
659
660 marc_indicators('110', '2', ' ');
661
662 ### 710
663 marc('110','a',
664 rec('710','a')
665 );
666 marc('110','b',
667 rec('710','b')
668 );
669 if ( rec('710','c') ) {
670 marc('110','c',
671 surround('(', ')', rec('710','c'))
672 );
673 }
674
675 ### 770 indikatori
676
677 marc_indicators('770', 0, ' ');
678
679 ### 770
680 marc('770','t',
681 rec('421','a'),
682 );
683
684 marc('770','x',
685 rec('421','b')
686 );
687
688 ### 772 indikatori
689 marc_indicators('772', 0, ' ');
690
691 ### 772
692 marc('772','t',
693 rec('422','a'),
694 );
695 marc('772','x',
696 rec('422','b'),
697 );
698
699 ### 773 indikatori
700
701 #if ( rec('225','a') ) {
702 #
703 #marc_indicators('773', 0, ' ');
704 #
705 ### 773
706 ## da li je bitan redoslijed potpolja?
707
708 #marc('773','w',
709 # lookup(
710 # sub { rec('000') },
711 # 'ffsf','peri',
712 # sub { rec('200','a') },
713 # sub {
714 # regex('s/ ; //g',
715 # rec('225','a')
716 # )
717 # },
718 # )
719 #);
720 #
721 #}
722
723
724 ### 777 indikatori
725
726 marc_indicators('777', 0, ' ');
727
728 ### 777
729
730 marc('777','t',
731 rec('423','a'),
732 );
733
734 marc('777','x',
735 rec('423','b'),
736 );
737
738 ### 780 indikatori
739
740 marc_indicators('780', 0, 0);
741
742 ### 780
743 marc('780','t',
744 rec('430','a'),
745 );
746
747 marc('780','x',
748 rec('430','b'),
749 );
750
751 ### 785 indikatori
752
753 marc_indicators('785', 0, 0);
754
755 ### 785
756 marc('785','t',
757 rec('440','a'),
758 );
759 marc('785','x',
760 rec('440','b'),
761 );
762
763
764 ### 856
765 marc('856','u',
766 rec('856','u')
767 );
768
769 ### 866
770
771 marc_indicators('866',' ', 0);
772
773 marc('866','a',
774 rec('992')
775 );
776
777
778 ### 942
779
780 marc('942','b',
781 'PER'
782 );
783
784 marc('942','c',
785 'PER'
786 );
787
788 marc('942','d',
789 $signatura
790 );
791
792 marc('942','i',
793 $signatura
794 );
795
796
797
798 ## polja za probu
799
800
801 #marc('998','a',
802 # lookup(
803 # sub { rec('200','a') },
804 # 'ffiz','peri',
805 # sub { rec('200','a'), },
806 # sub { rec('225','a'), }
807 # )
808 #);
809
810
811 # marc('997','a',
812 # sort(
813 # lookup(
814 # sub { rec('001') },
815 # 'nsk','bbaza',
816 # sub { rec('011','a') },
817 # sub { rec('11') },
818 # )
819 # )
820 # );
821 #
822 # marc('998','a',
823 # sort(
824 # lookup(
825 # sub { rec('001') },
826 # 'nsk','bbaza',
827 # sub { first(rec('200','a')) . first(rec('200','e')) },
828 # sub { rec('200','a') . rec('200','e') },
829 # )
830 # )
831 # );
832 #
833 # marc('998','a',
834 # sort(
835 # lookup(
836 # sub { rec('001') },
837 # 'nsk','bbaza',
838 # sub { first(rec('200','a')) },
839 # sub { rec('200','a') },
840 # )
841 # )
842 # );
843
844 } # signatura

  ViewVC Help
Powered by ViewVC 1.1.26