SAS programs are commonly saved as text files, with a .SAS file extension, to be run
in batch mode. You might also own custom applications that contain SAS code.
PROC MIGRATE does not move SAS programs to the target installation. Instead, you must
use your normal transfer tool, such as an FTP tool.
Below are the few known compatibility issues. Programs that you created
in a previous version of SAS will run correctly in the target SAS deployment when
you make these changes.
Most Recent Compatibility Issues
For changes to default behavior that can cause different results than in previous releases, see these documents. Look for the chapters about product-specific details.
Here are some common compatibility issues to look for in your code.
Backward compatibility of enhancements
If you don't migrate your data to your current SAS release, beware of using any new functionality
in your SAS programs and applications that does not work against the
legacy SAS files.
For example, the DATECOPY option is not supported when you use the
COPY procedure and the XPORT engine to create a Version 6 or 7 file;
and a few new file features
are not supported in prior releases.
For a brief summary of compatibility issues, see the topics that link from
Cross-Release and Cross-Environment File Compatibility, and
refer to SAS documentation for full details.
Catalogs
The behavior of a catalog entry can change in a new release and cause undesired
behavior.
Hardcoded values
Fix any hardcoded values such as pathnames, engine names, values specific to the operating environment,
and so forth.
Pathnames can appear many language elements, for example, SAS options;
LIBNAME, FILENAME, FILE, and INFILE statements; and
FILENAME and PATHNAME functions, to name just a few.
Also look for pathnames in macro variables.
When you use PROC MIGRATE, embedded librefs associated with a
SAS data view are not changed when migrated.
You might choose to specify the engine name in a program to get
version-specific processing, for example, the V6 compatibility engine.
If you alter or update the operating environment, then
any SAS code that directly calls operating environment commands (for example,
manipulating files, printing) must be recoded to the new operating environment's commands.
See your SAS Companion for language elements that are specific to an operating environment.
Macros
Beginning in SAS 9.1, the IN (#) operator is supported in macro expressions. SAS 9.0 and previous
versions did not support it. Because IN and # now have meaning to the
expression evaluator, any time these values appear in an expression context and
are not meant as the IN operator, you must quote the values using either one of the macro
quoting functions or double quotation marks. For example, the expressions
If you take advantage of the multilingual capabilities of SAS,
see information about a few
migration issues
that are a result of SAS enhancements.
Output Delivery System (ODS)
ODS templates in item stores (styles, tagsets, and tables) might not be compatible
from an earlier release. A best practice is to use PROC TEMPLATE to update
the template for the current release. See
a special topic about migrating
ODS templates. The ODS documents item store
is compatible from previous releases if you don't change to a different operating environment.
Starting in SAS 9.1, ODS
generates HTML 4.0 output by default
instead of HTML 3.2 when you issue the ODS HTML statement.
This can be important, for example, when you use the NOTOP argument.
Some formatting specifications have been moved to the cascading style
sheet (CSS). Therefore, if your code includes NOTOP, then you do not
get the CSS formatting unless you specify the HTML 3.2 standards.
If this is an issue, then your choices are to update existing
ODS code to the HTML 4.0 standard,
or to issue the ODS HTML3 statement, or to toggle the registry
entry to HTML3 (which makes it the default).
User-defined names
For every SAS release
since your source installation, see the What's New documentation for
new functions, CALL routines, macros, formats, and informats.
SAS names generally take precedence over user-defined names.
In other words, if your existing SAS code contains a user-defined name,
and that name is identical to a new SAS name, then
you might encounter an error.
z/OS
See also z/OS Compatibility Issues for
additional changes that are specific to the z/OS operating environment.