Cambios globales con el MX
Mauricio Brito escribió:
Necesito una mano para corregir datos en unos subcampos de mi base marc en abcd. Deseo cambiar todos los campos que tengan MFC en el campo 900 subcampo k por el dato mfeican, para ello estoy usando un archivo prc que tiene el siguiente script:
if (v900^k = 'MFC') then 'd900^k' '<900>^kmfeican</900>' fi,
Este script me sirve cuando deseo borrar todo el campo, pero no logro hacerlo ejecutar para cando solo deseo cambiar o eliminar un subcampo. Cuando ejecuto este script obtengo el siguiente resultado:
fatal: ^k<900>^kmfeican</900>
Ernesto Spinak responde:
Si la cantidad de registros son muchos, lo recomendable es hacerlo directo en la base desde la línea de comandos
1) Haz una copia de tu base marc para respaldo, o sea los archivos mst y .xrf por cualquier eventualidad
2) usaremos un gizmo especial para ese cambio y la instrucción será mx marc gizmo=chmfc,900 copy=marc now -all tel=100
El archivo gizmo lo creas de la siguiente forma interactiva directa en la ventana de comandos
C:\>mx seq=con create=chmfc now ^kMFC|^kmfeican mfn= 1 1 «^kMFC» 2 «^kmfeican» ^Z
Egbert de Smet responde:
Just for 'academic' purposes, let me add that a proc would also have worked (ISIS has often several solutions...) :
1. create a text-file, e.g. mfc.proc : 'd900', '<900>', replace(v900,'^kMFC','^kmfceikan'),'</900>',
(if you don't want to risk empty v900 to be created, add a condition, e.g. if p(v900) then ... fi or even your original if (v900^k = 'MFC') then ... fi
2. then : mx marc proc=@mfc.prc replace=marc now -all