Hi @eangello ,
 
  Thanks for the data table. I can recreate your issue as you mention. One thing I am noticing is that when you run the simulator, it doesn't create the histogram next to the profiler, not like the tiretread example in the help index on X Correlations.
 
  I think there are two things going on:
1. calling tpListY
2. calling corr.mat
 
  I am not sure why, but I think you need to explicitly "spell"out the list for the X Correltions in your code and this includes the correlation matrix., so instead of calling tpListY, you need to replace that with {TP1, TP2, TP3, TP4}. Similarly, you need to put the actual 4x4 (or NxN) correlation matrix in there between the square brackets [].
 
  I thought that doing something like Parse(tpListY[1]) would work, but I can't get it to work, even with an Eval() wrapped around it. I can only get it to work automatically if I put in the JSL code as {TP1, TP2, TP3, TP4}. Note that when you put in the NxN correlation matrix, that it actually uses the lower left triangle of the matrix to fill in the table.
 
   I also thought that calling the elements of the corr.mat might work, as in corr.mat[1], etc., but that doesn't work either. If I try that, I get an invalid matrix token error, and not really sure why, because the elements of corr.mat are numbers.
 
The below code (I modified your function to change it up a bit) works to provide the expected output, but it doesn't help with your desire to expand from a 4x4 system to an NxN system.
names default to here(1);
Try( Close( Data Table(dt) ) );
If( Is Empty( dt ),
	Try( dt = Open(), Throw( "No data found" ) )
);
ncol = NCol(dt);
//Dialog Window.
Dlg = New Window("New Window",
	<< Modal,
	BorderBox(left(3), top(2),
		V List Box(
			TextBox("Simulate multivariate data"),
			HListBox(
				VListBox(
					PanelBox("Select variables",
						colListData = ColListBox(all,nLines,(min(ncol,10)))
					),
				),
				PanelBox("Cast Selected Variables",
					LineupBox(NCol(2), Spacing(3),
					ButtonBox("Variables", colListY << Append(colListData << Get Selected)),
					colListY = ColListBox(nLines(6), "numeric"))
				),
				//specifications - not in use.
				PanelBox("Enter Specifications",
					Spacer Box(Size(10, 1)),
						HListBox(
							VListBox(
								Spacer Box(Size(5, 10)),
							   lsl1 = Number Edit Box(, 3),
							   Spacer Box(Size(5, 10)),
							   lsl2 = Number Edit Box(, 3),
							   Spacer Box(Size(5, 10)),
							   lsl3 = Number Edit Box(, 3),
							   Spacer Box(Size(5, 10)),
							   lsl4 = Number Edit Box(, 3)
							),		
						SpacerBox(Size(10,10)),
						VListBox(
						   	Spacer Box(Size(5, 10)),
						   usl1 = Number Edit Box(, 3),
						   Spacer Box(Size(5, 10)),
						   usl2 = Number Edit Box(, 3),
						   Spacer Box(Size(5, 10)),
						   usl3 = Number Edit Box(, 3),
						   Spacer Box(Size(5, 10)),
						   usl4 = Number Edit Box(, 3)
						)
						),
				),
				PanelBox("Action", 
				LineupBox(NCol(1),
				// OK button
				Button Box("OK",
					lsl_mat = J(4,1, .);
					lsl_mat[1] = Eval(lsl1 << Get);
					lsl_mat[2] = Eval(lsl2 << Get);
					lsl_mat[3] = Eval(lsl3 << Get);
					lsl_mat[4] = Eval(lsl4 << Get);
					usl_mat = J(4,1, .);
					usl_mat[1] = Eval(usl1 << Get);
					usl_mat[2] = Eval(usl2 << Get);
					usl_mat[3] = Eval(usl3 << Get);
					usl_mat[4] = Eval(usl4 << Get);			
					// Store summary statistics
					tpListY = colListY << Get Items;
					tpMean = J(4, 1, 0);
					tpSD = J(4, 1, 0);
				
					for (i=1, i <= nitems(tpListY), i++,
							one_col = tpListY[i];
							Meani = Col Mean(Column(dt, one_col));
							SDi = Col Std Dev(Column(dt, one_col));
						
						tpMean[i] = Meani;
						tpSD[i] = SDi;
					);
					Dlg << CloseWindow
				),
				
				// Cancel button
				Button Box("Cancel", Dlg << CloseWindow),
				Spacer Box(Size(10,10)),
				// Remove button
				Button Box("Remove", collistY << RemoveSelected)
				)
				),	
			)
		)
	)
);
//correlation matrix
corr = multivariate(
	Y(Eval List(tpListY)),
	estimation method("Row-wise"),
	matrix format("Square"),
	scatterplot matrix(0)
);
corr.run = corr << run;
corr.rep = corr.run << report;
corr.mat = corr.rep["Correlations"][matrix box(1)] << get(1);
//only used to launch profiler
prof.x = J(200,4 ,1);
prof.tbl = as table(prof.x, << column names(tpListY), << invisible);
prof.tbl << new column("Y",
	Formula( :TP1+:TP2^2-:TP3+:TP4*Random Normal(0,2))
);
prof.tbl = current data table();
random reset(1234);
//specify multivariate data from summary statistics
sim.design = Profiler( Y( :Y ), Invisible );
sim.design << Simulator(
	1,
	Factors(
		TP1 << multivariate( tpMean[1], tpSD[1] ), TP2 << multivariate( tpMean[2], tpSD[2] ),
		TP3 << multivariate( tpMean[3], tpSD[3] ), TP4 << multivariate( tpMean[4], tpSD[4] ),
	),
	Responses( Y << No Noise ),
	Automatic Histogram Update( 1 ),
	X Correlations( 1, {TP1, TP2, TP3, TP4}, 
	[1 0.6401843997 0.670478399654806 0.6405126152, 0.6401843997 1	0.9443055859	0.8815992957, 0.6704783997	0.9443055859	1	0.9355872238, 0.6405126152	0.8815992957	0.9355872238	1] 
	),
	N Runs( 10000 ),
	Simulate
);
//Make data table
report( sim.design )["Simulate to Table"][button box( 1 )] << click( 1 );
sim.dt = data table( 1 );
sim.dt << set name( "Simulated multivariate data" );
sim.dt << delete columns({"Y","Obj"});
  There must be a way to do it, since you can call the elements of tpMean and tpSD for filling in the multivariate noise for the factors. I think someone with more experience in JSL might be needed to comment on that.
 
  Lastly, I think you are right about one of the button boxes, but I couldn't pinpoint it exactly either -- was more focused on trying to solve the tpListY and corr.mat problems! 
 
I'm really interested in what you find out.
 
Good luck,
DS