In PowerCenter that can easily be handled. As far as I know, you might have to disable certain "optimisations" in IDQ in order to make this work the same way.
In PowerCenter, when reading the file line by line, you can use an Expression transformation to keep track of the data in record types 02 and 03 via variable ports.
Meaning that you need to define one variable port for records type 02 and one variable port for records type 03.
Each of these two variable ports will be set to the respective fields from source lines of the appropriate record type (and in case of all other record types, these two variable ports will simply retain their current values).
Now whenver you encounter a record of type 16, you simply append the two variable ports to the current input line.