The source format must match the source variable type in PUT().INPUT() can create character or numeric variables based on the informat.
The answer to the question "Do I use PUT() or INPUT()?" depends on what your target variable type is and what your source variable type and data are. How many times have you had a need to convert between variable types such as converting character to numeric or numeric to character? For example, what if you have a character variable with numeric values but you need to perform some calculations? Or, if you have a numeric variable but you need to concatenate it to a character variable? If you are like most SAS programmers, you need to use PUT() and INPUT() at least once to complete these tasks.