Depending on your data something like this might work, it uses Data table subscripting
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
New Column("A", Character, "Nominal", Set Values({"AAAA", "AAAA", "BBB", "BBB"})),
New Column("B", Character, "Nominal", Set Values({"123", "456", "AAAA", "AAAA"}), Set Display Width(45)),
New Column("C", Numeric, "Continuous", Format("Best", 12), Set Values([., ., 789, 0]))
);
rows_to_shift = dt << Get Rows Where(Length(AsColumn(1)) > 3);
col_count = N Cols(dt);
// set all columns to character to make this easier
For Each({col_name}, dt << Get Column Names("String"),
Column(dt, col_name) << Set Data Type("Character");
);
wait(1);
// Datatable subscripting
dt[rows_to_shift, 2::col_count] = dt[rows_to_shift, 1::col_count - 1];
dt[rows_to_shift, 1] = ""; // set first column values as missing
-Jarmo