work on journals database conversion
[webpac2] / conf / ffcasopisi / sigxls2marc.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 if ( rec('E') =~ m# / #  && rec('E') =~ m/[:=]/ ) {
192         marc('299','a',
193                 regex('s/(^.*?[:=]) (.*\/) (.*)/$1/',
194                         rec('E')
195                 )
196         );
197         marc('299','b',
198                 regex('s/(^.*?[:=]) (.*\/) (.*)/$2/',
199                         rec('E')
200                 )
201         );
202         marc('299','c',
203                 regex('s/(^.*?[:=]) (.*\/) (.*)/$3/',
204                         rec('E')
205                 )
206         );
207                 
208 } elsif ( rec('E') =~ m/ \/ /  && rec('E') !~ m/[:=]/ ) {
209         marc('299','a',
210                 regex('s/(^.*?\/) (.*)/$1/',
211                         rec('E')
212                 )
213         );
214         marc('299','c',
215                 regex('s/(^.*?\/) (.*)/$2/',
216                         rec('E')
217                 )
218         );
219 } elsif ( rec('E') !~ m/ \/ / && rec('E') =~ m/[:=]/ ) {
220         marc('299','a',
221                 regex('s/(^.*?[:=]) (.*)/$1/',
222                         rec('E')
223                 )
224         );
225         marc('299','b',
226                 regex('s/(^.*?[:=]) (.*)/$2/',
227                         rec('E')
228                 )
229         );
230
231 } else {        
232         marc('299','a',
233                 rec('E')
234         );
235 }
236
237 # ### 246 inikatori
238 # # prema jeziku - provjera
239
240 # if (  ( rec('200','a') =~ m/^Die /) || 
241 #       ( rec('200','a') =~ m/^Das /) || 
242 #       ( rec('200','a') =~ m/^The /) ) {
243 #               marc_indicators('246', 0, 4);
244 # } else {
245 #       marc_indicators('246', 0, 0);
246 # }
247
248 # ### 246
249 # # povuæi podatke iz prikladnog izvora (nsk, issn)
250
251 # marc('246','a',
252 #       rec('532')
253 # );
254
255 # ## iz nsk:
256 # #     marc('246','a',
257 # #             lookup(
258 # #                     sub { rec('532','a') },
259 # #                     'nsk','bbaza',
260 # #                     sub { rec('011','a') },
261 # #                     sub { rec('11') },
262 # #             )
263 # #     );
264
265 # #_debug(0);
266
267
268 # ## 260 - izdavanje
269 # # provjeriti interpunkcije !!, u NSK nesto ne stima
270
271 # marc_original_order('260','210');
272
273 # ## lookup u NSK:
274 # # if ( rec('11') ) {
275 # #     marc_repeatable_subfield('260','a',
276 # #             lookup(
277 # #                     sub { rec('210','a') },
278 # #                     'nsk','bbaza',
279 # #                     sub { rec('011','a') },
280 # #                     sub { rec('11') },
281 # #             ) 
282 # #     );
283 # #     marc_repeatable_subfield('260','b',
284 # #             lookup(
285 # #                     sub { rec('210','c') },
286 # #                     'nsk','bbaza',
287 # #                     sub { rec('011','a') },
288 # #                     sub { rec('11') },
289 # #             ) 
290 # #     );
291 # #     marc('260','c',
292 # #             lookup(
293 # #                     sub { rec('210','d') },
294 # #                     'nsk','bbaza',
295 # #                     sub { rec('011','a') },
296 # #                     sub { rec('11') },
297 # #             ) 
298 # #     );
299 # # } else {
300 # #     marc_original_order('260', '210');
301 # # }
302
303
304 # ### 300
305
306 # marc('300','a',
307 #       suffix(
308 #               ( rec('215','a') && rec('215','c') )    ?  ' : ' :
309 #               ( rec('215','a') && rec('215','d') )    ?  ' ; ' :
310 #               ( rec('215','a') && rec('215','e') )    ?  ' + ' :
311 #                                  ' ',
312 #                       rec('215','a')
313 #       )
314 # );
315
316 # marc('300','b',
317 #       suffix(
318 #               ( rec('215','c') && rec('215','d') )    ?  ' ; ' :
319 #               ( rec('215','c') && rec('215','e') )    ?  ' + ' :
320 #                                                          ' ',
321 #                       rec('215','c')
322 #       )
323 # );
324
325 # marc('300','c',
326 #       suffix(
327 #               rec('215','e') ? ' + ' :
328 #                                ' ',
329 #                       rec('215','d')
330 #       )
331 # );
332
333 # marc('300','e',
334 #       rec('215','e')
335 # );
336
337 # ### 310 - current stated publication frequency
338 # # potrebno ujednaèiti, koristi se i u polju 008
339
340 # marc('310','a',
341 #       rec('326')
342 # );
343
344 # ### 321 - former frequency of either an item or an update to an item when a current frequency is contained in field 310
345
346 # # marc('321','a',
347 # #     ovo bi trebalo procitati iz NSK konvertiranih podataka
348 # #);
349
350 # marc_indicators('362', 0, ' ');
351
352 # ### 362
353 # #
354 # if ( rec('207','a') ) {
355 #       marc('362','a',
356 #               rec('207','a'),
357 #       );
358 # } 
359
360 # ## lookup iz nsk
361 # #else {
362 # #     if ( rec('11') ) {
363 # #             marc('362','a',
364 # #                     lookup(
365 # #                             sub { rec('207','a') },
366 # #                             'nsk','bbaza',
367 # #                             sub { first( rec('011','a') ) },
368 # #                             sub { rec('11') },
369 # #                     ) 
370 # #             );
371 # #     }
372 # #}
373
374 # ### 490 ind.
375
376 # marc_indicators('490', '0', ' ');
377
378 # ### 490
379
380 # marc('490','a',
381 #       join_with('. ',
382 #               join_with(' / ',
383 #                       join_with(' : ',
384 #                               join_with(' = ',
385 #                                       rec('225','a'),
386 #                                       rec('225','d')
387 #                               ),
388 #                               rec('225','e')
389 #                       ),
390 #                       join_with(' ; ',
391 #                               rec('225','f'),
392 #                               rec('225','g')
393 #                       ),
394 #               ),
395 #               rec('225','h')
396 #       )
397 # );
398
399 # marc('490','v',
400 #       rec('225','v')
401 # );
402
403 # marc('490','x',
404 #       rec('225','x')
405 # );
406
407 # if ( rec('11') ) {
408 #       marc('999','a',
409 #               lookup(
410 #                       sub { rec('110','a'), },
411 #                       'nsk','bbaza',
412 #                       sub { rec('011','a') }, 
413 #                       sub { rec('11') } 
414 #               )
415 #       );
416 # }
417
418
419 # #marc('998','a',
420 # #     lookup(
421 # #             sub { rec('H') },
422 # #             'ffsf','xls',
423 # #             sub { rec('A') },
424 # #             sub { $id },
425 # #     ),
426 # #);
427
428
429 ### 500
430 # lookup
431
432
433 # marc('500','a',
434 #       rec(''),
435 # );
436 #  
437
438 # ### 534 - napomena o pretisku
439
440 # marc('534','a',
441 #       rec('324')
442 # );
443
444 # ## potencijalno za izvuæi iz NSK
445 # #if ( rec('11') ) {
446 # #marc('546','a',
447 # #     lookup(
448 # #             sub { rec('302','a') },
449 # #             'nsk','bbaza',
450 # #             sub { rec('011','a') },
451 # #             sub { rec('11') },
452 # #     ) 
453 # #);
454 # #
455 # #marc('550','a',
456 # #     lookup(
457 # #             sub { rec('314','a') },
458 # #             'nsk','bbaza',
459 # #             sub { rec('011','a') },
460 # #             sub { rec('11') },
461 # #     ) 
462 # #);
463 # #
464 # #marc('555','a',
465 # #     lookup(
466 # #             sub { rec('320','a') },
467 # #             'nsk','bbaza',
468 # #             sub { rec('011','a') },
469 # #             sub { rec('11') },
470 # #     ) 
471 # #);
472 # #
473 # #
474 # ## marc('562','a',
475 # ##    lookup(
476 # ##            sub { rec('316','a') },
477 # ##            'nsk','bbaza',
478 # ##            sub { rec('011','a') },
479 # ##            sub { rec('11') },
480 # ##    ) 
481 # ## );
482 # #}
483
484
485 if ( rec('B') ) {
486         marc('996','a',
487                 lc( rec('A') )
488         );
489
490         marc('996','b',
491                 'peri'
492         );
493
494         marc('996','c',
495                 rec('B')
496         );
497 }
498
499
500 # ### 653 indikatori
501 # marc_indicators('653', 0, ' ');
502
503 # ### 653
504
505 # marc('653','a',
506 #       rec('610')
507 # );
508
509 # # marc_indicators('655', ' ', 4);
510 # # marc('655','a',
511 # #     lookup(
512 # #             sub { rec('608','a') },
513 # #             'nsk','bbaza',
514 # #             sub { rec('011','a') },
515 # #             sub { rec('11') },
516 # #     ) 
517 # # );
518
519
520 # #_debug(2);
521
522 # ### 700 indikatori
523
524 # marc_indicators('700', 1, ' ');
525
526 # ### 700
527
528 # marc('700','a',
529 #       rec('702','a'),
530 # );
531
532 # marc('700','a',
533 #       join_with(', ',
534 #               rec('702','c'),
535 #               rec('702','d')
536 #       )
537 # );
538
539 #  
540 # #_debug(0);
541
542 # ### 710 indikatori
543
544 # marc_indicators('710', '2', ' ');
545
546 # ### 710
547 # marc('710','a',
548 #       rec('710','a')
549 # );
550
551 # ### 770 indikatori
552
553 # marc_indicators('770', 0, ' ');
554
555 # ### 770
556 # marc('770','t',
557 #       rec('421','a'),
558 # );
559
560 # ### 772 indikatori
561 # marc_indicators('772', 0, ' ');
562
563 # ### 772
564 # marc('772','t',
565 #       rec('422','a'),
566 # );
567
568 # ### 773 indikatori
569
570 # if ( rec('225','a') ) {
571
572 # marc_indicators('773', 0, ' ');
573
574 # ### 773
575 # ## da li je bitan redoslijed potpolja?
576
577 # marc('773','w',
578 #       lookup(
579 #               sub { rec('000') },
580 #               'ffsf','peri',
581 #               sub { rec('200','a') },
582 #               sub { 
583 #                       regex('s/ ; //g',
584 #                               rec('225','a')
585 #                       )
586 #               },
587 #       )
588 # );
589
590 # }
591
592
593 # ### 777 indikatori
594
595 # marc_indicators('777', 0, ' ');
596
597 # ### 777
598
599 # marc('777','t',
600 #       rec('423','a'),
601 # );
602
603 # ### 780 indikatori
604
605 # marc_indicators('780', 0, 0);
606
607 # ### 780
608 # marc('780','t',
609 #       rec('430','a'),
610 # );
611
612 # ### 785 indikatori
613
614 # marc_indicators('785', 0, 0);
615
616 # ### 785
617 # marc('785','t',
618 #       rec('440','a'),
619 # );
620
621 # ### 852
622
623 # marc('852','j',
624 #       join_with(' ',
625 #               rec('990')
626 #       )
627 # );
628
629 # ### 876
630
631 # marc('876','a',
632 #       rec('991','a')
633 # );
634
635 marc('942','d',
636         rec('C')
637 );
638
639
640
641
642 # ### 992
643
644 # marc('992','a',
645 #       join_with(' ; ', 
646 #               rec('992')
647 #       )
648 # );
649
650
651 ### polja za probu
652
653
654 #marc('998','a',
655 #       lookup(
656 #               sub { rec('200','a') },
657 #               'ffiz','peri',
658 #               sub { rec('200','a'), },
659 #               sub { rec('225','a'), }
660 #       )
661 #);
662
663  
664 # marc('997','a',
665 #       sort(
666 #               lookup(
667 #                       sub { rec('001') },
668 #                       'nsk','bbaza',
669 #                       sub { rec('011','a') },
670 #                       sub { rec('11') },
671 #               )
672 #       )
673 # );
674
675 # marc('998','a',
676 #       sort(
677 #               lookup(
678 #                       sub { rec('001') },
679 #                       'nsk','bbaza',
680 #                       sub { first(rec('200','a')) . first(rec('200','e')) },
681 #                       sub { rec('200','a') . rec('200','e') },
682 #               )
683 #       )
684 # );
685
686 # marc('998','a',
687 #       sort(
688 #               lookup(
689 #                       sub { rec('001') },
690 #                       'nsk','bbaza',
691 #                       sub { first(rec('200','a')) },
692 #                       sub { rec('200','a') },
693 #               )
694 #       )
695 # );
696