はじめに
日本語プログラミング言語Mindの小技「重大エラー」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
9 ファイル操作
└重大エラーについて
Mindでいう「重大エラー」というのは、文字通り、重大な(致命的な)エラーであり、プログラムがこれ以上処理を続行できないと(Mindシステムが、あるいはユーザプログラムが)判断した場合を指す。プログラムは強制的に終了させられる。
処理単語としての「重大エラー」は、言ってみれば「重大エラーにする」というニュアンスの処理単語であり、そのようなエラーをわざと引き起こす。Mind標準ライブラリが内部で使っているが、ユーザーも使うことができる。
「重大エラー」を実行すると、次のようなことが行われる。
・ スタックで渡された文字列をコンソールに表示する
・ 処理単語「音を鳴らす」を実行する(ビープ音が鳴る)
・ 現在オープン中の全ファイルを強制クローズする
・ プログラムの実行を強制終了する・
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
Mindの小技「重大エラー」は、Mindのプログラム実行制御機能の一つです。単語内でプログラムの実行継続が困難と判定されるようなエラーが予想される場合、その状態を判定する判定文の後にこの単語を記述すると、プログラム実行を強制終了させることができます。
強制終了直前にコンソールへ表示する文字列を指定します。
構文= <文字列>で 重大エラー → ・ (プログラム実行終了)
文字列を指定しない場合はコンソール出力はなにもせずにほとんどの場合強制終了します。こちらは厳密にはスタック不整合になりますので推奨されません。
構文= 重大エラー → ・ (プログラム実行終了)
本記事では詳しく紹介していませんが、組み込みのエラー判定単語を使えば、組み込みのエラー文字列を指定することもできます。
Mindプログラムソース
チェック値が0ならば重大エラーとは (チェック値 → ・)
チェック値は 変数
チェック値に 入れ
「処理単語の実行が開始されました。」を 一行表示し
「チェック値:」を 表示し チェック値を 数値表示し 改行し
チェック値が 0に 等しい
ならば
「処理単語の実行中に重大エラーが発生しました。」で 重大エラー
つぎに
「10をチェック値で割った値:」を 表示し
10を チェック値で 割り 数値表示し 改行し
「処理単語の実行が正常終了しました。」を 一行表示すること。
メインとは (・ → ・)
「プログラムの処理が開始されました。」を 一行表示し
0で チェック値が0ならば重大エラーとして
「プログラムの処理が正常終了しました。」を 一行表示すること。
0で除算した場合はMindのランタイム側で組み込みエラー文字列を表示して重大エラーとなりますが、ここではよくある例として0除算を事前にチェックして重大エラーとする例としています。
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind criticalerror file
日本語プログラミング言語 Mind Version 9.03 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\mind9-beta\Mind9-beta-7\bin\mindex.exe --> criticalerror.exe
Mind8
C:\developments\vscode\mind9>mind criticalerror file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> criticalerror.exe
Mind7
C:\developments\vscode\mind9>mind criticalerror 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 -> criticalerror.exe
実行結果
つづいて実行してみます。
Mind7/8/9β
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
C:\developments\vscode\mind9>criticalerror
プログラムの処理が開始されました。
処理単語の実行が開始されました。
チェック値:0
処理単語の実行中に重大エラーが発生しました。
C:\developments\vscode\mind9>
いかがでしょうか?イメージがつかめれば幸いです。
ソースコードの下記のヶ所で0を2に修正して実行するとプログラムは完走します。
メインとは (・ → ・)
~略~
2で チェック値が0ならば重大エラーとして
~略~
C:\developments\vscode\mind9>criticalerror
プログラムの処理が開始されました。
処理単語の実行が開始されました。
チェック値:2
10をチェック値で割った値:5
処理単語の実行が正常終了しました。
プログラムの処理が正常終了しました。
C:\developments\vscode\mind9>
処理単語内で重大エラーを実行するとその時点で実行終了していたことがわかります。
参考情報
この小技「重大エラー」を使った記述例は下記の記事が該当しています。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。
本記事シリーズのご紹介
- ほとんどの記事ではMind7、8、そして9βでの検証を行っています。
- Mind8公式マニュアルの基礎情報をベースに、Mind7・8の上級者向け情報も網羅しています。
興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできますよ。
面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう
しい、カンタン、難しいのも書ける!みんなでやってみよう![]()