work on journals database conversion
authorMarijana Glavica <mglavica@ffzg.hr>
Wed, 19 Aug 2009 14:05:30 +0000 (14:05 +0000)
committerMarijana Glavica <mglavica@ffzg.hr>
Wed, 19 Aug 2009 14:05:30 +0000 (14:05 +0000)
git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@1273 07558da8-63fa-0310-ba24-9fe276d99e06

conf/ffcasopisi/config.yml
conf/ffcasopisi/modify.pl
conf/ffcasopisi/perilooksig2marc.pl
conf/ffcasopisi/schema.sql
conf/ffcasopisi/sigxls2marc.pl
conf/ffcasopisi/tables-isis.pl
conf/ffcasopisi/tables-signature.pl

index 61d0ba7..e77a0e9 100644 (file)
@@ -96,20 +96,210 @@ databases:
     input:
       - name: sig
         type: excel
-        path: '/data/FF/casopisi/Casopisi-signature-20090723.xls'
+        path: '/data/FF/casopisi/Casopisi-signature-upisani.xls'
         to: 3352
         normalize:
           - path: 'conf/ffcasopisi/sigxls2marc.pl'
           - path: 'conf/ffcasopisi/tables-signature.pl'
+        skip: 0
+      - name: kod
+        type: excel
+        path: '/data/FF/casopisi/ffsf-bibrazina.xls'
+        from: 1
+        to: 2510
+        normalize:
+          - path: 'conf/ffcasopisi/tables-bibrazina.pl'
+        skip: 1
+      - name: ang
+        type: isis
+        path: '/data/FF/casopisi/lj2008/an/PERI/PERI'
+        encoding: cp852
+        collection: FFAN
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: arh
+        type: isis
+        path: '/data/FF/casopisi/lj2008/ar/PERI/PERI'
+        encoding: cp852
+        collection: FFAR
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: etn
+        type: isis
+        path: '/data/FF/casopisi/lj2008/et/PERI/PERI'
+        encoding: cp852
+        collection: FFET
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: fil
+        type: isis
+        path: '/data/FF/casopisi/lj2008/fi/PERI/PERI'
+        encoding: cp852
+        collection: FFFI
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: fon
+        type: isis
+        path: '/data/FF/casopisi/lj2008/fo/PERI/PERI'
+        encoding: cp852
+        collection: FFFO
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: ger
+        type: isis
+        path: '/data/FF/casopisi/lj2008/ge/PERI/PERI'
+        encoding: cp852
+        collection: FFGE
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: hun
+        type: isis
+        path: '/data/FF/casopisi/lj2008/hu/PERI/PERI'
+        encoding: cp852
+        collection: FFHU
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: izn
+        type: isis
+        path: '/data/FF/casopisi/lj2008/iz/PERI/PERI'
+        encoding: cp852
+        collection: FFIZ
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: kom
+        type: isis
+        path: '/data/FF/casopisi/lj2008/kk/PERI/PERI'
+        encoding: cp852
+        collection: FFKK
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: lin
+        type: isis
+        path: '/data/FF/casopisi/lj2008/lo/PERI/PERI'
+        encoding: cp852
+        collection: FFLO
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: ped
+        type: isis
+        path: '/data/FF/casopisi/lj2008/pe/PERI/PERI'
+        encoding: cp852
+        collection: FFPE
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: pov
+        type: isis
+        path: '/data/FF/casopisi/lj2008/po/PERI/PERI'
+        encoding: cp852
+        collection: FFPO
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: psi
+        type: isis
+        path: '/data/FF/casopisi/lj2008/ps/PERI/PERI'
+        encoding: cp852
+        collection: FFPS
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: pum
+        type: isis
+        path: '/data/FF/casopisi/lj2008/pu/PERI/PERI'
+        encoding: cp852
+        collection: FFPU
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: rom
+        type: isis
+        path: '/data/FF/casopisi/lj2008/ro/PERI/PERI'
+        encoding: cp852
+        collection: FFRO
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
       - name: sfd
         type: isis
         path: '/data/FF/casopisi/lj2008/sfd/PERI/PERI'
         encoding: cp852
