Reconfigure the SAS Environment Manager Agent to Point to a Different Host

SASIn the configuration phase of a SAS Enterprise Business Intelligence (EBI) Platform deployment, the Deployment Wizard prompts the installer for the host name of the Environment Manager Server. This value is used by the Environment Manager Agent as the recipient of all of the data that it collects. The Environment Manager Server resides on the middle (web) tier of a SAS deployment.  In multi-tier environments, the metadata, compute, and web tiers all have Environment Manager Agents deployed to them.

It is possible to provide an incorrect host name to the Deployment Wizard, and if that happens, you will quickly notice that no resources are available in the Environment Manager. In this case, the Environment Manager Agent configuration needs to be updated to reflect the correct location of the Environment Manager Server. The configuration file that specifies this information is located at


in a SAS 9.4M4 UNIX deployment. In the agent.properties file there is a property called agent.setup.camIP that is used to define the SAS Environment Manager Server to the agent.  The agent.setup.camIP should equal the middle tier’s hostname and can be changed manually. After the agent.setup.camIP value is updated with the correct host name, save the edits and restart the agent and resources should begin appearing in the Environment Manager in five minutes or so. This technique would also be used if the host name of the middle tier is changed.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

Redirect Web Traffic from HTTP to HTTPS after Reconfiguring the SAS Middle Tier for TLS

We had a new project which required the manual configuration of the SAS middle tier to utilize TLS (Transport Layer Security , a successor protocol to SSL). These environments were SAS Enterprise Business Intelligence Server 9.4M4 deployments. With each new maintenance release, SAS has simplified the automatic and manual configuration of encryption services. SAS Documentation suggests using the Deployment Wizard to automatically configure HTTPS and TLS during the configuration phase of a new deployment or upgrade. Unfortunately we already had fully-deployed 9.4M4 environments, so we had to do the configuration manually. This reconfiguration isn’t a complex process, but there are many configuration files to edit and a lot of clicks in SAS Management Console to achieve the desired result. After learning some shortcuts performing the change in our development environment, I was able to reconfigure the production environment in about an hour. SAS has documented this process in the SAS Intelligence Platform: Middle-Tier Administration Guide.

One other step was required for us after the HTTPS reconfiguration was complete. Our reporting environment was accessed using a link on the company intranet. We worked with the webmaster to update the URL and port in the intranet page, but we still had thousands of end users who had the old URL saved as a favorite in Internet Explorer. Instead of asking users to update their favorites, we chose to automatically redirect redirect web traffic from HTTP to HTTPS .

The solution couldn’t have been easier to implement. All we had to do was edit the SAS Web Server httpd.conf configuration file. My deployment is on AIX, so the file was located on the middle tier server at
SAS-configuration-directory/Lev1/Web/WebServer/conf/httpd.conf. I added to following lines to the file:

# Forward HTTP Requests to HTTPS
 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^/?(.*) https://%{SERVER_NAME}:8343/$1 [R,L]

and I also edited the following line:

Listen Localhost:7980

and changed it to

Listen server-IP-address:7980

Be sure mod_rewrite is getting loaded, meaning the following line is not commented out: 

LoadModule rewrite_module "SAS-home-directory/SASWebServer/9.4/httpd-2.2/modules/mod_rewrite.so"

I restarted the web server, and the web traffic was redirected as expected.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

SAS Environment Manager Server Does Not Start on AIX

ISAS Institute, Inc. began installing SAS Enterprise Business Intelligence (EBI) 9.4 Maintenance Release 3 software on AIX 7.1 LPARs this summer. These were development environments which were single-machine deployments. The installation and configuration phases were straightforward, and when completed, the deployment was up and running and validated perfectly. I then shut down all of the SAS services using the sas.servers script which is created at the end of the configuration phase. I then used the script to start all of the services, and SAS reported everything was up and running, so I performed another round of validation. When I opened up a browser and supplied the URL of the Environment Manager, the browser reported that there was not an application running on that server and port. I stopped and started the SAS services many times with the sas.servers script to make sure the problem was consistently occurring, which it was.

I then opened up PuTTy and went straight to the <sasconfig>Lev1/Web/SASEnvironmentManager/server-5.8.0-EE/bin/hq-server.sh script and executed a shutdown, only to be told that the Environment Manager server wasn’t running. So I then used the same script to start the server, and I went back to my browser and I was able to log into the application to validate.

Just out of curiosity, I contacted SAS Technical Support and asked them why this happened. The Tech Support Analyst told me that I was probably experiencing a known defect in the hq-server.sh script on AIX. The problem is that if you issue the hq-server.sh script from outside the <sasconfig>Lev1/Web/SASEnvironmentManager/server-5.8.0-EE/bin directory, which is what is happening when we use the sas.servers script, then we will see a “../lib not found” error in the log.

