SAS Software Files

Overview of SAS Software Files

Configuration files (described in Configuration Files) and SASUSER files (described in SASUSER Library) are only two of several SAS software files that are automatically identified to your session by either the SAS CLIST or SASRX exec (under TSO) or the SAS cataloged procedure (in batch). This section describes several other SAS software files that are significant to SAS users under z/OS.
For brief descriptions of all the SAS software files that are frequently used by the SAS CLIST, the SASRX exec, or by the SAS cataloged procedure, see SAS Software Files.

WORK Library and Other Utility Files

Overview of the Work Library

The WORK library is a special-purpose SAS library that contains temporary files, including certain types of utility files that are created by SAS as part of processing the current SAS session or job. The WORK library is also the default location for one-level member names and user settings. One-level member names are member names that are specified without a libref. They reside in the WORK library unless a USER library has been identified. For more information about USER libraries, see USER Library. In a single-user SAS session or job, if the SASUSER library is not assigned, then the WORK library also houses temporary user settings in files, such as the PROFILE catalog and the SAS registry item store.
In a single-user SAS session or job, the WORK library is typically created at the beginning of a SAS session or job and deleted at the end. Multi-user SAS servers also create a WORK library (referred to as a client WORK library) for each client that connects to the server. Client WORK libraries contain the temporary files created as part of the processing done by the server on behalf of the client. The server creates a distinct client WORK library for each client so that files used by one client are not commingled with files belonging to another client. These libraries are created when the client establishes a connection with the server, and they exist until the client disconnects.
The WORK library is always processed by the BASE engine, which requires that you must use one of the following library implementation types for WORK: The advantages of each of these library implementation types for use with the WORK library are detailed in the following topics, along with usage notes. For information about each type of library, see Library Implementation Types for Base and Sequential Engines.
Note: For multi-user SAS servers, each client WORK library that is created has the same implementation type as the WORK library for the SAS server that is specified at server initialization.

Direct Access Bound Library

Assigning a direct access bound library for the WORK library is generally the best choice for single-user SAS sessions or jobs. At most installations, the default WORK library allocation provided by the SASRX exec, SAS CLIST, or JCL procedure is appropriate for a wide class of jobs. Users can usually increase the allocation to provide additional space without assistance from a systems administrator.
Direct access bound libraries have a maximum size to which they can grow. If the WORK library becomes full, an attempt to create or extend a member will fail, which usually results in a message similar to this one:
ERROR: Write to WORK <member>.<type> failed. File is full and might be damaged.
In most cases, SAS processing cannot succeed if the WORK library becomes full. However, allocating an excessive amount of space for the WORK library ties up disk space that could be used by other jobs. Therefore, some advance planning is often necessary for large SAS jobs to ensure that the appropriate amount of space is allocated to the WORK library. Often, the best way to determine whether you have enough space is to run the SAS job or session to perform a typical processing job, and then measure the amount of WORK library space that the job uses. You can measure the required space by including the following statement at the end of your job:
proc datasets lib=work; quit; run;
In the information that is listed for the library directory, the statistic "Highest Formatted Block" represents the largest number of blocks in simultaneous use at any time during the SAS session. Divide this statistic by the "Blocks per Track" statistic to convert it to the maximum number of disk tracks required for the WORK library during this session. Using this information, you can derive the primary and secondary space allocation for the WORK library data set with the following method:
  1. Select a primary allocation that is approximately equivalent to the minimum expected space utilization.
  2. Select a secondary allocation that enables sufficient growth up to the maximum expected space utilization.
