プログラミング言語としてのBASICは、言語構造が簡単で直ぐに覚えられるような教育的配慮で提案するツールです。幾つかの市販ソフトを見ることができます。或る年齢以上の人で、8ビットのマイコン時代のBASICインタプリタで動くゲームを懐かしく思っている人は少なくありません。また、16ビット時代N88BASICを今でも愛用している人もいますし、その時代のソフトを継承して使うことを目的とした、Windowsの環境で動くBASICインタプリタのエミュレータ(別装置で、元の機能が同じ様に動く装置のこと)も市販されています。パソコンの機能が年々進化していますので、懐古趣味的なソフトに頼るよりも、自前でインタプリタツールを開発すると弾力的な対応ができます。汎用のプログラミング言語を使って自分専用のインタプリタを派生的に作成することができます。筆者は、1980年代に、FORTRAN言語を使ってBASICのインタプリタを作成し、それにグラフィックス用サブルーチンを繋いで対話型で利用していました。Windows系のパソコンになって、FORTRANコンパイラの利用が不便になりましたので、C/C++系のプログラミング言語に書き直したものを使っています。その主な利用方法は、プログラミングができて、グラフィックス機能を持った関数電卓に位置づけています。インタプリタ型のツールは、あらかじめコマンドの種類を決めていますので、コンパイラ型のツールのようにサブルーチンを追加する自由度がありません。基本機能だけを持たせたバージョンをPlain Basic(詰めてPBASIC)としました。幾何の計算が便利にできるバージョンをGeometry Basic(詰めてGBASIC)です。この解説シリーズの第4章まで、言語としての解説と例題を示しました。さらに特殊な幾何モデリングに使う。バージョンはGEOMAP+BASICとしてあります。第10章以降の例図を作成するのに利用しています。
表24.1 GBASIC で用いる予約語
|
機能別分類 |
予 約 語 |
1 |
プログラム編集 |
AUTO, DELETE, EXIT, LIST, RENUM |
2 |
プログラムファイル |
LOAD, MERGE, SAVE |
3 |
プログラム実行 |
CONT, END, NEW, PAUSE, QUIT, REM, RUN, STOP |
4 |
バッチファイル |
DECK |
5 |
デバッグ機能 |
ECHON, ECHOFF, TRON, TROFF |
6 |
型の定義
|
数と文字 |
DEFINT, DEFDBL, DEFSTR |
二次元幾何 |
DEF2PT, DEF2LN, DEF2ED, DEF2BX, DEF2CR, DEF2TR |
三次元幾何 |
DEF3PT ,DEF3LN, DEF3ED, DEF3BX, DEF3SP, DEF3TR, DEF3PL |
7 |
変数と配列の管理 |
DIM, ERASE |
8 |
データ入出力文 |
PRINT, INPUT, OPEN, CLOSE, LET, DATA, READ, RESTORE |
9 |
プログラムの実行制御 |
IF/THEN/ELSE, FOR/TO/NEXT, GOSUB/RETURN, GOTO |
10 |
関数 |
代数関数 |
ABS, ATN, ATN2, CBRT, COS, EXP, LOG, MOD, RND, SGN,SIN, SQR, TAN |
スカラー値 |
FLAG |
幾 何 |
DIS, FBSEC, FCUTL, FTHRUE, LBSEC, MIRR, MROT, REV, TMIRR, TROT, XROT |
11 |
グラフィックス
|
画面制御 |
CLG, CLS, DPWIND, GRON, GROFF |
作 図 |
DPMOVE, DPDRAW, DPMARK, DPCIRC, DPTEXT |
ペン管理 |
DPENSZ, DPENTX |
GBASICは、PBASICを基本とし、これに幾何処理ようコマンドを追加したものです。追加コマンドは、
6: 型の定義(二次元幾何と三次元幾何のコマンド)、
7: 関数(スカラー値と幾何のコマンド)、
11: グラフィックス(GRON,GROFF)です。
|
表24.2 GEOMAP用の追加コマンド(コマンドの選択でバージョンが違います)
作業域の制御> |
CMINIT, CDIR, CDEL, CRENAM, COPY, CDUMP |
ファイル> |
FSLOAD/FSSAVE |
2D−モデリング |
RECT, RECTM, RETANG, RRTANG, RNGON, RPOLYG, REGFL, REGLC
|
2D−移動・回転 |
RGDIS, RGROT, RGLONG, RGFACT, REVERT, RCOPY |
2D−干渉 |
RATEST, RUNI, ROVL, RSUB, RINT, RDCOMP, RCUT |
3D−モデリング> |
PCUBE, PCUBEM, PEWEDG, PRWEDG, PRCYLN, PRCONE, PCYLN, PCONE, PREVL, PTRUNC, PHDFL, PHDFC, PHEDRA, |
3D−移動・回転 |
PGDIS, PGROT, PGROTA, PGLONG, PGPAN, PGFACT |
3D−干渉 |
PATEST, PUNI, PSUB, PINT, PCUT, PEVERT, PDCOMP |
>モデルの 変換 /td>
| 3D→3D |
(PFOLD, PWIRE, PFELIM, PEELIM)…………………(組み込んでない) |
3D→2D |
HLIMAG, HMIMAG, HDEV, HDEVF …………………(投影変換)
|
2D→3D |
RTOP25(2.5 次元モデル) |
2D→2D |
(RWIRE, RMASK, REELIM, RFELIM…………………(組み込んでない) |
作図用コマンド |
HDISP, HEDISP, HFDISP, HLDISP, HATCHR, HATCHC |
木構造 |
LMTREE, LDTREE |
幾何定数の計算> |
JPVOL, JRVOL, JCOPY, JUNI, JSUB, JFACT, JDEL, |
データ問い合わせ |
QBOX, QFEVN, QVERT, QEDGE, QFACE, QFLOOP, QJVOL, QJGINT, QJAXIS, QJGCEN |
その他 |
HLIGHT, RHIGHT …………………(光源設定、2.5次元モデル高さ設定) |
2009.12 橋梁&都市PROJECT |