Here's one way. Use 'Help > Scripting Index' and the 'JSL Scripting Guide' to understand whatever is unclear.
NamesDefaultToHere(1);
// Make some data
nr = 100;
nc = 50;
dt = AsTable(J(nr, nc, RandomNormal(0, 1)));
dt << setName("Some Random Continuous Columns");
// Define a contiguous range of columns to consider
startColNum = RandomInteger(1, Floor(nc/2));
endColNum = RandomInteger(Ceiling(nc/2), nc);
// Get the list of columns to include in the formulas
allCols = dt << getColumnNames;
myCols = allCols[startColNum::endColNum];
// Add the required formulas
CMD = Expr(dt << NewColumn("Row Maximum from Cols "||Char(startColNum)||" to "||Char(endColNum), Numeric, Continuous, Formula(Max(colsTBD))));
SubstituteInto(CMD, Expr(colsTBD), myCols);
CMD;
CMD = Expr(dt << NewColumn("Row Minimum from Cols "||Char(startColNum)||" to "||Char(endColNum), Numeric, Continuous, Formula(Min(colsTBD))));
SubstituteInto(CMD, Expr(colsTBD), myCols);
CMD;