SAS 8.1 上の長い変数名を含むデータセットをV6.x から処理が可能でしょうか

[OS]ALL
[リリース] 6.x 8.1
[キーワード] VALIDVARNAME, LONGNAME, VARIABLE, UPLOAD, DOWNLOAD, V6 RENGINE, V8 RENGINE

[質問]

リモートマシン(V6)、ローカルマシン(V8)でSAS/CONNECTを使って処理を行っています。
ローカルマシンで「長い変数名」のSASデータセットを作成してしまいましたが、このデータセットをリモートマシン(V6)で処理できるでしょうか。

[回答]

UPLOADプロシジャを使って、ローカルマシンのSASデータセットをリモートマシンにコピーしていただければ可能です。
ただし「VALIDVARNAMEオプション」は「V7」を指定しておく必要があります。

<例>

    OPTIONS VALIDVARNAME = v7 ; /* VALIDVARNAMEオプションは「v7」指定 */
    RSUBMIT ;
       LIBNAME v6lib 'c:\data\v6lib' ;
       PROC UPLOAD INLIB = v8lib  OUTLIB = v6lib ;
       RUN ;
    ENDRSUBMIT ;

リモートマシンのSASライブラリにアップロードされる時、8バイトを超える変数名は全て8バイトで切り捨てられます。8バイトで切り捨てた結果、同じ変数名が発生してしまう場合、最後の桁を「連番」にすることで同じ変数名にならないようにします。

(元の変数名)(アップロード後の変数名)(アップロード後の変数ラベル名)
LONGVARNAME_1LONGVARNLONGVARNAME_1
LONGVARNAME_2LONGVAR2LONGVARNAME_2
LONGVARNAME_3LONGVAR3LONGVARNAME_3
LONGVARNAME_4LONGVAR4LONGVARNAME_4

逆にリモートマシン(V8)、ローカルマシン(V6)の構成で、リモートマシンにある長い変数名のSASデータセットをローカルマシンで処理する場合、DOWNLOADプロシジャを使ってコピーする必要があります。

<例>

    LIBNAME v6lib 'c:\data\v6lib' ;
    RSUBMIT ;
       OPTIONS VALIDVARNAME = v7 ; 
       LIBNAME v8lib 'c:\data\v8lib' ;
       PROC DOWNLOAD INLIB = v8lib  OUTLIB = v6lib ;
       RUN ;
    ENDRSUBMIT ;
8バイトを超える長い変数名は、UPLOADの時と同様に切り捨てが行われます。