Выделить в строке числа, разделённые запятыми
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * Две строковых переменных (problem и race) содержат переменное число значений, * разделённых запятыми. Как мне разобрать эти значения по отдельным переменным?. * Ответ размещён в конференции usenet. Автор: rlevesque@videotron.ca. * Модель данных. DATA LIST LIST /problem(A12) race(A12). BEGIN DATA '1,2' '4,5' '10,11,3,15' '5' END DATA. LIST. * Определяем рабочий макрос. DEFINE !parse (var=!TOKENS(1) /nbval=!TOKENS(1)) COMPUTE !var=CONCAT(RTRIM(!var),','). STRING #str(A8). VECTOR !var (!nbval F8.0). COMPUTE #beg=1. LOOP #cnt=1 TO !nbval. +COMPUTE #str=SUBSTR(!var,#beg). +COMPUTE #end=INDEX(#str,',')-1. +DO IF #end=-1. + BREAK. +END IF. +COMPUTE !var(#cnt)=NUMBER(SUBSTR(#str,1,#end),F8.0). +COMPUTE #beg=#beg+#end+1. END LOOP IF #end=-1. EXECUTE. !ENDDEFINE. * Теперь вызываем макрос. !parse var=problem nbval=5. !parse var=race nbval=4. |