/[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 1273 - (show annotations)
Wed Aug 19 14:05:30 2009 UTC (14 years, 9 months ago) by mglavica
File MIME type: text/plain
File size: 11941 byte(s)
work on journals database conversion

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

  ViewVC Help
Powered by ViewVC 1.1.26