No. For a READ, x will be populated by the amount of data, as you have discovered. Prior value of x is irrelevant for READ, new value set on each successful completion.
For WRITE, the value in x will be used to control the amount of data written. x will remain unchanged during that process.
How do you establish which lengths you want for any given READ? If this is for a task rather than just interest, you're going to have to read great big chunks and then process the chunks for the lengths you need.
I'd do it with a couple of ODOs but probably 99.99% would go for reference-modification :-)
BillWoodger