/[webpac2]/trunk/conf/normalize/mapping.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/conf/normalize/mapping.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 629 - (show annotations)
Tue Sep 5 21:02:39 2006 UTC (17 years, 8 months ago) by dpavlin
File MIME type: text/plain
File size: 6326 byte(s)
local

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 }

  ViewVC Help
Powered by ViewVC 1.1.26