2014-07-16 17 views
7

Bu benim kod parçasıdırJAVA (IOM Köprüsü) kullanarak değişkenleri SAS'a takın. CORBA taslakları ve JDBC kullanmalı mıyım yoksa başka bir alternatif var mı?

WorkspaceConnector connector = null; 
WorkspaceFactory workspaceFactory = null; 
String variableListString = null; 
Properties sasServerProperties = new Properties(); 
sasServerProperties.put("host", host); 
sasServerProperties.put("port", port); 
sasServerProperties.put("userName", userName); 
sasServerProperties.put("password", password); 
Properties[] sasServerPropertiesList = { sasServerProperties }; 
workspaceFactory = new WorkspaceFactory(sasServerPropertiesList, null, logWriter); 
connector = workspaceFactory.getWorkspaceConnector(0L); 
IWorkspace sasWorkspace = connector.getWorkspace(); 
ILanguageService sasLanguage = sasWorkspace.LanguageService(); 
//send variable list string 
//continued 

Ben IOM köprüsü aracılığıyla SAS sunucuya "variableListString" göndermek gerekir pasajı. Java SAS API bunu yapmak için açık yollar vermez. CORBA ve JDBC kullanarak bunu yapmanın en iyi yolu nedir? Nasıl yapılacağına dair bir ipucu ver. Bunu yapmak için alternatif bir yöntem var mı?

cevap

1

Bu bir süre önce sorulmuştur, ancak hala aynı şeyi yapmak isteyen biri için yararlıdır.
Bunu yapmanın bir yolu, bir dizi sas kodu oluşturmak ve sunucuya göndermek. Bağlantılı oturum için ana bilgisayardaki değişkenleri ayarlamak için bu yöntemi kullanırız. Ayrıca ... Söz konusu kodundan devam ... "/ my sas code.sas benim koduna yolu" ;:

%include gibi kod kullanarak sas kod eklemek için bu tekniği kullanabilirsiniz

langService = iWorkspace.LanguageService(); 
    StringBuilder sb = new StringBuilder(); 
    sb.append("%let mysasvar=" + javalocalvar); 
    ... more variables 
    try { 
     langService.Submit(sb.toString()); 
    } catch (GenericError e) { 
     e.printStackTrace(); 
    } 
+0

Bu yöntemde java kodunda sas kodu kullanıyoruz. Bazı SAS kodlarını yazmak yerine bunu yapmak için API'yi kullanmaya çalışıyordum. –

+0

En yeni SAS IntTech Java API'sini inceledim ve seçenekler ve formatlarla çalışmaktan başka, doğrudan makro değişkenlerle çalışmak için hiçbir şey görmüyorum (makro vars varsayalım, pdv vars aradığınız şey değil). SAS API'sine yerel değil, aksi takdirde sas tabanlı yaklaşımı sarmak için bir sınıf oluşturabilirsin. Kapaklar altında nasıl iletişim kurduğu göz önüne alındığında, SAS yöntemi sağlasa bile bu, kablo üzerinden etkin bir şekilde geçecek olan şeydir. Aksi halde, daha fazla yardımcı olamadığım için özür dilerim, ancak diğerleri bunu ortak bir sorunu çözmek için hızlı bir yol olarak bulabilirler. –

+0

SAS desteğiyle bağlantı kurdum. API'larının böyle bir şeyleri olmadığı için yardımcı olamayacaklarını söylediler. Şu anda JAVA'da SAS kodu ile yapıyorum. –