/[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 975 - (hide annotations)
Sat Nov 3 12:29:16 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 11209 byte(s)
local

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 975 # generiraju se prema èlanu, trebalo bi mo¾da i prema jeziku (jezika nema uvijek).
213     # potrebna naknadna kontrola
214 dpavlin 880
215 dpavlin 944 marc_indicators('245', 0, 0);
216    
217 dpavlin 890 if ( ( rec('200','a') =~ m/^Die /) ||
218     ( rec('200','a') =~ m/^Das /) ||
219 dpavlin 944 ( rec('200','a') =~ m/^Der /) ||
220     ( rec('200','a') =~ m/^Les /) ||
221 dpavlin 890 ( rec('200','a') =~ m/^The /) ) {
222     marc_indicators('245', 0, 4);
223    
224 dpavlin 944 }
225 dpavlin 890
226 dpavlin 944 if ( ( rec('200','a') =~ m/^Un /) ||
227     ( rec('200','a') =~ m/^An /) ||
228     ( rec('200','a') =~ m/^La /) ||
229     ( rec('200','a') =~ m/^Le /) ||
230     ( rec('200','a') =~ m/^Il /) ) {
231     marc_indicators('245', 0, 3);
232     }
233    
234     if ( ( rec('200','a') =~ m/^A /) ||
235     ( rec('200','a') =~ m/^L'/) ) {
236     marc_indicators('245', 0, 2);
237     }
238    
239 dpavlin 905 ### 245
240    
241 dpavlin 758 marc_compose('245',
242     'a', suffix(
243 dpavlin 944 ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :
244     ( rec('200','d') ) ? ' =' :
245     ( rec('200','e') ) ? ' :' :
246     ( rec('200','k') ) ? ' ;' :
247 dpavlin 880 '',
248     rec('200','a'),
249 dpavlin 758 ),
250     'b', suffix(
251 dpavlin 944 ( rec('200','d') && rec('200','f') ) ? ' /' :
252     ( rec('200','d') && rec('200','c') ) ? '.' :
253 dpavlin 880 '',
254     rec('200','d'),
255 dpavlin 758 ),
256     'b', suffix(
257 dpavlin 944 ( rec('200','e') && rec('200','f') ) ? ' /' :
258     ( rec('200','e') && rec('200','c') ) ? '.' :
259 dpavlin 880 '',
260     rec('200','e'),
261 dpavlin 758 ),
262     'b', suffix(
263 dpavlin 944 ( rec('200','k') && rec('200','f') ) ? ' /' :
264     ( rec('200','k') && rec('200','c') ) ? '.' :
265 dpavlin 880 '',
266     rec('200','k'),
267 dpavlin 758 ),
268 dpavlin 880 'c', suffix(
269 dpavlin 944 ( rec('200','f') && rec('200','c') ) ? '.' :
270 dpavlin 880 '',
271     rec('200','f'),
272 dpavlin 758 ),
273 dpavlin 944 '+', suffix('.',
274     rec('200','c'),
275     )
276 dpavlin 880 );
277 dpavlin 773
278 dpavlin 905 ### 246 inikatori
279     # prema jeziku - provjera
280    
281 dpavlin 890 if ( ( rec('200','a') =~ m/^Die /) ||
282     ( rec('200','a') =~ m/^Das /) ||
283     ( rec('200','a') =~ m/^The /) ) {
284     marc_indicators('246', 0, 4);
285     } else {
286     marc_indicators('246', 0, 0);
287     }
288 dpavlin 880
289 dpavlin 905 ### 246
290     # povuæi podatke iz prikladnog izvora (nsk, issn)
291 dpavlin 880
292 dpavlin 905 marc('246','a',
293     rec('532')
294     );
295 dpavlin 758
296 dpavlin 905 ## iz nsk:
297 dpavlin 890 # marc('246','a',
298     # lookup(
299     # sub { rec('532','a') },
300     # 'nsk','bbaza',
301     # sub { rec('011','a') },
302     # sub { rec('11') },
303     # )
304     # );
305    
306 dpavlin 758 #_debug(0);
307    
308    
309 dpavlin 890 ## 260 - izdavanje
310 dpavlin 905 # provjeriti interpunkcije !!, u NSK nesto ne stima
311 dpavlin 758
312 dpavlin 905 marc_original_order('260','210');
313    
314     ## lookup u NSK:
315 dpavlin 890 # if ( rec('11') ) {
316     # marc_repeatable_subfield('260','a',
317     # lookup(
318     # sub { rec('210','a') },
319     # 'nsk','bbaza',
320     # sub { rec('011','a') },
321     # sub { rec('11') },
322     # )
323     # );
324     # marc_repeatable_subfield('260','b',
325     # lookup(
326     # sub { rec('210','c') },
327     # 'nsk','bbaza',
328     # sub { rec('011','a') },
329     # sub { rec('11') },
330     # )
331     # );
332     # marc('260','c',
333     # lookup(
334     # sub { rec('210','d') },
335     # 'nsk','bbaza',
336     # sub { rec('011','a') },
337     # sub { rec('11') },
338     # )
339     # );
340     # } else {
341     # marc_original_order('260', '210');
342     # }
343 dpavlin 758
344    
345 dpavlin 905 ### 300
346 dpavlin 758
347     marc('300','a',
348     suffix(
349 dpavlin 890 ( rec('215','a') && rec('215','c') ) ? ' : ' :
350     ( rec('215','a') && rec('215','d') ) ? ' ; ' :
351     ( rec('215','a') && rec('215','e') ) ? ' + ' :
352 dpavlin 773 ' ',
353 dpavlin 758 rec('215','a')
354     )
355     );
356    
357     marc('300','b',
358     suffix(
359 dpavlin 773 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
360     ( rec('215','c') && rec('215','e') ) ? ' + ' :
361     ' ',
362 dpavlin 758 rec('215','c')
363     )
364     );
365    
366     marc('300','c',
367     suffix(
368     rec('215','e') ? ' + ' :
369     ' ',
370     rec('215','d')
371     )
372     );
373    
374     marc('300','e',
375     rec('215','e')
376     );
377    
378 dpavlin 905 ### 310 - current stated publication frequency
379 dpavlin 944 # potrebno ujednaèiti, koristi se i u polju 008
380 dpavlin 905
381 dpavlin 880 marc('310','a',
382     rec('326')
383     );
384 dpavlin 758
385 dpavlin 905 ### 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
386    
387 dpavlin 890 # marc('321','a',
388     # ovo bi trebalo procitati iz NSK konvertiranih podataka
389     #);
390    
391 dpavlin 880 marc_indicators('362', 0, ' ');
392 dpavlin 758
393 dpavlin 905 ### 362
394     #
395 dpavlin 890 if ( rec('207','a') ) {
396     marc('362','a',
397     rec('207','a'),
398     );
399 dpavlin 905 }
400 dpavlin 880
401 dpavlin 905 ## lookup iz nsk
402     #else {
403     # if ( rec('11') ) {
404     # marc('362','a',
405     # lookup(
406     # sub { rec('207','a') },
407     # 'nsk','bbaza',
408     # sub { first( rec('011','a') ) },
409     # sub { rec('11') },
410     # )
411     # );
412     # }
413     #}
414    
415     ### 490 ind.
416    
417     marc_indicators('490', '0', ' ');
418    
419     ### 490
420    
421     marc('490','a',
422     join_with('. ',
423     join_with(' / ',
424     join_with(' : ',
425     join_with(' = ',
426     rec('225','a'),
427     rec('225','d')
428     ),
429     rec('225','e')
430     ),
431     join_with(' ; ',
432     rec('225','f'),
433     rec('225','g')
434     ),
435     ),
436     rec('225','h')
437     )
438 dpavlin 758 );
439 dpavlin 905
440     marc('490','v',
441     rec('225','v')
442 dpavlin 890 );
443    
444 dpavlin 905 marc('490','x',
445     rec('225','x')
446 dpavlin 880 );
447 dpavlin 890
448 dpavlin 944 if ( rec('11') ) {
449     marc('999','a',
450     lookup(
451     sub { rec('110','a'), },
452     'nsk','bbaza',
453     sub { rec('011','a') },
454     sub { rec('11') }
455     )
456     );
457     }
458 dpavlin 905
459    
460 dpavlin 944 #marc('998','a',
461     # lookup(
462     # sub { rec('H') },
463     # 'ffsf','xls',
464     # sub { rec('A') },
465     # sub { $id },
466     # ),
467     #);
468 dpavlin 905
469 dpavlin 944
470 dpavlin 905 ### 5xx
471     # koje podatke povuæi iz drugih baza?
472    
473     marc('500','a',
474     rec('300','a'),
475 dpavlin 880 );
476 dpavlin 905
477 dpavlin 758
478 dpavlin 905 ### 534 - napomena o pretisku
479    
480     marc('534','a',
481     rec('324')
482 dpavlin 758 );
483    
484 dpavlin 905 ## potencijalno za izvuæi iz NSK
485     #if ( rec('11') ) {
486     #marc('546','a',
487 dpavlin 890 # lookup(
488 dpavlin 905 # sub { rec('302','a') },
489     # 'nsk','bbaza',
490 dpavlin 890 # sub { rec('011','a') },
491     # sub { rec('11') },
492     # )
493 dpavlin 905 #);
494     #
495     #marc('550','a',
496     # lookup(
497     # sub { rec('314','a') },
498     # 'nsk','bbaza',
499     # sub { rec('011','a') },
500     # sub { rec('11') },
501     # )
502     #);
503     #
504     #marc('555','a',
505     # lookup(
506     # sub { rec('320','a') },
507     # 'nsk','bbaza',
508     # sub { rec('011','a') },
509     # sub { rec('11') },
510     # )
511     #);
512     #
513     #
514     ## marc('562','a',
515     ## lookup(
516     ## sub { rec('316','a') },
517     ## 'nsk','bbaza',
518     ## sub { rec('011','a') },
519     ## sub { rec('11') },
520     ## )
521     ## );
522     #}
523    
524     ### 653 indikatori
525 dpavlin 758 marc_indicators('653', 0, ' ');
526 dpavlin 905
527     ### 653
528    
529 dpavlin 758 marc('653','a',
530     rec('610')
531     );
532    
533 dpavlin 890 # marc_indicators('655', ' ', 4);
534     # marc('655','a',
535     # lookup(
536     # sub { rec('608','a') },
537     # 'nsk','bbaza',
538     # sub { rec('011','a') },
539     # sub { rec('11') },
540     # )
541     # );
542 dpavlin 758
543    
544     #_debug(2);
545    
546 dpavlin 905 ### 700 indikatori
547    
548 dpavlin 758 marc_indicators('700', 1, ' ');
549    
550 dpavlin 905 ### 700
551    
552 dpavlin 758 marc('700','a',
553     rec('702','a'),
554     );
555    
556     marc('700','a',
557     join_with(', ',
558     rec('702','c'),
559     rec('702','d')
560     )
561     );
562    
563    
564     #_debug(0);
565    
566 dpavlin 905 ### 710 indikatori
567    
568 dpavlin 890 marc_indicators('710', '2', ' ');
569 dpavlin 905
570     ### 710
571 dpavlin 890 marc('710','a',
572     rec('710','a')
573 dpavlin 758 );
574    
575 dpavlin 905 ### 770 indikatori
576 dpavlin 758
577 dpavlin 880 marc_indicators('770', 0, ' ');
578 dpavlin 905
579     ### 770
580 dpavlin 880 marc('770','t',
581 dpavlin 890 rec('421','a'),
582 dpavlin 758 );
583    
584 dpavlin 905 ### 772 indikatori
585 dpavlin 890 marc_indicators('772', 0, ' ');
586 dpavlin 905
587     ### 772
588 dpavlin 890 marc('772','t',
589     rec('422','a'),
590 dpavlin 773 );
591 dpavlin 758
592 dpavlin 944 ### 773 indikatori
593    
594     if ( rec('225','a') ) {
595    
596     marc_indicators('773', 0, ' ');
597    
598     ### 773
599     ## da li je bitan redoslijed potpolja?
600    
601     marc('773','w',
602     lookup(
603     sub { rec('000') },
604     'ffsf','peri',
605     sub { rec('200','a') },
606     sub {
607     regex('s/ ; //g',
608     rec('225','a')
609     )
610     },
611     )
612     );
613    
614     }
615    
616    
617 dpavlin 905 ### 777 indikatori
618    
619 dpavlin 890 marc_indicators('777', 0, ' ');
620 dpavlin 905
621     ### 777
622 dpavlin 944
623 dpavlin 890 marc('777','t',
624     rec('423','a'),
625 dpavlin 773 );
626 dpavlin 758
627 dpavlin 905 ### 780 indikatori
628    
629 dpavlin 890 marc_indicators('780', 0, 0);
630 dpavlin 905
631     ### 780
632 dpavlin 890 marc('780','t',
633     rec('430','a'),
634 dpavlin 773 );
635    
636 dpavlin 905 ### 785 indikatori
637    
638 dpavlin 890 marc_indicators('785', 0, 0);
639 dpavlin 905
640     ### 785
641 dpavlin 890 marc('785','t',
642     rec('440','a'),
643 dpavlin 773 );
644    
645 dpavlin 905 ### 852
646    
647 dpavlin 880 marc('852','j',
648     join_with(' ',
649     rec('990')
650 dpavlin 773 )
651     );
652    
653 dpavlin 905 ### 876
654    
655 dpavlin 880 marc('876','a',
656     rec('991','a')
657     );
658    
659 dpavlin 905 ### 992
660    
661 dpavlin 880 marc('992','a',
662     join_with(' ; ',
663     rec('992')
664     )
665     );
666    
667 dpavlin 905
668     ### polja za probu
669    
670    
671     #marc('998','a',
672     # lookup(
673     # sub { rec('200','a') },
674     # 'ffiz','peri',
675     # sub { rec('200','a'), },
676     # sub { rec('225','a'), }
677     # )
678     #);
679    
680 dpavlin 880
681 dpavlin 890 # marc('997','a',
682     # sort(
683     # lookup(
684     # sub { rec('001') },
685     # 'nsk','bbaza',
686     # sub { rec('011','a') },
687     # sub { rec('11') },
688     # )
689     # )
690     # );
691     #
692     # marc('998','a',
693     # sort(
694     # lookup(
695     # sub { rec('001') },
696     # 'nsk','bbaza',
697     # sub { first(rec('200','a')) . first(rec('200','e')) },
698     # sub { rec('200','a') . rec('200','e') },
699     # )
700     # )
701     # );
702     #
703     # marc('998','a',
704     # sort(
705     # lookup(
706     # sub { rec('001') },
707     # 'nsk','bbaza',
708     # sub { first(rec('200','a')) },
709     # sub { rec('200','a') },
710     # )
711     # )
712     # );
713 dpavlin 880
714 dpavlin 944 }# 200a

  ViewVC Help
Powered by ViewVC 1.1.26