-        collection: Časopisi
+        collection: FFSF
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: soc
+        type: isis
+        path: '/data/FF/casopisi/lj2008/so/PERI/PERI'
+        encoding: cp852
+        collection: FFSO
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 0
+      - name: tal
+        type: isis
+        path: '/data/FF/casopisi/lj2008/ta/PERI/PERI'
+        encoding: cp852
+        collection: FFTA
+        modify_file: 'conf/ffcasopisi/modify.pl'
+        normalize:
+          - path: 'conf/ffcasopisi/perilooksig2marc.pl'
+          - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
+      - name: tur
+        type: isis
+        path: '/data/FF/casopisi/lj2008/tu/PERI/PERI'
+        encoding: cp852
+        collection: FFTU
         modify_file: 'conf/ffcasopisi/modify.pl'
         normalize:
           - path: 'conf/ffcasopisi/perilooksig2marc.pl'
           - path: 'conf/ffcasopisi/tables-isis.pl'
+        skip: 1
     output:
       - module: 'DBI'
         dsn: 'dbi:Pg:dbname=ffcas'
index b80213c..cb998ea 100644 (file)
 
 11
   '*'
-    ' ' => ''
+    'regex:^\s+' => ''
 
 102
   '*'
     'regex:^AL$' => 'aa'
+    'regex:^AM$' => 'ai'
+    'regex:^AR$' => 'ag'
     'regex:^AT$' => 'au'
     'regex:^AU$' => 'at'
+    'regex:^AUT$' => ''
+    'regex:^B$' => ''
     'regex:^BA$' => 'bn'
+    'regex:^BA; HR$' => ''
+    'regex:^BE$' => 'be'
     'regex:^BG$' => 'bu'
     'regex:^BH$' => 'ba'
     'regex:^ BH$' => 'ba'
+    'regex:^BiH$' => 'ba'
+    'regex:^BIH$' => 'ba'
     'regex:^BL$' => 'bu'
+    'regex:^BO$' => 'bo'
     'regex:^BOS$' => 'bn'
     'regex:^CA$' => 'cn'
+    'regex:^CAN$' => 'cn'
     'regex:^CG$' => 'cg'
     'regex:^CH$' => 'sz'
+    'regex:^CRO$' => 'ci'
+    'regex:^CS$' => 'yu'
+    'regex:^CU$' => 'cu'
     'regex:^CZ$' => 'xr'
     'regex:^D$' => 'gw'
+    'regex:^De$' => 'gw'
     'regex:^DE$' => 'gw'
+    'regex:^DE/AT$' => ''
+    'regex:^DEU$' => 'gw'
+    'regex:^DK$' => 'dk'
+    'regex:^DU$' => ''
+    'regex:^EG$' => 'ua'
+    'regex:^EN$' => 'uk'
+    'regex:^Eng$' => 'uk'
+    'regex:^ENG$' => 'uk'
     'regex:^ES$' => 'sp'
+    'regex:^ET$' => ''
+    'regex:^EU$' => ''
+    'regex:^F$' => ''
+    'regex:^FI$' => 'fi'
+    'regex:^FIN$' => 'fi'
     'regex:^FR$' => 'fr'
+    'regex:^FRA$' => 'fr'
     'regex:^GB$' => 'uk'
+    'regex:^GBR$' => 'uk'
+    'regex:^GE$' => 'gw'
+    'regex:^GER$' => 'gw'
+    'regex:^hr$' => 'ci'
     'regex:^Hr$' => 'ci'
     'regex:^HR$' => 'ci'
+    'regex:^HR-IT$' => ''
+    'regex:^HR; IT$' => ''
+    'regex:^HRV$' => 'ci'
+    'regex:^HR, YU$' => ''
     'regex:^HU$' => 'hu'
+    'regex:^I$' => ''
+    'regex:^IN$' => 'ii'
+    'regex:^IR$' => 'ir'
     'regex:^IT$' => 'it'
+    'regex:^ITA$' => 'it'
+    'regex:^IZ$' => ''
+    'regex:^JA$' => 'jp'
+    'regex:^JAP$' => 'jp'
     'regex:^JU$' => 'yu'
-    'regex:^MA$' => 'xn'
+    'regex:^Jugoslavija$' => ''
+    'regex:^KR$' => 'ko'
+    'regex:^LV$' => 'lv'
+    'regex:^MA$' => 'mr'
     'regex:^MK$' => 'xn'
+    'regex:^MT$' => 'mm'
+    'regex:^MX$' => 'mx'
     'regex:^NL$' => 'ne'
