If your original post was not talking using a script to do the copying, then what you need to do, is to use
Tables==>Subset
Below is a more fully annotated version of the script.
// This script creates a couple of example data tables and then runs
// a little script that copies all of the columns from the originating
// data table to a new data table
// Setup the memory environment
Names Default To Here( 1 );
// Create an example data table that has some formula columns
// The variable "dt" is used as a pointer to this data table
dt = New Table( "Source",
add rows( 20 ),
New Column( "A", formula( Random Integer( 1, 10 ) ) ),
New Column( "B", formula( Random Integer( 20, 30 ) ) )
);
dt << run formulas;
// Create a new data table that will be used to create the new
// columns in
// Variable "dt2" is used to point to this data table
dt2 = New Table( "Copy", add rows( 10 ) );
// Create the columns and set the names and formula
// Loop across all columns in the Originating data table
// and retireve the name and formula and then create a new
// column in the new data table
For( i = 1, i <= N Cols( dt ), i++,
// Create the new column in the new data table, giving it
// the name from the current data table
dt2 << New Column( Column( dt, i ) << get name );
// Get the formula from the originating data table
theFormula = Char( Column( dt, i ) << get formula );
// Set the formula into the new data table
Eval(
Parse(
"Column( dt2, Column( dt," || Char( i ) || ")<< get name ) <<
set formula( " || theFormula || ");"
)
);
);
Jim