VSAMファイル(KSDS)の更新方法
[OS]MVS
[リリース] 5.18, 6.07, 6.08, 6.09E
[キーワード] base, datastep, vsam, ksds, infile, file, put, feedback, key=
[質問]VSAMファイル(KSDS)にレコードを追加、変更、削除するには、DATAステップをどのようにコーディングすればよいでしょうか。
[回答]
レコードの追加処理について説明します。更新しようとするレコード情報は事前にSASデータセットとして作成してください。
data update;
input @1 code $char6. @10 name $char15.
@25 sex $1. @27 birth nengo7. @35 busho $char3.;
cards;
....*....1....*....2....*....3....*....4....*....5..
000030 SAKURADA YOUKO F S251115 D50
000040 TAHARA YOSHI M S261115 D50
000050 YAMAZAKI HIROMIF S271115 D50
;
run;
data _null_;
set update;
infile in vsam key=code feedback=rc;
file in vsam;
put @1 code $char6. @10 name $char15.
@25 sex $1. @27 birth nengo7. @35 busho $char3.;
if rc=8 then do;
_error_=0;
rc=0;
file log;
put 'ERROR: KEY=' CODE ' のレコードは既に存在しています。';
return;
end;
run;
(更新後のVSAMファイルの内容) ....*....1....*....2....*....3....*....4....*....5.. 000010 YAMADA ICHIRO M S380814 A00 000020 SAKAI KEIKO F S440304 A10 000030 YAMAMOTO SAN M S410511 B00 000040 TAHARA YOSHI M S261115 D50 000050 YAMAZAKI HIROMIF S271115 D50 変更、削除はINFILEステートメントのFEEDBACKオプションをもとに対応してください。
4 : VSAMファイルの終了レコードになったかあるいは実際に存在するキーより大きい
値を指定した。
8 : 該当のレコードは既に存在する。
12 : レコードキーは範囲外である。
16 : 該当のレコードは存在しない。
[参考]
|
|