+    'regex:^NO$' => 'no'
+    'regex:^Šanjolska$' => 'sp'
     'regex:^Pl$' => 'pl'
     'regex:^PL$' => 'pl'
+    'regex:^PT$' => 'po'
     'regex:^RF$' => 'ru'
+    'regex:^RM$' => 'rm'
     'regex:^RO$' => 'rm'
+    'regex:^ROM$' => 'rm'
     'regex:^RU$' => 'ru'
+    'regex:^RUM$' => 'ru'
+    'regex:^SAD$' => 'us'
+    'regex:^SC$' => 'se'
+    'regex:^SCC$' => ''
+    'regex:^SCG$' => ''
+    'regex:^SE$' => 'sw'
     'regex:^SI$' => 'xv'
-    'regex:^SiCG$' => '  '
-    'regex:^SICG$' => '  '
+    'regex:^SiCG$' => ''
+    'regex:^SICG$' => ''
     'regex:^SK$' => 'xo'
     'regex:^SL$' => 'sl'
+    'regex:^SLO$' => 'sl'
+    'regex:^SLV$' => ''
+    'regex:^SP$' => ''
     'regex:^SR$' => 'sr'
+    'regex:^Srbija$' => 'sr'
+    'regex:^SRBIJA$' => 'sr'
+    'regex:^SS$' => ''
+    'regex:^SU$' => ''
     'regex:^SW$' => 'sw'
+    'regex:^SZ$' => ''
+    'regex:^TN$' => 'ti'
+    'regex:^TR$' => 'tu'
     'regex:^UA$' => 'un'
     'regex:^UK$' => 'uk'
+    'regex:^us$' => 'us'
     'regex:^US$' => 'us'
     'regex:^USA$' => 'us'
+    'regex:^Vojvodina$' => 'sr'
     'regex:^YU$' => 'yu'
+    'regex:^YU;CS$' => ''
+    'regex:^YUG$' => 'yu'
+    'regex:^YU, HR$' => ''
+    'regex:^YU,  HR$' => ''
+    'regex:^YU/HR$' => ''
+    'regex:^YU, SI$' => ''
+    'regex:^YU, Srbija$' => ''
+    'regex:^YU (SRBIJA)$' => ''
+    'regex:^YU, SRBIJA$' => ''
+
 
 200
   '*'
     '^e' => ' : '
     '^d' => ' = '
     '^k' => ' : '
+
 210
-  'd'
+  '*'
+    ' : ' => ' :^b'
+    ' ; ' => ' ;^a'
+    '^c'  => ' :^b'
+    '^d'  => ',^c'
+  '^c'
+    'regex:^\s+' => ''
     ' - ' => '-'
     ' -'  => '-'
     '- '  => '-'
     ', '  => '-'
     '.'   => ''
-    '[sa]' => '[s.a.]'
-    '^ '  => ''
+    '_ _' => '--'
+
+
 326
+   'regex:^1$' => '|'
+   'regex:^1.$' => '|'
+   'regex:^10$' => '10'
+   'regex:^10.$' => '10'
    'regex:^10g$' => '10'
    'regex:^12$' => 'm1'
