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.