日本語プログラミング言語Mindの小技 「選択」～処理も選択できる～

# はじめに
日本語プログラミング言語Mindの小技「選択」について説明したいと思います。

# 対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方

# この小技に関連するMind言語マニュアル

この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
３ 制御構文
└その他の制御構文
　└選択

>１から始まる整数をスタックに積んで「選択」に入ると、その値に対応する選択肢の１つが実行され、実行が終わると「選択終り」の次の箇所から次の処理が続行される。

>構文＝
　　　　＜整数値＞で
　　　　選択する
　　　　　　　　＜選択肢＞
　　　　　　　　＜選択肢＞
　　　　　　　　・・・・・
　　　　選択終り

>　選択肢としては、ただ１つの単語だけが記述できる。それは定数や変数であっても良いし、処理単語であってもよいが、いずれにしても１語だけである。
　また特別に、「打ち切り」「もう一度」「終り」の３つの分岐語を含めることができる（「打ち切り」と「もう一度」は、この構文全体が繰り返し構文の中に入っている場合に限られる）。

本機能（本記事）は、下記のバージョンに対応しています。Mind８のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。

# 対応バージョン
■Mind７　■Mind８　■Mind９
■Windows版　□Linux版

# 小技の解説
「選択」は１から始まる整数連番に対する選択肢を列挙する単語です。他のプログラミング言語では「enum」型や列挙型が近いものになりますが同一ではありません。

他言語の「switch」文の「case」が整数連番になったようなイメージとも言えます。Mindには「switch～case」文に似た構文として「事例」がありますが、その説明は別の機会にゆずります。

今回はマニュアルにも記載のある、選択肢に処理単語を使った場合についてご説明いたします。筆者はC、C#などの配列に関数を格納しているに近い感じの利用方法と連想しました:relaxed:


# Mindプログラムソース

```mind:select.src
示すは　一行表示と　等価。

愛を示すとは　（・　→　・）
    「愛しています。」を　示す。

敬意を示すとは　（・　→　・）
    「尊敬しています。」を　示す。

方向性を示すとは　（・　→　・）
    「こっちのがよいです。」を　示す。

概要を示すとは　（・　→　・）
    「こんな感じです。」を　示す。

手本を示すとは　（・　→　・）
    「こういう風にやってみてください。」を　示す。

いろいろ示すとは　（１から始まる連番　→　・）
    選択する
        愛を示す
        敬意を示す
        方向性を示す
        概要を示す
        手本を示す
    選択終わり。


選択で単語配列みたいなことをやってみるとは　（・　→　・）
    １で　いろいろ示す
    ２で　いろいろ示す
    ３で　いろいろ示す
    ４で　いろいろ示す
    ５で　いろいろ示す。

メインとは　（・　→　・）
    選択で単語配列みたいなことをやってみる。
```


# コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。

## Mind９
下図はMind９βです。
```cmd:
C:\developments\vscode\mind9>mind select file   

日本語プログラミング言語 Ｍｉｎｄ Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> select.exe
```
## Mind8
```cmd:
C:\developments\vscode\mind9>mind select file

日本語プログラミング言語 Ｍｉｎｄ Version 8.07 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> select.exe
```
## Mind7
```cmd:
C:\developments\vscode\mind9>mind select file
日本語プログラミング言語 Ｍｉｎｄ Version 7.5 for Windows
          Copyright(C) 1985-2004 Scripts Lab. Inc.
          Single user license.  Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> select.exe
```
# 実行結果
つづいて実行してみます。
Mind7の結果です。記述は割愛していますがMind8/9βも同じです。

```cmd:
C:\developments\vscode\mind9>select
愛しています。
尊敬しています。
こっちのがよいです。
こんな感じです。
こういう風にやってみてください。
```

# Mindプログラムソース（連番不整合）
コンパイルエラーにはならないのですが、実行時エラーとなる連番不整合について補足しておきます。下記のような選択範囲外の連番を指定したソースコードは、コンパイルエラーにはならないのですが、実行時エラーとなります。

```mind:select2.src
※個々の単語定義は同一のため略

いろいろ示すとは　（１から始まる連番　→　・）
    選択する
        愛を示す
        敬意を示す
        方向性を示す
        概要を示す
        手本を示す
    選択終わり。


選択で単語配列みたいなことをやってみるとは　（・　→　・）
    １で　いろいろ示す
    ２で　いろいろ示す
    ３で　いろいろ示す
    ４で　いろいろ示す
    ６で　いろいろ示す。

メインとは　（・　→　・）
    選択で単語配列みたいなことをやってみる。
```
選択の範囲は５つなので６は例外となります。

## コンパイル・実行結果

Mind8の結果です。記述は割愛していますがMind7/9βも同じです。

```cmd:
C:\developments\vscode\mind9>mind select2 file

日本語プログラミング言語 Ｍｉｎｄ Version 8.07 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> select2.exe

C:\developments\vscode\mind9>select2
愛しています。
尊敬しています。
こっちのがよいです。
こんな感じです。
要素番号が異常です（配列要素番号異常: 種別=選択構文  異常要素番号=6  有効要素数=5)
```

# 参考情報
この小技「選択」を使った記述例の記事はまだありません。見つけたら教えてくださいね。


# おわりに
いかがでしたでしょうか？なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕４０周年です。

## 本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕４０周年プロジェクト」の一環です。

興味を持たれた方は[日本語プログラミング言語Mind公式サイト](https://www.scripts-lab.co.jp/mind8download/download.html)にアクセスすると、Mindコンパイラをダウンロードできますよ。

[Mindプログラミングマニュアル（基本文法）](https://www.scripts-lab.co.jp/mind/ver8/doc/index.html)ページから気になるお題の構文を選んで、この記事のようにサンプル実装実行してQiitaにアウトプットしてみましょう！

筆者はMind7/8/9βで検証しておりますが、もちろんMind8だけでもじゅうぶんです。またお題が既存記事とかぶるのはまったく問題ありません。同じお題でみなさまの多様斬新なサンプルをお待ちしております:grinning:

面白い！、楽しい、カンタン、難しいのも書ける！みんなでやってみよう:relaxed: