r842@llin: dpavlin | 2006-07-23 22:23:52 +0200
[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
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('010')
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', rec('200','k'),
88         'b', rec('200','d'),
89         'b', rec('200','e'),
90         'c', rec('200','f'),
91 # FIXME append to last subfield
92         '+', prefix('. ', rec('200','c') ),
93 );
94
95
96 #_debug(0);
97
98
99 # marc('245','a',
100 #       rec('200','a')
101 # );
102
103 # marc('245','b',
104 #       join_with(' : ',
105 #               rec('200','d'),
106 #               rec('200','e')
107 #       )
108 # );
109
110 # marc('245','c',
111 #       join_with(' ; ',
112 #               rec('200','f'),
113 #               rec('200','g')
114 #       )
115 # );
116
117 marc('250','a',
118         rec('205','a')
119 );
120
121 # FIXME ponovljiva potpolja u originalnom redosljedu
122
123 # marc_original_order('260', '210');
124
125 marc('260','a',
126         rec('210','a'),
127 );
128
129 marc('260','b',
130         rec('210','c'),
131 );
132
133 marc('260','c',
134         rec('210','d'),
135 );
136
137 # marc_compose('260',
138 #       'a', split_rec_on('210','a', qr/\s*;\s*/, 1),
139 #       'b', first(rec('210','c')),
140 #       'a', split_rec_on('210','a', qr/\s*;\s*/, 2),
141 #       'c', first(rec('210','d')),
142 # );
143
144 marc('300','a',
145         rec('215','a')
146 );
147
148 marc('300','b',
149         rec('215','c')
150 );
151
152 marc('300','c',
153         rec('215','d')
154 );
155
156 marc('300','e',
157         rec('215','e')
158 );
159
160
161 marc_indicators('490', 1, ' ');
162 marc('490','a',
163         join_with(' : ',
164                 rec('225','a'),
165                 join_with(" =  ",
166                         rec('225','d'),
167                         join_with(" / ",
168                                 rec('225','e'),
169                                 rec('225','f')
170                         )
171                 )
172         )
173 );
174
175 marc('490','v',
176 #       join2_with(225, 'v', ' , ', 225,'w');
177         join_with(', ',
178                 rec('225','v'),
179                 rec('225','w')
180         )
181 );
182
183 marc('500','a',
184         rec('300')
185 );
186
187 marc('500','a',
188         rec('314')
189 );
190
191 marc('504','a',
192         rec('320')
193 );
194
195 # napomene uz konverziju polja sa sadr¾ajem:
196 # NSK konvertira 327 (NP) u 501 (R)
197 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
198 # standard i validacije dopu¹taju 501 (R) i 505 (R)
199 # FFPS koristi 327 (P)
200 # FFIZ koristi 327
201
202
203 marc_indicators('505', '0', ' ');
204 marc('505','a',
205         regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
206                 rec('327')
207         )
208 );
209
210 # napomene uz konverziju polja 330:
211 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
212 # FFIZ koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja, sa¾eci
213 # FFFO koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja 
214 # FFPS koristi 330 (NP) - sa¾etak
215
216 marc('520','a',
217         regex('s/[\\r\\n]+/. /g',
218                 rec('330')
219         )
220 );
221
222 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
223
224 marc_indicators('655', ' ', 4);
225 marc('655','a',
226         rec('608')
227 );
228
229 marc_indicators('653', ' ', ' ');
230 marc('653','a',
231         rec('610')
232 );
233
234 # 675 podpolja c, d ... - ¹to s njima ???
235
236 marc('080','a',
237         rec('675','a')
238 );
239
240 # 084 je other classification (R)
241 # NSK ga koristi za struènu oznaku NSK iz polja 681
242 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
243 #
244 # polje 686 koristi FFPS
245
246 marc('084','a',
247         rec('686')
248 );
249
250 marc_indicators('100', 1, ' ');
251 marc('100','a',
252         join_with(', ',
253                 rec('700', 'a'),
254                 rec('700', 'b')
255         )
256 );
257
258 #_debug(2);
259
260 marc_indicators('700', 1, ' ');
261
262 if ( rec('701') ) { 
263 marc('700','4', 
264         'aut'
265 ); 
266 }
267
268 marc('700','a',
269         rec('701', 'a'),
270 );
271
272 marc('700','a',
273         join_with(', ',
274                 rec('701', 'c'),
275                 rec('701', 'd')
276         )
277 );
278
279 marc('700','a',
280         join_with(', ',
281                 rec('701', 'e'),
282                 rec('701', 'f')
283         )
284 );
285
286 marc('700','a',
287         join_with(', ',
288                 rec('701', 'g'),
289                 rec('701', 'h')
290         )
291 );
292
293
294 marc('700','a',
295         rec('702','a'),
296 );
297
298
299 # ako je u originalu ponovljivo polje treba biti i konvertirano!!
300
301
302 marc('700','a',
303         join_with(', ',
304                 rec('702','c'),
305                 rec('702','d')
306         )
307 );
308
309 marc('700','a',
310         join_with(', ',
311                 rec('702','e'),
312                 rec('702','f')
313         )
314 );
315
316 marc('700','a',
317         join_with(', ',
318                 rec('702','g'),
319                 rec('702','h')
320         )
321 );
322
323 #_debug(0);
324
325
326 if ( rec('710','f') ) {
327
328 marc_indicators('111', 2, ' ');
329 marc('111','a',
330         rec('710','a')
331 );
332
333 marc('111','c',
334         rec('710','e')
335 );
336
337 marc('111','d',
338         rec('710','f')
339 );
340
341 marc('111','e',
342         rec('710','b')
343 );
344
345 marc('111','n',
346         rec('710','d')
347 );
348
349
350 } else {
351         
352 marc_indicators('110', 2, ' ');
353 marc('110','a',
354         rec('710','a')
355 );
356
357 marc('110','c',
358         rec('710','c')
359 );
360
361 };
362
363
364 marc_indicators('740', 0, ' ');
365 marc('740','a',
366         rec('200','c')
367 );
368
369
370 # vi¹erazinci 
371
372 if ( rec('230') ) {
373
374         marc_duplicate();
375         marc_remove('245');
376
377         marc('245','a',
378                 rec('230','a')
379         );
380
381         if ( ! rec('230','a') ) {
382
383                 marc('245','a',
384                         rec('200','a')
385                 );
386         }
387
388         marc('245','b',
389                 rec('230','e')
390         );
391
392         marc('245','c',
393                 rec('230','f')
394         );
395
396         marc('245','n',
397                 rec('230','v')
398         );
399
400 }
401
402 if ( rec('231') ) {
403
404         marc_duplicate();
405         marc_remove('245');
406
407         marc('245','a',
408                 rec('231','a')
409         );
410
411         if ( ! rec('231','a') ) {
412
413                 marc('245','a',
414                         rec('200','a')
415                 );
416         }
417
418         marc('245','b',
419                 rec('231','e')
420         );
421
422         marc('245','c',
423                 rec('231','f')
424         );
425
426         marc('245','n',
427                 rec('231','v')
428         );
429
430 }
431 }