Hello,
I am trying to call an API that only accepts one argument at a time. I want to call it about 100 times. I have my code set up so that the returned data is saved into a txt file "resp". Currently, every time I call the API, the "resp" file is replaced. I would rather each call's returned data be appended to the file.
Here is my code so far: (I will add in an array of ids eventually)
%MACRO callapi (id=); proc http url ="api/url/etc" method="get" out=resp; run; %MEND callapi; %callapi(id=id1);
I guess one solution would be to create a new folder and have every response create a new file and append them afterwards, but I'd rather not do that if I don't have to.
Thank you!
I assume that you're going to take that txt file and convert it to SAS data, correct? So in your macro, add a DATA step that reads the file and creates a data set with a new name (work.data_01, work.data_02, etc.). You can then later append the data sets together when you're all done.
I use this technique all of the time. Alternatively, you could use the FILENAME statement to remap resp to a new file before each call, maybe placing into a file like "data_01.txt", "data_02.txt", etc. Then finish with a DATA step that uses INFILE with a wildcard notation to read all of the data at once.
I assume that you're going to take that txt file and convert it to SAS data, correct? So in your macro, add a DATA step that reads the file and creates a data set with a new name (work.data_01, work.data_02, etc.). You can then later append the data sets together when you're all done.
I use this technique all of the time. Alternatively, you could use the FILENAME statement to remap resp to a new file before each call, maybe placing into a file like "data_01.txt", "data_02.txt", etc. Then finish with a DATA step that uses INFILE with a wildcard notation to read all of the data at once.
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.