Короткие .por-имена — в длинные
Данный сценарий ожидает, что он запущен после того, как отработал этот файл синтаксиса.
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 'BEGIN DESCRIPTION 'Скрипт назначает переменным исходные ("длинные") имена. 'Предполагается, что ранее была выполнена команда Export (в файл .por), по результатам которой посредством 'OMS схема переименования из длинных имён в короткие была записана в файл формата XML. ' (см. образец в файле LongAndShortVarNames.sps) 'END DESCRIPTION 'Тема: восстановление исходных ("длинных") имён после переноса данных через .por (скрипт работает вместе с синтаксисом). 'Ключевые слова: короткие имена переменных, длинные имена, перенос данных, сохранение, portable, .por, восстановление, сокращение. 'Опубликован: 13.02.2004 в SPSSX-L, перевод: 19.06.2008. 'Автор: Jon Peck; перевод: А. Балабанов. 'Размещение: http://www.spsstools.ru/Scripts/LongNames/RenamePortShortToLong.txt (.sbs) 'Проверено: SPSS 15.0.0. Option Explicit Sub Main Dim theline As String Dim shortname As String, longname As String, startloc As Long, endloc As Long Dim shortlong As String On Error GoTo error_rename Const FILENAME ="c:\\temp\\exportnamelist.xml" ' укажите фактический путь Const STARTPATTERN="<line>Abbreviated Extended</line><line>Name Name</line><line> </line>" Const ENDPATTERN= "<line>omsend.</line>" Const STARTLINE = "<line>" Const ENDLINE = "</line>" Open FILENAME For Input As #1 Line Input #1, theline startloc = InStr(theline, STARTPATTERN) If (startloc = 0) Then GoTo exit_rename End If theline = Mid(theline, startloc+ Len(STARTPATTERN)) Do endloc = InStr(theline, ENDLINE) shortlong = Mid(theline, Len(STARTLINE)+1, endloc - Len(STARTLINE)-1) 'короткие и длинные имена theline = Mid(theline, endloc + Len(ENDLINE)) shortname = Left(shortlong, InStr(shortlong, " ")) longname = Mid(shortlong, Len(shortname)+1) objSpssApp.ExecuteCommands("RENAME VARIABLES " & shortname & "=" & longname & ".", False) Loop Until Left(theline, Len(ENDPATTERN)) = ENDPATTERN exit_rename: Close #1 Exit Sub error_rename: MsgBox(Err.Description) GoTo exit_rename End Sub |
Related pages
Navigate from here