3
1

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の小技 「論理ファイルをオープン」~論理ファイル動的確保してオープン~

Last updated at Posted at 2025-10-11

はじめに

日本語プログラミング言語Mindの小技「論理ファイルをオープン」について説明したいと思います。

対象読者

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

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

この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載はありません。

Mind7の付属の上級者向けドキュメントmind7\doc\file.docmに記載があります。

F4. ファイルのオープン
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

■論理ファイルをオープン
    ---------------------------
    <物理ファイル名>と <バッファ長さ>で
      論理ファイルをオープン
       → ファイル情報
    ---------------------------
 「論理ファイルを獲得」と「オープン」のコンビネーション処理です。スタティックな論理ファイルを使わず、ダイナミック獲得バッファによってオープンがおこなわれるので、メモリ消費を押さえることができます。
 エラーリターンが有るので、必ずエラー検査してください。エラー要因は、通常の「オープン」と類似していますが、「メモリが足りないのでファイルがオープンできません」というエラー種別が増えています。(「論理ファイルを獲得」に失敗した時)
 スタックにはファイル情報が返されるので、

        ○○は ファイル情報

で宣言した局所変数に格納してください。なお、エラーの時にはこの値は不定となります。

■論理ファイルをクローズ
  --------------------------------
  <ファイル情報> → ・
  --------------------------------
 「論理ファイルをオープン」あるいは「論理ファイルを新規オープン」によってオープンしたファイルのクローズに用います。
 内部処理としては、指定した論理ファイルをまずクローズし、次いで、その論理ファイルのために割り当てていたメモリを「論理ファイルを解放」によって解放します。
 エラーリターンが有ります。エラー要因は通常の「クローズ」と同じです。

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

対応バージョン

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

小技の解説

Mindの小技「論理ファイルをオープン」は、Mindのファイルの基本操作機能の一つです。

ファイルを読み書きするためには、必ず「オープン」して、操作終了後は「クローズ」します。このとき、Mindの場合はファイルの物理パス情報の文字列と「論理ファイル」という変数をセットにして「オープン」します。この「論理ファイル」の宣言は公式マニュアルにはグローバル宣言することが必須となっています。

「論理ファイルをオープン」は「論理ファイル」のグローバル宣言を行わずに内部で動的に確保して「ファイル情報」をスタックに返すことで、ファイルを操作できるようにするものです。

論理ファイルのファイル型変数をローカル宣言に変更し「論理ファイルを獲得」で設定していた下記の記事に使われたサンプルソースコードを改修して流用します。

Mindプログラムソース

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

ファイルをオープンして論理ファイルを返すとは (バッファサイズ → ・)
            バッファサイズは 変数
           読出ファイルは   ファイル情報
    
    バッファサイズに 入れ
    サンプル物理ファイルパスと バッファサイズで 論理ファイルをオープンし 
    読出ファイルに 入れ
    エラー?
    ならば 「サンプルファイルのオープンに失敗しました。(」を 表示し
        エラー文字列を 表示し 「)」を 一行表示し
            実行終わり
    つぎに
    「サンプルファイルをオープンしました。」を 一行表示し
    読出ファイルをかえすこと。

一行読み出してデータ終り?とは 処理単語 YV SQ WO
               ([クライアント実体]、ファイル情報 → 文字列、真偽)
       読出ファイルは ファイル情報
        読出バッファは 文字列実体情報
	交換し
	(→ ファイル管理テーブル、[クライアント実体])
    読み出し文字列で 省略時の文字列実体に積み換え 読出バッファに 入れ
    読出ファイルに 入れ
    読出ファイルから 読出バッファをつかい 一行読み出し
    読出ファイルが データ終り?。

ファイルをクローズするとは 処理単語 .V SQ (ファイル情報 → ・)
           読出ファイルは ファイル情報

    読出ファイルに 入れ
    読出ファイルで 論理ファイルをクローズし
    「サンプルファイルをクローズしました。」を 一行表示すること。

メインとは (・ → ・)
        サンプルファイルは ファイル情報

    200桁で ファイルをオープンして論理ファイルを返し サンプルファイルに 入れ

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

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

従来コードはメインの中に「ファイル情報」変数がローカル宣言されているのは同じですが、従来は「論理ファイルを獲得し」の結果として代入されて、ファイルのオープンはその後別にしていたことがわかります。

fileinfo5.src
メインとは (・ → ・)
        サンプルファイルは ファイル情報

    200桁で 論理ファイルを獲得し 真? 
    ならば サンプルファイルに 入れ
    さもなければ 捨て 
        「論理ファイルの獲得に失敗しました。」を 一行表示し
         実行終わり
    つぎに    

    サンプルファイルで ファイルをオープンし

コンパイル結果

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

Mind9

下図はMind9βです。

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

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

Mind8

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

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

Mind7

C:\developments\vscode\mind9>mind fileinfo6 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 -> fileinfo6.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>fileinfo6
サンプルファイルをオープンしました。
"サンプルテキストファイルの1行目です。"
"サンプルテキストファイルの2行目です。"
"サンプルテキストファイルの3行目です。"
"サンプルテキストファイルの4行目です。"
"サンプルテキストファイルの5行目です。"
サンプルファイルをクローズしました。

C:\developments\vscode\mind9>

いかがでしょうか?「論理ファイル」情報がオープン処理で返ってくるので、それを使って読み出し処理が正常動作していることがわかります。

参考情報

この小技「論理ファイルを獲得」を使った記述例の記事はまだありません。

おわりに

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

本記事シリーズのご紹介

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

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

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

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?