"Construction Secrets Learned Building a Government Information Factory (The Foundation)"

 

By John McCue

 

Abstract:

If at all possible "apprentice" for someone building a Government Information Factory first; and shamelessly use everything they can teach you.

 

But since there are very few Government Information Factories being built right now and few people with such experience using SAS, here are a few of the hidden secrets that I've learned that should be helpful, even if your not undertaking such a long-term project.

 

This first presentation will present some of the secrets that were learned while building the foundation of the Government Information Factory and should help when you want to get started on a Version 9 project such as this.

 

Note: since the presentation will not be using electronic devices please refer to the Examples in this text during the presentation.

 

What are we building?

 

First, let me provide a little background about this project.

 

The GIF (Government Information Factory) is an architectural framework for building government information systems. It was created by Bill Inmon and addresses the unique requirements of government information processing such as holistic, passive and proactive security, scalability, and sharability of data within and between government agencies. The GIF also provides a migration path to move from a stovepipe environment to a GIF environment where you have an enterprise-wide view of data. In many regards, the GIF is the next generation of architecture for government entities.

 

The GIF framework encompasses both operational processing and informational processing. For CRS it also addresses the distribution of information through our Intranet, our interaction with Congress, the Library of Congress, and outside agencies. If you want additional information go to http://www.inmongif.com/.

 

Preparing the Site

 

As with any construction project, the first task is to plan. So often in working on a project we want to show progress so much that we forget to take the necessary time needed to get the project thought out and well understood by all the workers involved in the effort. Part of the planning will involve meeting with all the people to get political allies that will support you during the periods of slow progress that will take place while constructing the foundations for the Government Information Factory.

 

The next big hurdle is to understand how to get the server(s) ready to be the platform for a Government Information Factory. Our first challenge was how to setup the system for users to log into the SAS Servers. Most of our users, and the first round specifically were used to be using Microsoft’s Terminal ServicesÔ for connecting to a server.  But if you just simply use the vanilla settings then SAS will not be passed the proper values when you need to have each individual user have different values simultaneously on the server for SAS profile usage.

 

Example 1. Preparing for Users to connect through Terminal Services

 

We needed to use the SETX command because the SET command will not properly create the values for the proper location for temporary workspace for each user for unique allocation.  The following BAT file is stored in the All Users Startup Programs directory.

 

@ECHO OFF

set T1="D:\DATA\%USERNAME%"

set T2="%T1%\TEMP"

set T3="%T1%\WORK"

"C:\Program Files\Resource Kit\setx" MYSASPATH "%T1%"

IF EXIST "%T1%" GOTO END

MKDIR "%T1%"

MKDIR "%T2%"

MKDIR "%T3%"

:END

 

This program lets each user have work area unique and keeps the configuration file simple.

 

Example 2. The lines in the SASV9.cfg file that relate to set commands.

 

/* Setup the MYSASFILES system variable                         */

-SET MYSASFILES !MYLOCALSASPATH\

 

/* Setup the default SAS System user profile folder             */

-SASUSER !MYLOCALSASPATH\

 

/* Setup the default SAS System user work folder                */

-WORK !MYLOCALSASPATH\WORK

 

 

Share Libraries

 

Create a share library for each department for control of the “shared” information and to avoid data access conflicts because of going through terminal services to get data.

 

First, document the service in the SERVICES file in C:\WINNT\System32\drivers\etc directory.

 

Then, run the SSCU.exe from SAS Institute to define the service for automatic startup.  Set the Path to execute sas.exe using a copy of your configuration file (not your original) and file that has the share service allocation.

 

Example 3. File executed as a service that was defined by the SAS Services Configuration Utility (SSCU)

 

options comamid=tcp

            sastrace=',,,d' sastracloc=saslog;

libname shr1dept 'G:\Dept\Share';

%let tcpsec=_secure_;

proc server id=shr1dept uapw=psswrd acctlvl=all;

run;

 

In this example the options statement sets the protocol to tcpip, sets the trace level to detailed during testing and sends the trace information to the log window.   The libname statement defines the physical location that will be used by the proc server statement.  The let statement sets the security level to secure which requires the password (SAPW) to be given in order to access the share service.  For additional security don’t forget to use a separate userid for the service that can be run with act as part of the operating system, and log on as a service, but has been set to deny logon locally in the local settings window.  In the proc server statement the uapw is set to the value that you will use in the SAPW when you call the share service by an allocating libname statement. 

 

 

Bringing in the Supplies

 

Once the Share Server has been defined, the next step is to copy the data to the servers for testing and to allocate the share servers in a libname statement.  When the allocation works as expected the connection should look something like Example 4.

Example 4.
libname shrdept server=crssas1.shr1dept sapw=psswrd;

This can be executed as a stand-alone program as long as the connection works properly.  If doesn’t work then you may have to change it to not use the service name.  

Example 5

libname SHRDEPT server=SASTEST.__8080 {user=xxxxx password=yyyyyyy} sapw=psswrd;

The use of server=machinename.servicename is the default, but a lesser used method that we learned about is the use of server=machinename.[underscore][underscore]servicenumber as the method for allocating the share library.  This is needed when a service returns an Error: Communication request rejected by partner.

 

Conclusion

 

Because of delays, some being bureaucratic others being technical, we are not as far along at this point as we would have preferred.  But as we bring on additional resources the pace of our construction will begin to pick up. As the GIF continues, I and or others from our team will present more secrets that we learned so I hope that you will watch for future presentations.