78f2fe2e3a2742fdc011cbe2bfc494752e013104
[webpac2] / conf / hpm / knjige.pl
1 # Ova datoteka sadrzi pravila za generiranje MARC21 ISO 2709 izlazne
2 # datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u
3 # UNIMARC formatu, koji sadrzi visestruka odstupanja od standarda.
4
5 ## konvertira se ako postoji polje 200^a
6 if ( rec('200','a') ) {
7
8 ### LEADER
9
10 ## LDR 05 - n - new
11 marc_leader('05','n');
12
13 ## LDR 06 - a - language material 
14 marc_leader('06','a');
15
16 ## LDR 07 - m - Monograph/item
17 marc_leader('07','m');
18
19 ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
20 marc_leader('17','u');
21
22 ## LDR 18 - i - isbd 
23 marc_leader('18','i');
24
25 ## LDR 19 - Multipart resource record level ; # - Not specified or not applicable, a - Set, b - Part with independent title, c - Part with dependent title 
26
27 ### 003
28 marc_fixed('003','00','HR-ZaHPM');
29
30 ### 008 - All materials
31 ## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
32
33 if ( rec('100') ) {
34         marc_fixed('008','00',
35                 regex('s/^\d\d//',
36                         rec('100')
37                 ),
38         );
39         marc_fixed('008','02',
40                 regex('s/^\d\d\d\d//',
41                         rec('100')
42                 ),
43         );
44 } else {
45         marc_fixed('008','00',
46                 '000000'
47         );
48 }
49
50
51 ## 008 06 - Type of date/Publication status
52
53 marc_fixed('008','06',
54         's'
55 );
56
57 ## 008 07-10 - Date 1
58 ## 008 11-14 - Date 2 
59 ## 210d kroz modify postaje 210c
60
61 if ( rec('210','c') ) {
62         my $d1 = '';
63         my $d2 = '    ';
64         if ( rec('210','c') =~ m/(\d{4})-/ ) {
65                 marc_fixed('008','06','m');
66                 if ( rec('210','c') =~ m/(\d{4})-/ ) {
67                         $d1 = $1;
68                         $d2 = '9999';
69                 }
70                 if ( rec('210','c') =~ m/-(\d{4})/ ) {
71                         $d2 = $1;
72                 }
73         } else {
74                 marc_fixed('008','06','s');
75                 if ( rec('210','c') =~ m/(\d{4})/ ) {
76                         $d1 = $1;
77                 }
78                 if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
79                         $d1 = $1.'uu';
80                 } 
81                 if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
82                         $d1 = $1.'u';
83                 }
84         }
85                 
86         marc_fixed('008','07',$d1);             # 07-10 - Date 1
87         marc_fixed('008','11',$d2);             # 07-10 - Date 1
88
89 } else {
90         marc_fixed('008','06','n');             # 06 - n = unknown date
91         marc_fixed('008','07','uuuu');
92         marc_fixed('008','11','    ');          # 07-10 - Date 1
93 }
94
95
96 ## 008 15-17 - Place of publication, production, or execution - ako nema 102, popunjava se s |
97 marc_fixed('008','15',
98         rec('102')
99 );
100
101 ## 008 35-37 - Language
102 if ( frec('101','a') =~ m/(\w\w\w)/ ) {
103         marc_fixed('008','35', $1 );
104 }
105                                         
106 ## 008 38 - Modified record
107 marc_fixed('008','38','|');             
108
109 ## 008 39 - Cataloging source - d (other)
110 marc_fixed('008','39','d');             
111
112 ### 008 - Books 
113 ## 008 18-21 - Illustrations
114 if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
115         marc_fixed('008','18','a')
116 }
117
118 ## 008 22 - Target audience
119 marc_fixed('008','22','|');
120
121 ## 008 23 - Form of item
122 marc_fixed('008','23','|');
123
124 ## 008 24-27 - Nature of contents
125 marc_fixed('008','24','||||');
126
127 ## 008 28 - Government publication
128 marc_fixed('008','28','|');
129
130 ## 008 29 - Conference publication
131 marc_fixed('008','29','|');
132
133 ## 008 30 - Festschrift
134 marc_fixed('008','30','|');
135
136 ## 008 31 - Index
137 marc_fixed('008','31','|');
138
139 ## 008 32 - Undefined
140 ## 008 33 - Literary form
141 marc_fixed('008','33','|');
142
143 ## 008 34 - Biography
144 marc_fixed('008','34','|');
145
146 ### 020
147 ## postoji modify za polje 10 -> drugi ISBN pocinje prefixom "ISBN" koji se mice (pr. u sfb)
148 #if ( frec('10') ne ( frec('290') ) ) {
149         if ( rec('10','a') !~ /pogre/ ) {
150                 marc('020','a', 
151                         # isbn_13(
152                                 regex('s/\s\s/ /g',
153                                 # regex('s/\(\d\)\(/$1 \(//g',
154                                         rec('10','a')
155                                 )
156                         # )
157                 ); 
158         }
159         if ( rec('10','a') =~ /pogre/ ) {
160                 marc('020','z',
161                         regex('s/\s\s/ /g',
162                                 rec('10','a')
163                         )
164                 );
165         }
166         marc('020','z',
167                 rec('10','z')
168         );
169 #}
170
171 ### 035
172 ## marc 035a - System Number 
173 ## polje moze sadrzavati slova i razmake
174 ## moguc problem u pretrazivanju ako ima zagrade, kako bi trebalo po standardu
175
176 marc('035','a',
177 join_with('',
178         # config('input normalize path'),
179         # config('name'),
180         '(HR-ZaHPM)isis',
181         # config(),
182         # config('input name'),
183         # id(),
184         # rec('994','a'),
185         rec('000')
186         )
187 );
188
189 ### 040
190 ## za sve je isti
191
192 marc('040','a',
193         'HR-ZaHPM'
194 );
195 marc('040','b',
196         'hrv'
197 );
198 marc('040','c',
199         'HR-ZaHPM'
200 );
201 marc('040','e',
202         'ppiak'
203 );
204
205 ### 041
206 ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
207 ## koristi se kad ima vise od jednog jezika, ili kad se radi o prijevodu
208 ## nadopuniti
209
210
211 if ( ( count( rec('101','a') ) > 1 ) || ( rec('101','b') ) || ( rec('101','h') ) ) {
212         if ( ( grep( m/prijevod/i, rec('300') ) ) || ( rec('101','h') ) ) {
213                 marc_indicators('101', 1, ' ');
214         } else { 
215                 marc_indicators('101', ' ', ' ');
216         }
217         marc_original_order('041','101');
218 }
219
220
221 ### 044
222 ## koristi se kad ima vise zemalja izdavanja
223
224 ### 080 - UDK
225
226 marc('080','a',
227         rec('675')
228 );
229
230 ### 100 
231 ## I1 = 0 ako je pseudonim (ima 700a, nema 700b)
232
233 if ( rec('700','a') && ! rec('700','b') ) {
234         marc_indicators('100', 0, ' ');
235 } else {
236         marc_indicators('100', 1, ' ');
237 }
238
239 marc('100','a',
240         join_with(', ',
241                 rec('700','a'),
242                 rec('700','b')
243         )
244 );
245
246 ### formalna odrednica - iz 503 u 110, i1=0, i2=1
247
248 # nadopuniti nakon konverzije
249
250
251 ### 111 i 110
252 ## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja
253
254 if ( ! rec('700') ) {
255
256 if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
257
258         marc_indicators('111', 2, ' ');
259         
260         if ( rec('710','d') ) {
261                 marc_compose('111',
262                         'a', suffix(
263                                 ( rec('710','d') || rec('710','f') || rec('710','e') ) ? '' :
264                                         '.',
265                                         rec('710','a'),
266                         ),
267                         'n', surround( '(', ' :', 
268                                         rec('710','d'),
269                         ),
270                         'd', suffix(
271                                 ( ! rec('710','d') ) ? ')' :
272                                 ( ! rec('710','e') ) ? ')' :
273                                         ' :',
274                                         rec('710','f'),
275                         ),
276                         'c', suffix(')',
277                                 rec('710','e'),
278                         ),
279                 );
280         } else {
281                 marc_compose('111',
282                         'a', suffix(
283                                 ( rec('710','d') || rec('710','f') || rec('710','e') ) ? '' :
284                                         '.',
285                                         rec('710','a'),
286                         ),
287                         'd', surround('(',' :',
288                                         rec('710','f'),
289                         ),
290                         'c', suffix(')',
291                                 rec('710','e'),
292                         ),
293                 );
294         }
295 } else {
296         marc_indicators('110', 2, ' ');
297         marc('110','a',
298                 rec('710','a')
299         );
300         marc('110','b',
301                 rec('710','b')
302         );
303         if ( rec('710','c') ) {
304                 marc('110','c',
305                         surround('(', ')', rec('710','c'))
306                 );
307         }
308 }
309
310 }
311
312 ### 245 indikatori
313 ## i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
314 ## i2 = pretpostavlja se na temelju clana na pocetku naslova i jezika
315
316 my $titleind1;
317
318 if ( rec('700') || rec('710') || rec('711') ) {
319         $titleind1 = 1;
320 } else {
321         $titleind1 = 0;
322 }
323         
324 marc_indicators('245', $titleind1, 0);
325
326 if ( rec('200','a') =~ m/^Einen / ) {
327         marc_indicators('245', $titleind1, 6);
328
329 if ( rec('200','a') =~ m/^Eine / ) {
330         marc_indicators('245', $titleind1, 5);
331
332 if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
333         marc_indicators('245', $titleind1, 4);
334
335 if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) { 
336         marc_indicators('245', $titleind1, 3);
337
338 if ( ( rec('101') =~ m/eng/ ) && ( rec('200','a') =~ m/^A / ) ) { 
339         marc_indicators('245', $titleind1, 2);
340 }
341 if ( rec('200','a') =~ m/^L / ) { 
342         marc_indicators('245', $titleind1, 2);
343
344 if ( rec('200','a') =~ m/^L'/ ) { 
345         marc_indicators('245', $titleind1, 2);
346
347
348
349 ### 245
350 ## postoji modify
351 ## da li treba makivati razmake u inicijalima?
352
353 #_debug(3);
354
355 marc_compose('245',
356         'a', suffix(
357                 ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :  
358                 ( rec('200','d') ) ? ' =' :
359                 ( rec('200','e') ) ? ' :' :
360                 ( rec('200','k') ) ? ' ;' :
361                 ( rec('200','h') ) ? '.' :
362                         '.', 
363                         rec('200','a'),
364         ),
365         'b', suffix(
366                 ( rec('200','d') && ! rec('200','f') ) ? '.' : 
367                 ( rec('200','d') && ! rec('200','f') ) ? '.'  : 
368                         '',
369                         rec('200','d'),
370         ),
371         'b', suffix(
372                 ( rec('200','e') && rec('200','f') ) ? ' /' : 
373                 ( rec('200','e') && rec('200','h') && ! rec('200','f') ) ? '.'  : 
374                         '',
375                         rec('200','e'),
376         ),
377         'b', suffix(
378                 ( rec('200','k') && rec('200','f') ) ? ' /' : 
379                 ( rec('200','k') && rec('200','c') ) ? '.'  : 
380                         '',
381                         rec('200','k'),
382         ),
383         'n', suffix(
384                 ( rec('200','h') && rec('200','f') ) ? ' /'  :
385                 ( rec('200','h') && rec('200','i') )  ? '.' :
386                 ( rec('200','h') && ! ( rec('200','i') || rec('200','f') ) )  ? '.' :
387                         '',
388                         rec('200','h'),
389         ),
390         'p', suffix(
391                 ( rec('200','i') && rec('200','f') ) ? ' /'  :
392                 ( rec('200','i') && ! rec('200','f') )  ? '.' :
393                         '',
394                         rec('200','i'),
395         ),
396         'c', suffix(
397                 ( rec('200','f') && rec('200','c') ) ? '. ' :
398                         '',
399                         join_with(' ; ',
400                                 regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
401                                         rec('200','f'),
402                                 ),
403                                 regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
404                                         rec('200','g')
405                                 )
406                         )
407         ),
408         ## append to last subfield
409         '+', suffix('.',
410                 join_with(' / ',
411                         rec('200','c'),
412                         rec('200','x')
413                 )
414         ),
415 );
416
417 #_debug(0);
418
419 ### 250
420 ## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti za svaku bazu
421 marc_compose('250',
422         'a',suffix(
423                 rec('205','f') ? ' / ' : 
424                         '',
425                         rec('205','a')
426         ),
427         'b', rec('205','f'),
428 );
429
430 ### 260
431 ## ponovljiva potpolja u originalnom redosljedu - priprema u modify
432 marc_original_order('260', '210');
433
434
435 ### 300
436 ## urediti interpunkcije za sve kombinacije
437 marc('300','a',
438         suffix(
439                 rec('215','c') ? ' :' :
440                 rec('215','d') ? ' ;' :
441                 rec('215','e') ? ' +' :
442                         '',
443                         rec('215','a')
444         )
445 );
446 marc('300','b',
447         suffix(
448                 ( rec('215','c') && rec('215','d') ) ? ' ;' :
449                 ( rec('215','c') && rec('215','e') ) ? ' +' :
450                         '',
451                         rec('215','c')
452         )
453 );
454 marc('300','c',
455         suffix(
456                 rec('215','e') ? ' +' :
457                         '',
458                         rec('215','d')
459         )
460 );
461 marc('300','e',
462         rec('215','e')
463 );
464
465
466 if ( rec('225') ) {
467         marc_indicators('490', 0, ' ');
468         marc('490','a',
469                 rec('225','a')
470         );
471         marc('490','v',
472                 rec('225','v')
473         );
474 }
475
476 # marc_indicators('830',' ','0');
477 # i2 ovisi clanu - popraviti 
478 #
479 # marc('830','a',
480 #       regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
481 #               rec('225','a')
482 #       )
483 # );
484
485
486 ### 830 - indikatori
487 ## 2.ind. prema jeziku i clanu, uskladiti s 245
488
489 #marc_indicators('440', ' ', '0');
490 #
491 #if ( rec('225','a') =~ m/^Einen / ) {
492 #               marc_indicators('440', ' ', 6);
493 #} 
494 #
495 #if ( rec('225','a') =~ m/^Eine / ) {
496 #               marc_indicators('440', ' ', 5);
497 #} 
498 #
499 #if ( rec('225','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
500 #               marc_indicators('440', ' ', 4);
501 #} 
502 #
503 #if ( rec('225','a') =~ m/^(Um|Un|An|La|Le|Il) / ) { 
504 #               marc_indicators('440', ' ', 3);
505 #} 
506 #
507 #if ( rec('225','a') =~ m/^(A|L') / ) { 
508 #               marc_indicators('440', ' ', 2);
509 #} 
510
511 #if (
512 #       count( lookup(
513 #               sub { 1 },
514 #               'ffps','libri',
515 #               sub { rec('225','a') }
516 #       ) ) > 1
517 #) {
518
519
520 #_debug(0);
521
522
523 ### 500
524
525 marc('500','a',
526         rec('300')
527 );
528
529 ### 502 - biljeska o disertacijama
530 ## odgovarajuceg polja nema u originalnim podacima. mozda se moze pretpostaviti?
531
532 ### 504
533 marc('504','a',
534         rec('320')
535 );
536
537
538 ### 653 - Index Term-Uncontrolled
539 ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
540 marc_indicators('653', ' ', ' ');
541 marc('653','a',
542         rec('610')
543 );
544
545
546
547 ### 700
548 ## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
549 ## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
550
551 if ( rec('701','a') ) {
552         #_debug(3);
553         marc_indicators('701', 1, ' '); # override original indicators
554         marc_original_order('700','701'); 
555         #_debug(0);
556 }
557
558 my $relcode = rec('702','4');
559 my $relcode_konv = {
560         'autor' => 'aut',
561         'autor dodatka' => 'wam',
562         'autor fotografija' => 'pht',
563         'autorica' => 'aut',
564         'autorica i urednica' => 'aut edt',
565         'autorica teksta' => 'aut',
566         'autorica uvodnog teksta' => 'aui',
567         'autor izložbe' => 'cur',
568         'autor izložbe i fotografije' => 'cur pht',
569         'autor kataloških jedinica' => 'aqt',
570         'autorov suradnik' => 'oth',
571         'autor popratnih tekstova i kataloga' => 'aqt',
572         'autor predgovora' => 'aui',
573         'autor projekta' => 'pdr',
574         'autor projekta i urednik, izrada kazala' => 'pdr edt aqt',
575         'autor teksta' => 'aut',
576         'autor teksta i urednik' => 'aut edt',
577         'autor tekstova u jednom poglavlju i autor fotografija' => 'aut pht',
578         'autor uvoda' => 'aui',
579         'bibliografski urednik' => 'pbd',
580         'crtač geografskih karata' => 'ill',
581         'crteži' => 'ill',
582         'crteži karata' => 'ill',
583         'dizajner' => 'dsr',
584         'editor' => 'edt',
585         'fotograf' => 'pht',
586         'fotografija' => 'pht',
587         'fotografije' => 'pht',
588         'fotografije, engleski prijevod' => 'pht trl',
589         'fotografije i crteži' => 'pht ill',
590         'general editor' => 'edt',
591         'GIS i izrada karata' => 'ctg',
592         'glavna urednica' => 'edt',
593         'glavni i odgovorni urednik' => 'edt',
594         'glavni urednik' => 'edt',
595         'ilustracije' => 'ill',
596         'ilustracije i izrada karata' => 'ill ctg',
597         'ilustrator' => 'ill',
598         'ilustratorica' => 'ill',
599         'izrada crteža' => 'ill',
600         'izrada karata' => 'ill',
601         'izrada karata antičkih prometnica' => 'ctg',
602         'izrada kazala' => 'ant',
603         'izvedba CD-ROMa' => 'oth',
604         'kartograf' => 'ctg',
605         'kolorirani bakropisi' => 'ill',
606         'koncepcija' => 'ccp',
607         'likovno-grafička oprema' => 'ill',
608         'likovno oblikovanje' => 'ill',
609         'obrada izvornih karata i izrada kartografskih originala' => 'ctg',
610         'pisac predgovora' => 'aui',
611         'pisac uvoda' => 'aui',
612         'pomoćnica urednika' => 'edt',
613         'pomoćnik glavnog urednika' => 'edt',
614         'pomoćnik urednika' => 'edt',
615         'pomoćni urednik' => 'edt',
616         'predgovor' => 'aui',
617         'predsjednik redakcijskog kolegija' => 'pbd',
618         'prevoditelj' => 'trl',
619         'prevoditeljica' => 'trl',
620         ' prevoditeljica' => 'trl',
621         'prevoditeljica i redaktorica' => 'trl',
622         'priprema fotografija' => 'oth',
623         'priređivač' => 'edt',
624         'priređivač izdanja' => 'pbd',
625         'redaktor' => 'oth',
626         'savjetnik' => 'oth',
627         'series editor' => 'pbd',
628         'stručna suradnica' => 'ctb',
629         'stručna suradnica i autorica teksta' => 'aut',
630         'stručni koordinator' => 'oth',
631         'stručni suradnik' => 'oth',
632         'stručni suradnik i autor teksta' => 'aut',
633         'stručni urednik' => 'edt',
634         'suradnica' => 'oth',
635         'suradnik' => 'oth',
636         'tehnička realizacija CD-ROM-a' => 'oth',
637         'tekstovi o muzejima' => 'aut',
638         'tekstovi o zbirkama vjerskih zajednica' => 'aut',
639         'urednica' => 'edt',
640         'urednik' => 'edt',
641         'urednik i autor' => 'edt aut',
642         'urednik i urednik nakladničke cjeline' => 'edt pbd',
643         'urednik izdanja' => 'edt',
644         'urednik knjige i nakladničke cjeline' => 'edt',
645         'urednik nakladničke cjeline' => 'pbd',
646         'urednik pretiska' => 'edt',
647         'urednik serije' => 'edt',
648         'uvod' => 'aui',
649         'zemljopisne karte' => 'ill',
650         'zemljovidi' => 'ill',
651         'zvučni snimci' => 'rce'
652 };
653
654
655 if ( rec('702','a') ) {
656         marc_indicators('700', 1, ' ');
657
658         foreach my $repeat ( rec_array('702') ) {
659                 my $sf_a = $repeat->{a} || die "702 doesn't have a ", dump( $repeat );
660                 if ( my $sf_4 = $repeat->{4} ) {
661                         my $relcode = $relcode_konv->{ $sf_4 } || die "no relcode_konv for ",dump( $sf_4 );
662                         marc_compose('700',
663                                 '4' => $relcode,
664                                 'a' => $sf_a,
665                         );
666                 } else {
667                         marc('700', 'a', $sf_a );
668                 }
669         }
670 }
671
672 #_debug(0);
673
674 ## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
675
676 if ( rec('700') ) {
677
678 if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
679
680 marc_indicators('711', 2, ' ');
681
682 marc_compose('711',
683         'a', suffix(
684                 rec('710','b') ? '.' :
685                         '',
686                         rec('710','a'),
687         ),
688         'e', rec('710','b'),
689         'n', prefix(
690                 rec('710','d') ? '(' :
691                         '',
692                         rec('710','d')
693         ),
694         'd', prefix(
695                 ( ! rec('710','d') ) ? '(' :
696                 ( ! rec('710','e') ) ? '(' :
697                         '; ',
698                         rec('710','f'),
699         ),
700         'c', prefix(
701                 ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' :
702                 ( ! rec('710','d') && ! rec('710','f') )  ? '(' :
703                         '',
704                         rec('710','e'),
705         ),
706         '+',')',
707 );
708 } else {
709         marc_indicators('710', 2, ' ');
710         marc('710','a',
711                 rec('710','a')
712         );
713         marc('710','b',
714                 rec('710','b')
715         );
716         if ( rec('710','c') ) {
717                 marc('710','c',
718                         surround('(', ')', rec('710','c'))
719                 );
720         }
721 }
722
723 }
724
725 ### 852 - ne koristimo, koristimo  942 i 952
726
727 ### 876 - item information - basic bibliographic unit (R)
728 ## da li ovdje zapisati stare inventarne brojeve?
729 #marc('876','a',
730 #       rec('991','t'),
731 #);
732
733
734 ### KOHA items
735 marc('942','b',
736         'LIB'
737 );
738
739 my $keyword = dump( rec('610') );
740 my $itype;
741
742 if ( rec('200','a') =~ m/Elektroni/ ) {
743         marc('942','c',
744                 'CD'
745         );
746         $itype = 'CD';
747 } elsif ( $keyword =~ m/disertacija/ ) {
748         marc('942','c',
749                 'DIS'
750         );
751         $itype = 'DIS';
752 } elsif ( $keyword =~ m/magistarski/ ) {
753         marc('942','c',
754                 'MAG'
755         );
756         $itype = 'MAG';
757 } elsif ( rec('990') =~ m/(separat|posebni)/ ) {
758         marc('942','c',
759                 'SEP'
760         );
761         $itype = 'SEP';
762 } elsif ( rec('990') =~ m/starih/ ) {
763         marc('942','c',
764                 'OLD'
765         );
766         $itype = 'OLD';
767 } else {
768         marc('942','c',
769                 'BOOK'
770         );
771         $itype = 'BOOK';
772 }
773
774 # HPM local
775
776 marc('991','a',
777         rec('991','b')
778 );
779 marc('992','a',
780         rec('992')
781 );
782 marc('993','a',
783         rec('990')
784 );
785
786
787 # Items
788
789 #marc('952','a',
790 #       'HPM'
791 #);
792 #marc('952','b',
793 #       'HPM'
794 #);
795 #marc('952','e',
796 #       rec('991','a')
797 #);
798 #marc('952','o',
799 #       rec('990')
800 #);
801 #marc('952','t',
802 #       rec('991','b')
803 #);
804
805 my $copynumber = rec('991','b') ;
806 my $callnumber = rec('990') ;
807
808 my $location = rec('992');
809 my $location_konv = {
810         'ZB, Min. odjel i Geol. odjel, HPrM' => 'ZB',
811         'ZB, Min. odjel i Geol. odjel, HPM' => 'ZB',
812         'ZB i Min. odjel, HPrM' => 'ZB',
813         'ZB i Min. odjel, HPM' => 'ZB',
814         'ZB i Geol. odjel, HPrM' => 'ZB',
815         'ZB i Geol. odjel, HPM' => 'ZB',
816         'ZB, HRrM' => 'ZB',
817         'ZB, HrPM' => 'ZB',
818         'ZB, HPrM' => 'ZB',
819         'ZB, HPM' => 'ZB',
820         'ZB, Geol. odjel i Min. odjel, HPM' => 'ZB',
821         'Min. odjel i ZB, HPM' => 'ZB',
822         'Min. odjel i Geol. odjel, HPrM' => 'MP',
823         'Min. odjel i Geol. odjel, HPM' => 'MP',
824         'Min. odjel, HPrM' => 'MP',
825         'Min. odjel, HPM' => 'MP',
826         'Min. odjel' => 'MP',
827         'Institut Makarska' => 'ZB',
828         'Geol. odjel i ZB, HPM' => 'ZB',
829         'Geol. odjel i Min. odjel, HPM' => 'MP',
830         'Geol. odjel, HPrM' => 'GP',
831         'Geol. odjel, HPM' => 'GP'
832 };
833
834 #dump ( $itype );
835
836 if ( rec('991','a') ) {
837         foreach my $repeat ( rec_array('991') ) {
838                 my $sf_a = $repeat->{a} || die "991 doesn't have a ", dump( $repeat );
839                 if ( my $sf_b = $repeat->{b} ) {
840                         $sf_b || die "no inv";
841                         marc_compose('952',
842                                 'a' => 'HPM',
843                                 'b' => 'HPM',
844                                 'c' => $location_konv->{$location},
845                                 't' => $sf_b,
846                                 'o' => $callnumber,
847                                 'y' => $itype
848                         );
849                 }
850         }
851 }
852
853 } # polje 201a