/[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 944 - (show annotations)
Wed Oct 31 18:07:33 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 11165 byte(s)
cleanup versions

1 if ( rec('200','a') ) {
2
3 ### LEADER
4 ## raspraviti 17,18
5
6 marc_leader('05','n'); # Record status
7 marc_leader('06','a'); # Type of record
8
9 ## izvuci podatke iz tablice (za po i sf)
10
11 if ( rec('225','a') ) {
12 marc_leader('07','d');
13 } else {
14 marc_leader('07','s'); # Bibliographic level
15 }
16
17 marc_leader('18','i'); # Descriptive cataloging form
18
19 # 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 if ( rec('225','a') ) {
23 marc_leader('19','r'); # Linked record requirement
24 }
25
26 ### 001 - Voyager
27
28 ### 007
29 marc_fixed('007',00,'ta');
30
31 ### 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 my $year = rec('210','c');
41
42 if ( rec('210','c') ) {
43 marc_fixed('008','06','s'); # 06 - Type of date/Publication status, s = single know date
44
45 # warn "## year = $year";
46
47 if ( $year =~ m/^(\d{4})/ ) {
48 # warn "## $1 ##\n";
49 marc_fixed('008','07',$1); # 07-10 - Date 1
50 }
51
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 } else {
59 marc_fixed('008','06','n'); # 06 - n = unknown date
60 }
61
62
63 marc_fixed('008','15', # 15-17 - Place of publication, production, or execution
64 lc ( rec('102') )
65 );
66
67
68
69 marc_fixed('008','35',
70 first( lc(rec('101')) ) # 35-37 - Language
71 );
72 # 38 - Modified record
73 # 39 - Cataloging source
74
75 ### 008 - Continuing resources
76
77 if ( ! rec('225','a') ) {
78
79 marc_fixed('008','18', 'u'); # 18 - Frequency - ovo treba popuniti iz polja 326
80 marc_fixed('008','19', 'u'); # 19 - Regularity
81 # 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 ## 022
98 # if ( ! rec('225','a') ) {
99 # marc('022','a',
100 # rec('11')
101 # );
102 # }
103 #
104
105 ### 022
106
107 #if ( ! rec('225','a') ) {
108 marc('022','a',
109 rec('11')
110 );
111 #}
112
113 ### 035$6
114 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
115
116 my $id;
117
118 $id = (
119 join_with('',
120 uc( config() ),
121 ' P',
122 rec('000')
123 )
124 );
125
126 marc('035','6', $id);
127
128 ### 040
129 # za sve je isti
130 # treba utvrditi toènu oznaku za ustanovu
131
132 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 ### 041 - indikatori
145
146 marc_indicators('041', 0, ' ');
147
148 ### 041
149
150 marc_repeatable_subfield('041','a',
151 rec('101')
152 );
153
154
155 #_debug(3);
156
157 ### 044 - zemlja izdavanja
158
159 marc('044','a',
160 rec('102')
161 );
162
163 ### 080
164
165 marc('080','a',
166 rec('675','a')
167 );
168
169 ### 210 indikatori
170 # marc_indicators('210', '1',' ');
171
172 ### 210 - ABBREVIATED TITLE
173 # pronaæi prikladan izvor podataka (nsk baza, issn baza)
174
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 marc('222','a',
196 rec('530')
197 );
198
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 ### 245 indikatori
212 # generiraju se prema èlanu i jeziku. potrebna naknadna kontrola.
213
214 marc_indicators('245', 0, 0);
215
216 if ( ( rec('200','a') =~ m/^Die /) ||
217 ( rec('200','a') =~ m/^Das /) ||
218 ( rec('200','a') =~ m/^Der /) ||
219 ( rec('200','a') =~ m/^Les /) ||
220 ( rec('200','a') =~ m/^The /) ) {
221 marc_indicators('245', 0, 4);
222
223 }
224
225 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 ### 245
242
243 marc_compose('245',
244 'a', suffix(
245 ( ! ( 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 '',
250 rec('200','a'),
251 ),
252 'b', suffix(
253 ( rec('200','d') && rec('200','f') ) ? ' /' :
254 ( rec('200','d') && rec('200','c') ) ? '.' :
255 '',
256 rec('200','d'),
257 ),
258 'b', suffix(
259 ( rec('200','e') && rec('200','f') ) ? ' /' :
260 ( rec('200','e') && rec('200','c') ) ? '.' :
261 '',
262 rec('200','e'),
263 ),
264 'b', suffix(
265 ( rec('200','k') && rec('200','f') ) ? ' /' :
266 ( rec('200','k') && rec('200','c') ) ? '.' :
267 '',
268 rec('200','k'),
269 ),
270 'c', suffix(
271 ( rec('200','f') && rec('200','c') ) ? '.' :
272 '',
273 rec('200','f'),
274 ),
275 '+', suffix('.',
276 rec('200','c'),
277 )
278 );
279
280 ### 246 inikatori
281 # prema jeziku - provjera
282
283 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
291 ### 246
292 # povuæi podatke iz prikladnog izvora (nsk, issn)
293
294 marc('246','a',
295 rec('532')
296 );
297
298 ## iz nsk:
299 # 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 #_debug(0);
309
310
311 ## 260 - izdavanje
312 # provjeriti interpunkcije !!, u NSK nesto ne stima
313
314 marc_original_order('260','210');
315
316 ## lookup u NSK:
317 # 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
346
347 ### 300
348
349 marc('300','a',
350 suffix(
351 ( rec('215','a') && rec('215','c') ) ? ' : ' :
352 ( rec('215','a') && rec('215','d') ) ? ' ; ' :
353 ( rec('215','a') && rec('215','e') ) ? ' + ' :
354 ' ',
355 rec('215','a')
356 )
357 );
358
359 marc('300','b',
360 suffix(
361 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
362 ( rec('215','c') && rec('215','e') ) ? ' + ' :
363 ' ',
364 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 ### 310 - current stated publication frequency
381 # potrebno ujednaèiti, koristi se i u polju 008
382
383 marc('310','a',
384 rec('326')
385 );
386
387 ### 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
388
389 # marc('321','a',
390 # ovo bi trebalo procitati iz NSK konvertiranih podataka
391 #);
392
393 marc_indicators('362', 0, ' ');
394
395 ### 362
396 #
397 if ( rec('207','a') ) {
398 marc('362','a',
399 rec('207','a'),
400 );
401 }
402
403 ## 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 );
441
442 marc('490','v',
443 rec('225','v')
444 );
445
446 marc('490','x',
447 rec('225','x')
448 );
449
450 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
461
462 #marc('998','a',
463 # lookup(
464 # sub { rec('H') },
465 # 'ffsf','xls',
466 # sub { rec('A') },
467 # sub { $id },
468 # ),
469 #);
470
471
472 ### 5xx
473 # koje podatke povuæi iz drugih baza?
474
475 marc('500','a',
476 rec('300','a'),
477 );
478
479
480 ### 534 - napomena o pretisku
481
482 marc('534','a',
483 rec('324')
484 );
485
486 ## potencijalno za izvuæi iz NSK
487 #if ( rec('11') ) {
488 #marc('546','a',
489 # lookup(
490 # sub { rec('302','a') },
491 # 'nsk','bbaza',
492 # sub { rec('011','a') },
493 # sub { rec('11') },
494 # )
495 #);
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 marc_indicators('653', 0, ' ');
528
529 ### 653
530
531 marc('653','a',
532 rec('610')
533 );
534
535 # 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
545
546 #_debug(2);
547
548 ### 700 indikatori
549
550 marc_indicators('700', 1, ' ');
551
552 ### 700
553
554 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 ### 710 indikatori
569
570 marc_indicators('710', '2', ' ');
571
572 ### 710
573 marc('710','a',
574 rec('710','a')
575 );
576
577 ### 770 indikatori
578
579 marc_indicators('770', 0, ' ');
580
581 ### 770
582 marc('770','t',
583 rec('421','a'),
584 );
585
586 ### 772 indikatori
587 marc_indicators('772', 0, ' ');
588
589 ### 772
590 marc('772','t',
591 rec('422','a'),
592 );
593
594 ### 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 ### 777 indikatori
620
621 marc_indicators('777', 0, ' ');
622
623 ### 777
624
625 marc('777','t',
626 rec('423','a'),
627 );
628
629 ### 780 indikatori
630
631 marc_indicators('780', 0, 0);
632
633 ### 780
634 marc('780','t',
635 rec('430','a'),
636 );
637
638 ### 785 indikatori
639
640 marc_indicators('785', 0, 0);
641
642 ### 785
643 marc('785','t',
644 rec('440','a'),
645 );
646
647 ### 852
648
649 marc('852','j',
650 join_with(' ',
651 rec('990')
652 )
653 );
654
655 ### 876
656
657 marc('876','a',
658 rec('991','a')
659 );
660
661 ### 992
662
663 marc('992','a',
664 join_with(' ; ',
665 rec('992')
666 )
667 );
668
669
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
683 # 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
716 }# 200a

  ViewVC Help
Powered by ViewVC 1.1.26