/[webpac2]/trunk/conf/normalize/ff-peri.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/normalize/ff-peri.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 944 - (hide annotations)
Wed Oct 31 18:07:33 2007 UTC (16 years, 7 months ago) by dpavlin
File MIME type: text/plain
File size: 11165 byte(s)
cleanup versions

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

  ViewVC Help
Powered by ViewVC 1.1.26