/[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 783 by dpavlin, Wed Dec 6 23:42:20 2006 UTC revision 792 by dpavlin, Tue Jan 30 18:23:53 2007 UTC
# Line 1  Line 1 
1  # ne konvertira se ako nema polje 200^a  # 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
 #  
 # vrijedi za ffan...  
8    
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');
# Line 23  if ( rec('230') ) { Line 20  if ( rec('230') ) {
20          marc_leader('19','r');          marc_leader('19','r');
21  }  }
22    
23  # 001 polje - Voyager  ### 001 - Voyager
24  #  
25  # privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku  ### 008
26  # u marc 035a - System Number - ??  
27  # NSK zapisuje Voyagerov ID (001) - kako ???  ### 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    
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 44  join_with('', Line 44  join_with('',
44  );  );
45    
46    
47  # FFSF - nekoliko zaredanih ISBN, odvojenih s '. - '  ### 020
48  # drugi ISBN počinje prefixom ISBN  # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)
49    
50  marc('020','a',  marc('020','a',
51          regex('s/ ISBN //g',          regex('s/ ISBN //g',
# Line 53  marc('020','a', Line 53  marc('020','a',
53          )          )
54  );  );
55    
56  # u polje 040a - 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 68  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    
94  ## naći primjer u NSK  
95    ### 041
96    # ponovljivo polje konvertira se u ponovljivo potpolje
97    
98  #_debug(2);  #_debug(2);
99  marc_repeatable_subfield('041','a',  marc_repeatable_subfield('041','a',
# Line 82  marc_repeatable_subfield('041','a', Line 101  marc_repeatable_subfield('041','a',
101  );  );
102  #_debug(0);  #_debug(0);
103    
 # indikatori za članove. treba uvjetovati prema jezicima !!  
104    
105  marc_indicators('245', 0, 0);  ### 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  }  }
188    
189  if (    ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )  if (    ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
190          {          {
191                  marc_indicators('245', 0, 2);                  marc_indicators('245', 1, 2);
192  }  }
193    
194    ### 245
195    # redoslijed polja
196    
197  #_debug(3);  #_debug(3);
   
198  marc_compose('245',  marc_compose('245',
199          'a', suffix(          'a', suffix(
200                  rec('200','b') ? '. '   :                  rec('200','b') ? '. '   :
# Line 136  marc_compose('245', Line 229  marc_compose('245',
229          'c', rec('200','f'),          'c', rec('200','f'),
230    
231  # append to last subfield  # append to last subfield
232          '+', prefix('. ', rec('200','c') ),          '+', prefix('. ',
233                    rec('200','c')
234            ),
235  );  );
236    
237    
 #marc('440','a',  
 #       suffix(  
 #               rec('225','e') ?  ' : ' :  
 #               rec('225','v') ?  ' ; ' :  
 #                                 '. ',  
 #                       rec('225','a'),  
 #       )  
 #);  
   
   
   
238    
239    #_debug(0);
240    
241    
242  #_debug(0);  ### 250
243    
244  marc('250','a',  marc('250','a',
245          suffix(          suffix(
# Line 168  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(
# Line 208  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');  marc_indicators('440', ' ', '0');
302    
303  marc('440','a',  marc('440','a',
304          join_with(' / ',          join_with(' : ',
305                  rec('225','a'),                  rec('225','a'),
306                  rec('225','f')                  rec('225','e')
307          )          )
308  );  ) ;
309    
310  #marc('440','a',  marc('440','n',
 #       join_with(' : ',  
 #               rec('225','a'),  
 #               join_with(" =  ",  
 #                       rec('225','d'),  
 #                       join_with(" / ",  
 #                               rec('225','e'),  
 #                               rec('225','f')  
 #                       )  
 #               )  
 #       )  
 #);  
   
 marc('440','h',  
311          rec('225','h')          rec('225','h')
312  );  );
313    
# Line 251  marc('440','x', Line 326  marc('440','x',
326          rec('225','x')          rec('225','x')
327  );  );
328    
329  #marc('490','v',  marc('440','a',
330  #       join2_with(225, 'v', ' , ', 225,'w');          rec('225','b'),
331  #       join_with(', ',  );
332  #               rec('225','v'),  
333  #               rec('225','w')  
334  #       )  ### 490
335    #
336    #marc('490','a',
337    #       rec('225','a')
338  #);  #);
339    
340    
341    ### 500
342    
343  marc('500','a',  marc('500','a',
344          rec('300')          rec('300')
345  );  );
# Line 275  marc('500','a', Line 356  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 284  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', '0', ' ');          marc_indicators('505', '0', ' ');
375          marc('505','a',          marc('505','a',
# Line 295  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 315  if ( config() =~ m/fftu/ ) { Line 404  if ( config() =~ m/fftu/ ) {
404          );          );
405  }  }
406    
407    
408    ### 538
409    
410  marc('538','a',  marc('538','a',
411          rec('337','a')          rec('337','a')
412  );  );
413    
414    
415  # možda i polje 520y - jezik napomene ako je uvijek isti jezik  ### 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 430  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 461  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')  
 );  
   
 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',  
         rec('710','a')  
 );  
   
 marc('110','c',  
         rec('710','c')  
 );  
