configuration files for FF journals databases conversion
[webpac2] / conf / ffcasopisi / csv2marc.pl
1
2 ### LEADER
3
4 ## LDR 05 - n - new
5 marc_leader('05','n');
6
7 ## LDR 06 - a - language material 
8 marc_leader('06','a');
9
10 ## LDR 07 - Bibliographic level 
11 marc_leader('07','s');
12
13 ## LDR 17 - Encoding level ; 7 - minimal level, u - unknown
14 marc_leader('17','u');
15
16 ## LDR 18 - i - isbd 
17 marc_leader('18','i');
18
19 ### 008 - All materials
20 marc_fixed('008','00', '090512');       # 00-05 - Date entered on file
21
22 ## za 008 06 treba i lookup u tablicu u kojoj postoji podatak o tome jel tekuci casopis ili nije?
23 ## c - Continuing resource currently published
24 ## d - Continuing resource ceased publication
25
26 marc_fixed('008','06','|');             # 06 - Type of date/Publication status, s = single know date, | = no attempt to code
27 marc_fixed('008','07','||||');
28 marc_fixed('008','11','||||');
29 marc_fixed('008','15','xx ');
30                                         # 18-34 - Material specific coded elements 
31                                         # 35-37 - Language
32 marc_fixed('008','38','|');             # 38 - Modified record
33 marc_fixed('008','39','d');             # 39 - Cataloging source
34
35 ### 008 - Continuing resources
36
37 marc_fixed('008','18', '|');    # 18 - Frequency - ovo treba popuniti iz polja 326
38 marc_fixed('008','19', '|');    # 19 - Regularity
39                                 # 20 - Undefined, ontains a blank (#) or fill character (|)
40
41 marc_fixed('008','21', 'p');    # 21 - Type of continuing resource
42
43                                 # 22 - Form of original item - blank
44                                 # 23 - Form of item
45                                 # 24 - Nature of entire work
46                                 # 25-27 - Nature of contents
47                                 # 28 - Government publication
48                                 # 29 - Conference publication
49                                 # 30-32 - Undefined
50                                 # 33 - Original alphabet or script of title
51                                 # 34 - Entry convention
52 marc_fixed('008','22', ' ');
53 marc_fixed('008','23', ' ');
54 marc_fixed('008','24', '|');
55 marc_fixed('008','25', '|||');
56 marc_fixed('008','28', ' ');
57 marc_fixed('008','29', ' ');
58 marc_fixed('008','33', '|');
59 marc_fixed('008','34', '|');
60
61 ### 022
62
63 marc('022','a',
64         rec('F')
65 );
66
67 ### 035$a
68
69 if ( rec('B') ) {
70         marc('035','a',
71                 join_with(' ',
72                         'HR-ZaFF',
73                         join_with('',
74                                 suffix('P',
75                                         lc( rec('A') )
76                                 ),
77                                 rec('B')
78                         ),
79                 )
80         );
81 }
82
83 ### 040
84 # za sve je isti
85 # treba utvrditi toènu oznaku za ustanovu
86
87 marc('040','a',
88         'HR FFZG'
89 );
90
91 marc('040','b',
92         'hrv'
93 );
94
95 marc('040','c',
96         'HR-ZaFF'
97 );
98
99 marc('040','e',
100         'ppiak'
101 );
102
103
104 #_debug(3);
105
106 ## iz nsk
107 #if ( rec('11') ) {
108 #marc('210','a',
109 #       lookup(
110 #               sub { rec('531','a') },
111 #               'nsk','bbaza',
112 #               sub { rec('011','a') },
113 #               sub { rec('11') },
114 #       ) 
115 #);
116 #}
117
118 # ### 222 indikatori
119 # # drugi indikator prema èlanu
120
121 # marc_indicators('222',' ','0');
122
123 # ### 222 - Key title
124 # # pronaæi prikadan izvor podataka - nsk baza, issn baze
125
126 # marc('222','a',
127 #       rec('530')
128 # );
129
130 # # iz nsk:
131 # #if ( rec('11') ) {
132 # #marc('222','a',
133 # #     lookup(
134 # #             sub { rec('530','a') },
135 # #             'nsk','bbaza',
136 # #             sub { rec('011','a') },
137 # #             sub { rec('11') },
138 # #     ) 
139 # #);
140 # #}
141
142 ### 245 indikatori
143 # generiraju se prema èlanu, trebalo bi mo¾da i prema jeziku (jezika nema uvijek). 
144 # potrebna naknadna kontrola
145
146 marc_indicators('245', 0, 0);
147
148 if (    ( rec('E') =~ m/^Die /) || 
149         ( rec('E') =~ m/^Das /) || 
150         ( rec('E') =~ m/^Der /) || 
151         ( rec('E') =~ m/^Les /) || 
152         ( rec('E') =~ m/^The /) ) {
153                 marc_indicators('245', 0, 4);
154
155
156
157 if (    ( rec('E') =~ m/^Un /) || 
158         ( rec('E') =~ m/^An /) ||
159         ( rec('E') =~ m/^La /) ||
160         ( rec('E') =~ m/^Le /) ||
161         ( rec('E') =~ m/^Il /) ) {
162                 marc_indicators('245', 0, 3);
163
164
165 if (    ( rec('E') =~ m/^A /) || 
166         ( rec('E') =~ m/^L'/) ) {
167                 marc_indicators('245', 0, 2);
168
169
170 ### 245
171
172 if ( rec('E') =~ m/:/ ) {
173         marc('245','a',
174                 suffix(' :',
175                         regex('s/(^.*):.*/$1/',
176                                 rec('E')
177                         )
178                 )
179         );
180         marc('245','b',
181                 regex('s/^.*: (.*)/$1/',
182                         rec('E')
183                 )
184         );
185 } else {
186         marc('245','a',
187                 rec('E')
188         );
189 }
190
191 # ### 246 inikatori
192 # # prema jeziku - provjera
193
194 # if (  ( rec('200','a') =~ m/^Die /) || 
195 #       ( rec('200','a') =~ m/^Das /) || 
196 #       ( rec('200','a') =~ m/^The /) ) {
197 #               marc_indicators('246', 0, 4);
198 # } else {
199 #       marc_indicators('246', 0, 0);
200 # }
201
202 # ### 246
203 # # povuæi podatke iz prikladnog izvora (nsk, issn)
204
205 # marc('246','a',
206 #       rec('532')
207 # );
208
209 # ## iz nsk:
210 # #     marc('246','a',
211 # #             lookup(
212 # #                     sub { rec('532','a') },
213 # #                     'nsk','bbaza',
214 # #                     sub { rec('011','a') },
215 # #                     sub { rec('11') },
216 # #             )
217 # #     );
218
219 # #_debug(0);
220
221
222 # ## 260 - izdavanje
223 # # provjeriti interpunkcije !!, u NSK nesto ne stima
224
225 # marc_original_order('260','210');
226
227 # ## lookup u NSK:
228 # # if ( rec('11') ) {
229 # #     marc_repeatable_subfield('260','a',
230 # #             lookup(
231 # #                     sub { rec('210','a') },
232 # #                     'nsk','bbaza',
233 # #                     sub { rec('011','a') },
234 # #                     sub { rec('11') },
235 # #             ) 
236 # #     );
237 # #     marc_repeatable_subfield('260','b',
238 # #             lookup(
239 # #                     sub { rec('210','c') },
240 # #                     'nsk','bbaza',
241 # #                     sub { rec('011','a') },
242 # #                     sub { rec('11') },
243 # #             ) 
244 # #     );
245 # #     marc('260','c',
246 # #             lookup(
247 # #                     sub { rec('210','d') },
248 # #                     'nsk','bbaza',
249 # #                     sub { rec('011','a') },
250 # #                     sub { rec('11') },
251 # #             ) 
252 # #     );
253 # # } else {
254 # #     marc_original_order('260', '210');
255 # # }
256
257
258 # ### 300
259
260 # marc('300','a',
261 #       suffix(
262 #               ( rec('215','a') && rec('215','c') )    ?  ' : ' :
263 #               ( rec('215','a') && rec('215','d') )    ?  ' ; ' :
264 #               ( rec('215','a') && rec('215','e') )    ?  ' + ' :
265 #                                  ' ',
266 #                       rec('215','a')
267 #       )
268 # );
269
270 # marc('300','b',
271 #       suffix(
272 #               ( rec('215','c') && rec('215','d') )    ?  ' ; ' :
273 #               ( rec('215','c') && rec('215','e') )    ?  ' + ' :
274 #                                                          ' ',
275 #                       rec('215','c')
276 #       )
277 # );
278
279 # marc('300','c',
280 #       suffix(
281 #               rec('215','e') ? ' + ' :
282 #                                ' ',
283 #                       rec('215','d')
284 #       )
285 # );
286
287 # marc('300','e',
288 #       rec('215','e')
289 # );
290
291 # ### 310 - current stated publication frequency
292 # # potrebno ujednaèiti, koristi se i u polju 008
293
294 # marc('310','a',
295 #       rec('326')
296 # );
297
298 # ### 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
299
300 # # marc('321','a',
301 # #     ovo bi trebalo procitati iz NSK konvertiranih podataka
302 # #);
303
304 # marc_indicators('362', 0, ' ');
305
306 # ### 362
307 # #
308 # if ( rec('207','a') ) {
309 #       marc('362','a',
310 #               rec('207','a'),
311 #       );
312 # } 
313
314 # ## lookup iz nsk
315 # #else {
316 # #     if ( rec('11') ) {
317 # #             marc('362','a',
318 # #                     lookup(
319 # #                             sub { rec('207','a') },
320 # #                             'nsk','bbaza',
321 # #                             sub { first( rec('011','a') ) },
322 # #                             sub { rec('11') },
323 # #                     ) 
324 # #             );
325 # #     }
326 # #}
327
328 # ### 490 ind.
329
330 # marc_indicators('490', '0', ' ');
331
332 # ### 490
333
334 # marc('490','a',
335 #       join_with('. ',
336 #               join_with(' / ',
337 #                       join_with(' : ',
338 #                               join_with(' = ',
339 #                                       rec('225','a'),
340 #                                       rec('225','d')
341 #                               ),
342 #                               rec('225','e')
343 #                       ),
344 #                       join_with(' ; ',
345 #                               rec('225','f'),
346 #                               rec('225','g')
347 #                       ),
348 #               ),
349 #               rec('225','h')
350 #       )
351 # );
352
353 # marc('490','v',
354 #       rec('225','v')
355 # );
356
357 # marc('490','x',
358 #       rec('225','x')
359 # );
360
361 # if ( rec('11') ) {
362 #       marc('999','a',
363 #               lookup(
364 #                       sub { rec('110','a'), },
365 #                       'nsk','bbaza',
366 #                       sub { rec('011','a') }, 
367 #                       sub { rec('11') } 
368 #               )
369 #       );
370 # }
371
372
373 # #marc('998','a',
374 # #     lookup(
375 # #             sub { rec('H') },
376 # #             'ffsf','xls',
377 # #             sub { rec('A') },
378 # #             sub { $id },
379 # #     ),
380 # #);
381
382
383 ### 500
384 # lookup
385
386
387 # marc('500','a',
388 #       rec(''),
389 # );
390 #  
391
392 # ### 534 - napomena o pretisku
393
394 # marc('534','a',
395 #       rec('324')
396 # );
397
398 # ## potencijalno za izvuæi iz NSK
399 # #if ( rec('11') ) {
400 # #marc('546','a',
401 # #     lookup(
402 # #             sub { rec('302','a') },
403 # #             'nsk','bbaza',
404 # #             sub { rec('011','a') },
405 # #             sub { rec('11') },
406 # #     ) 
407 # #);
408 # #
409 # #marc('550','a',
410 # #     lookup(
411 # #             sub { rec('314','a') },
412 # #             'nsk','bbaza',
413 # #             sub { rec('011','a') },
414 # #             sub { rec('11') },
415 # #     ) 
416 # #);
417 # #
418 # #marc('555','a',
419 # #     lookup(
420 # #             sub { rec('320','a') },
421 # #             'nsk','bbaza',
422 # #             sub { rec('011','a') },
423 # #             sub { rec('11') },
424 # #     ) 
425 # #);
426 # #
427 # #
428 # ## marc('562','a',
429 # ##    lookup(
430 # ##            sub { rec('316','a') },
431 # ##            'nsk','bbaza',
432 # ##            sub { rec('011','a') },
433 # ##            sub { rec('11') },
434 # ##    ) 
435 # ## );
436 # #}
437
438
439 if ( rec('B') ) {
440         marc('996','a',
441                 lc( rec('A') )
442         );
443
444         marc('996','b',
445                 'peri'
446         );
447
448         marc('996','c',
449                 rec('B')
450         );
451 }
452
453
454 # ### 653 indikatori
455 # marc_indicators('653', 0, ' ');
456
457 # ### 653
458
459 # marc('653','a',
460 #       rec('610')
461 # );
462
463 # # marc_indicators('655', ' ', 4);
464 # # marc('655','a',
465 # #     lookup(
466 # #             sub { rec('608','a') },
467 # #             'nsk','bbaza',
468 # #             sub { rec('011','a') },
469 # #             sub { rec('11') },
470 # #     ) 
471 # # );
472
473
474 # #_debug(2);
475
476 # ### 700 indikatori
477
478 # marc_indicators('700', 1, ' ');
479
480 # ### 700
481
482 # marc('700','a',
483 #       rec('702','a'),
484 # );
485
486 # marc('700','a',
487 #       join_with(', ',
488 #               rec('702','c'),
489 #               rec('702','d')
490 #       )
491 # );
492
493 #  
494 # #_debug(0);
495
496 # ### 710 indikatori
497
498 # marc_indicators('710', '2', ' ');
499
500 # ### 710
501 # marc('710','a',
502 #       rec('710','a')
503 # );
504
505 # ### 770 indikatori
506
507 # marc_indicators('770', 0, ' ');
508
509 # ### 770
510 # marc('770','t',
511 #       rec('421','a'),
512 # );
513
514 # ### 772 indikatori
515 # marc_indicators('772', 0, ' ');
516
517 # ### 772
518 # marc('772','t',
519 #       rec('422','a'),
520 # );
521
522 # ### 773 indikatori
523
524 # if ( rec('225','a') ) {
525
526 # marc_indicators('773', 0, ' ');
527
528 # ### 773
529 # ## da li je bitan redoslijed potpolja?
530
531 # marc('773','w',
532 #       lookup(
533 #               sub { rec('000') },
534 #               'ffsf','peri',
535 #               sub { rec('200','a') },
536 #               sub { 
537 #                       regex('s/ ; //g',
538 #                               rec('225','a')
539 #                       )
540 #               },
541 #       )
542 # );
543
544 # }
545
546
547 # ### 777 indikatori
548
549 # marc_indicators('777', 0, ' ');
550
551 # ### 777
552
553 # marc('777','t',
554 #       rec('423','a'),
555 # );
556
557 # ### 780 indikatori
558
559 # marc_indicators('780', 0, 0);
560
561 # ### 780
562 # marc('780','t',
563 #       rec('430','a'),
564 # );
565
566 # ### 785 indikatori
567
568 # marc_indicators('785', 0, 0);
569
570 # ### 785
571 # marc('785','t',
572 #       rec('440','a'),
573 # );
574
575 # ### 852
576
577 # marc('852','j',
578 #       join_with(' ',
579 #               rec('990')
580 #       )
581 # );
582
583 # ### 876
584
585 # marc('876','a',
586 #       rec('991','a')
587 # );
588
589 marc('942','d',
590         rec('C')
591 );
592
593
594
595
596 # ### 992
597
598 # marc('992','a',
599 #       join_with(' ; ', 
600 #               rec('992')
601 #       )
602 # );
603
604
605 ### polja za probu
606
607
608 #marc('998','a',
609 #       lookup(
610 #               sub { rec('200','a') },
611 #               'ffiz','peri',
612 #               sub { rec('200','a'), },
613 #               sub { rec('225','a'), }
614 #       )
615 #);
616
617  
618 # marc('997','a',
619 #       sort(
620 #               lookup(
621 #                       sub { rec('001') },
622 #                       'nsk','bbaza',
623 #                       sub { rec('011','a') },
624 #                       sub { rec('11') },
625 #               )
626 #       )
627 # );
628
629 # marc('998','a',
630 #       sort(
631 #               lookup(
632 #                       sub { rec('001') },
633 #                       'nsk','bbaza',
634 #                       sub { first(rec('200','a')) . first(rec('200','e')) },
635 #                       sub { rec('200','a') . rec('200','e') },
636 #               )
637 #       )
638 # );
639
640 # marc('998','a',
641 #       sort(
642 #               lookup(
643 #                       sub { rec('001') },
644 #                       'nsk','bbaza',
645 #                       sub { first(rec('200','a')) },
646 #                       sub { rec('200','a') },
647 #               )
648 #       )
649 # );
650