## OC Curve for p Chart

``` /****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: SHWOC2                                              */
/*   TITLE: OC Curve for p Chart                                */
/* PRODUCT: QC                                                  */
/*  SYSTEM: ALL                                                 */
/*    KEYS: Shewhart Charts, OC Curves,                         */
/*   PROCS: SHEWHART PLOT                                       */
/*    DATA:                                                     */
/*                                                              */
/*     REF: SAS/QC Software:  Examples                          */
/*    MISC:                                                     */
/*                                                              */
/****************************************************************/

options ps=60 ls=100 nodate;

data cans;
input sample noncnfm;
cards;
1  12
2  15
3   8
4  10
5   4
6   7
7  16
8   9
9  14
10  10
11   5
12   6
13  17
14  12
15  22
16   8
17  10
18   5
19  13
20  11
21  20
22  18
23  24
24  15
25   9
26  12
27   7
28  13
29   9
30   6
;

data cansrev;
set cans;
if sample=15 or sample=23 then delete;

proc shewhart data=cansrev;
pchart noncnfm*sample / subgroupn=50
nochart
outlimits=canlim2;

data ocpchart;
set canlim2;
keep beta fraction;
nucl=_limitn_*_uclp_;
nlcl=_limitn_*_lclp_;
do p=0 to 50;
fraction=p/100;
if nucl=floor(nucl) then
probbnml(fraction,_limitn_,nucl-1);
if nlcl=0 then
else beta=probbeta(fraction,nlcl,_limitn_-nlcl+1) -
probbeta(fraction,nucl,_limitn_-nucl+1) +
if beta >= 0.001 then output;
end;
call symput('lcl', put(_lclp_,5.3));
call symput('mean',put(_p_,   5.3));
call symput('ucl', put(_uclp_,5.3));
run;

title "OC Curve for p Chart With LCL=&LCL, p0=&MEAN, and UCL=&UCL";
proc plot data=ocpchart;
plot beta*fraction='*' /
vaxis=0 to 1.0 by 0.1
haxis=0 to 0.5 by 0.05
vzero
hzero;
label fraction='Fraction Nonconforming'
beta    ='Beta';
run;

title;

```