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