2013年2月9日土曜日

Peek at your data using VBScript, OLE DB, and the SAS local data provider

SAS Local Data Providerを使って、SASデータセットの情報を読み取るサンプルコードです。元ネタはココですが、貼り付けるときにバックスラッシュが化けたのかそのままでは動きませんでした。少し手直ししています。SAS.EXEを起動しなくてもOKというのが軽くて良いのですが、果たして何に使うかは思案中です。Delphiで作るツールに役立つかも。

  1. path = "C:\Program Files\SASHome\x86\SASEnterpriseGuide\4.3\Sample\Data"  
  2. filename = "Candy_Sales_Summary"  
  3.   
  4. WScript.Echo "Path specified: " & path  
  5. WScript.Echo "File name : " & filename  
  6.   
  7. ' Check registry for SAS Local Provider  
  8. Set WSHShell = CreateObject("WScript.Shell")  
  9. clsID = WSHShell.RegRead("HKEY_CLASSES_ROOT\sas.LocalProvider\CLSID\")  
  10. 'clsID = WSHShell.RegRead("HKCRSAS.LocalProviderCLSID")  
  11. WScript.Echo "DIAGNOSTICS: SAS.LocalProvider CLSID is " & clsID  
  12. inProcServer = WSHShell.RegRead("HKCR\CLSID\" & clsID & "\InprocServer32\")  
  13. WScript.Echo "DIAGNOSTICS: Registered InprocServer32 DLL is " & inProcServer  
  14.   
  15. ' Constants for ADO calls  
  16. Const adOpenDynamic = 2  
  17. Const adLockOptimistic = 3  
  18. Const adCmdTableDirect = 512  
  19.   
  20. ' Instantiate the provider object  
  21. Set obConnection = CreateObject("ADODB.Connection")  
  22. Set obRecordset = CreateObject("ADODB.Recordset")  
  23.   
  24. obConnection.Provider = "SAS.LocalProvider"  
  25. obConnection.Properties("Data Source") = path  
  26. obConnection.Open  
  27. obRecordset.Open filename, obConnection, adOpenDynamic, adLockOptimistic, adCmdTableDirect  
  28.   
  29. 'Report on Fields in this data set  
  30. WScript.Echo ""  
  31. WScript.Echo "Opened data " & filename & ", Record count: " & obRecordset.RecordCount  
  32. For Each Field In obRecordset.Fields  
  33. If Field.Type = 5 Then pType = "Numeric"  
  34. If Field.Type = 200 Then pType = "Character"  
  35. WScript.Echo Field.Name & " " & pType  
  36. Next  
  37.   
  38. obRecordset.Close  
  39. obConnection.Close  

0 件のコメント :

コメントを投稿