/[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 773 by dpavlin, Fri Nov 3 20:41:12 2006 UTC revision 890 by dpavlin, Thu Sep 6 19:12:31 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','s');  
         marc_leader('18','i');  
17    
18    if ( rec('225','a') ) {
19          marc_leader('19','r');          marc_leader('19','r');
20    }
21    
22  # 001 polje - Voyager  # 001 polje - Voyager
23    
24    # 007
25    marc_fixed('007',00,'ta');
26    
27    
28    ## 008 - All materials
29    marc_fixed('008','00', '070707');       # Date entered on file
30    marc_fixed('008','06', 's');            # 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    marc_fixed('008','11', ' ');            # Date 2
47    marc_fixed('008','15',
48            lc ( rec('102') )
49    );                              # Place of publication, production, or execution
50    #marc_fixed('008','35',
51    #       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    
65    
66    ## 022
67    if ( ! rec('225','a') ) {
68            marc('022','a',
69                    rec('11')
70            );
71    }
72    
73  # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku  # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku
74    
75  marc('035','6',  marc('035','6',
76  join_with('',          join_with('',
77  #               config('input normalize path'),                  uc( config() ),
78  #               config('name'),                  ' P',
                 config(),  
                 'L',  
 #               config('input name'),  
 #               id(),  
 #               rec('994','a'),  
79                  rec('000')                  rec('000')
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 '. - '  
   
 marc('020','a',  
         rec('10')  
 );  
   
 marc('022','a',  
         rec('11')  
 );  
   
 # 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 66  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    
103    #_debug(3);
104    
105    ## 044 - zemlja izdavanja
106    
107    if ( rec('11') ) {
108            marc('044','a',
109                    lookup(
110                            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',
119            rec('675','a')
120    );
121    
122    marc_indicators('210', '1',' ');
123    
124    if ( rec('11') ) {
125    marc('210','a',
126            lookup(
127                    sub { rec('531','a') },
128                    'nsk','bbaza',
129                    sub { rec('011','a') },
130                    sub { rec('11') },
131            )
132    );
133    }
134    
135    marc_indicators('222',' ','0');         # drugi indikator prema članu
136    if ( rec('11') ) {
137    marc('222','a',
138            lookup(
139                    sub { rec('530','a') },
140                    'nsk','bbaza',
141                    sub { rec('011','a') },
142                    sub { rec('11') },
143            )
144    );
145    }
146    
147    ### 245 indikatori
148    
149  if (    ( rec('200','a') =~ m/^Die /) ||  if (    ( rec('200','a') =~ m/^Die /) ||
150          ( rec('200','a') =~ m/^Das /) ||          ( rec('200','a') =~ m/^Das /) ||
151          ( rec('200','a') =~ m/^The /) ) {          ( rec('200','a') =~ m/^The /) ) {
# Line 87  if (   ( rec('200','a') =~ m/^Die /) || Line 154  if (   ( rec('200','a') =~ m/^Die /) ||
154          marc_indicators('245', 0, 0);          marc_indicators('245', 0, 0);
155  }  }
156    
 #_debug(3);  
157    
158    ## 245
159  marc_compose('245',  marc_compose('245',
160          'a', suffix(          'a', suffix(
161                  rec('200','b') ? '. '   :                  ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
162                  rec('200','k') ? ' ; '  :                  ( rec('200','d') ) ? ' = ' :
163                  rec('200','d') ? ' = '  :                  ( rec('200','e') ) ? ' : ' :
164                  rec('200','e') ? ' : '  :                  ( rec('200','k') ) ? ' ; ' :
165                  rec('200','f') ? ' / '  :                          '',
166                                   '.',                          rec('200','a'),
                         rec('200','a')  
167          ),          ),
         'h', rec('200','b'),  
168          'b', suffix(          'b', suffix(
169                  ( rec('200','k') && rec('200','f') ) ? ' / ' :                  ( rec('200','d') && rec('200','f') ) ? ' / ' :
170                                                         ' ',                  ( rec('200','d') && rec('200','c') ) ? '. '  :
171                          join_with(' ; ',                          '',
172                                  rec('200','k'),                          rec('200','d'),
                         ),  
173          ),          ),
174          'b', suffix(          'b', suffix(
175                  ( rec('200','d') && rec('200','f') ) ? ' / ' :                  ( rec('200','e') && rec('200','f') ) ? ' / ' :
176                                                         ' ',                  ( rec('200','e') && rec('200','c') ) ? '. '  :
177                                  rec('200','d'),                          '',
178                            rec('200','e'),
179          ),          ),
180          'b', suffix(          'b', suffix(
181                  ( rec('200','e') && rec('200','f') ) ? ' / ' :                  ( rec('200','k') && rec('200','f') ) ? ' / ' :
182                                                         ' ',                  ( rec('200','k') && rec('200','c') ) ? '. '  :
183                          join_with(' : ',                          '',
184                                  rec('200','e'),                          rec('200','k'),
                         ),  
185          ),          ),
186            'c', suffix(
187  # 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') ) ? '. ' :
188          'c', join_with('. ',                          '',
189                  rec('200','f'),                          rec('200','f'),
                 rec('200','c'),  
190          ),          ),
191  # FIXME append to last subfield          '+', rec('200','c'),
 #       '+', prefix('. ', rec('200','c') ),  
   
192  );  );
193    
194    ## 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    
203    
204    if ( rec('532') ) {
205            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 184  marc('300','e', Line 288  marc('300','e',
288          rec('215','e')          rec('215','e')
289  );  );
290    
291    ## 310 - current stated publication frequency
292  # provjeriti  marc('310','a',
293            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')  
294  );  );
295    
296  #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
297  #       join_with(' : ',  # marc('321','a',
298  #               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')  
 #       )  
299  #);  #);
300    
301  #marc('500','a',  marc_indicators('362', 0, ' ');
 #       rec('300')  
 #);  
 #  
 #marc('500','a',  
 #       rec('314')  
 #);  
 #  
 #marc('504','a',  
 #       rec('320')  
 #);  
302    
 ## 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')  
                 )        
 );  
 }  
303    
304    ## 362
305  ## napomene uz konverziju polja 330:  if ( rec('207','a') ) {
306  # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica          marc('362','a',
307                    rec('207','a'),
   
 # FFPS 330 (NP) - sažetak  
 if ( config() =~ m/ffps/ ) {  
         marc('520','a',  
                 regex('s/[\\r\\n]+/. /g',  
                         rec('330')  
                 )        
         );  
 }  
   
 # FFTU 330 - ???  
 if ( config() =~ m/fftu/ ) {  
         marc('520','a',  
                 rec('330')  
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  # možda i polje 520y - jezik napomene ako je uvijek isti jezik  marc('500','a',
324            rec('300','a'),
 marc_indicators('246', 1, 3);  
 marc('246','a',  
         rec('532')  
 );  
   
 marc_indicators('655', ' ', 4);  
 marc('655','a',  
         rec('608')  
325  );  );
326    
327  marc_indicators('653', 0, ' ');  
328  marc('653','a',  marc('534','a',
329          rec('610')          rec('324')
330  );  );
331    
332  # 675 podpolja c, d ... - što s njima ???  if ( rec('11') ) {
333    marc('546','a',
334  marc('080','a',          lookup(
335          rec('675','a')                  sub { rec('302','a') },
336                    'nsk','bbaza',
337                    sub { rec('011','a') },
338                    sub { rec('11') },
339            )
340  );  );
341    
342  # 084 je other classification (R)  marc('550','a',
343  # NSK ga koristi za stručnu oznaku NSK iz polja 681          lookup(
344  # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom                  sub { rec('314','a') },
345  #                  'nsk','bbaza',
346  # polje 686 koristi FFPS                  sub { rec('011','a') },
347                    sub { rec('11') },
348  marc('084','a',          )
         rec('686')  
349  );  );
350    
351  marc_indicators('100', 1, ' ');  marc('555','a',
352  marc('100','a',          lookup(
353          join_with(', ',                  sub { rec('320','a') },
354                  rec('700', 'a'),                  'nsk','bbaza',
355                  rec('700', 'b')                  sub { rec('011','a') },
356          )                  sub { rec('11') },
357            )
358  );  );
359    
 #_debug(2);  
360    
361  marc_indicators('700', 1, ' ');  # marc('562','a',
362    #       lookup(
363  if ( rec('701') ) {  #               sub { rec('316','a') },
364  marc('700','4',  #               'nsk','bbaza',
365          'aut'  #               sub { rec('011','a') },
366  );  #               sub { rec('11') },
367    #       )
368    # );
369  }  }
370    
371  marc('700','a',  marc_indicators('653', 0, ' ');
372          join_with(', ',  marc('653','a',
373                  rec('701', 'a'),          rec('610')
                 rec('701', 'b')  
         )  
374  );  );
375    
376  marc('700','a',  # marc_indicators('655', ' ', 4);
377          join_with(', ',  # marc('655','a',
378                  rec('701', 'c'),  #       lookup(
379                  rec('701', 'd')  #               sub { rec('608','a') },
380          )  #               'nsk','bbaza',
381  );  #               sub { rec('011','a') },
382    #               sub { rec('11') },
383    #       )
384    # );
385    
 marc('700','a',  
         join_with(', ',  
                 rec('701', 'e'),  
                 rec('701', 'f')  
         )  
 );  
386    
387  marc('700','a',  #_debug(2);
         join_with(', ',  
                 rec('701', 'g'),  
                 rec('701', 'h')  
         )  
 );  
388    
389    marc_indicators('700', 1, ' ');
390    
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 369  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  if ( rec('710','f') ) {  marc('710','a',
   
 marc_indicators('111', 2, ' ');  
 marc('111','a',  
         rec('710','a')  
 );  
   
 marc('111','c',  
         rec('710','e')  
 );  
   
 marc('111','d',  
         rec('710','f')  
 );  
   
 marc('111','e',  
         rec('710','b')  
 );  
   
 marc('111','n',  
         rec('710','d')  
 );  
   
   
 } else {  
           
 marc_indicators('110', 2, ' ');  
 marc('110','a',  
407          rec('710','a')          rec('710','a')
408  );  );
409    
 marc('110','c',  
         rec('710','c')  
 );  
   
 };  
   
410    
411  marc_indicators('740', 0, ' ');  marc_indicators('770', 0, ' ');
412    marc('770','t',
413  if ( ! rec('464') ) {          rec('421','a'),
 marc('740','a',  
         rec('200','c')  
414  );  );
415    
416  marc('740','a',  marc_indicators('772', 0, ' ');
417          rec('200','k')  marc('772','t',
418            rec('422','a'),
419  );  );
420    
421  } else {  marc_indicators('777', 0, ' ');
422  marc('740','a',  marc('777','t',
423          rec('464','a')          rec('423','a'),
424  );  );
 };  
425    
426  marc('500','a',  marc_indicators('780', 0, 0);
427          lookup(  marc('780','t',
428                  sub { rec('304','a') },          rec('430','a'),
                 'nsk','baza',  
                 sub { rec('200','a') },  
         )  
429  );  );
430    
431  marc('500','a',  marc_indicators('785', 0, 0);
432          lookup(  marc('785','t',
433                  sub { rec('306','a') },          rec('440','a'),
                 'nsk','baza',  
                 sub { rec('200','a') },  
         )  
434  );  );
435    
436  marc('500','a',  marc('852','j',
437          lookup(          join_with(' ',
438                  sub { rec('314','a') },                  rec('990')
439                  'nsk','baza',          )
                 sub { rec('200','a') },  
         )  
 );  
   
 marc('500','a',  
         lookup(  
                 sub { rec('316','a') },  
                 'nsk','baza',  
                 sub { rec('200','a') },  
         )  
440  );  );
441    
442  marc('504','a',  marc('876','a',
443          lookup(          rec('991','a')
                 sub { rec('320','a') },  
                 'nsk','baza',  
                 sub { rec('200','a') },  
         )  
444  );  );
445    
446  marc('900','a',  marc('992','a',
447          sort(          join_with(' ; ',
448                  lookup(                  rec('992')
                         sub { rec('000') },  
                         'ffps','peri',  
                         sub { rec('200','a') },  
                 )  
449          )          )
450  );  );
451    
452    
453    # marc('997','a',
454    #       sort(
455    #               lookup(
456    #                       sub { rec('001') },
457    #                       'nsk','bbaza',
458    #                       sub { rec('011','a') },
459    #                       sub { rec('11') },
460    #               )
461    #       )
462    # );
463    #
464    # marc('998','a',
465    #       sort(
466    #               lookup(
467    #                       sub { rec('001') },
468    #                       'nsk','bbaza',
469    #                       sub { first(rec('200','a')) . first(rec('200','e')) },
470    #                       sub { rec('200','a') . rec('200','e') },
471    #               )
472    #       )
473    # );
474    #
475    # marc('998','a',
476    #       sort(
477    #               lookup(
478    #                       sub { rec('001') },
479    #                       'nsk','bbaza',
480    #                       sub { first(rec('200','a')) },
481    #                       sub { rec('200','a') },
482    #               )
483    #       )
484    # );
485    
486  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.26