local configuration
[webpac2] / conf / normalize / ff-peri.pl
1 if ( rec('200','a') ) {
2
3
4 # LEADER
5 # raspraviti 17,18
6
7 marc_leader('05','n');
8 marc_leader('06','a');
9
10 if ( rec('225','a') ) {
11         marc_leader('07','b');
12 } else {
13         marc_leader('07','s');
14 }
15
16 marc_leader('18','i');
17
18 if ( rec('225','a') ) {
19         marc_leader('19','r');
20 }
21
22 # 001 polje - Voyager
23
24 # 007
25 marc_fixed('007',00,'ta');
26
27
28 ## 008 - All materials
29 marc_fixed('008','00', '070707');       # Date entered on file
30 marc_fixed('008','06', 't');            # Type of date/Publication status
31 if ( rec('11') ) {
32         if ( my $lookup = lookup(
33                         sub { rec('210','d') },
34                         'nsk','bbaza',
35                         sub { first( rec('011','a') ) },
36                         sub { rec('11') },
37                 )
38         ) {
39                 marc_fixed('008','07', $lookup);
40         } else {
41                 marc_fixed('008','07',
42                         rec('210','d')
43                 );
44         }
45 }                                       # Date 1
46
47 # marc_fixed('008','11', ' ');          # Date 2
48 marc_fixed('008','15', 
49         lc ( rec('102') ) 
50 );                              # Place of publication, production, or execution
51 #marc_fixed('008','35', 
52 #       rec('101') 
53 #);                             # Language
54 marc_fixed('008','38', '|');    # Modified record
55 marc_fixed('008','39','d');     # Cataloging source
56
57
58 ## 008 - Continuing resources
59 marc_fixed('008','18', '|');    # Frequency - ovo treba popuniti iz polja 326
60 marc_fixed('008','19', '|');    # Regularity
61 marc_fixed('008','21', 'p');    # Type of continuing resource
62 marc_fixed('008','29', '|');    # Conference publication
63 marc_fixed('008','33', '|');    # Original alphabet or script of title
64 marc_fixed('008','34', '|');    # Entry convention
65
66
67 ## 022
68 # if ( ! rec('225','a') ) {
69 #       marc('022','a',
70 #               rec('11')
71 #       );
72 # }
73 #
74
75 ## 022
76 marc('022','a',
77         rec('11')
78 );
79
80
81 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
82
83 marc('035','6',
84         join_with('',
85                 uc( config() ),
86                 ' P',
87                 rec('000')
88         )
89 );
90
91
92 marc('040','a',
93         'HR FFZG'
94 );
95
96 marc('040','b',
97         'hrv'
98 );
99
100 marc('040','e',
101         'HR PPIAK'
102 );
103
104 marc_indicators('041', 0, ' ');
105
106 marc_repeatable_subfield('041','a',
107         rec('101')
108 );
109
110
111 #_debug(3);
112
113 ## 044 - zemlja izdavanja
114
115 if ( rec('11') ) {
116         if ( my $lookup = lookup(
117                         sub { rec('102','a') },
118                         'nsk','bbaza',
119                         sub { first( rec('011','a') ) },
120                         sub { rec('11') },
121                 )
122         ) {
123                 marc('044','a', $lookup );
124         } else {
125                 marc('044','a',
126                         rec('102')
127                 );
128         }
129
130
131 marc('080','a',
132         rec('675','a')
133 );
134
135 marc_indicators('210', '1',' ');
136
137 if ( rec('11') ) {
138 marc('210','a',
139         lookup(
140                 sub { rec('531','a') },
141                 'nsk','bbaza',
142                 sub { rec('011','a') },
143                 sub { rec('11') },
144         ) 
145 );
146 }
147
148 marc_indicators('222',' ','0');         # drugi indikator prema èlanu
149 if ( rec('11') ) {
150 marc('222','a',
151         lookup(
152                 sub { rec('530','a') },
153                 'nsk','bbaza',
154                 sub { rec('011','a') },
155                 sub { rec('11') },
156         ) 
157 );
158 }
159  
160 ### 245 indikatori
161
162 if (    ( rec('200','a') =~ m/^Die /) || 
163         ( rec('200','a') =~ m/^Das /) || 
164         ( rec('200','a') =~ m/^The /) ) {
165                 marc_indicators('245', 0, 4);
166 } else {
167         marc_indicators('245', 0, 0);
168 }
169
170
171 ## 245
172 marc_compose('245',
173         'a', suffix(
174                 ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
175                 ( rec('200','d') ) ? ' = ' :
176                 ( rec('200','e') ) ? ' : ' :
177                 ( rec('200','k') ) ? ' ; ' :
178                         '', 
179                         rec('200','a'),
180         ),
181         'b', suffix(
182                 ( rec('200','d') && rec('200','f') ) ? ' / ' : 
183                 ( rec('200','d') && rec('200','c') ) ? '. '  : 
184                         '',
185                         rec('200','d'),
186         ),
187         'b', suffix(
188                 ( rec('200','e') && rec('200','f') ) ? ' / ' : 
189                 ( rec('200','e') && rec('200','c') ) ? '. '  : 
190                         '',
191                         rec('200','e'),
192         ),
193         'b', suffix(
194                 ( rec('200','k') && rec('200','f') ) ? ' / ' : 
195                 ( rec('200','k') && rec('200','c') ) ? '. '  : 
196                         '',
197                         rec('200','k'),
198         ),
199         'c', suffix(
200                 ( rec('200','f') && rec('200','c') ) ? '. ' :
201                         '',
202                         rec('200','f'),
203         ),
204         '+', rec('200','c'),
205 );
206
207 ## 246
208 if (    ( rec('200','a') =~ m/^Die /) || 
209         ( rec('200','a') =~ m/^Das /) || 
210         ( rec('200','a') =~ m/^The /) ) {
211                 marc_indicators('246', 0, 4);
212 } else {
213         marc_indicators('246', 0, 0);
214 }
215
216
217 if ( rec('532') ) {
218         marc('246','a',
219                 rec('532')
220         );
221
222
223 #else {
224 #       marc('246','a',
225 #               lookup(
226 #                       sub { rec('532','a') },
227 #                       'nsk','bbaza',
228 #                       sub { rec('011','a') },
229 #                       sub { rec('11') },
230 #               )
231 #       );
232 #}
233
234 #_debug(0);
235
236
237 ## 260 - izdavanje
238
239 # if ( rec('11') ) {
240 #       marc_repeatable_subfield('260','a',
241 #               lookup(
242 #                       sub { rec('210','a') },
243 #                       'nsk','bbaza',
244 #                       sub { rec('011','a') },
245 #                       sub { rec('11') },
246 #               ) 
247 #       );
248 #       marc_repeatable_subfield('260','b',
249 #               lookup(
250 #                       sub { rec('210','c') },
251 #                       'nsk','bbaza',
252 #                       sub { rec('011','a') },
253 #                       sub { rec('11') },
254 #               ) 
255 #       );
256 #       marc('260','c',
257 #               lookup(
258 #                       sub { rec('210','d') },
259 #                       'nsk','bbaza',
260 #                       sub { rec('011','a') },
261 #                       sub { rec('11') },
262 #               ) 
263 #       );
264 # } else {
265 #       marc_original_order('260', '210');
266 # }
267
268 marc_original_order('260','210');
269
270 # provjeriti interpunkcije !!
271 # u NSK nesto ne stima
272
273 marc('300','a',
274         suffix(
275                 ( rec('215','a') && rec('215','c') )    ?  ' : ' :
276                 ( rec('215','a') && rec('215','d') )    ?  ' ; ' :
277                 ( rec('215','a') && rec('215','e') )    ?  ' + ' :
278                                    ' ',
279                         rec('215','a')
280         )
281 );
282
283 marc('300','b',
284         suffix(
285                 ( rec('215','c') && rec('215','d') )    ?  ' ; ' :
286                 ( rec('215','c') && rec('215','e') )    ?  ' + ' :
287                                                            ' ',
288                         rec('215','c')
289         )
290 );
291
292 marc('300','c',
293         suffix(
294                 rec('215','e') ? ' + ' :
295                                  ' ',
296                         rec('215','d')
297         )
298 );
299
300 marc('300','e',
301         rec('215','e')
302 );
303
304 ## 310 - current stated publication frequency
305 marc('310','a',
306         rec('326')
307 );
308
309 ## 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
310 # marc('321','a',
311 #       ovo bi trebalo procitati iz NSK konvertiranih podataka
312 #);
313
314 marc_indicators('362', 0, ' ');
315
316
317 ## 362
318 if ( rec('207','a') ) {
319         marc('362','a',
320                 rec('207','a'),
321         );
322 } else {
323         if ( rec('11') ) {
324                 marc('362','a',
325                         lookup(
326                                 sub { rec('207','a') },
327                                 'nsk','bbaza',
328                                 sub { first( rec('011','a') ) },
329                                 sub { rec('11') },
330                         ) 
331                 );
332         }
333 }
334
335 ## 5xx
336 marc('500','a',
337         rec('300','a'),
338 );
339  
340  
341 marc('534','a',
342         rec('324')
343 );
344
345 if ( rec('11') ) {
346 marc('546','a',
347         lookup(
348                 sub { rec('302','a') },
349                 'nsk','bbaza',
350                 sub { rec('011','a') },
351                 sub { rec('11') },
352         ) 
353 );
354
355 marc('550','a',
356         lookup(
357                 sub { rec('314','a') },
358                 'nsk','bbaza',
359                 sub { rec('011','a') },
360                 sub { rec('11') },
361         ) 
362 );
363
364 marc('555','a',
365         lookup(
366                 sub { rec('320','a') },
367                 'nsk','bbaza',
368                 sub { rec('011','a') },
369                 sub { rec('11') },
370         ) 
371 );
372
373
374 # marc('562','a',
375 #       lookup(
376 #               sub { rec('316','a') },
377 #               'nsk','bbaza',
378 #               sub { rec('011','a') },
379 #               sub { rec('11') },
380 #       ) 
381 # );
382 }
383  
384 marc_indicators('653', 0, ' ');
385 marc('653','a',
386         rec('610')
387 );
388
389 # marc_indicators('655', ' ', 4);
390 # marc('655','a',
391 #       lookup(
392 #               sub { rec('608','a') },
393 #               'nsk','bbaza',
394 #               sub { rec('011','a') },
395 #               sub { rec('11') },
396 #       ) 
397 # );
398
399
400 #_debug(2);
401
402 marc_indicators('700', 1, ' ');
403
404 marc('700','a',
405         rec('702','a'),
406 );
407
408 marc('700','a',
409         join_with(', ',
410                 rec('702','c'),
411                 rec('702','d')
412         )
413 );
414
415  
416 #_debug(0);
417
418 marc_indicators('710', '2', ' ');
419 marc('710','a',
420         rec('710','a')
421 );
422
423
424 marc_indicators('770', 0, ' ');
425 marc('770','t',
426         rec('421','a'),
427 );
428
429 marc_indicators('772', 0, ' ');
430 marc('772','t',
431         rec('422','a'),
432 );
433
434 marc_indicators('777', 0, ' ');
435 marc('777','t',
436         rec('423','a'),
437 );
438
439 marc_indicators('780', 0, 0);
440 marc('780','t',
441         rec('430','a'),
442 );
443
444 marc_indicators('785', 0, 0);
445 marc('785','t',
446         rec('440','a'),
447 );
448
449 marc('852','j',
450         join_with(' ',
451                 rec('990')
452         )
453 );
454
455 marc('876','a',
456         rec('991','a')
457 );
458
459 marc('992','a',
460         join_with(' ; ', 
461                 rec('992')
462         )
463 );
464
465  
466 # marc('997','a',
467 #       sort(
468 #               lookup(
469 #                       sub { rec('001') },
470 #                       'nsk','bbaza',
471 #                       sub { rec('011','a') },
472 #                       sub { rec('11') },
473 #               )
474 #       )
475 # );
476
477 # marc('998','a',
478 #       sort(
479 #               lookup(
480 #                       sub { rec('001') },
481 #                       'nsk','bbaza',
482 #                       sub { first(rec('200','a')) . first(rec('200','e')) },
483 #                       sub { rec('200','a') . rec('200','e') },
484 #               )
485 #       )
486 # );
487
488 # marc('998','a',
489 #       sort(
490 #               lookup(
491 #                       sub { rec('001') },
492 #                       'nsk','bbaza',
493 #                       sub { first(rec('200','a')) },
494 #                       sub { rec('200','a') },
495 #               )
496 #       )
497 # );
498
499 }