/[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 1064 by dpavlin, Tue Nov 27 21:02:15 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 izvorni format, sa zapisima u    ##  
 ## UNIMARC formatu, sa višestrukim odstupanjima od standarda.           ##  
 ##                                                                      ##        
 ##########################################################################  
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    
 if ( rec('200','a') ) {  
   
 ### LEADER  
 ## raspraviti 17,18  
   
 ## LDR 05 - c ili d - iz 999a ili 999b ili 999 - provjeriti za svaku knjiznicu  
6    
7  if ( rec('999') && rec('999','a') =~ m/(pregledan|P)/i) {  ## lookup rezultat za sabrana djela (probna procedura za filozofiju od koje se odustalo)
8          marc_leader('05','c');  # my $sabrana;
 } else {  
         marc_leader('05','n');  
 }  
9    
 ## LDR 06 - a ili m - odrediti kriterije  
10    
11          marc_leader('06','a');  ## sve skupa se konvertira tek ako postoji polje 200^a
12    if ( rec('200','a') ) {
13    
14  ## LDR 07 - m  ### LEADER
15    
16          marc_leader('07','m');  ## LDR 05 - n - new
17    marc_leader('05','n');
18    
19  ## LDR 17 i 18 - razjasniti  ## LDR 06 - a - language material
20    marc_leader('06','a');
21    
22          marc_leader('18','i');  ## LDR 07 - m - Monograph/item
23    marc_leader('07','m');
24    
25  ## LDR 19 - razjasniti  # 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  if ( rec('230') ) {  ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
43          marc_leader('19','r');  marc_leader('17','u');
 }  
44    
45  ### 001 - Voyager  ## LDR 18 - i - isbd
46    marc_leader('18','i');
47    
48  ### 003 - razjasniti  ## 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 - razjasniti  #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 - All materials  ### 008 - All materials
59  ## 008 00 - datum - što kad datum nije poznat?  ## 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 69  if ( rec('994','c') ) { Line 96  if ( rec('994','c') ) {
96  #)  #)
97  #);  #);
98    
99  ## 008 06 - Type of date/Publication status - t - raspraviti  ## 008 06 - Type of date/Publication status
100    
101  marc_fixed('008','06', 't');      ## 008 07-10 - Date 1
102    ## 008 11-14 - Date 2
103    ## 210d kroz modify postaje 210c
104    
105  ## 008 07-10 - Date 1 - iz 210d koji kroz modify postaje 210c  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',          marc_fixed('008','07',$d1);             # 07-10 - Date 1
163          rec('210','c')          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    
 ## 008 11-14 - Date 2  
170    
 ## 008 15-17 - Place of publication, production, or execution - što ako nema 102?  
171    
172  marc_fixed('008','15',  ## 008 15-17 - Place of publication, production, or execution - ako nema 102, popunjava se s |
173          lc ( rec('102') )  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    
 ## 008 35-37 - Language - što ako nema 101?  
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 - razjasniti  ## 008 38 - Modified record
199    marc_fixed('008','38','|');            
 ## 008 39 - Cataloging source - d  
200    
201    ## 008 39 - Cataloging source - d (other)
202  marc_fixed('008','39','d');              marc_fixed('008','39','d');            
203    
204  ### 008 - Books - raspraviti upotrebu ovih polja  ### 008 - Books - raspraviti upotrebu ovih polja
205  ## 008 18-21 - Illustrations  ## 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  ## 008 22 - Target audience
211    marc_fixed('008','22','|');
212    
213  ## 008 23 - Form of item  ## 008 23 - Form of item
214    marc_fixed('008','23','|');
215    
216  ## 008 24-27 - Nature of contents  ## 008 24-27 - Nature of contents
217    marc_fixed('008','24','||||');
218    
219  ## 008 28 - Government publication  ## 008 28 - Government publication
220    marc_fixed('008','28','|');
221    
222  ## 008 29 - Conference publication  ## 008 29 - Conference publication
223    marc_fixed('008','29','|');
224    
225  ## 008 30 - Festschrift  ## 008 30 - Festschrift
226    marc_fixed('008','30','|');
227    
228  ## 008 31 - Index  ## 008 31 - Index
229    marc_fixed('008','31','|');
230    
231  ## 008 32 - Undefined  ## 008 32 - Undefined
232  ## 008 33 - Literary form  ## 008 33 - Literary form
233    marc_fixed('008','33','|');
234    
235  ## 008 34 - Biography  ## 008 34 - Biography
236    marc_fixed('008','34','|');
237    
238  ### 020  ### 020
239  ## 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 ( frec('10') ne ( frec('290') ) ) {          if ( rec('10','a') !~ /pogre/ ) {
242          marc('020','a',                  marc('020','a',
243                  regex('s/-//g',                          # isbn_13(
244  #               regex('s/\(\d\)\(/$1 \(//g',                                  regex('s/\s\s/ /g',
245                          rec('10')                                  # 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(  #warn(
264  #       dump(  #       dump(
# Line 130  if ( frec('10') ne ( frec('290') ) ) { Line 266  if ( frec('10') ne ( frec('290') ) ) {
266  #       ),  #       ),
267  #);  #);
268    
269  ### 035$6  ### 035$
270  ## Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku.  ## marc 035a - System Number
271  ## marc 035a - System Number - Voyagerov ID (001)  ## polje može sadržavati slova i razmake
272  ## polje 035$9 može sadržavati slova i razmake  ## moguæ problem u pretraživanju ako ima zagrade, kako bi trebalo po standardu
273    
274  marc('035','6',  marc('035','a',
275  join_with('',  join_with('',
276  #               config('input normalize path'),          # config('input normalize path'),
277  #               config('name'),          # config('name'),
278                  config(),          'HR-ZaFF ',
279                  ' L',          config(),
280  #               config('input name'),          'L',
281  #               id(),          # config('input name'),
282  #               rec('994','a'),          # id(),
283                  rec('000')          # rec('994','a'),
284            rec('000')
285          )          )
286  );  );
287    
288  ### 040  ### 040
289  ## za sve je isti  ## za sve je isti
 ## treba utvrditi točnu oznaku za ustanovu  
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  ### 041 - indikatori
305  ## pretpostavke o indikatorima  ## pretpostavke o indikatorima
306  ## 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1  ## 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
# Line 174  marc('040','e', Line 310  marc('040','e',
310  ## (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)  ## (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
311  ## pr. 821.111-2=163.42 je prijevod engleske drame na HR.  ## pr. 821.111-2=163.42 je prijevod engleske drame na HR.
312  ## to ima samo za književna djela, eseje....  ## to ima samo za književna djela, eseje....
313  ## ????  ## ovo treba kasnije ispravljati
314    
315  #if ( rec('675') =~ m/\d=\d/ ) ??  #if ( rec('675') =~ m/\d=\d/ ) ?
316    
317  if (  if (
318          grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik]/i, rec('300') ) ||          grep( m/prijevod/i, rec('300') )
319          grep( m/[preve|prijevod]/i, rec('200','f')) ||          || grep( m/nasl.*izv/i, rec('300') )
320          grep( m/[preve|prijevod]/i, rec('200','g'))    #       ( frec('300') =~ m/Prijevod/ )
321    #       || ( 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 (101) konvertira se u ponovljivo potpolje (041a)  ## 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',  
         map { lc($_) } rec('101')  
 );  
   
 #_debug(0);  
342    
343  ### 044  ### 044
344  ## kako dobiti zemlju izdavanja?  ## koristi se kad ima više zemalja izdavanja
345    
346  ### 080  ### 080
347  ## 675 podpolja b, c, d ... - što s njima? - provjeriti za svaku bazu  ## 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')
# Line 227  marc('080','a', Line 370  marc('080','a',
370  ## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom  ## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
371  ## polje 686 koristi FFPS. još netko?  ## 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  );  );
# Line 247  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  ## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake baze - moguæe su greške.  ## provjeriti za svaku bazu
400    ## 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  # ovo vrijedi za FFSFB  # ovo vrijedi za FFSFB
404  if ( rec('710','d') || rec('710','e') || rec('710','f') ) {  if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
# Line 282  marc_compose('111', Line 431  marc_compose('111',
431          ),          ),
432          '+',')',          '+',')',
433  );  );
   
   
434  } else {  } else {
435                    marc_indicators('110', 2, ' ');
436  marc_indicators('110', 2, ' ');          marc('110','a',
437                    rec('710','a')
 marc('110','a',  
         rec('710','a')  
 );  
   
 marc('110','b',  
         rec('710','b')  
 );  
   
         if ( rec('710','c') ) {  
         marc('110','c',  
                 surround('(', ')', rec('710','c'))  
438          );          );
439            marc('110','b',
440                    rec('710','b')
441            );
442            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 provjeriti  ## 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/^Einen / ) {  if ( rec('200','a') =~ m/^Einen / ) {
465                  marc_indicators('245', $i1, 6);          marc_indicators('245', $titleind1, 6);
466  }  }
467    if ( rec('200','a') =~ m/^Eine / ) {
468  if      ( rec('200','a') =~ m/^Eine / ) {          marc_indicators('245', $titleind1, 5);
                 marc_indicators('245', $i1, 5);  
469  }  }
470    if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
471  if      ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {          marc_indicators('245', $titleind1, 4);
                 marc_indicators('245', $i1, 4);  
472  }  }
473    if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) {
474  if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {          marc_indicators('245', $titleind1, 3);
                 marc_indicators('245', $i1, 3);  
475  }  }
476    if ( ( rec('101') =~ m/ENG/ ) && ( rec('200','a') =~ m/^A / ) ) {
477  if ( rec('200','a') =~ m/^(A|L') / ) {          marc_indicators('245', $titleind1, 2);
478                  marc_indicators('245', $i1, 2);  }
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  ## potpolja i interpunkcije pripremljeni u modify  ## postoji modify
489    ## da li treba makivati razmake u inicijalima?
490    
491  #_debug(3);  #_debug(3);
492    
# Line 375  marc_compose('245', Line 518  marc_compose('245',
518                          rec('200','k'),                          rec('200','k'),
519          ),          ),
520          'c', suffix(          'c', suffix(
521                  ( rec('200','f') && rec('200','c') ) ? '.' :                  ( rec('200','f') && rec('200','c') ) ? '. ' :
522                          '',                          '',
523                          join_with(' ; ',                          join_with(' ; ',
524                                  rec('200','f'),                                  regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
525                                  rec('200','g')                                          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          ## append to last subfield
533          '+', suffix('.',          '+', suffix('.',
534                  rec('200','c'),                  join_with(' / ',
535                            rec('200','c'),
536                            rec('200','x')
537                    )
538          ),          ),
539  );  );
540    
541  #_debug(0);  #_debug(0);
542    
543  ### 246  ### 246
544    ## i1=1 ukoliko pravilo nalaže napomenu, ali napomenu necemo pisati ponovo u 500
545  marc_indicators('246', 1, 3);  ## i1=3 ako pravlo na nalaže napomenu
546    ## vidi na wiki
547    ## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
548    marc_indicators('246', 3, ' ');
549  marc('246','a',  marc('246','a',
550          rec('532')          rec('532')
551  );  );
552    
553  ### 250  ### 250
554  ## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti  ## 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'),
# Line 411  marc_compose('250', Line 563  marc_compose('250',
563    
564  ### 260  ### 260
565  ## ponovljiva potpolja u originalnom redosljedu - priprema u modify  ## 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  ## urediti interpunkcije za sve kombinacije  ## urediti interpunkcije za sve kombinacije
   
571  marc('300','a',  marc('300','a',
572          suffix(          suffix(
573                  rec('215','c') ? ' : ' :                  rec('215','c') ? ' : ' :
# Line 427  marc('300','a', Line 577  marc('300','a',
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') ) ? ' ; ' :
# Line 436  marc('300','b', Line 585  marc('300','b',
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') ? ' + ' :
# Line 444  marc('300','c', Line 592  marc('300','c',
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 - razjasniti upotrebu  ### 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    #if (  frec('225','a') =~ m/[\/=:]/  ) {
609    #
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  ### 440 - indikatori
666  ## 2.ind. prema jeziku i članu, provjeriti  ## 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);
         ( rec('225','a') =~ m/^The /) ) {  
                 marc_indicators('440', ' ', 4);  
672  }  }
673    
674  if (    ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {  if ( rec('225','a') =~ m/^Eine / ) {
675                  marc_indicators('440', ' ', 2);                  marc_indicators('440', ' ', 5);
676    }
677    
678    if ( rec('225','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
679                    marc_indicators('440', ' ', 4);
680  }  }
681    
682  if (    ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {  if ( rec('225','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
683                  marc_indicators('440', ' ', 3);                  marc_indicators('440', ' ', 3);
684  }  }
685    
686  #_debug(3);  if ( rec('225','a') =~ m/^(A|L') / ) {
687                    marc_indicators('440', ' ', 2);
688    }
689    
690  ### 440  ## 440v nije ponovljivo
691    
692  marc_template(  marc_template(
693          from => 225, to => 440,          from => 225, to => 440,
# Line 485  marc_template( Line 700  marc_template(
700                  'w' => 'v',                  'w' => 'v',
701          ],          ],
702          isis_template => [          isis_template => [
703                  'a.|h,|i ;|w',                  'a',
704                  'a.|h.|w',                  'a,|x',
705                  'a.|i ;|w',                  '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',                  'a ;|v.|i',
714                    'a ;|v.|h,|i',
715                    'a ;|w',
716                  'a ;|v.|i ;|w',                  'a ;|v.|i ;|w',
717                  'a ;|v.|h,|i ;|w',                  'a ;|v.|h,|i ;|w',
718                  'a ;|v.|h ;|w',                  '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',                  'a ;|v ;|w',
725                  #mozda greska:                  'a.|h',
726                  'a ;|v,|x ;|w',                  'a.|h ;|w',
727                  'a,|x ;|v',                  'a.|h ;|v',
728                  'a,|x.|p ;|w',                  'h,|i',
729          ],                  'h ;|v',
730          marc_template => [                  'i ;|w',
731                  'a',                  'v',    
732                  'a ;|v',                  'w',
                 'a,|x',  
                 'a.|n',         # mozda greska  
                 'a.|n,|p',  
                 'a.|p',  
                 'a ;|v.|n',  
                 'a ;|v.|n,|p',  # mozda greska  
                 'v',  
                 'x',  
733          ],          ],
734  );  );
735    
736    #}
737    
738    #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    
784    
785  ## 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)  ## 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)
786    
# Line 600  marc('504','a', Line 869  marc('504','a',
869  ## NSK konvertira 327 (NP) u 501 (R)  ## NSK konvertira 327 (NP) u 501 (R)
870  ## u LOC konv. tablici stoji 327 (NP) u 505 (NR)  ## u LOC konv. tablici stoji 327 (NP) u 505 (NR)
871  ## standard i validacije dopuštaju 501 (R) i 505 (R)  ## 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/ || config() =~ m/fftu/ ) {  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 619  if ( config() =~ m/ffan/ ) { Line 888  if ( config() =~ m/ffan/ ) {
888  );  );
889  }  }
890    
   
   
   
891  ### 520  ### 520
892  ## NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica  ## 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 635  if ( config() =~ m/ffps/ ) { Line 899  if ( config() =~ m/ffps/ ) {
899  }  }
900    
901  ### 526 - STUDY PROGRAM INFORMATION NOTE  ### 526 - STUDY PROGRAM INFORMATION NOTE
902  ## provjeriti za svaku bazu sta je u 996?  ## 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  ### 655  ### 653 - Index Term-Uncontrolled
914    ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
915    marc_indicators('653', ' ', ' ');
916    marc('653','a',
917            rec('610')
918    );
919    
920    ### 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 biti i konvertirano u ponovljivo !!  ## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
931    ## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti
932  marc_indicators('700', 1, ' ');  if ( rec('701','a') =~ m/, / ) {
933            marc_indicators('700', 1, ' ');
934  if ( rec('701') ) {  } else {
935  marc('700','4',          marc_indicators('700', 0, ' ');
         'aut'  
 );  
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          join_with(', ',          rec('702','a'),
                 rec('702', 'a'),  
                 rec('702', 'b')  
         )  
962  );  );
   
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 736  marc('700','a', Line 981  marc('700','a',
981    
982  #_debug(0);  #_debug(0);
983    
984    ## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u
985    
 ### 740 - nadopuniti  
986    
987  marc_indicators('740', 0, ' ');  ### 740 - Added Entry - Uncontrolled Related/Analytical Title
988    ## raspraviti
989    ## nadopuniti prvi indikator prema članovima
990    marc_indicators('740', '0', ' ');
991    
992  # if ( ! rec('464') ) {  # if ( ! rec('464') ) {
993  # marc('740','a',  # marc('740','a',
# Line 758  marc('740','a', Line 1006  marc('740','a',
1006    
1007  # };  # };
1008    
1009    ### 760 w ---------------------------------------------
 ### 760 w  
1010  ## generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim  ## generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim
1011    
1012  #if (  #if (
1013  #       rec('225','a')  # da li je nakladnička cjelina?  #       rec('225','a')  # da li je nakladnička cjelina?
1014  #) {  #) {
1015  #  
1016  #my $series_key =  #my $series_key =
1017  #join_with('',  #join_with('',
1018  #       rec('225','a'),  #       rec('225','a'),
# Line 800  marc('740','a', Line 1047  marc('740','a',
1047  #  #
1048  #       marc_indicators('760', 0, ' ');  #       marc_indicators('760', 0, ' ');
1049  #        #      
1050    #       marc('760','t',
1051    #               rec('225','a')
1052    #       );
1053  #       marc('760','w',  #       marc('760','w',
1054  #               get( $series_key )  #               get( $series_key )
1055  #       );  #       );
# Line 824  marc('740','a', Line 1074  marc('740','a',
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    #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    
1144    
1145  ### 852 - signatura  ### 852 - ne koristimo, koristimo  942 i 952
1146    
1147  marc_indicators('852', 4, ' ');  ### 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('852','j',  ### 886 - former marc
1154          join_with(' ',  # inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba
1155                  rec('990')  #
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  ### 876 - item information - basic bibliographic unit  ### KOHA items
1178    
1179  marc('876','a',  marc('942','b',
1180          rec('991'),          '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_indicators('886', 2, ' ');  marc('942','d',
1196            join_with(' | ',
1197                    rec('990')
1198            )
1199    );      
1200    
1201  marc('886','2',  my $novasig1 =
1202          'ffmarc'          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('942','h',
1217            $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.1064  
changed lines
  Added in v.1119

  ViewVC Help
Powered by ViewVC 1.1.26