For more information, see General Guidelines.
Note:
  • Some SAS procedures write utility files to the WORK library only if the NOTHREADS system option has been specified. Therefore, a smaller amount of WORK library space might be required if you specify THREADS.
  • For processing performed by a multi-user SAS server, the libref WORK refers to the client WORK library only in certain contexts, such as in SAS code submitted for execution by the server. See the documentation for the specific SAS server to determine how to access the client WORK library.
  • Allocating the WORK library data set to VIO (virtual I/O) can avoid physical I/O and thus decrease the elapsed time required for a SAS job to run. Therefore, VIO is often preferable to actual disc devices, especially for jobs with modest WORK space requirements. To use VIO, a particular UNIT name typically must be specified with the SASRX exec, SAS CLIST, or JCL procedure. For assistance, contact your z/OS systems administrator. For a list of restrictions for using VIO, see Consider Designating Temporary SAS Libraries as Virtual I/O Data Sets. If you are using a SAS CLIST, a SASRX exec, or JCL procedure to invoke SAS, contact your systems administrator for information about how to control the allocation of the DDNAME WORK.
The size of the WORK library for a single-user SAS session or job is controlled by the space parameters that you specify on the allocation of the DDNAME WORK. For the WORK option that you use to specify the primary and secondary space allocations for WORK, see Starting SAS with SASRX. For information about controlling the size of the client WORK library when WORK resides in a direct access bound library, see CLIENTWORK System Option: z/OS.

UFS Library

Placing the WORK library in a UFS directory eliminates the need to specify the amount of space that is allocated to the WORK library (including client WORK libraries). This feature is particularly valuable for multi-user SAS servers because the space requirements for individual client WORK libraries might vary widely and be difficult to predict. When you place your WORK library in a UFS directory, each WORK library uses only the space it actually needs for the files that are created. This space is drawn from a large pool. A pool consists of the free space available in the UFS file system in which the directory is located.
To use UFS libraries, follow these guidelines:
  • Specify the path to the directory in which the WORK library (or libraries) will reside with the SAS system option WORK, as shown in the following example:
    WORK="/tmp"
    Each WORK library (or client WORK library) will reside in a subdirectory within the UFS directory that you specify with the WORK option. These subdirectories are created automatically as they are needed.
    SAS recommends that the specified UFS path correspond to a directory, such as /tmp, that has its sticky bit turned on. When the sticky bit is on for a directory, directories that are contained within that directory can be removed only by one of the following users:
    • the owner of the directory
    • the owner of the directory that is being deleted
    • a superuser.
    This setting enables multiple SAS users to place temporary directories in the same location without the risk of accidentally deleting each other's files.
  • If necessary, specify the SAS system option WORKTERM to remove the WORK library subdirectories and their contents when they are no longer needed. For more information about using WORKTERM, see WORKTERM System Option: z/OS.
  • Avoid allocating the DDNAME WORK (if possible), or allocate the minimum amount of space, because the data set allocated to the DDNAME WORK is not used when a UFS path is specified for the WORK option.
For more information about UFS, see HFS, UFS, and zFS Terminology.

Hiperspace Library

Hiperspace libraries reside in memory, so they can be used to avoid I/O for WORK library processing. Using a hiperspace library reduces the elapsed time that is required for SAS processing that uses the WORK library. In a multi-user SAS server environment, the space for all client WORK libraries is drawn from a single pool for the server that is shared by all of the clients that are using the server. This pool provides more flexibility in space allocation than when you use direct access bound libraries.
Note: Some installations might place limits on hiperspace use. Consequently, using hiperspace for WORK might be more appropriate for SAS jobs or servers with modest WORK space requirements. Contact your systems administrator for information about hiperspace limitations.
To use hiperspace libraries, follow these guidelines:
  • Specify the SAS system option HSWORK System Option: z/OS.
  • Avoid allocating the DDNAME WORK (if possible), or allocate the minimum amount of space, because the data set allocated to the DDNAME WORK is not used when HSWORK is specified.
  • Specify the SAS system option NOHSSAVE to avoid I/O unless you are using DIV libraries, which require updates to be committed immediately.
  • Specify values that provide sufficient total space for the entire SAS job or server for the following SAS system options:

USER Library

You can identify a permanent library in which SAS will store members specified with one-level names (that is, without a libref). This feature can be useful for applications that require a default location for SAS files that is permanent or that exists beyond the end of the current SAS session.
To use a USER library, follow these guidelines:

Utility Files That Do Not Reside in WORK

