local
[webpac2] / conf / normalize / ff-libri.pl
index 68f5432..a940113 100644 (file)
@@ -1,57 +1,94 @@
-#########################################################################
-##                                                                     ##
-## Ova datoteka sadr¾i pravila za generiranje MARC21 ISO 2709 izlazne   ##
-## datoteke. Ulazni format je CDS/ISIS sa zapisima u UNIMARC-u.                ##
-##                                                                     ##      
-##########################################################################
 
-# konvertira se ako postoji polje 200^a
+# Ova datoteka sadr¾i pravila za generiranje MARC21 ISO 2709 izlazne
+# datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u
+# UNIMARC formatu, sa vi¹estrukim odstupanjima od standarda.
 
+
+## lookup rezultat za sabrana djela
+my $sabrana;
+
+
+## konvertira se ako postoji polje 200^a
 if ( rec('200','a') ) {
 
 ### LEADER
-# raspraviti 17,18
-# u nekim knji¾nicama koristi se 999a i 999b, a u nekima samo 999
 
-if ( rec('999') && first(rec('999')) =~ m/(pregledan|P)/i) {
+## LDR 05 - c = pregledan ; n = new
+## provjeriti za svaku bazu koje polje koristi
+## 999^aP - SFM
+
+if ( rec('999','a') && rec('999','a') =~ m/(pregledan|P)/i) {
        marc_leader('05','c');
 } else {
        marc_leader('05','n');
 }
 
-# moguæa je i oznaka "m" u 06 - odrediti kriterije
+## LDR 06 - a - language material 
+
        marc_leader('06','a');
-       marc_leader('07','m');
-       marc_leader('18','i');
 
-# pojasniti upotrebu 19 lidera!
+## LDR 07 - m - Monograph/item
 
-if ( rec('230') ) {
-       marc_leader('19','r');
+if ( config() =~ m/fffi/ ) { 
+       $sabrana = 
+               lookup(
+                       sub{ rec('A') },
+                       'fffi','sabrana',
+                       sub { rec('B') },
+                       sub { rec('000') }
+               );
+}
+
+if ( ! $sabrana ) {
+       marc_leader('07','m');
+} else {
+       marc_leader('07','c');
 }
 
-### 001 - Voyager
+## LDR 17 - Encoding level ; 7 - minimal level
+       marc_leader('17','7');
 
-### 003
-# Pojasniti upotrebu polja
+## LDR 18 - i - isbd 
+       marc_leader('18','i');
 
-### 007
-# pojasniti upotrebu polja
+## LDR 19
+# # - Not specified or not applicable; a - Set; b - Part with independent title; c - Part with dependent title 
 
-marc_fixed('007',00,'ta');
+#if ( ( ! $sabrana ) && ( rec('230') || rec('231') || rec('232') || rec('233') ) ) { 
+#      marc_leader('19','a');
+#}
+
+if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) { 
+       marc_leader('19','a');
+}
 
-### 008
-# ¹to zapisati u polje kad datum nije poznat?
+### 008 - All materials
+## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
+## provjereno: fi
 
-if ( rec('994','c') ) {
+if ( rec('994','c') =~ m/\d{8}/ ) {
        marc_fixed('008','00',
                regex('s/^\d\d//',
                        rec('994','c')
                ),
        );
-} else {
+} elsif ( rec('994','c') =~ m/\d{6}/ ) {
+       marc_fixed('008', 00,
+               regex('s/^\d\d//',
+                       rec('994','c')
+               ),
+       );
+       marc_fixed('008', '04',
+               '01'
+       );
+} elsif ( rec('994','c') =~ m/\d{4}/ ) {
        marc_fixed('008', 00,
-               '000101'
+               regex('s/^\d\d//',
+                       rec('994','c')
+               ),
+       );
+       marc_fixed('008', '02',
+               '0101'
        );
 }
 
@@ -62,98 +99,236 @@ if ( rec('994','c') ) {
 #)
 #);
 
+## 008 06 - Type of date/Publication status
+
+## 008 07-10 - Date 1 - 
+## srediti sve moguæe oznake za godine (06)
+## 210d kroz modify postaje 210c
+
+if ( rec('210','c') ) {
+       my $d1 = '';
+       my $d2 = '';
+       if ( rec('210','c') =~ m/(\?)/ ) {
+               marc_fixed('008','06','q');
+               if ( rec('210','c') =~ m/(\d{2})(--|__)/ ) {
+                       $d1 = $1.'uu';
+               } 
+               if ( rec('210','c') =~ m/(\d{3})(-|_)/ ) {
+                       $d1 = $1.'u';
+               }
+               if ( rec('210','c') =~ m/(\d{4})/ ) {
+                       $d1 = $1;
+               }
+       } elsif ( rec('210','c') =~ m/(\d{4})-/ ) {
+               if ( $sabrana ) { 
+                       marc_fixed('008','06','i');
+               } else {
+                       marc_fixed('008','06','m');
+               }
+               if ( rec('210','c') =~ m/(\d{4})-/ ) {
+                       $d1 = $1;
+                       $d2 = '9999';
+               }
+               if ( rec('210','c') =~ m/-(\d{4})/ ) {
+                       $d2 = $1;
+               }
+       } else {
+               marc_fixed('008','06','s');
+               if ( rec('210','c') =~ m/(\d{4})/ ) {
+                       $d1 = $1;
+               }
+       }
+
+       marc_fixed('008','07',$d1);             # 07-10 - Date 1
+       marc_fixed('008','11',$d2);             # 07-10 - Date 1
+
+} else {
+       marc_fixed('008','06','n');             # 06 - n = unknown date
+       marc_fixed('008','07','uuuu');
+}
+
+
+## 008 11-14 - Date 2 
+
+## 008 15-17 - Place of publication, production, or execution - ¹to ako nema 102?
+## raspraviti
+
+marc_fixed('008','15','xx');
+
+#marc_fixed('008','15', 
+#      lc ( rec('102') ) 
+#);
+
+#my $zemlja = 
+#      lookup(
+#              sub { rec('B') },
+#              'kodovi','zemlje',
+#              sub { rec('A') },
+#              sub { 
+#                      regex('s/[\s;:]/g',
+#                              rec('210','a') 
+#                      )
+#              },
+#      );
+
+
+## 008 35-37 - Language
 marc_fixed('008','35',
-       first( lc(rec('101')) )
+       # first( lc(rec('101')) )               
+       lc( frec('101'))                
 );
+                                       
+## 008 38 - Modified record - razjasniti
+marc_fixed('008','38','|');            
 
+## 008 39 - Cataloging source - d (other)
+marc_fixed('008','39','d');            
 
-### 020
-# postoji modify -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (sfb)
+### 008 - Books - raspraviti upotrebu ovih polja
+## 008 18-21 - Illustrations
+if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
+       marc_fixed('008','18','a')
+}
 
-marc('020','a',
-       regex('s/ ISBN //g',
-               rec('10')
-       )
-);
+## 008 22 - Target audience
+marc_fixed('008','22','|');
+
+## 008 23 - Form of item
+
+## 008 24-27 - Nature of contents
+marc_fixed('008','24','||||');
+
+## 008 28 - Government publication
+marc_fixed('008','28','|');
+
+## 008 29 - Conference publication
+marc_fixed('008','29','|');
 
+## 008 30 - Festschrift
+marc_fixed('008','30','|');
 
-### 035$6
-# Privemeno koristimo 035$6 umjesto 035$9, zato ¹to marclint prijavljuje 9 kao gre¹ku.
-# marc 035a - System Number - Voyagerov ID (001) 
-# polje 035$9 mo¾e sadr¾avati slova i razmake
+## 008 31 - Index
+marc_fixed('008','31','|');
 
-marc('035','6',
+## 008 32 - Undefined
+## 008 33 - Literary form
+marc_fixed('008','33','|');
+
+## 008 34 - Biography
+marc_fixed('008','34','|');
+
+### 020
+## modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
+
+if ( frec('10') ne ( frec('290') ) ) {
+       if ( rec('10','a') !~ /pogre/ ) {
+               marc('020','a', 
+                       # isbn_13(
+                               regex('s/\s\s/ /g',
+                               # regex('s/\(\d\)\(/$1 \(//g',
+                                       rec('10','a')
+                               )
+                       # )
+               ); 
+       }
+       if ( rec('10','a') =~ /pogre/ ) {
+               marc('020','z',
+                       regex('s/\s\s/ /g',
+                               rec('10','a')
+                       )
+               );
+       }
+       marc('020','z',
+               rec('10','z')
+       );
+}
+
+#warn( 
+#      dump(
+#              frec('10')
+#      ),
+#);
+
+### 035$
+## marc 035a - System Number 
+## polje mo¾e sadr¾avati slova i razmake, problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu
+
+marc('035','a',
 join_with('',
-#              config('input normalize path'),
-#              config('name'),
-               config(),
-               ' L',
-#              config('input name'),
-#              id(),
-#              rec('994','a'),
-               rec('000')
+       # config('input normalize path'),
+       # config('name'),
+       'HR-ZaFF ',
+       config(),
+       'L-',
+       # config('input name'),
+       # id(),
+       # rec('994','a'),
+       rec('000')
        )
 );
 
 ### 040
-# za sve je isti
-# treba utvrditi toènu oznaku za ustanovu
+## za sve je isti
 
 marc('040','a',
-       'HR FFZG'
+       'HR-ZaFF'
 );
-
 marc('040','b',
        'hrv'
 );
-
+marc('040','c',
+       'HR-ZaFF'
+);
 marc('040','e',
-       'HR PPIAK'
+       'ppiak'
 );
 
-
-### 041
-
-# indikatori
-#
-# pretpostavke o indikatorima:
-# 
-# 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
-# (Da li je napomena uvijek pisana?)
-#
-# 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
-#
-# 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
-# (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
-# pr. 821.111-2=163.42 je prijevod engleske drame na HR. 
-# to ima samo za knji¾evna djela, eseje.... 
-# ????
-
-
-#if ( rec('675') =~ m/\d=\d/ ) {
-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')) ) {
+### 041 - indikatori
+## pretpostavke o indikatorima
+## 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
+## (Da li je napomena uvijek pisana?)
+## 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
+## 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
+## (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
+## pr. 821.111-2=163.42 je prijevod engleske drame na HR. 
+## to ima samo za knji¾evna djela, eseje.... 
+
+#if ( rec('675') =~ m/\d=\d/ ) ?
+
+if ( 
+       grep( m/prijevod/i, rec('300') ) 
+       || grep( m/nasl.*izv/i, rec('300') ) 
+#      ( frec('300') =~ m/Prijevod/ )
+#      || ( rec('300') =~ m/izvorni stvarni naslov/i )
+#      || ( rec('300') =~ m/naslov izvornika/i )
+#      grep( m/[prijevod|stvarni\snaslov]/i, rec('300') ) 
+) {
        marc_indicators('041', 1, ' ');
-} else {
+       marc_repeatable_subfield('041','a',
+               map { lc($_) } rec('101')
+       );
+} elsif ( 
+       count( rec('101') ) > 1 
+) {
        marc_indicators('041', 0, ' ');
+       marc_repeatable_subfield('041','a',
+               map { lc($_) } rec('101')
+       );
 }
 
-
-### 041
-# ponovljivo polje konvertira se u ponovljivo potpolje
-
-#_debug(2);
-
-marc_repeatable_subfield('041','a',
-       rec('101')
-);
+       ### 041
+       ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
+       ## polje se koristi kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu
+       #_debug(2);
 
 #_debug(0);
 
 ### 044
-
+## kako dobiti zemlju izdavanja?
 
 ### 080
-# 675 podpolja b, c, d ... - ¹to s njima ???
+## 675 podpolja b, c, d ... - ¹to s njima? - provjeriti za svaku bazu
+## fi: abcd
 
 marc('080','a',
        rec('675','a')
@@ -173,17 +348,16 @@ marc('080','a',
 
 
 ### 084 - other classification (R)
-# NSK ga koristi za struènu oznaku NSK iz polja 681
-# NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
-# polje 686 koristi FFPS. jo¹ netko?
+## NSK ga koristi za struènu oznaku NSK iz polja 681
+## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
+## polje 686 koristi FFPS. jo¹ netko?
 
 marc('084','a',
        rec('686')
 );
 
-### 100
-
-# I1 = 0 ako je pseudonim (ima 700a, nema 700b)
+### 100 
+## I1 = 0 ako je pseudonim (ima 700a, nema 700b)
 
 if ( rec('700','a') && ! rec('700','b') ) {
        marc_indicators('100', 0, ' ');
@@ -198,11 +372,13 @@ marc('100','a',
        )
 );
 
+### formalna odrednica - iz 503 u 110, i1=0, i2=1
 
 ### 111 i 110
-# provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
-# ovo vrijedi za FFSFB
+## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
+## popraviti interpunkciju
 
+# ovo vrijedi za FFSFB
 if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
 
 marc_indicators('111', 2, ' ');
@@ -233,269 +409,401 @@ marc_compose('111',
        ),
        '+',')',
 );
-
-
 } else {
-       
-marc_indicators('110', 2, ' ');
-
-marc('110','a',
-       rec('710','a')
-);
-
-marc('110','b',
-       rec('710','b')
-);
-
-       if ( rec('710','c') ) {
-       marc('110','c',
-               surround('(', ')', rec('710','c'))
+       marc_indicators('110', 2, ' ');
+       marc('110','a',
+               rec('710','a')
        );
+       marc('110','b',
+               rec('710','b')
+       );
+       if ( rec('710','c') ) {
+               marc('110','c',
+                       surround('(', ')', rec('710','c'))
+               );
        }
-
 }
 
-
-### 245
-
-# indikatori
-#
-# i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
-# i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
-# treba nadopuniti i dati podatke na verifikaciju knji¾nièarima
+### 245 indikatori
+## i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
+## i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
+## treba provjeriti
 
 my $i1;
 
 if ( rec('700') || rec('710') ) {
        $i1 = 1;
-
 } else {
        $i1 = 0;
 }
        
 marc_indicators('245', $i1, 0);
 
-if (   ( rec('200','a') =~ m/^Die /) || 
-       ( rec('200','a') =~ m/^Das /) || 
-       ( rec('200','a') =~ m/^Der /) || 
-       ( rec('200','a') =~ m/^The /) ) {
+if ( rec('200','a') =~ m/^Einen / ) {
+               marc_indicators('245', $i1, 6);
+} 
+if ( rec('200','a') =~ m/^Eine / ) {
+               marc_indicators('245', $i1, 5);
+} 
+if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|Los|The) / ) {
                marc_indicators('245', $i1, 4);
 } 
-
-if (   ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
+if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Lo|Il) / ) { 
+               marc_indicators('245', $i1, 3);
+} 
+if ( ( rec('101') =~ m/ENG/ ) && ( rec('200','a') =~ m/^A / ) ) { 
                marc_indicators('245', $i1, 2);
 } 
-
-if (   ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
+if ( rec('200','a') =~ m/^L / ) { 
+               marc_indicators('245', $i1, 2);
+} 
+if ( rec('200','a') =~ m/^L'/ ) { 
                marc_indicators('245', $i1, 2);
 } 
 
-# podpolja i interpunkcije pripremljeni u modify
+
+### 245
+## postoji modify
+## da li treba makivati razmake u inicijalima?
 
 #_debug(3);
 
 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'),
+                       join_with(' ; ',
+                               regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
+                                       rec('200','f'),
+                               ),
+                               regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
+                                       rec('200','g')
+                               )
+                       )
+       ),
+       ## append to last subfield
+       '+', suffix('.',
+               join_with(' / ',
+                       rec('200','c'),
+                       rec('200','x')
+               )
        ),
-       '+', rec('200','c'),
 );
 
-#marc_compose('245',
-#      'a', suffix(
-#              ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' :  
-#              ( ! rec('200','p') && rec('200','c') ) ? ' : '  : 
-#                      '', 
-#                      rec('200','a'),
-#      ),
-#      'b', suffix(
-#              ( rec('200','p') && rec('200','f') ) ? ' / ' : 
-#              ( rec('200','p') && rec('200','c') ) ? '. '  : 
-#                      '',
-#                      rec('200','p'),
-#      ),
-#      'c', suffix(
-#              ( rec('200','f') && rec('200','c') ) ? '. ' :
-#                      '',
-#                      rec('200','f'),
-#      ),
-#      '+', rec('200','c'),
-#);
-
 #_debug(0);
 
-#marc_compose('245',
-#      'a', suffix(
-#              rec('200','b') ? '. '   :
-#              rec('200','k') ? ' ; '  :
-#              rec('200','d') ? ' = '  :
-#              rec('200','e') ? ' : '  :
-#              rec('200','f') ? ' / '  :
-#                               '.',
-#                      rec('200','a')
-#      ),
-##     'h', rec('200','b'),
-#      'b', suffix(
-#              ( rec('200','k') && rec('200','f') ) ? ' / ' :
-#                                   ' ',
-#                      join_with(' ; ',
-#                              rec('200','k'),
-#                      ),
-#      ),
-#      'b', suffix(
-#              ( rec('200','d') && rec('200','f') ) ? ' / ' :
-#                                                     ' ',
-#                              rec('200','d'), 
-#      ),
-#      'b', suffix(
-#              ( rec('200','e') && rec('200','f') ) ? ' / ' :
-#                                                     ' ',
-#                      join_with(' : ',
-#                              rec('200','e'),
-#                      ),
-#      ),
-#      'c', rec('200','f'),
-## append to last subfield
-#      '+', prefix('. ', 
-#              rec('200','c') 
-#      ),
-#);
-
-
-
+### 246
+## i1=1 ukoliko pravilo nalaze napomenu, ali napomenu necemo pisati ponovo u 500
+## i1=3 ako pravlo na nalze napomenu
+## vidi na wiki
+## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
 
+marc_indicators('246', 3, ' ');
+marc('246','a',
+       rec('532')
+);
 
 ### 250
-# zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
+## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
 
 marc_compose('250',
        'a',suffix(
                rec('205','f') ? ' / ' : 
-                       ' ',
+                       '',
                        rec('205','a')
        ),
        'b', rec('205','f'),
 );
 
-
-
 ### 260
-# ponovljiva potpolja u originalnom redosljedu
+## ponovljiva potpolja u originalnom redosljedu - priprema u modify
 
-marc_original_order('260', '210');
+       marc_original_order('260', '210');
 
 
 ### 300
-# urediti interpunkcije za sve kombinacije
+## urediti interpunkcije za sve kombinacije
 
 marc('300','a',
        suffix(
                rec('215','c') ? ' : ' :
                rec('215','d') ? ' ; ' :
                rec('215','e') ? ' + ' :
-                                       ' ',
+                       '',
                        rec('215','a')
        )
 );
-
 marc('300','b',
        suffix(
                ( rec('215','c') && rec('215','d') ) ? ' ; ' :
                ( rec('215','c') && rec('215','e') ) ? ' + ' :
-                                                      ' ',
+                       '',
                        rec('215','c')
        )
 );
-
 marc('300','c',
        suffix(
                rec('215','e') ? ' + ' :
-                                ' ',
+                       '',
                        rec('215','d')
        )
 );
-
 marc('300','e',
        rec('215','e')
 );
 
-### 362
-# brojèani podaci za nakladnièku cjelinu
-# ???
+### 362 - brojèani podaci za nakladnièku cjelinu - to mi nemamo, polje se koristi samo za èasopise
+
+
+# if ( ! rec('225','z')  ) {
 
-### 440
-# 2.ind. prema jeziku i èlanu
+# ako je naslov nakladnièke cjeline slo¾en, podatak se zapisuje u 490, s pripadajuæim 830
+
+#if (  frec('225','a') =~ m/[\/=:]/  ) {
+#
+##_debug(3);
+#
+#### 490
+### 490: Subfield _p is not allowed. 
+#
+#marc_indicators('490','0',' ');
+#
+#marc_template(
+#      from => 225, to => 490,
+#      subfields_rename => [
+#              'a' => 'a',
+#              'x' => 'x',
+#              'v' => 'v',
+#              'h' => 'n',
+#              'i' => 'p',
+#              'w' => 'v',
+#      ],
+#      isis_template => [
+#              'a',
+#              'a ;|v',
+#              'a,|x ;|v',
+#              'a,|x ;|w',
+#              'a,|x.|h ;|w',
+#              'a.|h,|i ;|v',
+#              'a ;|v.|i',
+#              'a.|i ;|w',
+#              'a,|x',
+#              # greske:
+#              'i ;|v',
+#              'i'
+#      ],
+#);
+
+#marc_template(
+#      from => 225, to => 490,
+#        from => "{ z => 1 }",
+#          to => "{ a => 1 }",
+#
+#      marc_template => [
+#              'a',
+#      ],
+#);
+
+# marc_indicators('830',' ','0');
+# i2 ovisi èlanu - popraviti 
+#
+# marc('830','a',
+#      regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
+#              rec('225','a')
+#      )
+# );
+
+
+#} else {
+
+### 440 - indikatori
+## 2.ind. prema jeziku i èlanu, uskladiti s 245
 
 marc_indicators('440', ' ', '0');
 
-if (   ( rec('225','a') =~ m/^Die /) || 
-       ( rec('225','a') =~ m/^Das /) || 
-       ( rec('225','a') =~ m/^The /) ) {
+if ( rec('225','a') =~ m/^Einen / ) {
+               marc_indicators('440', ' ', 6);
+} 
+
+if ( rec('225','a') =~ m/^Eine / ) {
+               marc_indicators('440', ' ', 5);
+} 
+
+if ( rec('225','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
                marc_indicators('440', ' ', 4);
 } 
 
-if (   ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
-               marc_indicators('440', ' ', 2);
+if ( rec('225','a') =~ m/^(Um|Un|An|La|Le|Il) / ) { 
+               marc_indicators('440', ' ', 3);
 } 
 
-if (   ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
+if ( rec('225','a') =~ m/^(A|L') / ) { 
                marc_indicators('440', ' ', 2);
 } 
 
-#_debug(3);
+## 440v nije ponovljivo
+
+marc_template(
+       from => 225, to => 440,
+       subfields_rename => [
+               'a' => 'a',
+               'x' => 'x',
+               'v' => 'v',
+               'h' => 'n',
+               'i' => 'p',
+               'w' => 'v',
+       ],
+       isis_template => [
+               'a',
+               'a,|x',
+               'a,|x ;|v',
+               'a,|x.|i',
+               'a,|x.|i ;|w',
+               'a,|x.|h ;|w',
+               'a,|x.|h,|i ;|w',
+               'a,|x ;|v.|h ;|w',
+               'a,|x ;|v.|h,|i ;|w',
+               'a ;|v',
+               'a ;|v.|i',
+               'a ;|v.|h,|i',
+               'a ;|w',
+               'a ;|v.|i ;|w',
+               'a ;|v.|h,|i ;|w',
+               'a ;|v.|h ;|w',
+               'a.|h,|i',
+               'a.|h,|i ;|w',
+               'a.|i',
+               'a.|i ;|w',
+               # gre¹ke:
+               'a ;|v ;|w',
+               'a.|h',
+               'a.|h ;|w',
+               'a.|h ;|v',
+               'h,|i',
+               'h ;|v',
+               'i ;|w',
+               'v',    
+               'w',
+       ],
+);
+
+#}
+
+#marc_template(
+#      from => 225, to => 490,
+#      subfields_rename => [
+#              'a' => 'a',
+#              'x' => 'x',
+#              'v' => 'v',
+#              'h' => 'n',
+#              'i' => 'p',
+#              'w' => 'v',
+#      ],
+#      isis_template => [
+#              'a.|h,|i ;|w',
+#              'a.|h.|w',
+#              'a.|i ;|w',
+#              'a ;|v.|i',
+#              'a ;|v.|i ;|w',
+#              'a ;|v.|h,|i ;|w',
+#              'a ;|v.|h ;|w',
+#              'a ;|v ;|w',
+#              #mozda greska:
+#              'a ;|v,|x ;|w',
+#              'a ;|v,|x.|p',
+#              'a,|x ;|v',
+#              'a,|x.|p ;|w',
+#      ],
+#        from => "{ a => 1, i => 1, w => 1, \"x\" => 1 }",
+#          to => "{ a => 1, p => 1, v => 1, \"x\" => 1 }",
+#
+#      marc_template => [
+#              'a',
+#              'a ;|v',
+#              'a,|x',
+#              'a.|n',         # mozda greska 
+#              'a.|n,|p',
+#              'a.|p',
+#              'a ;|v.|n',
+#              'a ;|v.|n,|p',  # mozda greska
+#              'n,|p',
+#              'n ;|v',        # mozda greska
+#              'p ;|v',
+#              'v',
+#              'x',
+#              'x ;|v'         # greska
+#      ],
+#);
 
-marc_original_order('440','225');
 
+## marc_compose za 440 radi samo kad polje ni potpolja nisu ponovljiva. ne zapisuje dobro drugo pojavljivanje ^v, tj. ^v iza ^p (iz 225^w)
 
 #marc_compose('440',
 #      'a', suffix(
-#              rec('225','i') ? '. ' :
+#              ( rec('225','v') ) ? ' ;' :
+#              ( rec('225','w') ) ? ' ; ' :
+#              ( rec('225','x') ) ? ',' :
+#              ( rec('225','h') || rec('225','i') ) ? '.' :
+#                      '.',
+#                      frec('225','a')
+#      ),
+#      'x',suffix(
+#              ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
 #                      '',
-#                      rec('225','a'),
+#                      frec('225','x')
 #      ),
-#      'p', suffix(
-#              ( ! rec('225','x') && rec('225','i') && rec('225','v') ) ? ' ; ' :
-#              ( rec('225','i') && rec('225','x') ) ? ', '  :
+#      'v',suffix(
+#              ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
+#              ( rec('225','v') && rec('225','w') ) ? ' ; ' :
 #                      '',
-#                      rec('225','i'),
+#                      frec('225','v')
 #      ),
-#      'x', suffix(
-#              ( rec('225','x') && rec('225','v') ) ? ' ; ' :
+#      'n',suffix(
+#              ( rec('225','h') && rec('225','i') ) ? ',' :
+#              ( rec('225','h') && rec('225','w') ) ? ' ; ' :
 #                      '',
-#                      rec('225','x'),
+#                      frec('225','h')
 #      ),
-#      'v', rec('225','v'),
+#      'p',suffix(
+#              ( rec('225','i') && rec('225','w') ) ? ' ; ' :
+#              ( rec('225','i') && rec('225','x') ) ? ',' :
+#                      '',
+#                      frec('225','i')
+#      ),
+## 225w treba ici u 440v, na kraj
+#      '+', join_with(' ; ',
+#              rec('225','w'),
+#      )
 #);
 
-## ovo radi samo kad 225 nije ponovljivo
+#marc_original_order('440','225');
+
 
 #if (
 #      count( lookup(
@@ -505,104 +813,11 @@ marc_original_order('440','225');
 #      ) ) > 1
 #) {
 
-#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'),
-#              ),
-#      );
-#}
 
 #_debug(0);
 
 
-### 50x
+### 500
 
 marc('500','a',
        rec('300')
@@ -621,7 +836,7 @@ marc('500','a',
 );
 
 ### 502 - bilje¹ka o disertacijama
-# odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
+## odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
 
 ### 504
 
@@ -629,15 +844,13 @@ marc('504','a',
        rec('320')
 );
 
-## napomene uz konverziju polja 327 (sadrzaj):
-# NSK konvertira 327 (NP) u 501 (R)
-# u LOC konv. tablici stoji 327 (NP) u 505 (NR)
-# standard i validacije dopu¹taju 501 (R) i 505 (R)
-
-## 505
-# FFPS 327 - sadrzaj
-
-if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
+### 505
+## FFPS 327 - sadrzaj
+## NSK konvertira 327 (NP) u 501 (R)
+## u LOC konv. tablici stoji 327 (NP) u 505 (NR)
+## standard i validacije dopu¹taju 501 (R) i 505 (R)
+## za svaku bazu posebno provjeriti sta je u poljima 327 i 330
+if ( config() =~ m/ffps|fftu/ ) {
        marc_indicators('505', '0', ' ');
        marc('505','a',
                regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
@@ -655,14 +868,8 @@ if ( config() =~ m/ffan/ ) {
 );
 }
 
-
-# NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
-
-
 ### 520
-# mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik?
-
-# FFPS 330 (NP) - sa¾etak
+## NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
 if ( config() =~ m/ffps/ ) { 
        marc('520','a',
                regex('s/[\\r\\n]+/. /g',
@@ -672,7 +879,7 @@ if ( config() =~ m/ffps/ ) {
 }
 
 ### 526 - STUDY PROGRAM INFORMATION NOTE
-# provjeriti za svaku bazu sta je tocno u 996?
+## provjeriti za svaku bazu sta je u 996?
 
 marc_indicators('526', 8, ' ');
 
@@ -686,14 +893,6 @@ marc('538','a',
        rec('337','a')
 );
 
-
-### 246
-
-marc_indicators('246', 1, 3);
-marc('246','a',
-       rec('532')
-);
-
 ### 655
 
 marc_indicators('655', ' ', 4);
@@ -702,8 +901,9 @@ marc('655','a',
 );
 
 ### 653
+## da li ponovljivo polje ili potpolje, pogledati u Koha tags
 
-marc_indicators('653', 0, ' ');
+marc_indicators('653', ' ', ' ');
 marc('653','a',
        rec('610')
 );
@@ -712,69 +912,47 @@ marc('653','a',
 
 
 ### 700
+## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !!
+## ako ima samo podpolje a onda je pseudonim - popraviti indikator
 
 marc_indicators('700', 1, ' ');
 
-if ( rec('701') ) { 
-marc('700','4', 
-       'aut'
-); 
-}
-
 marc('700','a',
-       join_with(', ',
-               rec('701', 'a'),
-               rec('701', 'b')
-       )
+       rec('701', 'a'),
 );
-
 marc('700','a',
        join_with(', ',
                rec('701', 'c'),
                rec('701', 'd')
        )
 );
-
 marc('700','a',
        join_with(', ',
                rec('701', 'e'),
                rec('701', 'f')
        )
 );
-
 marc('700','a',
        join_with(', ',
                rec('701', 'g'),
                rec('701', 'h')
        )
 );
-
-
 marc('700','a',
-       join_with(', ',
                rec('702', 'a'),
-               rec('702', 'b')
-       )
 );
-
-
-# ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
-
-
 marc('700','a',
        join_with(', ',
                rec('702','c'),
                rec('702','d')
        )
 );
-
 marc('700','a',
        join_with(', ',
                rec('702','e'),
                rec('702','f')
        )
 );
-
 marc('700','a',
        join_with(', ',
                rec('702','g'),
@@ -785,7 +963,7 @@ marc('700','a',
 #_debug(0);
 
 
-### 740
+### 740 - sta s tim?
 
 marc_indicators('740', 0, ' ');
 
@@ -806,51 +984,57 @@ marc('740','a',
 
 # };
 
-# generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
+# -------------------------------------------------------------------
+### 760 w
+## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
 
-if (
-       rec('225','a')  # da li je nakladnièka cjelina?
-) {
-
-my $series_key =
-join_with('',
-       rec('225','a'),
-       rec('210','a'),
-       rec('210','b'),
-);
-
-my $series = get( $series_key );
-
-if ($series) {
-       warn "nije novi";
-} else {
-
-$series = join_with('',
-       config(),
-       'LS',
-       rec('000')
-);
-
-set( $series_key => $series );
-
-} # $series
-} # nakladnièka cjelina
-
-my $series_key = join_with('',
-       rec('225','a'),
-       rec('210','a'),
-       rec('210','b'),
-);
+#if (
+#      rec('225','a')  # da li je nakladnièka cjelina?
+#) {
 
-if ($series_key) {
+#my $series_key =
+#join_with('',
+#      rec('225','a'),
+#      rec('210','a'),
+#      rec('210','b'),
+#);
+#
+#my $series = get( $series_key );
+#
+#if ($series) {
+#      warn "nije novi";
+#} else {
+#
+#$series = join_with('',
+#      uc( config() ),
+#      ' LS',
+#      rec('000')
+#);
+#
+#set( $series_key => $series );
+#
+#} # $series
+#} # nakladnièka cjelina
+#
+#my $series_key = join_with('',
+#      rec('225','a'),
+#      rec('210','a'),
+#      rec('210','b'),
+#);
+#
+#if ($series_key) {
+#
+#      marc_indicators('760', 0, ' ');
+#      
+#      marc('760','t',
+#              rec('225','a')
+#      );
+#      marc('760','w',
+#              get( $series_key )
+#      );
+#}
 
-       marc_indicators('760', 0, ' ');
-       
-       marc('760','w',
-               get( $series_key )
-       );
-}
-### testing
+# ## testing
 #
 # my $dup_key = join_with('',
 #      rec('200','a'),
@@ -869,36 +1053,90 @@ if ($series_key) {
 #      rec('452','1')
 # );
 #
+# -------------------------------------------------------------------
 
+### 774 - Constituent Item Entry - to bi trebali koristiti ali ne koristimo jer NSK to koristi za ne¹to drugo
+### 787 - Nonspecific Relationship Entry 
 
-### 852 - lokacija
-
-marc_indicators('852', 4, ' ');
-
-marc('852','j',
-       join_with(' ',
-               rec('990')
-       )
-);
+#marc_indicators('787','0',' ');
+#
+#marc_compose('787',
+#      'g', rec('230','v'),
+#      't', rec('230','a'),
+#      'b', rec('240','a'),
+#      'd', rec('250','a'),
+#      'd', rec('250','d'),
+#      'h', rec('260','a'),
+#      'k', rec('270','a'),
+#      'n', join_with('. - ',
+#              rec('280'),
+#      ),
+#      'x', join_with(', ',
+#              rec('290'),
+#      )
+#);
+#marc_compose('787',
+#      'g', rec('231','v'),
+#      't', rec('231','a'),
+#      'b', rec('241','a'),
+#      'd', rec('251','a'),
+#      'd', rec('251','d'),
+#      'h', rec('261','a'),
+#      'k', rec('271','a'),
+#      'n', join_with('. - ',
+#              rec('281'),
+#      ),
+#      'x', join_with(', ',
+#              rec('291'),
+#      )
+#);
+#marc_compose('787',
+#      'g', rec('232','v'),
+#      't', rec('232','a'),
+#      'b', rec('242','a'),
+#      'd', rec('252','a'),
+#      'd', rec('252','d'),
+#      'h', rec('262','a'),
+#      'k', rec('272','a'),
+#      'n', join_with('. - ',
+#              rec('282'),
+#      ),
+#      'x', join_with(', ',
+#              rec('292'),
+#      )
+#);
+#marc_compose('787',
+#      'g', rec('233','v'),
+#      't', rec('233','a'),
+#      'b', rec('243','a'),
+#      'd', rec('253','a'),
+#      'h', rec('263','a'),
+#      'k', rec('273','a'),
+#      'n', join_with('. - ',
+#              rec('283'),
+#      ),
+#      'x', join_with(', ',
+#              rec('293'),
+#      )
+#);
+#
+### 852 - ne koristimo, koristimo  942 i 952
 
 ### 876 - item information - basic bibliographic unit
-
-marc('876','a',
-       rec('991'),
-);
+#marc('876','a',
+#      rec('991','t'),
+#);
 
 ### 886 - former marc
+# inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba
 
 marc_indicators('886', 2, ' ');
-
 marc('886','2',
        'ffmarc'
 );
-
 marc('886','a',
        '994'
 );
-
 marc('886','b',
        join_with(''.
                '##^a',
@@ -913,5 +1151,246 @@ marc('886','b',
        )
 );
 
+### KOHA items
+
+marc('942','b',
+       'LIB'
+);
+
+
+if ( grep( m/Posebni otisak/, rec('300') ) ) {
+       marc('942','c',
+               'SEP'
+       );
+} else {
+       marc('942','c',
+               'KNJ'
+       );
+}
+
+marc('942','d',
+       join_with(' | ',
+               rec('990')
+       )
+);     
 
+if ( config() =~ m/ffan/ ) {
+       my $novasig1 =
+               lookup(
+                       sub { rec('C') },
+                       'ffan','mapirano',
+                       sub { rec('B') },
+                       sub { rec('990') }
+               );
+       my $novasig2 = 
+               lookup(
+                       sub { rec('C') . ' ' . rec('D') },
+                       'ffan','starasig',
+                       sub { rec('A') },
+                       sub { rec('000') },
+               );
+       marc('942','h',
+               $novasig1
+       );
+       marc('942','i',
+               $novasig2
+       );
+}
+
+
+if ( config() =~ m/ffsf|ffpo|fffi/ ) {
+       my $sig1 = 
+               lookup(
+                       sub { rec('C') },
+                       'fffi','signature',
+                       sub { rec('B') },
+                       sub { frec('990') },
+               );
+       if ( rec('700','a') ) {
+               marc('942','h',
+                       $sig1,
+               );
+               if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('700','a') )
+                                       ),
+                                       regex('s/^.{4}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('700','a') )
+                                       ),
+                                       regex('s/^.{3}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^Eine / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('700','a') )
+                                       ),
+                                       regex('s/^.{5}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^Einen / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('700','a') )
+                                       ),
+                                       regex('s/^.{6}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^(A|L) / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('700','a') )
+                                       ),
+                                       regex('s/^.{2}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } else {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('700','a') )
+                                       ),
+                                       regex('s/(^.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               }
+       } elsif ( rec('710','a') ) {
+               marc('942','h',
+                       $sig1,
+               );
+               if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('710','a') )
+                                       ),
+                                       regex('s/^.{4}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('710','a') )
+                                       ),
+                                       regex('s/^.{3}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^Eine / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('710','a') )
+                                       ),
+                                       regex('s/^.{5}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^Einen / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('710','a') )
+                                       ),
+                                       regex('s/^.{6}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } elsif ( rec('200','a') =~ m/^(A|L) / ) {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('710','a') )
+                                       ),
+                                       regex('s/^.{2}(.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               } else {
+                       marc('942','i',
+                               join_with(' ',
+                                       regex('s/(^.{3}).*/$1/',
+                                               uc ( rec('710','a') )
+                                       ),
+                                       regex('s/(^.{1}).*/$1/',
+                                               lc ( rec('200','a') )
+                                       )
+                               )
+                       );
+               }
+       } elsif ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
+               marc('942','h',
+                       $sig1,
+               );
+               marc('942','i',
+                       regex('s/^.{4}(.{3}).*/$1/',
+                               uc ( rec('200','a') )
+                       ),
+               );
+                       
+       } else {
+               marc('942','h',
+                       $sig1,
+               );
+               marc('942','i',
+                       regex('s/(^\w{3}).*/$1/',
+                               uc ( rec('200','a') )
+                       )
+               )
+       }
+} # if config()
+
+if ( ( rec('230') || rec('231') || rec('232') || rec('233') ) ) { 
+       warn "nema primjeraka";
+} else {
+       marc('952','8',
+               rec('991','8')
+       );
+       marc('952','a',
+               rec('991','a')
+       );
+       marc('952','b',
+               rec('991','b')
+       );
+       marc('952','c',
+               rec('991','c'),
+       );
+       marc('952','i',
+               rec('991','i')
+       );
+       marc('952','y',
+               rec('991','y')
+       );
+}
 } # polje 200a
+# } sig