Hi All,
I am trying to learn how to execute an api call on sas 9.3 using an example from below document .
But am getting the below error .
when I checked online for the error , I am getting the resolution as changing the config file
C:\SAS\Lev1\SASApp\sasv9.cfg ...
is there another mothod to excute this proc http .
Thanks in advance.
https://www.lexjansen.com/mwsug/2012/S1/MWSUG-2012-S110.pdf
%macro sas_getDist; data _null_; length url $ 2048; url = catt( 'http://maps.googleapis.com/maps/api/directions/xml?origin=', &start, '&destination=', &end, '&sensor=false&alternatives=false'); url = translate(trim(url), '+', ' '); call symputx('REQUEST_URL', url); run; FILENAME dist "\\Desktop\SAS\RESPONSE1.txt"; proc http out = dist url = "%superq(REQUEST_URL)" method = "GET" ct = "application/x-www-form-urlencoded"; run; filename xml_map "\\Desktop\SAS\google-maps-dist.map"; libname dist xml xmlmap=xml_map; data _null_; set dist.distance; /* 1 mile = 1,609.344 meters */ dist = dist / 1609.344; call symputx('DIST', dist); run; %mend; proc fcmp outlib=sasuser.funcs.web; function sas_getDist(start $, end $); rc = run_macro('sas_getDist', start, end, dist); return (dist); endsub; quit; data addresses; length name $ 32 address $ 128; infile datalines truncover; input name address $128.; datalines; SAS SAS Campus Dr., Cary, NC 27513 YMCA 1603 Hillsborough St., Raleigh, NC 27605 NCSU Joyner Visitor Center, NC State University, Raleigh, NC 27695-7504 UNC-CH UNC Visitor Center, 250 East Franklin Street, Chapel Hill, NC ; options cmplib=sasuser.funcs; data distances; set addresses; dist = sas_getDist('SAS Campus Dr., Cary, NC, 27513', address); run; proc print data=addresses; where sas_getDist('SAS Campus Dr., Cary, NC, 27513', address) < 10; run;
ERROR: 59 proc fcmp outlib=sasuser.funcs.web; 60 function sas_getDist(start $, end $); 61 rc = run_macro('sas_getDist', start, end, dist); 62 return (dist); 63 endsub; 64 quit; ERROR: Write access to member SASUSER.FUNCS.DATA is denied. WARNING: Failed to save function sas_getDist to sasuser.funcs.web.
ERROR 2 -------------- WARNING: No CMP or C functions found in library sasuser.funcs. 79 dist = sas_getDist('SAS Campus Dr., Cary, NC, 27513', address); ___________ 68 ERROR 68-185: The function SAS_GETDIST is unknown, or cannot be accessed.
Use another library in PROC FCMP, and set the COMPLIB= system option accordingly.
This:
proc fcmp outlib=sasuser.funcs.web;
directs SAS to store the new function in a catalog in the SASUSER library; in your setup, this library is used in read-only mode.
Similarly, this:
options cmplib=sasuser.funcs;
tells SAS where to look for compiled functions. You need to use a different library for this; if you don't want the function to be permanently available, you can use WORK.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.