In SAS®9, some SAS procedures create a new type of utility file that does not reside in WORK but rather in a location specified via the UTILLOC system option. In some cases, these utility files are created only if the THREADS system option is set to a nonzero value. These utility files, which provide certain performance benefits, can reside in one of two different types of locations on z/OS:
temporary z/OS data set
Each utility file resides in a separate, temporary, sequential data set on disk (or VIO) that has a system-generated name that is allocated by a system-generated DDNAME. The amount of disk space available to each utility file is specified by an ALLOC command, which is specified as the value of the UTILLOC option. Specify the UCOUNT keyword to allow these files to reside in multi-volume data sets.
UFS file
Each utility file is a UFS file residing in a temporary directory subordinate to the UFS path specified for the UTILLOC option.
For more information about the UTILLOC system option and the UCOUNT keyword, see UTILLOC= System Option: z/OS.

SAS Log File

Overview of the SAS Log File

The SAS log file is a temporary physical file that has a ddname of SASLOG in the SAS cataloged procedure, the SAS CLIST, and the SASRX exec. In batch mode, the SAS cataloged procedure assigns default data control block (DCB) characteristics to this file as follows:
BLKSIZE=141
LRECL=137
RECFM=VBA
Under TSO, either interactively or noninteractively, the SASLOG file is routed to the terminal by default. In the windowing environment, the SAS log is directed to the Log window.
For more information about the SAS log and about how to route output in a batch job, see Types of SAS Output.

Changing the Contents of the SAS Log

The particular information that appears in the SAS log depends on the settings of several SAS system options. For more information, see Collecting Performance Statistics.
In addition, the following portable system options affect the contents of the SAS log:
CPUID
controls whether CPU information is printed at the beginning of the SAS log.
DETAILS
specifies whether to include additional information when files are listed in a SAS library.
ECHOAUTO
controls whether the SAS source statements in the autoexec file are written (echoed) to the SAS log.
MLOGIC
controls whether macro trace information is written to the SAS log when macros are executed.
MPRINT
controls whether SAS statements that are generated by macros are displayed.
MSGLEVEL
controls the level of messages that are displayed.
NEWS=
specifies an external file that contains messages to be written to the SAS log when SAS software is initialized. Typically, the file contains information such as news items about the system.
NOTES
controls whether NOTES are printed in the log. NOTES is the default setting for all methods of running SAS. Do not specify NONOTES unless your SAS program is completely debugged.
OPLIST
specifies whether options given at SAS invocation are written to the SAS log.
PAGESIZE=
specifies the number of lines that compose a page of SAS output.
PRINTMSGLIST
controls whether extended lists of messages are printed.
SOURCE
controls whether SAS source statements are written to the log. NOSOURCE is the default setting for SAS interactive line mode. Otherwise, SOURCE is the default.
SOURCE2
controls whether secondary source statements from files that are included by %INCLUDE statements are written to the SAS log.
SYMBOLGEN
controls whether the macro processor displays the results of resolving macro references.

Changing the Appearance of the SAS Log

The following portable system options are used to change the appearance of the SAS log:
DATE
controls whether the date and time, based on when the SAS job or session began, are written at the top of each page of the SAS log and of any print file that SAS software creates. Use NODATE to suppress printing of the date and time.
LINESIZE=
specifies the line size (printer line width) for the SAS log and the SAS procedure output file. LS= is an alias for this option. LINESIZE= values can range from 64 through 256.
NUMBER
controls whether the log pages are numbered. NUMBER is the default. Use the NONUMBER option to suppress page numbers.
OVP
controls whether lines in SAS output are overprinted.

SAS Procedure Output File

Overview of the SAS Procedure Output File

