Paract BASIC Ver. 2.1.4.6 (2025.11.08)

概要

Full BASICのプログラムをObject Pascalのプログラムに変換し,FPC + Lazarusを利用して実行します。
Full BASIC実時間機能単位準拠の並列処理ができます(PROCESS制御関連を除く)。

参照  十進BASIC第2掲示板 過去ログ Paract BASICスレッド


変更履歴

Ver. 2.1.4.6
「置換」実行でフリーズすることがあるバグを修正。
Ver. 2.1.4.5
変数名にギリシャ文字・漢字が使えるようにした。
(Optionメニューの Compatibility - Syntax で identifier characters を確認してください)
MAT文に行列計算と行操作・列操作を追加。
Ver. 2.1.4.4
ASSIGN文とCallBackに関するバグを修正した。
Ver. 2.1.4.3
DLL呼び出し(ASSIGN文)を効率化。CallBack関数に対応。
Windows版をDPI Scalingに対応した。
Ver. 2.1.4.2 (2025/07/04)
Linux(Arm), Mac(Apple Silicon)に対応した。
Ver. 2.1.4.1 Rev.2
RECTYPE CSVのとき,MAT WRITE文が正しく機能しないバグを修正。
Ver. 2.1.4.1 Rev.1
Mac, LinuxでDIRECTORY GETNAMEを実行すると異常終了するバグを修正。
Ver. 2.1.4.1
ファイル名に'を含むと実行できないバグを修正。
Ver. 2.1.4.0
PLOT TEXT文が描く文字の字形を物理座標基準に変更した(JIS非互換への変更)。
Beam modeの初期値を"IMMORTAL"に変更した(JIS非互換への変更)。
Ver. 2.1.3.3 Rev.2
CONFIRM$関数を同期実行しない誤りを修正。
Ver. 2.1.3.3 Rev.1
PLOT AREA文の実行がline styleを破壊するバグを修正。
Ver. 2.1.3.3
十進モードのとき,数値変数が正しく初期化されないバグを修正。
Ver. 2.1.3.2 Rev3.
ファイル入力時の行末を自動識別に変更した。
Ver. 2.1.3.2 Rev2.
Decimal modeのとき,数値に続く1文字分の空白が出力されない誤りを修正。
Ver. 2.1.3.2 Rev1.
文字列変数に対するREAD文のバグを修正。
Ver. 2.1.3.2
エディタの自動修正ルーチンを修正。
Ver. 2.1.3.1 Rev.1
拡張精度数が使えない環境(win64)での数値表示精度を改善した。
Ver. 2.1.3.1
複素数モードの内部形式ファイルでMAT READが正しく実行されないバグを修正した。
Ver.2.1.3.0
続行可能例外を報告するように改めた。
複素数モードを内部形式ファイルに対応させた。
Ver.2.1.2.5
PRINT文の不具合を修正。
配列の上下限再定義で大きさを0にすることを許容することにした。
Ver. 2.1.2.3
TABが正しく表示されない不具合を修正。
Ver. 2.1.2.1
印刷不具合を修正した。
Ver. 2.1.2.0
名称をParact BASICに戻した。
DEBUG ON,TRACE OFFでMAT文を実行するとAccess Violationになるバグを修正。
DRAW WITHを排他制御の対象に加えた。
Ver. 2.1.1.5
CHARACTER INPUT NOWAITの挙動を修正。
Ver. 2.1.1.4
不活性状態の経路に対しCLOSE文を実行すると例外状態になる誤りを修正。
Ver. 2.1.1.3
関数の配列引数がメモリーリークを起こす不具合を修正。
Ver. 2.1.1.2
CHARACTER INPUT文が先行するPRINT文より先に実行される可能性のあるバグを修正した。
SetUp Optionsメニューの設定項目を見直した。
Ver. 2.1.1.1
モジュールを含むプログラムの翻訳に-Bを指定。
Time Intervalのデフォルト値を0に変更した。
Ver. 2.1.1.0
プログラム自動修正の挙動を調整した。
ファイルを上書きしようとして例外状態にならないバグを修正。
図形変形の終了直後にSET WINDOWを実行するとエラーになるバグを修正。
GSAVE文が不要なエラーを表示するバグを修正。
複素数に対するSTR$関数の動作を十進BASICに合わせた。
SET BITMAP SIZEの動作を十進BASIC Ver.8 に合わせた。
Ver. 2.1.0.5
複素数モードでの翻訳時,単項マイナスがあると実数変数を利用する最適化を正しく行わないバグを修正。
Ver. 2.1.0.4
DECIMALモードでのSIN関数,COS関数の計算の誤りを修正。
Option-Precisionメニュー表示項目の整理。
Time Delay Before Drawing Startの値が保存されるようにした。
Ver. 2.1.0.3
EXLINE関数が翻訳エラーになるバグ(2.1.0.2)を修正
Ver. 2.1.0.2
WHEN-IN区に文法誤りがあるとaccess violationになるバグを修正。
Ver. 2.1.0.1
MAT READ IF MISSINGのJIS非互換を修正。
Ver. 2.1.0.0
複数の並行活動が同時に例外を発生すると異常終了するバグを修正。
DATA個数が半端なときのREAD IF MISSINGの動作をJISに合わせた。
ファイル入力中に例外が発生したときの動作をJISに合わせた。
十進モード時のSIN,COS関数の正確さを改善した。
Ver. 2.0.2.1
PAUSE文が先行するPRINT文より先に実行される可能性のあるバグを修正した。
Ver. 2.0.2.0
INPUT文の入力が不適格だとハングするバグを修正した。
Ver. 2.0.1.0
64ビットのとき,INT関数, CEIL関数, ROUND関数にSSE4.1命令を使用するようにした。
Ver. 2.0.0.1
Mac版で64ビットコードが生成できるようにした。
Ver. 2.0.0.0
BASICAcc2に改名。

