В качестве замечания.
Проверку на синтаксически корректный ввод будь то правила написания email, или проверку является ли введенная строка числом(с учетом знаков, научной формы и т.д.) можно(и очень просто!) реализовать за один проход по строке, обращаясь к каждому символу строки ровно один раз.
Code:
На вход – строка на выход
*2 - целое, полжительное
*3 - дробное, положительное
*4 - целое, отрицательное
*5 - дробное, отрицательное
*6 - ошибка
PERFORM test
USING str
CHANGING ok_code.
ok_code = ok_code.
FORM test USING p_str TYPE string
CHANGING p_ok_code TYPE c.
DATA: len TYPE i.
DATA: i TYPE i.
len = strlen( p_str ).
i = 0.
p_ok_code = 1.
DO len TIMES.
CASE p_str+i(1).
WHEN ' '.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 1.
WHEN OTHERS.
p_ok_code = 6.
EXIT.
ENDCASE.
WHEN '0'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '1'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '2'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '3'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '4'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '5'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '6'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '7'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '8'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN '9'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 2.
ENDCASE.
WHEN ','.
CASE p_ok_code.
WHEN '2'.
p_ok_code = 3.
WHEN '4'.
p_ok_code = 5.
WHEN OTHERS.
p_ok_code = 6.
EXIT.
ENDCASE.
WHEN '.'.
CASE p_ok_code.
WHEN '2'.
p_ok_code = 3.
WHEN '4'.
p_ok_code = 5.
WHEN OTHERS.
p_ok_code = 6.
EXIT.
ENDCASE.
WHEN '-'.
CASE p_ok_code.
WHEN '1'.
p_ok_code = 4.
WHEN OTHERS.
p_ok_code = 6.
EXIT.
ENDCASE.
WHEN OTHERS.
p_ok_code = 6.
EXIT.
ENDCASE.
ADD 1 TO i.
ENDDO.
IF p_ok_code = 1.
p_ok_code = 6.
ENDIF.
ENDFORM. " test