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

1 mglavica 1268 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