local
[webpac2] / conf / normalize / mapping.pl
1 if ( rec('200','a') ) {
2
3 # Leader
4 #
5 # raspraviti 17,18
6
7 # u nekim knji¾nicama koristi se 999a i 999b
8
9 if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
10         marc_leader('05','c');
11 } else {
12         marc_leader('05','n');
13 }
14
15         marc_leader('06','a');
16         marc_leader('07','m');
17         marc_leader('18','i');
18
19 if ( rec('230') ) {
20         marc_leader('19','r');
21 }
22
23
24 # 001 polje dodaje Voyager
25
26 # polje 035 je u NSK ponovljivo. za¹to ???
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('input name'),
35                 config(),
36 #               id(),
37 #               rec('994','a'),
38                 rec('000')
39         )
40 );
41
42 # u marc 035a treba dodati System Number - 
43 # NSK zapisuje Voyagerov ID (001) - kako ???
44
45 # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
46
47 marc('020','a',
48         rec('10')
49 );
50
51 # u polje 040a mo¾da jo¹ dodati prefiks HR
52 # NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
53
54 marc('040','a',
55         'FFZG'
56 );
57
58 marc('040','b',
59         'hrv'
60 );
61
62 if (rec('300') && first(rec('300')) =~ m/prijevod/i) {
63         marc_indicators('041', 1, ' ');
64 } else {
65         marc_indicators('041', 0, ' ');
66 }
67
68 marc_repeatable_subfield('041','a',
69         rec('101')
70 );
71
72 marc_indicators('245', 0, 0);
73
74 #_debug(3);
75
76 marc_compose('245',
77         'a', suffix(
78                 rec('200','b') ? '. '   :
79                 rec('200','k') ? ' ; '  :
80                 rec('200','d') ? ' = '  :
81                 rec('200','e') ? ' : '  :
82                 rec('200','f') ? ' / '  :
83                                  '.',
84                         rec('200','a')
85         ),
86         'h', rec('200','b'),
87         'b', 
88                 join_with(' ; ',
89                         rec('200','k'),
90                 ),
91         'b', rec('200','d'), 
92         'b', 
93                 join_with(' : ',
94                         rec('200','e'),
95                 ),
96         'c', 
97                 join_with(' ; ',
98                         rec('200','f'),
99                 ),
100 # FIXME append to last subfield
101         '+', prefix('. ', rec('200','c') ),
102 );
103
104
105 #_debug(0);
106
107
108 # marc('245','a',
109 #       rec('200','a')
110 # );
111
112 # marc('245','b',
113 #       join_with(' : ',
114 #               rec('200','d'),
115 #               rec('200','e')
116 #       )
117 # );
118
119 # marc('245','c',
120 #       join_with(' ; ',
121 #               rec('200','f'),
122 #               rec('200','g')
123 #       )
124 # );
125
126 marc('250','a',
127         rec('205','a')
128 );
129
130 # FIXME ponovljiva potpolja u originalnom redosljedu
131
132 marc_original_order('260', '210');
133
134 # marc('260','a',
135 #       rec('210','a'),
136 # );
137 #
138 # marc('260','b',
139 #       rec('210','c'),
140 # );
141
142 # marc('260','c',
143 #       rec('210','d'),
144 # );
145
146 # marc_compose('260',
147 #       'a', split_rec_on('210','a', qr/\s*;\s*/, 1),
148 #       'b', first(rec('210','c')),
149 #       'a', split_rec_on('210','a', qr/\s*;\s*/, 2),
150 #       'c', first(rec('210','d')),
151 # );
152
153 marc('300','a',
154         rec('215','a')
155 );
156
157 marc('300','b',
158         rec('215','c')
159 );
160
161 marc('300','c',
162         rec('215','d')
163 );
164
165 marc('300','e',
166         rec('215','e')
167 );
168
169
170 marc_indicators('490', 1, ' ');
171 marc('490','a',
172         join_with(' : ',
173                 rec('225','a'),
174                 join_with(" =  ",
175                         rec('225','d'),
176                         join_with(" / ",
177                                 rec('225','e'),
178                                 rec('225','f')
179                         )
180                 )
181         )
182 );
183
184 marc('490','v',
185 #       join2_with(225, 'v', ' , ', 225,'w');
186         join_with(', ',
187                 rec('225','v'),
188                 rec('225','w')
189         )
190 );
191
192 marc('500','a',
193         rec('300')
194 );
195
196 marc('500','a',
197         rec('314')
198 );
199
200 marc('504','a',
201         rec('320')
202 );
203
204 # napomene uz konverziju polja sa sadr¾ajem:
205 # NSK konvertira 327 (NP) u 501 (R)
206 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
207 # standard i validacije dopu¹taju 501 (R) i 505 (R)
208 # FFPS koristi 327 (P)
209 # FFIZ koristi 327
210
211
212 marc_indicators('505', '0', ' ');
213 marc('505','a',
214         regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
215                 rec('327')
216         )
217 );
218
219 # napomene uz konverziju polja 330:
220 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
221 # FFIZ koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja, sa¾eci
222 # FFFO koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja 
223 # FFPS koristi 330 (NP) - sa¾etak
224
225 marc('520','a',
226         regex('s/[\\r\\n]+/. /g',
227                 rec('330')
228         )
229 );
230
231 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
232
233 marc_indicators('655', ' ', 4);
234 marc('655','a',
235         rec('608')
236 );
237
238 marc_indicators('653', ' ', ' ');
239 marc('653','a',
240         rec('610')
241 );
242
243 # 675 podpolja c, d ... - ¹to s njima ???
244
245 marc('080','a',
246         rec('675','a')
247 );
248
249 # 084 je other classification (R)
250 # NSK ga koristi za struènu oznaku NSK iz polja 681
251 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
252 #
253 # polje 686 koristi FFPS
254
255 marc('084','a',
256         rec('686')
257 );
258
259 marc_indicators('100', 1, ' ');
260 marc('100','a',
261         join_with(', ',
262                 rec('700', 'a'),
263                 rec('700', 'b')
264         )
265 );
266
267 #_debug(2);
268
269 marc_indicators('700', 1, ' ');
270
271 if ( rec('701') ) { 
272 marc('700','4', 
273         'aut'
274 ); 
275 }
276
277 marc('700','a',
278         rec('701', 'a'),
279 );
280
281 marc('700','a',
282         join_with(', ',
283                 rec('701', 'c'),
284                 rec('701', 'd')
285         )
286 );
287
288 marc('700','a',
289         join_with(', ',
290                 rec('701', 'e'),
291                 rec('701', 'f')
292         )
293 );
294
295 marc('700','a',
296         join_with(', ',
297                 rec('701', 'g'),
298                 rec('701', 'h')
299         )
300 );
301
302
303 marc('700','a',
304         rec('702','a'),
305 );
306
307
308 # ako je u originalu ponovljivo polje treba biti i konvertirano!!
309
310
311 marc('700','a',
312         join_with(', ',
313                 rec('702','c'),
314                 rec('702','d')
315         )
316 );
317
318 marc('700','a',
319         join_with(', ',
320                 rec('702','e'),
321                 rec('702','f')
322         )
323 );
324
325 marc('700','a',
326         join_with(', ',
327                 rec('702','g'),
328                 rec('702','h')
329         )
330 );
331
332 #_debug(0);
333
334
335 if ( rec('710','f') ) {
336
337 marc_indicators('111', 2, ' ');
338 marc('111','a',
339         rec('710','a')
340 );
341
342 marc('111','c',
343         rec('710','e')
344 );
345
346 marc('111','d',
347         rec('710','f')
348 );
349
350 marc('111','e',
351         rec('710','b')
352 );
353
354 marc('111','n',
355         rec('710','d')
356 );
357
358
359 } else {
360         
361 marc_indicators('110', 2, ' ');
362 marc('110','a',
363         rec('710','a')
364 );
365
366 marc('110','c',
367         rec('710','c')
368 );
369
370 };
371
372
373 marc_indicators('740', 0, ' ');
374
375 if ( ! rec('464') ) {
376 marc('740','a',
377         rec('200','c')
378 );
379
380 marc('740','a',
381         rec('200','k')
382 );
383
384 } else {
385 marc('740','a',
386         rec('464','a')
387 );
388 };
389
390
391
392 ## vi¹erazinci 
393
394 if ( rec('230') ) {
395
396         marc_duplicate();
397         
398         marc_remove('245');
399         marc_compose('245',
400         'a', suffix(
401                 rec('200','b') ? '. '   :
402                 rec('200','k') ? ' ; '  :
403                 rec('200','d') ? ' = '  :
404                 rec('200','e') ? ' : '  :
405                 rec('200','f') ? ' / '  :
406                                  '.',
407                         rec('230','a')
408         ),
409         'b', 
410                 join_with(' ; ',
411                         rec('230','k'),
412                 ),
413         'b', rec('230','d'), 
414         'b', 
415                 join_with(' : ',
416                         rec('230','e'),
417                 ),
418         'c', 
419                 join_with(' ; ',
420                         rec('230','f'),
421                 ),
422         );
423
424         marc_remove('260');
425         marc('260','c',
426                 rec('250')
427         );
428
429         marc_remove('300');
430         marc('300','a',
431                 rec('260')
432         );
433
434         marc_remove('490');
435         marc('490','a',
436                 rec('270')
437         );
438
439         marc_remove('500');
440         marc('500','a',
441                 rec('280')
442         );
443
444         marc_remove('020');
445         marc('020','a',
446                 rec('290')
447         );
448
449         marc_indicators('774', 0, ' ');
450         marc('774','6',
451                 join_with('',
452                         config(),
453                         rec('000')
454                 )
455         );
456
457         marc('774','g',
458                 rec('230','v')
459         );
460  
461 };
462
463 }