Поскольку в моих данных времени есть некоторые беспорядочные символы (*, #, char и т. д.), Я ввожу данные в формате best.32, а затем с помощью сжатия удаляю ненужные символы - time_1 = compress(Tim_original,'*#','l');
Однако мои данные имеют форму mm:ss и hh:mm:ss, и по какой-то причине, когда я использую time_1=input(time_1,time8.) для преобразования строки в число, мои миллиметры превращаются в часы ...! Как мне преобразовать мою строку во время / минуты и не превратить минуты в часы с добавлением ": 00" в конце?
Попробуйте проверить длину сжатой строки времени (length(timestring)<=5) или посчитайте количество двоеточий (:) (countc(timestring,':')=1). В этих случаях добавьте 00: к timestring перед использованием input.





Если в вашем тексте есть только один :, то информация TIME будет понимать, что это означает hh:mm, а не mm:ss. Вы можете просто протестировать свою строку и разделить результат вызова функции INPUT () на 60, чтобы преобразовать его.
data test;
input @1 timestr $8. ;
time1=input(timestr,time8.);
time2=input(timestr,time8.);
if countw(timestr,':') < 3 then time2=time2/60 ;
format time1 time2 time8.;
cards;
12:34
0:12:34
;
покажите образцы данных, чтобы кто-нибудь мог вам помочь.