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

Annotation of /trunk/conf/ffcasopisi/perilooksig2marc.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1273 - (hide 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 mglavica 1268 my $pair =
2     lookup(
3 mglavica 1273 sub { rec('C') },
4 mglavica 1268 'casopisi','sig',
5     sub { rec('A') . rec('B') },
6     sub { config ('input collection') . rec('000') }
7     );
8    
9 mglavica 1273 if ( $pair ) {
10 mglavica 1268
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 mglavica 1273 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 mglavica 1268 #if ( rec('225','a') ) {
32     # marc_leader('07','d');
33     #} else {
34     # marc_leader('07','s');
35     #}
36    
37 mglavica 1273 if ( $ldr7 ) {
38     marc_leader('07', $ldr7 );
39     }
40    
41    
42 mglavica 1268 ## 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 mglavica 1273 marc_fixed('008','06','|');
62 mglavica 1268
63     my $d1 = ' ';
64     my $d2 = ' ';
65    
66     if ( rec('210','d') ) {
67 mglavica 1273 if ( rec ('210','d') =~ m#(\d{4}).*?-.*?(\d{4})# ) {
68     $d1 = $1;
69     $d2 = $2;
70 mglavica 1268 marc_fixed('008','06','d');
71 mglavica 1273 }
72     if ( rec ('210','d') =~ m{(\d{4}).*?-\s*$} ) {
73 mglavica 1268 $d1 = $1;
74 mglavica 1273 $d2 = '9999';
75 mglavica 1268 marc_fixed('008','06','c');
76     }
77 mglavica 1273
78     marc_fixed('008','07', $d1);
79     marc_fixed('008','11', $d2);
80    
81 mglavica 1268 }
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 mglavica 1273 $fre = ( rec('326') eq '2g' ) ? 'g' :
99 mglavica 1268 ( 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 mglavica 1273 ( rec('326') eq 'g9' ) ? 'm' :
107 mglavica 1268 ( rec('326') eq 'm1' ) ? 'm' :
108 mglavica 1273 ( rec('326') eq '10' ) ? 'm' :
109     ( rec('326') eq '11' ) ? 'm' :
110 mglavica 1268 ( rec('326') eq 'm2' ) ? 's' :
111 mglavica 1273 ( rec('326') eq '19' ) ? 's' :
112     ( rec('326') eq '20' ) ? 's' :
113     ( rec('326') eq '24' ) ? 's' :
114     ( rec('326') eq '26' ) ? 's' :
115 mglavica 1268 ( 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 mglavica 1273
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 mglavica 1268 # 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 mglavica 1273 ### 035
158 mglavica 1268
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 mglavica 1273 marc('035','a', $id);
171 mglavica 1268
172     ### 040
173     # za sve je isti
174 mglavica 1273 # treba utvrditi točnu oznaku za ustanovu
175 mglavica 1268
176     marc('040','a',
177     'HR-ZaFF'
178     );
179    
180     marc('040','b',
181     'hrv'
182     );
183    
184 mglavica 1273 marc('040','c',
185     'HR-ZaFF'
186     );
187    
188 mglavica 1268 marc('040','e',
189     'ppiak'
190     );
191    
192 mglavica 1273 #### 041 - indikatori
193     #
194     #
195     #marc_indicators('041', 0, ' ');
196     #
197     #### 041
198     #
199     #marc_repeatable_subfield('041','a',
200     # rec('101')
201     #);
202 mglavica 1268
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 mglavica 1273 # pronaći prikladan izvor podataka (nsk baza, issn baza)
217 mglavica 1268
218     ### 222 indikatori
219 mglavica 1273 # drugi indikator prema clanu
220 mglavica 1268
221     marc_indicators('222',' ','0');
222    
223     ### 222 - Key title
224 mglavica 1273 # pronaci prikadan izvor podataka - nsk baza, issn baze
225 mglavica 1268
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 mglavica 1273 # generiraju se prema clanu, trebalo bi możda i prema jeziku (jezika nema uvijek).
244 mglavica 1268 # potrebna naknadna kontrola
245    
246 mglavica 1273 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 mglavica 1268 marc_indicators('245', 0, 0);
255    
256 mglavica 1273 if ( ( $naslov =~ m/^Die /) ||
257     ( $naslov =~ m/^Das /) ||
258     ( $naslov =~ m/^Der /) ||
259     ( $naslov =~ m/^Les /) ||
260     ( $naslov =~ m/^The /) ) {
261 mglavica 1268 marc_indicators('245', 0, 4);
262    
263     }
264    
265 mglavica 1273 if ( ( $naslov =~ m/^Un /) ||
266     ( $naslov =~ m/^An /) ||
267     ( $naslov =~ m/^La /) ||
268     ( $naslov =~ m/^Le /) ||
269     ( $naslov =~ m/^Il /) ) {
270 mglavica 1268 marc_indicators('245', 0, 3);
271     }
272    
273 mglavica 1273 if ( ( $naslov =~ m/^A /) ||
274     ( $naslov =~ m/^L'/) ) {
275 mglavica 1268 marc_indicators('245', 0, 2);
276     }
277    
278     ### 245
279    
280    
281 mglavica 1273 #warn $naslov;
282 mglavica 1268
283 mglavica 1273 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 mglavica 1268 } else {
289 mglavica 1273 $a = $naslov ;
290 mglavica 1268 }
291    
292 mglavica 1273 #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 mglavica 1268 ### 246
319 mglavica 1273 # povuci podatke iz prikladnog izvora (nsk, issn)
320     # 532 iz ISIS-a nije konvertirano
321     #marc('246','a',
322     # rec('532')
323     #);
324 mglavica 1268
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 mglavica 1273 # potrebno ujednaciti, koristi se i u polju 008
409 mglavica 1268
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 mglavica 1273 marc('362','a',
424     rec('207','a'),
425     );
426 mglavica 1268
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 mglavica 1273 # koje podatke povuci iz drugih baza?
498 mglavica 1268
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 mglavica 1273 ## potencijalno za izvuci iz NSK
511 mglavica 1268 #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 mglavica 1273 ### 856
672     marc('856','u',
673     rec('856','u')
674 mglavica 1268 );
675    
676    
677 mglavica 1273 ### 942
678     #
679     #marc('942','d',
680     # $pair
681     #);
682 mglavica 1268
683 mglavica 1273
684 mglavica 1268 ### 992
685    
686     marc('992','a',
687 mglavica 1273 rec('992')
688 mglavica 1268 );
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 mglavica 1273 } # pair

  ViewVC Help
Powered by ViewVC 1.1.26