Rational Developer for System z
PL/I for Windows, Version 7.6, プログラミング・ガイド

ワークステーション VSAM キー順データ・セットのロード

キー順データ・セットをロードするときには、KEYED SEQUENTIAL OUTPUT 用の 関連ファイルをオープンする必要があります。レコードは昇順のキー順で提示しなければならず、KEYFROM オプションを使用しなければなりません。

キー順データ・セットにすでにレコードがあって、SEQUENTIAL 属性と OUTPUT 属性をもつ関連ファイル をオープンする場合は、データ・セットの末尾のみにレコードを追加することができます。この場合も、レコードは昇順のキー順で提示しなければならず、KEYFROM オプションを使用する必要があります。さらに、提示する最初のレコードのキーは、データ・セット上に存在する 最高位のキーより大きくなければなりません。

図 20 は、ワークステーション VSAM キー順データ・セットをロードするプログラムの例です。PL/I プログラムでは、WRITE...FROM...KEYFROM ステートメント で KEYED SEQUENTIAL OUTPUT ファイルが使用されます。データは、昇順のキー順で提示されます。キー順データ・セットはこの方法でロードしなければなりません。

図 20. ワークステーション VSAM キー順データ・セットの定義とロード
 /********************************************************************/
 /*                                                                  */
 /*  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

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)