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

  ViewVC Help
Powered by ViewVC 1.1.26