ビジネス・インテリジェンス[BI] のリーディング・カンパニー | SAS Japan SAS Japan
「THE POWER TO KNOW(知る力)」を提供するビジネス・インテリジェンス[BI]のリーディング・カンパニー | SAS Japan  トレーニング マニュアル ユーザー事例 パートナー ユーザー会 求人情報 資料請求・ダウンロード
Home News Products & Solutions Events & Seminer Customer Support Company www.sas.com
 

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データセットとして作成してください。
追加処理はFILEステートメントとPUTステートメントで指定します。特にINFILEステートメントのFEEDBACKオプションに注意してください。
この例では、CODEの値が000030のレコードをVSAMファイルに追加するとエラー(重複レコード)になり、RCには8が入ります。

  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 : 該当のレコードは存在しない。

[参考]

  • 「SAS Guide to VSAM Processing, Version 6, First Edition」(注文番号 56042)

The Power to Know
   Contact Us     Terms of Use & Legal Information     Privacy Statement     個人情報の取り扱いについて   Copyright © 2008 SAS Institute Inc. All Rights Reserved