/[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 842 by dpavlin, Fri May 25 19:48:02 2007 UTC revision 903 by dpavlin, Wed Oct 10 21:00:48 2007 UTC
# Line 24  if ( rec('999') && first(rec('999')) =~ Line 24  if ( rec('999') && first(rec('999')) =~
24          marc_leader('07','m');          marc_leader('07','m');
25          marc_leader('18','i');          marc_leader('18','i');
26    
27    # pojasniti upotrebu 19 lidera!
28    
29  if ( rec('230') ) {  if ( rec('230') ) {
30          marc_leader('19','r');          marc_leader('19','r');
31  }  }
32    
33  ### 001 - Voyager  ### 001 - Voyager
34    
35    ### 003
36    # Pojasniti upotrebu polja
37    
38  ### 007  ### 007
39    # pojasniti upotrebu polja
40    
41  marc_fixed('007',00,'ta');  marc_fixed('007',00,'ta');
42    
43  ### 008  ### 008
44    # što zapisati u polje kad datum nije poznat?
45    
46  if ( rec('994','c') ) {  if ( rec('994','c') ) {
47          marc_fixed('008','00',          marc_fixed('008','00',
# Line 55  if ( rec('994','c') ) { Line 62  if ( rec('994','c') ) {
62  #)  #)
63  #);  #);
64    
 ## FIXME treba velika slova pretvoriti u mala  
   
65  marc_fixed('008','35',  marc_fixed('008','35',
66          first( lc(rec('101')) )          first( lc(rec('101')) )
67  );  );
68    
69    
70    ### 020
71    # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)
72    
73    marc('020','a',
74            regex('s/ ISBN //g',
75                    rec('10')
76            )
77    );
78    
79    
80  ### 035$6  ### 035$6
81  # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku.  # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku.
82  # marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako?  # marc 035a - System Number - Voyagerov ID (001)
83  # kako mora izgledati polje 035$9? može li sadržavati slova i razmake?  # polje 035$9 može sadržavati slova i razmake
   
84    
85  marc('035','6',  marc('035','6',
86  join_with('',  join_with('',
87  #               config('input normalize path'),  #               config('input normalize path'),
88  #               config('name'),  #               config('name'),
89                  config(),                  config(),
90                  'L',                  ' L',
91  #               config('input name'),  #               config('input name'),
92  #               id(),  #               id(),
93  #               rec('994','a'),  #               rec('994','a'),
# Line 82  join_with('', Line 95  join_with('',
95          )          )
96  );  );
97    
   
 ### 020  
 # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)  
   
 marc('020','a',  
         regex('s/ ISBN //g',  
                 rec('10')  
         )  
 );  
   
   
98  ### 040  ### 040
99  # za sve je isti  # za sve je isti
100    # treba utvrditi točnu oznaku za ustanovu
101    
102  marc('040','a',  marc('040','a',
103          'HR FFZG'          'HR FFZG'
# Line 109  marc('040','e', Line 112  marc('040','e',
112  );  );
113    
114    
115  ### 041 indikatori  ### 041
116    
117    # indikatori
118    #
119  # pretpostavke o indikatorima:  # pretpostavke o indikatorima:
120  #  #
121  # 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1  # 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
# Line 125  marc('040','e', Line 131  marc('040','e',
131    
132    
133  #if ( rec('675') =~ m/\d=\d/ ) {  #if ( rec('675') =~ m/\d=\d/ ) {
134  if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) {  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')) ) {
135          marc_indicators('041', 1, ' ');          marc_indicators('041', 1, ' ');
136  } else {  } else {
137          marc_indicators('041', 0, ' ');          marc_indicators('041', 0, ' ');
# Line 136  if ( grep( m/Prijevod/, rec('300')) || g Line 142  if ( grep( m/Prijevod/, rec('300')) || g
142  # ponovljivo polje konvertira se u ponovljivo potpolje  # ponovljivo polje konvertira se u ponovljivo potpolje
143    
144  #_debug(2);  #_debug(2);
145    
146  marc_repeatable_subfield('041','a',  marc_repeatable_subfield('041','a',
147          rec('101')          rec('101')
148  );  );
149    
150  #_debug(0);  #_debug(0);
151    
152    ### 044
153    
154    
155  ### 080  ### 080
156  # 675 podpolja b, c, d ... - što s njima ???  # 675 podpolja b, c, d ... - što s njima ???
# Line 149  marc('080','a', Line 159  marc('080','a',
159          rec('675','a')          rec('675','a')
160  );  );
161    
162    marc('080','a',
163            rec('675','b')
164    );
165    
166    marc('080','a',
167            rec('675','c')
168    );
169    
170    marc('080','a',
171            rec('675','d')
172    );
173    
174    
175  ### 084 - other classification (R)  ### 084 - other classification (R)
176  # NSK ga koristi za stručnu oznaku NSK iz polja 681  # NSK ga koristi za stručnu oznaku NSK iz polja 681
177  # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom  # NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
178  # polje 686 koristi FFPS  # polje 686 koristi FFPS. još netko?
   
179    
180  marc('084','a',  marc('084','a',
181          rec('686')          rec('686')
182  );  );
183    
184  ### 100  ### 100
185    
186  # I1 = 0 ako je pseudonim (ima 700a, nema 700b)  # I1 = 0 ako je pseudonim (ima 700a, nema 700b)
187    
188  if ( rec('700','a') && ! rec('700','b') ) {  if ( rec('700','a') && ! rec('700','b') ) {
# Line 181  marc('100','a', Line 203  marc('100','a',
203  # provjeriti ispise naslova iz svake baze - moguće su greške.  # provjeriti ispise naslova iz svake baze - moguće su greške.
204  # ovo vrijedi za FFSFB  # ovo vrijedi za FFSFB
205    
206  if ( rec('710','f') ) {  if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
207    
208  marc_indicators('111', 2, ' ');  marc_indicators('111', 2, ' ');
209    
210  marc_compose('111',  marc_compose('111',
211          'a', rec('710','a'),          'a', suffix(
212                    rec('710','b') ? '.' :
213                            '',
214                            rec('710','a'),
215            ),
216          'e', rec('710','b'),          'e', rec('710','b'),
217          'n', rec('710','d'),          'n', prefix(
218          'd', rec('710','f'),                  rec('710','d') ? '(' :
219          'c', rec('710','e'),                          '',
220                            rec('710','d')
221            ),
222            'd', prefix(
223                    ( ! rec('710','d') ) ? '(' :
224                    ( ! rec('710','e') ) ? '(' :
225                            '; ',
226                            rec('710','f'),
227            ),
228            'c', prefix(
229                    ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' :
230                    ( ! rec('710','d') && ! rec('710','f') )  ? '(' :
231                            '',
232                            rec('710','e'),
233            ),
234            '+',')',
235  );  );
236    
237    
238  } else {  } else {
239                    
240  marc_indicators('110', 2, ' ');  marc_indicators('110', 2, ' ');
241    
242  marc('110','a',  marc('110','a',
243          rec('710','a')          rec('710','a')
244  );  );
245    
246  marc('110','c',  marc('110','b',
247          rec('710','c')          rec('710','b')
248  );  );
249    
250            if ( rec('710','c') ) {
251            marc('110','c',
252                    surround('(', ')', rec('710','c'))
253            );
254            }
255    
256  }  }
257    
258    
259  ### 245 indikatori  ### 245
260    
261    # indikatori
262    #
263  # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710  # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
264  # i2 = pretpostavlja se na temelju člana na početku naslova i jezika  # i2 = pretpostavlja se na temelju člana na početku naslova i jezika
265  # treba nadopuniti i dati podatke na verifikaciju knjižničarima  # treba nadopuniti i dati podatke na verifikaciju knjižničarima
# Line 239  if (   ( rec('200','a') =~ m/^An /) && ( Line 290  if (   ( rec('200','a') =~ m/^An /) && (
290                  marc_indicators('245', $i1, 2);                  marc_indicators('245', $i1, 2);
291  }  }
292    
 ### 245  
 # redoslijed polja važan  
293  # podpolja i interpunkcije pripremljeni u modify  # podpolja i interpunkcije pripremljeni u modify
294    
295  #_debug(3);  #_debug(3);
296    
297  marc_compose('245',  marc_compose('245',
298          'a', suffix(          'a', suffix(
299                  ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' :                    ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
300                  ( rec('200','p') && rec('200','c') ) ? ' : '  :                  ( rec('200','d') ) ? ' = ' :
301                    ( rec('200','e') ) ? ' : ' :
302                    ( rec('200','k') ) ? ' ; ' :
303                          '',                          '',
304                          rec('200','a'),                          rec('200','a'),
305          ),          ),
306          'b', suffix(          'b', suffix(
307                  ( rec('200','p') && rec('200','f') ) ? ' / ' :                  ( rec('200','d') && rec('200','f') ) ? ' / ' :
308                  ( rec('200','p') && rec('200','c') ) ? '. '  :                  ( rec('200','d') && rec('200','c') ) ? '. '  :
309                          '',                          '',
310                          rec('200','p'),                          rec('200','d'),
311            ),
312            'b', suffix(
313                    ( rec('200','e') && rec('200','f') ) ? ' / ' :
314                    ( rec('200','e') && rec('200','c') ) ? '. '  :
315                            '',
316                            rec('200','e'),
317            ),
318            'b', suffix(
319                    ( rec('200','k') && rec('200','f') ) ? ' / ' :
320                    ( rec('200','k') && rec('200','c') ) ? '. '  :
321                            '',
322                            rec('200','k'),
323          ),          ),
324          'c', suffix(          'c', suffix(
325                  ( rec('200','f') && rec('200','c') ) ? '. ' :                  ( rec('200','f') && rec('200','c') ) ? '. ' :
# Line 266  marc_compose('245', Line 329  marc_compose('245',
329          '+', rec('200','c'),          '+', rec('200','c'),
330  );  );
331    
332    #marc_compose('245',
333    #       'a', suffix(
334    #               ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' :  
335    #               ( ! rec('200','p') && rec('200','c') ) ? ' : '  :
336    #                       '',
337    #                       rec('200','a'),
338    #       ),
339    #       'b', suffix(
340    #               ( rec('200','p') && rec('200','f') ) ? ' / ' :
341    #               ( rec('200','p') && rec('200','c') ) ? '. '  :
342    #                       '',
343    #                       rec('200','p'),
344    #       ),
345    #       'c', suffix(
346    #               ( rec('200','f') && rec('200','c') ) ? '. ' :
347    #                       '',
348    #                       rec('200','f'),
349    #       ),
350    #       '+', rec('200','c'),
351    #);
352    
353  #_debug(0);  #_debug(0);
354    
355  #marc_compose('245',  #marc_compose('245',
# Line 299  marc_compose('245', Line 383  marc_compose('245',
383  #                       ),  #                       ),
384  #       ),  #       ),
385  #       'c', rec('200','f'),  #       'c', rec('200','f'),
386  ### append to last subfield  ## append to last subfield
387  #       '+', prefix('. ',  #       '+', prefix('. ',
388  #               rec('200','c')  #               rec('200','c')
389  #       ),  #       ),
# Line 310  marc_compose('245', Line 394  marc_compose('245',
394    
395    
396  ### 250  ### 250
397    # zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
398    
399  marc_compose('250',  marc_compose('250',
400          'a',suffix(          'a',suffix(
# Line 320  marc_compose('250', Line 405  marc_compose('250',
405          'b', rec('205','f'),          'b', rec('205','f'),
406  );  );
407    
 #marc('250','b',  
 #       rec('205','f')  
 #);  
408    
409    
410  ### 260  ### 260
# Line 332  marc_original_order('260', '210'); Line 414  marc_original_order('260', '210');
414    
415    
416  ### 300  ### 300
417  # provjeriti interpunkcije !!  # urediti interpunkcije za sve kombinacije
418    
419  marc('300','a',  marc('300','a',
420          suffix(          suffix(
# Line 365  marc('300','e', Line 447  marc('300','e',
447          rec('215','e')          rec('215','e')
448  );  );
449    
450    ### 362
451    # brojčani podaci za nakladničku cjelinu
452    # ???
453    
454  ### 440  ### 440
455  # 2.ind. prema jeziku i članu  # 2.ind. prema jeziku i članu
# Line 387  if (   ( rec('225','a') =~ m/^An /) && ( Line 472  if (   ( rec('225','a') =~ m/^An /) && (
472    
473  #_debug(3);  #_debug(3);
474    
475  marc('440',  marc_original_order('440','225');
         'a', suffix( rec('225','f'),  
                         rec('225','a'),  
         ),  
 );  
476    
477  #       join_with(' / ',  
478  #               join_with(' ',  #marc_compose('440',
479    #       'a', suffix(
480    #               rec('225','i') ? '. ' :
481    #                       '',
482  #                       rec('225','a'),  #                       rec('225','a'),
 #                       rec('225','p'),  
 #               ),  
 #                       rec('225','f')  
483  #       ),  #       ),
484    #       'p', suffix(
485    #               ( ! rec('225','x') && rec('225','i') && rec('225','v') ) ? ' ; ' :
486    #               ( rec('225','i') && rec('225','x') ) ? ', '  :
487    #                       '',
488    #                       rec('225','i'),
489    #       ),
490    #       'x', suffix(
491    #               ( rec('225','x') && rec('225','v') ) ? ' ; ' :
492    #                       '',
493    #                       rec('225','x'),
494    #       ),
495    #       'v', rec('225','v'),
496    #);
497    
498  #_debug(0);  ## ovo radi samo kad 225 nije ponovljivo
   
 marc('440','n',  
         rec('225','h')  
 );  
   
 marc('440','p',  
         rec('225','i')  
 );  
499    
500  marc('440','v',  #if (
501          rec('225','v'),  #       count( lookup(
502  );  #               sub { 1 },
503    #               'ffps','libri',
504    #               sub { rec('225','a') }
505    #       ) ) > 1
506    #) {
507    
508  marc('440','x',  #marc_compose('440',
509          rec('225','x')  #       'a', suffix(
510  );  #               ( rec('225','x') ) ? ', '  :
511    #               ( rec('225','v') || rec('225','w') ) ? ' ; ' :
512    #               ( rec('225','h') || rec('225','i') ) ? '. '  :
513    #                       '',
514    #                       join_with(' / ',
515    #                               join_with(' : ',
516    #                                       join_with(' = ',
517    #                                               rec('225','a'),
518    #                                               rec('225','d'),
519    #                                       ),
520    #                                       rec('225','e'),
521    #                               ),
522    #                               rec('225','f'),
523    #                       ),
524    #       ),
525    #       'x', suffix(
526    #               ( rec('225','x') && rec('225','v') ) ? ' ; ' :
527    #               ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '. ' :
528    #                       '',
529    #                       rec('225','x'),
530    #       ),
531    #       'v', suffix(
532    #               ( rec('225','v') && rec('225','h') || rec('225','i') ) ? '. ' :
533    #                       '',
534    #                       join_with('; ',
535    #                               rec('225','v'),
536    #                       )
537    #       ),
538    #       'n', suffix(
539    #               ( rec('225','h') && rec('225','p') || rec('225','y') ) ? ', ' :
540    #                       '',
541    #                       rec('225','h'),
542    #       ),
543    #       'p', suffix(
544    #               ( rec('225','i') && rec('225','x') ) ? ', ' :
545    #               ( rec('225','i') && rec('225','v') ) ? ' ; ' :
546    #                       '',
547    #                       rec('225','i'),
548    #       ),
549    #       'x', suffix(
550    #               ( rec('225','y') && rec('225','v') ) ? ' ; ' :
551    #                       '',
552    #                       rec('225','y'),
553    #       ),
554    #       'v', rec('225','w'),
555    # );
556    #
557    # marc_compose('440',
558    #       'a', suffix(
559    #               rec('225','k') ? ' ; ' :
560    #                       '',
561    #                       join_with(' / ',
562    #                               rec('225','b'),
563    #                               rec('225','j')
564    #                       ),
565    #       ),
566    #       'v',
567    #               rec('225','k'),
568    # );
569    #
570    #
571    # marc_compose('440',
572    #       'a', suffix(
573    #               rec('225','s') ? ' ; ' :
574    #                       '',
575    #                       join_with(' / ',
576    #                               rec('225','c'),
577    #                               rec('225','r')
578    #                       ),
579    #       ),
580    #       'v',
581    #               rec('225','s'),
582    # );
583    
584    #}
585    
586  ### 490  #if ( rec('225','i') ) {
587    #       marc('440','p',
588    #               prefix('. ',
589    #                       rec('225','i')
590    #               ),
591    #       );
592    #}
593  #  #
594  #marc('490','a',  #if ( rec('225','v') ) {
595  #       rec('225','a')  #       marc('440','v',
596  #);  #               prefix(' ; ',
597    #                       rec('225','v'),
598    #               ),
599    #       );
600    #}
601    
602    #_debug(0);
603    
604    
605  ### 50x  ### 50x
# Line 460  marc('504','a', Line 635  marc('504','a',
635  # standard i validacije dopuštaju 501 (R) i 505 (R)  # standard i validacije dopuštaju 501 (R) i 505 (R)
636    
637  ## 505  ## 505
638  ## FFPS 327 - sadrzaj  # FFPS 327 - sadrzaj
639    
640  if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {  if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
641          marc_indicators('505', '0', ' ');          marc_indicators('505', '0', ' ');
# Line 481  if ( config() =~ m/ffan/ ) { Line 656  if ( config() =~ m/ffan/ ) {
656  }  }
657    
658    
   
 ## napomene uz konverziju polja 330:  
659  # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica  # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
660    
661    
662  ### 520  ### 520
663  # možda i polje 520y - jezik napomene ako je uvijek isti jezik  # možda i polje 520y - jezik napomene ako je uvijek isti jezik?
664    
665  # FFPS 330 (NP) - sažetak  # FFPS 330 (NP) - sažetak
666  if ( config() =~ m/ffps/ ) {  if ( config() =~ m/ffps/ ) {
# Line 499  if ( config() =~ m/ffps/ ) { Line 672  if ( config() =~ m/ffps/ ) {
672  }  }
673    
674  ### 526 - STUDY PROGRAM INFORMATION NOTE  ### 526 - STUDY PROGRAM INFORMATION NOTE
675    # provjeriti za svaku bazu sta je tocno u 996?
676    
677  marc_indicators('526', 8, ' ');  marc_indicators('526', 8, ' ');
678    
# Line 577  marc('700','a', Line 751  marc('700','a',
751    
752    
753  marc('700','a',  marc('700','a',
754          rec('702','a'),          join_with(', ',
755                    rec('702', 'a'),
756                    rec('702', 'b')
757            )
758  );  );
759    
760    
# Line 605  marc('700','a', Line 782  marc('700','a',
782          )          )
783  );  );
784    
 ## 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')  
 # );  
   
785  #_debug(0);  #_debug(0);
786    
787    
   
   
788  ### 740  ### 740
789    
790  marc_indicators('740', 0, ' ');  marc_indicators('740', 0, ' ');
# Line 659  marc('740','a', Line 806  marc('740','a',
806    
807  # };  # };
808    
809  ### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim  # generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim
810    
811  if (  if (
812          rec('225','a')  # da li je nakladnicka cjelina?          rec('225','a')  # da li je nakladnička cjelina?
813  ) {  ) {
814    
815  my $series_key =  my $series_key =
# Line 678  if ($series) { Line 825  if ($series) {
825          warn "nije novi";          warn "nije novi";
826  } else {  } else {
827    
   
828  $series = join_with('',  $series = join_with('',
829          config(),          config(),
830          'LS',          'LS',
# Line 687  $series = join_with('', Line 833  $series = join_with('',
833    
834  set( $series_key => $series );  set( $series_key => $series );
835    
836  }  } # $series
837  }  } # nakladnička cjelina
838    
839  my $series_key = join_with('',  my $series_key = join_with('',
840          rec('225','a'),          rec('225','a'),
# Line 725  if ($series_key) { Line 871  if ($series_key) {
871  #  #
872    
873    
874  ## 852 - lokacija  ### 852 - lokacija
875    
876  marc_indicators('852', 4, ' ');  marc_indicators('852', 4, ' ');
877    
# Line 735  marc('852','j', Line 881  marc('852','j',
881          )          )
882  );  );
883    
884  ## 876 - item information - basic bibliographic unit  ### 876 - item information - basic bibliographic unit
885    
886  marc('876','a',  marc('876','a',
887          rec('991'),          rec('991'),
888  );  );
889    
890  ## 886 - former marc  ### 886 - former marc
891    
892  marc_indicators('886', 2, ' ');  marc_indicators('886', 2, ' ');
893    

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

  ViewVC Help
Powered by ViewVC 1.1.26