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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1095 - (show annotations)
Fri Aug 1 23:41:47 2008 UTC (15 years, 9 months ago) by dpavlin
File MIME type: text/plain
File size: 23116 byte(s)
local changes

1
2 # 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 ## konvertira se ako postoji polje 200^a
8
9 if ( rec('200','a') ) {
10
11 ### LEADER
12
13 ## LDR 05 - c = pregledan ; n = new
14 ## 999^aP - SFM
15
16 if ( rec('999','a') && rec('999','a') =~ m/(pregledan|P)/i) {
17 marc_leader('05','c');
18 } else {
19 marc_leader('05','n');
20 }
21
22 ## LDR 06 - a - language material
23
24 marc_leader('06','a');
25
26 ## LDR 07 - m - Monograph/item
27
28 marc_leader('07','m');
29
30 ## LDR 17 - 3
31 marc_leader('17','7');
32
33 ## LDR 18
34 marc_leader('18','i');
35
36 ## LDR 19 - razjasniti
37 # nema vi¹e r, ima #, a, b ili c
38
39 if ( rec('230') | rec('231') | rec('232') | rec('233') ) {
40 marc_leader('19','a');
41 }
42
43 ### 008 - All materials
44 ## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
45 ## ostaviti prazno tamo gdje nema ni¹ta
46
47 if ( rec('994','c') =~ m/\d{8}/ ) {
48 marc_fixed('008','00',
49 regex('s/^\d\d//',
50 rec('994','c')
51 ),
52 );
53 } elsif ( rec('994','c') =~ m/\d{6}/ ) {
54 marc_fixed('008', 00,
55 regex('s/^\d\d//',
56 rec('994','c')
57 ),
58 );
59 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 }
72
73 #warn( dump(
74 # regex('s/^\d\d//',
75 # rec('994','c')
76 # ),
77 #)
78 #);
79
80 ## 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 ## srediti sve moguæe upitne godine
84
85 if ( rec('210','c') ) {
86 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
108 marc_fixed('008','07',$d1); # 07-10 - Date 1
109 marc_fixed('008','11',$d2); # 07-10 - Date 1
110
111 } else {
112 marc_fixed('008','06','n'); # 06 - n = unknown date
113 marc_fixed('008','07','uuuu');
114 }
115
116
117 ## 008 11-14 - Date 2
118
119 ## 008 15-17 - Place of publication, production, or execution - ¹to ako nema 102?
120 ## raspraviti
121
122 marc_fixed('008','15','xx');
123
124 #marc_fixed('008','15',
125 # lc ( rec('102') )
126 #);
127
128 #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
140
141 ## 008 35-37 - Language
142 marc_fixed('008','35',
143 # first( lc(rec('101')) )
144 lc( frec('101'))
145 );
146
147 ## 008 38 - Modified record - razjasniti
148 marc_fixed('008','38','|');
149
150 ## 008 39 - Cataloging source - d (other)
151 marc_fixed('008','39','d');
152
153 ### 008 - Books - raspraviti upotrebu ovih polja
154 ## 008 18-21 - Illustrations
155 if ( rec('215','c') && rec('215','c') =~ m/ilustr/ ) {
156 marc_fixed('008','18','a')
157 }
158
159 ## 008 22 - Target audience
160 marc_fixed('008','22','|');
161
162 ## 008 23 - Form of item
163
164 ## 008 24-27 - Nature of contents
165 marc_fixed('008','24','||||');
166
167 ## 008 28 - Government publication
168 marc_fixed('008','28','|');
169
170 ## 008 29 - Conference publication
171 marc_fixed('008','29','|');
172
173 ## 008 30 - Festschrift
174 marc_fixed('008','30','|');
175
176 ## 008 31 - Index
177 marc_fixed('008','31','|');
178
179 ## 008 32 - Undefined
180 ## 008 33 - Literary form
181 marc_fixed('008','33','|');
182
183 ## 008 34 - Biography
184 marc_fixed('008','34','|');
185
186 ### 020
187 ## modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
188
189 if ( frec('10') ne ( frec('290') ) ) {
190 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 regex('s/\s\s/ /g',
203 rec('10','a')
204 )
205 );
206 }
207 marc('020','z',
208 rec('10','z')
209 );
210
211 }
212
213 #warn(
214 # dump(
215 # frec('10')
216 # ),
217 #);
218
219 ### 035$
220 ## 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
224 marc('035','a',
225 join_with('',
226 # config('input normalize path'),
227 # config('name'),
228 'HR-ZaFF ',
229 config(),
230 'L-',
231 # config('input name'),
232 # id(),
233 # rec('994','a'),
234 rec('000')
235 )
236 );
237
238 ### 040
239 ## za sve je isti
240
241 marc('040','a',
242 'HR-ZaFF'
243 );
244
245 marc('040','b',
246 'hrv'
247 );
248
249 marc('040','c',
250 'HR-ZaFF'
251 );
252
253 marc('040','e',
254 'ppiak'
255 );
256
257
258 ### 041 - indikatori
259 ## 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
269 #if ( rec('675') =~ m/\d=\d/ ) ?
270
271 if (
272 grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik|nas.*izv*]/i, rec('300') ) ||
273 grep( m/[preve|prijevod]/i, rec('200','f')) ||
274 grep( m/[preve|prijevod]/i, rec('200','g'))
275 ) {
276 marc_indicators('041', 1, ' ');
277 } else {
278 marc_indicators('041', 0, ' ');
279 }
280
281 ### 041
282 ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a)
283
284 #_debug(2);
285
286 marc_repeatable_subfield('041','a',
287 map { lc($_) } rec('101')
288 );
289
290 #_debug(0);
291
292 ### 044
293 ## kako dobiti zemlju izdavanja?
294
295 ### 080
296 ## 675 podpolja b, c, d ... - ¹to s njima? - provjeriti za svaku bazu
297
298 marc('080','a',
299 rec('675','a')
300 );
301
302 marc('080','a',
303 rec('675','b')
304 );
305
306 marc('080','a',
307 rec('675','c')
308 );
309
310 marc('080','a',
311 rec('675','d')
312 );
313
314
315 ### 084 - other classification (R)
316 ## 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
320 marc('084','a',
321 rec('686')
322 );
323
324 ### 100
325 ## I1 = 0 ako je pseudonim (ima 700a, nema 700b)
326
327 if ( rec('700','a') && ! rec('700','b') ) {
328 marc_indicators('100', 0, ' ');
329 } else {
330 marc_indicators('100', 1, ' ');
331 }
332
333 marc('100','a',
334 join_with(', ',
335 rec('700', 'a'),
336 rec('700', 'b')
337 )
338 );
339
340 ### formalna odrednica - iz 503 u 110, i1=0, i2=1
341
342 ### 111 i 110
343 ## konverzija u 110 ili 111 ovisno o postojanju/nepostojanju nekih polja - provjeriti ispise naslova iz svake baze - moguæe su gre¹ke.
344
345 # ovo vrijedi za FFSFB
346 if ( rec('710','d') || rec('710','e') || rec('710','f') ) {
347
348 marc_indicators('111', 2, ' ');
349
350 marc_compose('111',
351 'a', suffix(
352 rec('710','b') ? '.' :
353 '',
354 rec('710','a'),
355 ),
356 'e', rec('710','b'),
357 '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 );
376
377
378 } else {
379
380 marc_indicators('110', 2, ' ');
381
382 marc('110','a',
383 rec('710','a')
384 );
385
386 marc('110','b',
387 rec('710','b')
388 );
389
390 if ( rec('710','c') ) {
391 marc('110','c',
392 surround('(', ')', rec('710','c'))
393 );
394 }
395
396 }
397
398
399 ### 245 indikatori
400 ## 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
404 my $i1;
405
406 if ( rec('700') || rec('710') ) {
407 $i1 = 1;
408
409 } else {
410 $i1 = 0;
411 }
412
413 marc_indicators('245', $i1, 0);
414
415 if ( rec('200','a') =~ m/^Einen / ) {
416 marc_indicators('245', $i1, 6);
417 }
418
419 if ( rec('200','a') =~ m/^Eine / ) {
420 marc_indicators('245', $i1, 5);
421 }
422
423 if ( rec('200','a') =~ m/^(Die|Das|Der|Ein|Les|The) / ) {
424 marc_indicators('245', $i1, 4);
425 }
426
427 if ( rec('200','a') =~ m/^(Um|Un|An|La|Le|Il) / ) {
428 marc_indicators('245', $i1, 3);
429 }
430
431 if ( rec('200','a') =~ m/^(A|L) / ) {
432 marc_indicators('245', $i1, 2);
433 }
434
435 if ( rec('200','a') =~ m/^L'/ ) {
436 marc_indicators('245', $i1, 2);
437 }
438
439
440 ### 245
441 ## potpolja i interpunkcije pripremljeni u modify
442 ## da li treba makivati razmake u inicijalima?
443
444 #_debug(3);
445
446 marc_compose('245',
447 'a', suffix(
448 ( ! ( 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 '.',
453 rec('200','a'),
454 ),
455 'b', suffix(
456 ( rec('200','d') && rec('200','f') ) ? ' /' :
457 ( rec('200','d') && rec('200','c') ) ? '.' :
458 '',
459 rec('200','d'),
460 ),
461 'b', suffix(
462 ( rec('200','e') && rec('200','f') ) ? ' /' :
463 ( rec('200','e') && rec('200','c') ) ? '.' :
464 '',
465 rec('200','e'),
466 ),
467 'b', suffix(
468 ( rec('200','k') && rec('200','f') ) ? ' /' :
469 ( rec('200','k') && rec('200','c') ) ? '.' :
470 '',
471 rec('200','k'),
472 ),
473 'c', suffix(
474 ( rec('200','f') && rec('200','c') ) ? '.' :
475 '',
476 join_with(' ; ',
477 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 )
484 ),
485 ## append to last subfield
486 '+', suffix('.',
487 rec('200','c'),
488 ),
489 );
490
491 #_debug(0);
492
493 ### 246
494 ## 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
499 marc_indicators('246', 3, ' ');
500 marc('246','a',
501 rec('532')
502 );
503
504 ### 250
505 ## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti
506
507 marc_compose('250',
508 'a',suffix(
509 rec('205','f') ? ' / ' :
510 '',
511 rec('205','a')
512 ),
513 'b', rec('205','f'),
514 );
515
516 ### 260
517 ## ponovljiva potpolja u originalnom redosljedu - priprema u modify
518
519 marc_original_order('260', '210');
520
521
522 ### 300
523 ## urediti interpunkcije za sve kombinacije
524
525 marc('300','a',
526 suffix(
527 rec('215','c') ? ' : ' :
528 rec('215','d') ? ' ; ' :
529 rec('215','e') ? ' + ' :
530 '',
531 rec('215','a')
532 )
533 );
534
535 marc('300','b',
536 suffix(
537 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
538 ( rec('215','c') && rec('215','e') ) ? ' + ' :
539 '',
540 rec('215','c')
541 )
542 );
543
544 marc('300','c',
545 suffix(
546 rec('215','e') ? ' + ' :
547 '.',
548 rec('215','d')
549 )
550 );
551
552 marc('300','e',
553 rec('215','e')
554 );
555
556 ### 362 - brojèani podaci za nakladnièku cjelinu - razjasniti upotrebu
557
558 # 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 ### 440 - indikatori
621 ## 2.ind. prema jeziku i èlanu, provjeriti
622
623 marc_indicators('440', ' ', '0');
624
625 if ( rec('200','a') =~ m/^Einen / ) {
626 marc_indicators('440', ' ', 6);
627 }
628
629 if ( rec('200','a') =~ m/^Eine / ) {
630 marc_indicators('440', ' ', 5);
631 }
632
633 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 marc_indicators('440', ' ', 3);
639 }
640
641 if ( rec('200','a') =~ m/^(A|L') / ) {
642 marc_indicators('440', ' ', 2);
643 }
644
645 ## 440v nije ponovljivo
646
647
648 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 isis_template => [
659 '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 'a ;|v.|i',
670 'a ;|v.|h,|i',
671 'a ;|w',
672 'a ;|v.|i ;|w',
673 'a ;|v.|h,|i ;|w',
674 'a ;|v.|h ;|w',
675 'a.|h,|i',
676 'a.|h,|i ;|w',
677 'a.|i',
678 'a.|i ;|w',
679 # gre¹ke
680 'a ;|v ;|w',
681 'a.|h',
682 'a.|h ;|w',
683 'a.|h ;|v',
684 'h,|i',
685 'h ;|v',
686 'i ;|w',
687 'v',
688 'w',
689
690 ],
691 );
692
693 #}
694
695 #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 ## 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 #marc_compose('440',
745 # 'a', suffix(
746 # ( 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 # '',
756 # frec('225','x')
757 # ),
758 # 'v',suffix(
759 # ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' :
760 # ( rec('225','v') && rec('225','w') ) ? ' ; ' :
761 # '',
762 # frec('225','v')
763 # ),
764 # 'n',suffix(
765 # ( rec('225','h') && rec('225','i') ) ? ',' :
766 # ( rec('225','h') && rec('225','w') ) ? ' ; ' :
767 # '',
768 # frec('225','h')
769 # ),
770 # 'p',suffix(
771 # ( rec('225','i') && rec('225','w') ) ? ' ; ' :
772 # ( rec('225','i') && rec('225','x') ) ? ',' :
773 # '',
774 # frec('225','i')
775 # ),
776 ## 225w treba ici u 440v, na kraj
777 # '+', join_with(' ; ',
778 # rec('225','w'),
779 # )
780 #);
781
782 #marc_original_order('440','225');
783
784
785 #if (
786 # count( lookup(
787 # sub { 1 },
788 # 'ffps','libri',
789 # sub { rec('225','a') }
790 # ) ) > 1
791 #) {
792
793
794 #_debug(0);
795
796
797 ### 500
798
799 marc('500','a',
800 rec('300')
801 );
802
803 marc('500','a',
804 rec('305')
805 );
806
807 marc('500','a',
808 rec('307')
809 );
810
811 marc('500','a',
812 rec('314')
813 );
814
815 ### 502 - bilje¹ka o disertacijama
816 ## odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti?
817
818 ### 504
819
820 marc('504','a',
821 rec('320')
822 );
823
824 ### 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
830 if ( config() =~ m/ffps|fftu/ ) {
831 marc_indicators('505', '0', ' ');
832 marc('505','a',
833 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
834 rec('327')
835 )
836 );
837 }
838
839 if ( config() =~ m/ffan/ ) {
840 marc_indicators('505', '0', ' ');
841 marc('505','a',
842 regex('s/[<>]//g',
843 rec('330')
844 )
845 );
846 }
847
848
849
850
851 ### 520
852 ## NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
853 ## FFPS 330 (NP) - sa¾etak
854
855 if ( config() =~ m/ffps/ ) {
856 marc('520','a',
857 regex('s/[\\r\\n]+/. /g',
858 rec('330')
859 )
860 );
861 }
862
863 ### 526 - STUDY PROGRAM INFORMATION NOTE
864 ## provjeriti za svaku bazu sta je u 996?
865
866 marc_indicators('526', 8, ' ');
867
868 marc('526','a',
869 rec('996')
870 );
871
872 ### 538 - zahtjevi sustava
873
874 marc('538','a',
875 rec('337','a')
876 );
877
878 ### 655
879
880 marc_indicators('655', ' ', 4);
881 marc('655','a',
882 rec('608')
883 );
884
885 ### 653
886 ## da li ponovljivo polje ili potpolje, pogledati u Koha tags
887
888 marc_indicators('653', ' ', ' ');
889 marc('653','a',
890 rec('610')
891 );
892
893 #_debug(2);
894
895
896 ### 700
897 ## ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
898
899 marc_indicators('700', 1, ' ');
900
901 marc('700','a',
902 rec('701', 'a'),
903 );
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 rec('702', 'a'),
929 );
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 ### 740 - nadopuniti
956
957 marc_indicators('740', 0, ' ');
958
959 # if ( ! rec('464') ) {
960 # marc('740','a',
961 # rec('200','c')
962 # );
963
964 marc('740','a',
965 rec('200','k')
966 );
967
968 # } else {
969
970 #marc('740','a',
971 # rec('464','a')
972 #);
973
974 # };
975
976
977 ### 760 w
978 ## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim
979
980 #if (
981 # rec('225','a') # da li je nakladnièka cjelina?
982 #) {
983
984 #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 # marc('760','t',
1019 # rec('225','a')
1020 # );
1021 # marc('760','w',
1022 # get( $series_key )
1023 # );
1024 #}
1025
1026 # ## testing
1027 #
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
1046
1047 ### 774 - Constituent Item Entry
1048 ### 787 - Nonspecific Relationship Entry
1049
1050 marc_indicators('787','0',' ');
1051
1052 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 );
1065
1066 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 ### 876 - item information - basic bibliographic unit
1120
1121 marc('876','a',
1122 rec('991','t'),
1123 );
1124
1125 ### 886 - former marc
1126
1127 marc_indicators('886', 2, ' ');
1128
1129 marc('886','2',
1130 'ffmarc'
1131 );
1132
1133 marc('886','a',
1134 '994'
1135 );
1136
1137 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
1151 ### KOHA
1152
1153 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 } # polje 200a
1391 # } sig

  ViewVC Help
Powered by ViewVC 1.1.26