キー順データ・セットをロードするときには、KEYED SEQUENTIAL OUTPUT 用の 関連ファイルをオープンする必要があります。レコードは昇順のキー順で提示しなければならず、KEYFROM オプションを使用しなければなりません。
キー順データ・セットにすでにレコードがあって、SEQUENTIAL 属性と OUTPUT 属性をもつ関連ファイル をオープンする場合は、データ・セットの末尾のみにレコードを追加することができます。この場合も、レコードは昇順のキー順で提示しなければならず、KEYFROM オプションを使用する必要があります。さらに、提示する最初のレコードのキーは、データ・セット上に存在する 最高位のキーより大きくなければなりません。
図 20 は、ワークステーション VSAM キー順データ・セットをロードするプログラムの例です。PL/I プログラムでは、WRITE...FROM...KEYFROM ステートメント で KEYED SEQUENTIAL OUTPUT ファイルが使用されます。データは、昇順のキー順で提示されます。キー順データ・セットはこの方法でロードしなければなりません。
/********************************************************************/
/* */
/* DESCRIPTION */
/* Load an ISAM keyed data set. */
/* */
/* */
/* USAGE */
/* The following commands are required to establish */
/* the environment variables to run this program: */
/* */
/* SET DD:DIREC=ISAM2.OUT,AMTHD(ISAM) */
/* SET DD:SYSIN=ISAM2.INP,RECSIZE(80) */
/* */
/********************************************************************/
NAMELD: proc options(main);
dcl Direc file record keyed sequential output
env(organization(indexed)
recsize(23)
keyloc(1)
keylength(20)
);
dcl Eof bit(1) init('0'b);
dcl 1 IoArea,
5 Name char(20),
5 Number char(3);
on endfile(sysin) Eof = '1'b;
open file(Direc);
get file(sysin) edit(Name,Number) (a(20),a(3));
do while (¬Eof);
write file(Direc) from(IoArea) keyfrom(Name);
get file(sysin) edit(Name,Number) (a(20),a(3));
end;
close file(Direc);
end NAMELD;
The input file for this program could be: ACTION,G. 162 BAKER,R. 152 BRAMLEY,O.H. 248 CHEESMAN,D. 141 CORY,G. 336 ELLIOTT,D. 875 FIGGINS,S. 413 HARVEY,C.D.W. 205 HASTINGS,G.M. 391 KENDALL,J.G. 294 LANCASTER,W.R. 624 MILES,R. 233 NEWMAN,M.W. 450 PITT,W.H. 515 ROLF,D.E. 114 SHEERS,C.D. 241 SURCLIFFE,M. 472 TAYLOR,G.C. 407 WILTON,L.W. 404 WINSTONE,E.M. 307