Herramientas de usuario

Herramientas del sitio


notas:taller-cisis-2006

Aplicaciones de los utilitarios CISIS al trabajo con bases MARC 21

Descripción

Los utilitarios CISIS son un conjunto de herramientas que facilitan muchas tareas de análisis y mantenimiento sobre bases de datos CDS/ISIS. El uso generalizado de bases CDS/ISIS en las bibliotecas y centros de documentación de nuestro país, requiere contar con personal informático capacitado en el manejo de estas herramientas. En este curso se presentarán las principales características de los utilitarios CISIS, poniendo énfasis en su uso para resolver problemas frecuentes, particularmente en el trabajo con bases bibliográficas en formato MARC 21.

Duración: 30 hs. (lunes a viernes, 10 a 13 y 15 a 18 hs.)

Lugar: Instituto de Matemática, Universidad Nacional del Sur/CONICET

Contenido

Introducción

  • Representaciones de una base CDS/ISIS: archivo maestro (MST, XRF), archivo ISO, archivo de texto ID. Comparación: en un ISO, el tag de campo es de 3 caracteres, por lo tanto los campos con tag > 999 se pierden, o mejor dicho se representan con el tag truncado en 3 dígitos.
  • Plataformas: DOS vs. Unix. Diferencias en archivo maestro, archivo invertido, iso, archivos de texto (id, actab, uctab, pft). ¿Podemos ver las diferencias en ejemplos sencillos? Herramientas de conversión (crunchmf, crunchif, dos2unix, unix2dos).

En Linux, mx usa en forma predeterminada las tablas actab y uctab para la codificación CP 850. Eso podemos comprobarlo fácilmente intentando mandar al diccionario una palabra acentuada.

echo 'Esta es una muestra de texto con la codificación Windows 1252. Mañana comeré maníes' > sample.CP1252.txt
mx seq=sample.CP1252.txt create=sample1252 now
mx sample1252 "fst=1 4 v1"
mx sample1252 "fst=1 4 v1" actab=ac-ansi.tab
mx sample1252 "fst=1 4 v1" actab=ac-ansi.tab uctab=uc-ansi.tab

Script para visualizar las tablas:

cat ac-ansi.tab | tr ' ' '\n' > ac-ansi.lst
mx seq=ac-ansi.lst "fst=1 0 v1" fullinv=AC
# no necesitamos crear la base
 
cat uc-ansi.tab | tr ' ' '\n' > uc-ansi.lst
mx seq=uc-ansi.lst create=UC now -all
# no necesitamos diccionario
 
echo '<style>.AC {background: #FFC;} .UC {color: #666;} td {font-family: monospace; border: 1px solid #999; text-align: center; padding: 0.2em 0.3em;}</style>' > table.html
 
echo '<table cellspacing="3"></tr>' >> table.html
mx tmp from=33 to=256 "pft=@table.pft" now >> table.html
echo '</tr></table>' >> table.html

table.pft:

proc('d10a10|',replace(f(mfn-1,3,0),' ','0'),'|')

if v10 = '128' then '</tr><td colspan="16"></td><tr>'/ fi,

if right(f(val(v10)/16.0,1,2),2) = '00' then '</tr><tr>'/ fi,

'<td ',
	if l(['AC']v10) > 0 then 'class="AC"' fi,
	'>&#',v10,';',
	if ref(['UC']mfn,v1) <> v10 then
		' <span class="UC">&#',ref(['UC']mfn,v1),';</span>',
	fi,
'</td>'/

Esta es la tabla resultante:

Utilitarios CISIS

  • General: MX
  • Para archivo maestro: MXF0, MXTB, MXCP, MXGW, MSRT, RETAG, CTLMFN, MKXRF, ID2I, I2ID
  • Para archivo invertido: IFKEYS, MZ, IFLOAD, IFUPD, MYZ
  • Características de los utilitarios versión 5.

Lenguaje de formateo

Repaso general. Ejemplos “interesantes”: ref(), l(), grupos repetibles, cat(), llamadas a formatos externos (@), getenv() y putenv(), proc(), system()

* Capítulo 4: Lenguaje de formateo

Aplicaciones usuales

  • Análisis básico con mxf0. Tabla HTML con la información obtenida. Caracteres usualmente mal empleados (grado, acento agudo). Detección de caracteres (text/show, grep) en Windows/Linux. En Ubuntu con UTF-8, hago esto:
i2id biblio > bibima.latin1.id
iconv -f latin1 -t utf-8 bibima.latin1.id > bibima.utf8.id
grep 'ß' bibima.utf8.id

