Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!psuvax1!psuvm!VCUVAX!HAMER From: HAMER@VCUVAX.BITNET (ROBERT M. HAMER) Newsgroups: bit.listserv.sas-l Subject: Compiled SAS code Message-ID: Date: 11 Jan 90 17:48:00 GMT Sender: "SAS(r) Discussion" Reply-To: "ROBERT M. HAMER" Lines: 33 Approved: NETNEWS@PSUVM Gateway Original_To: BITNET%"sas-l@vtvm2" I promised to convey some more information on how SAS compiles and stores compiled code when I got some more. First, I have made the analogy that the data step compiler turns out something like p-code or object code. The code is probably closer to object than p-code, although it goes through a p-code-like stage. Remember with what the Institute calls "Multivendor Architecture" (I know I can't spell) much of the code is portable, but there is a layer that is machine specific. The compilation process goes through a part that takes the source code and turns it into a p-code-like form that is machine independent, and the layer of machine-specific code turns that into specific object code for the platform. The object code does not have external references resolved, and there are some other unresolved references, too. This is what is stored by the Stored Program Facility. Among the things that happen at compile time is the building of the PDV. An authoritative source has told me that in version 6, although the PDV is mostly built at compile time, it can be added to at execution time. What that probably means is that the first step in executing stored program code is resolving external references to SAS datasets and ensuring that the PDV has the things in it that it needs to, and if it does not, adding more variables to the PDV. I will probably write some test programs and communicate them to you. To change the subject, anyone out there have SAS code to find all possible permutations of a set? Suppose I have the characters 1 2 3 4 5. There are 5! (120) possible permutations or orders (5!) that they can take on (e.g., 3 5 2 1 4). I want to generate all of them. Anyone have SAS code to do this?