Full BASICは,文法上の誤りがないことを確認してから実行を開始するように定められた言語です。
実行中のプログラムをプログラム自身,あるいは外部から書き換えながら実行することはできません。
ただし,十進BASICは,CHAIN文のリンク先に翻訳される前のプログラムを指定することを許しているので,自身が出力したプログラムに制御を移すという裏技が可能です。
詳細 外部プログラムの利用
関数f(x)の区間[a,b]における定積分の値を求める関数I(f,a,b)を定義したいと感じることがありますが,Full BASICでは,関数を他の手続きの引数にすることはできません。つまり,fをプログラムの実行中に指定することができません。
また,N88BASICなどのインタプリタ型のBASICのように同じ関数名に対するDEF文を複数書いて,プログラムの実行にしたがって関数の定義が変化するようにすることもできません。
Full BASICでできるのは,関数のパラメータを変数で与えることくらいです。たとえば,
DEF f(x) = a*x^3 + b*x^2 + c*x + d
のように書いて,実行時にa,b,c,dの値を変えることは可能です。
それを超えるためには,プログラムを書き出して,それを実行する裏技的な手法が必要になります。
BASICには導関数を関数として求める機能がありません。そのため,ニュートン法で関数の零点を求めるプログラムを書くときは,たとえば,
DEF f(x) = a*x^3 + b*x^2 + c*x + d DEF g(x) = 3*a*x^2 + 2*b*x +c
のように元の関数とともに導関数もプログラム中に記述しなければなりません。
なお,Full BASICの組込み関数として定義されている範囲の関数について,それらの合成関数を文字列の形で与えると,その導関数を文字列の形で返す関数を作ることは可能ですが,それをプログラム中で使う手段がありません。
どうしてもそうしたい場合は,プログラムを書き出して,それを実行する裏技的な手法が必要になります。
Full BASICには,コンピュータのメモリを直接に扱う機構がありません。
構造型(構造体,レコード型,etc.)
Full BASICには,Visual BASICのユーザー定義型,C言語の構造体,Pascalのレコード型に相当する概念がありません。
ポインタ
Full BASICにはポインタがありません。ポインタを用いてリンク構造を作るようなアルゴリズムを実現するのに,Full BASICでは,配列を用い,ポインタの代わりに添字を使います。