Wow. That was some loaded comments . I started learning/using SAS since 2009, and I have been through lots of pains you just mentioned. I am not an expert, but fwiw this is how I learn: 1. Expose yourself to countless SAS problems as much as possible, meaning get actively engaged in SAS-L or here. Not necessarily posting answers, but at least trying to solve them by yourself. 2. Get down to the very basics, as deep as possible. Concepts such as PDV, data step implicit loop, SAS compiling, SAS execution, Macro compiling, Macro execution, etc, you NEED to know them inside-out, not just WHAT and HOW, most importantly, WHY. If you can think like SAS, then SAS will like your code. Read the text-book SAS papers written by Ian Whitlock, Ron Cody, Paul Dorfman among many others. Touching down the specifics of your 'loop' comments, sorry I can't agree with you. In the case of explicit loop, such as Do-Loop, you can use a index to identity the sequence, while in the case of data step implicit loop, _n_ is your guy. However, to echo with your sentiment, One thing about SAS, good or bad, is that it has lots of default behaviors for the sake of better efficiency or memory management, keep in mind SAS originated decades ago where there was a completely different world. Sometimes there is not that much you can do except getting used to it, meaning: memorizing it. My 2 cents, Haikuo
... View more