538    
 };  
539    
540    ### 740
541    
542  marc_indicators('740', 0, ' ');  marc_indicators('740', 0, ' ');
543    
# Line 506  marc_indicators('740', 0, ' '); Line 546  marc_indicators('740', 0, ' ');
546  #       rec('200','c')  #       rec('200','c')
547  # );  # );
548    
549  # marc('740','a',   marc('740','a',
550  #       rec('200','k')          rec('200','k')
551  # );   );
552    
553  # } else {  # } else {
554    
555          marc('740','a',  #marc('740','a',
556                  rec('464','a')  #       rec('464','a')
557          );  #);
558    
559  # };  # };
560    
561    ### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim
562    
563    
564    my $series_key = join_with('',
565            rec('225','a'),
566            rec('210','a'),
567            rec('210','b'),
568    );
569    
570    if ($series_key) {
571    
572            marc_indicators('760', 0, ' ');
573            
574            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
602    # odvojiti u posebnu datoteku i dokumentirati
603    
 ## višerazinci  
604    
605  if ( rec('230') ) {  if ( rec('230') ) {
606    
# Line 652  if ( rec('230') ) { Line 732  if ( rec('230') ) {
732          );          );
733    
734    
 };  
   
 my $nak_cj = get( rec('225','a') );  
   
 if ($nak_cj) {  
   
 marc('760','w',  
         $nak_cj  
 );  
   
735  }  }
736    
737  marc_indicators('776', 0, ' ');  ##################################
738    ##                              ##
739  marc('776','a',  ## pomoćni ispisi - privremeno! ##
740          rec('452','1')  ##                              ##
741  );  ##################################
   
 #marc('900','a',  
 #       lookup(  
 #               sub { rec('000') },  
 #               'ffps','libri',  
 #               sub { rec('200','a') . rec('200','f') . rec('205') },  
 #       )  
 #);  
   
 #marc('901','a',  
 #       lookup(  
 #               sub { 'NSK: ' . rec('200','a') },  
 #               'nsk','baza',  
 #               sub { rec('200','a') },  
 #               sub { rec('10') }  
 #       )  
 #);  
742    
743  if ( ! rec('464') && rec('200','c') ) {  if ( ! rec('464') && rec('200','c') ) {
744          marc('003','a',          marc('002',
745                  'ima-200c-nema-464'                  'ima-200c-nema-464'
746          );          );
747  }  }
748    
749  if ( ! rec('464') && rec('200','k') ) {  if ( ! rec('464') && rec('200','k') ) {
750          marc('005','a',          marc('003',
751                  'ima-200k-nema-464'                  'ima-200k-nema-464'
752          );          );
753  }  }
754    
755  if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {  if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
756          marc('006','a',          marc('004',
757                  'ima-464-nema-200c-ili-200k'                  '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.783  
changed lines
  Added in v.792

  ViewVC Help
Powered by ViewVC 1.1.26