/[webpac2]/trunk/conf/normalize/ff-libri.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

Diff of /trunk/conf/normalize/ff-libri.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 842 by dpavlin, Fri May 25 19:48:02 2007 UTC revision 1119 by dpavlin, Sun Oct 26 15:58:55 2008 UTC
# Line 1  Line 1 
 #########################################################################  
 ##                                                                      ##  
 ## Ova datoteka sadrži pravila za generiranje MARC21 ISO 2709 izlazne   ##  
 ## datoteke. Ulazni format je CDS/ISIS sa zapisima u UNIMARC-u.         ##  
 ##                                                                      ##        
 ##########################################################################  
1    
2  # konvertira se ako postoji polje 200^a  # Ova datoteka sadrži pravila za generiranje MARC21 ISO 2709 izlazne
3    # datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u
4    # UNIMARC formatu, sa višestrukim odstupanjima od standarda.
5    
6    
7    ## lookup rezultat za sabrana djela (probna procedura za filozofiju od koje se odustalo)
8    # my $sabrana;
9    
10    
11    ## sve skupa se konvertira tek ako postoji polje 200^a
12  if ( rec('200','a') ) {  if ( rec('200','a') ) {
13    
14  ### LEADER  ### LEADER
 # raspraviti 17,18  
 # u nekim knjižnicama koristi se 999a i 999b, a u nekima samo 999  
15    
16  if ( rec('999') && first(rec('999')) =~ m/(pregledan|P)/i) {  ## LDR 05 - n - new
17          marc_leader('05','c');  marc_leader('05','n');
 } else {  
         marc_leader('05','n');  
 }  
18    
19  # moguća je i oznaka "m" u 06 - odrediti kriterije  ## LDR 06 - a - language material
20          marc_leader('06','a');  marc_leader('06','a');
         marc_leader('07','m');  
         marc_leader('18','i');  
21    
22  if ( rec('230') ) {  ## LDR 07 - m - Monograph/item
23          marc_leader('19','r');  marc_leader('07','m');
24  }  
25    # ovo je bila proba za filozofiju
26    # if ( config() =~ m/fffi/ ) {
27    #       $sabrana =
28    #               lookup(
29    #                       sub{ rec('A') },
30    #                       'fffi','sabrana',
31    #                       sub { rec('B') },
32    #                       sub { rec('000') }
33    #               );
34    # }
35    #
36    # if ( ! $sabrana ) {
37    #       marc_leader('07','m');
38    # } else {
39    #       marc_leader('07','c');
40    # }
41    
42    ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
43    marc_leader('17','u');
44    
45    ## LDR 18 - i - isbd
46    marc_leader('18','i');
47    
48  ### 001 - Voyager  ## LDR 19 - Multipart resource record level ; # - Not specified or not applicable, a - Set, b - Part with independent title, c - Part with dependent title
49    
50  ### 007  #if ( ( ! $sabrana ) && ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
51    #       marc_leader('19','a');
52    #}
53    
54  marc_fixed('007',00,'ta');  if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
55            marc_leader('19','a');
56    }
57    
58  ### 008  ### 008 - All materials
59    ## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
60    ## provjereno: fi
61    
62  if ( rec('994','c') ) {  if ( rec('994','c') =~ m/\d{8}/ ) {
63          marc_fixed('008','00',          marc_fixed('008','00',
64                  regex('s/^\d\d//',                  regex('s/^\d\d//',
65                          rec('994','c')                          rec('994','c')
66                  ),                  ),
67          );          );
68  } else {  } elsif ( rec('994','c') =~ m/\d{6}/ ) {
69            marc_fixed('008','00',
70                    regex('s/^\d\d//',
71                            rec('994','c')
72                    ),
73            );
74            marc_fixed('008','04',
75                    '01'
76            );
77    } elsif ( rec('994','c') =~ m/\d{4}/ ) {
78          marc_fixed('008', 00,          marc_fixed('008', 00,
79                  '000101'                  regex('s/^\d\d//',
80                            rec('994','c')
81                    ),
82            );
83            marc_fixed('008','02',
84                    '0101'
85            );
86    } else {
87            marc_fixed('008','00',
88                    '010101'
89          );          );
90  }  }
91    
# Line 55  if ( rec('994','c') ) { Line 96  if ( rec('994','c') ) {
96  #)  #)
97  #);  #);
98    
99  ## FIXME treba velika slova pretvoriti u mala  ## 008 06 - Type of date/Publication status
100    
101    ## 008 07-10 - Date 1
102    ## 008 11-14 - Date 2
103    ## 210d kroz modify postaje 210c
104    
105    if ( rec('210','c') ) {
106            my $d1 = '';
107            my $d2 = '';
108            if ( rec('210','c') =~ m/(\d{4})-/ ) {
109                    marc_fixed('008','06','m');
110                    if ( rec('210','c') =~ m/(\d{4})-/ ) {
111                            $d1 = $1;
112                            $d2 = '9999';
113                    }
114                    if ( rec('210','c') =~ m/-(\d{4})/ ) {
115                            $d2 = $1;
116                    }
117            } else {
118                    marc_fixed('008','06','s');
119                    if ( rec('210','c') =~ m/(\d{4})/ ) {
120                            $d1 = $1;
121                    }
122                    if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
123                            $d1 = $1.'uu';
124                    }
125                    if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
126                            $d1 = $1.'u';
127                    }
128            }
129                    
130    #       if ( rec('210','c') =~ m/(\?)/ ) {
131    #               marc_fixed('008','06','q');
132    #               if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
133    #                       $d1 = $1.'uu';
134    #               }
135    #               if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
136    #                       $d1 = $1.'u';
137    #               }
138    #               if ( rec('210','c') =~ m/(\d{4})/ ) {
139    #                       $d1 = $1;
140    #               }
141    #       } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
142    #               if ( $sabrana ) {
143    #                       marc_fixed('008','06','i');
144    #               } else {
145    #                       marc_fixed('008','06','m');
146    #               }
147    #               marc_fixed('008','06','m')
148    #               if ( rec('210','c') =~ m/(\d{4})-/ ) {
149    #                       $d1 = $1;
150    #                       $d2 = '9999';
151    #               }
152    #               if ( rec('210','c') =~ m/-(\d{4})/ ) {
153    #                       $d2 = $1;
154    #               }
155    #       } else {
156    #               marc_fixed('008','06','s');
157    #               if ( rec('210','c') =~ m/(\d{4})/ ) {
158    #                       $d1 = $1;
159    #               }
160    #       }
161    
162            marc_fixed('008','07',$d1);             # 07-10 - Date 1
163            marc_fixed('008','11',$d2);             # 07-10 - Date 1
164    
165    } else {
166            marc_fixed('008','06','n');             # 06 - n = unknown date
167            marc_fixed('008','07','uuuu');
168    }
169    
170    
171    
172    ## 008 15-17 - Place of publication, production, or execution - ako nema 102, popunjava se s |
173    marc_fixed('008','15','|||');
174    
175    #marc_fixed('008','15',
176    #       lc ( rec('102') )
177    #);
178    
179    #my $zemlja =
180    #       lookup(
181    #               sub { rec('B') },
182    #               'kodovi','zemlje',
183    #               sub { rec('A') },
184    #               sub {
185    #                       regex('s/[\s;:]/g',
186    #                               rec('210','a')
187    #                       )
188    #               },
189    #       );
190    
191    
192    ## 008 35-37 - Language
193  marc_fixed('008','35',  marc_fixed('008','35',
194          first( lc(rec('101')) )          # first( lc(rec('101')) )              
195            lc( frec('101'))                
196  );  );
197                                            
198    ## 008 38 - Modified record
199    marc_fixed('008','38','|');            
200    
201    ## 008 39 - Cataloging source - d (other)
202    marc_fixed('008','39','d');            
203    
204    ### 008 - Books - raspraviti upotrebu ovih polja
205    ## 008 18-21 - Illustrations
206    if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
207            marc_fixed('008','18','a')
208    }
209    
210    ## 008 22 - Target audience
211    marc_fixed('008','22','|');
212    
213    ## 008 23 - Form of item
214    marc_fixed('008','23','|');
215    
216  ### 035$6  ## 008 24-27 - Nature of contents
217  # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku.  marc_fixed('008','24','||||');
 # marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako?  
 # kako mora izgledati polje 035$9? može li sadržavati slova i razmake?  
