/[webpac2]/trunk/conf/ffcasopisi/peri2marc.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/ffcasopisi/peri2marc.pl

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

revision 758 by dpavlin, Wed Oct 25 11:02:36 2006 UTC revision 903 by dpavlin, Wed Oct 10 21:00:48 2007 UTC
# Line 1  Line 1 
1  if ( rec('200','a') ) {  if ( rec('200','a') ) {
2    
 # Leader  
 # raspraviti 17,18  
   
 # u nekim knjižnicama koristi se 999a i 999b  
3    
4    # LEADER
5    # raspraviti 17,18
6    
7  # vrijedi za ffan...  marc_leader('05','n');
8    marc_leader('06','a');
9    
10  if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {  if ( rec('225','a') ) {
11          marc_leader('05','c');          marc_leader('07','b');
12  } else {  } else {
13          marc_leader('05','n');          marc_leader('07','s');
14  }  }
15    
16          marc_leader('06','a');  marc_leader('18','i');
         marc_leader('07','m');  
         marc_leader('18','i');  
17    
18  if ( rec('230') ) {  if ( rec('225','a') ) {
19          marc_leader('19','r');          marc_leader('19','r');
20  }  }
21    
   
22  # 001 polje - Voyager  # 001 polje - Voyager
23    
24  # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku  # 007
25    marc_fixed('007',00,'ta');
 marc('035','6',  
 join_with('',  
 #               config('input normalize path'),  
 #               config('name'),  
                 config(),  
                 'L',  
 #               config('input name'),  
 #               id(),  
 #               rec('994','a'),  
                 rec('000')  
         )  
 );  
   
 # u marc 035a treba dodati System Number -  
 # NSK zapisuje Voyagerov ID (001) - kako ???  
26    
 # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '  
27    
28  marc('020','a',  ## 008 - All materials
29          rec('10')  marc_fixed('008','00', '070707');       # Date entered on file
30  );  marc_fixed('008','06', 't');            # Type of date/Publication status
31    if ( rec('11') ) {
32            if ( my $lookup = lookup(
33                            sub { rec('210','d') },
34                            'nsk','bbaza',
35                            sub { first( rec('011','a') ) },
36                            sub { rec('11') },
37                    )
38            ) {
39                    marc_fixed('008','07', $lookup);
40            } else {
41                    marc_fixed('008','07',
42                            rec('210','d')
43                    );
44            }
45    }                                       # Date 1
46    
47    # marc_fixed('008','11', ' ');          # Date 2
48    marc_fixed('008','15',
49            lc ( rec('102') )
50    );                              # Place of publication, production, or execution
51    #marc_fixed('008','35',
52    #       rec('101')
53    #);                             # Language
54    marc_fixed('008','38', '|');    # Modified record
55    marc_fixed('008','39','d');     # Cataloging source
56    
57    
58    ## 008 - Continuing resources
59    marc_fixed('008','18', '|');    # Frequency - ovo treba popuniti iz polja 326
60    marc_fixed('008','19', '|');    # Regularity
61    marc_fixed('008','21', 'p');    # Type of continuing resource
62    marc_fixed('008','29', '|');    # Conference publication
63    marc_fixed('008','33', '|');    # Original alphabet or script of title
64    marc_fixed('008','34', '|');    # Entry convention
65    
66    
67    ## 022
68    # if ( ! rec('225','a') ) {
69    #       marc('022','a',
70    #               rec('11')
71    #       );
72    # }
73    #
74    
75    ## 022
76  marc('022','a',  marc('022','a',
77          rec('11')          rec('11')
78  );  );
79    
80  # u polje 040a možda još dodati prefiks HR  
81  # NSK ima HR NSB (možda u novijim zapisima ima NSK?)  # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku
82    
83    marc('035','6',
84            join_with('',
85                    uc( config() ),
86                    ' P',
87                    rec('000')
88            )
89    );
90    
91    
92  marc('040','a',  marc('040','a',
93          'HR FFZG'          'HR FFZG'
# Line 68  marc('040','e', Line 101  marc('040','e',
101          'HR PPIAK'          'HR PPIAK'
102  );  );
103    
104  # if (rec('300') && first(rec('300')) =~ m/Prijevod/) {  marc_indicators('041', 0, ' ');
 #       marc_indicators('041', 1, ' ');  
 # } else {  
 #       marc_indicators('041', 0, ' ');  
 # }  
   
 ## naci primjer u NSK  
105    
106  marc_repeatable_subfield('041','a',  marc_repeatable_subfield('041','a',
107          rec('101')          rec('101')
108  );  );
109    
110    
111    #_debug(3);
112    
113    ## 044 - zemlja izdavanja
114    
115    if ( rec('11') ) {
116            if ( my $lookup = lookup(
117                            sub { rec('102','a') },
118                            'nsk','bbaza',
119                            sub { first( rec('011','a') ) },
120                            sub { rec('11') },
121                    )
122            ) {
123                    marc('044','a', $lookup );
124            } else {
125                    marc('044','a',
126                            rec('102')
127                    );
128            }
129    }
130    
131    marc('080','a',
132            rec('675','a')
133    );
134    
135    marc_indicators('210', '1',' ');
136    
137    if ( rec('11') ) {
138    marc('210','a',
139            lookup(
140                    sub { rec('531','a') },
141                    'nsk','bbaza',
142                    sub { rec('011','a') },
143                    sub { rec('11') },
144            )
145    );
146    }
147    
148    marc_indicators('222',' ','0');         # drugi indikator prema članu
149    if ( rec('11') ) {
150    marc('222','a',
151            lookup(
152                    sub { rec('530','a') },
153                    'nsk','bbaza',
154                    sub { rec('011','a') },
155                    sub { rec('11') },
156            )
157    );
158    }
159    
160    ### 245 indikatori
161    
162  if (    ( rec('200','a') =~ m/^Die /) ||  if (    ( rec('200','a') =~ m/^Die /) ||
163          ( rec('200','a') =~ m/^Das /) ||          ( rec('200','a') =~ m/^Das /) ||
164          ( rec('200','a') =~ m/^The /) ) {          ( rec('200','a') =~ m/^The /) ) {
# Line 89  if (   ( rec('200','a') =~ m/^Die /) || Line 167  if (   ( rec('200','a') =~ m/^Die /) ||
167          marc_indicators('245', 0, 0);          marc_indicators('245', 0, 0);
168  }  }
169    
 #_debug(3);  
170    
171    ## 245
172  marc_compose('245',  marc_compose('245',
173          'a', suffix(          'a', suffix(
174                  rec('200','b') ? '. '   :                  ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
175                  rec('200','k') ? ' ; '  :                  ( rec('200','d') ) ? ' = ' :
176                  rec('200','d') ? ' = '  :                  ( rec('200','e') ) ? ' : ' :
177                  rec('200','e') ? ' : '  :                  ( rec('200','k') ) ? ' ; ' :
178                  rec('200','f') ? ' / '  :                          '',
179                                   '.',                          rec('200','a'),
                         rec('200','a')  
180          ),          ),
         'h', rec('200','b'),  
181          'b', suffix(          'b', suffix(
182                  ( rec('200','k') && rec('200','f') ) ? ' / ' :                  ( rec('200','d') && rec('200','f') ) ? ' / ' :
183                                       ' ',                  ( rec('200','d') && rec('200','c') ) ? '. '  :
184                          join_with(' ; ',                          '',
185                                  rec('200','k'),                          rec('200','d'),
                         ),  
186          ),          ),
187          'b', suffix(          'b', suffix(
188                  ( rec('200','d') && rec('200','f') ) ? ' / ' :                  ( rec('200','e') && rec('200','f') ) ? ' / ' :
189                                                         ' ',                  ( rec('200','e') && rec('200','c') ) ? '. '  :
190                                  rec('200','d'),                          '',
191                            rec('200','e'),
192          ),          ),
193          'b', suffix(          'b', suffix(
194                  ( rec('200','e') && rec('200','f') ) ? ' / ' :                  ( rec('200','k') && rec('200','f') ) ? ' / ' :
195                                                         ' ',                  ( rec('200','k') && rec('200','c') ) ? '. '  :
196                          join_with(' : ',                          '',
197                                  rec('200','e'),                          rec('200','k'),
                         ),  
198          ),          ),
199            'c', suffix(
200  # ovo trenutno radi za slučaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!!                  ( rec('200','f') && rec('200','c') ) ? '. ' :
201          'c', join_with('. ',                          '',
202                  rec('200','f'),                          rec('200','f'),
                 rec('200','c'),  
203          ),          ),
204  # FIXME append to last subfield          '+', rec('200','c'),
 #       '+', prefix('. ', rec('200','c') ),  
205  );  );
206    
207    ## 246
208    if (    ( rec('200','a') =~ m/^Die /) ||
209            ( rec('200','a') =~ m/^Das /) ||
210            ( rec('200','a') =~ m/^The /) ) {
211                    marc_indicators('246', 0, 4);
212    } else {
213            marc_indicators('246', 0, 0);
214    }
215    
216    
217    if ( rec('532') ) {
218            marc('246','a',
219                    rec('532')
220            );
221    }
222    
223    #else {
224    #       marc('246','a',
225    #               lookup(
226    #                       sub { rec('532','a') },
227    #                       'nsk','bbaza',
228    #                       sub { rec('011','a') },
229    #                       sub { rec('11') },
230    #               )
231    #       );
232    #}
233    
234  #_debug(0);  #_debug(0);
235    
 marc('250','a',  
         suffix(  
                 rec('205','f') ? ' / ' :  
                                  ' '.  
                         rec('205','a')  
         )  
 );  
236    
237  marc('250','b',  ## 260 - izdavanje
         rec('205','f')  
 );  
238    
239  # ponovljiva potpolja u originalnom redosljedu  # if ( rec('11') ) {
240  #  #       marc_repeatable_subfield('260','a',
241  marc_original_order('260', '210');  #               lookup(
242    #                       sub { rec('210','a') },
243    #                       'nsk','bbaza',
244    #                       sub { rec('011','a') },
245    #                       sub { rec('11') },
246    #               )
247    #       );
248    #       marc_repeatable_subfield('260','b',
249    #               lookup(
250    #                       sub { rec('210','c') },
251    #                       'nsk','bbaza',
252    #                       sub { rec('011','a') },
253    #                       sub { rec('11') },
254    #               )
255    #       );
256    #       marc('260','c',
257    #               lookup(
258    #                       sub { rec('210','d') },
259    #                       'nsk','bbaza',
260    #                       sub { rec('011','a') },
261    #                       sub { rec('11') },
262    #               )
263    #       );
264    # } else {
265    #       marc_original_order('260', '210');
266    # }
267    
268    marc_original_order('260','210');
269    
270  # provjeriti interpunkcije !!  # provjeriti interpunkcije !!
271  # u NSK nesto ne stima  # u NSK nesto ne stima
272    
273  marc('300','a',  marc('300','a',
274          suffix(          suffix(
275                  rec('215','c')  ?       ' : ' :                  ( rec('215','a') && rec('215','c') )    ?  ' : ' :
276                  rec('215','d')  ?       ' ; ' :                  ( rec('215','a') && rec('215','d') )    ?  ' ; ' :
277                  rec('215','e')  ?       ' + ' :                  ( rec('215','a') && rec('215','e') )    ?  ' + ' :
278                                          ' ',                                     ' ',
279                          rec('215','a')                          rec('215','a')
280          )          )
281  );  );
282    
283  marc('300','b',  marc('300','b',
284          suffix(          suffix(
285                  ( rec('215','c') && rec('215','d') )    ?       ' ; ' :                  ( rec('215','c') && rec('215','d') )    ?  ' ; ' :
286                  ( rec('215','c') && rec('215','e') )    ?       ' + ' :                  ( rec('215','c') && rec('215','e') )    ?  ' + ' :
287                                                                  ' ',                                                             ' ',
288                          rec('215','c')                          rec('215','c')
289          )          )
290  );  );
# Line 185  marc('300','e', Line 301  marc('300','e',
301          rec('215','e')          rec('215','e')
302  );  );
303    
304    ## 310 - current stated publication frequency
305  # provjeriti  marc('310','a',
306            rec('326')
 marc_indicators('490', 0, ' ');  
   
 marc('490','a',  
         rec('225','a')  
 );  
   
 marc('490','v',  
         join_with(', ',  
                 rec('225','v'),  
                 rec('225','w')  
         ),  
 );  
   
 marc('490','x',  
         rec('225','x')  
307  );  );
308    
309  #marc('490','a',  ## 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
310  #       join_with(' : ',  # marc('321','a',
311  #               rec('225','a'),  #       ovo bi trebalo procitati iz NSK konvertiranih podataka
 #               join_with(" =  ",  
 #                       rec('225','d'),  
 #                       join_with(" / ",  
 #                               rec('225','e'),  
 #                               rec('225','f')  
 #                       )  
 #               )  
 #       )  
 #);  
   
 #marc('490','v',  
 #       join2_with(225, 'v', ' , ', 225,'w');  
 #       join_with(', ',  
 #               rec('225','v'),  
 #               rec('225','w')  
 #       )  
 #);  
   
 #marc('500','a',  
 #       rec('300')  
 #);  
 #  
 #marc('500','a',  
 #       rec('314')  
 #);  
 #  
 #marc('504','a',  
 #       rec('320')  
