WARNING: Engine XPORT does not support SORTEDBY operations. SORTEDBY information cannot be copied.

When recently creating a transport file using PROC COPY and the XPORT library engine, I found the above message in the log. The code used was similar to the following:

libname tran xport “c:\temp\tran.xpt”;

proc copy in=data out=tran;

When I went seeking out the cause on the web, I discovered this SAS Note that dates from before the release of SAS 6.12, putting the issue at more than ten years old. My take on its continuing existence is that we still to use a transport file format that was introduced in SAS 5.x for sake of interoperability, both between SAS versions and across alternatives to the platform.

The SORTEDBY flag in a dataset header holds the keys used to sort the data and it isn’t being copied into the XPORT transport files, hence the warning. To get rid of it, you need to remove the information manually in data step using the SORTEDBY option on the DATA statement or using PROC DATASETS, which avoids rewriting the entire data set.

First up is the data step option:

data test(sortedby=_null_);
set sashelp.class;

Then, there’s PROC DATASETS:

proc datasets;
modify test(sortedby=_null_);

It might seem counterproductive to exclude the information but it makes no sense to keep what’s being lost anyway. So long as the actual sort order is unchanged, and I believe that the code that that below will not alter it, we can live with its documentation in a specification until transport files created using PROC CPORT are as portable as those from PROC COPY.

Creating waterfall plots in SAS using PROC GCHART

Recently, I needed to create a waterfall plot couldn’t use PROC SGPLOT since it was incompatible with publishing macros that use PROC GREPLAY on the platform that I was using; SGPLOT doesn’t generate plots in SAS catalogs but directly creates graphics files instead. Therefore, I decided that PROC GCHART needed to be given a go and it delivered what was needed .

The first step is to get the data into the required sort order:

proc sort data=temp;
by descending result;

Then, it is time to add an ID variable for use in the plot’s X-axis (or midpoint axis in PROC GCHART) using an implied value retention to ensure that every record in the dataset had a unique identifier:

data temp;
set temp;

After that, axes have to be set up as needed. For instance, the X-axis (the axis2 statement below) needs to be just a line with no labels or tick marks on there and the Y-axis was fully set up with these, turning the label from vertical to horizontal as needed with the ANGLE option controlling the overall angle of the word(s) and the ROTATE option dealing with the letters, and a range declaration using the ORDER option.

axis1 label=none major=none minor=none value=none;
axis2 label=(rotate=0 angle=90 “Result”) order=(-50 to 80 by 10);

With the axis statements declared, the GCHART procedure can be defined. Of this, the VBAR statement is the engine of the plot creation with the ID variable used for the midpoint axis and the result variable used as the summary variable for the Y-axis. The DISCRETE keyword is needed to produce a bar for every value of the ID variable or GCHART will bundle them by default. Next, references for the above axis statements (MAXIS option for midpoint axis and AXIS option for Y-axis) are added and the plot definition is complete. One thing that has to be remembered is that GCHART uses run group processing so a QUIT statement is needed at the end to close it at execution time. This feature has its uses and appears in other procedures too though SAS procedures generally are concluded by a RUN statement.

proc gchart data=temp;
vbar id / sumvar=result discrete axis=axis2 maxis=axis1;

A little look at Windows 8

It has been a little while but I have managed to set up a VirtualBox virtual machine in order to take a look at the Developer Preview of the next version of Windows, something that I and others continue to call Windows 8 though Microsoft has yet to confirm the name. When I tried the installation before, it failed on me but that may have been due to having an earlier release of VirtualBox on my machine at that time. 4.1.14 has a preset for Windows 8 and I also happened to notice that it can create virtual hard disks that can be used with competitors like VMWare, Parallels and Virtual PC too. It’s an interesting development but I am left wondering why you’d need to do that when VirtualBox runs on most platforms anyway.

To get back to Windows 8, the installation ran near enough without any intervention apart form stating the language you wanted to use, U.K. English in my case. Starting up the operating system gains you a lock screen that you need to get out of the way so you can log in. It can be dragged out of your way or you can double-click on it or use the carriage return key to get rid of it. Quite why someone thinks it’s a good extra is a little beyond me when a log in screen would suffice. Logging in gets you the new start menu or, as I prefer to think of it, screen. By default, there are a good few Metro apps installed though I decided to rid myself of most of them.

Regarding those apps, one irritation could be that there isn’t that obvious a way to switch away from them to something else. Thankfully, ALT+TAB does seem to work and it has the most instantaneous effect. Otherwise, using the Windows key or hovering over the bottom left corner of the screen to get the menu that brings up the start screen. From the PC user’s point of view, I could see this needing a little more thought because it took a little while for me to figure out what to do. Closing Metro apps isn’t an option either unless you resort to the Task Manager to do so. Microsoft appears to want to leave them open from the point at which you start them until the PC is shut down. It’s a design decision that leaves me unconvinced though, particularly when thoughts of rogue apps running riot on a system come to mind. Then, a stop button could be handy.

