| Moving and Accessing SAS Files across Operating Environments |
For all hosts, the most common error and
warning messages with recovery actions are presented here. For host-specific
messages, see the appropriate operating environment chapter.
The primary cause for this message is that you are attempting
to use PROC CIMPORT to move a transport
file that was created in Version 7 to a host that is running Version 6. You
cannot move a transport file from a Version 7 SAS session on a source host
to a Version 6 SAS session on a target host.
Another possibility is that either a file was transported
in some format other than BINARY or the attributes of the transport file changed
while in transit to the target host.
See Verifying Transfer Format and Transport File Attributes
for recovery actions.
An alternative cause is that your site may use a translation
table other than the default. A customized translation table is set with the
TRANTAB= system option. See SAS Language Reference: Dictionary for details about setting the TRANTAB=
system option. Verify the value of the TRANTAB= system option:
proc options option=trantab;
run;
If you discover that your site is using an alternative
translation table, you must restore the option to its default value.
options trantab=( );
Then create the transport file again, transfer it to
the target host, and import the file at the target host.
Another possible explanation applies to a source host
that runs SAS Release 6.12 and a target host that imports the file at the
target host that runs SAS Release 6.10. Data set sort features (set through
the SORTEDBY= data set option) are included in the Release 6.12 CPORT procedure
but not in the Release 6.08 CIMPORT procedure.
Use either of two options to recover from this problem:
The SORTEDBY= data set option information is included
in Release 6.12 PROC CPORT.
You see this message when you attempt to create a
transport
file for a catalog or catalog entry by using PROC COPY with the XPORT engine.
Instead, you must use PROC CPORT to create a transport file for a catalog
or catalog entry and use PROC CIMPORT to import them at the target host.
This message is displayed at the target host when PROC CIMPORT
contains a CATALOG= destination member and the source host used PROC CPORT
with the LIBRARY= destination member. The target host must use either the
DATA= or LIBRARY= member type. Here is an example:
proc cport file=in libname=out;
proc cimport infile=in catalog=new;
Because the PROC CPORT LIBNAME= option specifies a destination
member of type LIBRARY, the PROC CIMPORT must also specify either a LIBNAME=
or DATA= option.
In order to select only a catalog entry type from an
imported library, specify the ET= option in PROC CIMPORT. To exclude a catalog
entry type, use the EET= option. Here are examples:
proc cimport infile=in library=new et=program memtype=catalog;
proc cimport infile=in library=new eet=program memtype=catalog;
In the first example, only catalog entries of type PROGRAM are imported.
In the second example, only catalog entries of type PROGRAM are excluded.
MEMTYPE=CATALOG restricts the import to catalogs only.
You typically see this message when using the CIMPORT
procedure to import a data set at the target host. There are two possible
explanations.
The transport file that you are trying to import by
using PROC CIMPORT may have been created by using the XPORT engine with either
the COPY procedure or the DATA step. Read the beginning of the file to determine
how the transport file was created. If the XPORT engine created the transport
file, the beginning of the file contains this text:
HEADER RECORD*******LIBRARY HEADER RECORD!!!!!!!00
If the CPORT procedure created the transport file, the
beginning of that file contains this text:
**COMPRESSED** **COMPRESSED** **COMPRESSED** **COM
Note:
If you set the NOCOMPRESS option in PROC CPORT,
compression is suppressed, which prevents the display of the preceding text
in a transport file.
If incompatible methods were used to create and then
import the transport file, then use the correct method to import the transport
file.
Another possible explanation is that your site may use
a translation table other than the default. For recovery actions for this
problem, see Bad Transport File.
Transporting this catalog entry type between hosts and across
SAS releases is not supported.
Because you cannot retrieve the definitions from the
module itself, you can try to move the SAS statements that defined the entry
type (such as IML modules) to the target host and then re-create the modules.
You see this message when you attempt to use
PROC CPORT to move
a catalog entry from Version 7 back to Version 6. Version 7 does not support
the backward compatibility of this catalog entry.
This message appears
when you use the XPORT engine with
PROC COPY to move a data set on a Version 7 source host whose name exceeds
eight characters to a Version 6 library. Here is an explicit example of such
a message:
ERROR: The file OUT.THIS_IS_LONG_NAMED_DATA.DATA
has too long a member name for the XPORT engine.
The member name
THIS_IS_LONG_NAMED_DATA exceeds the eight-character member name length,
which is enforced by the Version 5 feature set in which the XPORT engine was
introduced.
The VALIDVARNAME SAS system option and the assigned
value of V6, which enables automatic truncation of long variable names, does
not support member names. To recover, copy the member to another member whose
name does not exceed 8 characters and retry the transport operation.
This message appears when using PROC COPY to
move a data
set on a Version 7 source host whose name exceeds 8 characters to a Version
6 library. Here is an explicit example of such a message:
ERROR: The file V6LIBMYDATABASE.DATA
has too long a member name for the V6 engine.
The Version 7 data set name
MYDATABASE exceeds the maximum member name length of 8 that is supported
in Version 6. Version 6 interprets the data set name
MYDATABASE as containing 10 characters, which
exceeds its maximum length of 8.
The VALIDVARNAME SAS system option and the assigned
value of V6, which enables automatic truncation of long variable names, does
not support member names. To recover, rename the member or copy it to another
member whose name does not exceed 8 characters and retry the transport operation.
This message typically alerts you to a file corruption.
The likely explanation is that your site's communications software inserted
carriage returns into the transport file.
At the target host, you can use a host-specific utility
(such as the UNIX hexadecimal dump utility
xd) to view the transport file in hexadecimal format to determine if
carriage returns were inserted. See the UNIX
xd(1) manual page for details. As another example, for OS/390, use
the SPF 1 command for browsing, select a data set, and enter
hex on in the command line.
Hexadecimal Representation of a Transport File
shows an example of a transport file that contains a carriage return character
(0D) and a line feed character (OA) toward the end of the first record. See
the 0D and 0A hex values in the first two positions of the last line.
Hexadecimal Representation of a Transport File
48 45 41 44 45 52 20 52 45 43 4F 52 44 2A 2A 2A HEADER R ECORD***
2A 2A 2A 2A 4C 49 42 52 41 52 59 20 48 45 41 44 ****LIBR ARY HEAD
45 52 20 52 45 43 4F 52 44 21 21 21 21 21 21 21 ER RECOR D!!!!!
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 00000000 000000
30 30 30 30 30 30 30 30 30 30 30 30 30 30 20 20 00000000 0000
0D 0A 53 41 53 20 20 20 20 20 53 41 53 20 20 20 ...SAS SAS
If you do not see carriage return or line feed characters,
another form of corruption that is not immediately apparent may have occurred.
To test this possibility, at the target host, create another transport file
from a member of the same type and then view its hexadecimal representation.
Compare the appearance of the assumed uncorrupted file that you just created
with the suspected corrupted file that you are trying to import. A visual
comparison may prove that the transport file that you are trying to import
is indeed corrupt. In this case, re-create the transport file at the source
host, transfer it, and import it at the target host.
At the source host, determine whether the transport
file's attributes include carriage returns. For information about listing
and correcting file attributes, see the appropriate operating environment
chapter.
At the source host, transfer the transport file to the
target host again.
If you are still unable to import a transport file that
has the correct file attributes, you may try using the re-blocking program
in Reblocking a Transport File.
See Bad Transport File
for recovery actions.
This message typically appears because either a file
was transported in some format other than BINARY or the attributes of the
transport file changed while in transit to the target host.
See Verifying Transfer Format and Transport File Attributes
for recovery actions.
This message typically appears because either a file was transported
in some format other than BINARY or the attributes of the transport file changed
while in transit to the target host.
See Verifying Transfer Format and Transport File Attributes
for recovery actions.
This message typically appears because either a file
was transported in some format other than BINARY or the attributes of the
transport file changed while in transit to the target host.
See Verifying Transfer Format and Transport File Attributes
for recovery actions.
Another possible explanation applies to a Release 6.12
SAS session on a source host and a Release 6.08 SAS session on a target host.
Data set sort features (specified by using the SORTEDBY= data set option)
are included in the Release 6.12 CPORT procedure but not in the Release 6.08
CIMPORT procedure.
Use either of two options to recover from this problem:
The SORTEDBY= data set option information is included
in Release 6.12 PROC CPORT.
This warning message is displayed at the target host
when PROC CIMPORT contains a DATA= destination member and the source host
used PROC CPORT with the LIBRARY= destination member. Although, the target
host successfully imports only one data set, the message indicates that other
members are contained in the library that can also be imported. Here is an
example:
proc cport file=in library=out;
proc cimport infile=in data=new;
In order to expand the import operation to include the
entire contents of destination library, specify the LIBRARY= option rather
than the DATA= option in PROC CIMPORT.
This message is typically displayed when you use the
XPORT engine to create a Version 7 PROC SQL view in transport format in a
Version 6 library. However, you can use the XPORT engine to create an SQL
table.
To recover, transport the data set that contains the
SQL table to the target host and re-create the PROC SQL view there.
This message indicates a failure to move a library from
a Version 7 source host to a library on a Version 6 target host because of
cross-version incompatibilities. For example, Version 7 features such as generations
data sets and integrity constraints are not supported.
To recover, you must remove Version 7 features from
the library or the member to be moved to the library on the Version 6 host
and retry the transport operation. Preceding notes in the log can hint at
the offending Version 7 feature that is not supported. Here is an example:
NOTE: Integrity constraint mc defined.
You can infer from this message that Version 6 does
not support integrity constraints.
For tips on how to remove Version 7 features, see the
recovery actions for these messages: File library.member.DATA has too long a member name for the V6 engine and Variable name XXXXXXXXX is illegal for file Version-6-data-set .
This message typically appears because either a file was transported
in some format other than BINARY or the attributes of the transport file changed
in transit to the target host.
See Verifying Transfer Format and Transport File Attributes
for recovery actions.
This message can indicate that the transport file was
moved to a virtual disk or shared disk with other operating environments such
as DOS, Macintosh, or UNIX. For recovery actions, see the appropriate operating
environment chapter.
This message appears when a host attempts to update a file
whose format is foreign to that of the accessing host. Use PROC CONTENTS on
the file to verify the file's data representation. A data represention of
FOREIGN proves that the formats of the file and the accessing host are incompatible.
This message appears when you attempt to use PROC COPY
with the XPORT engine to create a transport file for a utility file, such
as an MDDB. The XPORT engine does not support utility files.
This message appears when using PROC
CIMPORT to move
a Version 7 data set that contains long variable names to a Version 6 data
set. Here is an explicit example of such a message:
ERROR: The variable name Region_Of_The_Country
is illegal for file V6LIB.CITY.DATA.
The Version 7 variable name
Region_Of_The_Country exceeds the maximum variable name length of 8
that is supported in Version 6. To recover, in the SAS session on the local
host, set the VALIDVARNAME SAS system option to V6 to enable automatic truncation
of long variable names. Retry the transport operation. Here is an example
of setting this variable:
options validvarname=v6;
In
this example,
Region_Of_The_Country truncates to
Region_O However, if the data set contains multiple variables whose first 8
characters conflict, Version 7 uses a truncation algorithm that ensures uniquely
truncated variable names. For details, see Regressing SAS Data Sets from Version 7 to Version 6 Format.
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.