2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mindの小技 「プログラム実行」~2つの終了パラメータ~

Posted at

はじめに

日本語プログラミング言語Mindの小技「プログラム実行」について説明したいと思います。

対象読者

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

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

この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
9 ファイル操作
└外部プログラムの実行
 └プログラム実行

Mindのプログラム内から外部のプログラムを実行することができる。

構文=
<文字列(プログラム名と引数)>を プログラム実行 → <真/偽>

 ちょうど、コマンド プロンプトの中でキー入力したコマンドを実行するときのようにプログラムを実行できる。
 戻値として偽(0)が返されるのは、指定したプログラムが見つからないか、あるいはその他のエラーの場合である。その場合は「エラー文字列」や「エラー表示」を使用することでエラー判定と処理をおこなうことができる。

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

対応バージョン

■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版

小技の解説

Mindのいくつかある外部プログラムの起動処理の一つである「プログラム実行」について説明します。

「プログラム実行」では、起動した外部プログラムが終了するまで、起動したMind側のプログラムコードは待機します。いわゆる同期的に実行の類となります。非同期的に外部プログラムを実行する処理単語は本記事の対象外となりますので、別の機会に説明したいと思います。

「プログラム実行」に関連して、公式マニュアルに記載のある2つの終了パラメータについても説明いたします。

9 ファイル操作
└外部プログラムの実行
 └子プロセスの終了パラメータ
 └終了パラメータ

構文=
子プロセスの終了パラメータは 変数。   (標準ライブラリ内の大域変数)

 標準ライブラリ内に定義された大域変数である。
 「プログラム実行」が成功して子プロセスから戻った時、その子プロセスの終了パラメータ(終了コード)をこの変数を見ることで参照できる。

構文=
終了パラメータは 変数。         (標準ライブラリ内の大域変数)

 先の「子プロセスの終了パラメータ」と似ていてまぎらわしいが、先のは自分が呼び出し親であり子プロセスでの実行結果を知りたい場合に使うものだったが、本変数は、自身のプログラムが親から呼び出される場合に、自身から親に終了コードを戻したい場合に使う。立場が逆になったものである。

「子プロセスの終了パラメータ」は、Mindのプログラムコードがなんらかの外部プログラムを「プログラム実行」で起動した後、外部プログラム側が返却した終了パラメータを親であるMindプログラムの側が処理するための変数です。

「終了パラメータ」は、Mindのプログラムコードがなんらかの親プログラムから起動された後、終了状態を親プログラムに返却するための変数です。

以下のサンプルプログラムでは、親側プログラム、子側プログラムの双方をMindで記述して説明します。

Mindプログラムソース

親側

childprocessP.src
メインとは  (・ → ・)
    「親プロセス実行開始しました。」を 一行表示し

    "childprocessD"を プログラム実行し 偽?
  ならば 「エラー:」を 表示し エラー表示し
  つぎに
    "childprocessC"を プログラム実行し 偽?
  ならば 「エラー:」を 表示し エラー表示し
  つぎに
    
    「子プロセスの終了パラメータ:」を 表示し    
    子プロセスの終了パラメータを 数値表示し 改行し
    「親プロセス実行終了しました。」を 一行表示すること。

"childprocessD"というプログラムは存在しないことに注目してください。

子側

childprocessC.src
メインとは  (・ → ・)
    「子プロセス実行しました。」を 一行表示し
    終了パラメータに -1を 入れること。   

コンパイル結果

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

Mind9

下図はMind9βです。

C:\developments\vscode\mind9>mind childprocessP file   

日本語プログラミング言語 Mind Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> childprocessP.exe

Mind8

C:\developments\vscode\mind9>mind childprocessP file

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

Mind7

C:\developments\vscode\mind9>mind childprocessP 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 -> childprocessP.exe

実行結果

つづいて実行してみます。
下記のような実行プログラムが生成されています。

C:\developments\vscode\mind9>dir childprocess*.exe

 C:\developments\vscode\mind9 のディレクトリ
2025/08/02  09:08            57,344 childprocessC.exe
2025/08/02  08:58            57,344 childprocessP.exe
               2 個のファイル             114,688 バイト

Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
最初にchildprocessCを単独起動し、続いてchildprocessPを起動します。(childprocessPによってchildprocessCも起動されます。)

C:\developments\vscode\mind9>childprocessC
子プロセス実行しました。

C:\developments\vscode\mind9>childprocessP 
親プロセス実行開始しました。
エラー:No such file or directory
子プロセス実行しました。
子プロセスの終了パラメータ:65535
親プロセス実行終了しました。

c:\developments\vscode\mind9>

childprocessDを実行した箇所ではエラーが返ってきていることがわかります。
childprocessCを実行した箇所では、表示内容よりchildprocessCが起動して正常実行したことがわかります。
終了パラメータはchildprocessC側で-1をセットしたところchildprocessP側の表示処理では65535と表示されましたので16ビット変数であることがわかります。

参考情報

この小技「プログラム実行」を使った記述例の記事はいくつかあります。

2つの終了パラメータを使った記事は未発見です。

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。

本記事シリーズのご紹介

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

興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできます。

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

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?