218    
219    ## 008 28 - Government publication
220    marc_fixed('008','28','|');
221    
222  marc('035','6',  ## 008 29 - Conference publication
223  join_with('',  marc_fixed('008','29','|');
224  #               config('input normalize path'),  
225  #               config('name'),  ## 008 30 - Festschrift
226                  config(),  marc_fixed('008','30','|');
227                  'L',  
228  #               config('input name'),  ## 008 31 - Index
229  #               id(),  marc_fixed('008','31','|');
 #               rec('994','a'),  
                 rec('000')  
         )  
 );  
230    
231    ## 008 32 - Undefined
232    ## 008 33 - Literary form
233    marc_fixed('008','33','|');
234    
235    ## 008 34 - Biography
236    marc_fixed('008','34','|');
237    
238  ### 020  ### 020
239  # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)  ## postoji modify za polje 10 -> drugi ISBN počinje prefixom "ISBN" koji se miče (pr. u sfb)
240    #if ( frec('10') ne ( frec('290') ) ) {
241            if ( rec('10','a') !~ /pogre/ ) {
242                    marc('020','a',
243                            # isbn_13(
244                                    regex('s/\s\s/ /g',
245                                    # regex('s/\(\d\)\(/$1 \(//g',
246                                            rec('10','a')
247                                    )
248                            # )
249                    );
250            }
251            if ( rec('10','a') =~ /pogre/ ) {
252                    marc('020','z',
253                            regex('s/\s\s/ /g',
254                                    rec('10','a')
255                            )
256                    );
257            }
258            marc('020','z',
259                    rec('10','z')
260            );
261    #}
262    
263    #warn(
264    #       dump(
265    #               frec('10')
266    #       ),
267    #);
268    
269    ### 035$
270    ## marc 035a - System Number
271    ## polje može sadržavati slova i razmake
272    ## moguć problem u pretraživanju ako ima zagrade, kako bi trebalo po standardu
273    
274  marc('020','a',  marc('035','a',
275          regex('s/ ISBN //g',  join_with('',
276                  rec('10')          # config('input normalize path'),
277            # config('name'),
278            'HR-ZaFF ',
279            config(),
280            'L',
281            # config('input name'),
282            # id(),
283            # rec('994','a'),
284            rec('000')
285          )          )
286  );  );
287    
   
288  ### 040  ### 040
289  # za sve je isti  ## za sve je isti
290    
291  marc('040','a',  marc('040','a',
292          'HR FFZG'          'HR-ZaFF'
293  );  );
   
294  marc('040','b',  marc('040','b',
295          'hrv'          'hrv'
296  );  );
297    marc('040','c',
298            'HR-ZaFF'
299    );
300  marc('040','e',  marc('040','e',
301          'HR PPIAK'          'ppiak'
302  );  );
303    
304    ### 041 - indikatori
305  ### 041 indikatori  ## pretpostavke o indikatorima
306  # pretpostavke o indikatorima:  ## 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
307  #  ## (Da li je napomena uvijek pisana?)
308  # 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1  ## 2. Podatak o prevodiocu u 200g. Problem: različiti oblici riječi, različiti jezici.
309  # (Da li je napomena uvijek pisana?)  ## 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
310  #  ## (ako postoje zagrade pr. 94(=411.16) onda su to pomoćne oznake)
311  # 2. Podatak o prevodiocu u 200g. Problem: različiti oblici riječi, različiti jezici.  ## pr. 821.111-2=163.42 je prijevod engleske drame na HR.
312  #  ## to ima samo za književna djela, eseje....
313  # 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod  ## ovo treba kasnije ispravljati
314  # (ako postoje zagrade pr. 94(=411.16) onda su to pomoćne oznake)  
315  # pr. 821.111-2=163.42 je prijevod engleske drame na HR.  #if ( rec('675') =~ m/\d=\d/ ) ?
316  # to ima samo za književna djela, eseje....  
317  # ????  if (
318            grep( m/prijevod/i, rec('300') )
319            || grep( m/nasl.*izv/i, rec('300') )
320  #if ( rec('675') =~ m/\d=\d/ ) {  #       ( frec('300') =~ m/Prijevod/ )
321  if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) {  #       || ( rec('300') =~ m/izvorni stvarni naslov/i )
322    #       || ( rec('300') =~ m/naslov izvornika/i )
323    #       grep( m/[prijevod|stvarni\snaslov]/i, rec('300') )
324    ) {
325          marc_indicators('041', 1, ' ');          marc_indicators('041', 1, ' ');
326  } else {          marc_repeatable_subfield('041','a',
327                    map { lc($_) } rec('101')
328            );
329    } elsif (
330            count( rec('101') ) > 1
331    ) {
332          marc_indicators('041', 0, ' ');          marc_indicators('041', 0, ' ');
333            marc_repeatable_subfield('041','a',
334                    map { lc($_) } rec('101')
335            );
336  }  }
337    
   
338  ### 041  ### 041
339  # ponovljivo polje konvertira se u ponovljivo potpolje  ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
340    ## koristi se kad ima više od jednog jezika, ili kad se radi o prijevodu
341  #_debug(2);  ## nadopuniti
 marc_repeatable_subfield('041','a',  
         rec('101')  
 );  
 #_debug(0);  
