TS-667
Changes to be aware of from V6.09 to V8.0 and above on MVS (Expanded Version)
RETURN CODE of 4 is now set for macro warnings (SAS Note 0246 )
If you run a macro in Version 6 and a warning is generated the
return code is set to zero. This is incorrect behavior. A return
code of zero means execution completed successfully and without
warning messages. A return code of 4 should be set for warnings.
In Version 7 the problem has been corrected, and now the return
code is set to 4 if a warning occurred.
Various BLKSIZE(device-type) values obsolete (SAS Note 1137 )
In Version 7 of the SAS System and beyond, specifying the BLKSIZE
(device-type) option with device-type of TAPE, 3590, 3480 or 6250
causes the following message to be written to the SAS Log:
WARNING 31-12: The SAS option BLKSIZE(xxxx) is obsolete.
(where xxxx is one of the above device-types)
BLKSIZE(TAPE), BLKSIZE(3590), BLKSIZE(3480), BLKSIZE(6250) are all
obsolete in Version 7. The values were honored Version 6 to support the
FILEBLKSIZE(device-type) option, since FILEBLKSIZE and BLKSIZE shared
the same structures and code. Beginning in Version 7, this is no longer
the case.
The macro statement %KEYDEF is obsolete (SAS Note 1733 )
Due to internal code changes within the SAS System, starting with
Version 7 %KEYDEF will no longer be available. No error message is
issued but the function key's value does not change when assigned a new
value with %KEYDEF. Starting in Version 8 a note is generated that
states:
Note: %KEYDEF is obsolete in this version of the SAS System.
The following note is also generated:
Note: Fx set to "command".
This note is incorrect since the function key was not set. This note
will be removed starting in release 8.2.
Key definitions can be modified by using the KEYS window or by using a
DM statement with the KEYDEF command. For example, to set SHIFT F2 to
clear the active window, issue the following statement.
DM "KEYDEF 'SHF F2' CLEAR";
PROC DB2EXT does not support SSID= option starting in Version 8 (SAS Note 1805 )
Starting in Version 8, PROC DB2EXT no longer supports the SSID=
option. You must specify the DB2 subsystem that you want to connect
to by setting the SAS system option DB2SSID=.
For example, valid Release 6.09E syntax:
proc db2ext ssid=db2p out=sas_ds;
select * from db2_table;
run;
converted to Version 8 syntax becomes:
options db2ssid=db2p;
proc db2ext out=sas_ds;
select * from db2_table;
run;
Compatibility: Warning message that generated a RC=0 in Version 6 returns RC=4
in Version 8 (SAS Note 2427 )
The following warning messages are generated when date values are
specified for the ORDER= option on an AXIS statement that is associated
with the horizontal axis of a graph produced by the GPLOT procedure:
WARNING: The intervals on the axis labeled date are not evenly spaced.
WARNING: No Minor tick marks will be drawn because major tick
increments have been specified in uneven or unordered
intervals.
The above warning messages generate a return code of zero (RC=0) in a
batch job run under Version 6, but generate a return code of 4 (RC=4) in
a batch job run under Version 8.
To circumvent the problem, specify the NOGRAPHRC graphics option on the
GOPTIONS statement to force a return code of zero.
Obsolete System Options: (Reference SAS Note 2595 )
Beginning with Version 7, the following SAS system options are
obsolete:
CODEPASS= CODEPCT= LU0MODE= LU0SEC=
If you specify any of these options in your CONFIG file, you receive
the following message in your JES output:
OPTION IN CONFIG FILE IS NOT SUPPORTED IN THIS VERSION
The change in status of these system options is documented in V8
online documentation: OS/390 Environment(Companion), SAS Language
Elements, System Options.
Take Memsize= option out of all programs: (Reference SAS Note 2596 )
Memory management and possible "Out of Memory" messages in Version 8
For the SAS System running on OS/390, memory management is handled
very differently in releases after 6.09E. Neither Version 7 nor
Version 8 specify the MEMSIZE system option in either the BATCH or TSO
members of the CNTL data set.
If MEMSIZE= is specified by the user and the value is greater than the
value of the job's REGION= parameter, the memory recovery routines may
not run and the SAS session may run out of memory. To minimize
out-of-memory conditions, it is recommended that you not specify a
value for MEMSIZE=. Instead, control memory usage by setting your
REGION= parameter and use an appropriate value for the MEMLEAVE=
system option.
Beginning in Version 7, SAS calculates the value of the MEMSIZE=
option using the formula below:
value_of_MEMSIZE = size_of_user_REGION - value_of_MEMLEAVE
The MEMSIZE= option sets a hard limit on the amount of memory used by
the SAS System. The MEMLEAVE= option limits SAS memory usage relative
to the user's available REGION. In Version 8 the default value for
MEMLEAVE is 512K. SAS Institute recommends that you let MEMLEAVE
default to 512K and let SAS determine the value of MEMSIZE= based on
available REGION and on the value of MEMLEAVE=.
Please refer to the Version 8 Online Documentation for further
information on Memory Management. In addition, see SAS Note 1676
for related information.
ERROR 7-12: STIMER/NOSTIMER Option is valid only at invocation of the SAS System
(SAS Note 2615 )
Running the test job, SASTSD.MAINT8.TSM0.TESTS(TESTAPPD), returns a
step condition code of 8 in the JES Log. The SAS Log produces the
following:
ERROR 7-12: Option is valid only at invocation of the SAS system.
Option is ignored.
This job has NOSTIMER coded on an OPTIONS statement. This was valid
in Version 6. In Version 8, STIMER|NOSTIMER is only valid as part of
the configuration file or at SAS invocation.
Messages which generate different return codes in Version 8 (SAS Note 2624 )
These messages all receive RC=0 in Version 6 and RC=4 in Version
7 and beyond.
Message:
WARNING: Apparent symbolic reference not resolved.
Explanation:
This message is issued when a macro variable is used but has not
been defined. All macro variable references should be properly
defined if used.
Message:
WARNING: Argument n to function %function is missing or out of range.
Explanation:
This message is issued when an argument for a macro function is not
properly used. For example, the %SUBSTR macro function has 3
arguments: the first argument is the string, the second argument is
the starting position within argument 1, and the third argument is
the length to extract. The starting position (argument 2) plus the
length (argument 3) must be contained within the string (argument
1).
DROP/KEEP in PROC step causes problems (SAS Note 2649 )
Beginning in Version 7 of the SAS System, using a DROP or KEEP
statement in a PROC step generates the following message:
WARNING: THE DROP AND KEEP STATEMENTS ARE NOT SUPPORTED
IN PROCEDURE STEPS IN THIS RELEASE OF THE
SAS SYSTEM. THEREFORE, THESE STATEMENTS
ARE IGNORED.
However the PROC terminates with an ERROR condition code (i.e.
&SYSCC=3000, &SYSERR=3000, step condition code RC=8).
To correct this problem, Version 8 OS/390 sites should apply the zap
referenced by Z8002649. Release 8.1 OS/390 sites should apply the zap
referenced by Z8012649.
This problem is corrected in Release 8.2 TSLEVEL 2M0.
PROBSIG= option no longer supported. (SAS Note 2666 )
The PROBSIG= option is no longer supported. A syntax error is not
printed if you use the PROBSIG= option on an OPTIONS statement, but the
option has no effect on the output of any procedure.
If you wish to display p-values in a format different from the default,
then use the ODS OUTPUT statement to write the p-value variable to an
output data set and then use PROC PRINT with a FORMAT statement to
change the printed value. Alternatively, you can use PROC TEMPLATE to
define the format for printing p-values. This can be done generally by
modifying the common p-value template, or by procedure or by table
within a procedure.
Determining the order of variables within a SAS data set (SAS Note 2676 )
In Version 6 of the SAS System, the position of variables on a SAS data
set is determined by the order in which they are encountered regardless
of their type or length. In order to improve performance, Version 7 and
beyond of the SAS System positions 8 byte and 4 byte numeric variables
at 8 byte boundaries at the front of a SAS data set. Character variables
are placed next in the order in which they are encountered, followed by
all other numeric variables in the order in which they were encountered.
The position of the variable can be viewed in PROC CONTENTS output in
the POS column or the NPOS variable when an output data set is created
via the OUT= option.
Although the physical position of variables on the data set may be
different, the logical order of variables has not changed. The logical
order of variables can be viewed in PROC CONTENTS output in the '#'
column or the VARNUM variable when an output data set is created via the
OUT= option.
Additionally, the 'Observation Length' reported by PROC CONTENTS in
Version 7 and beyond may be larger than the same data set created by
Version 6. This occurs because each observation is padded so that each
subsequent observation starts at the beginning of an 8 byte boundary in
the newer releases.
For example, consider the following code and partial output it produces
in Version 6.
data one;
length x 6 y 4;
s=3;
a='a';
x=1;
y=5;
run;
proc contents;
run;
-----Alphabetic List of Variables and Attributes-----
# Variable Type Len Pos
-----------------------------------
4 A Char 1 18
3 S Num 8 10
1 X Num 6 0
2 Y Num 4 6
Additionally, the observation length is reported as 19 bytes. Below is
the comparable output from Version 8, which reports the observation
length as 24 bytes.
-----Alphabetic List of Variables and Attributes-----
# Variable Type Len Pos
-----------------------------------
4 a Char 1 12
3 s Num 8 0
1 x Num 6 13
2 y Num 4 8
Due to the change in the algorithm determining physical position, the
POSITION option on PROC CONTENTS has been replaced by the more
descriptive VARNUM option. The POSITION option still produces output
ordered by the logical position of variables on the data set, but it is
no longer documented.
Attempting to write or copy catalogs to a V6 library is not allowed
(SAS Note 3138 )
Version 6 catalogs are accessible in read only mode in Version 8.
Attempts to write or copy catalogs to a V6 library generate the
following error:
ERROR: Unable to open catalog LIBREF.CATALOG for write access.
Engine V6 does not support write access.
Version 6 catalogs can be converted to Version 8 catalogs by using
either PROC CPORT or PROC COPY. When PROC COPY is used to convert
this catalog to version 8 format, the catalog is still in Version
6 format until a Version 8 entry is written it to this catalog.
This restriction is amended in release 8.1. Format entries can be
written to a Version 6 catalog beginning in 8.1. The error message above
will still occur for all entry types other than FORMAT, FORMATC, INFMT,
and INFMTC.
SEQENGINE= system option no longer supports values in the form SASVnSEQ
(SAS Note 3529 )
Beginning in Version 8 of the SAS System, the SEQENGINE system option
no longer supports values in the form SASVnSEQ (where n is greater
than 7).
Beginning with Release 8.1 TSLEVEL 1M0, the default value for the
SEQENGINE= option is TAPE.
Please note that page 21 of "What's New in SAS Software for Release
8.1" does not specify that SEQENGINE=SASVnSEQ is not supported if the
value of n is greater than 7.
ERROR: Invalid option value 0 for SAS option PAGENO= (SAS Note 3593 )
The PAGENO= system option specifies a beginning page number for the
next page of output that SAS produces. In Version 6, zero (0) is
accepted as a valid value. In Version 8, the minimum accepted value
is one (1).
If you specify PAGENO=0 in batch session, you get the following error:
ERROR: Invalid option value 0 for SAS option PAGENO.
If you specify PAGENO=0 in an interactive session, you get:
ERROR 18-12: Option value for SAS option PAGENO must be between 1
and 2147483647.
! in SAS Log indicates wrapped source line (SAS Note 3799 )
In Version 8, an exclamation point ("!") in the SAS Log indicates
that the preceding source line was wrapped. The following code:
OPTIONS S=72 LS=64;
DATA _NULL_;
X='THIS SEMICOLON IS IN COLUMN 72 =================================>';
RUN;
demonstrates the wrapping behavior.
This feature was added to allow customers to easily identify source
lines that are wrapped when echoed to the SAS Log.
COMPRESS=ON not supported in Version 8 (SAS Note 3887 )
The valid values for the COMPRESS= option are YES, NO, CHAR, and
BINARY. YES and CHAR are equivalent. Beginning in Release 8.2, ON is
also an alias for YES or CHAR.
Unable to execute multiple SELECT statements in Version 7 and Version 8 of the
SAS System (SAS Note 4321 )
In Version 7 and beyond of the SAS System, you can no longer execute
multiple SELECT statements within PROC SQL Passthough. You were able to
do this in Version 6. An example of a statement that will fail in
Version 7 and Version 8 is:
create table work.temp as
select *
from connection to sybase
( select * into #syso from sysobjects where type='U'
select * from #syso o, syscolumns c
where o.id=c.id
);
You will receive:
ERROR: Error in result set.
The problem has been corrected in a fix on the SAS Technical Support
website at support.sas.com/techsup/download/maint/access/sybase/SOL2/8.10
The instructions for installing the correction are located in the
readme.into file on the website.
XTENDLIB Statement no longer recommended (SAS Note G030 )
The XTENDLIB statement was introduced in Release 6.08 of the SAS System
as an experimental (i.e. unsupported) feature to logically combine
multiple data sets to form a single SAS data library. There have been
no fixes applied to this feature since its introduction. Since Version
7 addresses the multivolume SAS library requirements that were the
reason for developing XTENDLIB, Technical Support no longer recommends
the use of the XTENDLIB statement. Furthermore, XTENDLIB is not
available in Version 7 of the SAS System.
SASIO Multivolume issues:
Below is a list of SASIO problems that are being worked on from Defect S0116095.
Lewis King the SASIO developer is working with IBM on redesigning how SAS
extends libraries.
This will be fixed in 9 and a hotfix will be available for 8.2 and 8.1.
-----------------------------------------------------------------------------
SAS doesn't tolerate skipping volumes. This problem has been reported in the
field and at SAS.
B37-04
Refer to SAS Note 4916
Exploit 3rd Party Space Management Tools (STOPX37 and SRS) for SAS data
libraries
ERROR: Write to xxxx.xxxx.xxxx failed. File is full and may be damaged.
The ZAP currently available to honor the RLSE subparameter for release 8.0 and
8.1 only addresses the problem in the case that the unit count is 1
no error the unused space will not be released
Refer to SAS Note 2674
Multivolume external allocation with DISP=NEW is closed via LIBNAME CLEAR and
then extended further will cause problems when adding space
ERROR: SAS data library xxxxxxxxxx not found on volume xxxxxx
Refer to SAS Note 5004
B37-4 abends can occur when extending a library and insufficient space is on the
current last volume of the data set. SAS intercepts the abend and handles it
properly, but the message still appears on the log.
B37-4 error will not show up after fix
Refer to SAS Note 895
Will avoid an apparent IBM bug in which job step de-allocation gets confused and
deletes the SAS data library instead of cataloging it.
Dataset will be deleted instead of kept
Still getting error documented in SAS NOTE 2881 even with the ZAP on and not
using Guaranteed Space.
Expecting page NNN, got page -1 instead.
Page validation error while reading LIBREF.DATASET.DATA
File LIBREF.DATASET.DATA is damaged.
I/O processing did not complete.
u315 and u318
Refer to SAS Note 2881
Avoid the situation in which an interactive user can free the external
allocation out from under the library and cause a failure in the vsopenj call in
vcapcls for the PACB DCB.
S0C4 abend at the time the libref was cleared. If there was not an explicit
LIBNAME ... CLEAR statement, I would expect the abend to occur during SAS
termination.
Avoid situations in which DS1IND80 bit (last volume indicator) is turned on in
the case of an abend for the volumes other than the last volume of the data
library.
The problem resulting from this situation will be the likely failure of an
attempt to copy, back-up, or migrate the library data set while it is in this
state. Most utilities respect the DS1IND80 flag and would consider the data
library as ending on the 1st volume. The copy, back-up, or migration operation
would not fail, but an attempt to use the copy or the restored image of the data
set would result in either a U317 or U318 abend because the copy was in fact
truncated. Two facts ameliorate this situation, however:
a) This state of the DS1IND80 flags was normal for multi-volume libraries in V6,
and customer sites may have instituted procedures to ensure that all volumes are
copied.
b) Whenever the library is opened by SAS V8 or higher with DISP=OLD (and
RACF write permissions), the DS1IND80 flags will be correctly set when the
library is closed by SAS.
SAS is not recognizing the multiplier in the AVGREC parameter which allows users
to indicate BLKSIZE is the record length and primary and secondary are the
number of records.
Example:
// SPACE=(1,(100,50)),AVGREC=M
The first subparm of the SPACE parm is specified as 1, but it really should
specify the blocksize, which is SAS-determined. If SAS was recognizing AVGREC,
a secondary extent would be 50MB but instead you'll get 7 tracks which is
around 0.38MB.
Refer to SAS Note 4229
If bad DS1LSTAR, embedded EOF might be written when extending the library.
U315
User EXIT incorrectly checked before I/O to direct access bound libraries.
No errors, the only cost is the wasted overhead of invoking the exit.
If for any reason a library gets corrupted and you run a V7CHECK against it, the
V7CHECK will blow up.
User Completion Code=1210
-----------------------------------------------------------------------------
Current Timeframe as of 6/19/01
Milestone Target Date for Completion
--------- --------------------------
Additional Research 05/16/01
Coding 06/05/01
Debugging & Basic Validation 06/25/01
Exhaustive Testing at V9 07/13/01
Adapt the changes to 8.1 07/17/01
Basic validation at 8.1 07/20/01
Hot fix installed image at 8.1 07/27/01
Exhaustive Testing at 8.1 08/03/01
Hot fix available for download 08/06/01
Links for Changes and Enhancements:
You can also view SAS Version 8 , 8.1 and 8.2 for any new changes or
enhancements to the products you have licensed. I have also included a link for
Version 6 to Version 8: A Peaceful Coexistence. Look in Appendix 1 of this
document for Conversion Gothca's.
http://support.sas.com/documentation/onlinedoc/v8/whatsnew/