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