Here is a modification of your code that I believe meets all of your needs. One item that I had to deal with, is that the columns that you start with (2-13) have to be character, so the formula does not error out. The Column 13 does error out the script, since it is a formula column that can not be changed to character, because as soon as it runs it's formula, it will force the column to be numeric.
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code",
Expr( __OrigCol__ ), Parse( ":" || col_list[i] )
)
)
);
Jim