312  #);  #);
313    
314  ## napomene uz konverziju polja 327 (sadrzaj):  marc_indicators('362', 0, ' ');
 # NSK konvertira 327 (NP) u 501 (R)  
 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)  
 # standard i validacije dopuštaju 501 (R) i 505 (R)  
   
 ## FFPS 327 - sadrzaj  
 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {  
         marc_indicators('505', '1', ' ');  
         marc('505','a',  
                 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',  
                         rec('327')  
                 )        
 );  
 }  
   
315    
 ## napomene uz konverziju polja 330:  
 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica  
316    
317    ## 362
318  # FFPS 330 (NP) - sažetak  if ( rec('207','a') ) {
319  if ( config() =~ m/ffps/ ) {          marc('362','a',
320          marc('520','a',                  rec('207','a'),
                 regex('s/[\\r\\n]+/. /g',  
                         rec('330')  
                 )        
         );  
 }  
   
 # FFTU 330 - ???  
 if ( config() =~ m/fftu/ ) {  
         marc('520','a',  
                 rec('330')  
321          );          );
322    } else {
323            if ( rec('11') ) {
324                    marc('362','a',
325                            lookup(
326                                    sub { rec('207','a') },
327                                    'nsk','bbaza',
328                                    sub { first( rec('011','a') ) },
329                                    sub { rec('11') },
330                            )
331                    );
332            }
333  }  }
334    
335    ## 5xx
336  # možda i polje 520y - jezik napomene ako je uvijek isti jezik  marc('500','a',
337            rec('300','a'),
 marc_indicators('246', 1, 3);  
 marc('246','a',  
         rec('532')  
 );  
   
 marc_indicators('655', ' ', 4);  
 marc('655','a',  
         rec('608')  
338  );  );
339    
340  marc_indicators('653', 0, ' ');  
341  marc('653','a',  marc('534','a',
342          rec('610')          rec('324')
343  );  );
344    
345  # 675 podpolja c, d ... - što s njima ???  if ( rec('11') ) {
346    marc('546','a',
347  marc('080','a',          lookup(
348          rec('675','a')                  sub { rec('302','a') },
349                    'nsk','bbaza',
350                    sub { rec('011','a') },
351                    sub { rec('11') },
352            )
353  );  );
354    
355  # 084 je other classification (R)  marc('550','a',
356  # NSK ga koristi za stručnu oznaku NSK iz polja 681          lookup(
357  # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom                  sub { rec('314','a') },
358  #                  'nsk','bbaza',
359  # polje 686 koristi FFPS                  sub { rec('011','a') },
360                    sub { rec('11') },
361  marc('084','a',          )
         rec('686')  
