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の小技 「データ終り?」~EOFの安全な判定~

Last updated at Posted at 2025-10-04

はじめに

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

対象読者

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

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

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

 構文=<論理ファイル>から 一行読み出し → <文字列>
         ↑
 論理ファイル名の送り仮名は必須で、「から」のほか、「より」、「を」も可

論理ファイルから1行分の文字列を読み出す。

※本記事の主題は「一行読み出し」ではないので、詳しい注意書きは割愛します。全文はMindの小技「一行読み出し」または公式マニュアルをご参照ください。

構文= データ終り? → <真/偽>

 ファイルからの読み出しで必ず使う処理単語である。
 最後のデータを読み出したあと、なおもデータを読み出した場合に真が返される。真が返された場合には、直前の読み出しは無効なので、データを使用してはならない。

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

対応バージョン

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

小技の解説

Mindの小技「データ終り?」は、MindのファイルのEOF判定機能です。公式マニュアルより詳しい説明が、Mind7の付属の上級者向けドキュメントmind7\doc\file.docmにあります。

F5. ファイルの読み書き
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■データ終り?
 機能拡張されました。次の二通りの記述が可能です。
    --------------------------------
              データ終り? → 真/偽
    <論理ファイル>が データ終り? → 真/偽   (←新規機能)
            ↑送り必須
    --------------------------------
のどちらも使用できます。たとえば、二つのファイルを交互に読むようなケースで、それぞれの読み出し操作をした後からでも「データ終り?」を見ることができます。

基本的に論理ファイルを省略した場合は、直前に「一行読み出し」を行った論理ファイルのEOFが判定されますが、安全に判定するには論理ファイルを指定してセットで記述しておくとよいです。

下記のソースはあくまで「データ終り?」のサンプルのため、ローカル変数「ファイル情報」を使っていません。「ファイル情報」というローカル変数については別の記事で解説します。

Mindプログラムソース

iseof.src
サンプル物理ファイルパスは 文字列定数 "c:\developments\vscode\mind9\sample.txt"。
サンプルファイルは         ファイル。

サンプルファイルをオープンするとは (・ → ・)
    サンプルファイルを サンプル物理ファイルパスで オープンし
    エラー?
    ならば 「サンプルファイルのオープンに失敗しました。(」を 表示し
        エラー文字列を 表示し 「)」を 一行表示し
            実行終わり
    つぎに
    「サンプルファイルをオープンしました。」を 一行表示すること。

サンプルファイルを一行読み出してデータ終り?とは (・ → 文字列、真偽)
    サンプルファイルを 一行読み出し
    サンプルファイルが データ終り?。

サンプルファイルをクローズするとは (・ → ・)
    サンプルファイルを クローズし
    「サンプルファイルをクローズしました。」を 一行表示すること。

メインとは (・ → ・)
    
    サンプルファイルをオープンし

    ここから
        サンプルファイルを一行読み出してデータ終り?
        ならば    捨てて 打ち切り
        さもなければ ダブルクオートで囲んで表示し 改行し 
        つぎに
    繰り返し

    サンプルファイルをクローズすること。

ローカル変数「ファイル情報」を使わず「一行読み出してデータ終り?」をライブラリ単語化したので、グローバル変数の論理ファイル名で装飾しています。

コンパイル結果

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

Mind9

下図はMind9βです。

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

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

Mind8

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

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

Mind7

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

実行結果

つづいて実行してみます。
sample.txtは下記の内容です。

C:\developments\vscode\mind9>type sample.txt 
サンプルテキストファイルの1行目です。
サンプルテキストファイルの2行目です。
サンプルテキストファイルの3行目です。
サンプルテキストファイルの4行目です。
サンプルテキストファイルの5行目です。
C:\developments\vscode\mind9>

Mind7/8/9β

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

C:\developments\vscode\mind9>iseof
サンプルファイルをオープンしました。
"サンプルテキストファイルの1行目です。"
"サンプルテキストファイルの2行目です。"
"サンプルテキストファイルの3行目です。"
"サンプルテキストファイルの4行目です。"
"サンプルテキストファイルの5行目です。"
サンプルファイルをクローズしました。

C:\developments\vscode\mind9>

いかがでしょうか?イメージがつかめれば幸いです。

参考情報

この小技「データ終り?」を使った記述例の記事は下記となります。
ファイルのオープンをする際の注意事項はこちらをご参照ください。

おわりに

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

本記事シリーズのご紹介

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

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

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

2
0
0

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?