To prevent this from happening, the hq-server.sh script needs to be modified in two places, replacing the relative path to an absolute path to the lib directory. So to fix the problem, edit the <sasconfig>Lev1/Web/SASEnvironmentManager/server-5.8.0-EE/bin/hq-server.sh script and change the following:


INPUT=`ls -m ../lib`
for i in $INPUT
   if [ -f "../lib/${i}" ]; then


INPUT=`ls –m <sasconfig>/Lev1/Web/SASEnvironmentManager/server-5.8.0-EE/lib`
for i in $INPUT
   if [ -f "<sasconfig>/Lev1/Web/SASEnvironmentManager/server-5.8.0-EE/lib/${i}" ]; then

where <sasconfig> is the fully qualified path to configuration directory.

With the absolute path provided, SAS knows where the appropriate binaries are located to start up the Environment Manager!

Oddly, this seems to be an AIX thing, because I have a few Red Hat Linux environments running SAS Visual Analytics and the Environment Manager, and never saw this issue.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

Make the SAS Add-In for Microsoft Office Available in Office 2016

I recently wiped the disk on my primary PC and installed fresh copies of Microsoft Windows 10 Professional, Microsoft Office 2016, and the SAS Add-In for Microsoft Office 7.11 (using the standalone installer). I then fired up Microsoft Excel and noticed that the SAS menu item was not available:

The missing menu didn’t alarm me  – many times in the past Microsoft Office “disabled” the Add-In and I merely had to re-enable it to get my SAS menu back. In this case, however, it wasn’t even included in the Disabled Application Add-Ins in the Excel options:

I contacted SAS Technical Support, and they provided a workaround for SAS Add-In for Microsoft Office 7.11 users. The fix is very simple and takes care of the issue. Administrator privileges are required for all of the steps.

  1. Install 7.1 or 7.11 of the Add-In
  2. Rename or remove the old switcher utility file (generally located at C:\Program Files (x86)\SASHome\x86\SASAddinforMicrosoftOffice\7.1\SwitcherUtility.exe)
  3. Obtain the new 7.12 switcher utility and copy it to the location from Step 2
    SAS SwitcherUtility 7.12 - v.7.12 - 105.5 kB
  4. Run switcherutility.exe resetall from the command prompt
  5. Start up Microsoft Excel and The Add-In is now available to you! You will probably be prompted to install a Hot Fix as well.
Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

Errors When Using Page X of Y in SAS ODS pdf Statements

SAS ODSI ran across a familiar error this week, so I figured I might as well finally document it on this blog. My organization primarily uses Lexmark printers, and print drivers are included in the standard PC image. Apparently the drivers installed on the standard image are not considered “valid printer drivers” by SAS, because we generate errors in our PC SAS 9.3 logs when we attempt to create a .pdf file using the SAS ODS pdf destination. For example, if my colleagues submit a statement such as:

ods escapechar = '^';
ods pdf file="output.pdf"; 
proc print data=sashelp.class(obs=5); 
footnote j=r 'page ^{thispage} of ^{lastpage}';
ods pdf close;

Errors will be generated:

ERROR: There is no currently selected printer driver.  Use Print Setup to select an installed printer driver.

ERROR: Internal error trying to set up “page i of n” processing.  Could be caused by out of memory, out of disk space, or internal coding error. Check for other error messages above indicating probable user error or resource constraints; if there are none, or if they make no sense, please report this message and provide a test program to SAS Institute. Output will continue without PAGEOF support.

A colleague had a newly refreshed PC, so I installed PC SAS and all of the EBI developer tools for him. I did not perform any customization to his SAS environment; I each developer is different so I let them tweak their own settings. It appears that I will need to begin to at least edit the sasv9.cfg file for all new developer SAS installations to include the following to prevent the errors:


In our case the sasv9.cfg file is located at
C:\Program Files\SASHome\x86\SASFoundation\9.3\nls\en\sasv9.cfg. The options we have to add turn on Universal Printing. What is that? Here is how SAS describes it:

What Is Universal Printing?

Universal Printing is a printing system that provides both interactive and batch printing capabilities to SAS applications and procedures on all operating environments that are supported by SAS. Universal Printing enables you to define printers and print previewers, and to control most printing options as your output is created. In addition to sending output to a printer, you can print to external files.

Windows Specifics: By default, the Windows operating environment uses Windows printing and not Universal Printing. For more information about using Universal Printing under Windows, see Setting Up the Universal Printing Interface and the Default Printing Environment.

