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

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

revision 880 by dpavlin, Thu Aug 23 19:23:53 2007 UTC revision 890 by dpavlin, Thu Sep 6 19:12:31 2007 UTC
# Line 25  if ( rec('225','a') ) { Line 25  if ( rec('225','a') ) {
25  marc_fixed('007',00,'ta');  marc_fixed('007',00,'ta');
26    
27    
28  ## 008  ## 008 - All materials
29  marc_fixed('008','00', '070707');  marc_fixed('008','00', '070707');       # Date entered on file
30  marc_fixed('008','06', '|');    # Type of date/Publication status  marc_fixed('008','06', 's');            # Type of date/Publication status
31  marc_fixed('008','07', '|');    # Date 1  if ( rec('11') ) {
32  marc_fixed('008','08', '|');          if ( my $lookup = lookup(
33  marc_fixed('008','09', '|');                          sub { rec('210','d') },
34  marc_fixed('008','10', '|');                          'nsk','bbaza',
35  marc_fixed('008','11', '|');    # Date 2                          sub { first( rec('011','a') ) },
36  marc_fixed('008','12', '|');                          sub { rec('11') },
37  marc_fixed('008','13', '|');                  )
38  marc_fixed('008','14', '|');          ) {
39  marc_fixed('008','15',          # Place of publication, production, or execution                  marc_fixed('008','07', $lookup);
40          lookup(          } else {
41                  sub { rec('102','a') },                  marc_fixed('008','07',
42                  'nsk','bbaza',                          rec('210','d')
43                  sub { rec('011','a') },                  );
44                  sub { rec('11') },          }
45          ),  }                                       # Date 1
46  );  marc_fixed('008','11', ' ');            # Date 2
47  marc_fixed('008','18', '');  marc_fixed('008','15',
48  marc_fixed('008','35',          # Language          lc ( rec('102') )
49          rec('101')  );                              # Place of publication, production, or execution
50  );  #marc_fixed('008','35',
51  marc_fixed('008','39','|');     # Cataloging source  #       rec('101')
52    #);                             # Language
53    marc_fixed('008','38', '|');    # Modified record
54    marc_fixed('008','39','d');     # Cataloging source
55    
56    
57    ## 008 - Continuing resources
58    marc_fixed('008','18', '|');    # Frequency
59    marc_fixed('008','19', '|');    # Regularity
60    marc_fixed('008','21', 'p');    # Type of continuing resource
61    marc_fixed('008','29', '|');    # Conference publication
62    marc_fixed('008','33', '|');    # Original alphabet or script of title
63    marc_fixed('008','34', '|');    # Entry convention
64    
 ## 022  
65    
66    ## 022
67  if ( ! rec('225','a') ) {  if ( ! rec('225','a') ) {
68          marc('022','a',          marc('022','a',
69                  rec('11')                  rec('11')
# Line 68  marc('035','6', Line 80  marc('035','6',
80          )          )
81  );  );
82    
 # u marc 035a treba dodati System Number -  
 # NSK zapisuje Voyagerov ID (001) - kako ???  
   
 # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '  
   
   
 # u polje 040a možda još dodati prefiks HR  
 # NSK ima HR NSB (možda u novijim zapisima ima NSK?)  
83    
84  marc('040','a',  marc('040','a',
85          'HR FFZG'          'HR FFZG'
# Line 89  marc('040','e', Line 93  marc('040','e',
93          'HR PPIAK'          'HR PPIAK'
94  );  );
95    
96  # 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  
97    
98  marc_repeatable_subfield('041','a',  marc_repeatable_subfield('041','a',
99          rec('101')          rec('101')
100  );  );
101    
102    
 if (    ( rec('200','a') =~ m/^Die /) ||  
         ( rec('200','a') =~ m/^Das /) ||  
         ( rec('200','a') =~ m/^The /) ) {  
                 marc_indicators('245', 0, 4);  
 } else {  
         marc_indicators('245', 0, 0);  
 }  
   
103  #_debug(3);  #_debug(3);
104    
105  marc('044','a',  ## 044 - zemlja izdavanja
106          lookup(  
107                  sub { rec('102','a') },  if ( rec('11') ) {
108                  'nsk','bbaza',          marc('044','a',
109                  sub { rec('011','a') },                  lookup(
110                  sub { rec('11') },                          sub { rec('102','a') },
111          ),                          'nsk','bbaza',
112  );                          sub { first( rec('011','a') ) },
113                            sub { rec('11') },
114                    ),
115            );
116    }
117    
118  marc('080','a',  marc('080','a',
119          rec('675','a')          rec('675','a')
120  );  );
121    
122  marc_indicators('100', 1, ' ');  marc_indicators('210', '1',' ');
 marc('100','a',  
         join_with(', ',  
                 rec('700', 'a'),  
                 rec('700', 'b')  
         )  
 );  