Whenever a SAS program executes a PROC step that produces printed output, SAS sends the output to the procedure output file. Under TSO, either interactively or noninteractively, the procedure output file is routed to the terminal by default. In the windowing environment, output is directed to the Output window.
In batch mode, the SAS procedure output file is identified in the cataloged procedure by the ddname SASLIST. Unless you specify otherwise, SAS writes most procedure output to this file. (A few procedures, such as the OPTIONS procedure, route output directly to the SAS log by default.) PUT statement output might also be directed to this file by a FILE statement that uses the fileref PRINT. (PRINT is a special fileref that can be specified in the FILE statement.)
The following DCB characteristics of the procedure output file are controlled by the cataloged procedure, typically with the following values:
BLKSIZE=264
LRECL=260
RECFM=VBA
The SAS procedure output file is often called the print file. However, any data set that contains carriage-control information (identified by a trailing A as part of the RECFM= specification) can be called a print file.

Changing the Appearance of Procedure Output

The following portable system options are used to change the appearance of procedure output:
CENTER
controls whether the printed results are centered or left-aligned on the procedure output page. CENTER is the default; NOCENTER specifies left alignment.
DATE
controls whether the date and time, based on when the SAS job or session began, are written at the top of each page of the SAS log and of any print file that SAS software creates. Use NODATE to suppress printing of the date and time.
LINESIZE=
specifies the line size (printer line width) for the SAS log and the SAS procedure output file. LS= is an alias for this option. LINESIZE= values can range from 64 through 256.
NUMBER
controls whether the page number is printed on the first title line of each SAS printed output page. NUMBER is the default. Use the NONUMBER option to suppress page numbers.
PAGENO=
specifies a beginning page number for the next page of output that SAS software produces.
PAGESIZE=
specifies how many lines to print on each page of SAS output. PS= is an alias for this option. In the windowing environment or in an interactive line mode session, the PAGESIZE= option defaults to the terminal screen size, if this information is available from the operating environment. PAGESIZE= values can range from 15 through 500.

Console Log File

The SAS console log file is a physical file that is automatically allocated at the start of SAS initialization. The console log file records log messages generated when the regular SAS log is either unavailable or is not yet initialized. You can control the appearance of the console log file with the LINESIZE= system option only. The SAS CLIST, the SASRX exec, and cataloged procedures allocate this file using the ddname SASCLOG.

Parmcards File

The parmcards file is a temporary physical file that is identified by the ddname SASPARM. It is created automatically by the SAS cataloged procedure and by the SAS CLIST or SASRX exec. SAS uses the parmcards file for internal processing. Lines that follow a PARMCARDS statement in a PROC step are first written to the parmcards file. Then they are read into the procedure. The PARMCARDS statement is used in the BMDP and EXPLODE procedures.

TKMVSENV File

