See this thread for one example with NAMELIST
facility which gives the basic idea on how to setup derived type IO: Read derived types from namelist - #4 by FortranFan
With DT
option, the defined IO makes use of vlist received argument and parses the string in the format statement of the caller. You can look in the standard document (e.g., 18-007r1) for a write example.