Hello, Daria. One of the first things you say in this post "Your data must be in the SASHDAT format for CAS to process it" does not appear to be accurate. Wouldn't it be more accurate to say "your data must be loaded to memory for CAS to process it"? This appears to be the case because later in the post you describe loading non-sashdat data to memory. In my personal experience trying to learn CASL, I found the single most confusing and frustrating thing to be the use of libnames, caslibs and libnames associated with caslibs. I'm surprised at how little commentary there is on this. Different portions of the language use different references. It appears to be nearly random. As I've helped people start using CASL, my recommendation is to make sure you have all 3 references defined for your data sources (libname, caslib, libname associated) and if one reference is not working, try the others.

I am interested in your final comment in reply to Ashok's question. As far as I have been able to determine, the data step merge is not really supported by CAS. As you point out, data in memory is not sortable, due to the distributed nature. Therefore, a merge requiring sorted data will almost definitely deliver unexpected/undesired results. Do you know of a situation/example where this is NOT the case? As much as I appreciate the power of CAS and CASL, I find the syntax bewildering, which makes it much harder to ramp up, but that's a rant for another time.

Thanks for the post. I know several people who have found it helpful, including me.