-   'regex:^19g$' => 'g19'
-   'regex:^gnepoznato$' => 'np'
-   'regex:^g10$'=> '10'
-   'regex:^g12$'=> 'm1'
+   'regex:^1-2 broja godišnje$' => 'g2'
+   'regex:^12g ;(uvez:1953-1957);(uvez:1958-1961)$' => '|'
+   'regex:^19g$' => '19'
+   'regex:^1g$' => '|'
+   'regex:^1m$' => '|'
+   'regex:^26.godišnje$' => '|'
+   'regex:^2g$' => '|'
+   'regex:^2. godišnje 2 broja$' => 'g2'
+   'regex:^3.$' => '|'
+   'regex:^35(1996)$' => '|'
+   'regex:^3g$' => '|'
+   'regex:^4.$' => '|'
+   'regex:^4g$' => '|'
+   'regex:^52$' => '|'
+   'regex:^64$' => '|'
+   'regex:^6g$' => '|'
+   'regex:^Četvrtgodišnje$' => 'g4'
+   'regex:^dg$' => '|'
+   'regex:^Dva puta tjedno utorkom i subotom$' => 't2us'
+   'regex:^Dvogodišnjak$' => '2g'
+   'regex:^g$' => '|'
+   'regex:^g1$' => 'g1'
+   'regex:^g1.$' => 'g1'
+   'regex:^g10$' => '10'
+   'regex:^g 10$' => '10'
+   'regex:^g11$' => '11'
+   'regex:^g12$' => 'm1'
+   'regex:^g1godišnjak$' => 'g1'
+   'regex:^g1 godišnjak$' => 'g1'
+   'regex:^g1.godišnjak.$' => 'g1'
+   'regex:^g1     nr$' => 'nr'
+   'regex:^g1- nr$' => 'nr'
+   'regex:^g1;  nr$' => 'nr'
+   'regex:^g1(nr)$' => 'nr'
+   'regex:^g2$' => 'g2'
+   'regex:^g2.$' => 'g2'
+   'regex:^g2 $' => 'g2'
+   'regex:^g2.$' => 'g2'
+   'regex:^g20$' => '20'
+   'regex:^g24$' => '24'
+   'regex:^g26$' => '26'
+   'regex:^g2.godišnje 2 broja.$' => 'g2'
+   'regex:^g2 polugodišnjak$' => 'g2'
+   'regex:^g2.polugodišnjak.$' => 'g2'
+   'regex:^g3$' => 'g3'
+   'regex:^g3.$' => 'g3'
+   'regex:^g3.$' => 'g3'
+   'regex:^g3 četveromjesečnik$' => 'g3'
+   'regex:^g3.godišnje 3 broja.$' => 'g3'
+   'regex:^g3.tromjesečnik.$' => 'g3'
+   'regex:^g4$' => 'g4'
+   'regex:^g4.$' => 'g4'
+   'regex:^g4.$' => 'g4'
+   'regex:^g4-5$' => 'g4'
+   'regex:^g4 tromjesečnik$' => 'g4'
+   'regex:^g4.tromjese.+$' => 'g4'
+   'regex:^g5$' => 'g5'
+   'regex:^g5.$' => 'g5'
+   'regex:^g50$' => '|'
+   'regex:^g5.godišnje 5 brojeva.$' => 'g5'
+   'regex:^g6$' => 'g6'
    'regex:^  g6$' => 'g6'
-   'regex:^g24$' => 'm2'
-   'regex:^gm1$' => 'm1'
-   'regex:^gm4$' => 't1'
+   'regex:^g6.$' => 'g6'
+   'regex:^g6 dvomjesečnik$' => 'g6'
+   'regex:^g6.dvomjesečnik.$' => 'g6'
+   'regex:^g6 polugodišnjak$' => 'g6'
+   'regex:^g8$' => 'g8'
+   'regex:^g9$' => 'g9'
+   'regex:^g9.$' => 'g9'
+   'regex:^gm1$' => '|'
+   'regex:^gm4$' => '|'
+   'regex:^gnepoznato$' => '|'
    'regex:^gnr$' => 'nr'
-   'regex:^g$'  => 'g1'
+   'regex:^Godišnje$' => 'g1'
+   'regex:^godišnje 4 broja$' => 'g4'
+   'regex:^Izlazi neredovito$' => 'nr'
+   'regex:^m1$' => 'm1'
+   'regex:^m1.$' => 'm1'
    'regex:^m12$' => 'm1'
+   'regex:^m1.mjesečnik.$' => 'm1'
+   'regex:^m2$' => 'm2'
+   'regex:^m2.dvotjednik.$' => 'm2'
+   'regex:^m3$' => 'm3'
+   'regex:^m4$' => 't1'
+   'regex:^Neredovito$' => 'nr'
+   'regex:^nr$' => 'nr'
+   'regex:^nr $' => 'nr'
+   'regex:^nr.$' => 'nr'
+   'regex:^Nr$' => 'nr'
+   'regex:^NR$' => 'nr'
+   'regex:^nr (kvartalno)$' => 'nr'
+   'regex:^nr neredovito$' => 'nr'
+   'regex:^nr.neredovito.$' => 'nr'
+   'regex:^od 1993 g4, do 1993 g2$' => '|'
+   'regex:^Polutjedno$' => 't2'
+   'regex:^t1$' => 't1'
    'regex:^tjednik$' => 't1'
    'regex:^Tjednik$' => 't1'