SAS routes all printing through Universal Printing services. All Universal Printing features are controlled by system options, thereby enabling you to control many print features, even in batch mode. For more information about these system options, see System Options That Control Universal Printing.

Note: Before the introduction of Universal Printing, SAS supported a utility for print jobs known as Forms. Forms printing is still available if you select Filethen selectPrint Setup from the menu, then check the Use Forms check box. This turns off Universal Printing menus and functionality. For more information, see Forms Printing.

Setting Up the Universal Printing Interface and the Default Printing Environment

Universal Printing is enabled when SAS starts in the UNIX or z/OS operating environment. Under Windows, Windows printing is enabled when SAS starts. To use Universal Printing in Windows, you must set the UNIVERSALPRINT system option to enable the Universal Printing menus and dialog boxes, and to set up the printing defaults. This option can be set only in a SAS configuration file or at start-up. You cannot enable or disable Universal Printing menus and dialog boxes after SAS starts.

Windows Specifics: In the Windows operating environment, include the following system option when you start SAS:


UPRINT is an alias for the UNIVERSALPRINT system option.

Note: When you use the PRINTERPATH= system option to specify a printer, the print job is controlled by Universal Printing. To return to Windows printing, set the PRINTERPATH= system option to a null string: PRINTERPATH=”.

We never saw these errors when developing in the Solaris or AIX environment because Universal Printing is turned on by default in those environments.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

PC SAS 9.4 on Windows 10

SAS logo pms 285S mark black SAS JPEGI have been playing with the Windows 10 Technical Preview 2 for a couple of months now. It is installed on both my Surface Pro 3 tablet and on a desktop PC. Things have been very smooth and I have nothing but positive things to say about it. I can’t wait for the RTM version!

I installed PC SAS 9.4 on one of the Win10 computers to see if the two played nicely together. In the past couple of days of testing, I haven’t run into a single issue. Performance is outstanding, and I have not yet seen any signs of incompatibility, maybe because SAS thinks it is running on Windows 8 (see screen shots below)! Also, check out the “This PC” icon in the Explorer window. Microsoft is catching a lot of heat for the new icons introduced in Win10.

PC SAS on Windows 10 - editor

PC SAS on Windows 10 - proc reg

PC SAS on Windows 10

I’m going to continue to play with PC SAS 9.4 and Enterprise Guide 6.1 as well. I’ll keep you posted.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

Fixing a “Java failed to start during the SAS startup” Error in PC SAS

SASI have many different types of software installed on my PC, and Java is required by the majority of them. This shouldn’t be a problem, but unfortunately each of those applications require different Java versions. Again, this shouldn’t be a problem either, but applications respond differently to the presence of newer (or older) versions that they expect.

After installing and uninstalling various versions of Java while troubleshooting, I started PC SAS 9.3 to work on a project. The first three lines were errors:

Java proxy error

A search of support.sas.com quickly provided an answer in Installation Note 44853. When I installed SAS on my PC, I chose to use an existing version of Java, which was Java 6 Update 26, the organization standard. In subsequent months I installed Version 7 Update 7 and Version 8 Update 25. I intentionally removed Version 6 Update 26 because I knew that my SAS products were compatible with the newer versions. I also wanted to prevent conflicts with other Java-dependent applications on my PC. So much for organization standards.

I submitted proc options option=jreoptions; run; in SAS, and the log showed what I was pointing to Java 6 Update 26 like I expected:

Java version and location

To fix this problem I needed to edit my sasv9.cfg file located at
C:\Program Files\SASHome\x86\SASFoundation\9.3\nls\en\sasv9.cfg. I just needed to change the -Dsas.jre.libjvm line to point to my current version of Java (8 Update 25):sasv9.cfg

There is one more configuration file in the SAS deployment that had to be updated as well. It is the sassw.config in the C:\Program Files\SASHome directory. The JREHOME option needed to point to the new version of Java: C:\Program Files (x86)\Java\jre1.8.0_25\bin\java.exe:


With those changes made to two SAS configuration files, I successfully launched PC SAS without errors:

Launch PC SAS

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

Fix for a [SanitizingRequestFilter] error in the SAS Information Delivery Portal

saslogo.gifI recently deployed the SAS Enterprise Business Intelligence Server on a brand-new AIX LPAR.  During my validation of the platform, I created a new stored process portlet and added it to my home page.  My test portlet then displayed the following error:

Error 500: javax.servlet.ServletException: Filter [SanitizingRequestFilter]: could not be initialized.

Here’s how it looked in the portlet:

9-24-2014 6.43.16 AM

