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;
[参考]
|