123    
124  marc_indicators('110', 2, ' ');  if ( rec('11') ) {
125  marc('110','a',  marc('210','a',
126          rec('710','a')          lookup(
127  );                  sub { rec('531','a') },
128                    'nsk','bbaza',
129  marc('110','c',                  sub { rec('011','a') },
130          rec('710','c')                  sub { rec('11') },
131            )
132  );  );
133    }
134    
135    marc_indicators('222',' ','0');         # drugi indikator prema članu
136    if ( rec('11') ) {
137  marc('222','a',  marc('222','a',
138          lookup(          lookup(
139                  sub { rec('530','a') },                  sub { rec('530','a') },
# Line 150  marc('222','a', Line 142  marc('222','a',
142                  sub { rec('11') },                  sub { rec('11') },
143          )          )
144  );  );
145    }
146    
147  ### 245 indikatori  ### 245 indikatori
148    
149    if (    ( rec('200','a') =~ m/^Die /) ||
150            ( rec('200','a') =~ m/^Das /) ||
151            ( rec('200','a') =~ m/^The /) ) {
152                    marc_indicators('245', 0, 4);
153    } else {
154            marc_indicators('245', 0, 0);
155    }
156    
157    
158    ## 245
159  marc_compose('245',  marc_compose('245',
160          'a', suffix(          'a', suffix(
161                  ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :                    ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
# Line 189  marc_compose('245', Line 192  marc_compose('245',
192  );  );
193    
194  ## 246  ## 246
195    if (    ( rec('200','a') =~ m/^Die /) ||
196            ( rec('200','a') =~ m/^Das /) ||
197            ( rec('200','a') =~ m/^The /) ) {
198                    marc_indicators('246', 0, 4);
199    } else {
200            marc_indicators('246', 0, 0);
201    }
202    
 marc_indicators('246', 1, 3);  
203    
204  marc('246','a',  if ( rec('532') ) {
205          rec('532')          marc('246','a',
206  );                  rec('532')
207            );
208    }
209    
210    #else {
211    #       marc('246','a',
212    #               lookup(
213    #                       sub { rec('532','a') },
214    #                       'nsk','bbaza',
215    #                       sub { rec('011','a') },
216    #                       sub { rec('11') },
217    #               )
218    #       );
219    #}
220    
221  #_debug(0);  #_debug(0);
222    
 marc('250','a',  
         suffix(  
                 rec('205','f') ? ' / ' :  
                                  ' '.  
                         rec('205','a')  
         )  
 );  
223    
224  marc('250','b',  ## 260 - izdavanje
         rec('205','f')  
 );  
225    
226  # ponovljiva potpolja u originalnom redosljedu  # if ( rec('11') ) {
227  #  #       marc_repeatable_subfield('260','a',
228  marc_original_order('260', '210');  #               lookup(
229    #                       sub { rec('210','a') },
230    #                       'nsk','bbaza',
231    #                       sub { rec('011','a') },
232    #                       sub { rec('11') },
233    #               )
234    #       );
235    #       marc_repeatable_subfield('260','b',
236    #               lookup(
237    #                       sub { rec('210','c') },
238    #                       'nsk','bbaza',
239    #                       sub { rec('011','a') },
240    #                       sub { rec('11') },
241    #               )
242    #       );
243    #       marc('260','c',
244    #               lookup(
245    #                       sub { rec('210','d') },
246    #                       'nsk','bbaza',
247    #                       sub { rec('011','a') },
248    #                       sub { rec('11') },
249    #               )
250    #       );
251    # } else {
252    #       marc_original_order('260', '210');
253    # }
254    
255    marc_original_order('260','210');
256    
257  # provjeriti interpunkcije !!  # provjeriti interpunkcije !!
258  # u NSK nesto ne stima  # u NSK nesto ne stima
259    
260  marc('300','a',  marc('300','a',
261          suffix(          suffix(
262                  rec('215','c')  ?  ' : ' :                  ( rec('215','a') && rec('215','c') )    ?  ' : ' :
263                  rec('215','d')  ?  ' ; ' :                  ( rec('215','a') && rec('215','d') )    ?  ' ; ' :
264                  rec('215','e')  ?  ' + ' :                  ( rec('215','a') && rec('215','e') )    ?  ' + ' :
265                                     ' ',                                     ' ',
266                          rec('215','a')                          rec('215','a')
267          )          )
# Line 249  marc('300','e', Line 288  marc('300','e',
288          rec('215','e')          rec('215','e')
289  );  );
290    
291    ## 310 - current stated publication frequency
292  marc('310','a',  marc('310','a',
         lookup(  
                 sub { rec('326','a') },  
                 'nsk','bbaza',  
                 sub { rec('011','a') },  
                 sub { rec('11') },  
         )  
 );  
   
 marc('321','a',  
293          rec('326')          rec('326')
294  );  );
295    
296    ## 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
297    # marc('321','a',
298    #       ovo bi trebalo procitati iz NSK konvertiranih podataka
299    #);
300    
301  marc_indicators('362', 0, ' ');  marc_indicators('362', 0, ' ');
302    
 marc('362','a',  
         lookup(  
                 sub { rec('207','a') },  
                 'nsk','bbaza',  
                 sub { rec('011','a') },  
                 sub { rec('11') },  
         ),  
 );  
303    
304    ## 362
305    if ( rec('207','a') ) {
306            marc('362','a',
307                    rec('207','a'),
308            );
309    } else {
310            if ( rec('11') ) {
311                    marc('362','a',
312                            lookup(
313                                    sub { rec('207','a') },
314                                    'nsk','bbaza',
315                                    sub { first( rec('011','a') ) },
316                                    sub { rec('11') },
317                            )
318                    );
319            }
320    }
321    
322    ## 5xx
323  marc('500','a',  marc('500','a',
324          lookup(          rec('300','a'),
                 sub { rec('300','a') },  
                 'nsk','bbaza',  
                 sub { rec('011','a') },  
                 sub { rec('11') },  
         )  
325  );  );
326    
327  marc('500','a',  
328    marc('534','a',
329            rec('324')
330    );
331    
332    if ( rec('11') ) {
333    marc('546','a',
334          lookup(          lookup(
335                  sub { rec('302','a') },                  sub { rec('302','a') },
336                  'nsk','bbaza',                  'nsk','bbaza',
# Line 291  marc('500','a', Line 338  marc('500','a',
338                  sub { rec('11') },                  sub { rec('11') },
339          )          )
340  );  );
341    
342  marc('504','a',  marc('550','a',
343          lookup(          lookup(
344                  sub { rec('320','a') },                  sub { rec('314','a') },
345                  'nsk','bbaza',                  'nsk','bbaza',
346                  sub { rec('011','a') },                  sub { rec('011','a') },
347                  sub { rec('11') },                  sub { rec('11') },
348          )          )
349  );  );
350    
351  marc('562','a',  marc('555','a',
352          lookup(          lookup(
353                  sub { rec('316','a') },                  sub { rec('320','a') },
354                  'nsk','bbaza',                  'nsk','bbaza',
355                  sub { rec('011','a') },                  sub { rec('011','a') },
356                  sub { rec('11') },                  sub { rec('11') },
357          )          )
358  );  );
   
   
 #marc('500','a',  
 #       rec('300')  
 #);  
 #  
 #marc('500','a',  
 #       rec('314')  
 #);  
 #  
 #marc('504','a',  
 #       rec('320')  
 #);  
   
 ## napomene uz konverziju polja 327 (sadrzaj):  
 # 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')  
                 )        
 );  
 }  
