Cambios globales con el MX

From ABCD Wiki
Jump to: navigation, search

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