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
35
36
37
38
39
40
41
42
* Тема: замена буквы в коде на десятичную точку с порядковым номером.
* Ключевые слова: замена, преобразование, буква, цифры, число, конвертирование, код.
* Опубликован: 16.06.2008.
* Автор: rlevesque@videotron.ca.
* Перевод: А. Балабанов.
* Размещение: http://www.spsstools.ru/Syntax/Transform/TransformStringCodingIntoNumbers.txt (.sps).

* (Вопрос) В строковой переменной, которая содержит некие коды, большинство значений - это
 2-значные числа, но некоторые - содержат также буквы (например, 1A, 2B и т.д.). Мне бы надо
 через синтаксис заменить такие коды на числа. Например: 1A - на 1.1, 1B - на 2.2 и т.д.

* (Ответ) Автор: rlevesque@videotron.ca, 24.10.2001.

DATA LIST LIST /var1(A3).
BEGIN DATA
1A
2b
3C
33
4d
5E
6f
7G
85
8H
9i
1B
1F
END DATA.
LIST.
STRING end1(A1) beg1(A3).
COMPUTE beg1=SUBSTR(var1,LEN(RTRIM(var1))-1,1).
COMPUTE end1=UPCASE(SUBSTR(var1,LEN(RTRIM(var1)))).

COMPUTE nb=INDEX("ABCDEFGHI",end1).

DO IF nb>0.
COMPUTE numb1=NUMBER(beg1,F8.0)+nb/10.
ELSE.
COMPUTE numb1=NUMBER(var1,F8.0).
END IF.
EXECUTE.