/[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

Annotation of /trunk/conf/normalize/ff-libri.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1103 - (hide annotations)
Mon Aug 4 19:35:18 2008 UTC (15 years, 9 months ago) by dpavlin
File MIME type: text/plain
File size: 23116 byte(s)


1 dpavlin 795
2 dpavlin 1095 # Ova datoteka sadr¾i pravila za generiranje MARC21 ISO 2709 izlazne
3     # datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u
4     # UNIMARC formatu, sa vi¹estrukim odstupanjima od standarda.
5    
6    
7 dpavlin 1020 ## konvertira se ako postoji polje 200^a
8 dpavlin 773
9 dpavlin 751 if ( rec('200','a') ) {
10    
11 dpavlin 792 ### LEADER
12 dpavlin 751
13 dpavlin 1090 ## LDR 05 - c = pregledan ; n = new
14     ## 999^aP - SFM
15 dpavlin 1042
16 dpavlin 1095 if ( rec('999','a') && rec('999','a') =~ m/(pregledan|P)/i) {
17 dpavlin 751 marc_leader('05','c');
18     } else {
19     marc_leader('05','n');
20     }
21    
22 dpavlin 1090 ## LDR 06 - a - language material
23 dpavlin 1020
24 dpavlin 751 marc_leader('06','a');
25 dpavlin 1042
26 dpavlin 1090 ## LDR 07 - m - Monograph/item
27 dpavlin 1042
28 dpavlin 751 marc_leader('07','m');
29 dpavlin 1042
30 dpavlin 1103 ## LDR 17 - 3
31 dpavlin 1090 marc_leader('17','7');
32 dpavlin 1042
33 dpavlin 1090 ## LDR 18
34 dpavlin 751 marc_leader('18','i');
35    
36 dpavlin 1042 ## LDR 19 - razjasniti
37 dpavlin 1095 # nema vi¹e r, ima #, a, b ili c
38 dpavlin 876
39 dpavlin 1095 if ( rec('230') | rec('231') | rec('232') | rec('233') ) {
40     marc_leader('19','a');
41 dpavlin 751 }
42    
43 dpavlin 905 ### 008 - All materials
44 dpavlin 1090 ## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
45 dpavlin 1103 ## ostaviti prazno tamo gdje nema ni¹ta
46 dpavlin 905
47 dpavlin 1095 if ( rec('994','c') =~ m/\d{8}/ ) {
48 dpavlin 816 marc_fixed('008','00',
49     regex('s/^\d\d//',
50     rec('994','c')
51     ),
52     );
53 dpavlin 1095 } elsif ( rec('994','c') =~ m/\d{6}/ ) {
54 dpavlin 816 marc_fixed('008', 00,
55 dpavlin 1103 regex('s/^\d\d//',
56     rec('994','c')
57     ),
58 dpavlin 816 );
59 dpavlin 1095 marc_fixed('008', '04',
60     '01'
61     );
62     } elsif ( rec('994','c') =~ m/\d{4}/ ) {
63     marc_fixed('008', 00,
64     regex('s/^\d\d//',
65     rec('994','c')
66     ),
67     );
68     marc_fixed('008', '02',
69     '0101'
70     );
71 dpavlin 816 }
72    
73     #warn( dump(
74     # regex('s/^\d\d//',
75     # rec('994','c')
76     # ),
77     #)
78     #);
79    
80 dpavlin 1090 ## 008 06 - Type of date/Publication status
81     ## dodati i ostale moguænosti
82     ## 008 07-10 - Date 1 - iz 210d koji kroz modify postaje 210c
83 dpavlin 1103 ## srediti sve moguæe upitne godine
84 dpavlin 1042
85 dpavlin 1090 if ( rec('210','c') ) {
86 dpavlin 1103 my $d1;
87     my $d2;
88     if ( rec('210','c') =~ m/\?/ ) {
89     marc_fixed('008','06','q');
90     } else {
91     marc_fixed('008','06','s');
92     }
93     if ( rec('210','c') =~ m/(\d{4})/ ) {
94     $d1 = $1;
95     } else {
96     $d1 = '';
97     }
98     if ( rec('210','c') =~ m/^.*-(\d{4})/ ) {
99     $d2 = $1;
100     } else {
101     $d2 = '',
102     }
103     if ( rec('210','c') =~ m/(\d{2})--/ ) {
104     $d1 = $1.'uu';
105     marc_fixed('008','06','u');
106     }
107 dpavlin 1042
108 dpavlin 1103 marc_fixed('008','07',$d1); # 07-10 - Date 1
109     marc_fixed('008','11',$d2); # 07-10 - Date 1
110 dpavlin 1042
111 dpavlin 1090 } else {
112     marc_fixed('008','06','n'); # 06 - n = unknown date
113     marc_fixed('008','07','uuuu');
114     }
115    
116    
117 dpavlin 1042 ## 008 11-14 - Date 2
118    
119     ## 008 15-17 - Place of publication, production, or execution - ¹to ako nema 102?
120 dpavlin 1090 ## raspraviti
121 dpavlin 1042
122 dpavlin 1103 marc_fixed('008','15','xx');
123    
124 dpavlin 1090 #marc_fixed('008','15',
125     # lc ( rec('102') )
126     #);
127 dpavlin 1042
128 dpavlin 1103 #my $zemlja =
129     # lookup(
130     # sub { rec('B') },
131     # 'kodovi','zemlje',
132     # sub { rec('A') },
133     # sub {
134     # regex('s/[\s;:]/g',
135     # rec('210','a')
136     # )
137     # },
138     # );
139 dpavlin 1042
140 dpavlin 1090
141     ## 008 35-37 - Language
142 dpavlin 816 marc_fixed('008','35',
143 dpavlin 1090 # first( lc(rec('101')) )
144     lc( frec('101'))
145 dpavlin 816 );
146 dpavlin 1042
147     ## 008 38 - Modified record - razjasniti
148 dpavlin 1095 marc_fixed('008','38','|');
149 dpavlin 816
150 dpavlin 1090 ## 008 39 - Cataloging source - d (other)
151 dpavlin 1042 marc_fixed('008','39','d');
152 dpavlin 905
153 dpavlin 1042 ### 008 - Books - raspraviti upotrebu ovih polja
154     ## 008 18-21 - Illustrations
155 dpavlin 1095 if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
156     marc_fixed('008','18','a')
157     }
158    
159 dpavlin 1042 ## 008 22 - Target audience
160 dpavlin 1095 marc_fixed('008','22','|');
161    
162 dpavlin 1042 ## 008 23 - Form of item
163 dpavlin 1095
164 dpavlin 1042 ## 008 24-27 - Nature of contents
165 dpavlin 1095 marc_fixed('008','24','||||');
166    
167 dpavlin 1042 ## 008 28 - Government publication
168 dpavlin 1095 marc_fixed('008','28','|');
169    
170 dpavlin 1042 ## 008 29 - Conference publication
171 dpavlin 1095 marc_fixed('008','29','|');
172    
173 dpavlin 1042 ## 008 30 - Festschrift
174 dpavlin 1095 marc_fixed('008','30','|');
175    
176 dpavlin 1042 ## 008 31 - Index
177 dpavlin 1095 marc_fixed('008','31','|');
178    
179 dpavlin 1042 ## 008 32 - Undefined
180     ## 008 33 - Literary form
181 dpavlin 1095 marc_fixed('008','33','|');
182    
183 dpavlin 1042 ## 008 34 - Biography
184 dpavlin 1095 marc_fixed('008','34','|');
185 dpavlin 905
186 dpavlin 876 ### 020
187 dpavlin 1090 ## modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
188 dpavlin 816
189 dpavlin 1020 if ( frec('10') ne ( frec('290') ) ) {
190 dpavlin 1103 if ( rec('10','a') !~ /pogre/ ) {
191     marc('020','a',
192     # isbn_13(
193     regex('s/\s\s/ /g',
194     # regex('s/\(\d\)\(/$1 \(//g',
195     rec('10','a')
196     )
197     # )
198     );
199     }
200     if ( rec('10','a') =~ /pogre/ ) {
201     marc('020','z',
202 dpavlin 1090 regex('s/\s\s/ /g',
203     rec('10','a')
204     )
205 dpavlin 1103 );
206     }
207     marc('020','z',
208     rec('10','z')
209     );
210    
211 dpavlin 1010 }
212 dpavlin 876
213 dpavlin 1010 #warn(
214     # dump(
215     # frec('10')
216     # ),
217     #);
218 dpavlin 876
219 dpavlin 1090 ### 035$
220 dpavlin 1042 ## Privemeno koristimo 035$6 umjesto 035$9, zato ¹to marclint prijavljuje 9 kao gre¹ku.
221     ## marc 035a - System Number - Voyagerov ID (001)
222     ## polje 035$9 mo¾e sadr¾avati slova i razmake
223 dpavlin 792
224 dpavlin 1095 marc('035','a',
225 dpavlin 824 join_with('',
226 dpavlin 1090 # config('input normalize path'),
227     # config('name'),
228 dpavlin 1103 'HR-ZaFF ',
229 dpavlin 1090 config(),
230 dpavlin 1103 'L-',
231 dpavlin 1090 # config('input name'),
232     # id(),
233     # rec('994','a'),
234     rec('000')
235 dpavlin 751 )
236     );
237    
238 dpavlin 792 ### 040
239 dpavlin 1042 ## za sve je isti
240 dpavlin 792
241 dpavlin 751 marc('040','a',
242 dpavlin 1095 'HR-ZaFF'
243 dpavlin 751 );
244    
245     marc('040','b',
246     'hrv'
247     );
248    
249 dpavlin 1082 marc('040','c',
250 dpavlin 1095 'HR-ZaFF'
251 dpavlin 1082 );
252    
253 dpavlin 758 marc('040','e',
254 dpavlin 1082 'ppiak'
255 dpavlin 758 );
256    
257 dpavlin 792
258 dpavlin 905 ### 041 - indikatori
259 dpavlin 1042 ## pretpostavke o indikatorima
260     ## 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
261     ## (Da li je napomena uvijek pisana?)
262     ## 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
263     ## 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod
264     ## (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
265     ## pr. 821.111-2=163.42 je prijevod engleske drame na HR.
266     ## to ima samo za knji¾evna djela, eseje....
267     ## ????
268 dpavlin 792
269 dpavlin 1090 #if ( rec('675') =~ m/\d=\d/ ) ?
270 dpavlin 1010
271     if (
272 dpavlin 1090 grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik|nas.*izv*]/i, rec('300') ) ||
273 dpavlin 1010 grep( m/[preve|prijevod]/i, rec('200','f')) ||
274     grep( m/[preve|prijevod]/i, rec('200','g'))
275     ) {
276 dpavlin 751 marc_indicators('041', 1, ' ');
277     } else {
278     marc_indicators('041', 0, ' ');
279     }
280    
281 dpavlin 792 ### 041
282 dpavlin 1042 ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
283 dpavlin 792
284 dpavlin 783 #_debug(2);
285 dpavlin 903
286 dpavlin 751 marc_repeatable_subfield('041','a',
287 dpavlin 1010 map { lc($_) } rec('101')
288 dpavlin 751 );
289 dpavlin 903
290 dpavlin 783 #_debug(0);
291 dpavlin 751
292 dpavlin 876 ### 044
293 dpavlin 905 ## kako dobiti zemlju izdavanja?
294 dpavlin 751
295 dpavlin 792 ### 080
296 dpavlin 1042 ## 675 podpolja b, c, d ... - ¹to s njima? - provjeriti za svaku bazu
297 dpavlin 783
298 dpavlin 792 marc('080','a',
299     rec('675','a')
300     );
301    
302 dpavlin 876 marc('080','a',
303     rec('675','b')
304     );
305 dpavlin 792
306 dpavlin 876 marc('080','a',
307     rec('675','c')
308     );
309    
310     marc('080','a',
311     rec('675','d')
312     );
313    
314    
315 dpavlin 792 ### 084 - other classification (R)
316 dpavlin 1042 ## NSK ga koristi za struènu oznaku NSK iz polja 681
317     ## NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom
318     ## polje 686 koristi FFPS. jo¹ netko?
319 dpavlin 792
320     marc('084','a',
321     rec('686')
322     );
323    
324 dpavlin 1042 ### 100
325     ## I1 = 0 ako je pseudonim (ima 700a, nema 700b)
326 dpavlin 903
327 dpavlin 807 if ( rec('700','a') && ! rec('700','b') ) {
328     marc_indicators('100', 0, ' ');
329     } else {
330     marc_indicators('100', 1, ' ');
331     }
332    
333 dpavlin 792 marc('100','a',
334     join_with(', ',
335     rec('700', 'a'),
336     rec('700', 'b')
337     )
338     );
339    
340 dpavlin 1095 ### formalna odrednica - iz 503 u 110, i1=0, i2=1
341 dpavlin 792
342     ### 111 i 110
343 dpavlin 1042 ## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
344 dpavlin 905
345 dpavlin 802 # ovo vrijedi za FFSFB
346 dpavlin 876 if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
347 dpavlin 792
348     marc_indicators('111', 2, ' ');
349    
350 dpavlin 802 marc_compose('111',
351 dpavlin 876 'a', suffix(
352     rec('710','b') ? '.' :
353     '',
354     rec('710','a'),
355     ),
356 dpavlin 802 'e', rec('710','b'),
357 dpavlin 876 'n', prefix(
358     rec('710','d') ? '(' :
359     '',
360     rec('710','d')
361     ),
362     'd', prefix(
363     ( ! rec('710','d') ) ? '(' :
364     ( ! rec('710','e') ) ? '(' :
365     '; ',
366     rec('710','f'),
367     ),
368     'c', prefix(
369     ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' :
370     ( ! rec('710','d') && ! rec('710','f') ) ? '(' :
371     '',
372     rec('710','e'),
373     ),
374     '+',')',
375 dpavlin 792 );
376    
377    
378     } else {
379    
380     marc_indicators('110', 2, ' ');
381 dpavlin 876
382 dpavlin 792 marc('110','a',
383     rec('710','a')
384     );
385    
386 dpavlin 876 marc('110','b',
387     rec('710','b')
388     );
389 dpavlin 792
390 dpavlin 903 if ( rec('710','c') ) {
391     marc('110','c',
392     surround('(', ')', rec('710','c'))
393     );
394     }
395    
396 dpavlin 802 }
397 dpavlin 792
398    
399 dpavlin 905 ### 245 indikatori
400 dpavlin 1042 ## i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
401     ## i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
402     ## treba provjeriti
403 dpavlin 903
404 dpavlin 816 my $i1;
405 dpavlin 792
406 dpavlin 816 if ( rec('700') || rec('710') ) {
407     $i1 = 1;
408    
409     } else {
410     $i1 = 0;
411     }
412    
413     marc_indicators('245', $i1, 0);
414    
415 dpavlin 1095 if ( rec('200','a') =~ m/^Einen / ) {
416 dpavlin 1064 marc_indicators('245', $i1, 6);
417     }
418 dpavlin 1010
419 dpavlin 1095 if ( rec('200','a') =~ m/^Eine / ) {
420 dpavlin 1064 marc_indicators('245', $i1, 5);
421 dpavlin 783 }
422 dpavlin 751
423 dpavlin 1095 if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
424 dpavlin 1064 marc_indicators('245', $i1, 4);
425     }
426    
427     if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
428 dpavlin 1010 marc_indicators('245', $i1, 3);
429 dpavlin 783 }
430    
431 dpavlin 1095 if ( rec('200','a') =~ m/^(A|L) / ) {
432 dpavlin 816 marc_indicators('245', $i1, 2);
433 dpavlin 807 }
434    
435 dpavlin 1095 if ( rec('200','a') =~ m/^L'/ ) {
436     marc_indicators('245', $i1, 2);
437     }
438 dpavlin 1064
439 dpavlin 1095
440 dpavlin 905 ### 245
441 dpavlin 1042 ## potpolja i interpunkcije pripremljeni u modify
442 dpavlin 1095 ## da li treba makivati razmake u inicijalima?
443 dpavlin 783
444 dpavlin 751 #_debug(3);
445 dpavlin 816
446 dpavlin 751 marc_compose('245',
447     'a', suffix(
448 dpavlin 944 ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' :
449     ( rec('200','d') ) ? ' =' :
450     ( rec('200','e') ) ? ' :' :
451     ( rec('200','k') ) ? ' ;' :
452 dpavlin 1064 '.',
453 dpavlin 816 rec('200','a'),
454 dpavlin 751 ),
455     'b', suffix(
456 dpavlin 944 ( rec('200','d') && rec('200','f') ) ? ' /' :
457     ( rec('200','d') && rec('200','c') ) ? '.' :
458 dpavlin 824 '',
459 dpavlin 876 rec('200','d'),
460 dpavlin 751 ),
461 dpavlin 876 'b', suffix(
462 dpavlin 944 ( rec('200','e') && rec('200','f') ) ? ' /' :
463     ( rec('200','e') && rec('200','c') ) ? '.' :
464 dpavlin 876 '',
465     rec('200','e'),
466     ),
467     'b', suffix(
468 dpavlin 944 ( rec('200','k') && rec('200','f') ) ? ' /' :
469     ( rec('200','k') && rec('200','c') ) ? '.' :
470 dpavlin 876 '',
471     rec('200','k'),
472     ),
473 dpavlin 816 'c', suffix(
474 dpavlin 944 ( rec('200','f') && rec('200','c') ) ? '.' :
475 dpavlin 824 '',
476 dpavlin 1010 join_with(' ; ',
477 dpavlin 1090 regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
478     rec('200','f'),
479     ),
480     regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
481     rec('200','g')
482     )
483 dpavlin 1010 )
484 dpavlin 751 ),
485 dpavlin 1042 ## append to last subfield
486 dpavlin 944 '+', suffix('.',
487     rec('200','c'),
488     ),
489 dpavlin 816 );
490 dpavlin 751
491 dpavlin 816 #_debug(0);
492 dpavlin 783
493 dpavlin 1042 ### 246
494 dpavlin 1095 ## i1=1 ukoliko pravilo nalaze napomenu, ali napomenu necemo pisati ponovo u 500
495     ## i1=3 ako pravlo na nalze napomenu
496     ## vidi na wiki
497     ## i2 - pogledati za svaku bazu sto su ti naslovi, pa onda oderditi indikatoda oderditi indikatoree
498 dpavlin 751
499 dpavlin 1095 marc_indicators('246', 3, ' ');
500 dpavlin 1042 marc('246','a',
501     rec('532')
502     );
503 dpavlin 751
504 dpavlin 792 ### 250
505 dpavlin 1042 ## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
506 dpavlin 783
507 dpavlin 824 marc_compose('250',
508     'a',suffix(
509     rec('205','f') ? ' / ' :
510 dpavlin 1095 '',
511 dpavlin 751 rec('205','a')
512 dpavlin 824 ),
513     'b', rec('205','f'),
514 dpavlin 751 );
515    
516 dpavlin 792 ### 260
517 dpavlin 1042 ## ponovljiva potpolja u originalnom redosljedu - priprema u modify
518 dpavlin 773
519 dpavlin 1095 marc_original_order('260', '210');
520 dpavlin 751
521    
522 dpavlin 792 ### 300
523 dpavlin 1042 ## urediti interpunkcije za sve kombinacije
524 dpavlin 758
525 dpavlin 751 marc('300','a',
526     suffix(
527 dpavlin 783 rec('215','c') ? ' : ' :
528     rec('215','d') ? ' ; ' :
529     rec('215','e') ? ' + ' :
530 dpavlin 1064 '',
531 dpavlin 751 rec('215','a')
532     )
533     );
534    
535     marc('300','b',
536     suffix(
537 dpavlin 783 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
538     ( rec('215','c') && rec('215','e') ) ? ' + ' :
539 dpavlin 1064 '',
540 dpavlin 751 rec('215','c')
541     )
542     );
543    
544     marc('300','c',
545     suffix(
546     rec('215','e') ? ' + ' :
547 dpavlin 1095 '.',
548 dpavlin 751 rec('215','d')
549     )
550     );
551    
552     marc('300','e',
553     rec('215','e')
554     );
555    
556 dpavlin 1042 ### 362 - brojèani podaci za nakladnièku cjelinu - razjasniti upotrebu
557 dpavlin 751
558 dpavlin 1095 # if ( ! rec('225','z') ) {
559    
560     # ako je naslov nakladnièke cjeline slo¾en, podatak se zapisuje u 490, s pripadajuæim 830
561    
562     #if ( frec('225','a') =~ m/[\/=:]/ ) {
563     #
564     ##_debug(3);
565     #
566     #### 490
567     ### 490: Subfield _p is not allowed.
568     #
569     #marc_indicators('490','0',' ');
570     #
571     #marc_template(
572     # from => 225, to => 490,
573     # subfields_rename => [
574     # 'a' => 'a',
575     # 'x' => 'x',
576     # 'v' => 'v',
577     # 'h' => 'n',
578     # 'i' => 'p',
579     # 'w' => 'v',
580     # ],
581     # isis_template => [
582     # 'a',
583     # 'a ;|v',
584     # 'a,|x ;|v',
585     # 'a,|x ;|w',
586     # 'a,|x.|h ;|w',
587     # 'a.|h,|i ;|v',
588     # 'a ;|v.|i',
589     # 'a.|i ;|w',
590     # 'a,|x',
591     # # greske:
592     # 'i ;|v',
593     # 'i'
594     # ],
595     #);
596    
597     #marc_template(
598     # from => 225, to => 490,
599     # from => "{ z => 1 }",
600     # to => "{ a => 1 }",
601     #
602     # marc_template => [
603     # 'a',
604     # ],
605     #);
606    
607     # marc_indicators('830',' ','0');
608     # i2 ovisi èlanu - popraviti
609     #
610     # marc('830','a',
611     # regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g',
612     # rec('225','a')
613     # )
614     # );
615    
616    
617     #} else {
618    
619    
620 dpavlin 905 ### 440 - indikatori
621 dpavlin 1064 ## 2.ind. prema jeziku i èlanu, provjeriti
622 dpavlin 758
623 dpavlin 783 marc_indicators('440', ' ', '0');
624 dpavlin 751
625 dpavlin 1095 if ( rec('200','a') =~ m/^Einen / ) {
626     marc_indicators('440', ' ', 6);
627 dpavlin 816 }
628    
629 dpavlin 1095 if ( rec('200','a') =~ m/^Eine / ) {
630     marc_indicators('440', ' ', 5);
631 dpavlin 816 }
632    
633 dpavlin 1095 if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
634     marc_indicators('440', ' ', 4);
635     }
636    
637     if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
638 dpavlin 1064 marc_indicators('440', ' ', 3);
639 dpavlin 816 }
640    
641 dpavlin 1095 if ( rec('200','a') =~ m/^(A|L') / ) {
642     marc_indicators('440', ' ', 2);
643     }
644 dpavlin 824
645 dpavlin 1095 ## 440v nije ponovljivo
646 dpavlin 905
647 dpavlin 1095
648 dpavlin 1020 marc_template(
649     from => 225, to => 440,
650     subfields_rename => [
651     'a' => 'a',
652     'x' => 'x',
653     'v' => 'v',
654     'h' => 'n',
655     'i' => 'p',
656     'w' => 'v',
657     ],
658 dpavlin 1042 isis_template => [
659 dpavlin 1095 'a',
660     'a,|x',
661     'a,|x ;|v',
662     'a,|x.|i',
663     'a,|x.|i ;|w',
664     'a,|x.|h ;|w',
665     'a,|x.|h,|i ;|w',
666     'a,|x ;|v.|h ;|w',
667     'a,|x ;|v.|h,|i ;|w',
668     'a ;|v',
669 dpavlin 1064 'a ;|v.|i',
670 dpavlin 1095 'a ;|v.|h,|i',
671     'a ;|w',
672 dpavlin 1042 'a ;|v.|i ;|w',
673 dpavlin 1064 'a ;|v.|h,|i ;|w',
674     'a ;|v.|h ;|w',
675 dpavlin 1095 'a.|h,|i',
676     'a.|h,|i ;|w',
677     'a.|i',
678     'a.|i ;|w',
679     # gre¹ke
680 dpavlin 1064 'a ;|v ;|w',
681 dpavlin 1103 'a.|h',
682     'a.|h ;|w',
683     'a.|h ;|v',
684     'h,|i',
685     'h ;|v',
686     'i ;|w',
687     'v',
688     'w',
689 dpavlin 1090
690 dpavlin 1020 ],
691 dpavlin 1010 );
692 dpavlin 751
693 dpavlin 1095 #}
694 dpavlin 1010
695 dpavlin 1095 #marc_template(
696     # from => 225, to => 490,
697     # subfields_rename => [
698     # 'a' => 'a',
699     # 'x' => 'x',
700     # 'v' => 'v',
701     # 'h' => 'n',
702     # 'i' => 'p',
703     # 'w' => 'v',
704     # ],
705     # isis_template => [
706     # 'a.|h,|i ;|w',
707     # 'a.|h.|w',
708     # 'a.|i ;|w',
709     # 'a ;|v.|i',
710     # 'a ;|v.|i ;|w',
711     # 'a ;|v.|h,|i ;|w',
712     # 'a ;|v.|h ;|w',
713     # 'a ;|v ;|w',
714     # #mozda greska:
715     # 'a ;|v,|x ;|w',
716     # 'a ;|v,|x.|p',
717     # 'a,|x ;|v',
718     # 'a,|x.|p ;|w',
719     # ],
720     # from => "{ a => 1, i => 1, w => 1, \"x\" => 1 }",
721     # to => "{ a => 1, p => 1, v => 1, \"x\" => 1 }",
722     #
723     # marc_template => [
724     # 'a',
725     # 'a ;|v',
726     # 'a,|x',
727     # 'a.|n', # mozda greska
728     # 'a.|n,|p',
729     # 'a.|p',
730     # 'a ;|v.|n',
731     # 'a ;|v.|n,|p', # mozda greska
732     # 'n,|p',
733     # 'n ;|v', # mozda greska
734     # 'p ;|v',
735     # 'v',
736     # 'x',
737     # 'x ;|v' # greska
738     # ],
739     #);
740    
741    
742 dpavlin 1064 ## 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)
743    
744 dpavlin 876 #marc_compose('440',
745     # 'a', suffix(
746 dpavlin 1020 # ( rec('225','v') ) ? ' ;' :
747     # ( rec('225','w') ) ? ' ; ' :
748     # ( rec('225','x') ) ? ',' :
749     # ( rec('225','h') || rec('225','i') ) ? '.' :
750     # '.',
751     # frec('225','a')
752     # ),
753     # 'x',suffix(
754     # ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
755 dpavlin 876 # '',
756 dpavlin 1020 # frec('225','x')
757 dpavlin 824 # ),
758 dpavlin 1020 # 'v',suffix(
759     # ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
760     # ( rec('225','v') && rec('225','w') ) ? ' ; ' :
761 dpavlin 876 # '',
762 dpavlin 1020 # frec('225','v')
763 dpavlin 876 # ),
764 dpavlin 1020 # 'n',suffix(
765     # ( rec('225','h') && rec('225','i') ) ? ',' :
766     # ( rec('225','h') && rec('225','w') ) ? ' ; ' :
767 dpavlin 876 # '',
768 dpavlin 1020 # frec('225','h')
769 dpavlin 876 # ),
770 dpavlin 1020 # 'p',suffix(
771     # ( rec('225','i') && rec('225','w') ) ? ' ; ' :
772     # ( rec('225','i') && rec('225','x') ) ? ',' :
773     # '',
774     # frec('225','i')
775     # ),
776 dpavlin 1042 ## 225w treba ici u 440v, na kraj
777 dpavlin 1020 # '+', join_with(' ; ',
778     # rec('225','w'),
779     # )
780 dpavlin 876 #);
781 dpavlin 824
782 dpavlin 1020 #marc_original_order('440','225');
783 dpavlin 824
784 dpavlin 1020
785 dpavlin 876 #if (
786     # count( lookup(
787     # sub { 1 },
788     # 'ffps','libri',
789     # sub { rec('225','a') }
790     # ) ) > 1
791     #) {
792 dpavlin 783
793    
794 dpavlin 876 #_debug(0);
795 dpavlin 792
796 dpavlin 751
797 dpavlin 1042 ### 500
798 dpavlin 792
799 dpavlin 751 marc('500','a',
800     rec('300')
801     );
802    
803     marc('500','a',
804 dpavlin 773 rec('305')
805     );
806    
807     marc('500','a',
808     rec('307')
809     );
810    
811     marc('500','a',
812 dpavlin 751 rec('314')
813     );
814    
815 dpavlin 795 ### 502 - bilje¹ka o disertacijama
816 dpavlin 1042 ## odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
817 dpavlin 795
818 dpavlin 792 ### 504
819    
820 dpavlin 751 marc('504','a',
821     rec('320')
822     );
823    
824 dpavlin 1042 ### 505
825     ## FFPS 327 - sadrzaj
826     ## NSK konvertira 327 (NP) u 501 (R)
827     ## u LOC konv. tablici stoji 327 (NP) u 505 (NR)
828     ## standard i validacije dopu¹taju 501 (R) i 505 (R)
829 dpavlin 751
830 dpavlin 1095 if ( config() =~ m/ffps|fftu/ ) {
831 dpavlin 773 marc_indicators('505', '0', ' ');
832 dpavlin 758 marc('505','a',
833     regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
834     rec('327')
835     )
836     );
837     }
838 dpavlin 751
839 dpavlin 816 if ( config() =~ m/ffan/ ) {
840     marc_indicators('505', '0', ' ');
841     marc('505','a',
842     regex('s/[<>]//g',
843     rec('330')
844     )
845     );
846     }
847 dpavlin 751
848 dpavlin 792
849 dpavlin 751
850    
851 dpavlin 792 ### 520
852 dpavlin 1042 ## NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
853     ## FFPS 330 (NP) - sa¾etak
854 dpavlin 792
855 dpavlin 758 if ( config() =~ m/ffps/ ) {
856     marc('520','a',
857     regex('s/[\\r\\n]+/. /g',
858     rec('330')
859     )
860     );
861     }
862 dpavlin 751
863 dpavlin 816 ### 526 - STUDY PROGRAM INFORMATION NOTE
864 dpavlin 1042 ## provjeriti za svaku bazu sta je u 996?
865 dpavlin 751
866 dpavlin 816 marc_indicators('526', 8, ' ');
867 dpavlin 792
868 dpavlin 816 marc('526','a',
869     rec('996')
870     );
871 dpavlin 792
872 dpavlin 816 ### 538 - zahtjevi sustava
873    
874 dpavlin 773 marc('538','a',
875     rec('337','a')
876     );
877 dpavlin 758
878 dpavlin 792 ### 655
879    
880 dpavlin 751 marc_indicators('655', ' ', 4);
881     marc('655','a',
882     rec('608')
883     );
884    
885 dpavlin 792 ### 653
886 dpavlin 1095 ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
887 dpavlin 792
888 dpavlin 1095 marc_indicators('653', ' ', ' ');
889 dpavlin 751 marc('653','a',
890     rec('610')
891     );
892    
893 dpavlin 792 #_debug(2);
894 dpavlin 751
895    
896 dpavlin 792 ### 700
897 dpavlin 1042 ## ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
898 dpavlin 751
899     marc_indicators('700', 1, ' ');
900    
901     marc('700','a',
902 dpavlin 1095 rec('701', 'a'),
903 dpavlin 751 );
904    
905     marc('700','a',
906     join_with(', ',
907     rec('701', 'c'),
908     rec('701', 'd')
909     )
910     );
911    
912     marc('700','a',
913     join_with(', ',
914     rec('701', 'e'),
915     rec('701', 'f')
916     )
917     );
918    
919     marc('700','a',
920     join_with(', ',
921     rec('701', 'g'),
922     rec('701', 'h')
923     )
924     );
925    
926    
927     marc('700','a',
928 dpavlin 876 rec('702', 'a'),
929 dpavlin 751 );
930    
931     marc('700','a',
932     join_with(', ',
933     rec('702','c'),
934     rec('702','d')
935     )
936     );
937    
938     marc('700','a',
939     join_with(', ',
940     rec('702','e'),
941     rec('702','f')
942     )
943     );
944    
945     marc('700','a',
946     join_with(', ',
947     rec('702','g'),
948     rec('702','h')
949     )
950     );
951    
952     #_debug(0);
953    
954    
955 dpavlin 1042 ### 740 - nadopuniti
956 dpavlin 751
957 dpavlin 792 marc_indicators('740', 0, ' ');
958 dpavlin 751
959 dpavlin 792 # if ( ! rec('464') ) {
960     # marc('740','a',
961     # rec('200','c')
962     # );
963 dpavlin 751
964 dpavlin 807 marc('740','a',
965     rec('200','k')
966     );
967 dpavlin 751
968 dpavlin 792 # } else {
969 dpavlin 751
970 dpavlin 792 #marc('740','a',
971     # rec('464','a')
972     #);
973 dpavlin 751
974 dpavlin 792 # };
975 dpavlin 751
976    
977 dpavlin 1042 ### 760 w
978     ## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
979    
980 dpavlin 1064 #if (
981     # rec('225','a') # da li je nakladnièka cjelina?
982     #) {
983 dpavlin 1095
984 dpavlin 1064 #my $series_key =
985     #join_with('',
986     # rec('225','a'),
987     # rec('210','a'),
988     # rec('210','b'),
989     #);
990     #
991     #my $series = get( $series_key );
992     #
993     #if ($series) {
994     # warn "nije novi";
995     #} else {
996     #
997     #$series = join_with('',
998     # uc( config() ),
999     # ' LS',
1000     # rec('000')
1001     #);
1002     #
1003     #set( $series_key => $series );
1004     #
1005     #} # $series
1006     #} # nakladnièka cjelina
1007     #
1008     #my $series_key = join_with('',
1009     # rec('225','a'),
1010     # rec('210','a'),
1011     # rec('210','b'),
1012     #);
1013     #
1014     #if ($series_key) {
1015     #
1016     # marc_indicators('760', 0, ' ');
1017     #
1018 dpavlin 1095 # marc('760','t',
1019     # rec('225','a')
1020     # );
1021 dpavlin 1064 # marc('760','w',
1022     # get( $series_key )
1023     # );
1024     #}
1025 dpavlin 751
1026 dpavlin 1042 # ## testing
1027 dpavlin 792 #
1028     # my $dup_key = join_with('',
1029     # rec('200','a'),
1030     #);
1031     #
1032     #if ($dup_key) {
1033     # marc('995','a',
1034     # get( $dup_key )
1035     # );
1036     #}
1037     #
1038     #
1039     # marc_indicators('776', 0, ' ');
1040     #
1041     # marc('776','a',
1042     # rec('452','1')
1043     # );
1044     #
1045 dpavlin 751
1046    
1047 dpavlin 1095 ### 774 - Constituent Item Entry
1048     ### 787 - Nonspecific Relationship Entry
1049 dpavlin 783
1050 dpavlin 1095 marc_indicators('787','0',' ');
1051 dpavlin 773
1052 dpavlin 1095 marc_compose('787',
1053     'g', rec('230','v'),
1054     't', rec('230','a'),
1055     'b', rec('240','a'),
1056     'd', rec('250','a'),
1057     'd', rec('250','d'),
1058     'h', rec('260','a'),
1059     'k', rec('270','a'),
1060     'n', join_with('. - ',
1061     rec('280'),
1062     ),
1063     'x', rec('290'),
1064 dpavlin 816 );
1065 dpavlin 783
1066 dpavlin 1095 marc_compose('787',
1067     'g', rec('231','v'),
1068     't', rec('231','a'),
1069     'b', rec('241','a'),
1070     'd', rec('251','a'),
1071     'd', rec('251','d'),
1072     'h', rec('261','a'),
1073     'k', rec('271','a'),
1074     'n', join_with('. - ',
1075     rec('281'),
1076     ),
1077     'x', rec('291'),
1078     );
1079    
1080     marc_compose('787',
1081     'g', rec('232','v'),
1082     't', rec('232','a'),
1083     'b', rec('242','a'),
1084     'd', rec('252','a'),
1085     'd', rec('252','d'),
1086     'h', rec('262','a'),
1087     'k', rec('272','a'),
1088     'n', join_with('. - ',
1089     rec('282'),
1090     ),
1091     'x', rec('292'),
1092     );
1093    
1094     marc_compose('787',
1095     'g', rec('233','v'),
1096     't', rec('233','a'),
1097     'b', rec('243','a'),
1098     'd', rec('253','a'),
1099     'h', rec('263','a'),
1100     'k', rec('273','a'),
1101     'n', join_with('. - ',
1102     rec('283'),
1103     ),
1104     'x', rec('293'),
1105     );
1106    
1107    
1108    
1109     ### 852 - lokacija
1110    
1111    
1112    
1113     #marc('852','i',
1114     #
1115     #);
1116    
1117    
1118    
1119 dpavlin 903 ### 876 - item information - basic bibliographic unit
1120 dpavlin 783
1121 dpavlin 816 marc('876','a',
1122 dpavlin 1095 rec('991','t'),
1123 dpavlin 816 );
1124 dpavlin 783
1125 dpavlin 903 ### 886 - former marc
1126 dpavlin 783
1127 dpavlin 816 marc_indicators('886', 2, ' ');
1128 dpavlin 783
1129 dpavlin 816 marc('886','2',
1130     'ffmarc'
1131     );
1132 dpavlin 792
1133 dpavlin 816 marc('886','a',
1134     '994'
1135     );
1136 dpavlin 792
1137 dpavlin 816 marc('886','b',
1138     join_with(''.
1139     '##^a',
1140     join_with('',
1141     prefix('^a',
1142     rec('994','a'),
1143     ),
1144     prefix('^b',
1145     rec('994','b')
1146     )
1147     )
1148     )
1149     );
1150 dpavlin 792
1151 dpavlin 1095 ### KOHA
1152 dpavlin 792
1153 dpavlin 1095 marc('942','b',
1154     'LIB'
1155     );
1156    
1157     marc('942','c',
1158     'KNJ'
1159     );
1160    
1161     marc('942','d',
1162     join_with(' | ',
1163     rec('990')
1164     )
1165     );
1166    
1167     if ( config() =~ m/ffiz/ ) {
1168     my $novasig1 =
1169     lookup(
1170     sub { rec('C') },
1171     'ffiz','mapirano',
1172     sub { rec('B') },
1173     sub { rec('990') }
1174     );
1175     my $novasig2 =
1176     lookup(
1177     sub { rec('C') . ' ' . rec('D') },
1178     'ffiz','starasig',
1179     sub { rec('A') },
1180     sub { rec('000') },
1181     );
1182     marc('942','h',
1183     $novasig1
1184     );
1185     marc('942','i',
1186     $novasig2
1187     );
1188     }
1189    
1190    
1191     #if ( config() =~ m/ffsf|ffpo/ ) {
1192     # my $sig1 =
1193     # lookup(
1194     # sub { rec('C') },
1195     # 'ffiz','signature',
1196     # sub { rec('B') },
1197     # sub { frec('990') },
1198     # );
1199     # if ( rec('700','a') ) {
1200     # marc('942','h',
1201     # $sig1,
1202     # );
1203     # if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1204     # marc('942','i',
1205     # join_with(' ',
1206     # regex('s/(^.{3}).*/$1/',
1207     # uc ( rec('700','a') )
1208     # ),
1209     # regex('s/^.{4}(.{1}).*/$1/',
1210     # lc ( rec('200','a') )
1211     # )
1212     # )
1213     # );
1214     # } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
1215     # marc('942','i',
1216     # join_with(' ',
1217     # regex('s/(^.{3}).*/$1/',
1218     # uc ( rec('700','a') )
1219     # ),
1220     # regex('s/^.{3}(.{1}).*/$1/',
1221     # lc ( rec('200','a') )
1222     # )
1223     # )
1224     # );
1225     # } elsif ( rec('200','a') =~ m/^Eine / ) {
1226     # marc('942','i',
1227     # join_with(' ',
1228     # regex('s/(^.{3}).*/$1/',
1229     # uc ( rec('700','a') )
1230     # ),
1231     # regex('s/^.{5}(.{1}).*/$1/',
1232     # lc ( rec('200','a') )
1233     # )
1234     # )
1235     # );
1236     # } elsif ( rec('200','a') =~ m/^Einen / ) {
1237     # marc('942','i',
1238     # join_with(' ',
1239     # regex('s/(^.{3}).*/$1/',
1240     # uc ( rec('700','a') )
1241     # ),
1242     # regex('s/^.{6}(.{1}).*/$1/',
1243     # lc ( rec('200','a') )
1244     # )
1245     # )
1246     # );
1247     # } elsif ( rec('200','a') =~ m/^(A|L) / ) {
1248     # marc('942','i',
1249     # join_with(' ',
1250     # regex('s/(^.{3}).*/$1/',
1251     # uc ( rec('700','a') )
1252     # ),
1253     # regex('s/^.{2}(.{1}).*/$1/',
1254     # lc ( rec('200','a') )
1255     # )
1256     # )
1257     # );
1258     # } else {
1259     # marc('942','i',
1260     # join_with(' ',
1261     # regex('s/(^.{3}).*/$1/',
1262     # uc ( rec('700','a') )
1263     # ),
1264     # regex('s/(^.{1}).*/$1/',
1265     # lc ( rec('200','a') )
1266     # )
1267     # )
1268     # );
1269     # }
1270     # } elsif ( rec('710','a') ) {
1271     # marc('942','h',
1272     # $sig1,
1273     # );
1274     # if ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1275     # marc('942','i',
1276     # join_with(' ',
1277     # regex('s/(^.{3}).*/$1/',
1278     # uc ( rec('710','a') )
1279     # ),
1280     # regex('s/^.{4}(.{1}).*/$1/',
1281     # lc ( rec('200','a') )
1282     # )
1283     # )
1284     # );
1285     # } elsif ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
1286     # marc('942','i',
1287     # join_with(' ',
1288     # regex('s/(^.{3}).*/$1/',
1289     # uc ( rec('710','a') )
1290     # ),
1291     # regex('s/^.{3}(.{1}).*/$1/',
1292     # lc ( rec('200','a') )
1293     # )
1294     # )
1295     # );
1296     # } elsif ( rec('200','a') =~ m/^Eine / ) {
1297     # marc('942','i',
1298     # join_with(' ',
1299     # regex('s/(^.{3}).*/$1/',
1300     # uc ( rec('710','a') )
1301     # ),
1302     # regex('s/^.{5}(.{1}).*/$1/',
1303     # lc ( rec('200','a') )
1304     # )
1305     # )
1306     # );
1307     # } elsif ( rec('200','a') =~ m/^Einen / ) {
1308     # marc('942','i',
1309     # join_with(' ',
1310     # regex('s/(^.{3}).*/$1/',
1311     # uc ( rec('710','a') )
1312     # ),
1313     # regex('s/^.{6}(.{1}).*/$1/',
1314     # lc ( rec('200','a') )
1315     # )
1316     # )
1317     # );
1318     # } elsif ( rec('200','a') =~ m/^(A|L) / ) {
1319     # marc('942','i',
1320     # join_with(' ',
1321     # regex('s/(^.{3}).*/$1/',
1322     # uc ( rec('710','a') )
1323     # ),
1324     # regex('s/^.{2}(.{1}).*/$1/',
1325     # lc ( rec('200','a') )
1326     # )
1327     # )
1328     # );
1329     # } else {
1330     # marc('942','i',
1331     # join_with(' ',
1332     # regex('s/(^.{3}).*/$1/',
1333     # uc ( rec('710','a') )
1334     # ),
1335     # regex('s/(^.{1}).*/$1/',
1336     # lc ( rec('200','a') )
1337     # )
1338     # )
1339     # );
1340     # }
1341     # } elsif ( rec('200','a') =~ m/^(The|Die|Das|Der|Ein|Les) / ) {
1342     # marc('942','h',
1343     # $sig1,
1344     # );
1345     # marc('942','i',
1346     # regex('s/^.{4}(.{3}).*/$1/',
1347     # uc ( rec('200','a') )
1348     # ),
1349     # );
1350     #
1351     # } else {
1352     # marc('942','h',
1353     # $sig1,
1354     # );
1355     # marc('942','i',
1356     # regex('s/(^\w{3}).*/$1/',
1357     # uc ( rec('200','a') )
1358     # )
1359     # )
1360     # }
1361     #} # if config()
1362    
1363     marc('952','8',
1364     rec('991','8')
1365     );
1366    
1367     marc('952','a',
1368     rec('991','a')
1369     );
1370    
1371     marc('952','b',
1372     rec('991','b')
1373     );
1374    
1375     marc('952','c',
1376     rec('991','c'),
1377     );
1378    
1379     marc('952','i',
1380     rec('991','i')
1381     );
1382    
1383     marc('952','y',
1384     rec('991','y')
1385     );
1386    
1387    
1388    
1389    
1390 dpavlin 795 } # polje 200a
1391 dpavlin 1095 # } sig

  ViewVC Help
Powered by ViewVC 1.1.26