はじめに
日本語プログラミング言語Mindの小技「空白を満たす」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語マニュアルの記述はMind8マニュアルに記載があります。
7 文字列操作
空白を満たす
構文= <文字列実体変数>に 空白を満たす → ・
注 ・副作用を受ける文字列情報変数または文字列実体変数の明示が必要。
・その変数名に送り仮名「に」が必須
文字列実体変数の空き領域(左側および右側)に半角空白文字を満たす機能である。結果として、その文字列実体の長さ一杯に文字が埋まることになる。
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
この小技はちょっと日本語プログラミング言語Mind独特の便利機能です。まず、この小技を説明するには、Mindの文字列型について少し触れる必要があります。
Mindの文字列変数型
・文字列情報変数型
・文字列実体変数型
Mindの文字列変数型には文字列情報変数型と文字列実体変数型の2つがあります。「文字列」という装飾をとると、「情報変数」型と「実体変数」型と含蓄のある表現ですね。
両者の違いにはいろいろございまして、また別の「小技」シリーズで解説したいところですが、またはこの40周年記念プロジェクトにのっかってくださった別のユーザーさんが解説してくれるかもしれませんが、ざっくりここでは前者は可変長文字列の参照っぽい型で後者は固定長の実サイズを持つ型としておきます。
そして、今回の小技の「空白を満たす」は、この後者の文字列実体変数型向けの機能です。この文字列実体変数向けの機能で、面白いのは「左寄せする」「右寄せする」というのがあり、これも別の「小技」で解説したいところですが、今回は参考に「右寄せする」を合わせてご紹介いたします。
文字列実体変数の空き領域(左側および右側)に半角空白文字を満たす機能
↑
Mindプログラムソース
ハンバーガーは 文字列定数 「ハンバーガーを食べる」。
腹加減を見るは 一行表示と 等価。
空腹を満たすとは (・ → ・)
お腹は 文字列実体 長さ 30
ハンバーガーを お腹に 入れ
お腹の 腹加減を見る
お腹を 右寄せし
お腹の 空白を満たす
お腹の 腹加減を見る。
メインとは (・ → ・)
空腹を満たすこと。
「ハンバーガーを お腹に 入れ」は、「ハンバーガー」という文字列定数を「お腹」というサイズ30バイトの文字列実体変数に代入することを意味します。
「お腹の 腹加減を見る」とは、文字列実体変数「お腹」を改行コード付きでコンソール出力することを意味しています。
「右寄せ」したり「空白を満たす」は文字列実体変数「お腹」を操作しています。これらだけMind標準単語名のままですが、それのがきわだつかなという意図です。
あとは、とりあえず実行結果まで進んでから、解説いたしますね。
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind satisfyhunger file
日本語プログラミング言語 Mind Version 8.11 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> satisfyhunger.exe
Mind8
C:\developments\vscode\mind9>mind satisfyhunger file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> satisfyhunger.exe
Mind7
C:\developments\vscode\mind9>mind satisfyhunger file
日本語プログラミング言語 Mind Version 7.5 for Windows
Copyright(C) 1985-2004 Scripts Lab. Inc.
Single user license. Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> satisfyhunger.exe
実行結果
つづいて実行してみます。
Mind7の結果です。記述は割愛していますがMind8/9βも同じです。
C:\developments\vscode\mind9>satisfyhunger
ハンバーガーを食べる
ハンバーガーを食べる
MindのWindows版の文字コードはSHFT-JISのため、全角1文字2バイトで、固定文字長の文字列実体変数のサイズ30は全角15文字分となります。
「ハンバーガーを食べる」で10文字ですので、残りは全角5文字または半角10文字となります。
コンソール出力結果なので空白が強調されないのでわかりにくいですが、2行目の出力には左側に半角空白が10文字追加されています。
コンソール出力の際に出力文字列をフォーマットしてLeftPadingしたのではなく、Mindの場合は変数そのものを操作しています。ですので、一度「空白を満た」した変数はそのまま表示するとなんどでも空白が挿入された状態で出力されます。
Mindプログラムソース(補足)
最初に「右寄せ」を行うサンプルでしたので、ちょっとわかりにくかったかもしれませんので、「右寄せ」しないサンプルも追加します。
ハンバーガーは 文字列定数 「ハンバーガーを食べる」。
フライドポテトは 文字列定数 「フライドポテトを食べる」。
食べるは 入れると 等価。
腹加減を見るは 一行表示と 等価。
空腹を満たすとは (・ → ・)
お腹は 文字列実体 長さ 30
別腹は 文字列実体 長さ 30
ハンバーガーを お腹に 食べ
フライドポテトを 別腹に 食べ
お腹を 表示し
別腹の 腹加減を見る
お腹の 空白を満たす
お腹を 表示し
別腹の 腹加減を見る。
メインとは (・ → ・)
空腹を満たすこと。
実行結果(補足)
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
C:\developments\vscode\mind9>satisfyhunger2
ハンバーガーを食べるフライドポテトを食べる
ハンバーガーを食べる フライドポテトを食べる
「表示する」は改行コードを追加しない文字列表示のため、続けて改行コードを追加する「一行表示」を実行しているため、1行目のハンバーガーとフライドポテトはくっついていますね。
そして、「空白で満たす」をハンバーガーを食べた「お腹」に対して行ってから、表示しておき、続けて「別腹」を表示すると、半角空白が右側に10文字追加されていることがわかります。
参考情報
この小技「空白を満たす」を使った記述例の記事はまだありません。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。
本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は日本語プログラミング言語Mind生誕40周年プロジェクトの一環です。興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスして、Mindコンパイラをダウンロードできますよ。Mindプログラミングマニュアル(基本文法)ページから気になるお題の構文を選んで、この記事のようにサンプル実装実行してQiitaにアウトプットしてみましょう!筆者はMind7/8/9βで検証しておりますが、もちろんMind8だけでもじゅうぶんです。またお題が既存記事とかぶるのはまったく問題ありません。同じお題でみなさまの多様斬新なサンプルをお待ちしております面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう