My first guess is that when Variability chart is created this way, it will only create one reference to the whole analysis so your vcl[i] won't work as there is no list of variability charts.
Seems that there was a change from Jmp 16 to Jmp 17:
Variability Chart in Jmp 16:

Variability Chart in Jmp 17:

As @jthi says, just a single report.
So, you have to adjust slightly the index structure.
e.g. replace every Report(vlc[i]) with Report( vcl )[BorderBox( i )] .
Hi folks,
I just upgraded to JMP 17 and noticed that the add ref line doesn't work on JMP 17 but it works perfectly on JMP 16 . Any suggestions?
JMP 16:

JMP 17:

The below JSL code generates variability chart and adds reference line from the limits file:
dt = Data Table("Limits_file");
dt2 = Data Table("Data_table");
newli = {};
For( i = 1, i <= N Rows( dt ), i++,
Insert Into( newli, dt:Column 1[i] )
);
Try(
vcl = dt2 << Variability Chart(
Y( Eval( newli ) ),
X( :WaferID ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Separators( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
SendToReport( Dispatch( {""}, "Variability Chart", FrameBox, {Frame Size( 787, 250 )} ) )
)
);
aa_refs = Associative Array( dt:Column 1 << get values, dt:"3 sigma"n << get values );
aa_refs1 = Associative Array( dt:Column 1 << get values, dt:"4.5 sigma"n << get values );
aa_refs2 = Associative Array( dt:Column 1 << get values, dt:"6 sigma"n << get values );
Current Data Table(dt);
For( i = 1, i <= N Items( newli ), i++,
If( Contains( aa_refs, newli[i] ),
Report( vcl[i] )[Framebox( 1 )] << DispatchSeg( CustomStreamSeg( 3 ), {Line Width( 2 )} );
rbiv = vcl[i] << report;
rbiv[axis box( 1 )] << Add Ref Line(
aa_refs[newli[i]], "Solid", "Red", "3 sigma" || "(" || Char( Format( aa_refs[newli[i]], "Percent", 7, 2 ) ) || ")", 2
);
Report( vcl[i] )[AxisBox( 1 )] << {Add Ref Line(
aa_refs1[newli[i]], "Solid", "Orange", "4.5 sigma" || "(" || Char( Format( aa_refs1[newli[i]], "Percent", 7, 2 ) ) || ")",
2
)};
Report( vcl[i] )[AxisBox( 1 )] << {Add Ref Line(
aa_refs2[newli[i]], "Solid", "Blue", "6 sigma" || "(" || Char( Format( aa_refs2[newli[i]], "Percent", 7, 2 ) ) || ")", 2
)};
Report( vcl[i] )[AxisBox( 1 )] << Max( aa_refs2[newli[i]] + 0.002 );
)
);