はじめに
日本語プログラミング言語Mindの小技「ファイルのオープンとクローズ」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
9 ファイル操作
├論理ファイルの宣言
└ファイルのオープンとクローズ
ファイル(論理ファイル)は次のように宣言(定義)してから使用する。
構文=<論理ファイル>は ファイル。
<論理ファイル>は ファイル 長さ <バッファ長さ>。上段はバッファ長さを省略した形式で、この場合はバッファ長さは1024バイトである。
下段はバッファ長さを明示するもので、最低でも128バイトが必要であるが、特別な用途で0を指定することもできる。ファイルはアクセスする前に必ず「オープン」し、アクセスが終わった段階で「クローズ」する必要がある。
ファイルのオープンには次の2種類がある。構文=
(書き込み用)
<物理ファイル名>で <論理ファイル>を 新規オープンする → ・(読み出し用)
<物理ファイル名>で <論理ファイル>を オープンする → ・注:論理ファイル名の送り仮名「を」は必須
注:「オープン」から戻ったら必ずエラー検査をおこなうこと
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
Mindの小技「ファイルのオープンとクローズ」は、Mindのファイルの基本操作機能です。ファイルを読み書きするためには、必ず「オープン」して、操作終了後は「クローズ」します。
Mindの場合、ファイルの物理パス情報の文字列と「論理ファイル」という変数をセットにして「オープン」します。「論理ファイル」という変数のオープン時の送り仮名は「を」が必須となることで、「論理ファイル」を 物理ファイルパス文字列で 「オープン」する語順とすることもできます。
本記事では論理ファイルを読み出し用でオープンする際のご注意事項を説明します。
Mindプログラムソース
サンプル物理ファイルパスは 文字列定数 "c:\developments\vscode\mind9\sample.txt"。
サンプルファイルは ファイル。
メインとは (・ → ・)
サンプル物理ファイルパスで サンプルファイルを オープンし
エラー?
ならば 「サンプルファイルのオープンに失敗しました。(」を 表示し
エラー文字列を 表示し 「)」を 一行表示し
実行終わり
つぎに
「サンプルファイルをオープンしました。」を 一行表示し
ここから
データ終り?
ならば 打ち切り
つぎに
サンプルファイルから 一行読み出しし 一行表示し
繰り返し
サンプルファイルを クローズし
「サンプルファイルをクローズしました。」を 一行表示する。
オープン処理はファイルが存在しないなどのエラーが起きやすいポイントのため、エラー処理記述が推奨されています。
クローズ処理は書き込みモードでオープンした場合はエラー処理記述が推奨されていますが、今回の例では読み込みで最後の処理でもあるので割愛しています。
下記の記述でもOKです。
メインとは (・ → ・)
サンプルファイルを サンプル物理ファイルパスで オープンし
~略~
下記の記述はコンパイルエラーとなります。後で詳しく説明します。「論理ファイル」変数の宣言はグローバル必須のようです。
メインとは (・ → ・)
サンプルファイルは ファイル
サンプル物理ファイルパスで サンプルファイルを オープンし
~略~
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind lineread file
日本語プログラミング言語 Mind Version 8.11 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> lineread.exe
Mind8
C:\developments\vscode\mind9>mind lineread file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> lineread.exe
Mind7
C:\developments\vscode\mind9>mind lineread 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 -> lineread.exe
Mindプログラムソース(コンパイルエラーとなる例)
下記のように論理ファイル名をローカル変数として宣言するとコンパイルエラーとなります。エラー内容がちょっとわかりにくかったので共有しておきます。
サンプル物理ファイルパスは 文字列定数 "c:\developments\vscode\mind9\sample.txt"。
メインとは (・ → ・)
サンプルファイルは ファイル
サンプル物理ファイルパスで サンプルファイルを オープンし
~略~
コンパイル結果(コンパイルエラーとなる例)
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
Mind8
C:\developments\vscode\mind9>mind lineread file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 ..
コンパイルエラー:内部エラー(シンボル値を読む)。
モジュール名:lineread.src(6 行目)。
行内容 : サンプル物理ファイルパスで サンプルファイルを オープンし
infファイルは生成されず、コンパイルのエコーに直接出力されます。エラーの行位置は論理ファイルを使っている位置で出力されますのでご注意ください。
実行結果
つづいてコンパイル成功した方のソースコードを実行してみます。
ファイルが存在しない場合
C:\developments\vscode\mind9>type sample.txt
指定されたファイルが見つかりません。
C:\developments\vscode\mind9>
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
C:\developments\vscode\mind9>lineread
サンプルファイルのオープンに失敗しました。(No such file or directory)
C:\developments\vscode\mind9>
ファイルが存在する場合
C:\developments\vscode\mind9>type sample.txt
サンプルテキストファイルです。
C:\developments\vscode\mind9>
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
C:\developments\vscode\mind9>lineread
サンプルファイルをオープンしました。
サンプルテキストファイルです。
サンプルファイルをクローズしました。
C:\developments\vscode\mind9>
参考情報
この小技「ファイルのオープンとクローズ」を使った記述例の記事は未発見です。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。
本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕40周年プロジェクト」の一環です。
興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできます。
面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう