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