342    
343    ### 044
344    ## koristi se kad ima više zemalja izdavanja
345    
346  ### 080  ### 080
347  # 675 podpolja b, c, d ... - što s njima ???  ## 675 podpolja b, c, d ... - što s njima? - provjeriti za svaku bazu
348    ## fi: abcd
349    ## sk: ima \r\n na kraju
350    
351  marc('080','a',  marc('080','a',
352          rec('675','a')          rec('675','a')
353  );  );
354    
355    marc('080','a',
356            rec('675','b')
357    );
358    
359  ### 084 - other classification (R)  marc('080','a',
360  # NSK ga koristi za stručnu oznaku NSK iz polja 681          rec('675','c')
361  # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom  );
362  # polje 686 koristi FFPS  
363    marc('080','a',
364            rec('675','d')
365    );
366    
367    
368    ### 084 - other classification (R)
369    ## NSK ga koristi za stručnu oznaku NSK iz polja 681
370    ## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
371    ## polje 686 koristi FFPS. još netko?
372    
373    marc('084','2',
374            'APA CC'
375    );
376  marc('084','a',  marc('084','a',
377          rec('686')          rec('686')
378  );  );
379    
380  ### 100  ### 100
381  # I1 = 0 ako je pseudonim (ima 700a, nema 700b)  ## I1 = 0 ako je pseudonim (ima 700a, nema 700b)
382    
383  if ( rec('700','a') && ! rec('700','b') ) {  if ( rec('700','a') && ! rec('700','b') ) {
384          marc_indicators('100', 0, ' ');          marc_indicators('100', 0, ' ');
# Line 176  marc('100','a', Line 393  marc('100','a',
393          )          )
394  );  );
395    
396    ### formalna odrednica - iz 503 u 110, i1=0, i2=1
397    
398  ### 111 i 110  ### 111 i 110
399  # provjeriti ispise naslova iz svake baze - moguće su greške.  ## provjeriti za svaku bazu
400  # ovo vrijedi za FFSFB  ## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake zbirke - moguće su greške.
401    ## popraviti interpunkciju
402    
403  if ( rec('710','f') ) {  # ovo vrijedi za FFSFB
404    if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
405    
406  marc_indicators('111', 2, ' ');  marc_indicators('111', 2, ' ');
407    
408  marc_compose('111',  marc_compose('111',
409          'a', rec('710','a'),          'a', suffix(
410                    rec('710','b') ? '.' :
411                            '',
412                            rec('710','a'),
413            ),
414          'e', rec('710','b'),          'e', rec('710','b'),
415          'n', rec('710','d'),          'n', prefix(
416          'd', rec('710','f'),                  rec('710','d') ? '(' :
417          'c', rec('710','e'),                          '',
418                            rec('710','d')
419            ),
420            'd', prefix(
421                    ( ! rec('710','d') ) ? '(' :
422                    ( ! rec('710','e') ) ? '(' :
423                            '; ',
424                            rec('710','f'),
425            ),
426            'c', prefix(
427                    ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' :
428                    ( ! rec('710','d') && ! rec('710','f') )  ? '(' :
429                            '',
430                            rec('710','e'),
431            ),
432            '+',')',
433  );  );
   
   
434  } else {  } else {
435                    marc_indicators('110', 2, ' ');
436  marc_indicators('110', 2, ' ');          marc('110','a',
437  marc('110','a',                  rec('710','a')
438          rec('710','a')          );
439  );          marc('110','b',
440                    rec('710','b')
441  marc('110','c',          );
442          rec('710','c')          if ( rec('710','c') ) {
443  );                  marc('110','c',
444                            surround('(', ')', rec('710','c'))
445                    );
446            }
447  }  }
448    
   
449  ### 245 indikatori  ### 245 indikatori
450  # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710  ## i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
451  # i2 = pretpostavlja se na temelju člana na početku naslova i jezika  ## i2 = pretpostavlja se na temelju člana na početku naslova i jezika
452  # treba nadopuniti i dati podatke na verifikaciju knjižničarima  ## treba provjeriti
453    
454  my $i1;  my $titleind1;
455    
456  if ( rec('700') || rec('710') ) {  if ( rec('700') || rec('710') ) {
457          $i1 = 1;          $titleind1 = 1;
   
458  } else {  } else {
459          $i1 = 0;          $titleind1 = 0;
460  }  }
461                    
462  marc_indicators('245', $i1, 0);  marc_indicators('245', $titleind1, 0);
463    
464  if (    ( rec('200','a') =~ m/^Die /) ||  if ( rec('200','a') =~ m/^Einen / ) {
465          ( rec('200','a') =~ m/^Das /) ||          marc_indicators('245', $titleind1, 6);
         ( rec('200','a') =~ m/^Der /) ||  
         ( rec('200','a') =~ m/^The /) ) {  
                 marc_indicators('245', $i1, 4);  
466  }  }
467    if ( rec('200','a') =~ m/^Eine / ) {
468  if (    ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {          marc_indicators('245', $titleind1, 5);
                 marc_indicators('245', $i1, 2);  
469  }  }
470    if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
471  if (    ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {          marc_indicators('245', $titleind1, 4);
472                  marc_indicators('245', $i1, 2);  }
473    if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) {
474            marc_indicators('245', $titleind1, 3);
475  }  }
476    if ( ( rec('101') =~ m/ENG/ ) && ( rec('200','a') =~ m/^A / ) ) {
477            marc_indicators('245', $titleind1, 2);
478    }
479    if ( rec('200','a') =~ m/^L / ) {
480            marc_indicators('245', $titleind1, 2);
481    }
482    if ( rec('200','a') =~ m/^L'/ ) {
483            marc_indicators('245', $titleind1, 2);
484    }
485    
486    
487  ### 245  ### 245
488  # redoslijed polja važan  ## postoji modify
489  # podpolja i interpunkcije pripremljeni u modify  ## da li treba makivati razmake u inicijalima?
490    
491  #_debug(3);  #_debug(3);
492    
493  marc_compose('245',  marc_compose('245',
494          'a', suffix(          'a', suffix(
495                  ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' :                    ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :  
496                  ( rec('200','p') && rec('200','c') ) ? ' : '  :                  ( rec('200','d') ) ? ' =' :
497                          '',                  ( rec('200','e') ) ? ' :' :
498                    ( rec('200','k') ) ? ' ;' :
499                            '.',
500                          rec('200','a'),                          rec('200','a'),
501          ),          ),
502          'b', suffix(          'b', suffix(
503                  ( rec('200','p') && rec('200','f') ) ? ' / ' :                  ( rec('200','d') && rec('200','f') ) ? ' /' :
504                  ( rec('200','p') && rec('200','c') ) ? '. '  :                  ( rec('200','d') && rec('200','c') ) ? '.'  :
505                          '',                          '',
506                          rec('200','p'),                          rec('200','d'),
507            ),
508            'b', suffix(
509                    ( rec('200','e') && rec('200','f') ) ? ' /' :
510                    ( rec('200','e') && rec('200','c') ) ? '.'  :
511                            '',
512                            rec('200','e'),
513            ),
514            'b', suffix(
515                    ( rec('200','k') && rec('200','f') ) ? ' /' :
516                    ( rec('200','k') && rec('200','c') ) ? '.'  :
517                            '',
518                            rec('200','k'),
519          ),          ),
520          'c', suffix(          'c', suffix(
521                  ( rec('200','f') && rec('200','c') ) ? '. ' :                  ( rec('200','f') && rec('200','c') ) ? '. ' :
522                          '',                          '',
523                          rec('200','f'),                          join_with(' ; ',
524                                    regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
525                                            rec('200','f'),
526                                    ),
527                                    regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
528                                            rec('200','g')
529                                    )
530                            )
531            ),
532            ## append to last subfield
533            '+', suffix('.',
534                    join_with(' / ',
535                            rec('200','c'),
536                            rec('200','x')
537                    )
538          ),          ),
         '+', rec('200','c'),  
