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

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, trebalo bi mo¾da i prema jeziku (jezika nema uvijek).
213 # potrebna naknadna kontrola
214
215 marc_indicators('245', 0, 0);
216
217 if ( ( rec('200','a') =~ m/^Die /) ||
218 ( rec('200','a') =~ m/^Das /) ||
219 ( rec('200','a') =~ m/^Der /) ||
220 ( rec('200','a') =~ m/^Les /) ||
221 ( rec('200','a') =~ m/^The /) ) {
222 marc_indicators('245', 0, 4);
223
224 }
225
226 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 ### 245
240
241 marc_compose('245',
242 'a', suffix(
243 ( ! ( 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 '',
248 rec('200','a'),
249 ),
250 'b', suffix(
251 ( rec('200','d') && rec('200','f') ) ? ' /' :
252 ( rec('200','d') && rec('200','c') ) ? '.' :
253 '',
254 rec('200','d'),
255 ),
256 'b', suffix(
257 ( rec('200','e') && rec('200','f') ) ? ' /' :
258 ( rec('200','e') && rec('200','c') ) ? '.' :
259 '',
260 rec('200','e'),
261 ),
262 'b', suffix(
263 ( rec('200','k') && rec('200','f') ) ? ' /' :
264 ( rec('200','k') && rec('200','c') ) ? '.' :
265 '',
266 rec('200','k'),
267 ),
268 'c', suffix(
269 ( rec('200','f') && rec('200','c') ) ? '.' :
270 '',
271 rec('200','f'),
272 ),
273 '+', suffix('.',
274 rec('200','c'),
275 )
276 );
277
278 ### 246 inikatori
279 # prema jeziku - provjera
280
281 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
289 ### 246
290 # povuæi podatke iz prikladnog izvora (nsk, issn)
291
292 marc('246','a',
293 rec('532')
294 );
295
296 ## iz nsk:
297 # 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 #_debug(0);
307
308
309 ## 260 - izdavanje
310 # provjeriti interpunkcije !!, u NSK nesto ne stima
311
312 marc_original_order('260','210');
313
314 ## lookup u NSK:
315 # 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
344
345 ### 300
346
347 marc('300','a',
348 suffix(
349 ( rec('215','a') && rec('215','c') ) ? ' : ' :
350 ( rec('215','a') && rec('215','d') ) ? ' ; ' :
351 ( rec('215','a') && rec('215','e') ) ? ' + ' :
352 ' ',
353 rec('215','a')
354 )
355 );
356
357 marc('300','b',
358 suffix(
359 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
360 ( rec('215','c') && rec('215','e') ) ? ' + ' :
361 ' ',
362 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 ### 310 - current stated publication frequency
379 # potrebno ujednaèiti, koristi se i u polju 008
380
381 marc('310','a',
382 rec('326')
383 );
384
385 ### 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
386
387 # marc('321','a',
388 # ovo bi trebalo procitati iz NSK konvertiranih podataka
389 #);
390
391 marc_indicators('362', 0, ' ');
392
393 ### 362
394 #
395 if ( rec('207','a') ) {
396 marc('362','a',
397 rec('207','a'),
398 );
399 }
400
401 ## 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 );
439
440 marc('490','v',
441 rec('225','v')
442 );
443
444 marc('490','x',
445 rec('225','x')
446 );
447
448 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
459
460 #marc('998','a',
461 # lookup(
462 # sub { rec('H') },
463 # 'ffsf','xls',
464 # sub { rec('A') },
465 # sub { $id },
466 # ),
467 #);
468
469
470 ### 5xx
471 # koje podatke povuæi iz drugih baza?
472
473 marc('500','a',
474 rec('300','a'),
475 );
476
477
478 ### 534 - napomena o pretisku
479
480 marc('534','a',
481 rec('324')
482 );
483
484 ## potencijalno za izvuæi iz NSK
485 #if ( rec('11') ) {
486 #marc('546','a',
487 # lookup(
488 # sub { rec('302','a') },
489 # 'nsk','bbaza',
490 # sub { rec('011','a') },
491 # sub { rec('11') },
492 # )
493 #);
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 marc_indicators('653', 0, ' ');
526
527 ### 653
528
529 marc('653','a',
530 rec('610')
531 );
532
533 # 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
543
544 #_debug(2);
545
546 ### 700 indikatori
547
548 marc_indicators('700', 1, ' ');
549
550 ### 700
551
552 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 ### 710 indikatori
567
568 marc_indicators('710', '2', ' ');
569
570 ### 710
571 marc('710','a',
572 rec('710','a')
573 );
574
575 ### 770 indikatori
576
577 marc_indicators('770', 0, ' ');
578
579 ### 770
580 marc('770','t',
581 rec('421','a'),
582 );
583
584 ### 772 indikatori
585 marc_indicators('772', 0, ' ');
586
587 ### 772
588 marc('772','t',
589 rec('422','a'),
590 );
591
592 ### 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 ### 777 indikatori
618
619 marc_indicators('777', 0, ' ');
620
621 ### 777
622
623 marc('777','t',
624 rec('423','a'),
625 );
626
627 ### 780 indikatori
628
629 marc_indicators('780', 0, 0);
630
631 ### 780
632 marc('780','t',
633 rec('430','a'),
634 );
635
636 ### 785 indikatori
637
638 marc_indicators('785', 0, 0);
639
640 ### 785
641 marc('785','t',
642 rec('440','a'),
643 );
644
645 ### 852
646
647 marc('852','j',
648 join_with(' ',
649 rec('990')
650 )
651 );
652
653 ### 876
654
655 marc('876','a',
656 rec('991','a')
657 );
658
659 ### 992
660
661 marc('992','a',
662 join_with(' ; ',
663 rec('992')
664 )
665 );
666
667
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
681 # 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
714 }# 200a

  ViewVC Help
Powered by ViewVC 1.1.26