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

Legend:
Removed from v.964  
changed lines
  Added in v.1112

  ViewVC Help
Powered by ViewVC 1.1.26