VSAMファイル(KSDS)のアクセス方法
[OS]MVS
[リリース] 5.18, 6.07, 6.08, 6.09E
[キーワード] base, datastep, vsam, ksds, access, infile, file, put, feedback, key=
[質問]SASからVSAMファイル(KSDS)にアクセスできますか。
[回答]可能です。VSAMファイルを処理するには、まずSASシステムオプションで以下のいずれかを指定します。
次に処理する外部ファイルがVSAMファイルであることを示すために、FILEステートメントまたはINFILEステートメントでVSAMオプションを指定します。 ●順次検索の場合
options vsamread;
data a;
infile 'xxx.xxx.xxx' vsam;
input @6 code $5. @11 name $20.;
run;
proc print data=a;
run;
●キーによる直接検索の場合
options vsamread;
data keys;
input keyval $5. @@;
cards;
00001 00002 00003
;
data a;
set keys;
klen=5; /* キーの長さをセット*/
infile 'xxx.xxx.xxx' vsam key=keyval
keylen=klen feedback=rc;
input @6 code $5. @11 name $20.;
if rc=16 then put 'Not found' +2 keyval=;
run;
proc print data=a; run;
●データ追加の場合
options vsamupdate;
data keys;
input keyval $5. @6 name $20.;
cards;
00001Taro Yamada
00002Hanako Tanaka
00003Ichiro Sato
;
data _null_;
set keys;
infile 'xxx.xxx.xxx' vsam keypos=pos
feedback=rc;
input @pos code $5. @11 name $20.;
file 'xxx.xxx.xxx' vsam;
put @pos code $5. @11 name $20.;
if rc=8 then do;
file log;
put 'Key Duplicate' +2 code=;
end;
run;
※新規ファイルにデータを追加する場合、INFILEステートメントは不要となります。 ●データ更新の場合
options vsamupdate;
data _null_;
keyval='00001';
klen=5;
infile 'xxx.xxx.xxx' vsam key=keyval
keylen=klen keypos=pos
feedback=rc;
input @pos code $5. @11 name $20.;
if rc=16 then do;
file log;
put 'Not found' +2 keyval=;
end;
else do;
name='Jiro Sasaki';
file 'xxx.xxx.xxx' vsam;
put @pos keyval $5. @11 name $20.;
end;
stop;
run;
[参考]
|
|