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
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:
Repaso general. Ejemplos “interesantes”: ref(), l(), grupos repetibles, cat(), llamadas a formatos externos (@), getenv() y putenv(), proc(), system()
* Capítulo 4: Lenguaje de formateo
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.
biblio.fstScript update-opac.sh, auto.shupdate-opac.sh.PC para el docente y una PC por alumno. Proyector. Navegador web, utilitarios CISIS, Catalis, OPACMARC.
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