Pascalを憶えているか? ( その2 CV ターミナルで動く表計算ツールの作成 )
前回書いたように、Pascalはもはや過去の言語であり、これを今現在学習するメリットはほとんどない、と言って過言ではないでしょう。DOS時代のTurbo PascalやWindows95のDelphiにハマった人間だけが、残されたユーザーなのかもしれません。
そんな言語で書いたプログラムを、いまさら公開する意義は殆どないような気もしますが、まあ書いちゃったものはしかたがない。こちらにアップロードしました。
CVというターミナルで動作する表計算ツールです。CVは Calculator Vanced の略称なのですが、これは後付け。「渋い」と言って欲しい、そういう安易なネーミングです。
以下、アップロードファイルに添付した READMEJP.md で、概要を説明しておきます。
CVは、Linuxのターミナル、あるいはWindowsのコマンドプロンプト上で動作する簡易スプレッドシートです。
Excelのようなオフィスソフトを立ち上げるまでもない計算処理を手軽に行うことが目的です。四則演算はもちろんのこと、よく使う関数を内蔵し、16進演算もサポートします。
起動
実行ファイルは、cv(あるいはcv.exe)1本だけなので、適当なディレクトリに入れて起動します。
$ cv
下記のように使用するシートを指定することも可能です。
cv sample.cv2
終了は下記のメニューからQuit選択、あるいは CTRL+QQ (CTRLを押したままQを2回)を押します。
以下、添付のサンプルシート(sample.cv2)を例に説明します。
データ入力
特に記述するまでもないでしょう。文字を入力すれば左寄せ、数字入力は右寄せに表示されます。小数点は . を入力します。
/ (or PF05)を入力すると、メニューが表示されます。
セルの移動などの操作については、上記 H Help で下記の画面が出てきますので、参照してください。。
(1) 計算式
+(or PF06) を入力すると、計算式入力モードになります。各種四則演算(+ - * /)を指定します。
@INT、 @TRUNC、 @ROUND 関数による処理も可能です。
等号(= >= <= <>)を含む式はその内容を評価、Trueの場合 1、Falseの場合 0 となります。このような式を * で連結すれば、AND条件、+ で連結すれば、OR条件として評価できます。これは、次項で使用している@IF関数とともに使うことを想定しています。
(2) 関数
計算式入力モードでは、一般的な関数が使用できます。
パラメータは、@SUM(A1..C3) のように Range を指定します。上記の例では、@MAX、@MIN、@AVG、@SUMを集計に、@VLOOKUPを他のセルからの読み込み、@IFを条件判断に使用しています。
(3) 16進数
CVでは、0xを文字列の最初に入力すると16進数と解釈します。
16進数は演算にそのまま使用できます。結果は整数となるので、16進表示する場合は、@HEX関数を使用します。
(4) Range
Rangeは、各種設定や関数のパラメータとして事前に指定する必要があります。
始点セルでCTRL+B、終点セルでCTRL->KK(CTRLを押したままKを2回) とすると設定され、A1..C2のように画面右上に表示されます。
この範囲が次に設定する処理の対象になります。
(5) その他
メニューから各種処理を選択することができます。
File -> Load Save Clear
Trans -> Text Write CSV Write CSV Read
Cell -> Width Decimal Center Right Left Color
Sort -> Ascending Desending
日本語処理
LinuxではUTF-8、WindowsではShift-JISの漢字コードをサポートしています。
ソースコードとコンパイル
CVは、Free Pascalでコンパイルされています。ダウンロード、インストールしてください。
各環境に複数のファイルがあるようですが、下記のファイルを使用しました。
Linux x86_64 fpc-3.2.2.x86_64-linux.tar
Linux ARM fpc-3.2.2.arm-linux.tar
Windows fpc-3.2.2.win32.and.win64.exe
コンパイル用のシェルを用意していますので、これを利用してください。
Linux compunix.sh
Windows compwin.bat
Binary
Binaryイメージ (cv-bin.tar.gz) を、アップロードしています。ここをクリックし、ダウンロードしてください。
bin - linux_x86_64 - cv
- linux_arm - cv
- windows - cv.exe
sample.cv2
上記の構造になっていますので、環境に合わせてファイルを使用してください。
以上です。
なんやかんやで3、4ヶ月の間、Pascalばかり使って過去のコードを見直していると、脳裏に当時の情景が走馬灯のように浮かび感傷的な思いに浸ることができました。現在のPascalは、そんな意味しかない言語なのかもしれません。