-   'regex:^Tromjese.*$' => 'g4'
-   'regex:^Tri puta mjese.*$' => 'm3'
-   'regex:^Polutjedno$' => 't2'
-
+   'regex:^Tri puta mjesečno$' => 'm3'
+   'regex:^tromjesečnik$' => '|'
+   'regex:^Tromjesečnik$' => '|'
+   'regex:^Tromjesečno$' => '|'
index 709a917..5db00bb 100644 (file)
@@ -1,22 +1,13 @@
 my $pair = 
        lookup(
-               sub { rec('B') },
+               sub { rec('C') },
                'casopisi','sig',
                sub { rec('A') . rec('B') },
                sub { config ('input collection') . rec('000') }
        );
 
-#if ( $pair ) {
+if ( $pair ) {
 
-marc('888','a',
-       $pair
-);
-
-marc('888','b',
-       config('input collection')
-);
-
-if ( rec('200','a') ) {
 
 ### LEADER
 
@@ -29,12 +20,24 @@ marc_leader('06','a');
 ## LDR 07 - Bibliographic level 
 #  izvuci podatke iz tablie (za po i sf)
 
+my $ldr7 =
+       lookup(
+               sub { rec('D') },
+               'casopisi','kod',
+               sub { rec('B') . rec('A') },
+               sub { config ('input collection') . rec('000') }
+       );
+
 #if ( rec('225','a') ) {
 #      marc_leader('07','d');  
 #} else {
 #      marc_leader('07','s');  
 #}
-marc_leader('07','s');
+
+if ( $ldr7 ) {
+       marc_leader('07', $ldr7 );
+}
+
 
 ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
 marc_leader('17','u');
@@ -55,27 +58,26 @@ marc_fixed('008','00', '010101');   # 00-05 - Date entered on file
 ## d - Continuing resource ceased publication
 ## u - Continuing resource status unknown
 
-marc_fixed('008','06','u');
+marc_fixed('008','06','|');
 
 my $d1 = '    ';
 my $d2 = '    ';
 
 if ( rec('210','d') ) {
-       if ( rec('210','d') =~ m/(\d{4}).*(\d{4})/ ) {
-               marc_fixed('008','06','d');
+       if ( rec ('210','d') =~ m#(\d{4}).*?-.*?(\d{4})# ) {
                $d1 = $1;
                $d2 = $2;
-               marc_fixed('008','07', $d1);
-       } else {
-               marc_fixed('008','06','c');
-               marc_fixed('008','07',                  # 07-10 - Date 1
-                       regex ( 's/.*(\d{4}).*/$1/', 
-                               rec('210','d') 
-                       )
-               );
+               marc_fixed('008','06','d');
+       }
+       if ( rec ('210','d') =~ m{(\d{4}).*?-\s*$} ) {
+               $d1 = $1;
                $d2 = '9999';
+               marc_fixed('008','06','c');
        }
-       marc_fixed('008','11',$d2);                     # 07-10 - Date 1
+       
+       marc_fixed('008','07', $d1);
+       marc_fixed('008','11', $d2);
+               
 }
 
 marc_fixed('008','15',                 # 15-17 - Place of publication, production, or execution
@@ -93,7 +95,7 @@ marc_fixed('008','39','d');           # 39 - Cataloging source
 
 my $fre;
 
-$fre =         ( rec('326') eq '10' )  ? 'm' :
+$fre =         ( rec('326') eq '2g' )  ? 'g' :
        ( rec('326') eq 'g1' )  ? 'a' :
        ( rec('326') eq 'g2' )  ? 'f' :
        ( rec('326') eq 'g3' )  ? 't' :
@@ -101,9 +103,15 @@ $fre =     ( rec('326') eq '10' )  ? 'm' :
        ( rec('326') eq 'g5' )  ? 'z' :
        ( rec('326') eq 'g6' )  ? 'b' :
        ( rec('326') eq 'g8' )  ? 'b' :
-       ( rec('326') eq 'g19' ) ? 's' :
+       ( rec('326') eq 'g9' )  ? 'm' :
        ( rec('326') eq 'm1' )  ? 'm' :
+       ( rec('326') eq '10' )  ? 'm' :
+       ( rec('326') eq '11' )  ? 'm' :
        ( rec('326') eq 'm2' )  ? 's' :
+       ( rec('326') eq '19' )  ? 's' :
+       ( rec('326') eq '20' )  ? 's' :
+       ( rec('326') eq '24' )  ? 's' :
+       ( rec('326') eq '26' )  ? 's' :
        ( rec('326') eq 'm3' )  ? 'j' :
        ( rec('326') eq 't1' )  ? 'w' :
        ( rec('326') eq 't2' )  ? 'c' :
@@ -111,14 +119,23 @@ $fre =    ( rec('326') eq '10' )  ? 'm' :
        ( rec('326') eq 'nr' )  ? ' ' :
        ( rec('326') eq 'np' )  ? 'u' :
                                '|';
-       
-
 
 marc_fixed('008','18', $fre);  # 18 - Frequency - ovo treba popuniti iz polja 326
 marc_fixed('008','19', '|');   # 19 - Regularity
                                # 20 - Undefined, ontains a blank (#) or fill character (|)
 # za polje 008 21 treba lookup u tablicu s kodovima za sf i po, za ostale nadopuniti naknadno
-marc_fixed('008','21', 'p');   # 21 - Type of continuing resource
+
+my $stype = 
+       lookup(
+               sub { rec('E') },
+               'casopisi','kod',
+               sub { rec('B') . rec('A') },
+               sub { config ('input collection') . rec('000') }
+       );
+
+if ( $stype ) {
+       marc_fixed('008','21', $stype); # 21 - Type of continuing resource
+}
                                # 22 - Form of original item - blank
                                # 23 - Form of item
 marc_fixed('008','24','|');    # 24 - Nature of entire work
@@ -137,8 +154,7 @@ marc_fixed('008','34','0'); # 34 - Entry convention
        );
 #}
 
-### 035$6
-# privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
+### 035
 
 my $id;
 
@@ -151,11 +167,11 @@ $id = (
        )
 );
 
-marc('035','6', $id);
+marc('035','a', $id);
 
 ### 040
 # za sve je isti
-# treba utvrditi toènu oznaku za ustanovu
+# treba utvrditi točnu oznaku za ustanovu
 
 marc('040','a',
        'HR-ZaFF'
@@ -165,29 +181,28 @@ marc('040','b',
        'hrv'
 );
 
+marc('040','c',
+       'HR-ZaFF'
+);
+
 marc('040','e',
        'ppiak'
 );
 
-### 041 - indikatori
-
-marc_indicators('041', 0, ' ');
-
-### 041
-
-marc_repeatable_subfield('041','a',
-       rec('101')
-);
+#### 041 - indikatori
+#
+#
+#marc_indicators('041', 0, ' ');
+#
+#### 041
+#
+#marc_repeatable_subfield('041','a',
+#      rec('101')
+#);
 
 
 #_debug(3);
 
-### 044 - zemlja izdavanja
-
-marc('044','a',
-       rec('102')
-);
-
 ### 080
 
 marc('080','a',
@@ -198,27 +213,15 @@ marc('080','a',
 # marc_indicators('210', '1',' ');
 
 ### 210 - ABBREVIATED TITLE 
-# pronaæi prikladan izvor podataka (nsk baza, issn baza)
-
-## iz nsk
-#if ( rec('11') ) {
-#marc('210','a',
-#      lookup(
-#              sub { rec('531','a') },
-#              'nsk','bbaza',
-#              sub { rec('011','a') },
-#              sub { rec('11') },
-#      ) 
-#);
-#}
+# pronaći prikladan izvor podataka (nsk baza, issn baza)
 
 ### 222 indikatori
-# drugi indikator prema èlanu
+# drugi indikator prema clanu
 
 marc_indicators('222',' ','0');
 
 ### 222 - Key title
-# pronaæi prikadan izvor podataka - nsk baza, issn baze
+# pronaci prikadan izvor podataka - nsk baza, issn baze
 
 marc('222','a',
        rec('530')
@@ -237,89 +240,87 @@ marc('222','a',
 #}
 
 ### 245 indikatori
-# generiraju se prema èlanu, trebalo bi mo¾da i prema jeziku (jezika nema uvijek). 
+# generiraju se prema clanu, trebalo bi możda i prema jeziku (jezika nema uvijek). 
 # potrebna naknadna kontrola
 
+my $naslov = 
+       lookup(
+               sub { rec('E') },
+               'casopisi','sig',
+               sub { rec('A') . rec('B') },
+                sub { config ('input collection') . rec('000') }
+       );
+
 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 /) ) {
+if (   ( $naslov =~ m/^Die /) || 
+       ( $naslov =~ m/^Das /) || 
+       ( $naslov =~ m/^Der /) || 
+       ( $naslov =~ m/^Les /) || 
+       ( $naslov =~ m/^The /) ) {
                marc_indicators('245', 0, 4);
 
 } 
 
-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 /) ) {
+if (   ( $naslov =~ m/^Un /) || 
+       ( $naslov =~ m/^An /) ||
+       ( $naslov =~ m/^La /) ||
+       ( $naslov =~ m/^Le /) ||
+       ( $naslov =~ m/^Il /) ) {
                marc_indicators('245', 0, 3);
 } 
 
-if (   ( rec('200','a') =~ m/^A /) || 
-       ( rec('200','a') =~ m/^L'/) ) {
+if (   ( $naslov =~ m/^A /) || 
+       ( $naslov =~ 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','a'),
-       ),
-       'b', suffix(
-               ( 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'),
-       ),
-       'b', suffix(
-               ( 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'),
-       ),
-       '+', suffix('.',
-               rec('200','c'),
-       )
-);
 
-### 246 inikatori
-# prema jeziku - provjera
+#warn $naslov;
 
-if (   ( rec('200','a') =~ m/^Die /) || 
-       ( rec('200','a') =~ m/^Das /) || 
-       ( rec('200','a') =~ m/^The /) ) {
-               marc_indicators('246', 0, 4);
+my ($a,$b,$c);
+$c = $2 if $naslov =~ s{(\s+/)\s+(.+)$}{$1};
+if ( $naslov =~ s{^(.+?[:=])\s+}{} ) {
+       $a = $1;
+       $b = $naslov ;
 } else {
-       marc_indicators('246', 0, 0);
+       $a = $naslov ;
 }
 
-### 246
-# povuæi podatke iz prikladnog izvora (nsk, issn)
+#warn "a: $a\nb: $b\nc: $c\n";
 
-marc('246','a',
-       rec('532')
-);
+$a = $a . '.' if ( ! ( $b || $c) );
+$b = $b . '.' if ( ! $c && $b ) ;
+
+marc('245','a', $a);
+marc('245','b', $b) if $b;
+if ( $c ) {
+       marc('245','c', $c);
+} else {
+       marc('245','c',
+               rec('200','f')
+       );
+}
+
+### 246 inikatori
+# prema jeziku - provjera
+#
+#if (  ( rec('200','a') =~ m/^Die /) || 
+#      ( rec('200','a') =~ m/^Das /) || 
+#      ( rec('200','a') =~ m/^The /) ) {
+#              marc_indicators('246', 0, 4);
+#} else {
+#      marc_indicators('246', 0, 0);
+#}
+
+### 246
+# povuci podatke iz prikladnog izvora (nsk, issn)
+# 532 iz ISIS-a nije konvertirano
+#marc('246','a',
+#      rec('532')
+#);
 
 ## iz nsk:
 #      marc('246','a',
@@ -404,7 +405,7 @@ marc('300','e',
 );
 
 ### 310 - current stated publication frequency
-# potrebno ujednaèiti, koristi se i u polju 008
+# potrebno ujednaciti, koristi se i u polju 008
 
 marc('310','a',
        rec('326')
@@ -419,12 +420,9 @@ marc('310','a',
 marc_indicators('362', 0, ' ');
 
 ### 362
-#
-if ( rec('207','a') ) {
-       marc('362','a',
-               rec('207','a'),
-       );
-} 
+marc('362','a',
+       rec('207','a'),
+);
 
 ## lookup iz nsk
 #else {
@@ -496,7 +494,7 @@ marc('490','x',
 
 
 ### 5xx
-# koje podatke povuæi iz drugih baza?
+# koje podatke povuci iz drugih baza?
 
 marc('500','a',
        rec('300','a'),
@@ -509,7 +507,7 @@ marc('534','a',
        rec('324')
 );
 
-## potencijalno za izvuæi iz NSK
+## potencijalno za izvuci iz NSK
 #if ( rec('11') ) {
 #marc('546','a',
 #      lookup(
@@ -670,26 +668,23 @@ marc('785','t',
        rec('440','a'),
 );
 
-### 852
-
-marc('852','j',
-       join_with(' ',
-               rec('990')
-       )
+### 856
+marc('856','u',
+       rec('856','u')
 );
 
-### 876
 
-marc('876','a',
-       rec('991','a')
-);
+### 942
+#
+#marc('942','d',
+#      $pair
+#);
+
 
 ### 992
 
 marc('992','a',
-       join_with(' ; ', 
-               rec('992')
-       )
+       rec('992')
 );
 
 
@@ -739,5 +734,4 @@ marc('992','a',
 #      )
 # );
 
-} # 200a
-#} # pair
+} # pair
index bb3c4d6..c44f02b 100644 (file)
@@ -10,6 +10,18 @@ create table sig (
        fond text
 );
 
+drop table if exists bibraz;
+create table bibraz (
+       id serial,
+       mfn integer,
+       ldr7 text,
+       f008 text,
+       signatura text,
+       naslov1 text,
+       issn text,
+       naslov2 text,
+       serija text
+);
 
 drop table if exists isis;
 create table isis (
@@ -17,8 +29,10 @@ create table isis (
        sig text,
        zbirka text,
        mfn integer,
+       signatura text,
        zemlja text,
        naslov text,
+       odgovornost text,
        issn text,
        f210d text,
        f207a text,
index 60c6c1e..c565ac3 100644 (file)
@@ -188,6 +188,52 @@ if ( rec('E') =~ m/:/ ) {
        );
 }
 
+if ( rec('E') =~ m# / #  && rec('E') =~ m/[:=]/ ) {
+       marc('299','a',
+               regex('s/(^.*?[:=]) (.*\/) (.*)/$1/',
+                       rec('E')
+               )
+       );
+       marc('299','b',
+               regex('s/(^.*?[:=]) (.*\/) (.*)/$2/',
+                       rec('E')
+               )
+       );
+       marc('299','c',
+               regex('s/(^.*?[:=]) (.*\/) (.*)/$3/',
+                       rec('E')
+               )
+       );
+               
+} elsif ( rec('E') =~ m/ \/ /  && rec('E') !~ m/[:=]/ ) {
+       marc('299','a',
+               regex('s/(^.*?\/) (.*)/$1/',
+                       rec('E')
+               )
+       );
+       marc('299','c',
+               regex('s/(^.*?\/) (.*)/$2/',
+                       rec('E')
+               )
+       );
+} elsif ( rec('E') !~ m/ \/ / && rec('E') =~ m/[:=]/ ) {
+       marc('299','a',
+               regex('s/(^.*?[:=]) (.*)/$1/',
+                       rec('E')
+               )
+       );
+       marc('299','b',
+               regex('s/(^.*?[:=]) (.*)/$2/',
+                       rec('E')
+               )
+       );
+
+} else {       
+       marc('299','a',
+               rec('E')
+       );
+}
+
 # ### 246 inikatori
 # # prema jeziku - provjera
 # 
index 54484df..cdd8dac 100644 (file)
@@ -15,9 +15,21 @@ row( 'isis',
        sig => $sig || 0,
        zbirka => config('input collection'),
        mfn => rec('000'),
+       signatura => rec('990') || 0,
        zemlja => rec('102') || 0,
-       naslov => rec('200','a') || 0,
-       issn => rec('020') || 0,
+       naslov =>
+               join_with(' : ', 
+                       join_with(' = ',
+                               rec('200','a'),
+                               rec('200','d')
+                       ),
+                       rec('200','e')
+               ) || 0,
+        odgovornost => 
+               join_with(' ; ',
+                       rec('200','f'),
+               ) || 0,
+       issn => rec('11') || 0,
        f210d => rec('210','d') || 0,
        f207a => 
                join_with(' ; ',
index e46cfc8..b13e70b 100644 (file)
@@ -4,12 +4,12 @@
 #di => split( /;/, rec(
 
 row( 'sig',
-       zbirka => rec('A'),
+       zbirka => rec('A') || 0,
        mfn => rec('B') || 0,
-       signatura => rec('C'),
-       biljeska => rec('D'),
-       naslov => rec('E'),
-       issn => rec('F'),
-       fond => rec('G')
+       signatura => rec('C') || 0,
+       biljeska => rec('D') || 0,
+       naslov => rec('E') || 0,
+       issn => rec('F') || 0,
+       fond => rec('G') || 0
 );