/[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 903 by dpavlin, Wed Oct 10 21:00:48 2007 UTC revision 1020 by dpavlin, Sat Nov 10 11:02:37 2007 UTC
# Line 1  Line 1 
1  #########################################################################  ##########################################################################
2  ##                                                                      ##  ##                                                                      ##
3  ## Ova datoteka sadrži pravila za generiranje MARC21 ISO 2709 izlazne   ##  ## Ova datoteka sadrži pravila za generiranje MARC21 ISO 2709 izlazne   ##
4  ## datoteke. Ulazni format je CDS/ISIS sa zapisima u UNIMARC-u.         ##  ## datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u    ##
5    ## UNIMARC formatu, sa višestrukim odstupanjima od standarda.           ##
6  ##                                                                      ##        ##                                                                      ##      
7  ##########################################################################  ##########################################################################
8    
9  # konvertira se ako postoji polje 200^a  ## konvertira se ako postoji polje 200^a
10    
11  if ( rec('200','a') ) {  if ( rec('200','a') ) {
12    
13  ### LEADER  ### LEADER
14  # raspraviti 17,18  ## raspraviti 17,18
15  # u nekim knjižnicama koristi se 999a i 999b, a u nekima samo 999  ## u nekim knjižnicama koristi se 999a i 999b, a u nekima samo 999
16    
17  if ( rec('999') && first(rec('999')) =~ m/(pregledan|P)/i) {  if ( rec('999') && first(rec('999')) =~ m/(pregledan|P)/i) {
18          marc_leader('05','c');          marc_leader('05','c');
# Line 19  if ( rec('999') && first(rec('999')) =~ Line 20  if ( rec('999') && first(rec('999')) =~
20          marc_leader('05','n');          marc_leader('05','n');
21  }  }
22    
23  # moguća je i oznaka "m" u 06 - odrediti kriterije  ## moguća je i oznaka "m" u 06 - odrediti kriterije
24    
25          marc_leader('06','a');          marc_leader('06','a');
26          marc_leader('07','m');          marc_leader('07','m');
27          marc_leader('18','i');          marc_leader('18','i');
28    
29  # pojasniti upotrebu 19 lidera!  ## pojasniti upotrebu 19 lidera!
30    
31  if ( rec('230') ) {  if ( rec('230') ) {
32          marc_leader('19','r');          marc_leader('19','r');
# Line 33  if ( rec('230') ) { Line 35  if ( rec('230') ) {
35  ### 001 - Voyager  ### 001 - Voyager
36    
37  ### 003  ### 003
38  # Pojasniti upotrebu polja  ## Pojasniti upotrebu polja
39    
40  ### 007  ### 007
41  # pojasniti upotrebu polja  # pojasniti upotrebu polja
42    
43  marc_fixed('007',00,'ta');  marc_fixed('007',00,'ta');
44    
45  ### 008  ### 008 - All materials
46    
47  # što zapisati u polje kad datum nije poznat?  # što zapisati u polje kad datum nije poznat?
48    
49  if ( rec('994','c') ) {  if ( rec('994','c') ) {
# Line 62  if ( rec('994','c') ) { Line 65  if ( rec('994','c') ) {
65  #)  #)
66  #);  #);
67    
68    marc_fixed('008','06', 't');            # 06 - Type of date/Publication status
69    marc_fixed('008','07',
70            rec('210','d')
71    );                                      # 07-10 - Date 1
72    # marc_fixed('008','11', ' ');          # 11-14 - Date 2
73    marc_fixed('008','15',
74            lc ( rec('102') )
75    );                                      # 15-17 - Place of publication, production, or execution
76  marc_fixed('008','35',  marc_fixed('008','35',
77          first( lc(rec('101')) )          first( lc(rec('101')) )         # 35-37 - Language
78  );  );
79                                            # 38 - Modified record
80    marc_fixed('008','39','d');             # 39 - Cataloging source
81    
82    ### 008 - Books
83    
84                                            # 18-21 - Illustrations
85                                            # 22 - Target audience
86                                            # 23 - Form of item
87                                            # 24-27 - Nature of contents
88                                            # 28 - Government publication
89                                            # 29 - Conference publication
90                                            # 30 - Festschrift
91                                            # 31 - Index
92                                            # 32 - Undefined
93                                            # 33 - Literary form
94                                            # 34 - Biography
95    
96    
97  ### 020  ### 020
98  # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)  # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb)
99    
100  marc('020','a',  if ( frec('10') ne ( frec('290') ) ) {
101          regex('s/ ISBN //g',          marc('020','a',
102                  rec('10')                  regex('s/-//g',
103          )                          rec('10')
104  );                  )
105            );
106    }
107    
108    #warn(
109    #       dump(
110    #               frec('10')
111    #       ),
112    #);
113    
114  ### 035$6  ### 035$6
115  # 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.
# Line 112  marc('040','e', Line 146  marc('040','e',
146  );  );
147    
148    
149  ### 041  ### 041 - indikatori
   
 # indikatori  
150  #  #
151  # pretpostavke o indikatorima:  # pretpostavke o indikatorima:
152  #  #
# Line 130  marc('040','e', Line 162  marc('040','e',
162  # ????  # ????
163    
164    
165  #if ( rec('675') =~ m/\d=\d/ ) {  #if ( rec('675') =~ m/\d=\d/ ) ??
166  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')) ) {  
167    if (
168            grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik]/i, rec('300') ) ||
169            grep( m/[preve|prijevod]/i, rec('200','f')) ||
170            grep( m/[preve|prijevod]/i, rec('200','g'))  
171    ) {
172          marc_indicators('041', 1, ' ');          marc_indicators('041', 1, ' ');
173  } else {  } else {
174          marc_indicators('041', 0, ' ');          marc_indicators('041', 0, ' ');
# Line 144  if ( grep( m/prijevod/i, rec('300')) || Line 181  if ( grep( m/prijevod/i, rec('300')) ||
181  #_debug(2);  #_debug(2);
182    
183  marc_repeatable_subfield('041','a',  marc_repeatable_subfield('041','a',
184          rec('101')          map { lc($_) } rec('101')
185  );  );
186    
187  #_debug(0);  #_debug(0);
188    
189  ### 044  ### 044
190    ## kako dobiti zemlju izdavanja?
191    
192  ### 080  ### 080
193  # 675 podpolja b, c, d ... - što s njima ???  # 675 podpolja b, c, d ... - što s njima ???
# Line 181  marc('084','a', Line 218  marc('084','a',
218          rec('686')          rec('686')
219  );  );
220    
221  ### 100  ### 100 indikatori
222    
223  # I1 = 0 ako je pseudonim (ima 700a, nema 700b)  # I1 = 0 ako je pseudonim (ima 700a, nema 700b)
224    
# Line 191  if ( rec('700','a') && ! rec('700','b') Line 228  if ( rec('700','a') && ! rec('700','b')
228          marc_indicators('100', 1, ' ');          marc_indicators('100', 1, ' ');
229  }  }
230    
231    ### 100
232    
233  marc('100','a',  marc('100','a',
234          join_with(', ',          join_with(', ',
235                  rec('700', 'a'),                  rec('700', 'a'),
# Line 201  marc('100','a', Line 240  marc('100','a',
240    
241  ### 111 i 110  ### 111 i 110
242  # provjeriti ispise naslova iz svake baze - moguće su greške.  # provjeriti ispise naslova iz svake baze - moguće su greške.
 # ovo vrijedi za FFSFB  
243    
244    # ovo vrijedi za FFSFB
245  if ( rec('710','d') || rec('710','e') || rec('710','f') ) {  if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
246    
247  marc_indicators('111', 2, ' ');  marc_indicators('111', 2, ' ');
# Line 256  marc('110','b', Line 295  marc('110','b',
295  }  }
296    
297    
298  ### 245  ### 245 indikatori
299    # treba nadopuniti i dati podatke na verifikaciju knjižničarima
300    
 # indikatori  
 #  
301  # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710  # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
302  # i2 = pretpostavlja se na temelju člana na početku naslova i jezika  # i2 = pretpostavlja se na temelju člana na početku naslova i jezika
 # treba nadopuniti i dati podatke na verifikaciju knjižničarima  
303    
304  my $i1;  my $i1;
305    
# Line 278  marc_indicators('245', $i1, 0); Line 315  marc_indicators('245', $i1, 0);
315  if (    ( rec('200','a') =~ m/^Die /) ||  if (    ( rec('200','a') =~ m/^Die /) ||
316          ( rec('200','a') =~ m/^Das /) ||          ( rec('200','a') =~ m/^Das /) ||
317          ( rec('200','a') =~ m/^Der /) ||          ( rec('200','a') =~ m/^Der /) ||
318            ( rec('200','a') =~ m/^Les /) ||
319          ( rec('200','a') =~ m/^The /) ) {          ( rec('200','a') =~ m/^The /) ) {
320                  marc_indicators('245', $i1, 4);                  marc_indicators('245', $i1, 4);
321    
322  }  }
323    
324  if (    ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {  if (    ( rec('200','a') =~ m/^Un /) ||
325                  marc_indicators('245', $i1, 2);          ( rec('200','a') =~ m/^An /) ||
326            ( rec('200','a') =~ m/^La /) ||
327            ( rec('200','a') =~ m/^Le /) ||
328            ( rec('200','a') =~ m/^Il /) ) {
329                    marc_indicators('245', $i1, 3);
330  }  }
331    
332  if (    ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {  if (    ( rec('200','a') =~ m/^A /) ||
333            ( rec('200','a') =~ m/^L'/) ) {
334                  marc_indicators('245', $i1, 2);                  marc_indicators('245', $i1, 2);
335  }  }
336    
337    ### 245
338  # podpolja i interpunkcije pripremljeni u modify  # podpolja i interpunkcije pripremljeni u modify
339    
340  #_debug(3);  #_debug(3);
341    
342  marc_compose('245',  marc_compose('245',
343          'a', suffix(          'a', suffix(
344                  ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :                    ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :  
345                  ( rec('200','d') ) ? ' = ' :                  ( rec('200','d') ) ? ' =' :
346                  ( rec('200','e') ) ? ' : ' :                  ( rec('200','e') ) ? ' :' :
347                  ( rec('200','k') ) ? ' ; ' :                  ( rec('200','k') ) ? ' ;' :
348                          '',                          '',
349                          rec('200','a'),                          rec('200','a'),
350          ),          ),
351          'b', suffix(          'b', suffix(
352                  ( rec('200','d') && rec('200','f') ) ? ' / ' :                  ( rec('200','d') && rec('200','f') ) ? ' /' :
353                  ( rec('200','d') && rec('200','c') ) ? '. '  :                  ( rec('200','d') && rec('200','c') ) ? '.'  :
354                          '',                          '',
355                          rec('200','d'),                          rec('200','d'),
356          ),          ),
357          'b', suffix(          'b', suffix(
358                  ( rec('200','e') && rec('200','f') ) ? ' / ' :                  ( rec('200','e') && rec('200','f') ) ? ' /' :
359                  ( rec('200','e') && rec('200','c') ) ? '. '  :                  ( rec('200','e') && rec('200','c') ) ? '.'  :
360                          '',                          '',
361                          rec('200','e'),                          rec('200','e'),
362          ),          ),
363          'b', suffix(          'b', suffix(
364                  ( rec('200','k') && rec('200','f') ) ? ' / ' :                  ( rec('200','k') && rec('200','f') ) ? ' /' :
365                  ( rec('200','k') && rec('200','c') ) ? '. '  :                  ( rec('200','k') && rec('200','c') ) ? '.'  :
366                          '',                          '',
367                          rec('200','k'),                          rec('200','k'),
368          ),          ),
369          'c', suffix(          'c', suffix(
370                  ( rec('200','f') && rec('200','c') ) ? '. ' :                  ( rec('200','f') && rec('200','c') ) ? '.' :
371                          '',                          '',
372                          rec('200','f'),                          join_with(' ; ',
373                                    rec('200','f'),
374                                    rec('200','g')
375                            )
376            ),
377            '+', suffix('.',
378                    rec('200','c'),
379          ),          ),
         '+', rec('200','c'),  
380  );  );
381    
382  #marc_compose('245',  #marc_compose('245',
# Line 390  marc_compose('245', Line 440  marc_compose('245',
440  #);  #);
441    
442    
   
   
   
443  ### 250  ### 250
444  # zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti  # zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
445    
# Line 405  marc_compose('250', Line 452  marc_compose('250',
452          'b', rec('205','f'),          'b', rec('205','f'),
453  );  );
454    
   
   
455  ### 260  ### 260
456  # ponovljiva potpolja u originalnom redosljedu  # ponovljiva potpolja u originalnom redosljedu
457    
# Line 451  marc('300','e', Line 496  marc('300','e',
496  # brojčani podaci za nakladničku cjelinu  # brojčani podaci za nakladničku cjelinu
497  # ???  # ???
498    
499  ### 440  ### 440 - indikatori
500  # 2.ind. prema jeziku i članu  # 2.ind. prema jeziku i članu, provjeriri
501    
502  marc_indicators('440', ' ', '0');  marc_indicators('440', ' ', '0');
503    
# Line 472  if (   ( rec('225','a') =~ m/^An /) && ( Line 517  if (   ( rec('225','a') =~ m/^An /) && (
517    
518  #_debug(3);  #_debug(3);
519    
520  marc_original_order('440','225');  ### 440
521    ## marc_compose radi samo kad polje ni potpolja nisu ponovljivi
522    
523    
524    marc_template(
525            from => 225, to => 440,
526            subfields_rename => [
527                    'a' => 'a',
528                    'x' => 'x',
529                    'v' => 'v',
530                    'h' => 'n',
531                    'i' => 'p',
532                    'w' => 'v',
533            ],
534            marc_template => [
535                    'a',
536                    'a ;|v',
537                    'a.|p',
538                    'a, |x ;|v.|n,|p ;|v',
539                    'a ;|v.|p ;|v',
540                    'a.|p ;|v',
541                    'v',
542            ],
543    );
544    
545    
546  #marc_compose('440',  #marc_compose('440',
547  #       'a', suffix(  #       'a', suffix(
548  #               rec('225','i') ? '. ' :  #               ( rec('225','v') ) ? ' ;' :
549    #               ( rec('225','w') ) ? ' ; ' :
550    #               ( rec('225','x') ) ? ',' :
551    #               ( rec('225','h') || rec('225','i') ) ? '.' :
552    #                       '.',
553    #                       frec('225','a')
554    #       ),
555    #       'x',suffix(
556    #               ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
557    #                       '',
558    #                       frec('225','x')
559    #       ),
560    #       'v',suffix(
561    #               ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
562    #               ( rec('225','v') && rec('225','w') ) ? ' ; ' :
563  #                       '',  #                       '',
564  #                       rec('225','a'),  #                       frec('225','v')
565  #       ),  #       ),
566  #       'p', suffix(  #       'n',suffix(
567  #               ( ! rec('225','x') && rec('225','i') && rec('225','v') ) ? ' ; ' :  #               ( rec('225','h') && rec('225','i') ) ? ',' :
568  #               ( rec('225','i') && rec('225','x') ) ? ', '  :  #               ( rec('225','h') && rec('225','w') ) ? ' ; ' :
569  #                       '',  #                       '',
570  #                       rec('225','i'),  #                       frec('225','h')
571  #       ),  #       ),
572  #       'x', suffix(  #       'p',suffix(
573  #               ( rec('225','x') && rec('225','v') ) ? ' ; ' :  #               ( rec('225','i') && rec('225','w') ) ? ' ; ' :
574    #               ( rec('225','i') && rec('225','x') ) ? ',' :
575  #                       '',  #                       '',
576  #                       rec('225','x'),  #                       frec('225','i')
577  #       ),  #       ),
578  #       'v', rec('225','v'),  ### 225w treba ici u 440v, na kraj
579    #       '+', join_with(' ; ',
580    #               rec('225','w'),
581    #       )
582  #);  #);
583    
584  ## ovo radi samo kad 225 nije ponovljivo  #marc_original_order('440','225');
585    
586    
587  #if (  #if (
588  #       count( lookup(  #       count( lookup(
# Line 505  marc_original_order('440','225'); Line 592  marc_original_order('440','225');
592  #       ) ) > 1  #       ) ) > 1
593  #) {  #) {
594    
 #marc_compose('440',  
 #       'a', suffix(  
 #               ( rec('225','x') ) ? ', '  :  
 #               ( rec('225','v') || rec('225','w') ) ? ' ; ' :  
 #               ( rec('225','h') || rec('225','i') ) ? '. '  :  
 #                       '',  
 #                       join_with(' / ',  
 #                               join_with(' : ',  
 #                                       join_with(' = ',  
 #                                               rec('225','a'),  
 #                                               rec('225','d'),  
 #                                       ),  
 #                                       rec('225','e'),  
 #                               ),  
 #                               rec('225','f'),  
 #                       ),  
 #       ),  
 #       'x', suffix(  
 #               ( rec('225','x') && rec('225','v') ) ? ' ; ' :  
 #               ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '. ' :  
 #                       '',  
 #                       rec('225','x'),  
 #       ),  
 #       'v', suffix(  
 #               ( rec('225','v') && rec('225','h') || rec('225','i') ) ? '. ' :  
 #                       '',  
 #                       join_with('; ',  
 #                               rec('225','v'),  
 #                       )  
 #       ),  
 #       'n', suffix(  
 #               ( rec('225','h') && rec('225','p') || rec('225','y') ) ? ', ' :  
 #                       '',  
 #                       rec('225','h'),  
 #       ),  
 #       'p', suffix(  
 #               ( rec('225','i') && rec('225','x') ) ? ', ' :  
 #               ( rec('225','i') && rec('225','v') ) ? ' ; ' :  
 #                       '',  
 #                       rec('225','i'),  
 #       ),  
 #       'x', suffix(  
 #               ( rec('225','y') && rec('225','v') ) ? ' ; ' :  
 #                       '',  
 #                       rec('225','y'),  
 #       ),  
 #       'v', rec('225','w'),  
 # );  
 #  
 # marc_compose('440',  
 #       'a', suffix(  
 #               rec('225','k') ? ' ; ' :  
 #                       '',  
 #                       join_with(' / ',  
 #                               rec('225','b'),  
 #                               rec('225','j')  
 #                       ),  
 #       ),  
 #       'v',  
 #               rec('225','k'),  
 # );  
 #  
 #  
 # marc_compose('440',  
 #       'a', suffix(  
 #               rec('225','s') ? ' ; ' :  
 #                       '',  
 #                       join_with(' / ',  
 #                               rec('225','c'),  
 #                               rec('225','r')  
 #                       ),  
 #       ),  
 #       'v',  
 #               rec('225','s'),  
 # );  
   
 #}  
   
 #if ( rec('225','i') ) {  
 #       marc('440','p',  
 #               prefix('. ',  
 #                       rec('225','i')  
 #               ),  
 #       );  
 #}  
 #  
 #if ( rec('225','v') ) {  
 #       marc('440','v',  
 #               prefix(' ; ',  
 #                       rec('225','v'),  
 #               ),  
 #       );  
 #}  
595    
596  #_debug(0);  #_debug(0);
597    
# Line 826  if ($series) { Line 820  if ($series) {
820  } else {  } else {
821    
822  $series = join_with('',  $series = join_with('',
823          config(),          uc( config() ),
824          'LS',          ' LS',
825          rec('000')          rec('000')
826  );  );
827    

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

  ViewVC Help
Powered by ViewVC 1.1.26