<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Actuellement, là où je travaille, nous avons SAS 9.2 Foundation avec package QC, et nous avons 4 modèles, ou programmes macro, qui fonctionneront avec chacun de nos produits.Nous avons plus de 40 produits.Le problème est que nous sommes la seule filiale de l'entreprise à utiliser SAS pour nos rapports et il a été souhaité de les utiliser dans JMP.Un marco SAS typique pour ce que nous avons actuellement est
%macro Import(Filepath=) le(s) fichier(s) Excel, généralement deux feuilles de calcul d'un classeur.Un pour les données et un pour les limites de spécification
%macro USLtest(test=)
%macro LSLtest(test=)
%macro BothSLtest(test=)
ods rtf startpage=maintenant colonnes= 1 ;
données résultatsdonnées ;
définir les données de résultats ;
valeurtable= 1 ;
formater la valeur de la table 8. ;
Cours;
/* chronologie */
phases de données (keep=lot_count _Lot_ _PHASE_);
longueur _PHASE_ $ sept ;
définir les données de résultats ;
si mfg_date <= &startdate alors _PHASE_= 'Préalable' ;
sinon si mfg_date >= &startdate then _PHASE_= 'Courant' ;
Cours;
limites de données (rename=(underscore=_VAR_) );
fixer des limitesdonnées ;
où translate(strip(_VAR_), '____' , ' ()/' )= "&test" ;
trait de soulignement = traduire (bande (_VAR_), '____' , ' ()/' );
supprimer _VAR_ ;
Cours;
data vref (keep=newvar _REF_ _REFLAB_ _CVREF_ rename=(newvar=_VAR_));
fixer des limites ;
où _VAR_= "&test" ;
nouvellevar=strip(_VAR_);
est-ce que je = 1 à 2 ;
si je= 1 alors fais;
_REF_=_LSL_ ;
_REFLAB_= 'LSL' ;
_CVREF_= 'rouge' ;
production;
fin;
si je= 2 alors fais;
_REF_=_USL_ ;
_REFLAB_= 'USL' ;
_CVREF_= 'rouge' ;
production;
fin;
fin;
supprimer _VAR_ ;
Cours;
/* exécuter le graphique */
proc shewhart data=resultsdata ;
irchart &test*lot_count= '*' / nochart nochart2 vref=vref /*outtable=data1*/ outhistory=data1;
Cours;
données données2 ;
fusionner les phases data1 ;
par lot_count ;
_VAR_=strip( "&test" );
Cours;
tableaux de données ;
fusionner les limites de data2 ;
par _VAR_ ;
appeler symput( 'lsl' ,strip(_LSL_));
appeler symput( 'usl' ,strip(_USL_));
appeler symput( 'var' ,strip(_VAR_));
appeler symput( 'unités' ,bande(Unités));
Cours;
/* Tableau des mesures individuelles */
proc shewhart history=data2 ;
irchart &test*lot_count= '*' / outlabel=(lot_count) /* supprime le tableau des plages */ nochart2 vref=vref /* Indice de capacité basé sur les données de sous-groupe */ ciindices /* Limites des spécifications */ lsl=&lsl usl=&usl
/* Lit les chronologies */ phases de lecture=toutes /* Identifie les phases en haut du graphique */ phaselegend vreflabpos= 2 tests zérostd= 1 à 4 étiquettetest1= ' ' testlabel2= ' ' facteur de clip= 2 totpanels= 1 ;
encart stddev cpklcl= 'Cpk 95% inférieur' CPK= 'Cpk' cpkucl= 'Cpk 95% supérieur' ;
étiquette &var= "&var (&unités)" ;
Cours;
/* Histogramme */
ods sélectionne l'histogramme ;
proc capacité données=graphiques noprint ;
spec lsl=&lsl usl=&usl;
var &var;
histogramme &var / normal;
encart n= 'N'
pctlss= '% < LSL' pcgttr= '% > USL' cpklcl= 'Ppk 95% inférieur' CPK= 'Pk' cpkucl= 'Ppk 95% supérieur' /
cfill = ywh
format = 6.2 ;
étiquette &var= "&var (&unités)" ;
Cours;
données résultatsdonnées ;
définir les données de résultats ;
valeurtable= 3 ;
formater la valeur de la table 8. ;
Cours;
ods colonnes rtf= 4 ;
proc report data=resultsdata nowindows ;
colonne lot_count _lot_ &test;
définir lot_count / 'Compter' style d'affichage (colonne)=[cellwidth= .5 dans];
définir _lot_ / afficher ;
définir mfg_date / afficher ;
définir &tester / afficher ;
Cours;
%macro USLtestwithsubgroups(test=)
%macro LSLtestwithsubgroups(test=)
%macro BothSLtestwithsubgroups(test=)
ect..
%macro Outputfilemacro(filepath=) à l'intérieur de cette macro est résumé par un ordre général de (graphiques ODS activés, page de démarrage ods rtf, appelez les macros de test telles que %BothSLtest(test='pH'), graphiques ods désactivés, fermeture rtf)
J'appelle entre 8 et 20 macros de test différentes à l'intérieur de la macro de fichier de sortie, chacune affichant 2 à 4 graphiques par test en fonction de la macro de test utilisée.
à la fin de mon programme, j'ai juste une poignée de choses à changer.
%Import(filepath=emplacement du fichier)
%Outputfilemacro(filepath=file loaction, information produit pour les titres et autres)
Un exemple de macros que j'exécute dans le outputfilemacro serait :
%mend outputfilemacro
options graphiques ods avec destination outfilepath
% Les deuxSLChart (date de début= '01Avr2013'd , test=pH)
% Les deuxSLMeansGraph (date de début= '01Avr2013'd , test=Extractable_Volume, firstvar=C1, lastvar=C5, samplesize= 5 , startlotcount= 42 )
% USLCart (date de début= '01Avr2013'd , test=Contenu_Eau)
% Les deuxSLChart (date de début= '01Avr2013'd , test=Assay__Alprostadil_)
% USLCart (date de début= '01Avr2013'd , test=PGA1)
% USLCart (date de début= '01Avr2013'd , essai=PGB1)
% USLCart (date de début= '01Avr2013'd , test=keto_PGE1)
% USLCart (date de début= '01Avr2013'd , test=iso_PGE1)
% USLCart (date de début= '01Avr2013'd , test=Total_Impurities)
% Les deuxSLMeansGraph (date de début= '01Avr2013'd , test=Content_Uniformity, firstvar=CU1, lastvar=CU10, samplesize= dix , startlotcount= 42 )
% USLCart (date de début= '01Avr2013'd , test=AV)
% Les deuxSLChart (date de début= '01Avr2013'd , test=Test__NaCl_)
déclarations de clôture ods
%mend outputfilemacro
%Outputfilemacro ( chemin_fichier= 2014 \ 2014 _Nom du produit\SAS\ code , numéro de produit= code , nom_produit=nom , date de début= '12juin2013'd , date de fin= '11juin2014'd)
Mettez en surbrillance cette macro, cliquez sur Soumettre, SAS fait le reste.
Test est le nom de la variable de mon ensemble de données qui est testé et tracé par rapport aux limites de spécification.J'ai des cartes de contrôle avec des estimations de capacité testées par rapport aux limites des spécifications.
Les graphiques affichent les limites spécifiques à chaque test, les phases actuelles et antérieures en fonction des dates que je sélectionne et les indices de capacité dans le coin supérieur gauche des graphiques.Chaque fois que je l'exécute pour un produit différent, je ne fais que changer le nom du chemin de fichier, copier et coller les macros de test que je veux exécuter et définir la valeur test= dans chacune des macros SLChart que je souhaite avoir.Je peux produire tous les graphiques dont j'ai besoin environ 5 à 10 minutes pour chaque produit et force de produit que j'ai.Ce programme particulier pour une force d'un produit produira environ 26 graphiques avec des données imprimées spécifiques au test suivant le graphique.
La question est, puis-je faire quelque chose de similaire dans JMP 10 ?Si oui, comment fonctionnent les macros dans JMP ?
J'ai une légère compréhension de JMP JSL, mais je suis tout nouveau.J'essaie simplement de comprendre comment rendre les choses aussi automatisées dans JMP qu'elles le sont dans nos macros SAS.
Le message a été modifié par : Jeff Ollis
gai,
Je ne sais pas exactement à quoi ressemblera votre sortie, mais le JSL pour ouvrir un fichier puis créer des cartes de contrôle est assez simple.Utilisez JMP pour ouvrir votre fichier Excel, et la table JMP aura un script "source" dans la zone de table que vous pourrez utiliser pour ouvrir à nouveau la table. Utilisez ensuite JMP pour créer les cartes de contrôle, formatez-les en fonction de vos critères, puis enregistrez le script dans la table de données.
Ensuite, pour automatiser l'ouverture d'une table et l'exécution de vos cartes de contrôle, combinez simplement l'instruction Open du script Source et le script Control Chart dans une nouvelle fenêtre de script (séparez les deux instructions par un point-virgule). Voilà, un rapport automatisé, avec pratiquement aucun codage de votre part.
Voici deux exemples simples :
//Exemple 1
dt = Open( "$SAMPLE_DATA/Tablet Production.jmp" );
dt << Carte de contrôle(
Graphique Col( : Temps de mélange, mesure individuelle ),
Graphique Col( : Vitesse de mélange, mesure individuelle ),
Graphique Col( :Force, Mesure Individuelle ),
Graphique Col( : Temps d'usinage, Mesure individuelle ),
Graphique Col( : Viscosité du revêtement, mesure individuelle ),
Diagramme Col( : température d'entrée, mesure individuelle)
);
//exemple 2, légèrement plus complexe
groupe1 = Expr(
Carte de contrôle(
Échantillon d'étiquette ( : fournisseur de revêtement ),
Graphique Col( : Viscosité du revêtement, XBar, R ),
Diagramme Col( :Temp d'entrée, XBar, R)
)
);
groupe2 = Expr(
carte de contrôle (
Graphique Col( : Temps de mélange, mesure individuelle ),
Graphique Col( :Vitesse de mélange, mesure individuelle)
)
);
win = Nouvelle fenêtre( "Exemple de graphique de contrôle",
H Zone de liste(
"Zone de liste verticale",
Panel Box( "Premier groupe de cartes de contrôle", group1 ),
Panel Box( "Deuxième groupe de cartes de contrôle", group2 )
)
);