<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Actualmente, donde trabajo, tenemos SAS 9.2 Foundation con el paquete QC y tenemos 4 plantillas o programas macro que se ejecutarán con cada uno de nuestros productos.Que tenemos más de 40 productos.El problema es que somos la única sucursal en la empresa que usa SAS para nuestros informes y se ha deseado usarlos para hacerlos en JMP.Un marco típico de SAS para lo que tenemos actualmente es
%macro Importar(Filepath=) los archivos de Excel, generalmente dos hojas de trabajo de un libro.Uno para los datos y otro para los límites de especificación.
%macro USLtest(prueba=)
%macro LSLtest(prueba=)
%macro AmbosSLtest(test=)
ods rtf startpage=ahora columnas= 1 ;
resultados de datosdatos;
establecer datos de resultados;
valor de la tabla = 1 ;
formato de valor de tabla 8. ;
correr;
/* línea de tiempo */
fases de datos (mantener = lot_count _Lot_ _PHASE_);
longitud _FASE_ $ 7 ;
establecer datos de resultados;
si mfg_date <= &startdate entonces _PHASE_= 'Previo' ;
de lo contrario, si mfg_date >= &startdate entonces _PHASE_= 'Actual' ;
correr;
límites de datos (rename=(guión bajo=_VAR_));
establecer límitesdatos;
donde traduce(tira(_VAR_), '____' , ' ()/' )= "&prueba" ;
guión bajo = traducir (tira (_VAR_), '____' , ' ()/' );
soltar _VAR_;
correr;
datos vref (mantener=nuevavar _REF_ _REFLAB_ _CVREF_ rename=(nuevavar=_VAR_));
Pon límites;
donde _VAR_= "&prueba" ;
newvar=strip(_VAR_);
yo = 1 a 2 ;
si yo= 1 entonces hazlo;
_REF_=_LSL_;
_REFLAB_= 'LSL' ;
_CVREF_= 'rojo' ;
producción;
final;
si yo= 2 entonces hazlo;
_REF_=_USL_;
_REFLAB_= 'USL' ;
_CVREF_= 'rojo' ;
producción;
final;
final;
soltar _VAR_;
correr;
/* tabla de ejecutar */
proc shewhart data=datos de resultados;
irchart &test*lot_count= '*' / nochart nochart2 vref=vref /*outtable=datos1*/ outhistory=datos1;
correr;
datos datos2;
fusionar datos1 fases;
por lot_count;
_VAR_=tira( "&prueba" );
correr;
tablas de datos;
fusionar límites de datos2;
por _VAR_;
llamada symput( 'lsl' ,tira(_LSL_));
llamada symput( 'Usl' ,tira(_USL_));
llamada symput( 'var' ,tira(_VAR_));
llamada symput( 'unidades' ,tira(Unidades));
correr;
/* Tabla de medidas individuales */
proc shewhart history=datos2;
irchart &test*lot_count= '*' /outlabel=(lote_recuento) /* elimina el gráfico de rangos */ nochart2 vref=vref /* Índice de capacidad basado en datos de subgrupos */ índices /* Límites de especificación */ lsl=&lsl usl=&usl
/* Lee líneas de tiempo */ leerfases=todos /* Identifica las Fases en la parte superior del gráfico */ Leyenda de fase vreflabpos= 2 pruebas zerostd= 1 a 4 etiqueta de prueba1 = ' ' etiqueta de prueba2 = ' ' clipfactor= 2 totpanels= 1 ;
inserción stddev cpklcl= 'Cpk 95% más bajo' cpk= 'Cpk' cpkucl= 'Cpk 95% superior' ;
etiqueta &var= "&var (&unidades)" ;
correr;
/* Histograma */
histograma de selección de ods;
datos de capacidad de proceso = gráficos noprint;
especificación lsl=&lsl usl=&usl;
var &var;
histograma &var / normal;
recuadro n= 'NORTE'
pctlss= '% pctgtr= '% > USL' cpklcl= 'Ppk 95% más bajo' cpk= 'Ppk' cpkucl= 'Ppk 95% superior' /
cllenar = ywh
formato = 6.2 ;
etiqueta &var= "&var (&unidades)" ;
correr;
resultados de datosdatos;
establecer datos de resultados;
valor de la tabla = 3 ;
formato de valor de tabla 8. ;
correr;
ods rtf columnas = 4 ;
proc report data=resultsdata nowindows;
columna lot_count _lot_ &test;
definir lot_count / 'Contar' estilo de visualización (columna) = [ancho de celda = .5 en];
definir _lote_ / mostrar;
definir mfg_date / pantalla;
definir &test / mostrar;
correr;
%macro USLtestwithsubgroups(test=)
%macro LSLpruebaconsubgrupos(prueba=)
%macro AmbosSLpruebaconsubgrupos(prueba=)
etc..
%macro Outputfilemacro(filepath=) dentro de esta macro se resume en un orden general de (gráficos ODS activados, página de inicio de rtf de ods, llamar a las macros de prueba como %BothSLtest(test='pH'), gráficos de ods desactivados, cierre de rtf)
Llamo entre 8 y 20 macros de prueba diferentes dentro de la macro de archivo de salida, cada una de las cuales muestra de 2 a 4 gráficos por prueba, según la macro de prueba que se use.
al final de mi programa solo tengo un puñado de cosas para cambiar.
%Import(filepath=ubicación del archivo)
%Outputfilemacro(filepath=file loaction, información del producto para títulos y demás)
Un ejemplo de macros que ejecuto en el archivo de salidamacro sería:
%reparar archivo de salidamacro
opciones gráficas de ods con destino outfilepath
% AmbosSLChart (fecha de inicio= '01abr2013'd , prueba=pH)
% AmbosSLMeansGráfico (fecha de inicio= '01abr2013'd , test=Extractable_Volume, firstvar=C1, lastvar=C5, samplesize= 5 , startlotcount= 42 )
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=Contenido_de_agua)
% AmbosSLChart (fecha de inicio= '01abr2013'd , prueba=Ensayo__Alprostadil_)
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=PGA1)
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=PGB1)
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=ceto_PGE1)
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=iso_PGE1)
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=Total_Impurezas)
% AmbosSLMeansGráfico (fecha de inicio= '01abr2013'd , prueba=Content_Uniformity, firstvar=CU1, lastvar=CU10, samplesize= 10 , startlotcount= 42 )
% Gráfico de USL (fecha de inicio= '01abr2013'd , prueba=AV)
% AmbosSLChart (fecha de inicio= '01abr2013'd , prueba=Ensayo__NaCl_)
declaraciones de cierre de ods
%reparar archivo de salidamacro
%Macro de archivo de salida ( ruta de archivo = 2014 \ 2014 _Nombre de producto\SAS\ código , numero de producto= código , nombre del producto=nombre , fecha de inicio= '12jun2013'd , fecha de finalización= '11 de junio de 2014'd)
Resalte esa macro, haga clic en enviar, SAS hace el resto.
Prueba es el nombre de la variable de mi conjunto de datos que se está probando y graficando contra los límites de especificación.Tengo gráficos de control con estimaciones de capacidad probadas contra los límites de especificación.
Los gráficos muestran límites de especificaciones específicos para cada prueba, fases de tiempo actuales y anteriores según las fechas que seleccione e índices de capacidad en la esquina superior izquierda de los gráficos.Cada vez que ejecuto esto para un producto diferente, todo lo que hago es cambiar el nombre de la ruta del archivo, copiar y pegar qué macros de prueba quiero ejecutar y establecer el valor test= en cada una de las macros SLChart que deseo tener.Puedo generar todos los gráficos que necesito en aproximadamente 5 a 10 minutos para cada producto y potencia de producto que tengo.Este programa particular para la fuerza de un producto producirá aproximadamente 26 gráficos con una impresión de datos específica para la prueba que sigue al gráfico.
La pregunta es, ¿puedo hacer algo similar a esto en JMP 10?Si es así, ¿cómo funcionan las macros en JMP?
Tengo una ligera comprensión de JMP JSL, pero soy nuevo en esto.Solo trato de descubrir cómo hacer que las cosas sean tan automatizadas en JMP como lo son en nuestras macros SAS.
El mensaje fue editado por: Jeff Ollis
alegre,
No estoy exactamente seguro de cómo se vería su salida, pero el JSL para abrir un archivo y luego hacer algunos gráficos de control es bastante simple.Use JMP para abrir su archivo de Excel, y la tabla JMP tendrá un script de "fuente" en el cuadro de la tabla que puede usar para abrir la tabla nuevamente. Luego use JMP para hacer los gráficos de control, formatéelos para que coincidan con sus criterios y luego guarde el script en la tabla de datos.
Luego, para automatizar la apertura de una tabla y la ejecución de sus gráficos de control, simplemente combine la instrucción Open del script de origen y el script de gráfico de control en una nueva ventana de script (separe las dos instrucciones con un punto y coma). Ahí lo tiene, un informe automatizado, prácticamente sin codificación de su parte.
Aquí hay dos ejemplos simples:
//Ejemplo 1
dt = Abrir( "$SAMPLE_DATA/Tablet Production.jmp" );
dt << Gráfico de control(
Chart Col (: tiempo de mezcla, medición individual),
Gráfico Col (: velocidad de mezcla, medición individual),
Gráfico Col( :Fuerza, Medida individual ),
Gráfico Col(:Tiempo de molienda, Medición individual),
Gráfico Col (: Viscosidad del recubrimiento, Medición individual),
Gráfico Col (: temperatura de entrada, medición individual)
);
//ejemplo 2, un poco más complejo
grupo1 = Expr(
Tabla de control(
Etiqueta de muestra( :Proveedor de revestimiento ),
Gráfico Col( :Viscosidad del recubrimiento, XBar, R ),
Gráfico Col( :Temp. entrada, XBar, R )
)
);
grupo2 = Expr(
tabla de control(
Chart Col (: tiempo de mezcla, medición individual),
Gráfico Col(:Velocidad de mezcla, Medición individual)
)
);
win = Nueva ventana ("Ejemplo de gráfico de control",
Cuadro de lista H(
"Cuadro de lista vertical",
Cuadro de panel ("Primer grupo de gráficos de control", grupo1),
Cuadro de panel ("Segundo grupo de gráficos de control", grupo 2)
)
);