BookmarkSubscribeRSS Feed
ChristianWI
Fluorite | Level 6

Background: I am conducting a sensitivity analysis where I am looping over combinations of two parameters A and B, where A=1,2 and B=1 to 9. I have saved down datasets for each of the 18 combinations of the two parameter values and I now would like to write a macro the generate summary statistics, by group, for 6 output variables I am interested in.

 

Problem: If I limit B to B=1 to 8 I get the 16 desired output datasets, however if I loop over B=1 to 9 I inexplicably get 21 output datasets, where the the output for the output for some iterations is duplicated, and trying to open the duplicates produces an error: "Cannot open dataset, file does not exist".

ChristianWI_0-1626416105213.png

 

Although I do ultimately get the desired output, there must be something going wrong to produce the additional duplicate datasets.

 

Example code:

 

data data;
input group $ var1-var6;
datalines;
group1 1 2 3 4 5 6
group2 7 8 9 10 11 12
;
run;

%macro example;
%do i = 1 %to 2;
	%do j = 1 %to 9;
		%let case = A&i._B&j.;
		data case_A&i._B&j.;
		set data;
		case = "&case.";
		run;
	%end;
%end;
%mend;
%example

Any help would be greatly appreciated.

 

8 REPLIES 8
ChrisNZ
Tourmaline | Level 20

I doubt you create additional tables, check your log to verify. If not, then it looks like a display problem by the SAS client. In this case, you should contact SAS tech support.

Sajid01
Meteorite | Level 14

I reran your code without any duplicates and I didn't find any duplicate datasets as you have mentioned. see it below. ( I executed it on SAS On Demand for Academics)

Sajid01_0-1626828783330.png

I have attached the log.

Needless to say that filesystems do not allow files of exactly the same name.

ChrisNZ
Tourmaline | Level 20

> Needless to say that filesystems do not allow files of exactly the same name.

I wonder what SAS sees if you have identical names but different cases under Linux/Unix. Like:

test.sas7bdat

Test.sas7bdat

SAS names are supposed to be lower case, so does SAS ignore the other files?

 

 

Sajid01
Meteorite | Level 14
Unix/Linux are case sensitive.
For example test and Test are not the same.
ChrisNZ
Tourmaline | Level 20

> For example test and Test are not the same.

Exactly. Hence my question.

Kurt_Bremser
Super User

At least with 9.4M7 on AIX and EG 7.15, only .sas7bdat files in all lowercase will appear in the library list.

 

But IIRC, there was a time when SAS would list all files with extension .sas7bdat as datasets (including those that had a capital letter before the extension), but would have trouble opening those that were not all lowercase.

ChristianWI
Fluorite | Level 6

Thanks for this. I did check the log and only 18 datasets were recorded as having been generated which added even more to my confusion. I forgot to mention this in my post, but it sounds like you are correct in that is is most likely a display problem.

Tom
Super User Tom
Super User

As has been mentioned UNIX filesystems are case sensitive.  So a file named CASE_A2_B9.sas7bdat is not the same file as one named case_a2_b9.sas7bdat.

 

SAS on unix will only use lowercase letters in the names of files used to store SAS datasets.  So if you run this program:

data copy;
  set sasuser.CASE_A2_B9;
run;

It will look for a file name case_a2_b9.sas7bdat in the directory pointed to by the SASUSER libref.

 

Using a quoted physical name to reference the dataset in your SAS code will not help.  If you write code like:

data copy;
  set "~/sasuser/CASE_A2_B9.sas7bdat";
run;

Under the hood SAS will create a new libref pointing to the ~/sasuser/ directory and reference the dataset the same way as if you had use two level name to begin with.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

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
  • 8 replies
  • 477 views
  • 2 likes
  • 5 in conversation