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の小技 「逆方向に一行読み出し」~シーケンシャルファイル逆方向読み出し~

Posted at

はじめに

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

対象読者

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

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

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

構文=<論理ファイル>から 逆方向に一行読み出し → <文字列>
          ↑
   論理ファイル名の送り仮名は必須で、「から」のほか、「より」、「を」も可
 この機能は他のプログラム言語にはない、Mindだけの特徴である。
 「逆方向に一行読み出し」は「一行読み出し」とそっくりの処理単語である。 ただし、末尾行から始めて先頭行に向かって読むのが特徴である。

 なお、オープン直後ではこの単語を実行しても何も読み出されない(最初から データ終り? が真を返す)ので注意したい。
 そのため、「オープン」のあとで、「ファイルポインタを末尾に設定」(後述)を必ず実行する。

構文=<論理ファイル>の ファイルポインタを末尾に設定 → ・
  注:本単語から戻ったらエラー検査をおこなうこと

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

対応バージョン

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

小技の解説

Mindの小技「Mindの小技「逆方向に一行読み出し」は、Mindのシーケンシャルファイルのラインリード機能の1つです。Windows版の場合は改行コードで終端された行データを1行づつ読み出します。

ファイルをオープンした直後に、「ファイルポインタを末尾に設定」を実行することで、ファイルの最終行から先頭行に向かって1行づつ読み出すことができます。

Mindプログラムソース

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

メインとは (・ → ・)

    サンプルファイルを サンプル物理ファイルパスで オープンし
    エラー?
    ならば 「サンプルファイルのオープンに失敗しました。(」を 表示し
        エラー文字列を 表示し 「)」を 一行表示し
            実行終わり
    つぎに
    
    「サンプルファイルをオープンしました。」を 一行表示し
    サンプルファイルの ファイルポインタを末尾に設定し
    「ファイルポインタを末尾に設定しました。」を 一行表示し
    ここから
        データ終り?
        ならば 打ち切り
        つぎに
        サンプルファイルから 逆方向に一行読み出しし 一行表示し
    繰り返し

    サンプルファイルを クローズし
    「サンプルファイルをクローズしました。」を 一行表示する。

ファイルをオープンした後、読み出し開始する前に「ファイルポインタを末尾に設定」を実行するように記述するのを忘れないでください。

コンパイル結果

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

Mind9

下図はMind9βです。

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

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

Mind8

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

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

Mind7

C:\developments\vscode\mind9>mind linereadopposit 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 -> linereadopposit.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>linereadopposite
サンプルファイルをオープンしました。
ファイルポインタを末尾に設定しました。
サンプルテキストファイルの5行目です。
サンプルテキストファイルの4行目です。
サンプルテキストファイルの3行目です。
サンプルテキストファイルの2行目です。
サンプルテキストファイルの1行目です。

サンプルファイルをクローズしました。

C:\developments\vscode\mind9>

テキストファイルの最後の行から先頭に向かって読み込めていることがわかりますね。

公式マニュアルにも注意喚起されていますが「ファイルポインタを末尾に設定」の記述を忘れた場合の動作を念のため検証しておきます。

「ファイルポインタを末尾に設定」の記述をコメントアウトします。コンパイルは正常です。

linereadopposit.src
    ~略~
    「サンプルファイルをオープンしました。」を 一行表示し
    ※サンプルファイルの ファイルポインタを末尾に設定し
    ※「ファイルポインタを末尾に設定しました。」を 一行表示し
    ここから
        データ終り?
        ならば 打ち切り
        つぎに
        サンプルファイルから 逆方向に一行読み出しし 一行表示し
    繰り返し
    ~略~

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

C:\developments\vscode\mind9>linereadopposite
サンプルファイルをオープンしました。

サンプルファイルをクローズしました。

C:\developments\vscode\mind9>

参考情報

この小技「逆方向に一行読み出し」を使った記述例の記事は未発見です。

ファイルのオープンをする際の注意事項はこちらをご参照ください。

おわりに

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

本記事シリーズのご紹介

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

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

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

2
0
1

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?