Ошибка (которую было бы неплохо добавить к вопросу), скорее всего, связана с вводом DOB без соответствующей информации. Следующее может помочь.
attrib dob informat=date9. format=date9.;
informat для обработки ввода и формат для вывода.
Простой оператор INPUT
прочитает некоторые данные и сразу перейдет к следующей строке.
При обработке одной строки данных с помощью нескольких операторов ввода в предыдущих операторах ввода следует использовать символ @ в конце, чтобы указать «удерживаемый ввод» и заставить процессор ввода не переходить сразу к следующей строке. Вместо этого «активная позиция» входного процессора останется в той же строке в последней позиции, использованной для ввода.
Изменение кода следующим образом заставит процессор ввода остаться в той же строке.
input @1 FC $1. @;
Примечание. Входной процессор перейдет к следующей строке, когда произойдет следующая неявная итерация шага данных. Это означает, что при сбое if
следующая итерация в шаге данных будет считываться со следующей строки в файле.
Ввод можно проводить через неявные итерации, используя два символа @ (input .... @@;
)