/[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 758 by dpavlin, Wed Oct 25 11:02:36 2006 UTC revision 792 by dpavlin, Tue Jan 30 18:23:53 2007 UTC
# Line 1  Line 1 
1    # konvertira se ako postoji polje 200^a
2    
3  if ( rec('200','a') ) {  if ( rec('200','a') ) {
4    
5  # Leader  ### LEADER
6  # raspraviti 17,18  # raspraviti 17,18
   
7  # u nekim knjižnicama koristi se 999a i 999b  # u nekim knjižnicama koristi se 999a i 999b
8    
   
 # vrijedi za ffan...  
   
9  if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {  if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
10          marc_leader('05','c');          marc_leader('05','c');
11  } else {  } else {
# Line 22  if ( rec('230') ) { Line 20  if ( rec('230') ) {
20          marc_leader('19','r');          marc_leader('19','r');
21  }  }
22    
23    ### 001 - Voyager
24    
25  # 001 polje - Voyager  ### 008
26    
27    ### 035$6
28    # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku.
29    # marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako?
30    # kako mora izgledati polje 035$9? može li sadržavati slova i razmake?
31    
 # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku  
32    
33  marc('035','6',  marc('035','6',
34  join_with('',  join_with(' ',
35  #               config('input normalize path'),  #               config('input normalize path'),
36  #               config('name'),  #               config('name'),
37                  config(),                  config(),
# Line 40  join_with('', Line 43  join_with('',
43          )          )
44  );  );
45    
 # u marc 035a treba dodati System Number -  
 # NSK zapisuje Voyagerov ID (001) - kako ???  
46    
47  # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '  ### 020
48    # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)
49    
50  marc('020','a',  marc('020','a',
51          rec('10')          regex('s/ ISBN //g',
52                    rec('10')
53            )
54  );  );
55    
56  # u polje 040a možda još dodati prefiks HR  
57  # NSK ima HR NSB (možda u novijim zapisima ima NSK?)  ### 040
58    # za sve je isti
59    
60  marc('040','a',  marc('040','a',
61          'HR FFZG'          'HR FFZG'
# Line 64  marc('040','e', Line 69  marc('040','e',
69          'HR PPIAK'          'HR PPIAK'
70  );  );
71    
72  if (rec('300') && first(rec('300')) =~ m/Prijevod/) {  
73    ### 041 indikatori
74    # pretpostavke o indikatorima:
75    #
76    # 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadrži /Prijevod/ , i1 = 1
77    # (Da li je napomena uvijek pisana?)
78    #
79    # 2. Podatak o prevodiocu u 200g. Problem: različiti oblici riječi, različiti jezici.
80    #
81    # 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
82    # (ako postoje zagrade pr. 94(=411.16) onda su to pomoćne oznake)
83    # pr. 821.111-2=163.42 je prijevod engleske drame na HR.
84    # to ima samo za književna djela, eseje....
85    
86    
87    if ( rec('675') =~ m/\d=\d/ ) {
88    #if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) {
89          marc_indicators('041', 1, ' ');          marc_indicators('041', 1, ' ');
90  } else {  } else {
91          marc_indicators('041', 0, ' ');          marc_indicators('041', 0, ' ');
92  }  }
93    
 ## naci primjer u NSK  
94    
95    ### 041
96    # ponovljivo polje konvertira se u ponovljivo potpolje
97    
98    #_debug(2);
99  marc_repeatable_subfield('041','a',  marc_repeatable_subfield('041','a',
100          rec('101')          rec('101')
101  );  );
102    #_debug(0);
103    
104    
105    ### 080
106    # 675 podpolja c, d ... - što s njima ???
107    
108    marc('080','a',
109            rec('675','a')
110    );
111    
112    
113    ### 084 - other classification (R)
114    # NSK ga koristi za stručnu oznaku NSK iz polja 681
115    # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
116    # polje 686 koristi FFPS
117    
118    
119    marc('084','a',
120            rec('686')
121    );
122    
123    ### 100
124    # I1 = 0 ako je pseudonim (ima 700a, nema 700b)
125    
126    marc_indicators('100', 1, ' ');
127    marc('100','a',
128            join_with(', ',
129                    rec('700', 'a'),
130                    rec('700', 'b')
131            )
132    );
133    
134    
135    ### 111 i 110
136    # provjeriti ispise naslova iz svake baze - moguće su greške.
137    
138    if ( rec('710','f') ) {
139    
140    marc_indicators('111', 2, ' ');
141    marc('111','a',
142            rec('710','a')
143    );
144    
145    marc('111','c',
146            rec('710','e')
147    );
148    
149    marc('111','d',
150            rec('710','f')
151    );
152    
153    marc('111','e',
154            rec('710','b')
155    );
156    
157    marc('111','n',
158            rec('710','d')
159    );
160    
161    
162    } else {
163            
164    marc_indicators('110', 2, ' ');
165    marc('110','a',
166            rec('710','a')
167    );
168    
169    marc('110','c',
170            rec('710','c')
171    );
172    
173    };
174    
175    
176    ### 245 indikatori
177    # i1 = 1 za sve zapise
178    # i2 = pretpostavlja se na temelju člana na početku naslova i jezika
179    # treba nadopuniti i dati podatke na verifikaciju knjižničarima
180    
181    marc_indicators('245', 1, 0);
182    
183  if (    ( rec('200','a') =~ m/^Die /) ||  if (    ( rec('200','a') =~ m/^Die /) ||
184          ( rec('200','a') =~ m/^Das /) ||          ( rec('200','a') =~ m/^Das /) ||
185          ( rec('200','a') =~ m/^The /) ) {          ( rec('200','a') =~ m/^The /) ) {
186                  marc_indicators('245', 0, 4);                  marc_indicators('245', 1, 4);
187  } else {  }
         marc_indicators('245', 0, 0);  
 }  
188    
189  #_debug(3);  if (    ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
190            {
191                    marc_indicators('245', 1, 2);
192    }
193    
194    ### 245
195    # redoslijed polja
196    
197    #_debug(3);
198  marc_compose('245',  marc_compose('245',
199          'a', suffix(          'a', suffix(
200                  rec('200','b') ? '. '   :                  rec('200','b') ? '. '   :
# Line 97  marc_compose('245', Line 205  marc_compose('245',
205                                   '.',                                   '.',
206                          rec('200','a')                          rec('200','a')
207          ),          ),
208          'h', rec('200','b'),  #       'h', rec('200','b'),
209          'b', suffix(          'b', suffix(
210                  ( rec('200','k') && rec('200','f') ) ? ' / ' :                  ( rec('200','k') && rec('200','f') ) ? ' / ' :
211                                       ' ',                                       ' ',
# Line 118  marc_compose('245', Line 226  marc_compose('245',
226                          ),                          ),
227          ),          ),
228    
229  # ovo trenutno radi za slučaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!!          'c', rec('200','f'),
230          'c', join_with('. ',  
231                  rec('200','f'),  # append to last subfield
232                  rec('200','c'),          '+', prefix('. ',
233                    rec('200','c')
234          ),          ),
 # FIXME append to last subfield  
 #       '+', prefix('. ', rec('200','c') ),  
235  );  );
236    
237    
238    
239  #_debug(0);  #_debug(0);
240    
241    
242    ### 250
243    
244  marc('250','a',  marc('250','a',
245          suffix(          suffix(
246                  rec('205','f') ? ' / ' :                  rec('205','f') ? ' / ' :
# Line 142  marc('250','b', Line 253  marc('250','b',
253          rec('205','f')          rec('205','f')
254  );  );
255    
256    
257    ### 260
258  # ponovljiva potpolja u originalnom redosljedu  # ponovljiva potpolja u originalnom redosljedu
259  #  
260  marc_original_order('260', '210');  marc_original_order('260', '210');
261    
262    
263    ### 300
264  # provjeriti interpunkcije !!  # provjeriti interpunkcije !!
 # u NSK nesto ne stima  
265    
266  marc('300','a',  marc('300','a',
267          suffix(          suffix(
268                  rec('215','c')  ?       ' : ' :                  rec('215','c') ? ' : ' :
269                  rec('215','d')  ?       ' ; ' :                  rec('215','d') ? ' ; ' :
270                  rec('215','e')  ?       ' + ' :                  rec('215','e') ? ' + ' :
271                                          ' ',                                          ' ',
272                          rec('215','a')                          rec('215','a')
273          )          )
# Line 162  marc('300','a', Line 275  marc('300','a',
275    
276  marc('300','b',  marc('300','b',
277          suffix(          suffix(
278                  ( rec('215','c') && rec('215','d') )    ?       ' ; ' :                  ( rec('215','c') && rec('215','d') ) ? ' ; ' :
279                  ( rec('215','c') && rec('215','e') )    ?       ' + ' :                  ( rec('215','c') && rec('215','e') ) ? ' + ' :
280                                                                  ' ',                                                                  ' ',
281                          rec('215','c')                          rec('215','c')
282          )          )
# Line 182  marc('300','e', Line 295  marc('300','e',
295  );  );
296    
297    
298  # provjeriti  ### 440
299    # 2.ind. prema jeziku i članu
300    
301    marc_indicators('440', ' ', '0');
302    
303  marc_indicators('490', 0, ' ');  marc('440','a',
304            join_with(' : ',
305                    rec('225','a'),
306                    rec('225','e')
307            )
308    ) ;
309    
310  marc('490','a',  marc('440','n',
311          rec('225','a')          rec('225','h')
312  );  );
313    
314  marc('490','v',  marc('440','p',
315            rec('225','i')
316    );
317    
318    marc('440','v',
319          join_with(', ',          join_with(', ',
320                  rec('225','v'),                  rec('225','v'),
321                  rec('225','w')                  rec('225','w')
322          ),          ),
323  );  );
324    
325  marc('490','x',  marc('440','x',
326          rec('225','x')          rec('225','x')
327  );  );
328    
329    marc('440','a',
330            rec('225','b'),
331    );
332    
333    
334    ### 490
335    #
336  #marc('490','a',  #marc('490','a',
337  #       join_with(' : ',  #       rec('225','a')
 #               rec('225','a'),  
 #               join_with(" =  ",  
 #                       rec('225','d'),  
 #                       join_with(" / ",  
 #                               rec('225','e'),  
 #                               rec('225','f')  
 #                       )  
 #               )  
 #       )  
338  #);  #);
339    
340  #marc('490','v',  
341  #       join2_with(225, 'v', ' , ', 225,'w');  ### 500
 #       join_with(', ',  
 #               rec('225','v'),  
 #               rec('225','w')  
 #       )  
 #);  
342    
343  marc('500','a',  marc('500','a',
344          rec('300')          rec('300')
345  );  );
346    
347  marc('500','a',  marc('500','a',
348            rec('305')
349    );
350    
351    marc('500','a',
352            rec('307')
353    );
354    
355    marc('500','a',
356          rec('314')          rec('314')
357  );  );
358    
359    ### 504
360    
361  marc('504','a',  marc('504','a',
362          rec('320')          rec('320')
363  );  );
# Line 239  marc('504','a', Line 367  marc('504','a',
367  # u LOC konv. tablici stoji 327 (NP) u 505 (NR)  # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
368  # standard i validacije dopuštaju 501 (R) i 505 (R)  # standard i validacije dopuštaju 501 (R) i 505 (R)
369    
370    ## 505
371  ## FFPS 327 - sadrzaj  ## FFPS 327 - sadrzaj
372    
373  if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {  if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
374          marc_indicators('505', '1', ' ');          marc_indicators('505', '0', ' ');
375          marc('505','a',          marc('505','a',
376                  regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',                  regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
377                          rec('327')                          rec('327')
# Line 250  if ( config() =~ m/ffps/ || config() =~ Line 380  if ( config() =~ m/ffps/ || config() =~
380  }  }
381    
382    
383    
384  ## napomene uz konverziju polja 330:  ## napomene uz konverziju polja 330:
385  # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica  # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
386    
387    
388    ### 520
389    # možda i polje 520y - jezik napomene ako je uvijek isti jezik
390    
391  # FFPS 330 (NP) - sažetak  # FFPS 330 (NP) - sažetak
392  if ( config() =~ m/ffps/ ) {  if ( config() =~ m/ffps/ ) {
393          marc('520','a',          marc('520','a',
# Line 271  if ( config() =~ m/fftu/ ) { Line 405  if ( config() =~ m/fftu/ ) {
405  }  }
406    
407    
408  # možda i polje 520y - jezik napomene ako je uvijek isti jezik  ### 538
409    
410    marc('538','a',
411            rec('337','a')
412    );
413    
414    
415    ### 246
416    
417  marc_indicators('246', 1, 3);  marc_indicators('246', 1, 3);
418  marc('246','a',  marc('246','a',
419          rec('532')          rec('532')
420  );  );
421    
422    ### 655
423    
424  marc_indicators('655', ' ', 4);  marc_indicators('655', ' ', 4);
425  marc('655','a',  marc('655','a',
426          rec('608')          rec('608')
427  );  );
428    
429    ### 653
430    
431  marc_indicators('653', 0, ' ');  marc_indicators('653', 0, ' ');
432  marc('653','a',  marc('653','a',
433          rec('610')          rec('610')
434  );  );
435    
436  # 675 podpolja c, d ... - što s njima ???  #_debug(2);
   
 marc('080','a',  
         rec('675','a')  
 );  
   
 # 084 je other classification (R)  
 # NSK ga koristi za stručnu oznaku NSK iz polja 681  
 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom  
 #  
 # polje 686 koristi FFPS  
   
 marc('084','a',  
         rec('686')  
 );  
437    
 marc_indicators('100', 1, ' ');  
 marc('100','a',  
         join_with(', ',  
                 rec('700', 'a'),  
                 rec('700', 'b')  
         )  
 );  
438    
439  #_debug(2);  ### 700
440    
441  marc_indicators('700', 1, ' ');  marc_indicators('700', 1, ' ');
442    
# Line 381  marc('700','a', Line 505  marc('700','a',
505  );  );
506    
507  ## 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?  ## 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?
508    #
   
509  # marc('700','a',  # marc('700','a',
510  #       rec('330','a')  #       rec('330','a')
511  # );  # );
# Line 412  marc('700','a', Line 535  marc('700','a',
535  #_debug(0);  #_debug(0);
536    
537    
 if ( rec('710','f') ) {  
   
 marc_indicators('111', 2, ' ');  
 marc('111','a',  
         rec('710','a')  
 );  
538    
 marc('111','c',  
         rec('710','e')  
 );  
539    
540  marc('111','d',  ### 740
         rec('710','f')  
 );  
541    
542  marc('111','e',  marc_indicators('740', 0, ' ');
         rec('710','b')  
 );  
543    
544  marc('111','n',  # if ( ! rec('464') ) {
545          rec('710','d')  # marc('740','a',
546  );  #       rec('200','c')
547    # );
548    
549     marc('740','a',
550            rec('200','k')
551     );
552    
553  } else {  # } else {
           
 marc_indicators('110', 2, ' ');  
 marc('110','a',  
         rec('710','a')  
 );  
554    
555  marc('110','c',  #marc('740','a',
556          rec('710','c')  #       rec('464','a')
557  );  #);
558    
559  };  # };
560    
561    ### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim
562    
 marc_indicators('740', 0, ' ');  
563    
564  if ( ! rec('464') ) {  my $series_key = join_with('',
565  marc('740','a',          rec('225','a'),
566          rec('200','c')          rec('210','a'),
567            rec('210','b'),
568  );  );
569    
570  marc('740','a',  if ($series_key) {
         rec('200','k')  
 );  
571    
572  } else {          marc_indicators('760', 0, ' ');
573  marc('740','a',          
574          rec('464','a')          marc('760','w',
575  );                  get( $series_key )
576  };          );
577    
578    }
579    
580    ### testing
581    #
582    # my $dup_key = join_with('',
583    #       rec('200','a'),
584    #);
585    #
586    #if ($dup_key) {
587    #       marc('995','a',
588    #               get( $dup_key )
589    #       );
590    #}
591    #
592    #
593    # marc_indicators('776', 0, ' ');
594    #
595    # marc('776','a',
596    #       rec('452','1')
597    # );
598    #
599    
600    
601  ## višerazinci  ### višerazinci
602    # odvojiti u posebnu datoteku i dokumentirati
603    
604    
605  if ( rec('230') ) {  if ( rec('230') ) {
606    
# Line 569  if ( rec('230') ) { Line 700  if ( rec('230') ) {
700                  rec('260')                  rec('260')
701          );          );
702    
703          marc_remove('490');          marc_remove('440');
704          marc('490','a',          marc('440','a',
705                  rec('270')                  rec('270')
706          );          );
707    
# Line 601  if ( rec('230') ) { Line 732  if ( rec('230') ) {
732          );          );
733    
734    
735  };  }
736    
737    ##################################
738    ##                              ##
739    ## pomoćni ispisi - privremeno! ##
740    ##                              ##
741    ##################################
742    
743    if ( ! rec('464') && rec('200','c') ) {
744            marc('002',
745                    'ima-200c-nema-464'
746            );
747    }
748    
749    if ( ! rec('464') && rec('200','k') ) {
750            marc('003',
751                    'ima-200k-nema-464'
752            );
753    }
754    
755    if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
756            marc('004',
757                    'ima-464-nema-200c-ili-200k'
758            );
759    }
760    
761    
762    
763    #_debug(2);
764    
765    if ( rec('200') =~ m/prev/ ) {
766            marc('005',
767                    'prijevod'
768            );
769    }
770    
771    #_debug(0);
772    
773    
774    
775  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.26