That expression might be backwards, you might need size*FSZ/CSZ. For example, if size=100, FSZ=32, and CSZ=8, then the right character length should be 400.
Also, beware that some compilers need special flags in order for this expression to work correctly. If you are using the intel compiler, then you need the -assume byterecl option, in which case FSZ=8, CSZ=8 and the size value returned by inquire would be 400. Without that option the actual file storage size is 32, the size value returned would be 100, but the file_storage_size parameter is still 8, so the character array would be a factor of 4 too small.