359    
360    
361  ## napomene uz konverziju polja 330:  # marc('562','a',
362  # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica  #       lookup(
363    #               sub { rec('316','a') },
364    #               'nsk','bbaza',
365  # FFPS 330 (NP) - sažetak  #               sub { rec('011','a') },
366  if ( config() =~ m/ffps/ ) {  #               sub { rec('11') },
367          marc('520','a',  #       )
368                  regex('s/[\\r\\n]+/. /g',  # );
                         rec('330')  
                 )        
         );  
 }  
   
 # FFTU 330 - ???  
 if ( config() =~ m/fftu/ ) {  
         marc('520','a',  
                 rec('330')  
         );  
369  }  }
370    
   
 # možda i polje 520y - jezik napomene ako je uvijek isti jezik  
   
   
 ### 534  
   
 marc('534','a',  
         rec('324')  
 );  
   
   
 marc_indicators('655', ' ', 4);  
 marc('655','a',  
         rec('608')  
 );  
   
371  marc_indicators('653', 0, ' ');  marc_indicators('653', 0, ' ');
372  marc('653','a',  marc('653','a',
373          rec('610')          rec('610')
374  );  );
375    
376  # 675 podpolja c, d ... - što s njima ???  # marc_indicators('655', ' ', 4);
377    # marc('655','a',
378  # 084 je other classification (R)  #       lookup(
379  # NSK ga koristi za stručnu oznaku NSK iz polja 681  #               sub { rec('608','a') },
380  # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom  #               'nsk','bbaza',
381  #  #               sub { rec('011','a') },
382    #               sub { rec('11') },
383    #       )
384    # );
385    
386    
387  #_debug(2);  #_debug(2);
388    
389  marc_indicators('700', 1, ' ');  marc_indicators('700', 1, ' ');
390    
 if ( rec('701') ) {  
 marc('700','4',  
         'aut'  
 );  
 }  
   
 marc('700','a',  
         join_with(', ',  
                 rec('701', 'a'),  
                 rec('701', 'b')  
         )  
 );  
   
 marc('700','a',  
         join_with(', ',  
                 rec('701', 'c'),  
                 rec('701', 'd')  
         )  
 );  
   
 marc('700','a',  
         join_with(', ',  
                 rec('701', 'e'),  
                 rec('701', 'f')  
         )  
 );  
   
 marc('700','a',  
         join_with(', ',  
                 rec('701', 'g'),  
                 rec('701', 'h')  
         )  
 );  
   
   
