BookmarkSubscribeRSS Feed

For readability, in a data step you can explicitly name parameters for the hash object declaration, as per SAS(R) 9.2 Language Reference:

 

declare hash myhash(dataset: "table", duplicate: "r");

In PROC DS2, using the similar syntax produces an error:

proc ds2;
	package foo /overwrite=yes;
	declare package hash myhash(hashexp: 4);
	endpackage;
	run;
quit;
ERROR: Compilation error.
ERROR: Parse encountered ':' when expecting ')'.
ERROR: Line 64: Parse failed: declare package hash myhash(hashexp >>> : <<< 4);
 
I tried using an equals sign instead, like invoking a macro and naming the parameters explicitly, but that doesn't work. I think the `=` is evaluated as part of a boolean equation, passing a 1 or 0 as the value.
 
Using the package methods to configure the hash might be more readable, but for brevity I'd like to just use the parameters in the constructor. And overall, when creating user-defined packages, some methods might take a bunch of parameters, and it would be tedious and bug-prone to write and call a method to set each parameter.
 
Here's a DS2 example I think that could use some explicit parameter naming:
 
declare package hash h1([key1], [data1 data2 data3], 0, 'testdata', '', '', '', 'multidata');

 

1 REPLY 1
Patrick
Opal | Level 21

@anonymous_user

For DS2 parameter passing is positional only as documented.

http://documentation.sas.com/?docsetId=ds2ref&docsetTarget=n0qpaav3a488wjn1ishk8ump7j1g.htm&docsetVersion=9.4&locale=en

 

I guess you know that already and your post is more of a feature request than an actual question.

Do you know that you can post such feature requests under the following link? https://communities.sas.com/t5/SASware-Ballot-Ideas/idb-p/sas_ideas

 

 

 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 1320 views
  • 1 like
  • 2 in conversation