A TKMVSENV file is created at install time. You can use the ddname TKMVSENV with SAS procedures, the SASRX exec, and CLISTs to point to the file. The file must be a sequential file or a member of a PDS with a record format of fixed blocked.
The TKMVSENV file is used to make a list of pseudo environment variables, which are available to SAS Scalable Architecture applications. For more information about SAS Scalable Architecture, see SAS(R) Scalable Performance Data Server(R) 4.53: User's Guide and SAS Scalable Performance Data Engine: Reference. Environment variables are supported for your SAS administrator to use to tailor applications that use SAS Scalable Architecture. Some environment variables are used by SAS Technical Support to investigate problems that are reported by users.
Each record in the TKMVSENV file must contain a single command: SET or RESET. The RESET command clears all previously set environment variables. The SET name=value command enables you to create the variable name and assign it the value value.
Each command must begin in column 1 of the record. No blank spaces are permitted in the name=value specification on the SET command, except when the value can be enclosed in quotation marks. Some variables have a Boolean effect. These variables are turned on when they are defined and turned off when they are not defined. Such variables do not need to have a value and can be defined by using the SET name= command.
You can include comments after the command specification by adding one or more blank spaces between the command specification and the comment. SAS 9.2 enables you to comment out entire records, as well as add comments after a command specification. Any record that has an asterisk in column 1 will be ignored, and the entire record will be treated as a comment.
set DISABLESASIPV6=
This Boolean variable disables support for TCP/IP IPv6 on z/OS.
set TCPIPMCH=xxxxxxxx
This option specifies the IBM TCP/IP stack name to set the stack affinity for z/OS systems that are running more than one TCP/IP stack.
set TCPRSLV=IBM | SASC
This option sets the TCP/IP DNS resolver to either the IBM DNS Resolver or to the SAS/C DNS Resolver. By default, SAS uses the IBM DNS Resolver unless the DISABLESASIPV6 option has been set.
set TKOPT_CWD=path
This option causes the current working directory to be set to path for the SAS session. If the pathname is nonexistent or invalid, no action is taken. The path can be absolute or relative.
set TKOPT_ENV_UTILLOC=<path>
When specified in the TKMVSENV file for a SAS session or a SAS server, this option specifies the fully qualified pathname of a UFS directory to contain temporary files that are created by SAS before the completion of SAS initialization. When specified for a SAS object spawner, this option specifies the fully qualified pathname of a UFS directory to contain any temporary files that are created by the spawner.
set TKOPT_LPANAME=xxxxxxxx
This option specifies the name of the SAS application entry point invoked by the SASLPA main entry point. If the installation placed the LPA resident module in an LPA with a name other than SASXAL, the user needs to specify the same name for the TKOPT_LPANAME option value.
set TKOPT_NOHFS=
This Boolean variable is provided for those sites that are unable to provide basic UFS file system resources to SAS. If this option is specified, then the SAS Scalable Architecture interface takes the following action when a UFS file open is requested:
  • If the file open request is an INPUT open request, the file is treated as an empty file. No UFS files are opened.
  • If the file open request is an OUTPUT open request, a SYSOUT data set is allocated with a ddname of TKHFSnnn, where nnn is a unique number that is increased throughout the session. The first record in the SYSOUT data set contains the pathname of the UFS file actually requested. The remaining records contains the data intended for the named UFS file.
For more information about HFS and UFS, see HFS, UFS, and zFS Terminology.
set TKOPT_SVCNO=nnnset TKOPT_SVCR15=nn
These variables tell the SAS Scalable Architecture interface how the SAS SVC is installed at the user site. This information is necessary because the SAS Scalable Architecture interface might need to use some of the SVC services independently of the SAS application. These variables should be specified with the same values as the SAS options of the same name.
set TKOPT_UMASK=nnn
This option specifies the UNIX umask to apply to this session. This mask is applied to any UFS files created and operates as a standard UNIX umask. nnn must be exactly three octal digits between 0 and 7.
For more details about the environment variables that are supported and their recommended values, see the following sources.
SAS References
Type of environment variables
Reference
SAS Installation
Configuration Guide – SAS® 9.3 for z/OS
SAS Troubleshooting
SAS Technical Support
Configuring for the Java Platform
Configuration Guide – SAS® 9.3 for z/OS

Summary Table of SAS Software Files

