[CHAIN]コマンド
メモリ上のProgramからディスク上のProgramに実行を移します。
文法 CHAIN [MERGE] <ファイルディスクリプタ> [,<行番号>][,ALL][,DELETE <範囲>]
文例 CHAIN MERGE "D:\BAS\NEXT2.BAS" , 1000, ALL, DELETE 500-600
MBASIC86ではCHAINの際すべての変数が保持されます。
[COMMON]コマンドは無意味となっております。
CHAINを通じて、COMMON以外の変数の値も保持されますので注意して下さい。
-----N88BASICのCHAIN-----
CHAINを実行すると、メモリ上にあるProgramで使用中のFileは、そのままの状態で
ロードされるProgramに引き継がれます。
(1) MERGEオプションを省略する場合
メモリ上の現在のProgramは消去され、ディスクから<ファイルディスクリプタ>で指定した
Programがロードされ、実行されます。
<行番号>には、ロードされたProgramの開始行番号を指定します。
省略した場合は、Programの最初から実行されます。
ALLオプションは、連結後のProgramに変数、配列、型宣言を全部引き渡します。
DELETEオプションはこの場合は意味を持ちません。
(2) MERGEオプションを指定した場合
メモリ上の現在のProgramと、ディスクからロードされた<ファイルディスクリプタ>
で指定したProgramが、Merge(連結混合)され、1つのProgramになって実行されます。
<ファイルディスクリプタ>には、ディスクからロードするProgramFileを指定します。
<行番号>には、ロードされたProgramの開始行番号を指定します。
省略した場合は、Programの最初から実行されます。
ALLオプションは、連結後のProgramに変数、配列、型宣言を全部引き渡します。
DELETEオプションおよび<範囲>を指定すると、あらかじめメモリ上のProgramの
指定範囲の行が削除された後に、ディスクのProgramをMergeします。
<範囲>の指定は、"200-300" のように、行番号をマイナス記号でつないで指定します。
[DELETE] 命令と少し違いますので注意して下さい。
[注意]CHAINすると、プログラムの制御は呼び出されたプログラムに移り、
元のプログラムには帰って来ません。
複数のディスクの複数のプログラムファイルをCHAINする場合、直列に使用して下さい。
CHAINされたプログラムの最後で、次をCHAINして下さい。
[注意]実行開始行を指定する<行番号>は、RENUMを実行してProgram行番号を
書き換えても、書き換えられませんので注意してください。
RENUMを実行するとしても、実行開始行を書き換えしないようにして下さい。
サンプル
10 DIM IDENT(100)
20 OPEN "D:\DATA\DATA1.DAT" AS #1
30 FIELD #1, 2 AS A$,20 AS B$
40 INPUT "NO.= ";N%
50 IF N%=0 THEN 300
60 IF N%>1000 THEN 40
70 IF N%<0 THEN 40
80 INPUT "NAME= ";NAME$
90 LSET A$=MKI$(N%)
100 LSET B$=NAME$
110 PUT #1,N%
120 COUNT%=COUNT% +1
130 GOTO 40
300 PRINT "ただいまより NEXT2.BAS に CHAIN 致します。"
310 CHAIN "D:\BAS\NEXT2.BAS" ,,ALL
320 END
"D:\BAS\NEXT2.BAS" の内容。
10 DIM IDENT(100)
30 FIELD #1, 2 AS A$,20 AS B$
40 IF COUNT% = 0 THEN 300
50 FOR I%=1 TO COUNT%
60 GET #1,IDENT(I%)
70 N%=CVI(A$)
80 PRINT "NO.= ";N%
90 PRINT "NAME= ";B$
100 NEXT I%
300 "本日は、以上 ";COUNT%;" 件です。"
310 CLOSE #1
320 END
これは、最初のProgramで入力し、書き込んだランダムFileを、
後のProgramで読み出し、
PRINT表示しています。OPEN中のFileはそのまま引き継がれます。
また、CHAINのALLオプションにより変数はすべて引き継がれています。