As said by @Paul W in comments, fields in the control file are names that sqlldr internally gives to your CSV columns, ignoring the names you gave in the CSV's header line. And by default they get pushed to the field in the same order as they are listed.
Thus for simple fields you should just let the field name (having them match the table columns name will help not getting lost) and remove the quoted part.
After the internal field name, you can put an optional SQL type, or SQL convert or fill snippet; in that last case, you can refer the "internal" field name with :
.
Thus you could have:
ROW_ID "YMODAPP.TCLUSTER_SEQ.NEXTVAL",
CLUSTER_ID, -- No need to add anything, we just need to materialize the column and it will get pushed to column 2 of the table.
[…]
OD_FLOW_DT "TO_DATE(:OD_FLOW_DT, 'YYYYMMDD')", -- Field in the TO_DATE has to be :<internal field name = first word before the quotes>.
-- or:
OD_FLOW_DT DATE 'YYYYMMDD',
(based on past experience, with no DB to test now, but isn't it worth a try?)
See an answer from 2019 for an unconventional way of remapping, that helps understanding what is in memory and what ends up into DB.