Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
トップ  >  実践編  >  フロッピーディスクを初期化してファイルをコピーするJS

フロッピーディスクを初期化してファイルをコピーするJS

ここではもう少し複雑なJSを作ってみます。
フロッピーディスクを初期化し、そのフロッピーディスクに順編成ファイル(ファイル名:DATA01)を作成、その後磁気ディスク上のファイル(ファイル名:TESTDATA)のデータをフロッピーディスク上の順編成ファイル(DATA01)にコピーします。



「フロッピーディスクを初期化するJS」は前章で作ったので、それをそのまま利用します。
ただし最初の説明文は少し変えましょう。

作りかけのJS(FDCP01) 1

******* FD FORMAT & DATA01 ALLOCATE & COPY *****************
// フロッピーディスクを初期化して、; 
// MSD002のTESTDATAをコピーするジョブです。;
// フロッピーディスクを装置に入れてください。;
/PAUSE 準備ができたら「CTRL」と「F5」を押してください。;
/RUN #VOLPR;
ACT=PREPARE_NOV=01_VOL=ABCDEF_DEV=FDU000_NAM=_
SSZ=256_FIL=NON_CMP=NO_PRD=NO_
ACT=END_
/> ;


次はフロッピーディスク上に順編成ファイルを作る部分を作成します。
ファイルを作成するユーティリティ#ALLOCを使ってみます。

この例で作成するファイルは以下の形式です。
50セクタしかないので、非常に小さいファイルです。50行分のデータしか入りません。

ファイル名DATA01
ファイル形式順編成
レコード長256バイト
ブロック化係数1レコード/ブロック
領域サイズ50セクタ


前章と同じように、#ALLOCのパラメータを書き込んでいきます。

作りかけのJS(FDCP01) 2

******* FD FORMAT & DATA01 ALLOCATE & COPY *****************
// フロッピーディスクを初期化して、; 
// MSD002のTESTDATAをコピーするジョブです。;
// フロッピーディスクを装置に入れてください。;
/PAUSE 準備ができたら「CTRL」と「F5」を押してください。;
/RUN #VOLPR;
ACT=PREPARE_NOV=01_VOL=ABCDEF_DEV=FDU000_NAM=_
SSZ=256_FIL=NON_CMP=NO_PRD=NO_
ACT=END_
/> ;
*
/RUN #ALLOC;
ACT=ALLOCATE_VOL=ABCDEF_DEV=FDU000_NAM=_FIL=DATA01_
TYP=DATA_ORG=SEQ_LOC=_UOA=SECTOR_REC=0256_BLF=001_SIZ=50_
VFY=NO_VSN=00_EXP=000000_CLR=NO_PRD=PRN999_LST=NO_
ACT=END_
/> ;


こちらに#ALLOCを使って会話式に順編成ファイルを作成する方法が書いてあります。
キーボードからパラメータを入力する順番通りに、JSのパラメータを書いているのが分かりますね。

次はファイルのデータをコピーする部分を作成します。
ファイルのデータをコピーするのは#FLCNVというユーティリティを使います。

この例では、磁気ディスク2番のTESTDATAという順編成ファイルから、先ほどフロッピーディスクに作成したファイルにデータをコピーします。

作りかけのJS(FDCP01) 3

******* FD FORMAT & DATA01 ALLOCATE & COPY *****************
// フロッピーディスクを初期化して、; 
// MSD002のTESTDATAをコピーするジョブです。;
// フロッピーディスクを装置に入れてください。;
/PAUSE 準備ができたら「CTRL」と「F5」を押してください。;
/RUN #VOLPR;
ACT=PREPARE_NOV=01_VOL=ABCDEF_DEV=FDU000_NAM=_
SSZ=256_FIL=NON_CMP=NO_PRD=NO_
ACT=END_
/> ;
*
/RUN #ALLOC;
ACT=ALLOCATE_VOL=ABCDEF_DEV=FDU000_NAM=_FIL=DATA01_
TYP=DATA_ORG=SEQ_LOC=_UOA=SECTOR_REC=0256_BLF=001_SIZ=50_
VFY=NO_VSN=00_EXP=000000_CLR=NO_PRD=PRN999_LST=NO_
ACT=END_
/> ;
*
/RUN #FLCNV;
IDE=MSD002_ICI=_IFI=TESTDATA_IGN=_IFO=PROTECT_ODE=FDU000_
OFI=DATA01_LST=NO_ERR=ABORT_MOD=CREATE_AMD=LOGICAL_GTR=_
DEL=NO_CLR=NO_OUT=_RNG=_SEL=_SAV=_NXT=_
/> ;


