Depends upon EXACTLY what you want. Does the following come close?
data have;
input string & $100.;
cards;
Valve Movement to "CLOSE" position Completed. Time Taken for Movement "1.530000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "2.030000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "2.010000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "2.510000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "2.215000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "2.215000" Secs
: Valve Movement to "OPEN" position Completed. Time Taken for Movement "3.160000" Secs
: Valve Movement to "OPEN" position Completed. Time Taken for Movement "3.160000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "1.815000" Secs
: Valve Movement to "CLOSE" position Completed. Time Taken for Movement "1.815000" Secs
: Valve Movement to "OPEN" position Completed. Time Taken for Movement "3.140000" Secs
: Valve Movement to "OPEN" position Completed. Time Taken for Movement "3.140000" Secs
: Valve Movement to "OPEN" position Completed. Time Taken for Movement "2.955000" Secs
;
data want (drop=string both);
set have;
both=compress(substr(string,anydigit(string)),'"');
num=input(substr(both,1,anyalpha(both)-1),12.);
unit=substr(both,anyalpha(both));
run;