Alternativamente, en Gnome terminal puedo seleccionar un character encoding adecuado (e.g. Windows 1252), y así ver los datos de la base en forma correcta, e incluso usar text/show sin problemas. Queda pendiente: cómo detectar caracteres de control.

Idea para mostrar los nombres de los campos MARC en la tabla de mxf0:

wget http://www.loc.gov/marc/bibliographic/ecbdlist.html
grep '^ \{0,4\}[0-9][0-9][0-9] -' ecbdlist.html | grep -v OBSOLETE | grep -v 'LOCAL]' | sed 's/ (R)/|R/' | sed 's/ (NR)/|NR/' | sed 's/ - /|/' > marc-fields.seq
mx seq=marc-fields.seq create=marc-fields now -all
mxcp marc-fields clean
mx marc-fields "fst=1 0 v1" fullinv=marc-fields

Una vez creada la base marc-fields, se puede usar ref+l para tomar los nombres de los campos e incluirlos en la tabla.

  • Generación de listados (mx, mxtb)
  • Detección de duplicados en un listado (mx)
  • Conteo de registros (?)
  • Compresión de archivo maestro (mx)
  • Cambios globales (mx)
  • Bases estropeadas, registros corruptos. Detección y soluciones.
  • Importación de datos desde archivos de texto
  • Limpieza (mxcp)
  • Métodos para ordenar datos:
    • con el diccionario
    • msrt
    • sort (ms-dos, linux)

Errores/problemas usuales/tips

  • no especificar un valor grande para lw
  • elección de delimitador en los proc
  • no desactivar el modo mpu
  • no usar f(.,.,.) para datos numéricos
  • tratamiento inapropiado de campos repetibles, al testear una condición o al visualizar
  • usar versiones viejas de los utilitarios
  • creer que el MFN es inmutable
  • perder o alterar datos al exportar en formato ISO
  • transferir datos entre plataformas sin previa conversión
  • text/show: distingue mayúsculas, sólo informa 1ra ocurrencia. Cómo trata a los caracteres con código > 127.
  • las tablas ACTAB y UCTAB (y, por lo tanto, la correcta generación del diccionario) dependen de la codificación empleada
  • ¿Qué pasa con los registros borrados al compactar una base?
  • orden de aplicación de gizmos
  • atajos en formatos: se me ocurren dos ejemplos, el de Claudio para detectar registros sin fecha, y el de Spinak para comprimir varios OR ('A|B|C|D':v1)

MARC 21

  • qué es exactamente el formato MARC 21, y qué es un registro MARC 21; documentos básicos
  • relación entre AACR2 y MARC 21
  • representación de registros MARC en bases CDS/ISIS; convenciones de Catalis, comparación con otras aplicaciones
  • iso2709 de isis no es iso 2709 de marc; cómo ir y volver
  • el orden de los campos importa
  • la maldición de la puntuación
  • la codificación MARC-8
  • indización de registros MARC: biblio.fst
  • visualización de registros MARC
  • subcampos repetibles: problemas y soluciones
  • controles de calidad sobre bases MARC
  • otras herramientas para manipular registros MARC: MarcEdit
  • Ejemplos de migración a MARC 21: ABCI y SeCS. CEPAL?
  • Ejercitación sobre bases de datos propias y bases de Catalis.
  • ¿Ejercicio con los logs de Catalis o el OPAC?
  • Malete/GNI?

Catalis

  • Diagrama para visualizar el funcionamiento.
  • Remote scripting con iframe oculto.
  • ¿Algo sobre manipulación del DOM?
  • Problemas por resolver: registros largos, corrupción de registros, codificación de caracteres

OPACMARC

  • Bases auxiliares: name, subj, title. Cómo se generan. El script update-opac.sh.
  • Diagrama para visualizar el funcionamiento

Equipamiento y software necesarios

PC para el docente y una PC por alumno. Proyector. Navegador web, utilitarios CISIS, Catalis, OPACMARC.

Notas durante el curso

Grupos repetibles

mx biblio "proc='a999|2|'" "pft=(if iocc=val(v999) then v650/ fi)"

mx biblio "proc='a999|2|'" "pft=(if iocc=val(v999[1]) then v650/ fi)"
mx tmp "pft=s('uno','dos','tres').5"
mx biblio "proc=if v245^a.4='The ' and v245*1.1 <> '4' then 'd245a245|',v245.1,'4',v245*2,'|' fi "

Reemplazo del subcampo v82^2:

mx biblio "proc=@campo82.prc" pft=v82
if p(v82^2) then
  'd82a82|',
    replace(
      v82,
      s('^2'v82^2),
      '^221'),
  '|'
fi

isis marc

notas/taller-cisis-2006.txt · Última modificación: por 127.0.0.1