SAS Software Files lists all of the SAS software files that are frequently used in the SAS CLIST, the SASRX exec, or in the SAS cataloged procedure. In the CLIST, SASRX, and cataloged procedure, logical names are associated with physical files. The logical names listed in the table are those that are used by the standard SAS CLIST, SASRX, or cataloged procedure. Your installation might have changed these names.
The system option column in the table lists the SAS system options that you can pass into the SAS CLIST or SASRX (using the OPTIONS operand) or into the SAS cataloged procedure (using the OPTIONS parameter) when you invoke SAS. You can use these system options to change the defaults that were established by the CLIST, SASRX, or by the cataloged procedure. For more information, see Specifying or Changing System Option Settings.
SAS Software Files
Default Logical Name
Purpose
System Option
CLIST Operands
Type of OS Data Set
CONFIG
system configuration file
CONFIG= ddname
DDCONFIG(ddname)
sequential data set or PDS member
Description: contains system options that are processed automatically when you invoke SAS. The system configuration file is usually maintained by your data center.
CONFIG
user configuration file
CONFIG= ddname
CONFIG(dsn)
DDCONFIG(ddname)
sequential data set or PDS member
Description: also contains system options that are processed automatically when you invoke SAS. Your user configuration file is concatenated to the system configuration file.
LIBRARY
format library
not applicable
not applicable
SAS library
Description: contains formats and informats.
SAMPSIO
sample SAS library
not applicable
not applicable
SAS library
Description: is the SAS library that is accessed by SAS programs in the sample library provided by SAS Institute.
SASnnnnn
command processor file
not applicable
not applicable
sequential data set or PDS member
Description: is used by the SASCP command in the SAS CLIST or the SASRX exec.
SASAUTOS
system autocall library
not applicable
MAUTS(dsn)
PDS
Description: contains source for SAS macros that were written by your data center or provided by SAS Institute.
SASAUTOS
user autocall library
SASAUTOS= specification1
SASAUTOS(dsn) DDSASAUT(ddname)
PDS
Description: contains a user-defined autocall library to which the system autocall library is concatenated.
SASCLOG
console log
not applicable
not applicable
sequential data set or PDS member
Description: SAS console log file.
SASEXEC
autoexec file
AUTOEXEC= ddname
AUTOEXEC(dsn) DDAUTOEX(ddname)
sequential data set or PDS member
Description: contains statements that are executed automatically when you invoke SAS.
SASHELP
HELP library
SASHELP= ddname
SASHELP(dsn) DDSASHLP(ddname)
SAS library
Description: contains system default catalogs and Help system information.
SASLIB
format library (V5)
SASLIB= ddname
not applicable
load library
Description: a load library that contains user-written procedures and functions or Version 5 formats and informats. It is searched before the SAS software load library.
SASLIST
procedure output file
PRINT= ddname
PRINT(dsn) DDPRINT(ddname)
sequential data set or PDS member
Description: contains SAS procedure output.
SASLOG
log file
LOG= ddname
LOG(dsn) DDLOG(ddname)
sequential data set or PDS member
Description: SAS log file.
SASMSG
system message file
SASMSG= ddname
SASMSG(dsn) DDSASMSG(ddname)
PDS
Description: contains SAS software messages.
SASPARM
parmcards file
PARMCARD= ddname
PARMCARD(size) DDPARMCD(ddname)
sequential data set or PDS member
Description: a temporary data set that is used by some procedures. The PARMCARD= system option assigns a ddname to the parmcards file; the PARMCARD CLIST or SASRX operand specifies the file size. You can use the DDPARMCD operand to specify an alternate name for the parmcards file via the CLIST or SASRX.
SASSNAP
SNAP dump file
not applicable
not applicable
sequential data set or PDS member
Description: SNAP output from dump taken during abend recovery.
SASSWKnn
sort work files
DYNALLOC SORTWKDD= SORTWKNO=
not applicable
sequential
Description: temporary files that are used by the host sort utility when sorting large amounts of data.
SASUSER
SASUSER library
SASUSER= ddname
SASUSER(dsn) DDSASUSR(ddname)
SAS library
Description: contains the user profile catalog and other personal catalogs.
STEPLIB
STEPLIB library
not applicable
LOAD(dsn) SASLOAD(dsn)
load library
Description: a load library that contains SAS procedure and user-written load modules. (Allocate with a STEPLIB DD statement in a batch job.)
SYSIN
primary input file
SYSIN= ddname
INPUT(dsn) DDSYSIN(ddname)
sequential data set or PDS member
Description: contains SAS statements. The primary input file can be specified with the INPUT operand under TSO, or allocated with a DD statement in a batch job.
TKMVSENV
TKMVSENV file
not applicable
not applicable
sequential data set or PDS member
Description: contains a list of pseudo environment variables that are available to SAS Scalable Architecture applications.
USER
USER library
USER= ddname | dsn
not applicable
SAS library
Description: specifies a SAS library in which to store SAS data sets that have one-level names (instead of storing them in the WORK library).
WORK
WORK library
WORK= ddname
DDWORK(ddname)
SAS library
Description: contains temporary SAS files that are created by SAS software during your session.
1SASAUTOS: specification can be a fileref, a partitioned data set name enclosed in quotation marks, or a series of file specifications enclosed in parentheses.