この記事は、NetBSD Advent Calendar 2025の1日目の記事です。
Free Pascalとは?
Free Pascalとは、オープンソースのPascalとObject Pascalコンパイラーで、 オリジナルのPascal言語だけでなく、Turbo PascalのPascal言語やDelphiのObject Pascal言語もサポートしているようです。
私はPascalの熱心なユーザーであったことはないのですが、書籍の中では疑似コードとしてPascal風のソースコードを目にしたことは数多くあります。
Free Pascalとしては、NetBSDをサポートしていたようなのですが、pkgsrcには取り込まれていなかったようです。 Free Pascalコンパイラーを使っている人にとっては当たり前なのかもしれませんが、NetBSD上でコンパイルする場合に 必要だった事項を記載しておきたいと思います。
Free Pascalコンパイラーをインストールする
NetBSD/amd64でFree Pascalコンパイラーのバージョン3.2.2を利用することができます。 pkgsrc/lang/fpcとしてインポートされており、 Free Pascalのコンパイラーは、/usr/pkg/bin/fpcとしてインストールされます。 以下のように実行してインストールすれば良いでしょう。
# cd /usr/pkgsrc/lang/fpc # make install
また、以下のように実行すると、fpcのバージョンを確認することができます。
$ fpc Free Pascal Compiler version 3.2.2 [2025/12/08] for x86_64 Copyright (c) 1993-2021 by Florian Klaempfl and others fpc [options] <inputfile> [options] Only options valid for the default or selected platform are listed. (以下略)
初期設定
まず、Free Pascalでプログラミングするために使うディレクトリーを作り、そのディレクトリーへ移動します。
$ mkdir free-pascal $ cd free-pascal
次に、以下のように実行して、fpc.cfgという設定ファイルを作成します。 これがfpcコマンドの実行時に参照されるファイルで、この中で標準的な設定が定義されています。 個々をコマンドライン引数でfpcへ渡しても良いのかもしれませんが、 繰り返し入力するには、相当長いコマンドライン引数になりそうです。
$ fpcmkcfg -d basepath=/usr/pkg/lib/fpc/3.2.2 > fpc.cfg
サンプルプログラムをコンパイルしてみる
Hello worldは、以下のように書けば良いようです。 hello.pasとして保存しておきます。
program Hello;
begin
writeln ('Hello, world.');
end.
以下のようにコンパイルし、実行します。
$ fpc hello.pas $ ls hello* hello hello.o hello.pas # ./hello Hello, world.
もう少し複雑なものとして、階乗を再帰で実装してみます。 factorial.pasとして保存しておきます。
program factorial;
function fact(n: integer): longint;
begin
if (n = 0) then
fact := 1
else
fact := n * fact(n - 1);
end;
var
n: integer;
begin
for n := 0 to 16 do
writeln(n, '! = ', fact(n));
end.
以下のようにコンパイルし、実行します。
$ fpc factorial.pas Free Pascal Compiler version 3.2.2 [2025/12/08] for x86_64 Copyright (c) 1993-2021 by Florian Klaempfl and others Target OS: NetBSD for x86-64 Compiling factorial.pas Linking factorial 17 lines compiled, 0.1 sec $ ls factorial* factorial factorial.o factorial.pas $ ./factorial 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = 5040 8! = 40320 9! = 362880 10! = 3628800 11! = 39916800 12! = 479001600 13! = 1932053504 14! = 1278945280 15! = 2004310016 16! = 2004189184
おわりに
Pascalコンパイラーとしては、pkgsrcにはGNU Pascal Compiler (GPC)もpkgsrc/lang/gpcとして収録されているようです。 こちらもいずれ使ってみたいと思います。
