data _null_; xyz='She sells seashells? Yes, she does.'; startposexp=1-23; whereisShe_ineg22=find(xyz,'She','i',startposexp); put whereisShe_ineg22=; run;
I should receive output whereisShe_ineg22=1 instead I am getting whereisShe_ineg22=14. why?Let me know.
You should be using a value of 1 for STARTPOSEXP. You are actually using a value of -22 (after performing math for 1 minus 23). So the software computes the starting position by moving backwards from the right-hand side of the string. Details are in the documentation for FIND.
She sells seashells? Yes, she does.
^
Position 22
^
Postion 14
So you started searching backwards ad the Y.
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!