DB2からの変数名を任意の変数名に変更する [OS]MVS
[リリース] 6.07, 6.08, 6.09E
[キーワード] access, db2, descriptor, variable, name, rename, view
[質問]バッチ形式またはプログラムでDB2のACCESSビューを作成するとき、ASSIGN=YESを指定するとSASが自動的に変数名を決めてしまいますが、これを任意の変数名で作成できますか。 [回答]
SASは、ACCESSディスクリプタ作成時に以下に示すルールに基づき自動的に変数名を決定します。 例: COMPANYNAME --> COMPANYN上記で作成した変数名が他の変数名と同じ場合、8文字のうち下2文字を0からの通し番号にします。 例: COMPNAME1 --> COMPNAME COMPNAME2 --> COMPNAM0 COMPNAME3 --> COMPNAM1 . . COMPNAME11 --> COMPNAM9 COMPNAME12 --> COMPNA10SASのネーミングルールに反する文字(#など)が変数名に使用されている場合、その文字を「_」に置き換えます。 例: COMP#NM → COMP_NM
変数名には上記のルールが適用されるため、このルールをふまえた上でプログラムを作成する必要があります。 proc access dbms=db2; create xxxx.xxxx.access; /* ライブラリ参照名.accessディスクリプタ名 */ table=xxxxx.xxxxx; /* DB2テーブル名 */ assign=yes; rename vardb2=varsas 'var#db2'=varsas2 .........; /* rename DB2側変数名=SAS側変数名 */ create xxxx.xxxx.view; /* ライブラリ参照名.viewディスクリプタ名 */ select vardb2 'var#db2' ........; subset where vardb2='key1' .....; run; quit;
RENAMEステートメント使用時には、次の点に注意してください。
VIEWディスクリプタ作成時のSELECTおよびSUBSET WHEREステートメントでは、DB2テーブルの変数名を記述します。 [参考]
|