Full BASICのプログラムをObject Pascalのプログラムに変換し,FPC + Lazarusを利用して実行します。
数値は2進倍精度です。(十進演算ではありません)
単純な数値計算は,(仮称)十進BASICの2進モードより,2~7倍程度,高速です。
Lazarus0.9.30.4-fpc-2.6.0-win32.exe をダウンロードしてインストールしてください。
インストール先は,パス名に空白や日本語文字を含まない所を選択してください。
Lazarus Dwonload (SourceForge)
<参考> Lazarus Daily Snapshots
BASICAcc0948.zipを
Decimal BASIC Open Source Projectからダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。
BASICAccフォルダを適宜の位置にコピーするだけですが,パス名に空白や日本語文字を含むところは避けてください。
(たとえば,デスクトップやマイドキュメントは不可。USBメモリは可。)
既存のBASICAccフォルダに上書きでアップデートしたときは,一旦,OUTPUTフォルダを空にしてください。
Lazarusのインストール時にインストール先を変更したときは,BASICAcc.exeの起動後,
Set upメニューのpathの設定を書き換えてください。
fpc path は,fpc.exe が存在するフォルダです。
Lazarus path は,lazarusインストール先のフォルダを指定してください。
なお,win32 Lazarus + fpc 2.6.0 をCドライブにインストールした場合,それら2つのPathは
C:\Lazarus\fpc\2.6.0\bin\i386-win32 C:\Lazarus
です。
Note.
Windowsが64ビットの場合でも,32ビット版Lazarusを選択してください。
トラブル対策
実行中のプログラムが「応答なし」になるとき。
実行中の計算が終了するまでお待ちください。
i386版 fpc 2.6.0 と Lazarus 0.9.30.4 をダウンロードしてインストールしてください。
Lazarus Dwonload (SourceForge)
fpc-2.6.0-0.laz.i686.rpm と lazarus-0.9.30.4-0.laz.i686.rpm が必要です。
BASICAcc0948.tar.gzを
Decimal BASIC Open Source Projectからダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。
既存のBASICAccフォルダに上書きでアップデートしたときは,一旦,OUTPUTフォルダを空にしてください。
既知の不具合
MOUSE POLL文の動作がおかしい。
トラブル対策
NoName.errが見つからないという趣旨のエラーになるとき。
fpcが正しくインストールされていません。/etc/fpc.cfgが存在することを確認してください。
--scriptsを指定せずにalienを用いてrpmパッケージをdeb形式に変換してfpcをインストールすると,この問題を引き起こします。
プログラムの実行結果が現れないとき。
runメニューからcodeを選択し,Pascalコードが表示されたら,そのウィンドウでrunを選ぶとfpcが出すエラーが読めると思います。
Fomrsユニットが見つからないのが原因の場合は,Set UpメニューでLazarusパスを設定しなおしてください。
リンク・エラーになる場合は,上記(1),(2)の作業結果に問題がある可能性があります。
プログラムが実行開始すると,プロパティが見つからないというエラーが出て終了になる場合。
おそらく,Lazarusのバージョンが合わないのが原因です。
XCode tools をインストールしてください。
(Xcode toolsのインストール方法は,OS-Xのバージョンにより異なります)
MAC OS-X (i386)版 fpc 2.6.0, Lazarus 0.9.30.4をダウンロードしインストールしてください。
Lazarus Dwonload (SourceForge)
BASICAcc0948_Mac.zipを
Decimal BASIC Open Source Projectからダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。
パス名に空白を含むと正しく動作しません。USBメモリを使うときは,ドライブ名を空白を含まないものに変えてください。
Note. 上書きアップデートを行うと不具合を生じることがあります。また,Lazarusのupdateを行った場合も再インストールしてください。
既知の不具合
プリンタは正しく動作しない。また,一方,OSにプリンタがひとつも登録されていないと起動しない。
MOUSE POLL文が正しく動作しない。
言語仕様は,JIS Full BASIC (図形機能単位+モジュール+単文字入力)に準拠します。
ただし,以下の命令には対応しません。
OPTION ARITHMETIC DECIMAL
OPTION ARITHMETIC文を省いた場合には,ARITHMETIC NATIVEが指定されたものと解釈します。
次の場合,行番号分岐(GOTO文,IF ・・・ THEN 行番号) は実行できません(fpcコンパイラのエラーになります)。
WHEN本体内から保護区の外への分岐 保護区を含み,その保護区内にEXIT DO文を持つDO区の内から外への分岐 保護区を含み,その保護区内にEXIT FOR文を持つFOR区の内から外への分岐
WHEN-IN区に属する例外処理区がGOSUB~RETURNを持つと,いずれの保護区にも属さないGOSUB~RETURNを書くことができません。(fpcコンパイラのエラーになります)
モジュール内の外部手続きがモジュールでPUBLICまたはSHARE宣言された変数と同名の局所変数を持つと実行できません(fpcコンパイラのエラーになります)。
PROGRAM文,CHAIN文の引数は単純変数に限ります(配列不可)。
文字列変数の最大長指定を無視します(切り詰めを行わない)。
その他,(仮称)十進BASICのJIS非互換項目は, ほぼそのまま本システムの非互換項目になります。
識別名に使える文字は英数字のみです。
内部の文字コードはUTF-8です。ORD関数,CHR$関数はユニコードで定義されます。書式指定は漢字1文字に対し # 3文字を必要とします。
ファイル入出力もUTF-8ですが,OPEN文実行後,
SET #n: CODING "SYSTEM"
を実行すると,ファイル入出力をShift-JISで行います(日本語Windowsの場合)。
プログラムの保存形式の初期設定はshift-JISになっていますが,Optionメニューの「Editor Option」でUTF-8に変更することができます。
文字列処理の単位の初期値は,Option メニューのCompatibilityで設定します。
CHAIN文に 拡張子が".BAS"のファイルを指定すると関連付けで起動します。
EXECUTE文の引数に配列を指定することはできません。
BREAK文は動作しますが,プログラムを中断するだけの機能しか持ちません。
GOSUB文を含むプログラムは行番号が必須です。
(仮称)十進BASICでは主プログラムの外部から主プログラムの内部手続きを呼び出すプログラムが実行できてしまいますが,その種のプログラムは実行できません(fpcコンパイラのエラーになります)。
独自拡張命令 SET BITMAP SIZEの挙動は Windows版十進BASICと少し異なります(拡張部分の色が異なる)。
その他,DelphiとLazarusの非互換のために動作が異なるところがあります。
CHARACTER INPUT文(画面からの入力)は日本語入力に対応しません。
(仮称)十進BASICの独自拡張命令のうち,Microsoft BASIC互換モードのグラフィックス命令には対応しません。
また,Windows版(仮称)十進BASICが対応するメタファイル,OLE,ActiveX,CallBack,TextWindow には未対応です。
十進BASIC独自拡張の10進1000桁,有理数の演算にも対応していません。(2進演算と複素数演算のみ可能)
Setup Option の Use integer variables to optimize が有効になっていると,
配列添字として用いられている変数を整数型に変えて実行することがありますが,その変数が
他の目的にも利用されていて実行時に整数型の範囲を超えるときは正しく動作しません(桁あふれの例外を発生しない)。
問題が生じる可能性のある場合は無効にしてください。
実行ファイルはoutputフォルダに NoName.exe として生成されます。CHAIN文の連鎖先として用いたいときには,適宜,名称を変更してください。
生成したPascalプログラムは,outputフォルダに NoName.lpr という名称で保存されます。
runメニューのcodeを選択して表示されるコードビューから書き換えて実行させることができます。
BASICの識別名は,数値型の場合は直前に _ を,文字列型の場合は 末尾の $ を除去して直前に s_ を付加した名前に変わります。ただし,主プログラムの内部手続きの場合は,それぞれ,_0,s_0 を付加した名前になります。
BASICのmoduleは,(古い型の)静的オブジェクトに変換されます。
詳細 Full BASICのObject Pascalへの埋め込み
本ソフトウェアはGPLです。
バグ・不具合,その他,動作報告は,
Decimal BASIC Open Source Project 公開討議フォーラム
へお願いします。
CopyRight 2011 SHIRAISHI Kazuo