Full BASICのプログラムをObject Pascalのプログラムに変換し,FPC + Lazarusを利用して実行します。
Full BASIC実時間機能単位準拠の並列処理ができます(PROCESS制御関連を除く)。
参照
十進BASIC第2掲示板 過去ログ Paract BASICスレッド
変更履歴
32ビット版Lazarus2.2.6をダウンロードしてインストールしてください。
インストール先は,パス名に空白や日本語文字を含まない所を選択してください。
Lazarus Download (SourceForge)
ParactBASIC2133Rev2.zipをダウンロードし,ユーザーの書込み権限のあるところに展開してください。
ただし,パス名に空白や日本語文字を含むところは避けてください。
(たとえば,デスクトップやマイドキュメントは不可。USBメモリは可。)
既存のParact BASICフォルダに上書きでアップデートしたときは,一旦,OUTPUTフォルダを空にしてください。
Lazarusのインストール時にインストール先を変更したときは,Paract BASIC.exeの起動後,
Set upメニューのpathの設定を書き換えてください。
fpc path は,fpc.exe が存在するフォルダです。
Lazarus path は,lazarusインストール先のフォルダを指定してください。
なお,win32 Lazarus + fpc 3.2.2 をCドライブにインストールした場合,それら2つのPathは
C:\Lazarus\fpc\3.2.2\bin\i386-win32 C:\Lazarus
です。
Note.
Lazarus 1.6.4〜2.0.12でも使えますが,SetUpメニューのPathでFPC pathのバージョン番号の部分を正しく書き換えてください。
Note.
内部文字コード,ファイル入出力ともにUTF-8です。shift-JISファイルを使用する場合は,OPEN文に続けて
SET #n CODING "SYSTEM"
を実行してください。
プログラムファイルの入出力はshift-JISですが,Optionメニューの"Editor Option"でプログラムファイル入出力をUTF-8に変えることができます。
プログラム中にユニコード文字を書くときは,Editor Optionを変更してください。
64ビット
Windowsが64ビットの場合,64ビット版Lazarusを使うこともできます。
Lazarus Win64
SetupメニューのPathで「64bit」を選択し,FPC pathの末尾が \x86_64-win64 であることに注意して FPC PathとLazarus Pathを設定してください。
これらのpathは32bitと独立しています。随時,切り替えて使用することができます。
ただし,lazarus64ビット版でなく,32ビット版Lazarusにadd onのcross-x86-64をインストールしたとき,FPC pathは32ビット版FPCのところです。
Note.
Win64版のFPCでは拡張精度浮動小数点演算が利用できないので,べき乗演算や一部の超越関数の計算結果に無視できない誤差を生じます。
64ビットのプログラムで計算結果の正確さを求めるときは,Linux 64ビット版をご利用ください。
FPCとLazarusをインストールしてください。
例 Fedora 34の場合
sudo dnf install lazarus
Note.
Lazarus 1.6.4, 2.0.8〜2.2.6は問題なく使えます。
Lazarus 1.8.0〜2.0.6 でも動作しますが,AREA STYLEが正しく機能しません。
ParactBASIC2133Rev2_Linux64.tar.xzをダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。
既存のParact BASICフォルダに上書きでアップデートしたときは,一旦,OUTPUTフォルダを空にしてください。
Paract BASICを起動して,「failed to set Lazarus Path」と表示されたときは,SetUpメニューのPathでLazarusがインストールされているディレクトリを指定してください。Lazarus Pathで指定するディレクトリは,lazarus本体があって,components, unitsなどのサブディレクトリを含むディレクトリです。
Can't find unit fileutil のエラーになるとき。
lazarus pathを設定し直してください。
Lazarus pathで指定するフォルダにはcomponentsやunitsなどのフォルダが置かれています。
/usr/lib/lazarus/0.9.30.4/
のようにlazarusフォルダ内のバージョン番号名のフォルダになっている場合や,
/usr/share/lazarus/1.0
などのようになっていることがあります。
NoName.errが見つからないという趣旨のエラーになるとき。
fpcが正しくインストールされていません。/etc/fpc.cfgが存在することを確認してください。
--scriptsを指定せずにalienを用いてrpmパッケージをdeb形式に変換してfpcをインストールすると,この問題を引き起こします。
その他,プログラムの実行結果が現れないとき。
runメニューからcodeを選択し,Pascalコードが表示されたら,そのウィンドウでrunを選ぶとfpcが出すエラーが読めると思います。
Access Violationでエラーになるとき。
SetUp-OptionsでFPC Optimization Levelを1(または0)に変更してみてください。
画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。
Cent OS(64ビット)でFPC 3.0.4が動作しません。FPC 3.0.2 + Lazarus 1.6.4で試してください。
以下の手順にしたがって,XCode Command Line Tools をインストールしてください。
ターミナルを起動して以下の2つのコマンドを打つ。ただし,OS 11,12では2つめは不要。
ターミナルは,「アプリケーション」フォルダ内の「ユーティリティ」フォルダにあります。
sudo xcode-select --install
sudo xcodebuild -license accept
OSのバージョンが古いと上の手順と異なることがあります。
また,1つ目のコマンドでダウンロードが進まないときは,Apple developer サイトからダウンロードしてください(Apple Idの入力が必要)。
参照
Installing Lazarus on MacOS X.
See also Installing Lazarus on Mac OS X - Free Pascal (PDF)
Note. GDBのインストールは不要です。
fpc 3.2.2 と Lazarus 2.2.6 をダウンロードしてインストールしてください。
Lazarus Download
ParactBASIC2133Rev2_Mac.zipをダウンロードし,
ユーザーの書込み権限のあるフォルダに展開してください。
パス名に空白を含むと正しく動作しません。USBメモリを使うときは,ドライブ名を空白を含まないものに変えてください。
トラブルシューティング
1.初めて実行するとき
(1) Unabe to create file "/private/var/folders/…… のエラーが出て実行できない。あるいは,ファイルOpenができない。
アイコンで表示されるParactBASIC (ParactBASIC.app) をアプリケーションフォルダなど他のフォルダに移してください。一度,正しく実行できることを確認した後は元のフォルダに移すことが可能ですが,パス名に空白を含むと正しく動作しません。USBメモリを使うときは,ドライブ名を空白を含まないものに変えてください。
一度,正常に動作すれば,元のフォルダに戻しても大丈夫なようです。
ParactBASIC.appのみをアプリケーションフォルダにコピーしてもよいようです(フォルダごとのコピーでは駄目)。
詳細は,"App Translocation"を検索して調べてください。
(2) NoNameアイコンが点滅し実行を開始しない。
controlを押しながら NoNameアイコンをクリックして実行を許可してください。
(3) ReportFormに何も表示されず,プログラムも実行されない。
ターミナルでsudo xcrun ccを実行し,最後にagreeを入力する。
参照 Agreeing to the Xcode/iOS license... のエラーがでた時の対処法
(4) ReportFormに,
PPU Source :synedit.pp not found.
が出る。
Lazarus IDEを起動して,パッケージメニューから,「読み込まれているパッケージを開く」を選択し,
以下の各パッケージのコンパイルを実行する。
SynEdit
Printer4Lazarus
(5) do setup Lazarus Path が表示されて実行しない。
setupメニューでpathを選択し,Lazarus pathを正しく書き換えてください。
Lazarus 2.0.8のとき,lazarus pathは,
Library/lazarus
ですが,Lazrus 2.2.6 では,
/Applications/Lazarus
に変わっています。また,Lazarusの以前のバージョンでは,
Developer/lazarus
でした。
2. プログラムを続けて実行できない
Mac版ParactBASICでは,次のプログラムの実行前にNoNameを終了させてください。
3.プログラムの実行を途中で打ち切りたい
Mac版はParactBASICの側から中止できないので,画面左上のアップルメニューで「強制終了」してください。
既知の不具合
MOUSE POLL文が正しく動作しない。
SET DRAW MODE (NOTXOR, MASK, MERGE, XOR)は機能しない。
画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。
プリンタは正しく動作しない。
言語仕様は,JIS Full BASIC (中核+図形+実時間+モジュール+単文字入力)に準拠します。
実時間機能のうち,PROCESS関連は未実装で,また,SEIZE文のTIMEOUT句は書けません。
OPTION ARITHMETIC文を省いた場合には,ARITHMETIC NATIVEが指定されたものと解釈します。
次の場合,行番号分岐(GOTO文,IF ・・・ THEN 行番号) は実行できません。
WHEN本体内から保護区の外への分岐 保護区を含み,その保護区内にEXIT DO文を持つDO区の内から外への分岐(fpcコンパイラのエラーになります) 保護区を含み,その保護区内にEXIT FOR文を持つFOR区の内から外への分岐(fpcコンパイラのエラーになります)
WHEN-IN区に属する例外処理区がGOSUB〜RETURNを持つと,いずれの保護区にも属さないGOSUB〜RETURNを書くことができません。(fpcコンパイラのエラーになります)
PROGRAM文,CHAIN文の引数は単純変数に限ります(配列不可)。
文字列変数の最大長指定を無視します(切り詰めを行わない)。
PROCESS関連の命令と,SEIZE文のTIMEOUTは未実装です。
その他,十進BASICのJIS非互換項目は, ほぼそのまま本システムの非互換項目になります。
例外処理区で発生した例外に対してEXTYPE関数,RETRY文,CONTINUE文が正しく機能しません。
CHARACTER INPUT文(画面からの入力)は日本語入力に対応しません。
十進BASIC独自拡張のDRAW MODE NOTXOR (MASK, MERGE, XOR) は,正常に機能しないことがあります。
(Macでは,無視されます。Windows,Linuxでは,PLOT LINES文を実行しないと機能しません。)
識別名に使える文字は英数字のみです。
内部の文字コードは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で設定します。
BREAK文は動作しますが,プログラムを中断するだけの機能しか持ちません。
GOSUB文を含むプログラムは行番号が必須です。
十進BASICでは主プログラムの外部から主プログラムの内部手続きを呼び出すプログラムが実行できてしまいますが,その種のプログラムは実行できません。
CHAIN文に 拡張子が".BAS"のファイルを指定すると関連付けで起動します。
EXECUTE文の引数に配列を指定することはできません。
独自拡張命令 SET BITMAP SIZEの挙動は Windows版十進BASIC Ver.7 と少し異なります(拡張部分の色が異なる)。
画像の保存形式にGIFを選ぶことができません(読み込みは可)。
その他,DelphiとLazarusの非互換のために動作が異なるところがあります。
十進BASIC独自拡張の10進1000桁,有理数の演算には対応しません。
Microsoft BASIC互換モードには対応しません。
また,Windows版十進BASICが対応するメタファイル,OLE,ActiveX,CallBack,TextWindow にも未対応です。
実行ファイルはoutputフォルダに NoName.exe として生成されます。CHAIN文の連鎖先として用いたいときには,適宜,名称を変更してください。
生成したPascalプログラムは,outputフォルダに BASICunit.pas という名称で保存されます。
runメニューのcodeを選択して表示されるコードビューから書き換えて実行させることができます。
BASICの識別名は,数値型の場合は直前に _ を,文字列型の場合は 末尾の $ を除去して直前に s_ を付加した名前に変わります。
ただし,PUBLICまたはSHARE宣言された変数の名前は,_を2個重ねます。
主プログラムの内部手続きの名前は,_0,または,s_0 を付加した名前になります。
BASICのmoduleは,(古い型の)静的オブジェクトに変換されます。
詳細 Full BASICのObject Pascalへの埋め込み
本ソフトウェアはGPLです。
バグ・不具合,その他,動作報告は,
十進BASIC第3掲示板
Decimal BASIC Open Source Project 公開討議フォーラム
へお願いします。
CopyRight 2020 SHIRAISHI Kazuo