Windows

Set up(fpc + Lazarus)

32ビット版Lazarus3.8をダウンロードしてインストールしてください。
インストール先は,パス名に空白や日本語文字を含まない所を選択してください。
Lazarus Download (SourceForge)

Set up(Paract BASIC)

ParactBASIC2146.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 2.2.6〜4.2で使えますが,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ビット版をご利用ください。


Linux (64ビット)

Set up(fpc, Lazarus)

FPCとLazarusをインストールしてください。
例 Fedora 34の場合
sudo dnf install lazarus
例 Ubuntu, Linux Mint など
sudo apt install lazarus

Note.
Lazarus 1.8.0〜2.0.6 だと,AREA STYLEが正しく機能しません。

Set up(Paract BASIC)

ParactBASIC2146_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/3.6.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)に変更してみてください。

既知の不具合

画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。

既知の不具合

画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。


Linux (ARM(64ビット))

Lazarusダウンロード

FPCとLazarusをインストールしてください。
端末で sudo apt install fpc lazarus を実行。

ParactBASICダウンロード

ParactBASIC2146_Linux_ARM64.tar.xzをダウンロードし,
tar Jxfv ParactBASIC2146_Linux_ARM64.tar.xz
で展開してください。

Note.
ASSIGN文が使えます。CallBack関数にも対応します。
80ビット拡張精度数が利用できないので,べき乗演算や超越関数,MAT文による行列の計算は十分な精度を持ちません。

動作確認
以下の環境での動作を確認しています。
Raspberry PI OS 64bit (Bookworm)  sudo apt install fpc lazarus でインストールしたLazarusを使用


Linux (ARM(32ビット))

Lazarusダウンロード

FPCとLazarusをインストールしてください。
端末で sudo apt install fpc lazarus を実行。
 
BASICAccダウンロード

ParactBASIC2146_Linux_ARM32.tar.xzをダウンロードし,
tar Jxfv ParactBASIC2146_Linux_ARM32.tar.xz
で展開してください。

Note.
ASSIGN文が使えます。CallBack関数にも対応します。
80ビット拡張精度数が利用できないので,べき乗演算や超越関数,MAT文による行列の計算は十分な精度を持ちません。

動作確認
以下の環境での動作を確認しています。
Raspberry PI OS 32bit (Bookworm)  sudo apt install fpc lazarus でインストールしたLazarus (2.2.6)を使用


MAC(Intel) 

Set up(XCode Command Line Tools)

以下の手順にしたがって,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のインストールは不要です。

Set up(fpc, Lazarus)

fpc 3.2.2 と Lazarus 2.2.6 をダウンロードしてインストールしてください。
Lazarus Download

Set up(Paract BASIC)

ParactBASIC2146_Mac_Intel.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
でした。

(6) Error: Error while linking
Fatal: There were 1 errors compiling module, stopping
上記のエラーが出るときは,
Setup- OptionsのAddtional Compiler Optionsの枠内に,
-k-framework -kCocoa -k-weak_framework -kUserNotifications
を追記(コピー&ペースト)してください。



2. プログラムを続けて実行できない
  Mac版ParactBASICでは,次のプログラムの実行前にNoNameを終了させてください。

3.プログラムの実行を途中で打ち切りたい
 Mac版はParactBASICの側から中止できないので,画面左上のアップルメニューで「強制終了」してください。

