お返事ありがとうございます。ご指摘の通り物理FにKEYがないのは古くからの名残のようです。基本設計が20年以上前の基幹システムなので、クラッシュ&ビルドが早急に必要で今回のVB.NETでの開発もそれの足がかりなのです。UNIQUEキーは殆どの場合論理ファイルの1番目(FILEL01)に設定されていることが分かっています。しかしVBでFILEL01を指定しても実行段階で「物理ファイルでない」というエラーになってしまいます。よって物理Fにキー設定が必要なのだと思っています。Iシリーズナビゲータで索引の追加は可能で論理Fとして作成されます。しかしPRIMARY_KEYはALTER TABLEで通常追加できると思いますが、実行してもエラーになりますしマニュアルを読んでもADDはありません。なぜかDROPはあります。http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/db2/rbafzmstatabl.htmキーの設定に関係なくレコードbヘ自動的に振られていますが、これをPRIMARY_KEYには出来ないのでしょうか?物理Fの再作成しか道はないように思えてきました。
「VBでFILEL01を指定しても実行段階で「物理ファイルでない」というエラー」とありますが、そのエラー・メッセージID 等の詳細はわかりますでしょうか ?確かに SQL や ODBC の場合、物理ファイルと論理ファイルは明確に区別されますがi5/OS では基本的に論理ファイルを更新することが可能ですのでSQL での制約があったとしても 基本的には論理ファイルからの更新もできるはずです。レコードbヘ DB2/400 では RRN (=レコード番号) というものでレコードの中の項目とは定義されていませんので出力用の項目とすることはできますが、キーとすることはできません。物理ファイルの再作成はリスクをかなり伴います。複数メンバーの場合や物理ファイルのサイズが拡張されていることもあり、また従属論理ファイルがどのような構成されているかを慎重に調べる必要があります。何より関連するプログラムへの影響も考慮しなければなりません。レイアウトやデータに変更がなくても、ファイルが LVLCHK=*YES で再作成されれば、たちまちプログラムからのアクセスは OS によって拒否されてしまいます。
QDDSSRCをキー付きに変える。CHGPFをする。うまくいけば、データはそのまま、論理ファイルもそののまま。レベル識別も引き継ぐ。