more local changes
[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
29 marc_fixed('008','00', '070707');
30 marc_fixed('008','06', '|');    # Type of date/Publication status
31 marc_fixed('008','07', '|');    # Date 1
32 marc_fixed('008','08', '|');
33 marc_fixed('008','09', '|');
34 marc_fixed('008','10', '|');
35 marc_fixed('008','11', '|');    # Date 2
36 marc_fixed('008','12', '|');
37 marc_fixed('008','13', '|');
38 marc_fixed('008','14', '|');
39 marc_fixed('008','15',          # Place of publication, production, or execution
40         lookup(
41                 sub { rec('102','a') },
42                 'nsk','bbaza',
43                 sub { rec('011','a') },
44                 sub { rec('11') },
45         ),
46 );
47 marc_fixed('008','18', '');
48 marc_fixed('008','35',          # Language
49         rec('101') 
50 );
51 marc_fixed('008','39','|');     # Cataloging source
52
53 ## 022
54
55 if ( ! rec('225','a') ) {
56         marc('022','a',
57                 rec('11')
58         );
59 }
60
61 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
62
63 marc('035','6',
64         join_with('',
65                 uc( config() ),
66                 ' P',
67                 rec('000')
68         )
69 );
70
71 # u marc 035a treba dodati System Number - 
72 # NSK zapisuje Voyagerov ID (001) - kako ???
73
74 # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
75
76
77 # u polje 040a mo¾da jo¹ dodati prefiks HR
78 # NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
79
80 marc('040','a',
81         'HR FFZG'
82 );
83
84 marc('040','b',
85         'hrv'
86 );
87
88 marc('040','e',
89         'HR PPIAK'
90 );
91
92 # if (rec('300') && first(rec('300')) =~ m/Prijevod/) {
93 #       marc_indicators('041', 1, ' ');
94 # } else {
95 #       marc_indicators('041', 0, ' ');
96 # }
97
98 ## naci primjer u NSK
99
100 marc_repeatable_subfield('041','a',
101         rec('101')
102 );
103
104
105 if (    ( rec('200','a') =~ m/^Die /) || 
106         ( rec('200','a') =~ m/^Das /) || 
107         ( rec('200','a') =~ m/^The /) ) {
108                 marc_indicators('245', 0, 4);
109 } else {
110         marc_indicators('245', 0, 0);
111 }
112
113 #_debug(3);
114
115 marc('044','a',
116         lookup(
117                 sub { rec('102','a') },
118                 'nsk','bbaza',
119                 sub { rec('011','a') },
120                 sub { rec('11') },
121         ),
122 );
123
124 marc('080','a',
125         rec('675','a')
126 );
127
128 marc_indicators('100', 1, ' ');
129 marc('100','a',
130         join_with(', ',
131                 rec('700', 'a'),
132                 rec('700', 'b')
133         )
134 );
135
136 marc_indicators('110', 2, ' ');
137 marc('110','a',
138         rec('710','a')
139 );
140
141 marc('110','c',
142         rec('710','c')
143 );
144
145 marc('222','a',
146         lookup(
147                 sub { rec('530','a') },
148                 'nsk','bbaza',
149                 sub { rec('011','a') },
150                 sub { rec('11') },
151         ) 
152 );
153  
154 ### 245 indikatori
155
156 marc_compose('245',
157         'a', suffix(
158                 ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' :  
159                 ( rec('200','d') ) ? ' = ' :
160                 ( rec('200','e') ) ? ' : ' :
161                 ( rec('200','k') ) ? ' ; ' :
162                         '', 
163                         rec('200','a'),
164         ),
165         'b', suffix(
166                 ( rec('200','d') && rec('200','f') ) ? ' / ' : 
167                 ( rec('200','d') && rec('200','c') ) ? '. '  : 
168                         '',
169                         rec('200','d'),
170         ),
171         'b', suffix(
172                 ( rec('200','e') && rec('200','f') ) ? ' / ' : 
173                 ( rec('200','e') && rec('200','c') ) ? '. '  : 
174                         '',
175                         rec('200','e'),
176         ),
177         'b', suffix(
178                 ( rec('200','k') && rec('200','f') ) ? ' / ' : 
179                 ( rec('200','k') && rec('200','c') ) ? '. '  : 
180                         '',
181                         rec('200','k'),
182         ),
183         'c', suffix(
184                 ( rec('200','f') && rec('200','c') ) ? '. ' :
185                         '',
186                         rec('200','f'),
187         ),
188         '+', rec('200','c'),
189 );
190
191 ## 246
192
193 marc_indicators('246', 1, 3);
194
195 marc('246','a',
196         rec('532')
197 );
198
199 #_debug(0);
200
201 marc('250','a',
202         suffix(
203                 rec('205','f') ? ' / ' :
204                                  ' '.
205                         rec('205','a')
206         )
207 );
208
209 marc('250','b',
210         rec('205','f')
211 );
212
213 # ponovljiva potpolja u originalnom redosljedu
214
215 marc_original_order('260', '210');
216
217
218 # provjeriti interpunkcije !!
219 # u NSK nesto ne stima
220
221 marc('300','a',
222         suffix(
223                 rec('215','c')  ?  ' : ' :
224                 rec('215','d')  ?  ' ; ' :
225                 rec('215','e')  ?  ' + ' :
226                                    ' ',
227                         rec('215','a')
228         )
229 );
230
231 marc('300','b',
232         suffix(
233                 ( rec('215','c') && rec('215','d') )    ?  ' ; ' :
234                 ( rec('215','c') && rec('215','e') )    ?  ' + ' :
235                                                            ' ',
236                         rec('215','c')
237         )
238 );
239
240 marc('300','c',
241         suffix(
242                 rec('215','e') ? ' + ' :
243                                  ' ',
244                         rec('215','d')
245         )
246 );
247
248 marc('300','e',
249         rec('215','e')
250 );
251
252 marc('310','a',
253         lookup(
254                 sub { rec('326','a') },
255                 'nsk','bbaza',
256                 sub { rec('011','a') },
257                 sub { rec('11') },
258         ) 
259 );
260  
261 marc('321','a',
262         rec('326')
263 );
264
265 marc_indicators('362', 0, ' ');
266
267 marc('362','a',
268         lookup(
269                 sub { rec('207','a') },
270                 'nsk','bbaza',
271                 sub { rec('011','a') },
272                 sub { rec('11') },
273         ),
274 );
275
276
277 marc('500','a',
278         lookup(
279                 sub { rec('300','a') },
280                 'nsk','bbaza',
281                 sub { rec('011','a') },
282                 sub { rec('11') },
283         ) 
284 );
285  
286 marc('500','a',
287         lookup(
288                 sub { rec('302','a') },
289                 'nsk','bbaza',
290                 sub { rec('011','a') },
291                 sub { rec('11') },
292         ) 
293 );
294  
295 marc('504','a',
296         lookup(
297                 sub { rec('320','a') },
298                 'nsk','bbaza',
299                 sub { rec('011','a') },
300                 sub { rec('11') },
301         ) 
302 );
303
304 marc('562','a',
305         lookup(
306                 sub { rec('316','a') },
307                 'nsk','bbaza',
308                 sub { rec('011','a') },
309                 sub { rec('11') },
310         ) 
311 );
312  
313
314 #marc('500','a',
315 #       rec('300')
316 #);
317 #
318 #marc('500','a',
319 #       rec('314')
320 #);
321 #
322 #marc('504','a',
323 #       rec('320')
324 #);
325
326 ## napomene uz konverziju polja 327 (sadrzaj):
327 # NSK konvertira 327 (NP) u 501 (R)
328 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
329 # standard i validacije dopu¹taju 501 (R) i 505 (R)
330
331 ## FFPS 327 - sadrzaj
332 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
333         marc_indicators('505', '1', ' ');
334         marc('505','a',
335                 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
336                         rec('327')
337                 )       
338 );
339 }
340
341
342 ## napomene uz konverziju polja 330:
343 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
344
345
346 # FFPS 330 (NP) - sa¾etak
347 if ( config() =~ m/ffps/ ) { 
348         marc('520','a',
349                 regex('s/[\\r\\n]+/. /g',
350                         rec('330')
351                 )       
352         );
353 }
354
355 # FFTU 330 - ???
356 if ( config() =~ m/fftu/ ) { 
357         marc('520','a',
358                 rec('330')
359         );
360 }
361
362
363 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
364
365
366 ### 534
367
368 marc('534','a',
369         rec('324')
370 );
371
372
373 marc_indicators('655', ' ', 4);
374 marc('655','a',
375         rec('608')
376 );
377
378 marc_indicators('653', 0, ' ');
379 marc('653','a',
380         rec('610')
381 );
382
383 # 675 podpolja c, d ... - ¹to s njima ???
384
385 # 084 je other classification (R)
386 # NSK ga koristi za struènu oznaku NSK iz polja 681
387 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
388 #
389
390
391
392 #_debug(2);
393
394 marc_indicators('700', 1, ' ');
395
396 if ( rec('701') ) { 
397 marc('700','4', 
398         'aut'
399 ); 
400 }
401
402 marc('700','a',
403         join_with(', ',
404                 rec('701', 'a'),
405                 rec('701', 'b')
406         )
407 );
408
409 marc('700','a',
410         join_with(', ',
411                 rec('701', 'c'),
412                 rec('701', 'd')
413         )
414 );
415
416 marc('700','a',
417         join_with(', ',
418                 rec('701', 'e'),
419                 rec('701', 'f')
420         )
421 );
422
423 marc('700','a',
424         join_with(', ',
425                 rec('701', 'g'),
426                 rec('701', 'h')
427         )
428 );
429
430
431 marc('700','a',
432         rec('702','a'),
433 );
434
435
436 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
437
438
439 marc('700','a',
440         join_with(', ',
441                 rec('702','c'),
442                 rec('702','d')
443         )
444 );
445
446 marc('700','a',
447         join_with(', ',
448                 rec('702','e'),
449                 rec('702','f')
450         )
451 );
452
453 marc('700','a',
454         join_with(', ',
455                 rec('702','g'),
456                 rec('702','h')
457         )
458 );
459
460  
461 #_debug(0);
462
463
464
465 marc_indicators('740', 0, ' ');
466
467 if ( ! rec('464') ) {
468 marc('740','a',
469         rec('200','c')
470 );
471
472 marc('740','a',
473         rec('200','k')
474 );
475
476 } else {
477 marc('740','a',
478         rec('464','a')
479 );
480 };
481
482 marc_indicators('770', 0, ' ');
483 marc('770','t',
484         rec('430','a'),
485 );
486
487 marc('770','x',
488         rec('430','b'),
489 );
490
491 if ( rec('225','a') ) {
492
493 marc_indicators('773', 0, ' ');
494 marc('773','g',
495         rec('207','a')
496 );
497
498 marc('773','t',
499         join_with(' : ',
500                 rec('225','a'),
501                 rec('225','e')
502         ),
503 );
504
505 marc('773','w',
506         lookup(
507                 sub { 
508                         join_with('', 
509                                 uc( config() ),
510                                 ' P',
511                                 rec('000')
512                         ),
513                 },
514                 'ffsf','peri',
515                 sub { rec('200','a') },
516                 sub { rec('225','a') },
517         )
518 );
519
520 }
521
522 marc('852','j',
523         join_with(' ',
524                 rec('990')
525         )
526 );
527
528 marc('876','a',
529         rec('991','a')
530 );
531
532 marc('992','a',
533         join_with(' ; ', 
534                 rec('992')
535         )
536 );
537
538
539  
540 marc('997','a',
541         sort(
542                 lookup(
543                         sub { rec('001') },
544                         'nsk','bbaza',
545                         sub { rec('011','a') },
546                         sub { rec('11') },
547                 )
548         )
549 );
550
551 marc('998','a',
552         sort(
553                 lookup(
554                         sub { rec('001') },
555                         'nsk','bbaza',
556                         sub { first(rec('200','a')) . first(rec('200','e')) },
557                         sub { rec('200','a') . rec('200','e') },
558                 )
559         )
560 );
561
562 marc('998','a',
563         sort(
564                 lookup(
565                         sub { rec('001') },
566                         'nsk','bbaza',
567                         sub { first(rec('200','a')) },
568                         sub { rec('200','a') },
569                 )
570         )
571 );
572
573 }