<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
現在、私が働いている場所では、SAS 9.2 Foundation with QC パッケージがあり、各製品で実行される 4 つのテンプレートまたはマクロ プログラムがあります。40以上の製品があります。問題は、レポートに SAS を使用している会社で唯一の支店であり、JMP でレポートを作成することを望んでいたことです。私たちが現在持っているものの典型的なSASマルコは
%macro Import(Filepath=) Excel ファイル (通常は 1 つのワークブックから 2 つのワークシート)。1 つはデータ用、もう 1 つは仕様限界用
%マクロ USLtest(テスト=)
%macro LSLtest(テスト=)
%macro BothSLtest(テスト=)
ods rtf startpage=現在の列= 1 ;
データ結果データ;
結果データを設定します。
テーブル値= 1 ;
テーブル値のフォーマット8. ;
走る;
/* タイムライン */
データフェーズ (keep=lot_count _Lot_ _PHASE_);
長さ _PHASE_ $ 7 ;
結果データを設定します。
製造日 <= &startdate then _PHASE_= の場合'前' ;
そうでなければ、製造日 >= &startdate then _PHASE_= の場合'現時点の' ;
走る;
データ制限 (rename=(underscore=_VAR_));
制限データを設定します。
どこで翻訳(ストリップ(_VAR_)、 '____' 、 ' ()/' )= "&テスト" ;
アンダースコア=翻訳(ストリップ(_VAR_)、 '____' 、 ' ()/' );
_VAR_ をドロップします。
走る;
データ vref (keep=newvar _REF_ _REFLAB_ _CVREF_ rename=(newvar=_VAR_));
制限を設定します。
ここで_VAR_= "&テスト" ;
newvar=strip(_VAR_);
私は= 1に2 ;
もし私が= 1それから行います。
_REF_=_LSL_;
_REFLAB_= 「LSL」 ;
_CVREF_= '赤' ;
出力;
終わり;
もし私が= 2それから行います。
_REF_=_USL_;
_REFLAB_= 「USL」 ;
_CVREF_= '赤' ;
出力;
終わり;
終わり;
_VAR_ をドロップします。
走る;
/* ランチャート */
proc shewhart data=resultsdata;
irchart &test*lot_count= '*' / nochart nochart2 vref=vref /*outtable=data1*/ outhistory=data1;
走る;
データ data2;
data1 フェーズをマージします。
lot_count;
_VAR_=ストリップ( "&テスト" );
走る;
データチャート;
data2 の制限をマージします。
_VAR_によって;
呼び出し symput( 'lsl' ,strip(_LSL_));
呼び出し symput( 'usl' ,strip(_USL_));
呼び出し symput( 'var' ,strip(_VAR_));
呼び出し symput( 「単位」 ,strip(単位));
走る;
/* 個別測定チャート */
proc shewhart history=data2;
irchart &test*lot_count= '*' / outlabel=(ロット数) /* 範囲チャートを削除 */ nochart2 vref=vref /* サブグループデータに基づく能力指数 */シンディクス/* 仕様制限 */ lsl=&lsl usl=&usl
/* タイムラインを読み取ります */ readphases=すべて/* チャートの上部にあるフェーズを識別します */ phaselegend vreflabpos= 2 zerostd テスト= 1に4 testlabel1= ' ' testlabel2= ' 'クリップファクター= 2トップパネル= 1 ;
差し込み stddev cpklcl= 「Cpk 95% 低下」 cpk= 「Cpk」 cpkucl= 「Cpk 95% 上限」 ;
ラベル &var= "&var (&単位)" ;
走る;
/* ヒストグラム */
ods はヒストグラムを選択します。
proc 機能 data=charts noprint;
spec lsl=&lsl usl=&usl;
var &var;
ヒストグラム &var / 通常;
挿入 n= 「ん」
pctlss= '% < LSL' pctgtr= '% > USL' cpklcl= 「Ppk 95% 低下」 cpk= 「Ppk」 cpkucl= 「Ppk 95% アッパー」 /
cfill = ywh
フォーマット = 6.2 ;
ラベル &var= "&var (&ユニット)" ;
走る;
データ結果データ;
結果データを設定します。
テーブル値= 3 ;
テーブル値のフォーマット8. ;
走る;
オッズ rtf 列 = 4 ;
proc report data=resultsdata nowindows;
列 lot_count _lot_ &test;
ロット数を定義する / 'カウント'表示スタイル(列)=[セル幅= .5の];
_lot_ / 表示を定義します。
製造日/表示を定義します。
&test / 表示を定義します。
走る;
%macro USLtestwithsubgroups(test=)
%macro LSLtestwithsubgroups(test=)
%macro BothSLtestwithsubgroups(test=)
など..
%macro このマクロ内の Outputfilemacro(filepath=) は、一般的な順序 (ODS グラフィックス オン、ods rtf 開始ページ、%BothSLtest(test='pH') などのテスト マクロの呼び出し、ods グラフィックス オフ、rtf クローズ) で要約されます。
outputfilemacro 内の 8 ~ 20 個の異なるテスト マクロのいずれかを呼び出し、使用するテスト マクロに応じて、テストごとに 2 ~ 4 個のチャートを表示します。
私のプログラムの最後に、私は変更するものでいっぱいです。
%Import(ファイルパス=ファイルの場所)
%Outputfilemacro(filepath=ファイルの場所、タイトル等の商品情報)
outputfilemacro で実行するマクロの例は次のとおりです。
%mend outputfilemacro
outfilepath 宛先を指定した ods グラフィック オプション
%両方SLChart (開始日= '01Apr2013'd 、テスト = pH)
%両方SLMeansChart (開始日= '01Apr2013'd 、test=Extractable_Volume、firstvar=C1、lastvar=C5、samplesize= 5 、開始ロット数= 42 )
% USLチャート(開始日= '01Apr2013'd 、test=Water_Content)
%両方SLChart (開始日= '01Apr2013'd 、test=Assay__Alprostadil_)
% USLチャート(開始日= '01Apr2013'd 、テスト=PGA1)
% USLチャート(開始日= '01Apr2013'd 、テスト=PGB1)
% USLチャート(開始日= '01Apr2013'd 、test=keto_PGE1)
% USLチャート(開始日= '01Apr2013'd 、テスト = iso_PGE1)
% USLチャート(開始日= '01Apr2013'd 、test=Total_Impurities)
%両方SLMeansChart (開始日= '01Apr2013'd 、test=Content_Uniformity、firstvar=CU1、lastvar=CU10、samplesize= 10 、開始ロット数= 42 )
% USLチャート(開始日= '01Apr2013'd 、テスト = AV)
%両方SLChart (開始日= '01Apr2013'd 、test=Assay__NaCl_)
オッズクロージングステートメント
%mend outputfilemacro
%Outputfileマクロ (ファイルパス= 2014年\ 2014年_製品名\SAS\コード、製品番号=コード、製品名=名前、開始日= '12Jun2013'd 、終了日= '11Jun2014'd)
そのマクロを強調表示して [送信] をクリックすると、SAS が残りの作業を行います。
Test は、仕様の制限に対してテストおよびグラフ化されているデータ セットの変数名です。仕様制限に対してテストされた能力推定値を含む管理図があります。
チャートには、各テストに固有の仕様限界、選択した日付に応じた現在および以前の時間フェーズ、およびチャートの左上隅にある能力指数が表示されます。別の製品でこれを実行するたびに、ファイルパス名を変更し、実行するテスト マクロをコピーして貼り付け、必要な SLChart マクロのそれぞれに test= 値を設定するだけです。私が持っている各製品と製品強度について、約 5 ~ 10 分で必要なすべてのチャートを出力できます。製品の強度に関するこの特定のプログラムは、26 程度のチャートを生成し、チャートに続くテストに固有のデータを印刷します。
質問は、JMP 10 でこれと同様のことを行うことはできますか?もしそうなら、マクロはJMPでどのように機能しますか?
私は JMP JSL について少し理解していますが、まったく初めてです。SASマクロと同じように、JMPで自動化する方法を見つけようとしています。
メッセージの編集者: Jeff Ollis
陽気で、
出力がどのようになるかは正確にはわかりませんが、ファイルを開いて管理図を作成する JSL はかなり単純です。JMP を使用して Excel ファイルを開くと、JMP テーブルのテーブル ボックスに「ソース」スクリプトが表示され、これを使用してテーブルを再度開くことができます。 次に、JMP を使用して管理図を作成し、基準に合わせて書式を設定してから、スクリプトをデータ テーブルに保存します。
次に、テーブルを開いて管理図を実行することを自動化するには、ソース スクリプトの Open ステートメントと管理図スクリプトを新しいスクリプト ウィンドウで組み合わせます (2 つの命令をセミコロンで区切ります)。 これで、自動化されたレポートが作成されました。実質的にコーディングは必要ありません。
以下に 2 つの簡単な例を示します。
//例 1
dt = Open( "$SAMPLE_DATA/錠剤製造.jmp" );
dt << 管理図(
Chart Col( :ブレンド時間、個別測定値)、
Chart Col( :ブレンド速度、個別測定値)、
Chart Col( :力、個別測定値)、
Chart Col( :ミルタイム、個別測定値)、
Chart Col( :コーティング粘度、個別測定値)、
Chart Col( :Inlet Temp, Individual Measurement )
);
// 例 2、もう少し複雑
group1 = Expr(
管理図(
Sample Label( :塗装業者),
Chart Col( :コーティング粘度, XBar, R ),
Chart Col( :Inlet Temp, XBar, R )
)
);
group2 = Expr(
管理図(
Chart Col( :ブレンド時間、個別測定値)、
Chart Col( :ブレンドスピード、個別測定値)
)
);
win = New Window( "管理図の例",
H リストボックス(
"縦型リストボックス",
Panel Box( "管理図の最初のグループ", group1 ),
Panel Box( "管理図の 2 番目のグループ", group2 )
)
);