Don't forget that Reference messages are not supported on the Mainframe.
Although not necessarily the best solution, a common method of doing this is for the putting program to read the first n bytes of the file, append a header detailing e.g. segment number 1, total bytes in file etc. and then put it to the target queue. Then each subsequent chunk of the file has a header with the segment number until it sends the last bit with a header showing that it's the end of the file.
The receiving program then ensures that it has all the necessary segments in the correct order. You could use Correlid to hold the segment number if you wanted or message groups although the latter are also not supported on z/OS.