REGIONAL(1) データ・セットは、順次アクセスか直接アクセスの どちらかを使って作成することができます。表 21 は、領域データ・セットを作成するためのステートメントとオプションを示しています。
SEQUENTIAL OUTPUT ファイルを使ってデータ・セットを作成するとき、 ファイルをオープンすると、データ・セット上のすべてのトラックが 消去され、各トラックの先頭に、そのトラック上で使用できるスペースの 大きさを記録する容量レコードが書き込まれることになります。 レコードは領域番号の昇順で提示しなくてはならず、そのシーケンスから省略された領域は ダミー・レコードによって埋められます。 このシーケンスにエラーがあると、あるいは、重複キーを提示すると、KEY 条件が発生します。 ファイルがクローズされるときに、現行エクステントの終わりのスペース にはダミー・レコードが埋め込まれます。
DIRECT OUTPUT ファイルを使ってデータ・セットを作成すると、 そのデータ・セットに割り振られた 1 次エクステント全体が、 ファイルのオープン時にダミー・レコードで埋められます。 レコードをランダム順で提示することができますが、 レコードを重複して提示した場合、既存レコードは上書きされます。
順次作成の場合、データ・セットは最大 15 までのエクステントを 持つことができ、また複数のボリューム上に またがっていてもかまいません。 直接作成の場合、データ・セットは 1 つしかエクステントを持つ ことはできず、したがって 1 つのボリューム上にしか存在することは できません。
REGIONAL(1) データ・セットの作成例が、図 32 に示し てあります。 この例のデータ・セットは、電話番号とその電話番号を割り当てる加入者の氏名リストです。 電話番号は領域データ・セット内の領域番号と対応しており、各領域番号が占め る領域には加入者名のデータが入っています。
//EX9 JOB
//STEP1 EXEC IBMZCBG,PARM.PLI='NOP,MAR(1,72)',PARM.BIND='LIST'
//PLI.SYSIN DD *
CRR1: PROC OPTIONS(MAIN);
/* CREATING A REGIONAL(1) DATA SET - PHONE DIRECTORY */
DCL NOS FILE RECORD OUTPUT DIRECT KEYED ENV(REGIONAL(1));
DCL SYSIN FILE INPUT RECORD;
DCL SYSIN_REC BIT(1) INIT('1'B);
DCL 1 CARD,
2 NAME CHAR(20),
2 NUMBER CHAR( 2),
2 CARD_1 CHAR(58);
DCL IOFIELD CHAR(20);
ON ENDFILE (SYSIN) SYSIN_REC = '0'B;
OPEN FILE(NOS);
READ FILE(SYSIN) INTO(CARD);
DO WHILE(SYSIN_REC);
IOFIELD = NAME;
WRITE FILE(NOS) FROM(IOFIELD) KEYFROM(NUMBER);
PUT FILE(SYSPRINT) SKIP EDIT (CARD) (A);
READ FILE(SYSIN) INTO(CARD);
END;
CLOSE FILE(NOS);
END CRR1;
/*
//GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE)
//GO.NOS DD DSN=MYID.NOS,UNIT=SYSDA,SPACE=(20,100),
// DCB=(RECFM=F,BLKSIZE=20,DSORG=DA),DISP=(NEW,KEEP)
//GO.SYSIN DD *
ACTION,G. 12
BAKER,R. 13
BRAMLEY,O.H. 28
CHEESNAME,L. 11
CORY,G. 36
ELLIOTT,D. 85
FIGGINS,E.S. 43
HARVEY,C.D.W. 25
HASTINGS,G.M. 31
KENDALL,J.G. 24
LANCASTER,W.R. 64
MILES,R. 23
NEWMAN,M.W. 40
PITT,W.H. 55
ROLF,D.E. 14
SHEERS,C.D. 21
SURCLIFFE,M. 42
TAYLOR,G.C. 47
WILTON,L.W. 44
WINSTONE,E.M. 37
/*