391  marc('700','a',  marc('700','a',
392          rec('702','a'),          rec('702','a'),
393  );  );
394    
   
 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!  
   
   
395  marc('700','a',  marc('700','a',
396          join_with(', ',          join_with(', ',
397                  rec('702','c'),                  rec('702','c'),
# Line 443  marc('700','a', Line 399  marc('700','a',
399          )          )
400  );  );
401    
 marc('700','a',  
         join_with(', ',  
                 rec('702','e'),  
                 rec('702','f')  
         )  
 );  
   
 marc('700','a',  
         join_with(', ',  
                 rec('702','g'),  
                 rec('702','h')  
         )  
 );  
   
402    
403  #_debug(0);  #_debug(0);
404    
405    marc_indicators('710', '2', ' ');
406    marc('710','a',
407  marc_indicators('740', 0, ' ');          rec('710','a')
   
 if ( ! rec('464') ) {  
 marc('740','a',  
         rec('200','c')  
 );  
   
 marc('740','a',  
         rec('200','k')  
408  );  );
409    
 } else {  
 marc('740','a',  
         rec('464','a')  
 );  
 };  
410    
411  marc_indicators('770', 0, ' ');  marc_indicators('770', 0, ' ');
412  marc('770','t',  marc('770','t',
413          rec('430','a'),          rec('421','a'),
414  );  );
415    
416  marc('770','x',  marc_indicators('772', 0, ' ');
417          rec('430','b'),  marc('772','t',
418            rec('422','a'),
419  );  );
420    
421  if ( rec('225','a') ) {  marc_indicators('777', 0, ' ');
422    marc('777','t',
423  marc_indicators('773', 0, ' ');          rec('423','a'),
 marc('773','g',  
         rec('207','a')  
424  );  );
425    
426  marc('773','t',  marc_indicators('780', 0, 0);
427          join_with(' : ',  marc('780','t',
428                  rec('225','a'),          rec('430','a'),
                 rec('225','e')  
         ),  
429  );  );
430    
431  marc('773','w',  marc_indicators('785', 0, 0);
432          lookup(  marc('785','t',
433                  sub {          rec('440','a'),
                         join_with('',  
                                 uc( config() ),  
                                 ' P',  
                                 rec('000')  
                         ),  
                 },  
                 'ffsf','peri',  
                 sub { rec('200','a') },  
                 sub { rec('225','a') },  
         )  
434  );  );
435    
 }  
   
436  marc('852','j',  marc('852','j',
437          join_with(' ',          join_with(' ',
438                  rec('990')                  rec('990')
# Line 535  marc('992','a', Line 449  marc('992','a',
449          )          )
450  );  );
451    
   
452    
453  marc('997','a',  # marc('997','a',
454          sort(  #       sort(
455                  lookup(  #               lookup(
456                          sub { rec('001') },  #                       sub { rec('001') },
457                          'nsk','bbaza',  #                       'nsk','bbaza',
458                          sub { rec('011','a') },  #                       sub { rec('011','a') },
459                          sub { rec('11') },  #                       sub { rec('11') },
460                  )  #               )
461          )  #       )
462  );  # );
463    #
464  marc('998','a',  # marc('998','a',
465          sort(  #       sort(
466                  lookup(  #               lookup(
467                          sub { rec('001') },  #                       sub { rec('001') },
468                          'nsk','bbaza',  #                       'nsk','bbaza',
469                          sub { first(rec('200','a')) . first(rec('200','e')) },  #                       sub { first(rec('200','a')) . first(rec('200','e')) },
470                          sub { rec('200','a') . rec('200','e') },  #                       sub { rec('200','a') . rec('200','e') },
471                  )  #               )
472          )  #       )
473  );  # );
474    #
475  marc('998','a',  # marc('998','a',
476          sort(  #       sort(
477                  lookup(  #               lookup(
478                          sub { rec('001') },  #                       sub { rec('001') },
479                          'nsk','bbaza',  #                       'nsk','bbaza',
480                          sub { first(rec('200','a')) },  #                       sub { first(rec('200','a')) },
481                          sub { rec('200','a') },  #                       sub { rec('200','a') },
482                  )  #               )
483          )  #       )
484  );  # );
485    
486  }  }

Legend:
Removed from v.880  
changed lines
  Added in v.890

  ViewVC Help
Powered by ViewVC 1.1.26