BookmarkSubscribeRSS Feed
JianShen
Obsidian | Level 7

Hi All,

 

I have a question regarding the use of a libref to a CAS library. In the code example below, I have a CAS library with a name that's longer than 8 characters. As a result, the library doesn't show up in SAS Studio when I assign libraries. To actively keep track of the available data while working in SAS Studio, I use a libname statement to bind a shorter libref to the CAS library. The shorter libref works fine when I use it in the data step. However, PROC CASUTIL somehow does not recognize the shorter libref. Instead, I get "ERROR: The caslib 'INFO' does not exist.". 

 

I would appreciate it if anyone could give me insight into why the shorter libref does not seem to work in PROC CASUTIL. 

 

libname info cas caslib = infographics;

data info.test1;
	input_data = "02-2020"; output;
run;

data info.test2;
	set info.test1;
	format output_date monyy7.; 
	output_date = input(input_date, anydtdte7.);
run;

proc casutil;
	save casdata = "test2" incaslib  = "info"
		 casout  = "test2" outcaslib = "info" replace; 
droptable casdata = "test2" incaslib = "info" quiet; load casdata = "test2.sashdat" incaslib = "info" casout = "test2" outcaslib = "info" promote; quit;

I work on SAS Viya version 3.5 and SAS Studio version 5.2.

3 REPLIES 3
SASJedi
SAS Super FREQ

All of the PROC CASUTIL parameters referencing caslibs need the actual caslib name - not the libref you assigned to the caslib. PROC CASUTIL generated CAS action that run in CAS, so the program won't have access to any of the resources on the Compute Server when it executes. Using the actual caslib name for INCASLIB and OUTCASLIB should fix the problem. Try something like this:

libname info cas caslib = infographics;
data info.test1;
	input_data = "02-2020"; output;
run;
data info.test2;
	set info.test1;
	format output_date monyy7.; 
	output_date = input(input_date, anydtdte7.);
run;

proc casutil;
	save casdata = "test2" incaslib  = "infographics"
		 casout  = "test2" outcaslib = "infographics" replace; 
	droptable casdata = "test2" incaslib = "infographics" quiet;
	load casdata = "test2.sashdat" incaslib  = "infographics"
		 casout  = "test2" 		   outcaslib = "infographics" promote;
quit;

May the SAS be with you!

Mark

 

Check out my Jedi SAS Tricks for SAS Users
Tom
Super User Tom
Super User

@SASJedi 

Is there anyway to discover the CAS name for the libref that is created using the CAS engine?

For example what does the PATHNAME() function return for the INFO libref in the example program?

Or what information is available in the DICTIONARY.LIBNAMES or SASHELP.VLIBNAM?

%let remote=%sysfunc(pathname(info));
proc casutil;
  save casdata = "test2" incaslib  = "&remote"
...
SASJedi
SAS Super FREQ

Not to my knowledge. This code:

cas mySession;
libname x cas caslib="casuser";
%put NOTE: %qsysfunc(pathname(x));
proc cas;
	session.sessionID;
quit;

Produces this output in the log:

 

0 %put NOTE: %qsysfunc(pathname(x));
NOTE: f67a5830-2590-a14b-b399-958a8299e619
81   proc cas;
82   session.sessionID;
83   quit;
NOTE: Active Session now MYSESSION.
{MYSESSION:Sun Jun 13 14:28:33 2021=f67a5830-2590-a14b-b399-958a8299e619}
NOTE: PROCEDURE CAS used (Total process time):

So you can see that PATHNAME is returning the UUID of the CAS session, not the caslib. Right-clicking on the library in SAS Studio and choosing Properties will show the same results. 

Unless there are caslib librefs in your SAS session that were automatically assigned by the SAS Administrator, you would have to have assigned them in your code. Librefs assigned with the CASLIB _ALL_ ASSIGN; statement will automatically match the caslib name. And for librefs individually assigned with LIBNAME statements, the association should be self-evident in the code... 

May the SAS be with you!
Mark

 

 

 

Check out my Jedi SAS Tricks for SAS Users

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 625 views
  • 0 likes
  • 3 in conversation