*(Вопрос) В некоторых случаях строки содержат символы возврата строки и перевода * каретки. Длина строки, в таком случае, это общая длина двух или трёх строчек * текстового значения. * В редакторе данных SPSS программа отображает лишь значения до первого символа перевода * каретки. Но в поле ввода сверзу при засветке ячейки отображаются все символы. То есть, * информация не потеряна. Мне бы хотелось иметь возможность, например, заменить * символы перевода каретки на знаки "@" чтобы потом разбить информацию из переменной * по нескольким переменным. * Может ли SPSS осуществлять поиск по таким специальным символам?. *(Ответ) Точный ответ на этот вопрос был размещён в SPSSX-L 8.2.2002. Автор: Bjarte Aagnes. * Следующий (улучшенный синтаксис) был впоследствии направлен мне самим Bjarte. ************************************************************ Комментарии направлять : Bjarte Aagnes, aagnes@statinet.no ************************************************************ *Предварительный шаг 1: *прочтём пример данных с символами = HEX 0d0a and HEX 41-6 = A-F. DATA LIST LIST /origin (AHEX30). BEGIN DATA 410d0a4243440d0a4546 46450d0a4443420d0a0d0a410d0a END DATA. EXE. *Предварительный шаг 2. /*форматируем как обычную текстовую строку с символами cr>*/ 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.