local config
[webpac2] / conf / normalize / ff-peri.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 marc('022','a',
53         rec('11')
54 );
55
56 # u polje 040a mo¾da jo¹ dodati 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 ## naci primjer u NSK
78
79 marc_repeatable_subfield('041','a',
80         rec('101')
81 );
82
83
84 if (    ( rec('200','a') =~ m/^Die /) || 
85         ( rec('200','a') =~ m/^Das /) || 
86         ( rec('200','a') =~ m/^The /) ) {
87                 marc_indicators('245', 0, 4);
88 } else {
89         marc_indicators('245', 0, 0);
90 }
91
92 #_debug(3);
93
94 marc_compose('245',
95         'a', suffix(
96                 rec('200','b') ? '. '   :
97                 rec('200','k') ? ' ; '  :
98                 rec('200','d') ? ' = '  :
99                 rec('200','e') ? ' : '  :
100                 rec('200','f') ? ' / '  :
101                                  '.',
102                         rec('200','a')
103         ),
104         'h', rec('200','b'),
105         'b', suffix(
106                 ( rec('200','k') && rec('200','f') ) ? ' / ' :
107                                      ' ',
108                         join_with(' ; ',
109                                 rec('200','k'),
110                         ),
111         ),
112         'b', suffix(
113                 ( rec('200','d') && rec('200','f') ) ? ' / ' :
114                                                        ' ',
115                                 rec('200','d'), 
116         ),
117         'b', suffix(
118                 ( rec('200','e') && rec('200','f') ) ? ' / ' :
119                                                        ' ',
120                         join_with(' : ',
121                                 rec('200','e'),
122                         ),
123         ),
124
125 # ovo trenutno radi za sluèaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!!
126         'c', join_with('. ',
127                 rec('200','f'),
128                 rec('200','c'),
129         ),
130 # FIXME append to last subfield
131 #       '+', prefix('. ', rec('200','c') ),
132 );
133
134
135 #_debug(0);
136
137 marc('250','a',
138         suffix(
139                 rec('205','f') ? ' / ' :
140                                  ' '.
141                         rec('205','a')
142         )
143 );
144
145 marc('250','b',
146         rec('205','f')
147 );
148
149 # ponovljiva potpolja u originalnom redosljedu
150
151 marc_original_order('260', '210');
152
153
154 # provjeriti interpunkcije !!
155 # u NSK nesto ne stima
156
157 marc('300','a',
158         suffix(
159                 rec('215','c')  ?       ' : ' :
160                 rec('215','d')  ?       ' ; ' :
161                 rec('215','e')  ?       ' + ' :
162                                         ' ',
163                         rec('215','a')
164         )
165 );
166
167 marc('300','b',
168         suffix(
169                 ( rec('215','c') && rec('215','d') )    ?       ' ; ' :
170                 ( rec('215','c') && rec('215','e') )    ?       ' + ' :
171                                                                 ' ',
172                         rec('215','c')
173         )
174 );
175
176 marc('300','c',
177         suffix(
178                 rec('215','e') ? ' + ' :
179                                  ' ',
180                         rec('215','d')
181         )
182 );
183
184 marc('300','e',
185         rec('215','e')
186 );
187
188
189 # provjeriti
190
191 marc_indicators('490', 0, ' ');
192
193 marc('490','a',
194         rec('225','a')
195 );
196
197 marc('490','v',
198         join_with(', ',
199                 rec('225','v'),
200                 rec('225','w')
201         ),
202 );
203
204 marc('490','x',
205         rec('225','x')
206 );
207
208 #marc('490','a',
209 #       join_with(' : ',
210 #               rec('225','a'),
211 #               join_with(" =  ",
212 #                       rec('225','d'),
213 #                       join_with(" / ",
214 #                               rec('225','e'),
215 #                               rec('225','f')
216 #                       )
217 #               )
218 #       )
219 #);
220
221 #marc('490','v',
222 #       join2_with(225, 'v', ' , ', 225,'w');
223 #       join_with(', ',
224 #               rec('225','v'),
225 #               rec('225','w')
226 #       )
227 #);
228
229 #marc('500','a',
230 #       rec('300')
231 #);
232 #
233 #marc('500','a',
234 #       rec('314')
235 #);
236 #
237 #marc('504','a',
238 #       rec('320')
239 #);
240
241 ## napomene uz konverziju polja 327 (sadrzaj):
242 # NSK konvertira 327 (NP) u 501 (R)
243 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
244 # standard i validacije dopu¹taju 501 (R) i 505 (R)
245
246 ## FFPS 327 - sadrzaj
247 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
248         marc_indicators('505', '1', ' ');
249         marc('505','a',
250                 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
251                         rec('327')
252                 )       
253 );
254 }
255
256
257 ## napomene uz konverziju polja 330:
258 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
259
260
261 # FFPS 330 (NP) - sa¾etak
262 if ( config() =~ m/ffps/ ) { 
263         marc('520','a',
264                 regex('s/[\\r\\n]+/. /g',
265                         rec('330')
266                 )       
267         );
268 }
269
270 # FFTU 330 - ???
271 if ( config() =~ m/fftu/ ) { 
272         marc('520','a',
273                 rec('330')
274         );
275 }
276
277
278 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
279
280 marc_indicators('246', 1, 3);
281 marc('246','a',
282         rec('532')
283 );
284
285 marc_indicators('655', ' ', 4);
286 marc('655','a',
287         rec('608')
288 );
289
290 marc_indicators('653', 0, ' ');
291 marc('653','a',
292         rec('610')
293 );
294
295 # 675 podpolja c, d ... - ¹to s njima ???
296
297 marc('080','a',
298         rec('675','a')
299 );
300
301 # 084 je other classification (R)
302 # NSK ga koristi za struènu oznaku NSK iz polja 681
303 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
304 #
305 # polje 686 koristi FFPS
306
307 marc('084','a',
308         rec('686')
309 );
310
311 marc_indicators('100', 1, ' ');
312 marc('100','a',
313         join_with(', ',
314                 rec('700', 'a'),
315                 rec('700', 'b')
316         )
317 );
318
319 #_debug(2);
320
321 marc_indicators('700', 1, ' ');
322
323 if ( rec('701') ) { 
324 marc('700','4', 
325         'aut'
326 ); 
327 }
328
329 marc('700','a',
330         join_with(', ',
331                 rec('701', 'a'),
332                 rec('701', 'b')
333         )
334 );
335
336 marc('700','a',
337         join_with(', ',
338                 rec('701', 'c'),
339                 rec('701', 'd')
340         )
341 );
342
343 marc('700','a',
344         join_with(', ',
345                 rec('701', 'e'),
346                 rec('701', 'f')
347         )
348 );
349
350 marc('700','a',
351         join_with(', ',
352                 rec('701', 'g'),
353                 rec('701', 'h')
354         )
355 );
356
357
358 marc('700','a',
359         rec('702','a'),
360 );
361
362
363 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
364
365
366 marc('700','a',
367         join_with(', ',
368                 rec('702','c'),
369                 rec('702','d')
370         )
371 );
372
373 marc('700','a',
374         join_with(', ',
375                 rec('702','e'),
376                 rec('702','f')
377         )
378 );
379
380 marc('700','a',
381         join_with(', ',
382                 rec('702','g'),
383                 rec('702','h')
384         )
385 );
386
387 ## 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?
388
389
390 # marc('700','a',
391 #       rec('330','a')
392 # );
393
394
395 # marc('700','a',
396 #       rec('330','b')
397 # );
398
399 # marc('700','a',
400 #       rec('330','c')
401 # );
402
403
404 # marc('700','a',
405 #       rec('330','d')
406 # );
407
408 # marc('700','a',
409 #       rec('330','e')
410 # );
411
412 # marc('700','a',
413 #       rec('330','f')
414 # );
415  
416 #_debug(0);
417
418
419 if ( rec('710','f') ) {
420
421 marc_indicators('111', 2, ' ');
422 marc('111','a',
423         rec('710','a')
424 );
425
426 marc('111','c',
427         rec('710','e')
428 );
429
430 marc('111','d',
431         rec('710','f')
432 );
433
434 marc('111','e',
435         rec('710','b')
436 );
437
438 marc('111','n',
439         rec('710','d')
440 );
441
442
443 } else {
444         
445 marc_indicators('110', 2, ' ');
446 marc('110','a',
447         rec('710','a')
448 );
449
450 marc('110','c',
451         rec('710','c')
452 );
453
454 };
455
456
457 marc_indicators('740', 0, ' ');
458
459 if ( ! rec('464') ) {
460 marc('740','a',
461         rec('200','c')
462 );
463
464 marc('740','a',
465         rec('200','k')
466 );
467
468 } else {
469 marc('740','a',
470         rec('464','a')
471 );
472 };
473
474 marc('500','a',
475         lookup(
476                 sub { rec('304','a') },
477                 'ffps','baza',
478                 sub { rec('200','a') },
479         ) 
480 );
481
482
483
484 }