Quoted SQL IN-statement in SAS

Below is code that produces a quoted string from a column in a dataset. This can be used in an IN-statement in SQL.

SAS “behind the scenes”

Below is a description of very useful options in SAS, if you want a look “behind the scenes” and see what SAS actually does when processing data.

fullstimer The SAS System provides the FULLSTIMER option to collect performance statistics on each SAS step, and for the job as a whole and place them in the SAS log. It is important to note that the FULLSTIMER measures only give you a snapshot view of performance at the step and job level.
sastrace=(,,,d) Generates trace information from a DBMS engine.

‘,,,d’ specifies that all SQL statements that are sent to the DBMS are sent to the log. Here are the applicable statements:
SELECT
DELETE
CREATE
SYSTEM
CATALOG
DROP
COMMIT
INSERT
ROLLBACK
UPDATE
For engines that do not generate SQL statements, API calls and all parameters are sent to the log.

sastraceloc=saslog Prints SASTRACE information to a specified location.
In this case the log in SAS.
mprint Specifies whether SAS statements generated by macro execution are traced for debugging.
source2 Specifies whether SAS writes secondary source statements from included files to the SAS log.

SOURCE2 specifies to write to the SAS log secondary source statements from files that have been included by %INCLUDE statements.

nostsuffix The NOSTSUFFIX system option suppresses printing or display of trailing SASTRACE information and makes the SASTRACE log easier to read.

Getting first megabytes of large file

You can use the DOS-command TYPE and MORE to get the first megabytes or gigabytes of a large file e.g. of TXT, XML, CSV etc.
This is done by piping the result into another file, there by getting only the first part of the file piped into the new file.

The DOS-command below will start piping the large file into the smaller new file.

You are not able to see the result from the DOS-command. You need to press the SPACE-key on your keyboard, because every time you press the SPACE-key a new page of the file will be showed and thereby piped into the SMALL_DESTINATION_FILE.
When you think you have done this enough times, then you have to press CTRL-C on your keyboard, this will terminate the type-command and you will have the SMALL_DESTINATION_FILE containing data from the LARGE_SOURCE_FILE.

Be aware that you will get the — more — pipe text in the file!

SQL-statement to find lowest observation in dataset

The SAS SQL-statement below will create a dataset containing all information for the observation with the lowest age in the dataset SASHELP.CLASS.

The syntax for the SAS SQL-statement is showed below.

As you see the <FUNCTION> doesn’t have to be min (minimum), it can be any function working on the type of <COLUMN TO SEARCH> – numeric or char.

Enterprise Password Managers

Below is a list of enterprise password managers

https://www.vaultproject.io/
HashiCorp Vault secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets in modern computing. Vault handles leasing, key revocation, key rolling, and auditing. Through a unified API, users can access an encrypted Key/Value store and network encryption-as-a-service, or generate AWS IAM/STS credentials, SQL/NoSQL databases, X.509 certificates, SSH credentials, and more.

https://teampass.net/
eamPass is a Passwords Manager dedicated for managing passwords in a collaborative way by sharing them among team members.
Teampass offers a large set of features permitting to manage your passwords and related data in an organized way in respect to the access rights defined for each users.
Teampass is an Open-Source free to use product distributed in respect with OpenSource GNU GPL-3.0.

Info about SAS-datasets in the WORK-library

In SAS Enterprise Guide it is not very easy to see the size and number of observations in datasets in the WORK-library.

The macro below looks in the DICTIONARY.TABLES and gets these info for the WORK-library. Be aware that it will not work for views, because it’s not doing and actual count of the SAS-datasets.

 

Microsoft Team Foundation Server (TFS) and SAS

Below is shown how you can extract the current Microsoft Team Foundation Server (TFS) revision number for a given file into SAS and use it in your SAS program.

Be aware that Visual Studio 13 is used in the example below. It is uncertain if newer versions of Visual Studio will work.

You can now use the three diffent macrovariables called tfsver1, tfsver2 and tfsver3 in your program.

Microsoft Visual Studio Team Foundation Server 2013 Power Tools might be needed.
https://marketplace.visualstudio.com/items?itemName=TFSPowerToolsTeam.MicrosoftVisualStudioTeamFoundationServer2013Power

You might also want to have a look at this blogpost regarding SVN.

Automatically analyzing and documenting SAS-code

In SAS Enterprise Guide and SAS-DI you have the possibility to analyze the code for a SAS-program.

The picture below shows the Analyze Program option in SAS Enterprise Guide.

Analyzing the code should result in a conversion of the SAS-code to a SAS Enterprise Guide flow or SAS-DI flow. But none of these code analyzers are very good. Depending on the complexity of the SAS-code you put into the analyzer, they will leave you with a more or less successful conversion. And more times than not they will fail at doing the job.

But SAS comes with a procedure PROC SCAPROC that does a really good job at analyzing and documenting SAS-code.

Below is an example.

The links below gives you further descriptions of PROC SCAPROC and its options. There’s also a guide on how to do a graphical presentation of the result fra PROC SCAPROC.

Overview of the SCAPROC Procedure
http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a003199745.htm

Program for parsing the output from PROC SCAPROC to create a data set with inputs and outputs.
http://support.sas.com/kb/58/047.html

Innovative Performance Improvements Through Automated Flowcharts In SAS
http://support.sas.com/resources/papers/proceedings16/11580-2016.pdf

Automatically create diagrams showing the structure and performance of your SAS code
http://support.sas.com/resources/papers/proceedings17/1104-2017.pdf