539  );  );
540    
541  #_debug(0);  #_debug(0);
542    
543  #marc_compose('245',  ### 246
544  #       'a', suffix(  ## i1=1 ukoliko pravilo nalaže napomenu, ali napomenu necemo pisati ponovo u 500
545  #               rec('200','b') ? '. '   :  ## i1=3 ako pravlo na nalaže napomenu
546  #               rec('200','k') ? ' ; '  :  ## vidi na wiki
547  #               rec('200','d') ? ' = '  :  ## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
548  #               rec('200','e') ? ' : '  :  marc_indicators('246', 3, ' ');
549  #               rec('200','f') ? ' / '  :  marc('246','a',
550  #                                '.',          rec('532')
551  #                       rec('200','a')  );
 #       ),  
 ##      'h', rec('200','b'),  
 #       'b', suffix(  
 #               ( rec('200','k') && rec('200','f') ) ? ' / ' :  
 #                                    ' ',  
 #                       join_with(' ; ',  
 #                               rec('200','k'),  
 #                       ),  
 #       ),  
 #       'b', suffix(  
 #               ( rec('200','d') && rec('200','f') ) ? ' / ' :  
 #                                                      ' ',  
 #                               rec('200','d'),  
 #       ),  
 #       'b', suffix(  
 #               ( rec('200','e') && rec('200','f') ) ? ' / ' :  
 #                                                      ' ',  
 #                       join_with(' : ',  
 #                               rec('200','e'),  
 #                       ),  
 #       ),  
 #       'c', rec('200','f'),  
 ### append to last subfield  
 #       '+', prefix('. ',  
 #               rec('200','c')  
 #       ),  
 #);  
   
   
   
   
552    
553  ### 250  ### 250
554    ## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti za svaku bazu
555  marc_compose('250',  marc_compose('250',
556          'a',suffix(          'a',suffix(
557                  rec('205','f') ? ' / ' :                  rec('205','f') ? ' / ' :
558                          ' ',                          '',
559                          rec('205','a')                          rec('205','a')
560          ),          ),
561          'b', rec('205','f'),          'b', rec('205','f'),
562  );  );
563    
 #marc('250','b',  
 #       rec('205','f')  
 #);  
   
   
564  ### 260  ### 260
565  # ponovljiva potpolja u originalnom redosljedu  ## ponovljiva potpolja u originalnom redosljedu - priprema u modify
   
566  marc_original_order('260', '210');  marc_original_order('260', '210');
567    
568    
569  ### 300  ### 300
570  # provjeriti interpunkcije !!  ## urediti interpunkcije za sve kombinacije
   
571  marc('300','a',  marc('300','a',
572          suffix(          suffix(
573                  rec('215','c') ? ' : ' :                  rec('215','c') ? ' : ' :
574                  rec('215','d') ? ' ; ' :                  rec('215','d') ? ' ; ' :
575                  rec('215','e') ? ' + ' :                  rec('215','e') ? ' + ' :
576                                          ' ',                          '',
577                          rec('215','a')                          rec('215','a')
578          )          )
579  );  );
   
580  marc('300','b',  marc('300','b',
581          suffix(          suffix(
582                  ( rec('215','c') && rec('215','d') ) ? ' ; ' :                  ( rec('215','c') && rec('215','d') ) ? ' ; ' :
583                  ( rec('215','c') && rec('215','e') ) ? ' + ' :                  ( rec('215','c') && rec('215','e') ) ? ' + ' :
584                                                         ' ',                          '',
585                          rec('215','c')                          rec('215','c')
586          )          )
587  );  );
   
588  marc('300','c',  marc('300','c',
589          suffix(          suffix(
590                  rec('215','e') ? ' + ' :                  rec('215','e') ? ' + ' :
591                                   ' ',                          '',
592                          rec('215','d')                          rec('215','d')
593          )          )
594  );  );
   
