/[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 1268 - (show annotations)
Tue Aug 11 12:23:14 2009 UTC (14 years, 8 months ago) by mglavica
File MIME type: text/plain
File size: 12197 byte(s)
work on journals data conversion

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

  ViewVC Help
Powered by ViewVC 1.1.26