ディクファイルのディアロケートJS生成方法

1:ディクファイルのディアロケートJS生成方法
レガシー始末屋 05/15 18:13
ハードディスクの不要ファイルをCID単位でいっきに削除したいのですが、ディアロケートJSL生成方法をご存知でしょうか。
%DISKMという裏LMを使うと、プログラムエラーが発生するので、他にディアロケートJSL生成方法は無いでしょうか。


2:Re: ディクファイルのディアロケートJS生成方法
 05/18 16:15
ファイルを一括で削除する方法はしりません。が、
デアロケートをせっせせっせと1ファイルづつ削除するのが、よさそうですね。

もし、私だったら、デアロケートの件数をみて、
少なければ「せっせせっせ」で行い、
多ければ、JSを作りますが、
マップリストをみながら、ファイル名をJSに手打ちするか、
SYS@FDFより引用するかは、それも、件数によります。

どちらにしても、「不慣れ」であれば、「せっせせっせ」が、
いいとおもいます。



3:Re: ディクファイルのディアロケートJS生成方法
レガシー始末屋 05/19 20:22
ご指摘ありがとうございます。
整理したいファイルが3500件余有るので、お知恵をお借りしたかったのですが・・・・・・頼りにしていたNEC裏LMがアプリケーション・エラーを発生してしまっております。ただ、非公開LMなので、他言できない弱みがあります。
とりあえず、「地道にコツコツ」ですかね。(^_^;)


4:Re: ディクファイルのディアロケートJS生成方法
 05/20 12:38
3000以上あるとなればJSですね。
長文になりますが、ご勘弁を。


概要
JS11/JS12:置換機能&0を使用してのJS
JS2:削除するファイル名を羅列するJS

装置名MSD001/カンパニ"TT"等は現状にそって変更してください。

JS11:
/RUN #ABC,DEV=MSD;
MN1=01_MN2=01_MN3=02_PA1=MSD001_PA2=&0_O02=YES_CID=TT_O03=YES_EXP=NO_
MN1=99_
/> ;

JS12:
/RUN #ABC,DEV=MSD;
MN1=01_MN2=01_MN3=02_PA1=MSD001_PA2=&0_O02=YES_CID=TT_O03=YES_EXP=NO_
UOD=ALL_
MN1=99_
/> ;

JS11/JS12の使い分けはUOD=ALLが必要か否かですが、
エリアのアロケート時に使用した、ユーティリティによります。
JS11:#ABC等でアロケートか?
JS12:表定義よりアロケートか?
JS11/JS12の違いについては、自信がありません。

JS2:
/RUN JS11,FIL=SYS@JSL,DEV=MSD,(FILENAME1);
/RUN JS11,FIL=SYS@JSL,DEV=MSD,(FILENAME2);
/RUN JS11,FIL=SYS@JSL,DEV=MSD,(FILENAME3);

JS11/JS12とJS2を作成し、JS2を実行すればファイルがデアロケートされるとおもいます。

そこで、
JS11/JS12は#ABCのパラメータ登録機能で作成し、
ファイル名を&0に加工

JS2は下記の要領で作成

前提:
F80:レコード長=80のORG=SEQのファイル

#FLCNV;
IDE=MSD001
IFI=SYS@FDF
ODE=MSD
OFI=F80
OUT=(@***@),(9,17),(@+++@)
SEL=(7,2,C,EQ,@TT@)A(26,2,C,NE,@I0@) ←アイオーではなくアイゼロです
上記を実行すると、下記のような内容のファイルができます
***FILENAME1 +++
***FILENAME2 +++
***FILENAME3 +++

次に、
TYP=JCL
で#TEDITを起動し
R MSD F80
とし、上記ファイルを読み込む

置換機能を利用し
S ALL S"***","/RUN JS11,FIL=SYS@JSL,DEV=MSD,("

再度、置換機能を利用し
S ALL S"+++","); "

すると、下記のようになります
/RUN JS11,FIL=SYS@JSL,DEV=MSD,(FILENAME1 );
/RUN JS11,FIL=SYS@JSL,DEV=MSD,(FILENAME2 );
/RUN JS11,FIL=SYS@JSL,DEV=MSD,(FILENAME3 );

名前をJS2にして、登録します。

(注)複数索引ファイルの場合、キーファイルから削除しないといけないのですが、
面倒なので、JS2を2回実行し、「ファイルなし」、「キーファイルがある」的なエラーは
リセットで読み飛ばすようにすれば、全ファイル削除できるとおもいます。



5:Re: ディクファイルのディアロケートJS生成方法
温泉好きのうさぎ 05/21 18:41
削除の対象となるファイルが多数あるようで大変ですね。
私の手元にも、$DISKM という%メニューのLMが有りますが、リンク日が88年となっているので昭和の時代のもので、最近の大容量ディスクと大量のファイル数には対応できてないのかもしれません。

さて、ディアロケートのJSを作るとしても、ファイル名を置換パラメータで与えねばならず、かなり手間がかかります。
そこで、次のようなやり方はどうでしょうか。

1.ボリューム全体をバックアップする。
2.ディスクを初期化する。
3.必要なファイルのみリストアする。

または、

1.必要なファイルのみバックアップする。
2.ディスクを初期化する。
3.バックアップしたファイルをリストアする。

#BKUPでは、ファイル名の指定に集積名やワイルドカードが使用できるので、対象のファイルを全件入力する必要が無く楽です。
また、CID単位に全ファイルが必要なのか不要なのかに分かれているのなら、指定方法は非常に簡単です。


なお、ディアロケートのJSを作られるのでしたら、上の方も書かれているようにパラメータが微妙に異なりますので、やっかいです。
理由は、ファイルをアロケートしたのが、
(1) #ALLOC
(2) #ABC 領域用オプションの確保方法がSTATIC
(3) #ABC 領域用オプションの確保方法がDYNAMIC
の違いです。
そこで、どんなファイルでも削除可能な #SGALC を使えば楽です。
具体的には

/RUN #SGALC,FIL=SYS@LBM;
ACT=DLP_VOL=_DEV=&0_NAM=_CID=&1_FIL=&2_GEN=98_ACT=END_
/> ;

ACT=DLP_とGEN=98_のところが通常は無いパラメータです。
また、DEV=およびCID=のところは置換パラメータとせず、それぞれの装置やカンパニごとに個別のJSを複数作成しても差し支えありませんので、やり易い方で。


6:Re: ディクファイルのディアロケートJS生成方法
 05/22 12:13
「#SGALC」は知りませんでした。
今後の参考にさせていただきます。


1-

BluesBB ©Sting_Band