OK, I don't know what you have in your program, I don't know CSF, and I don't know what you mean by having to pass character values (a numeric edited field will look exactly the same as a character field when you pass it as a parameter, unless for some obtuse reason the package you are using is working off the source code).
If you have PIC Z9.9999 and you "DISPLAY" all of your test data after it has been put in the field, you will get the results you want in Cobol, except for the case of dropping trailing zeros, which, if you really want it, you'd have to do some extra code for.
You can move this PIC Z9.9999 (maybe try PIC Z9.99ZZ, dunno, never thought of it til now... no idea) to the PIC X9(7) field.
I suspect, however, that you will get the same problem. What should be straightforward isn't working. The format of the print is incorrect, and you are passing the data to a print formatting utility. Without seeing any code, my guess is it is the print formatting utility, ie the parameters that you are passing it to tell it how to print the fields (or default parameters if you are passing nothing).
If you like, please include the relevant cobol code and however it is that you execute the formatting utility. Or wait for someone who knows CSF, which I don't.