There is no start menu as we have come to know it anymore with the start screen replacing it. However, it is possible to limit what’s on there to the software that you use most often an rearrange panels as you’d like them to be. Apart from hosting shortcuts for starting applications, it also acts as a task switcher like the task bar in Windows 7 and there is one of those in Windows 8 too when you jump to the desktop; handily, there’s a panel for that too. Installing Firefox added a panel to the start screen so a little thought has gone into such a common situation and that’s just as well. Still, there’s more work to be done because, currently, there’s no way of changing the background colour of the start screen without resorting to a hex editor or third party tools. Still, you can pick your own picture for the lock screen so things are not all locked down on you.

A preview of IE 10 is included and, apart from the occasional artifact when displaying one of my websites, it seems to work well enough as does Windows Explorer. However, apart from these and a smattering of Metro apps, the Developer Preview does feel barer that previous versions of Windows. However, it does appear that applications like Notepad, PowerShell and the Command Prompt are on there but you need to search for these. That also means that you know about them too so I’d suggest a better way of browsing the applications that are available too. This is one of the weaknesses of Ubuntu’s Unity interface and you need to search in the Dash to find them. Just starting to type in the Metro start screen (and other screens too, it seems) in Windows does trigger the completion of a search box much like what happens in the GNOME Shell Activities screen on systems with GNOME 3. While it’s good to see good ideas being reused from elsewhere, Microsoft might do well to note that you still can browse lists of applications in GNOME 3 too.

Shutting down Windows 8 also seems to be more convoluted than is the case with Windows 7. Logging off and then powering off from the log in screen is one approach and that was my early impression from GNOME 3 too. With the latter, I later was to discover a status menu plugin that added in the option where it was accessible or that using ALT key when clicking the status menu when the plugin wouldn’t work would do what I needed. Without logging off from Windows 8, you can do a shut down using the sidebar that appears on selecting Settings from the menu that pops up on hovering near the bottom left corner of the start screen or the Start button of the task bar of the desktop. Then, look for the power icon and select what you need from the menu that clicking on this icon produces. Of course, you may find that the ALT+F4 key combination when issued while on a clean desktop is the cleanest of all.

All in all, the Developer Preview of the next release of Windows looks fairly usable. That is not to say that there aren’t things that need changing. Apart from this being an early sight of what may be coming to us Windows users, it isn’t unknown for Microsoft to roll back on a radical move to make it more palatable to the user community. After all, it has to watch how it treats the corporate market too. The strong possibility of there being alterations is one thought that needs to be shared with those who are inclined to be losing their tempers at the moment and I have comments with unpleasant language out there on the web (none of that here, please, by the way). As for me, I like to look ahead in order to be forewarned about what’s coming my way in the world of computing. What I have seen so far of the next Windows release is reassuring though there are roughnesses such as PC shutdown and Metro app switching but Microsoft cannot commit commercial suicide either so these have to be fixed. It seems that the world of Microsoft operating systems is in flux with the company’s keeping a firm eye on the world of mobile computing with tablets being a major concern. Others may disagree but I can see Windows 8 working well on conventional PC’s and that’s no bad thing.

Changing to CKEditor from FCKEditor for WordPress Content Editing

The post editor that I have been using on my WordPress-powered outdoors blog has not been TinyMCE but FCKEditor. My use of that editor has meant that WordPress’ autosave and word counting features have not been available to me but that was my choice, as strange as it will sound to some. However, there have been times when I have missed the autosaving functionality and lost work. Since FCKEditor has been replaced by CKEditor, there are plugins available for adding that editor to WordPress’ administration interface. Recently, I got to replacing the old FCKEditor plugin with a newer CKEditor one and that has gained me post or page autosaving. The more cosmetic word counting feature is not active until a draft is manually saved but I can live with that. Other than that, the interface remains familiar with all (X)HTML tags on show in the source code view without any being hidden away from view like in WordPress’ implementation of TinyMCE. That isn’t to see that WordPress is doing something wrong but just that there are alternative way of doing things that are equally valid. After all, why would there be choices if there only ever was one right way to do anything?

Like any WordPress plugins, those replacing the default content editor in WordPress can be vulnerable to changes in the publishing platform and there is one of those in the pipeline for 3.2: a minimalist post/page editor that is billed as being non-distracting. That planned new feature is drawing inspiration from the likes of QuietWrite, where you can write content and transfer it over to WordPress or leave it where it was written. Even with bigger changes like this, my experience never has been that design decisions made for new WordPress releases have restricted to any great extent how I use the thing. That’s not to say that my usage hasn’t changed over time but I have felt that any decisions were mine to make and not all made for me. In that light, I can foresee CKEditor continuing to work on WordPress 3.2 but I’ll be doing some testing ahead of time to be sure that is the case.