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 ファイル操作
└ファイルへの追加書き込み
 ├アペンドモード
 └ファイルポインタの設定

構文=アペンドモードにする → ・

 「アペンドモード」を実行すると、これに続いて行う「オープン」が書き込みモードでおこなわれ、その論理ファイルに対して書き込みができるようになる。(本来、「オープン」は読み出しモードなのだが、特別に書き込みモードになる)

  <論理ファイル>の ファイルポインタを先頭に設定 → ・
<位置>を <論理ファイル>に ファイルポインタを設定    → ・
構文=
      <論理ファイル>の ファイルポインタを末尾に設定 → ・
<位置>を <論理ファイル>に ファイルポインタを末尾からの位置に設定 → ・

<移動量>だけ <論理ファイル>を ファイルポインタを移動 → ・

       注:本単語から戻ったらエラー検査をおこなうこと
 この処理単語群は、ファイルポインタ(次にファイルをアクセスする位置)を指定た箇所に移動するものである。なお、ファイルをオープンした直後のファイルポインタは0(ファイル先頭)である。

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

対応バージョン

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

小技の解説

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

ファイルをオープンする直前に「アペンドモード」を実行することで、既存ファイルの「オープン」の実行が追加書き込みモードになります。「ファイルポインタを末尾に設定」を実行することで、ファイルの最終行に1行書き込むことができます。

また、Mindで用意されている「ファイルポインタの設定」単語群でファイルポインタの位置を移動することで、いろいろな位置に1行書き込むことができます。

Mindプログラムソース

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

メインとは (・ → ・)

    アペンドモードにして
    サンプル追記ファイルを サンプル物理追記ファイルパスで オープンし
    エラー?
    ならば 「サンプル追記ファイルのオープンに失敗しました。(」を 表示し
        エラー文字列を 表示し 「)」を 一行表示し
            実行終わり
    つぎに  
    「サンプル追記ファイルをオープンしました。」を 一行表示し

    サンプルファイルを サンプル物理ファイルパスで オープンし
    エラー?
    ならば 「サンプルファイルのオープンに失敗しました。(」を 表示し
        エラー文字列を 表示し 「)」を 一行表示し
            サンプル追記ファイルを クローズし
            「サンプル追記ファイルをクローズしました。」を 一行表示し
    実行終わり
    つぎに  
    「サンプルファイルをオープンしました。」を 一行表示し

    サンプル追記ファイルの ファイルポインタを末尾に設定し
    「サンプル追記ファイルのファイルポインタを末尾に設定しました。」を 一行表示し
    ここから
        データ終り?
        ならば 打ち切り
        つぎに
        サンプルファイルから 一行読み出しし
        サンプル追記ファイルへ 一行書き込みし
            エラー?
            ならば 「サンプル追記ファイルへの一行書き込みに失敗しました。(」を 表示し
                エラー文字列を 表示し 「)」を 一行表示し
                    打ち切り
            つぎに  
    繰り返し


    サンプルファイルを クローズし
    「サンプルファイルをクローズしました。」を 一行表示し
    サンプル追記ファイルを クローズし
    エラー?
    ならば 「サンプル追記ファイルのクローズに失敗しました。(」を 表示し
      エラー文字列を 表示し 「)」を 一行表示し
    さもなければ
        「サンプル追記ファイルをクローズしました。」を 一行表示し
    つぎに。

追記用ファイルの末尾から一行書き込みする場合、追記用ファイルをアペンドモードでオープンした後、書き込み開始する前に「ファイルポインタを末尾に設定」を実行するように記述するのを忘れないでください。

コンパイル結果

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

Mind9

下図はMind9βです。

C:\developments\vscode\mind9>mind linewriteappend 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 linewriteappend file

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

Mind7

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

実行結果

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

C:\developments\vscode\mind9>type sample.txt 
サンプルテキストファイルの1行目です。
サンプルテキストファイルの2行目です。
サンプルテキストファイルの3行目です。
サンプルテキストファイルの4行目です。
サンプルテキストファイルの5行目です。
C:\developments\vscode\mind9>
c:\developments\vscode\mind9>copy sample.txt sampleappend.txt
        1 個のファイルをコピーしました。

c:\developments\vscode\mind9>

Mind7/8/9β

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

C:\developments\vscode\mind9>linewriteappend
サンプル追記ファイルをオープンしました。
サンプルファイルをオープンしました。
サンプル追記ファイルのファイルポインタを末尾に設定しました。
サンプルファイルをクローズしました。
サンプル追記ファイルをクローズしました。

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


c:\developments\vscode\mind9>

5行目に1行目が改行されずに追記されている点ですが、下記の原因による現象です。
sample.txtは、最終行には改行がなくEOFしているだけでテキストエディタで作成したファイルです。
sampleappend.txtはsample.txtをコピーしたファイルです。同じ状態のsampleappend.txtの末尾からの一行書き込みは最終行内に同じ行として追記されて改行されました。

参考情報

この小技「追加書き込み」を使った記述例の記事は未発見です。

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

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。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?