No, your explanation was ok, but mine apparently not. You're still confusing dataset fields and CSV fields. If you got COT reports in nonstandard formats, their CSV fields have different contents. First find the matching field numbers of the standard format that you can see in the COT comment in contract.c. Then copy the COT() function into your script and modify the format string dependent on the asset, so that the resulting dataset is equivalent to the dataset from the standard format. The formula 2-3 + 4-5 should be always correct for consistency reasons.

You're also certainly right that attempts to request field 8 will return blank. There is no field 8.