/[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 783 - (show annotations)
Wed Dec 6 23:42:20 2006 UTC (17 years, 4 months ago) by dpavlin
File MIME type: text/plain
File size: 9525 byte(s)
local

1 # ne konvertira se ako nema polje 200^a
2
3 if ( rec('200','a') ) {
4
5 # Leader
6 # raspraviti 17,18
7 #
8 # u nekim knji¾nicama koristi se 999a i 999b
9 #
10 # vrijedi za ffan...
11
12 if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
13 marc_leader('05','c');
14 } else {
15 marc_leader('05','n');
16 }
17
18 marc_leader('06','a');
19 marc_leader('07','m');
20 marc_leader('18','i');
21
22 if ( rec('230') ) {
23 marc_leader('19','r');
24 }
25
26 # 001 polje - Voyager
27 #
28 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
29 # u marc 035a - System Number - ??
30 # NSK zapisuje Voyagerov ID (001) - kako ???
31
32
33 marc('035','6',
34 join_with('',
35 # config('input normalize path'),
36 # config('name'),
37 config(),
38 'L',
39 # config('input name'),
40 # id(),
41 # rec('994','a'),
42 rec('000')
43 )
44 );
45
46
47 # FFSF - nekoliko zaredanih ISBN, odvojenih s '. - '
48 # drugi ISBN poèinje prefixom ISBN
49
50 marc('020','a',
51 regex('s/ ISBN //g',
52 rec('10')
53 )
54 );
55
56 # u polje 040a - prefiks HR ?
57 # NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
58
59 marc('040','a',
60 'HR FFZG'
61 );
62
63 marc('040','b',
64 'hrv'
65 );
66
67 marc('040','e',
68 'HR PPIAK'
69 );
70
71 if ( rec('300') && first(rec('300')) =~ m/Prijevod/) {
72 marc_indicators('041', 1, ' ');
73 } else {
74 marc_indicators('041', 0, ' ');
75 }
76
77 ## naæi primjer u NSK
78
79 #_debug(2);
80 marc_repeatable_subfield('041','a',
81 rec('101')
82 );
83 #_debug(0);
84
85 # indikatori za èlanove. treba uvjetovati prema jezicima !!
86
87 marc_indicators('245', 0, 0);
88
89 if ( ( rec('200','a') =~ m/^Die /) ||
90 ( rec('200','a') =~ m/^Das /) ||
91 ( rec('200','a') =~ m/^The /) ) {
92 marc_indicators('245', 0, 4);
93 }
94
95 if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
96 {
97 marc_indicators('245', 0, 2);
98 }
99
100
101
102
103 #_debug(3);
104
105 marc_compose('245',
106 'a', suffix(
107 rec('200','b') ? '. ' :
108 rec('200','k') ? ' ; ' :
109 rec('200','d') ? ' = ' :
110 rec('200','e') ? ' : ' :
111 rec('200','f') ? ' / ' :
112 '.',
113 rec('200','a')
114 ),
115 # 'h', rec('200','b'),
116 'b', suffix(
117 ( rec('200','k') && rec('200','f') ) ? ' / ' :
118 ' ',
119 join_with(' ; ',
120 rec('200','k'),
121 ),
122 ),
123 'b', suffix(
124 ( rec('200','d') && rec('200','f') ) ? ' / ' :
125 ' ',
126 rec('200','d'),
127 ),
128 'b', suffix(
129 ( rec('200','e') && rec('200','f') ) ? ' / ' :
130 ' ',
131 join_with(' : ',
132 rec('200','e'),
133 ),
134 ),
135
136 'c', rec('200','f'),
137
138 # append to last subfield
139 '+', prefix('. ', rec('200','c') ),
140 );
141
142
143 #marc('440','a',
144 # suffix(
145 # rec('225','e') ? ' : ' :
146 # rec('225','v') ? ' ; ' :
147 # '. ',
148 # rec('225','a'),
149 # )
150 #);
151
152
153
154
155
156
157 #_debug(0);
158
159 marc('250','a',
160 suffix(
161 rec('205','f') ? ' / ' :
162 ' '.
163 rec('205','a')
164 )
165 );
166
167 marc('250','b',
168 rec('205','f')
169 );
170
171 # ponovljiva potpolja u originalnom redosljedu
172
173 marc_original_order('260', '210');
174
175
176 # provjeriti interpunkcije !!
177 # u NSK nesto ne stima
178
179 marc('300','a',
180 suffix(
181 rec('215','c') ? ' : ' :
182 rec('215','d') ? ' ; ' :
183 rec('215','e') ? ' + ' :
184 ' ',
185 rec('215','a')
186 )
187 );
188
189 marc('300','b',
190 suffix(
191 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
192 ( rec('215','c') && rec('215','e') ) ? ' + ' :
193 ' ',
194 rec('215','c')
195 )
196 );
197
198 marc('300','c',
199 suffix(
200 rec('215','e') ? ' + ' :
201 ' ',
202 rec('215','d')
203 )
204 );
205
206 marc('300','e',
207 rec('215','e')
208 );
209
210
211 # provjeriti
212
213 marc_indicators('440', ' ', '0');
214
215 marc('440','a',
216 join_with(' / ',
217 rec('225','a'),
218 rec('225','f')
219 )
220 );
221
222 #marc('440','a',
223 # join_with(' : ',
224 # rec('225','a'),
225 # join_with(" = ",
226 # rec('225','d'),
227 # join_with(" / ",
228 # rec('225','e'),
229 # rec('225','f')
230 # )
231 # )
232 # )
233 #);
234
235 marc('440','h',
236 rec('225','h')
237 );
238
239 marc('440','p',
240 rec('225','i')
241 );
242
243 marc('440','v',
244 join_with(', ',
245 rec('225','v'),
246 rec('225','w')
247 ),
248 );
249
250 marc('440','x',
251 rec('225','x')
252 );
253
254 #marc('490','v',
255 # join2_with(225, 'v', ' , ', 225,'w');
256 # join_with(', ',
257 # rec('225','v'),
258 # rec('225','w')
259 # )
260 #);
261
262 marc('500','a',
263 rec('300')
264 );
265
266 marc('500','a',
267 rec('305')
268 );
269
270 marc('500','a',
271 rec('307')
272 );
273
274 marc('500','a',
275 rec('314')
276 );
277
278 marc('504','a',
279 rec('320')
280 );
281
282 ## napomene uz konverziju polja 327 (sadrzaj):
283 # NSK konvertira 327 (NP) u 501 (R)
284 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
285 # standard i validacije dopu¹taju 501 (R) i 505 (R)
286
287 ## FFPS 327 - sadrzaj
288 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
289 marc_indicators('505', '0', ' ');
290 marc('505','a',
291 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
292 rec('327')
293 )
294 );
295 }
296
297
298 ## napomene uz konverziju polja 330:
299 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
300
301
302 # FFPS 330 (NP) - sa¾etak
303 if ( config() =~ m/ffps/ ) {
304 marc('520','a',
305 regex('s/[\\r\\n]+/. /g',
306 rec('330')
307 )
308 );
309 }
310
311 # FFTU 330 - ???
312 if ( config() =~ m/fftu/ ) {
313 marc('520','a',
314 rec('330')
315 );
316 }
317
318 marc('538','a',
319 rec('337','a')
320 );
321
322
323 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
324
325 marc_indicators('246', 1, 3);
326 marc('246','a',
327 rec('532')
328 );
329
330 marc_indicators('655', ' ', 4);
331 marc('655','a',
332 rec('608')
333 );
334
335 marc_indicators('653', 0, ' ');
336 marc('653','a',
337 rec('610')
338 );
339
340 # 675 podpolja c, d ... - ¹to s njima ???
341
342 marc('080','a',
343 rec('675','a')
344 );
345
346 # 084 je other classification (R)
347 # NSK ga koristi za struènu oznaku NSK iz polja 681
348 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
349 #
350 # polje 686 koristi FFPS
351
352 marc('084','a',
353 rec('686')
354 );
355
356 marc_indicators('100', 1, ' ');
357 marc('100','a',
358 join_with(', ',
359 rec('700', 'a'),
360 rec('700', 'b')
361 )
362 );
363
364 #_debug(2);
365
366 marc_indicators('700', 1, ' ');
367
368 if ( rec('701') ) {
369 marc('700','4',
370 'aut'
371 );
372 }
373
374 marc('700','a',
375 join_with(', ',
376 rec('701', 'a'),
377 rec('701', 'b')
378 )
379 );
380
381 marc('700','a',
382 join_with(', ',
383 rec('701', 'c'),
384 rec('701', 'd')
385 )
386 );
387
388 marc('700','a',
389 join_with(', ',
390 rec('701', 'e'),
391 rec('701', 'f')
392 )
393 );
394
395 marc('700','a',
396 join_with(', ',
397 rec('701', 'g'),
398 rec('701', 'h')
399 )
400 );
401
402
403 marc('700','a',
404 rec('702','a'),
405 );
406
407
408 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
409
410
411 marc('700','a',
412 join_with(', ',
413 rec('702','c'),
414 rec('702','d')
415 )
416 );
417
418 marc('700','a',
419 join_with(', ',
420 rec('702','e'),
421 rec('702','f')
422 )
423 );
424
425 marc('700','a',
426 join_with(', ',
427 rec('702','g'),
428 rec('702','h')
429 )
430 );
431
432 ## treba provjeriti da li polje 330 sadrzi jos neke podatke koji mogu biti u <> ili su tu iskljucivo autori? da li samo autori ili neke druge osobe?
433
434
435 # marc('700','a',
436 # rec('330','a')
437 # );
438 #
439 #
440 # marc('700','a',
441 # rec('330','b')
442 # );
443 #
444 # marc('700','a',
445 # rec('330','c')
446 # );
447 #
448 #
449 # marc('700','a',
450 # rec('330','d')
451 # );
452 #
453 # marc('700','a',
454 # rec('330','e')
455 # );
456 #
457 # marc('700','a',
458 # rec('330','f')
459 # );
460
461 #_debug(0);
462
463
464 if ( rec('710','f') ) {
465
466 marc_indicators('111', 2, ' ');
467 marc('111','a',
468 rec('710','a')
469 );
470
471 marc('111','c',
472 rec('710','e')
473 );
474
475 marc('111','d',
476 rec('710','f')
477 );
478
479 marc('111','e',
480 rec('710','b')
481 );
482
483 marc('111','n',
484 rec('710','d')
485 );
486
487
488 } else {
489
490 marc_indicators('110', 2, ' ');
491 marc('110','a',
492 rec('710','a')
493 );
494
495 marc('110','c',
496 rec('710','c')
497 );
498
499 };
500
501
502 marc_indicators('740', 0, ' ');
503
504 # if ( ! rec('464') ) {
505 # marc('740','a',
506 # rec('200','c')
507 # );
508
509 # marc('740','a',
510 # rec('200','k')
511 # );
512
513 # } else {
514
515 marc('740','a',
516 rec('464','a')
517 );
518
519 # };
520
521
522
523 ## vi¹erazinci
524
525 if ( rec('230') ) {
526
527 marc_duplicate();
528
529 marc_remove('035');
530 marc('035','6',
531 join_with('',
532 config(),
533 rec('000'),
534 '-',
535 id(),
536 )
537 );
538
539
540 marc_remove('245');
541
542 if ( rec('230','a') ) {
543 marc_compose('245',
544 'a', suffix(
545 rec('230','b') ? '. ' :
546 rec('230','k') ? ' ; ' :
547 rec('230','d') ? ' = ' :
548 rec('230','e') ? ' : ' :
549 rec('230','f') ? ' / ' :
550 '.',
551 rec('230','a')
552 ),
553 'b',
554 join_with(' ; ',
555 rec('230','k'),
556 ),
557 'b', rec('230','d'),
558 'b',
559 join_with(' : ',
560 rec('230','e'),
561 ),
562 'c',
563 join_with(' ; ',
564 rec('230','f'),
565 ),
566 );
567
568 } else {
569
570 marc_compose('245',
571 'a', suffix(
572 rec('230','b') ? '. ' :
573 rec('230','k') ? ' ; ' :
574 rec('230','d') ? ' = ' :
575 rec('230','e') ? ' : ' :
576 rec('230','f') ? ' / ' :
577 '.',
578 rec('200','a')
579 ),
580 'b',
581 join_with(' ; ',
582 rec('230','k'),
583 ),
584 'b', rec('230','d'),
585 'b',
586 join_with(' : ',
587 rec('230','e'),
588 ),
589 'c',
590 join_with(' ; ',
591 rec('230','f'),
592 ),
593 'n', rec('230','v'),
594 );
595
596 }
597
598 marc_remove('260');
599
600 # marc_original_order('260', '250');
601
602 marc('260','c',
603 rec1('251')
604 );
605
606
607 # marc('260','a',
608 # rec('251','a')
609 # );
610 # marc('260','b',
611 # rec('251','c')
612 # );
613 # marc('260','c',
614 # rec('251','d'),
615 # rec1('251')
616 # );
617
618 marc_remove('300');
619 marc('300','a',
620 rec('260')
621 );
622
623 marc_remove('440');
624 marc('440','a',
625 rec('270')
626 );
627
628 marc_remove('500');
629 marc('500','a',
630 rec('280')
631 );
632
633 marc_remove('020');
634 marc('020','a',
635 rec('290')
636 );
637
638 marc_indicators('774', 0, ' ');
639 marc('774','g',
640 rec('230','v')
641 );
642
643 marc('774','t',
644 rec('200','a')
645 );
646
647 marc('774','w',
648 join_with('',
649 config(),
650 rec('000')
651 )
652 );
653
654
655 };
656
657 my $nak_cj = get( rec('225','a') );
658
659 if ($nak_cj) {
660
661 marc('760','w',
662 $nak_cj
663 );
664
665 }
666
667 marc_indicators('776', 0, ' ');
668
669 marc('776','a',
670 rec('452','1')
671 );
672
673 #marc('900','a',
674 # lookup(
675 # sub { rec('000') },
676 # 'ffps','libri',
677 # sub { rec('200','a') . rec('200','f') . rec('205') },
678 # )
679 #);
680
681 #marc('901','a',
682 # lookup(
683 # sub { 'NSK: ' . rec('200','a') },
684 # 'nsk','baza',
685 # sub { rec('200','a') },
686 # sub { rec('10') }
687 # )
688 #);
689
690 if ( ! rec('464') && rec('200','c') ) {
691 marc('003','a',
692 'ima-200c-nema-464'
693 );
694 }
695
696 if ( ! rec('464') && rec('200','k') ) {
697 marc('005','a',
698 'ima-200k-nema-464'
699 );
700 }
701
702 if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
703 marc('006','a',
704 'ima-464-nema-200c-ili-200k'
705 );
706 }
707
708
709
710 }

  ViewVC Help
Powered by ViewVC 1.1.26