@Zvoni - My argument about 10 or 1000 lines IS relevant because if the writing of data to the CSVFile is included in the 'Create' Proc then it is no longer a generic Proc.
And that's where i disagree.
But that might be, because i differentiate between "creating" a file, and "writing" to a file.
At the moment of creation of a file (the "rewrite"), the file itself doesn't care, WHAT you are going to write to it.
Thusly implying you can "outsource" any "differing" versions of your Write-Procedure
I'm just a little confused now

Though we are surely just discussing 'semantics' .
The sole point of my approach is to separate the 'Creation' from the 'Writing'.
The inclusion of the section :
if Result then begin
/// write your stuff here ///
system.Close(CSVFile);
end
in the 'Create' implies (to me) that the work of
writing the data to the file happens here. There could of course be some conditional code in there which points to further external working but I concider that the calling proc should have that locally. All I need the 'Create' proc to do is create (open) the file if possible and flag the user if not.
That (to me) keeps the creation generic so that it can be called from multiple places within the main code with disparate file-names.