362  );  );
363    
364  marc_indicators('100', 1, ' ');  marc('555','a',
365  marc('100','a',          lookup(
366          join_with(', ',                  sub { rec('320','a') },
367                  rec('700', 'a'),                  'nsk','bbaza',
368                  rec('700', 'b')                  sub { rec('011','a') },
369          )                  sub { rec('11') },
370            )
371  );  );
372    
 #_debug(2);  
   
 marc_indicators('700', 1, ' ');  
373    
374  if ( rec('701') ) {  # marc('562','a',
375  marc('700','4',  #       lookup(
376          'aut'  #               sub { rec('316','a') },
377  );  #               'nsk','bbaza',
378    #               sub { rec('011','a') },
379    #               sub { rec('11') },
380    #       )
381    # );
382  }  }
383    
384  marc('700','a',  marc_indicators('653', 0, ' ');
385          join_with(', ',  marc('653','a',
386                  rec('701', 'a'),          rec('610')
                 rec('701', 'b')  
         )  
387  );  );
388    
389  marc('700','a',  # marc_indicators('655', ' ', 4);
390          join_with(', ',  # marc('655','a',
391                  rec('701', 'c'),  #       lookup(
392                  rec('701', 'd')  #               sub { rec('608','a') },
393          )  #               'nsk','bbaza',
394  );  #               sub { rec('011','a') },
395    #               sub { rec('11') },
396    #       )
397    # );
398    
 marc('700','a',  
         join_with(', ',  
                 rec('701', 'e'),  
                 rec('701', 'f')  
         )  
 );  
