/[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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 545 by dpavlin, Thu Jun 29 21:53:00 2006 UTC revision 629 by dpavlin, Tue Sep 5 21:02:39 2006 UTC
# Line 1  Line 1 
1  marc21('001',  if ( rec('200','a') ) {
         rec('000')  
 );  
2    
3  marc21('020','a',  # Leader
4          rec('010')  #
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  marc21('101','a',          marc_leader('06','a');
16          rec('101')          marc_leader('07','m');
17  );          marc_leader('18','i');
18    
19  marc21('245','a',  if ( rec('230') ) {
20          rec('200','a')          marc_leader('19','r');
21  );  }
22    
23  marc21('245','b',  
24          join_with(' : ',  # 001 polje dodaje Voyager
25                  rec('200','d'),  
26                  rec('200','e')  # 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  marc21('245','c',  # u marc 035a treba dodati System Number -
43          join_with(' ; ',  # NSK zapisuje Voyagerov ID (001) - kako ???
44                  rec('200','f'),  
45                  rec('200','g')  # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
46          )  
47    marc('020','a',
48            rec('10')
49  );  );
50    
51  marc21('250','a',  # u polje 040a možda još dodati prefiks HR
52          rec('205','a')  # 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  marc21('260','a',  if (rec('300') && first(rec('300')) =~ m/prijevod/i) {
63          rec('210','a')          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  marc21('260','b',  marc_indicators('245', 0, 0);
73          rec('210','c')  
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  marc21('260','c',  
105          rec('210','d')  #_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  marc21('300','a',  # 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')          rec('215','a')
155  );  );
156    
157  marc21('300','b',  marc('300','b',
158          rec('215','c')          rec('215','c')
159  );  );
160    
161  marc21('300','c',  marc('300','c',
162          rec('215','d')          rec('215','d')
163  );  );
164    
165  marc21('300','e',  marc('300','e',
166          rec('215','e')          rec('215','e')
167  );  );
168    
169  marc21('490','a',  
170          join_with(' = ',  marc_indicators('490', 1, ' ');
171    marc('490','a',
172            join_with(' : ',
173                  rec('225','a'),                  rec('225','a'),
174                  join_with(" :  ",                  join_with(" =  ",
175                          rec('225','d'),                          rec('225','d'),
176                          join_with(" / ",                          join_with(" / ",
177                                  rec('225','e'),                                  rec('225','e'),
# Line 73  marc21('490','a', Line 181  marc21('490','a',
181          )          )
182  );  );
183    
184  marc21('490','v',  marc('490','v',
185          rec('225','v')  #       join2_with(225, 'v', ' , ', 225,'w');
186            join_with(', ',
187                    rec('225','v'),
188                    rec('225','w')
189            )
190  );  );
191    
192  marc21('500','a',  marc('500','a',
193          rec('300')          rec('300')
194  );  );
195    
196  marc21('504','a',  marc('500','a',
197            rec('314')
198    );
199    
200    marc('504','a',
201          rec('320')          rec('320')
202  );  );
203    
204  marc21('655','a',  # 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')          rec('610')
241  );  );
242    
243  marc21('100','a',  # 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(', ',          join_with(', ',
262                  rec('700', 'a'),                  rec('700', 'a'),
263                  rec('700', 'b')                  rec('700', 'b')
264          )          )
265  );  );
266    
267  marc21('700','a',  #_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(', ',          join_with(', ',
283                  rec('701', 'a'),                  rec('701', 'c'),
284                  rec('701', 'b')                  rec('701', 'd')
285          )          )
286  );  );
287    
288  if ( rec('701') ) {  marc('700','a',
289          marc21('700','4',          join_with(', ',
290                  '070'                  rec('701', 'e'),
291          );                  rec('701', 'f')
292  }          )
293    );
294    
295  marc21('700','a',  marc('700','a',
296          join_with(', ',          join_with(', ',
297                  rec('702','a'),                  rec('701', 'g'),
298                  rec('702','b')                  rec('701', 'h')
299          )          )
300  );  );
301    
302  if ( rec('702') ) {  
303          marc21('700','4',  marc('700','a',
304                  '340'          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    }

Legend:
Removed from v.545  
changed lines
  Added in v.629

  ViewVC Help
Powered by ViewVC 1.1.26