proc lua;
submit;
-- prototype
datasetclass={}
datasetclass.nobs = function(self)
local dsid = sas.open(self.ds)
local nobs = sas.nobs(dsid)
sas.close(dsid)
return nobs
end
datasetclass.nvars = function(self)
local dsid = sas.open(self.ds)
local nvars = sas.nvars(dsid)
sas.close(dsid)
return nvars
end
datasetclass.meta = function(self)
local i = 1
local meta={}
local dsid = sas.open(self.ds)
for i = 1, sas.nvars(dsid) do
meta[i]=table.tostring(sas.varinfo(dsid,i))
end
sas.close(dsid)
return meta
end
-- new method (constructor)
datasetclass.new = function(_ds)
local obj = {}
obj.ds = _ds
setmetatable(obj,{__index=datasetclass})
return obj
end
endsubmit;
run;
proc lua;
submit;
-- main(1)
local sampleds1=datasetclass.new("sashelp.class")
print("nobs=",sampleds1:nobs())
print("nvars=",sampleds1:nvars())
for key, val in pairs(sampleds1:meta()) do
print(key, val)
end
-- main(2)
local sampleds2=datasetclass.new("sashelp.air")
print("nobs=",sampleds2:nobs())
print("nvars=",sampleds2:nvars())
for key, val in pairs(sampleds2:meta()) do
print(key, val)
end
endsubmit;
run;