[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オプションにより変数はすべて引き継がれています。