595  marc('300','e',  marc('300','e',
596          rec('215','e')          rec('215','e')
597  );  );
598    
599    ### 362 - brojčani podaci za nakladničku cjelinu - to mi nemamo, polje se koristi samo za časopise
600    ## i1 = 0 - formalizirani oblik navoda
601    ## i1 = 1 - neformalizirani
602    ## i2 nema
603    
604    # if ( ! rec('225','z')  ) {
605    
606    # ako je naslov nakladničke cjeline složen, podatak se zapisuje u 490, s pripadajućim 830
607    
608  ### 440  #if (  frec('225','a') =~ m/[\/=:]/  ) {
609  # 2.ind. prema jeziku i članu  #
610    ##_debug(3);
611    #
612    #### 490
613    ### 490: Subfield _p is not allowed.
614    #
615    #marc_indicators('490','0',' ');
616    #
617    #marc_template(
618    #       from => 225, to => 490,
619    #       subfields_rename => [
620    #               'a' => 'a',
621    #               'x' => 'x',
622    #               'v' => 'v',
623    #               'h' => 'n',
624    #               'i' => 'p',
625    #               'w' => 'v',
626    #       ],
627    #       isis_template => [
628    #               'a',
629    #               'a ;|v',
630    #               'a,|x ;|v',
631    #               'a,|x ;|w',
632    #               'a,|x.|h ;|w',
633    #               'a.|h,|i ;|v',
634    #               'a ;|v.|i',
635    #               'a.|i ;|w',
636    #               'a,|x',
637    #               # greske:
638    #               'i ;|v',
639    #               'i'
640    #       ],
641    #);
642    
643    #marc_template(
644    #       from => 225, to => 490,
645    #         from => "{ z => 1 }",
646    #           to => "{ a => 1 }",
647    #
648    #       marc_template => [
649    #               'a',
650    #       ],
651    #);
652    
653    # marc_indicators('830',' ','0');
654    # i2 ovisi članu - popraviti
655    #
656    # marc('830','a',
657    #       regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
658    #               rec('225','a')
659    #       )
660    # );
661    
662    
663    #} else {
664    
665    ### 440 - indikatori
666    ## 2.ind. prema jeziku i članu, uskladiti s 245
667    
668  marc_indicators('440', ' ', '0');  marc_indicators('440', ' ', '0');
669    
670  if (    ( rec('225','a') =~ m/^Die /) ||  if ( rec('225','a') =~ m/^Einen / ) {
671          ( rec('225','a') =~ m/^Das /) ||                  marc_indicators('440', ' ', 6);
672          ( rec('225','a') =~ m/^The /) ) {  }
673    
674    if ( rec('225','a') =~ m/^Eine / ) {
675                    marc_indicators('440', ' ', 5);
676    }
677    
678    if ( rec('225','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
679                  marc_indicators('440', ' ', 4);                  marc_indicators('440', ' ', 4);
680  }  }
681    
682  if (    ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {  if ( rec('225','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
683                  marc_indicators('440', ' ', 2);                  marc_indicators('440', ' ', 3);
684  }  }
685    
686  if (    ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {  if ( rec('225','a') =~ m/^(A|L') / ) {
687                  marc_indicators('440', ' ', 2);                  marc_indicators('440', ' ', 2);
688  }  }
689    
690  #_debug(3);  ## 440v nije ponovljivo
691    
692  marc('440',  marc_template(
693          'a', suffix( rec('225','f'),          from => 225, to => 440,
694                          rec('225','a'),          subfields_rename => [
695          ),                  'a' => 'a',
696                    'x' => 'x',
697                    'v' => 'v',
698                    'h' => 'n',
699                    'i' => 'p',
700                    'w' => 'v',
701            ],
702            isis_template => [
703                    'a',
704                    'a,|x',
705                    'a,|x ;|v',
706                    'a,|x.|i',
707                    'a,|x.|i ;|w',
708                    'a,|x.|h ;|w',
709                    'a,|x.|h,|i ;|w',
710                    'a,|x ;|v.|h ;|w',
711                    'a,|x ;|v.|h,|i ;|w',
712                    'a ;|v',
713                    'a ;|v.|i',
714                    'a ;|v.|h,|i',
715                    'a ;|w',
716                    'a ;|v.|i ;|w',
717                    'a ;|v.|h,|i ;|w',
718                    'a ;|v.|h ;|w',
719                    'a.|h,|i',
720                    'a.|h,|i ;|w',
721                    'a.|i',
722                    'a.|i ;|w',
723                    # greške:
724                    'a ;|v ;|w',
725                    'a.|h',
726                    'a.|h ;|w',
727                    'a.|h ;|v',
728                    'h,|i',
729                    'h ;|v',
730                    'i ;|w',
731                    'v',    
732                    'w',
733            ],
734  );  );
735    
736  #       join_with(' / ',  #}
 #               join_with(' ',  
 #                       rec('225','a'),  
 #                       rec('225','p'),  
 #               ),  
 #                       rec('225','f')  
 #       ),  
737    
738  #_debug(0);  #marc_template(
739    #       from => 225, to => 490,
740    #       subfields_rename => [
741    #               'a' => 'a',
742    #               'x' => 'x',
743    #               'v' => 'v',
744    #               'h' => 'n',
745    #               'i' => 'p',
746    #               'w' => 'v',
747    #       ],
748    #       isis_template => [
749    #               'a.|h,|i ;|w',
750    #               'a.|h.|w',
751    #               'a.|i ;|w',
752    #               'a ;|v.|i',
753    #               'a ;|v.|i ;|w',
754    #               'a ;|v.|h,|i ;|w',
755    #               'a ;|v.|h ;|w',
756    #               'a ;|v ;|w',
757    #               #mozda greska:
758    #               'a ;|v,|x ;|w',
759    #               'a ;|v,|x.|p',
760    #               'a,|x ;|v',
761    #               'a,|x.|p ;|w',
762    #       ],
763    #         from => "{ a => 1, i => 1, w => 1, \"x\" => 1 }",
764    #           to => "{ a => 1, p => 1, v => 1, \"x\" => 1 }",
765    #
766    #       marc_template => [
767    #               'a',
768    #               'a ;|v',
769    #               'a,|x',
770    #               'a.|n',         # mozda greska
771    #               'a.|n,|p',
772    #               'a.|p',
773    #               'a ;|v.|n',
774    #               'a ;|v.|n,|p',  # mozda greska
775    #               'n,|p',
776    #               'n ;|v',        # mozda greska
777    #               'p ;|v',
778    #               'v',
779    #               'x',
780    #               'x ;|v'         # greska
781    #       ],
782    #);
783    
 marc('440','n',  
         rec('225','h')  
 );  
784    
785  marc('440','p',  ## marc_compose za 440 radi samo kad polje ni potpolja nisu ponovljiva. ne zapisuje dobro drugo pojavljivanje ^v, tj. ^v iza ^p (iz 225^w)
         rec('225','i')  
 );  
786    
787  marc('440','v',  #marc_compose('440',
788          rec('225','v'),  #       'a', suffix(
789  );  #               ( rec('225','v') ) ? ' ;' :
790    #               ( rec('225','w') ) ? ' ; ' :
791    #               ( rec('225','x') ) ? ',' :
792    #               ( rec('225','h') || rec('225','i') ) ? '.' :
793    #                       '.',
794    #                       frec('225','a')
795    #       ),
796    #       'x',suffix(
797    #               ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
798    #                       '',
799    #                       frec('225','x')
800    #       ),
801    #       'v',suffix(
802    #               ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
803    #               ( rec('225','v') && rec('225','w') ) ? ' ; ' :
804    #                       '',
805    #                       frec('225','v')
806    #       ),
807    #       'n',suffix(
808    #               ( rec('225','h') && rec('225','i') ) ? ',' :
809    #               ( rec('225','h') && rec('225','w') ) ? ' ; ' :
810    #                       '',
811    #                       frec('225','h')
812    #       ),
813    #       'p',suffix(
814    #               ( rec('225','i') && rec('225','w') ) ? ' ; ' :
815    #               ( rec('225','i') && rec('225','x') ) ? ',' :
816    #                       '',
817    #                       frec('225','i')
818    #       ),
819    ## 225w treba ici u 440v, na kraj
820    #       '+', join_with(' ; ',
821    #               rec('225','w'),
822    #       )
823    #);
824    
825  marc('440','x',  #marc_original_order('440','225');
         rec('225','x')  
 );  
826    
827    
828  ### 490  #if (
829  #  #       count( lookup(
830  #marc('490','a',  #               sub { 1 },
831  #       rec('225','a')  #               'ffps','libri',
832  #);  #               sub { rec('225','a') }
833    #       ) ) > 1
834    #) {
835    
836    
837    #_debug(0);
838    
839    
840  ### 50x  ### 500
841    
842  marc('500','a',  marc('500','a',
843          rec('300')          rec('300')
# Line 446  marc('500','a', Line 856  marc('500','a',
856  );  );
857    
858  ### 502 - bilješka o disertacijama  ### 502 - bilješka o disertacijama
859  # odgovarajućeg polja nema u originalnim podacima. možda se može pretpostaviti?  ## odgovarajućeg polja nema u originalnim podacima. možda se može pretpostaviti?
860    
861  ### 504  ### 504
862    
# Line 454  marc('504','a', Line 864  marc('504','a',
864          rec('320')          rec('320')
865  );  );
866    
867  ## napomene uz konverziju polja 327 (sadrzaj):  ### 505
 # NSK konvertira 327 (NP) u 501 (R)  
 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)  
 # standard i validacije dopuštaju 501 (R) i 505 (R)  
   
 ## 505  
868  ## FFPS 327 - sadrzaj  ## FFPS 327 - sadrzaj
869    ## NSK konvertira 327 (NP) u 501 (R)
870  if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {  ## u LOC konv. tablici stoji 327 (NP) u 505 (NR)
871    ## standard i validacije dopuštaju 501 (R) i 505 (R)
872    ## za svaku bazu posebno provjeriti sta je u poljima 327 i 330
873    if ( config() =~ m/ffps|fftu/ ) {
874          marc_indicators('505', '0', ' ');          marc_indicators('505', '0', ' ');
875          marc('505','a',          marc('505','a',
876                  regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',                  regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
# Line 480  if ( config() =~ m/ffan/ ) { Line 888  if ( config() =~ m/ffan/ ) {
888  );  );
889  }  }
890    
   
   
 ## napomene uz konverziju polja 330:  
 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica  
   
   
891  ### 520  ### 520
892  # možda i polje 520y - jezik napomene ako je uvijek isti jezik  ## NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
   
 # FFPS 330 (NP) - sažetak  
893  if ( config() =~ m/ffps/ ) {  if ( config() =~ m/ffps/ ) {
894          marc('520','a',          marc('520','a',
895                  regex('s/[\\r\\n]+/. /g',                  regex('s/[\\r\\n]+/. /g',
# Line 499  if ( config() =~ m/ffps/ ) { Line 899  if ( config() =~ m/ffps/ ) {
899  }  }
900    
901  ### 526 - STUDY PROGRAM INFORMATION NOTE  ### 526 - STUDY PROGRAM INFORMATION NOTE
902    ## u nekim bazame je to u 996 - provjeriti za svaku bazu sta je u 996?
903  marc_indicators('526', 8, ' ');  marc_indicators('526', 8, ' ');
   
904  marc('526','a',  marc('526','a',
905          rec('996')          rec('996')
906  );  );
907    
908  ### 538 - zahtjevi sustava  ### 538 - zahtjevi sustava
   
909  marc('538','a',  marc('538','a',
910          rec('337','a')          rec('337','a')
911  );  );
912    
913    ### 653 - Index Term-Uncontrolled
914  ### 246  ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
915    marc_indicators('653', ' ', ' ');
916  marc_indicators('246', 1, 3);  marc('653','a',
917  marc('246','a',          rec('610')
         rec('532')  
918  );  );
919    
920  ### 655  ### 655 - Index Term-Genre/Form
   
921  marc_indicators('655', ' ', 4);  marc_indicators('655', ' ', 4);
922  marc('655','a',  marc('655','a',
923          rec('608')          rec('608')
924  );  );
925    
 ### 653  
   
 marc_indicators('653', 0, ' ');  
 marc('653','a',  
         rec('610')  
 );  
   
926  #_debug(2);  #_debug(2);
927    
928    
929  ### 700  ### 700
930    ## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
931  marc_indicators('700', 1, ' ');  ## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
932    if ( rec('701','a') =~ m/, / ) {
933  if ( rec('701') ) {          marc_indicators('700', 1, ' ');
934  marc('700','4',  } else {
935          'aut'          marc_indicators('700', 0, ' ');
 );  
936  }  }
937    
938  marc('700','a',  marc('700','a',
939          join_with(', ',          rec('701', 'a'),
                 rec('701', 'a'),  
                 rec('701', 'b')  
         )  
940  );  );
941    
942  marc('700','a',  marc('700','a',
943          join_with(', ',          join_with(', ',
944                  rec('701', 'c'),                  rec('701', 'c'),
945                  rec('701', 'd')                  rec('701', 'd')
946          )          ),
947  );  );
   
948  marc('700','a',  marc('700','a',
949          join_with(', ',          join_with(', ',
950                  rec('701', 'e'),                  rec('701', 'e'),
951                  rec('701', 'f')                  rec('701', 'f')
952          )          ),
953  );  );
   
954  marc('700','a',  marc('700','a',
955          join_with(', ',          join_with(', ',
956                  rec('701', 'g'),                  rec('701', 'g'),
957                  rec('701', 'h')                  rec('701', 'h')
958          )          ),
959  );  );
   
   
960  marc('700','a',  marc('700','a',
961          rec('702','a'),          rec('702','a'),
962  );  );
   
   
 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!  
   
   
963  marc('700','a',  marc('700','a',
964          join_with(', ',          join_with(', ',
965                  rec('702','c'),                  rec('702','c'),
966                  rec('702','d')                  rec('702','d')
967          )          )
968  );  );
   
969  marc('700','a',  marc('700','a',
970          join_with(', ',          join_with(', ',
971                  rec('702','e'),                  rec('702','e'),
972                  rec('702','f')                  rec('702','f')
973          )          )
974  );  );
   
975  marc('700','a',  marc('700','a',
976          join_with(', ',          join_with(', ',
977                  rec('702','g'),                  rec('702','g'),
# Line 605  marc('700','a', Line 979  marc('700','a',
979          )          )
980  );  );
981    
 ## treba provjeriti da li polje 330 sadrzi jos neke podatke koji mogu biti u <> ili su tu iskljucivo autori? da li samo autori ili neke druge osobe?  
 #  
 # marc('700','a',  
 #       rec('330','a')  
 # );  
 #  
 #  
 # marc('700','a',  
 #       rec('330','b')  
 # );  
 #  
 # marc('700','a',  
 #       rec('330','c')  
 # );  
 #  
 #  
 # marc('700','a',  
 #       rec('330','d')  
 # );  
 #  
 # marc('700','a',  
 #       rec('330','e')  
 # );  
 #  
 # marc('700','a',  
 #       rec('330','f')  
 # );  
   
982  #_debug(0);  #_debug(0);
983    
984    ## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
985    
986    
987    ### 740 - Added Entry - Uncontrolled Related/Analytical Title
988  ### 740  ## raspraviti
989    ## nadopuniti prvi indikator prema članovima
990  marc_indicators('740', 0, ' ');  marc_indicators('740', '0', ' ');
991    
992  # if ( ! rec('464') ) {  # if ( ! rec('464') ) {
993  # marc('740','a',  # marc('740','a',
# Line 659  marc('740','a', Line 1006  marc('740','a',
1006    
1007  # };  # };
1008    
1009  ### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim  ### 760 w ---------------------------------------------
1010    ## generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim
 if (  
         rec('225','a')  # da li je nakladnicka cjelina?  
 ) {  
   
 my $series_key =  
 join_with('',  
         rec('225','a'),  
         rec('210','a'),  
         rec('210','b'),  
 );  
   
 my $series = get( $series_key );  
   
 if ($series) {  
         warn "nije novi";  
 } else {  
   
1011    
1012  $series = join_with('',  #if (
1013          config(),  #       rec('225','a')  # da li je nakladnička cjelina?
1014          'LS',  #) {
1015          rec('000')  
1016  );  #my $series_key =
1017    #join_with('',
1018  set( $series_key => $series );  #       rec('225','a'),
1019    #       rec('210','a'),
1020  }  #       rec('210','b'),
1021  }  #);
1022    #
1023  my $series_key = join_with('',  #my $series = get( $series_key );
1024          rec('225','a'),  #
1025          rec('210','a'),  #if ($series) {
1026          rec('210','b'),  #       warn "nije novi";
1027  );  #} else {
1028    #
1029  if ($series_key) {  #$series = join_with('',
1030    #       uc( config() ),
1031    #       ' LS',
1032    #       rec('000')
1033    #);
1034    #
1035    #set( $series_key => $series );
1036    #
1037    #} # $series
1038    #} # nakladnička cjelina
1039    #
1040    #my $series_key = join_with('',
1041    #       rec('225','a'),
1042    #       rec('210','a'),
1043    #       rec('210','b'),
1044    #);
1045    #
1046    #if ($series_key) {
1047    #
1048    #       marc_indicators('760', 0, ' ');
1049    #      
1050    #       marc('760','t',
1051    #               rec('225','a')
1052    #       );
1053    #       marc('760','w',
1054    #               get( $series_key )
1055    #       );
1056    #}
1057    
1058          marc_indicators('760', 0, ' ');  # ## testing
           
         marc('760','w',  
                 get( $series_key )  
         );  
 }  
 ### testing  
1059  #  #
1060  # my $dup_key = join_with('',  # my $dup_key = join_with('',
1061  #       rec('200','a'),  #       rec('200','a'),
# Line 723  if ($series_key) { Line 1074  if ($series_key) {
1074  #       rec('452','1')  #       rec('452','1')
1075  # );  # );
1076  #  #
1077    # -------------------------------------------------------------------
1078    
1079    ### 774 - Constituent Item Entry - to bi trebali koristiti ali ne koristimo jer NSK to koristi za nešto drugo
1080    ### 787 - Nonspecific Relationship Entry
1081    
1082  ## 852 - lokacija  #marc_indicators('787','0',' ');
1083    #
1084    #marc_compose('787',
1085    #       'g', rec('230','v'),
1086    #       't', rec('230','a'),
1087    #       'b', rec('240','a'),
1088    #       'd', rec('250','a'),
1089    #       'd', rec('250','d'),
1090    #       'h', rec('260','a'),
1091    #       'k', rec('270','a'),
1092    #       'n', join_with('. - ',
1093    #               rec('280'),
1094    #       ),
1095    #       'x', join_with(', ',
1096    #               rec('290'),
1097    #       )
1098    #);
1099    #marc_compose('787',
1100    #       'g', rec('231','v'),
1101    #       't', rec('231','a'),
1102    #       'b', rec('241','a'),
1103    #       'd', rec('251','a'),
1104    #       'd', rec('251','d'),
1105    #       'h', rec('261','a'),
1106    #       'k', rec('271','a'),
1107    #       'n', join_with('. - ',
1108    #               rec('281'),
1109    #       ),
1110    #       'x', join_with(', ',
1111    #               rec('291'),
1112    #       )
1113    #);
1114    #marc_compose('787',
1115    #       'g', rec('232','v'),
1116    #       't', rec('232','a'),
1117    #       'b', rec('242','a'),
1118    #       'd', rec('252','a'),
1119    #       'd', rec('252','d'),
1120    #       'h', rec('262','a'),
1121    #       'k', rec('272','a'),
1122    #       'n', join_with('. - ',
1123    #               rec('282'),
1124    #       ),
1125    #       'x', join_with(', ',
1126    #               rec('292'),
1127    #       )
1128    #);
1129    #marc_compose('787',
1130    #       'g', rec('233','v'),
1131    #       't', rec('233','a'),
1132    #       'b', rec('243','a'),
1133    #       'd', rec('253','a'),
1134    #       'h', rec('263','a'),
1135    #       'k', rec('273','a'),
1136    #       'n', join_with('. - ',
1137    #               rec('283'),
1138    #       ),
1139    #       'x', join_with(', ',
1140    #               rec('293'),
1141    #       )
1142    #);
1143    
 marc_indicators('852', 4, ' ');  
1144    
1145  marc('852','j',  ### 852 - ne koristimo, koristimo  942 i 952
         join_with(' ',  
                 rec('990')  
         )  
 );  
1146    
1147  ## 876 - item information - basic bibliographic unit  ### 876 - item information - basic bibliographic unit (R)
1148    ## da li ovdje zapisati stare inventarne brojeve?
1149    #marc('876','a',
1150    #       rec('991','t'),
1151    #);
1152    
1153  marc('876','a',  ### 886 - former marc
1154          rec('991'),  # inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba
1155    #
1156    # marc_indicators('886', 2, ' ');
1157    # marc('886','2',
1158    #       'ffmarc'
1159    # );
1160    # marc('886','a',
1161    #       '994'
1162    # );
1163    # marc('886','b',
1164    #       join_with(''.
1165    #               '##^a',
1166    #               join_with('',
1167    #                       prefix('^a',
1168    #                               rec('994','a'),
1169    #                       ),
1170    #                       prefix('^b',
1171    #                               rec('994','b')
1172    #                       )
1173    #               )
1174    #       )
1175    #);
1176    
1177    ### KOHA items
1178    
1179    marc('942','b',
1180            'LIB'
1181  );  );
1182    
1183  ## 886 - former marc  if ( grep( m/Posebni otisak/, rec('300') ) ) {
1184            marc('942','c',
1185                    'SEP'
1186            );
1187    } else {
1188            marc('942','c',
1189                    'KNJ'
1190            );
1191    }
1192    
1193    ## 990 u sk ima \r\n na kraju
1194    
1195    marc('942','d',
1196            join_with(' | ',
1197                    rec('990')
1198            )
1199    );      
1200    
1201  marc_indicators('886', 2, ' ');  my $novasig1 =
1202            lookup(
1203                    sub { rec('C') },
1204                    'ffiz','mapirano',
1205                    sub { rec('B') },
1206                    sub { rec('990') }
1207            );
1208    my $novasig2 =
1209            lookup(
1210                    sub { rec('C') . ' ' . rec('D') },
1211                    'ffiz','starasig',
1212                    sub { rec('A') },
1213                    sub { rec('000') },
1214            );
1215    
1216  marc('886','2',  marc('942','h',
1217          'ffmarc'          $novasig1
1218  );  );
1219    
1220  marc('886','a',  marc('942','i',
1221          '994'          $novasig2
1222  );  );
1223    
1224  marc('886','b',  if ( config() =~ m/ffar/ ) {
1225          join_with(''.          my $novasig1 =
1226                  '##^a',                  lookup(
1227                  join_with('',                          sub { rec('E') },
1228                          prefix('^a',                          'ffar','mapirano',
1229                                  rec('994','a'),                          sub { rec('A') },
1230                            sub { rec('000') }
1231                    );
1232            if ( $novasig1 ) {
1233                    marc('942','h',
1234                            $novasig1
1235                    );
1236            } else {
1237                    marc('942','h',
1238                            'ARH'
1239                    );
1240            }
1241    
1242    
1243    }
1244    
1245    if ( config() =~ m/ffsf|ffpo|fffi|ffar|ffsk/ ) {
1246    #       my $sig1 =
1247    #               lookup(
1248    #                       sub { rec('C') },
1249    #                       'fffi','signature',
1250    #                       sub { rec('B') },
1251    #                       sub { frec('990') },
1252    #               );
1253            if ( rec('700','a') ) {
1254    #               marc('942','h',
1255    #                       $sig1,
1256    #               );
1257                    if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1258                            marc('942','i',
1259                                    join_with(' ',
1260                                            regex('s/(^.{3}).*/$1/',
1261                                                    uc ( rec('700','a') )
1262                                            ),
1263                                            regex('s/^.{4}(.{1}).*/$1/',
1264                                                    lc ( rec('200','a') )
1265                                            )
1266                                    )
1267                            );
1268                    } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
1269                            marc('942','i',
1270                                    join_with(' ',
1271                                            regex('s/(^.{3}).*/$1/',
1272                                                    uc ( rec('700','a') )
1273                                            ),
1274                                            regex('s/^.{3}(.{1}).*/$1/',
1275                                                    lc ( rec('200','a') )
1276                                            )
1277                                    )
1278                            );
1279                    } elsif ( rec('200','a') =~ m/^Eine / ) {
1280                            marc('942','i',
1281                                    join_with(' ',
1282                                            regex('s/(^.{3}).*/$1/',
1283                                                    uc ( rec('700','a') )
1284                                            ),
1285                                            regex('s/^.{5}(.{1}).*/$1/',
1286                                                    lc ( rec('200','a') )
1287                                            )
1288                                    )
1289                            );
1290                    } elsif ( rec('200','a') =~ m/^Einen / ) {
1291                            marc('942','i',
1292                                    join_with(' ',
1293                                            regex('s/(^.{3}).*/$1/',
1294                                                    uc ( rec('700','a') )
1295                                            ),
1296                                            regex('s/^.{6}(.{1}).*/$1/',
1297                                                    lc ( rec('200','a') )
1298                                            )
1299                                    )
1300                            );
1301                    } elsif ( rec('200','a') =~ m/^(A|L) / ) {
1302                            marc('942','i',
1303                                    join_with(' ',
1304                                            regex('s/(^.{3}).*/$1/',
1305                                                    uc ( rec('700','a') )
1306                                            ),
1307                                            regex('s/^.{2}(.{1}).*/$1/',
1308                                                    lc ( rec('200','a') )
1309                                            )
1310                                    )
1311                            );
1312                    } else {
1313                            marc('942','i',
1314                                    join_with(' ',
1315                                            regex('s/(^.{3}).*/$1/',
1316                                                    uc ( rec('700','a') )
1317                                            ),
1318                                            regex('s/(^.{1}).*/$1/',
1319                                                    lc ( rec('200','a') )
1320                                            )
1321                                    )
1322                            );
1323                    }
1324            } elsif ( rec('710','a') ) {
1325    #               marc('942','h',
1326    #                       $sig1,
1327    #               );
1328                    if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1329                            marc('942','i',
1330                                    join_with(' ',
1331                                            regex('s/(^.{3}).*/$1/',
1332                                                    uc ( rec('710','a') )
1333                                            ),
1334                                            regex('s/^.{4}(.{1}).*/$1/',
1335                                                    lc ( rec('200','a') )
1336                                            )
1337                                    )
1338                            );
1339                    } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
1340                            marc('942','i',
1341                                    join_with(' ',
1342                                            regex('s/(^.{3}).*/$1/',
1343                                                    uc ( rec('710','a') )
1344                                            ),
1345                                            regex('s/^.{3}(.{1}).*/$1/',
1346                                                    lc ( rec('200','a') )
1347                                            )
1348                                    )
1349                            );
1350                    } elsif ( rec('200','a') =~ m/^Eine / ) {
1351                            marc('942','i',
1352                                    join_with(' ',
1353                                            regex('s/(^.{3}).*/$1/',
1354                                                    uc ( rec('710','a') )
1355                                            ),
1356                                            regex('s/^.{5}(.{1}).*/$1/',
1357                                                    lc ( rec('200','a') )
1358                                            )
1359                                    )
1360                            );
1361                    } elsif ( rec('200','a') =~ m/^Einen / ) {
1362                            marc('942','i',
1363                                    join_with(' ',
1364                                            regex('s/(^.{3}).*/$1/',
1365                                                    uc ( rec('710','a') )
1366                                            ),
1367                                            regex('s/^.{6}(.{1}).*/$1/',
1368                                                    lc ( rec('200','a') )
1369                                            )
1370                                    )
1371                            );
1372                    } elsif ( rec('200','a') =~ m/^(A|L) / ) {
1373                            marc('942','i',
1374                                    join_with(' ',
1375                                            regex('s/(^.{3}).*/$1/',
1376                                                    uc ( rec('710','a') )
1377                                            ),
1378                                            regex('s/^.{2}(.{1}).*/$1/',
1379                                                    lc ( rec('200','a') )
1380                                            )
1381                                    )
1382                            );
1383                    } else {
1384                            marc('942','i',
1385                                    join_with(' ',
1386                                            regex('s/(^.{3}).*/$1/',
1387                                                    uc ( rec('710','a') )
1388                                            ),
1389                                            regex('s/(^.{1}).*/$1/',
1390                                                    lc ( rec('200','a') )
1391                                            )
1392                                    )
1393                            );
1394                    }
1395            } elsif ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1396    #               marc('942','h',
1397    #                       $sig1,
1398    #               );
1399                    marc('942','i',
1400                            regex('s/^.{4}(.{3}).*/$1/',
1401                                    uc ( rec('200','a') )
1402                          ),                          ),
1403                          prefix('^b',                  );
1404                                  rec('994','b')                          
1405            } else {
1406    #               marc('942','h',
1407    #                       $sig1,
1408    #               );
1409                    marc('942','i',
1410                            regex('s/(^\w{3}).*/$1/',
1411                                    uc ( rec('200','a') )
1412                          )                          )
1413                  )                  )
1414          )          }
1415  );  } # if config() za oznaku primjerka
1416    
1417    if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) {
1418            warn "skupni zapis - nema primjeraka";
1419    } else {
1420            marc('952','8',
1421                    rec('991','8')
1422            );
1423            marc('952','a',
1424                    rec('991','a')
1425            );
1426            marc('952','b',
1427                    rec('991','b')
1428            );
1429            marc('952','c',
1430                    rec('991','c'),
1431            );
1432            marc('952','i',
1433                    rec('991','i')
1434            );
1435            marc('952','y',
1436                    rec('991','y')
1437            );
1438    }
1439    
1440    ### LOKALNA POLJA
1441    ## 1. da li je zapis pregledan ili nije i datum kad je pregledan
1442    ##    provjeriti za svaku bazu koje polje koristi
1443    ##    SFM:      999^aP
1444    ##    AN:       999 Pregledan
1445    ## raspraviti
1446    
1447    
1448    
1449  } # polje 200a  } # polje 200a
1450    # } sig

Legend:
Removed from v.842  
changed lines
  Added in v.1119

  ViewVC Help
Powered by ViewVC 1.1.26