399    
400  marc('700','a',  #_debug(2);
         join_with(', ',  
                 rec('701', 'g'),  
                 rec('701', 'h')  
         )  
 );  
401    
402    marc_indicators('700', 1, ' ');
403    
404  marc('700','a',  marc('700','a',
405          rec('702','a'),          rec('702','a'),
406  );  );
407    
   
 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!  
   
   
408  marc('700','a',  marc('700','a',
409          join_with(', ',          join_with(', ',
410                  rec('702','c'),                  rec('702','c'),
# Line 370  marc('700','a', Line 412  marc('700','a',
412          )          )
413  );  );
414    
 marc('700','a',  
         join_with(', ',  
                 rec('702','e'),  
                 rec('702','f')  
         )  
 );  
   
 marc('700','a',  
         join_with(', ',  
                 rec('702','g'),  
                 rec('702','h')  
         )  
 );  
   
 ## treba provjeriti da li polje 330 sadrzi jos neke podatke koji mogu biti u <> ili su tu iskljucivo autori? da li samo autori ili neke druge osobe?  
   
   
 # marc('700','a',  
 #       rec('330','a')  
 # );  
 #  
 #  
 # marc('700','a',  
 #       rec('330','b')  
 # );  
 #  
 # marc('700','a',  
 #       rec('330','c')  
 # );  
 #  
 #  
 # marc('700','a',  
 #       rec('330','d')  
 # );  
 #  
 # marc('700','a',  
 #       rec('330','e')  
 # );  
 #  
 # marc('700','a',  
 #       rec('330','f')  
 # );  
