User Tools

Site Tools


migracion_de_secs_a_marc21

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
migracion_de_secs_a_marc21 [09/10/2006 16:54]
fernando creado
migracion_de_secs_a_marc21 [05/05/2009 18:36]
fernando
Line 1: Line 1:
 +====== Migración de SeCS a MARC21 ======
  
 +
 +El siguiente script (un pft para mx) permite convertir la base TITLE del SeCS a formato MARC 21. Aún quedan detalles por arreglar.
 +
 +<note important>​
 +Estoy seguro de que se le han hecho mejoras a este script, pero no han sido copiadas aquí. Además, deberíamos subirlo a un repositorio de código abierto. --- //​[[fjgomez@gmail.com|Fernando Gómez]] 2009/05/05 18:34//
 +</​note>​
 +
 +<code c>
 +  /* Migración de SeCS a MARC 21 */
 +  ​
 +  /* FG, mayo 2006 */
 +  ​
 +    /* Eliminamos todos los campos */
 +    '​d*',​
 +  ​
 +    /* Leader */
 +    '​a905|n|',​
 +    '​a906|a|',​
 +    '​a907|s|',​
 +    '​a908|#​|',​
 +    '​a909|#​|',​
 +    '​a917|#​|',​
 +    '​a918|#​|',​
 +    '​a919|#​|',​
 +    ​
 +    /* Nro. de control */
 +    '​a001|',​v30,'​|',​
 +    ​
 +    /* Fecha última modificación */
 +    '​a005|',​s(date).8,​ s(date)*9.6,​ '​.0','​|',​
 +    ​
 +    '​a008{',​
 +      /* 00-05 */          '​000000',​
 +      /* 06-14 */          if v304 > // then
 +                             '​d',​v301.4,​v304.4,​
 +                           else
 +                             '​c',​v301.4,'####',​
 +                           fi,
 +      /* 15-17 pais */     '​|||'​ /* ref(['​pais'​]l(['​pais'​]v310),​v2) */   /* tabla para mapear códigos de país */
 +      /* 18 freq */        select v380 /* TO-DO: añadir los códigos que faltan */
 +                             case '​A'​ : '​a',​ /* annual */
 +                             case '​B'​ : '​b',​ /* bimonthly (según MARC: Includes 6, 7, or 8 numbers a year.) */
 +                             case '​E'​ : '​e',​ /* biweekly */
 +                             case '​F'​ : '​f',​ /* semiannual */
 +                             case '​G'​ : '​g',​ /* biennial */
 +                             case '​K'​ : '#',​ /* No determinable frequency (Frequency is intentionally irregular.) */
 +                             case '​M'​ : '​m',​ /* monthly (según MARC: Includes 9, 10, 11, or 12 numbers a year.) */
 +                             case '​Q'​ : '​q',​ /* quarterly */
 +                             case '​S'​ : '​s',​ /* semimonthly */
 +                             case '​T'​ : '​t',​ /* three times a year */
 +                             case '​Z'​ : '​z',​ /* other */
 +                           ​endsel,​
 +      /* 19 regularidad */           '​|',​
 +      /* 20 indef. */                '#',​
 +      /* 21 tipo de R.C. */          '​p', ​ /* p: periodical */
 +      /* 22 forma del original */    '#',​
 +      /* 23 forma del ítem */        '#',​
 +      /* 24 Nature of entire work */ '#',​
 +      /* 25-27 Nature of contents */ '####',​
 +      /* 28 Publ. gubernamental */   '#',​
 +      /* 29 Publ. de conferencia */  '​0',​
 +      /* 30-32 indef. */             '###',​
 +      /* 33 Alfabeto original */     ​v340, ​ /* pasar a minúscula */
 +      /* 34 Entry convention */      '​0',​
 +      /* 35-37 idioma */             '​|||',​ /​*ref(['​idioma'​]l(['​idioma'​]v350[1]),​v2)*/ ​ /* tabla para mapear idiomas */
 +      /* 38-39 */                    '​||',​
 +    '​{',​
 +    ​
 +    /* 022 - ISSN */
 +    if p(v400) then
 +      (
 +        '​a022|##​^a',​v400,'​|',​
 +      )
 +    fi,
 +    ​
 +    /* 210 - título abreviado */
 +    if p(v150) then
 +      '​a210|0#​^a',​v150,'​|',​
 +    fi,
 +    ​
 +    /*041 - otros idiomas */
 +    ​
 +    /* 110/710 - puntos de acceso */
 +    ​
 +    /* 245 - título */
 +    '​a245|0',​
 +      if '~The ~Les ~Las ~Los ~' : v100.4 then '​4'​ else '​0',​ fi,  /* TO-DO: L'​Analyse */
 +      '​^a',​v100,​
 +      " :​^b"​v110,​
 +      " =^b"​v230,​
 +      "​.^n"​v120, ​  /* nro. de sección/​parte */
 +      "​.^p"​v130, ​  /* título de sección/​parte */
 +      " /​^c"​v140+|,​ |,  /* el v140 es correcto como mención de responsabilidad?​ */
 +    '​.|',​
 +    ​
 +    /*246 - variantes de título */
 +    if p(v240) then
 +      (
 +        '​a246|3#​^a',​v240,'​|', ​  /* TO-DO: títulos paralelos (230) */
 +      )
 +    fi,
 +    ​
 +    /* publicación */
 +    '​a260|##',​
 +      '​^a',​v490,​
 +      ' :^b', v480, if a(v480) then v140+|, |, fi,  /* TO-DO: hay casos donde el editor está implícito, e.g. Rendiconti del Circolo Matematico di Palermo */
 +      ',​^c',​ v301, '​-',​v304,​ " "n304, '​.', ​ /* TO-DO: usar sólo años (a veces hay meses, e.g. Bulletin of mathematical biophysics) */
 +    '​|',​
 +  ​
 +    ​
 +    /* 310 - frecuencia actual */
 +    /* ¿cuándo usamos "​frecuencia varía"?​ */
 +    /* TO-DO: ¿si no es ninguno de esos casos? */
 +    '​a310|##​^a',​
 +        select v380
 +          case '​A'​ : '​Anual',​
 +          case '​B'​ : '​Bimestral',​
 +          case '​E'​ : '​Quincenal', ​ /* ¿diferencia con S-bimensual?​ */
 +          case '​F'​ : '​Semestral',​
 +          case '​G'​ : '​Bienal',​
 +          case '​K'​ : '​Irregular',​
 +          case '​M'​ : '​Mensual',​
 +          case '​Q'​ : '​Trimestral',​
 +          case '​S'​ : '​Bimensual',​
 +          case '​T'​ : '​Cuatrimestral',​
 +          case '​Z'​ : //, /* otras frecuencias */
 +        endsel,
 +        '​.',​
 +    '​|',​
 +    ​
 +    /*362 - fechas/​designación secuencial */
 +    '​a362|0#​^a',​
 +      "Vol. "v302,
 +      if p(v302) and p(v303) then ', ' fi,
 +      "no. "v303,
 +      " ("​v301"​)",​
 +      if p(v304) or p(v305) or p(v306) then
 +        ' - ',
 +        "Vol. "v305,
 +        if p(v305) and p(v306) then ', ' fi,
 +        "no. "v306,
 +        " ("​v304"​).",​
 +      else
 +        '- .',
 +      fi,
 +    '​|',​
 +    ​
 +     /*
 +          610   ​168 ​     174
 +          620    31       31
 +          650     ​1 ​       2
 +          670     ​1 ​       1
 +          680     ​4 ​       7
 +          710   ​134 ​     135
 +          720    16       20
 +          770     ​5 ​       8
 +          780     ​4 ​       4
 +          790     ​4 ​       4
 +    */
 +  ​
 +    /* 780 - título anterior */
 +    if p(v610) then
 +      '​a780|00^t',​replace(v610,'​^i','​^w'​),'​|',​ /* continuación */
 +    fi
 +    if p(v620) then
 +      '​a780|01^t',​replace(v620,'​^i','​^w'​),'​|',​ /* continuación parcial */
 +    fi
 +    if p(v650) then
 +      '​a780|05^t',​replace(v650,'​^i','​^w'​),'​|',​ /* absorbió */
 +    fi
 +    if p(v660) then
 +      '​a780|06^t',​replace(v660,'​^i','​^w'​),'​|',​ /* absorbió en parte */
 +    fi
 +    if p(v670) then
 +      '​a780|07^t',​replace(v670,'​^i','​^w'​),'​|',​ /* subdivisión de */
 +    fi
 +    if p(v680) then
 +      '​a780|04^t',​replace(v680,'​^i','​^w'​),'​|',​ /* fusión de ... con ... */   /* TO-DO: generar un 580 */
 +    fi
 +    ​
 +    /* 785 - título siguiente */
 +    if p(v710) then
 +      '​a785|00^t',​replace(v710,'​^i','​^w'​),'​|',​ /* continuado por */
 +    fi
 +    if p(v720) then
 +      '​a785|01^t',​replace(v720,'​^i','​^w'​),'​|',​ /* continuado en parte */
 +    fi
 +    if p(v750) then
 +      '​a785|04^t',​replace(v750,'​^i','​^w'​),'​|',​ /* absorbido por */
 +    fi
 +    if p(v760) then
 +      '​a785|05^t',​replace(v760,'​^i','​^w'​),'​|',​ /* absorbido en parte por */
 +    fi
 +    if p(v770) then
 +      '​a785|06^t',​replace(v770,'​^i','​^w'​),'​|',​ /* subdividido */    /* TO-DO: generar un 580 */
 +    fi
 +    if p(v780) then
 +      '​a785|17^t',​replace(v780,'​^i','​^w'​),'​|',​ /* fusionado con */  /* TO-DO: generar un 580 */
 +    fi
 +    if p(v790) then
 +      '​a785|17^t',​replace(v790,'​^i','​^w'​),'​|',​ /* para formar */    /* TO-DO: generar un 580 */
 +    fi
 +    if p(v780) and p(v790) then
 +      '​a580|##​^aFusionado con ',​v780,'​ para formar ',​v790,'​.|',​
 +    fi,
 +    ​
 +    /* 856 - URL */
 +    if v900^w : '​http'​ then
 +      '​a856|4#​^yAcceso online^u',​v900^w,'​|', ​ /* TO-DO: revisar texto del link. ¿Puede haber más de una URL por registro de SeCS? */
 +    fi,
 +    ​
 +    /* 866 - existencias */
 +    if p(v98) then
 +      '​a866|#​0^a',​v98,'​|',​
 +    fi,
 +</​code>​
 +{{tag>​migracion marc}}
migracion_de_secs_a_marc21.txt · Last modified: 05/05/2009 00:00 (external edit)