🖊ふるーい情報端末IBM WorkPad c3というPDAをいじっています。
日曜プログラマーになって役に立たないアプリを製作しているのですが、問題発生。
palm OSのバージョンが3.5になったばかりの機種に向けて、古いバージョンのNS Basic for Palmを使ってアプリを作る状態になっている。
このNS Basicは英語サイトから引っ張ってきた奴なので、日本語対応できていない。それでも何とか使えないことはないのだが……。
文字列操作関数で引っかかった。日本語(2バイト文字)の文字数をカウントできない!
🖊文字数カウント関数Len()は1バイトコードを対象に作られていて、日本語1文字を「2」と(バイト長を)返してくる。
これに基づき、Right()、Mid()、Left()など部分文字列取得関数もバイト長でしか指定できない。
この状態だと、英数など1バイト文字と2バイト文字が混在した状態では期待する動作にならないのだ。
🖊「何とかしてよ~! ドラえもーん!」
ということで、Geminiさんに聞いてみた。
OSや言語のバージョンがあやふやで、最初は間違った情報を返してきたが、「いやいや、そうじゃなくて。こういう状態なので、こうしたい」ということを追加でお話したら、使える答えが返ってきた。
もちろん(?)、完全に正確ではなくて、プログラム例に使われている関数等の表現や16進数の表現など、そのまま使えない部分も多いが、アルゴリズムや文字コードのデータなど、大事な部分は利用できるものだった。
正しい文法に置き換えて組み込んでみると、確かに2バイト文字混在文字列の「文字数カウント」を取ることができた。
これをLens()関数として、その応用でLefts()関数をコーディング。
この2つがあれば、Mids()とRights()は簡単に書ける。
🖊「パイプ・コーディング」(AIにプログラミングを丸投げして、人間はパイプを吹かす)とまではいかないが、火おこしにチャッカマンを使うくらいには便利になった。
2026年はさらに飛躍的にAIが進化することでしょう。