既知の不具合
MOUSE POLL文が正しく動作しない。
SET DRAW MODE (NOTXOR, MASK, MERGE, XOR)は機能しない。
画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。
プリンタは正しく動作しない。


MAC (Apple Silicon) 

Set up(XCode Command Line Tools)

MAC OS 14以前のときは, ターミナルに以下のコマンドを打って Command Line Tools for XCode をインストールしてください。
 sudo xcode-select --install
 ターミナルは,「アプリケーション」フォルダ内の「ユーティリティ」フォルダにあります。

MAC OS 15のときは,上記の方法でインストールしたCommand Line Tools for XCode が使えません。
Apple developer サイトから  Command Line Tools for XCode 16.2 をダウンロードし,インストールしてください 。
16.3と16.4は不可。自動アップデートに注意。


Set up(ParactBASIC)

ParactBASIC2146_Mac_ARM.zipをダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。
パス名に空白を含むと正しく動作しません。USBメモリを使うときは,ドライブ名を空白を含まないものに変えてください。

トラブルシューティング
1.初めて実行するとき
(1) 「壊れているため開けません。 ゴミ箱に入れる必要があります。」と表示されて実行できないとき。
ParactBASIC.appを直下に含むフォルダ(通常,ParactBASIC)を右クリックして,「フォルダに新規ターミナル」を選択。
ターミナルで,xattr -rc ParactBASIC.app を実行 (copy & paste して Returnキーを押す)。

(7) Error: Error while linking
Fatal: There were 1 errors compiling module, stopping
上記エラーが出るときは,
Setup- OptionsのAddtional Compiler Optionsの枠内に,
-k-framework -kCocoa -k-weak_framework -kUserNotifications
を追記(コピー&ペースト)してください。

既知の不具合
Apple Silicon では,80ビット拡張精度数が利用できないので,べき乗演算や超越関数,MAT文での行列計算に十分な精度が得られません。
その他,Intel Mac版と同様の不具合があります。


言語仕様

言語仕様は,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文を実行しないと機能しません。)

十進BASIC(Windows版)との非互換

内部の文字コードは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 - Syntax にある identifier characters の設定が必要です。

文字列処理の単位の初期値は,Option メニューのCompatibilityで設定します。

BREAK文は動作しますが,プログラムを中断するだけの機能しか持ちません。

GOSUB文を含むプログラムは行番号が必須です。

十進BASICでは主プログラムの外部から主プログラムの内部手続きを呼び出すプログラムが実行できてしまいますが,その種のプログラムは実行できません。

CHAIN文に 拡張子が".BAS"のファイルを指定すると関連付けで起動します。

EXECUTE文の引数に配列を指定することはできません。

独自拡張命令 SET BITMAP SIZEの挙動は Windows版十進BASIC Ver.7 と少し異なります(拡張部分の色が異なる)。

画像の保存形式にGIFを選ぶことができません(読み込みは可)。

ASSIGN文でDLLの作業領域として用いる文字列変数はREPEAT$関数等を用いてその場で作成したものに限ります(文字列定数不可)。
CallBackを指定するのは,外部手続きに限ります。

その他,DelphiとLazarusの非互換のために動作が異なるところがあります。

未対応の機能

十進BASIC独自拡張の10進1000桁,有理数の演算には対応しません。

Microsoft BASIC互換モードには対応しません。
また,Windows版十進BASICが対応するメタファイル,OLE,ActiveX,TextWindow にも未対応です。


システム詳細

実行ファイルはoutputフォルダに NoName.exe として生成されます。CHAIN文の連鎖先として用いたいときには,適宜,名称を変更してください。

生成したPascalプログラムは,outputフォルダに BASICunit.pas という名称で保存されます。
runメニューのcodeを選択して表示されるコードビューから書き換えて実行させることができます。
BASICの識別名は,ギリシャ文字・漢字を含むとき,UTF-8内部表現の各バイトを3桁の整数で表したものに変更します。
そして,数値型の場合は直前に _ を,文字列型の場合は 末尾の $ を除去して直前に s_ を付加します。
ただし,PUBLICまたはSHARE宣言された変数の名前は,_を2個重ねます。
主プログラムの内部手続きの名前は,_0,または,s_0 を付加した名前になります。
BASICのmoduleは,(古い型の)静的オブジェクトに変換されます。
詳細 Full BASICのObject Pascalへの埋め込み

 

著作権

本ソフトウェアはGPLです。

バグ・不具合,その他,動作報告は,
十進BASIC第3掲示板
へお願いします。

CopyRight 2020 SHIRAISHI Kazuo


十進BASICのホームページへ