r1551@llin: dpavlin | 2007-11-04 20:05:30 +0100
[webpac2] / conf / normalize / ff-peri.pl
index 2bfc995..9f9bbc2 100644 (file)
@@ -1,11 +1,13 @@
 if ( rec('200','a') ) {
 
 ### LEADER
-# raspraviti 17,18
+## raspraviti 17,18
 
 marc_leader('05','n');         # Record status
 marc_leader('06','a');         # Type of record
 
+## izvuci podatke iz tablice (za po i sf)
+
 if ( rec('225','a') ) {
        marc_leader('07','d');  
 } else {
@@ -14,6 +16,9 @@ if ( rec('225','a') ) {
 
 marc_leader('18','i');         # Descriptive cataloging form
 
+# ako postoji neko od polja 76x-78x - LDR 19 je r, ako ne postoji onda je prazno
+# tematski brojevi imaju vezu u 
+
 if ( rec('225','a') ) {
        marc_leader('19','r');  # Linked record requirement
 }
@@ -23,7 +28,6 @@ if ( rec('225','a') ) {
 ### 007
 marc_fixed('007',00,'ta');
 
-
 ### 008 - All materials
 # ¹to zapisati u polje kad datum nije poznat?
 
@@ -33,39 +37,47 @@ marc_fixed('008','00', '070707');   # 00-05 - Date entered on file
 ## c - Continuing resource currently published
 ## d - Continuing resource ceased publication
 
+my $year = rec('210','c');
+
 if ( rec('210','c') ) {
        marc_fixed('008','06','s');             # 06 - Type of date/Publication status, s = single know date
+       
+#      warn "## year = $year";
 
-       my $year = rec('210','c');
-       warn "## year = $year";
        if ( $year =~ m/^(\d{4})/ ) {
-#      warn "## $1 ##";
+#      warn "## $1 ##\n";
                marc_fixed('008','07',$1);              # 07-10 - Date 1
        }
-               
+
+       if ( $year =~ m/^\d{4}-(\d{4})/ ) {
+#      warn "## $1 ##";
+               marc_fixed('008','11',$1);              # 11-14 - Date 2 
+               marc_fixed('008','06','d');
+       }
+       
 } else {
        marc_fixed('008','06','n');             # 06 - n = unknown date
 }
 
 
-
-# marc_fixed('008','11', ' ');         # 11-14 - Date 2 
-marc_fixed('008','15', 
+marc_fixed('008','15',                 # 15-17 - Place of publication, production, or execution
        lc ( rec('102') ) 
-);                                     # 15-17 - Place of publication, production, or execution
+);
+
+
+
 marc_fixed('008','35',
        first( lc(rec('101')) )         # 35-37 - Language
 );
-marc_fixed('008','38', '|');           # 38 - Modified record
-marc_fixed('008','39','d');            # 39 - Cataloging source
-
+                                       # 38 - Modified record
+                                       # 39 - Cataloging source
 
 ### 008 - Continuing resources
 
 if ( ! rec('225','a') ) {
 
-marc_fixed('008','18', '|');   # 18 - Frequency - ovo treba popuniti iz polja 326
-                               # 19 - Regularity
+marc_fixed('008','18', 'u');   # 18 - Frequency - ovo treba popuniti iz polja 326
+marc_fixed('008','19', 'u');   # 19 - Regularity
                                # 20 - Undefined, ontains a blank (#) or fill character (|)
 
 # za polje 008 21 treba lookup u tablicu:
@@ -92,16 +104,18 @@ marc_fixed('008','21', 'p');       # 21 - Type of continuing resource
 
 ### 022
 
-if ( ! rec('225','a') ) {
+#if ( ! rec('225','a') ) {
        marc('022','a',
                rec('11')
        );
-}
+#}
 
 ### 035$6
 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
 
-marc('035','6',
+my $id;
+
+$id = ( 
        join_with('',
                uc( config() ),
                ' P',
@@ -109,6 +123,7 @@ marc('035','6',
        )
 );
 
+marc('035','6', $id);
 
 ### 040
 # za sve je isti
@@ -152,12 +167,10 @@ marc('080','a',
 );
 
 ### 210 indikatori
-
 # marc_indicators('210', '1',' ');
 
-### 210 
-# pronaæi priladan izvor podataka (nsk baza, issn baza)
-
+### 210 - ABBREVIATED TITLE 
+# pronaæi prikladan izvor podataka (nsk baza, issn baza)
 
 ## iz nsk
 #if ( rec('11') ) {
@@ -196,52 +209,70 @@ marc('222','a',
 #}
 
 ### 245 indikatori
-# generiraju se prema èlanu i jeziku. potrebna naknadna kontrola.
+# generiraju se prema èlanu, trebalo bi mo¾da i prema jeziku (jezika nema uvijek). 
+# potrebna naknadna kontrola
+
+marc_indicators('245', 0, 0);
 
 if (   ( rec('200','a') =~ m/^Die /) || 
        ( rec('200','a') =~ m/^Das /) || 
+       ( rec('200','a') =~ m/^Der /) || 
+       ( rec('200','a') =~ m/^Les /) || 
        ( rec('200','a') =~ m/^The /) ) {
                marc_indicators('245', 0, 4);
-} else {
-       marc_indicators('245', 0, 0);
-}
 
+} 
+
+if (   ( rec('200','a') =~ m/^Un /) || 
+       ( rec('200','a') =~ m/^An /) ||
+       ( rec('200','a') =~ m/^La /) ||
+       ( rec('200','a') =~ m/^Le /) ||
+       ( rec('200','a') =~ m/^Il /) ) {
+               marc_indicators('245', 0, 3);
+} 
+
+if (   ( rec('200','a') =~ m/^A /) || 
+       ( rec('200','a') =~ m/^L'/) ) {
+               marc_indicators('245', 0, 2);
+} 
 
 ### 245
 
 marc_compose('245',
        'a', suffix(
-               ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
-               ( rec('200','d') ) ? ' = ' :
-               ( rec('200','e') ) ? ' : ' :
-               ( rec('200','k') ) ? ' ; ' :
+               ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :  
+               ( rec('200','d') ) ? ' =' :
+               ( rec('200','e') ) ? ' :' :
+               ( rec('200','k') ) ? ' ;' :
                        '', 
                        rec('200','a'),
        ),
        'b', suffix(
-               ( rec('200','d') && rec('200','f') ) ? ' / ' : 
-               ( rec('200','d') && rec('200','c') ) ? '. '  : 
+               ( rec('200','d') && rec('200','f') ) ? ' /' : 
+               ( rec('200','d') && rec('200','c') ) ? '.'  : 
                        '',
                        rec('200','d'),
        ),
        'b', suffix(
-               ( rec('200','e') && rec('200','f') ) ? ' / ' : 
-               ( rec('200','e') && rec('200','c') ) ? '. '  : 
+               ( rec('200','e') && rec('200','f') ) ? ' /' : 
+               ( rec('200','e') && rec('200','c') ) ? '.'  : 
                        '',
                        rec('200','e'),
        ),
        'b', suffix(
-               ( rec('200','k') && rec('200','f') ) ? ' / ' : 
-               ( rec('200','k') && rec('200','c') ) ? '. '  : 
+               ( rec('200','k') && rec('200','f') ) ? ' /' : 
+               ( rec('200','k') && rec('200','c') ) ? '.'  : 
                        '',
                        rec('200','k'),
        ),
        'c', suffix(
-               ( rec('200','f') && rec('200','c') ) ? '. ' :
+               ( rec('200','f') && rec('200','c') ) ? '.' :
                        '',
                        rec('200','f'),
        ),
-       '+', rec('200','c'),
+       '+', suffix('.',
+               rec('200','c'),
+       )
 );
 
 ### 246 inikatori
@@ -345,7 +376,7 @@ marc('300','e',
 );
 
 ### 310 - current stated publication frequency
-# potrebno ujednaèiti, polje 008?
+# potrebno ujednaèiti, koristi se i u polju 008
 
 marc('310','a',
        rec('326')
@@ -414,18 +445,27 @@ marc('490','x',
        rec('225','x')
 );
 
-#if ( rec('225','a') && rec('11') ) {
-#      marc('999','a',
-#              lookup(
-#                      sub { rec('110','a'), },
-#                      'nsk','bbaza',
-#                      sub { rec('011','a') }, 
-#                      sub { rec('11') } 
-#              )
-#      );
-#}
+if ( rec('11') ) {
+       marc('999','a',
+               lookup(
+                       sub { rec('110','a'), },
+                       'nsk','bbaza',
+                       sub { rec('011','a') }, 
+                       sub { rec('11') } 
+               )
+       );
+}
 
 
+#marc('998','a',
+#      lookup(
+#              sub { rec('H') },
+#              'ffsf','xls',
+#              sub { rec('A') },
+#              sub { $id },
+#      ),
+#);
+
 
 ### 5xx
 # koje podatke povuæi iz drugih baza?
@@ -549,11 +589,37 @@ marc('772','t',
        rec('422','a'),
 );
 
+### 773 indikatori
+
+if ( rec('225','a') ) {
+
+marc_indicators('773', 0, ' ');
+
+### 773
+## da li je bitan redoslijed potpolja?
+
+marc('773','w',
+       lookup(
+               sub { rec('000') },
+               'ffsf','peri',
+               sub { rec('200','a') },
+               sub { 
+                       regex('s/ ; //g',
+                               rec('225','a')
+                       )
+               },
+       )
+);
+
+}
+
+
 ### 777 indikatori
 
 marc_indicators('777', 0, ' ');
 
 ### 777
+
 marc('777','t',
        rec('423','a'),
 );
@@ -645,4 +711,4 @@ marc('992','a',
 #      )
 # );
 
-} # 200a
+}# 200a