If all you are looking for is a test order generator, and not a complete DOE solution, the little "brute force" script I put together will give you random test orders for all of the combinations you are looking for:
dt = New Table( "Order", New Column( "Group" ), New Column( "Order", character ), New Column( "Random" ) );
For( a = 1, a <= 4, a++,
For( b = 1, b <= 4, b++,
For( c = 1, c <= 4, c++,
For( d = 1, d <= 4, d++,
Pattern = Char( a ) || Char( b ) || Char( c ) || Char( d );
If(
Sum(
Contains( pattern, "1" ) > 0,
Contains( pattern, "2" ) > 0,
Contains( pattern, "3" ) > 0,
Contains( pattern, "4" ) > 0
) == 4,
dt << add rows( 2 );
dt:Group[N Rows( dt ) - 1] = 1;
dt:Group[N Rows( dt )] = 2;
dt:Order[N Rows( dt ) - 1] = pattern;
dt:Order[N Rows( dt )] = pattern;
dt:Random[N Rows( dt ) - 1] = Random Uniform();
dt:Random[N Rows( dt )] = Random Uniform();
);
)
)
)
);
dt << Sort(
By( :Group, :Random ),
Order( Ascending, Ascending ),
Replace table( 1 )
);
dt << delete Columns("Random");
Jim