Date: Mon, 22 Dec 2008 17:27:13 -0500
Reply-To: "Fehd, Ronald J. (CDC/CCHIS/NCPHI)" <rjf2@CDC.GOV>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Fehd, Ronald J. (CDC/CCHIS/NCPHI)" <rjf2@CDC.GOV>
Subject: Re: Dictionary problem with Parallel processing
In-Reply-To: <f3f15d5c-2f22-48f8-a33d-b84bf025eb3d@b38g2000prf.googlegroups.com>
Content-Type: text/plain; charset=us-ascii
> From: vijayakumar
>
> I am facing strange problem, my environment is Sun Solaris, SAS 9.1.3.
>
> Situation:
>
> I want to create summary report for the libraries about no of obs,
> when was the data set created and library name etc.
>
> One main job started to run which in turn creates around 30 to 50
> parallel jobs in which I have to create summary report specifically
> for two libraries for all those parallel jobs.
>
> I have used dictionary. tables and dictionary. members to get the
> report created but every now and then I am getting an error saying the
> "Lock was not available for the dataset and held by some process".
>
> Solution in Mind:
>
> Is this can be avoid if I use sashelp.vtable and sashelp.vslib?
[sound of alarm bells going off here]
> Since
> as far as I know the dictionaries will open the libraries to get the
> above said key things but these sashelp views can be other way around
> to avoid these issue?
>
> I need your expert's advice on this to resolve this issue.
summary: totally avoid reading sashelp views in production code
reason: they are derivatives of SQL dictionaries
and are an order of magnitude slower
i.e.: takes 10 times as long
than Contents which reads information for one specific libref.
see
http://www.sascommunity.org/wiki/List_Processing_Development#Speed_Consi
derations
instead use
Proc Contents data = Libref._all_
out = Work.ListTables;
that is a list of variables
you have to reduce that to a list of tables.
Ron Fehd the module/routine/subroutine maven CDC Atlanta GA USA RJF2
at cdc dot gov