*(Вопрос) В некоторых случаях строки содержат символы возврата строки и перевода
* каретки. Длина строки, в таком случае, это общая длина двух или трёх строчек
* текстового значения.
* В редакторе данных SPSS программа отображает лишь значения до первого символа перевода
* каретки. Но в поле ввода сверзу при засветке ячейки отображаются все символы. То есть,
* информация не потеряна. Мне бы хотелось иметь возможность, например, заменить
* символы перевода каретки на знаки "@" чтобы потом разбить информацию из переменной
* по нескольким переменным.
* Может ли SPSS осуществлять поиск по таким специальным символам?.
*(Ответ) Точный ответ на этот вопрос был размещён в SPSSX-L 8.2.2002. Автор: Bjarte Aagnes.
* Следующий (улучшенный синтаксис) был впоследствии направлен мне самим Bjarte.
************************************************************
Комментарии направлять : Bjarte Aagnes, aagnes@statinet.no
************************************************************
*Предварительный шаг 1: 
*прочтём пример данных 
с символами <cr><nl> = HEX 0d0a  and HEX 41-6 = A-F.
DATA LIST LIST /origin (AHEX30).
BEGIN DATA
410d0a4243440d0a4546
46450d0a4443420d0a0d0a410d0a
END DATA.
EXE.
*Предварительный шаг 2.
/*форматируем как обычную текстовую строку с символами cr><nl>*/ 
FORMAT origin (A15). 
*Начало программы: изменяем формат строки на AHEX и записываем данные в файл.
FORMAT origin (AHEX30).      
PRINT OUTFILE=tmp.txt /origin.  
EXE.
************************************************************
*Читаем из файла и разбираем.
DATA LIST FILE = "tmp.txt" / origin (A15).
DO IF (RINDEX(origin,"0D0A") > 0). 
+    LOOP #j=1 TO 100.  
+       STRING #str res (A30).
+        IF #j=1 #str=LTRIM(RTRIM(origin)). 
+        COMP #p = INDEX(#str,"0D0A").  
+        COMP res = CON(RTRIM(res), SUB(#str,1,#p-1)).
+        COMP #str = SUB(#str,#p+4).
+        IF (RINDEX(#str,"0D0A")) = 0 res = CON(RTRIM(res),#str). 
+    END LOOP IF RINDEX(#str,"0D0A")  =  0.
END IF.
PRINT OUTFILE=tmp2.txt /origin res.
EXE.
***********************************************************
*читаем преобразованный вариант и конвертируем назад в привычный строковый формат (A15). 
DATA LIST LIST FILE = "tmp2.txt" / origin (AHEX30) res (AHEX30).
FORMAT origin res (A15).
EXE. 
LIST CASES /FORMAT=NUM.