こちらに#FLCNVを使って会話式にファイルのデータをコピーする方法が書いてあります。
やはりキーボードからパラメータを入力する順番通りに、JSのパラメータを書いています。簡単ですよね。



さてこれで一通りできたわけですが、もう一工夫してみましょう。

今のJSでは問題があります。例えばフロッピーディスクのフォーマット中に#VOLPRが異常終了したり、あるいはユーザがプログラム放棄コマンドを実行して#VOLPRの処理を終了させた場合です。
#VOLPRが異常終了した後に、次の#ALLOCが実行されます。ところが前のジョブステップでフロッピーディスクがきちんと初期化されていないので、#ALLOCでエラーが発生してしまいます。さらにファイルを作成していないので、#FLCNVでもエラーとなってしまいます。

#VOLPRで異常終了となった場合は、以降の処理は行わないようにしましょう。#ALLOCの異常終了の場合も同様、以降の処理は実行しないようにします。

完成したJS(FDCP01)

******* FD FORMAT & DATA01 ALLOCATE & COPY *****************                    
// フロッピーディスクを初期化して、;                                            
// MSD002のTESTDATAをコピーするジョブです。;                      
// フロッピーディスクを装置に入れてください。;                                  
/PAUSE 準備ができたら「CTRL」と「F5」を押してください。;                  
/RUN #VOLPR;                                                                    
ACT=PREPARE_NOV=01_VOL=ABCDEF_DEV=FDU000_NAM=_                                  
SSZ=256_FIL=NON_CMP=NO_PRD=NO_                                                  
ACT=END_                                                                        
/> ;                                                                            
/: ABORT JUMP=ENDJOB;                                                           
*                                                                               
/RUN #ALLOC;                                                                    
ACT=ALLOCATE_VOL=ABCDEF_DEV=FDU000_NAM=_FIL=DATA01_                             
TYP=DATA_ORG=SEQ_LOC=_UOA=SECTOR_REC=0256_BLF=001_SIZ=50_                       
VFY=NO_VSN=00_EXP=000000_CLR=NO_PRD=PRN999_LST=NO_                              
ACT=END_                                                                        
/> ;                                                                            
/: ABORT JUMP=ENDJOB;                                                           
*                                                                               
/RUN #FLCNV;                                                                    
IDE=MSD002_ICI=_IFI=TESTDATA_IGN=_IFO=PROTECT_ODE=FDU000_                       
OFI=DATA01_LST=NO_ERR=ABORT_MOD=CREATE_AMD=LOGICAL_GTR=_                        
DEL=NO_CLR=NO_OUT=_RNG=_SEL=_SAV=_NXT=_                                         
/> ;                                          


「/: ABORT JUMP=ENDJOB;」と書くことで、異常終了の場合はジョブを終了させるようにすることができます。

「最終的にこのジョブが正常終了したか異常終了したか」をジョブ終了後に人間が判断できるように、画面にメッセージを出すなど工夫をすべきですが、今回はこのくらいにしておきます。これ以降は皆さんでいろいろと工夫してみてください。



JSが完成したので、早速実行してみましょう。

磁気ディスク上のライブラリにJSを書き込みます。
RUNコマンド行で作成したJSを実行します。

間違いが無ければ、以下の画面のようになるはずです。


JSが終了したら、きちんとフロッピーディスクが初期化されてファイルが作成されたか確認してみましょう。
確認する方法はいろいろありますが、例えば#ABCを使って フロッピーディスク上のファイル一覧表示をしたりして確認できます。