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

Contents of /trunk/conf/normalize/ff-peri.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1182 - (show annotations)
Mon May 18 17:37:06 2009 UTC (14 years, 11 months ago) by mglavica
File MIME type: text/plain
File size: 11945 byte(s)
casopisi

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

  ViewVC Help
Powered by ViewVC 1.1.26