FOCUS AREAS

Hot Topics

Related Links

Operating Environment Information

Migration

z/OS Compatibility Issues

For convenience, in this topic "z/OS" also refers to the older OS/390 and MVS mainframe operating systems from IBM.

SAS® 9.2

Additional issues are mentioned in Special Considerations for Customers Upgrading to SAS 9.2.

National Language Support (NLS) Changes and Enhancements

If you take advantage of the multilingual capabilities of SAS, see information about updating substitution characters when the default NONLSCOMPATMODE is in effect.

DISP=MOD Is No Longer Accepted for Direct Access Bound Libraries

Beginning with SAS 9 (and Version 8 hotfix 82BA97 or 81BA52), direct-access bound libraries (BASE engine) may not be allocated with DISP=MOD in JCL (job control language). In SAS 9, customers who specify DISP=MOD must change their JCL code to DISP=NEW or DISP=OLD, as appropriate:

DISP=NEW
is supported when allocating a z/OS data set that does not exist.
DISP=OLD
is supported if the data set already exists.

This is a bug fix that prevents multi-volume direct-access bound libraries from being corrupted. Future design changes might allow DISP=MOD to be supported without the danger of library corruption.

Utility Files for Threaded Procedures

Prior to SAS 9, or in SAS 9 when the NOTHREADS system option is in effect, all procedures use the SAS WORK library for utility file space (that is, temporary storage for the lifetime of the procedure's execution). Beginning with SAS 9, if the system option THREADS is in effect, threaded procedures such as PROC SORT and PROC DMREG use separate temporary data sets for utility file space, typically one per thread of execution. The size and location of the temporary data sets are governed by UTILLOC, a new option that can only be specified at SAS invocation time.

Note that the default value for UTILLOC specifies BLOCK(4096) SPACE(256,2560) which is not an adequate amount of space of the utility files created by PROC DMREG for large data mining jobs. This size may also be inadequate for PROC SORT if the SAS sort utility is being used. Therefore, customers requiring large (especially multivolume) utility files for threaded procedures should discuss the following recommendations with their storage administrators to plan the UTILLOC specification, consulting with SAS Technical Support as needed.

Non-SMS Managed Utility Data Sets

If using temporary data sets that are not SMS (system-managed storage), the most important choices will be the unit name (sometimes called the esoteric name) that corresponds to a group of volumes and the number of volumes (which, along with the primary and secondary allocation size, determines the maximum file size).

In the following example, utility files can span two volumes. With 150 cylinders per extent, and 16 extents per volume, the maximum utility file size is 4800 cylinders.

UTILLOC='ALLOC UNIT(SYSDA) CYL SPACE(150,150) UCOUNT(2)'

SMS Managed Utility Data Sets

If SMS is implemented at the customer installation, the best approach may be to define an SMS data class and storage class for the job's utility files. These SMS definitions can then be referenced in the UTILLOC option as shown in the example below:

UTILLOC='ALLOC UNIT(SYSDA) DATACLAS(DATAMINE) STORCLAS(DATAMINE)
         CYL SPACE(500,500)'

Other Notes

It is also possible to specify a list of utility file locations that can be used in alternating fashion, as shown in the example below. This technique provides a way to distribute the load among multiple physical I/O paths, such as when scratch volumes reside on different DASD controllers.

UTILLOC=('ALLOC UNIT(TEMP1) CYL SPACE(100,100) UCOUNT(6)'
              'ALLOC UNIT(TEMP2) CYL SPACE(100,100) UCOUNT(6)' )
The utility files specified via UTILLOC reside in regular format sequential data sets. Extended format sequential is not currently supported.

Please refer to the z/OS Companion for additional details regarding the UTILLOC system option.

Multiple SAS Sessions in a Single Address Space

SAS 9 does not support execution of multiple SAS sessions in a single address space.

SAS Integration Technology Object Spawner

On z/OS in SAS 9, the Integration Technology object spawner launches Version 9 IOM servers. A hotfix is available to configure Release 8.2 servers so they can also be launched by SAS 9. See the Technical Support document SAS V9 Object Spawner Installation Notes for OS/390 and SAS 8.2 IOM Server.

Spawners

Both the IOM object spawner and the SAS/CONNECT job spawner share a new mechanism for launching child processes, based on the UNIX System Services (USS) spawn function. Sites will need to define a USS shell scripts for use by each of these spawners. An example for the SAS/CONNECT spawner is in the Configuration Guide for SAS for z/OS; an example for the object spawner is in the Integration Technologies Administrator's Guide. The spawners invoke the script to start a USS child process that executes a SAS session. Sites may tailor the script to specify additional configuration options.

For the IOM spawner, the change to use the USS spawn function removes the dependency on using APPC/MVS to start SAS sessions. This simplifies installation. The SAS 9 IOM spawner is already being shipped to sites so they can use it to start their Release 8.2 sessions.

Changed Attributes for Autocall Library

The attributes for the autocall library have changed. In 9.0 and prior releases, the autocall library is fixed blocked (RECFM=FB). In 9.1 the autocall library is variable blocked (RECFM=VB).

Windows

The LIB, CAT, DIR, and VAR windows are now based on the SAS Explorer rather than being standalone windows. So they operate somewhat differently.

Memory Options

If you are migrating from SAS 6 to SAS 9, you are advised to change the way you specify memory size. Starting in Version 8, SAS recommends that you leave the MEMSIZE option set to a default value of 0, and use instead the MEMLEAVE option to tell SAS essentially "use all of the available region except MEMLEAVE." This change was made because prior to Version 8, users had to modify two different memory parameters. Often, when users saw that their jobs needed more memory, they increased the MEMSIZE value but disregarded the REGION on their JOB/STEP card, causing a lot of problems. In SAS 9, after an adequate MEMLEAVE has been determined, increasing the amount of memory available to SAS requires only a change in the REGION size.

TCP/IP Interfaces

SAS 9 provides two TCP/IP interfaces. In addition to the traditional WQ/WQS subsystem, which uses VSOCKET, the new TKTCP extension is a bit lighter-weight for threaded processing. Customers need to be aware of configuration issues with TKTCP, and that documentation is forthcoming.

New Entry Point Names

To support architectural changes in SAS 9, the names of the three primary entry points have been changed. The change is in name only, not functionality. Here are the three primary entry points that invoke a SAS application task:

V9 Entry Point Name V8 Entry Point Invoked Comment
SAS SASHOST This is the unbundled V8 entry point loaded from the STEPLIB.
SASB SASXA1 This is the bundled V8 entry point loaded from the STEPLIB.
SASLPA SASXAL This is the bundled V8 entry point typically loaded from the LPA.

It is important to note that the Version 8 entry point names do not execute correctly if they are invoked directly, outside the TK environment created by the SAS 9 entry points. If you have JCL, CLISTs, or programs that invoke SAS directly, you must change them to specify one of the SAS 9 entry point names.

Return Codes

SAS 9 returns the same basic set of documented return codes and abend codes as in Version 8. In Version 8, these return/abend codes were returned directly to either the batch initiator task or to the SAS TSO command processor (SASCP). In SAS 9, the codes are returned instead to the new SAS 9 entry point programs which created them (SAS/SASB/SASLPA). The return/abend codes are processed by the SAS 9 entry point programs as follows:

V8 SAS Return Codes V9 Code Passed to Operating Environment or SASCP
System abend codes USER 998 abend / reason code = SAS abend code
User abend codes SAS abend code
All other SAS return codes SAS return code (unmodified)

Processing of Version 8 return codes in JCL or elsewhere is not affected by the changes to SAS 9 return codes, since normal return codes are passed through unmodified to the operating environment. Any system dumps taken in response to a system or user abend in the SAS application task will reflect the original abend, not the U998. The U998 abend is intended to indicate that the invoking application ended abnormally as specified in the reason code and to ensure that job processing does not continue past the abending step.

Note that since SAS 9 is a dubbed Unix System Services task, SEC6 abends may occur when a USS callable service terminates abnormally. When CPU time is exceeded, an SEC6 abend with reason code Fx1D is now generated instead of an S322 abend as in earlier releases.

SAS/AF Software

As of Version 8, SAS/AF no longer supports the ability to build FRAME applications under z/OS. One workaround is to build the application on another operating environment and then move it to the z/OS. Keep in mind that the application can only use objects that are available to display on z/OS.

See also a note about SAS/AF software compatibility across all operating environments.

Help System Is Improved Under SAS 9.1

For SAS 9.1, the new Remote Help delivery system will be the default help system under z/OS. Remote Help enables the SAS user to direct the help files to a Web browser on a Windows PC. This enables SAS to provide HTML features that are similar to those available in the SAS OnlineDoc product under other operating environments.

Prior to SAS 9.1, the help system was considered inadequate by many users. The proprietary Web browser only recognized simple HTML structures and very few of the graphics or tables found in the OnlineDoc product, thus limiting the delivery of information.

Enabling Remote Help

If you want to use the Remote Help system, you must have a Java Application Server available. The Java Application Server runs the middle-ware component of the help system (Webdoc) and delivers the help to the client PC. The help files are rendered natively by the PC browser. All of the components (including a small application called the SAS Remote Help Browser Server) are installed with an Install Shield program. The Remote Help options are HELPBROWSER, HELPHOST, HELPPORT, and HELPADDR. Following installation, help requests from the SAS Help system are displayed in HTML pages on the client PC browser.

Itemstore-Based Help Is Still Available

For an existing custom SAS application, you might want to maintain documentation in the legacy itemstore format, or for some other reason want to use the old itemstore Help. It is available by setting the SAS option HELPBROWSER=SAS.

Do Not Specify MVSOPTB2, PRIODISP, or SYNCHIO

Do not use options MVSOPTB2, PRIODISP, or SYNCHIO with the SAS/SHARE server in Version 8 and later. These options cause different, and possibly incorrect, behavior. They can also cause tasking problems with submit blocks not executing correctly or hanging in SAS/AF software. Either remove the options or specify NOMVSOPTB2, NOPRIODISP, NOSYNCHIO.

Recommended Reading