415    
416  #_debug(0);  #_debug(0);
417    
418    marc_indicators('710', '2', ' ');
419  if ( rec('710','f') ) {  marc('710','a',
   
 marc_indicators('111', 2, ' ');  
 marc('111','a',  
420          rec('710','a')          rec('710','a')
421  );  );
422    
 marc('111','c',  
         rec('710','e')  
 );  
423    
424  marc('111','d',  marc_indicators('770', 0, ' ');
425          rec('710','f')  marc('770','t',
426            rec('421','a'),
427  );  );
428    
429  marc('111','e',  marc_indicators('772', 0, ' ');
430          rec('710','b')  marc('772','t',
431            rec('422','a'),
432  );  );
433    
434  marc('111','n',  marc_indicators('777', 0, ' ');
435          rec('710','d')  marc('777','t',
436            rec('423','a'),
437  );  );
438    
439    marc_indicators('780', 0, 0);
440  } else {  marc('780','t',
441                    rec('430','a'),
 marc_indicators('110', 2, ' ');  
 marc('110','a',  
         rec('710','a')  
442  );  );
443    
444  marc('110','c',  marc_indicators('785', 0, 0);
445          rec('710','c')  marc('785','t',
446            rec('440','a'),
447  );  );
448    
449  };  marc('852','j',
450            join_with(' ',
451                    rec('990')
452  marc_indicators('740', 0, ' ');          )
   
 if ( ! rec('464') ) {  
 marc('740','a',  
         rec('200','c')  
453  );  );
454    
455  marc('740','a',  marc('876','a',
456          rec('200','k')          rec('991','a')
457  );  );
458    
459  } else {  marc('992','a',
460  marc('740','a',          join_with(' ; ',
461          rec('464','a')                  rec('992')
462  );          )
 };  
   
 marc('500','a',  
         lookup(  
                 sub { rec('304','a') },  
                 'ffps','baza',  
                 sub { rec('200','a') },  
         )  
463  );  );
464    
465    
466    # marc('997','a',
467    #       sort(
468    #               lookup(
469    #                       sub { rec('001') },
470    #                       'nsk','bbaza',
471    #                       sub { rec('011','a') },
472    #                       sub { rec('11') },
473    #               )
474    #       )
475    # );
476    #
477    # marc('998','a',
478    #       sort(
479    #               lookup(
480    #                       sub { rec('001') },
481    #                       'nsk','bbaza',
482    #                       sub { first(rec('200','a')) . first(rec('200','e')) },
483    #                       sub { rec('200','a') . rec('200','e') },
484    #               )
485    #       )
486    # );
487    #
488    # marc('998','a',
489    #       sort(
490    #               lookup(
491    #                       sub { rec('001') },
492    #                       'nsk','bbaza',
493    #                       sub { first(rec('200','a')) },
494    #                       sub { rec('200','a') },
495    #               )
496    #       )
497    # );
498    
499  }  }

Legend:
Removed from v.758  
changed lines
  Added in v.903

  ViewVC Help
Powered by ViewVC 1.1.26