523c7cb559279c80987e0bd641cdf09d118373d9
[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 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