I searched for the error at support.sas.com and found a Problem Note about an error very similar to mine.  This error can arise when SAS BI portlets (the stored process portlet is one of these) are deployed to a WebSphere application server.  During the configuration phase of my deployment, I specified that SAS should automatically deploy the web applications to WebSphere.  Configuration did complete successfully, creating two WebSphere profiles and an application server (SASServer1), and deploying all of the web applications.  An important file for the SAS BI portlets (sas.portlet.container.runtime.extensions.jar) did not get copied to WebSphere, however, and required manual intervention.

The fix is easy enough:

  1. Stop the SASServer1 application server
  2. Using the SAS installer account, copy the sas.portlet.container.runtime.extensions.jar file from the [SASCONFIG-DIR]/Lev1/Web/Staging/Exploded/sas.biportlets4.X.ear/lib directory to the [WEBSPHERE-HOME]/lib directory of the IBM WebSphere Application Server
  3. Start SASServer1

I logged back in to the Information Delivery Portal and my stored process portlet was happy and ready for a stored process:
A happy stored process portlet
Here are a couple of notes from the Problem Note:

  • These manual steps are required because of a limitation in the WebSphere application server
  • In UNIX operating environments, the JAR file must be copied using the same account that is used to install the WebSphere application server

SAS also provided a more time consuming fix which fixes the issue in the Problem Note if someone preferred to use the WebSphere Integrated Solutions Console.

I have run into this issue in versions,, and of WebSphere.  I am running SAS EBI 9.3 Maintenance Release 2 with BI portlets 4.3.  I would also like to note that the steps I listed above were also included in the Instructions.html document located at [SASCONFIG-DIR]/Lev1/Documents directory in my environment.  It is created after a successful installation and configuration of the EBI environment.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

SAS Framework Data Server

SASComparing my SAS 9.2 and 9.3 Enterprise Business Intelligence (EBI) environments, a notable difference between daemons started by the sas.servers script was identified.  In 9.2, we had a SAS Table Server daemon.  It was not available in our 9.1.3 EBI installation, and was released in the 9.2 version.  Apparently SAS removed it from the 9.3 architecture, but a new daemon, the SAS Framework Data Server, was introduced in its place.  There is scant documentation available on support.sas.com about utilizing or administering the Framework Data Server.

What is SAS Table Server?

from the SAS 9.2 Table Server Administrator’s Guide

The SAS Table Server is a data server that provides scalable, threaded, multi-user, and standards-based data access technology in order to process and seamlessly integrate data from multiple data sources. The server acts as a hub that provides clients with data by accessing, managing, and sharing SAS data as well as several third-party relational databases.

What is SAS Framework Data Server?

from the SAS 9.3 Intelligence Platform Middle-Tier Administration Guide

The SAS Framework Data Server is a database server that is the default location for middle-tier data such as alerts, comments, and workflows, as well as data for the SAS Content Server and SAS Service Parts Optimization. The server is provided as an alternative to using a third-party DBMS. The server cannot be used as a general-purpose data store.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

SAS ODS: {thispage} and {lastpage} and PDF Output


When developing new reports, we typically give the end users a choice of output formats to choose from.  The SAS Output Delivery System (ODS) provides a versatile framework to transform the results of SAS procedures into consistent, high quality reports in formats that are widely used by information consumers: HTML (HyperText Markup Language), PDF (Portable Document Format), RTF (Rich Text Format), Microsoft Excel, and others.  The majority of our reports (run as stored processes surfaced in the SAS Information Delivery Portal) contain tabular output, which is generally displayed to a user in HTML format with the option to download that data as a Microsoft Excel spreadsheet.

Some reports are designed to be formatted as a document, and include large amounts of ODS text, tables, and graphs.  We generally use ODS functions such as {thispage}, {pageof}, or {lastpage} to display the page number or number of pages in the document.  When using RTF as our ODS destination, the creation of a Microsoft Word document could not be easier.  We did run into one issue when using the PDF output destination, however.  Due to the configuration of printer drivers on our computer systems, the page numbers were not showing up in our documents, because SAS was unable to determine a default page size and margins.  We contacted SAS Technical Support and they pointed us to SAS Problem Note 31703 as a possible fix.  Tech Support solved our problem – we added the –uprint and –uprintmenuswitch options to our autoexec.sas configuration file and restarted our object spawners and our PDF documents included page numbers!

Want to know more about the SAS Output Delivery System?  Go to the Base SAS ODS Focus Area or download the Output Delivery System Tip Sheet.

Email this to someoneTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on FacebookPrint this page

© 2017 Technoleros

Theme by Anders NorénUp ↑