-- PureMind -- 日本語でプログラミング(その2)2020年02月16日 15:12

Mindでのプログラミングにだいぶ慣れてきました。前回掲載した練習プログラムも 実用レベルになりましたので、再掲載します。日常使いしています。

※ which.src -- 環境変数PATHに設定されたディレクトリを辿って指定されたファイルを探す。
※ 見つからない時は、何も表示しない。
※ ファイル名が'\'で始まる場合、'\'を無視する。

フルパス名文字列は 文字列実体 長さ 64。
元パス文字列は 文字列実体 長さ 128。

使い方表示とは
        "使い方: WHICH ファイル名"を 表示し 改行すること。

メインとは
        ファイル名文字列は 文字列

        起動パラメータを ファイル名文字列に 入れ
        ファイル名文字列が 空列? ならば
                使い方表示し 終り
        つぎに
        
        ファイル名文字列の 左端文字が '\'と 等しい ならば
                1だけ ファイル名文字列から 切り出し
        つぎに
        
        "PATH="で 環境変数の検索し
        環境変数を 元パス文字列に 入れ
        1だけ 元パス文字列を 右側取り出し ";"と 等しい文字列 でなければ
                元パス文字列に ';'を 一文字追加し
        つぎに
        
    ここから
        元パス文字列が 空列? ならば 打ち切り
        つぎに
            元パス文字列から ';'を 一文字検索
            元パス文字列を 分断し フルパス名文字列に 入れ
                        1だけ フルパス名文字列を 右側取り出し "\"と 等しい文字列 でなければ
                                '\'を フルパス名文字列に 一文字追加し
                        つぎに        
                        ファイル名文字列を フルパス名文字列に 追加し
                        フルパス名文字列 ファイル有り? ならば
                            フルパス名文字列を 大文字変換し
                            フルパス名文字列を 表示し 改行し
                                打ち切り
                        つぎに
        繰り返す。

このほかに、バッチファイルで使用するプログラムを2本作りました。バッチプログラムを組んでいると、 処理が終わった後に、現在のディレクトリ戻ってくるようにしたくなるときがあります。この様なときに 使用する小品です。一つは、現在のディレクトリを保存する"pushcdir.src"、保存したディレクトリに 移動する"popcdir.src"です。いずれもシンプルな物ですが、結構使い勝手があります。

まずは、"pushcdir.src"から。現在のディレクトリを取得してファイルに保存するだけです。

※ pushcdir.src -- 現行ドライブの現行ディレクトリを"C:\$$CDIR$$.TXT"に書き出す。

現行ディレクトリは 文字列実体 長さ 64。
現行ディレクトリ保管先は ファイル。

メインとは
        カレントドライブを 現行ディレクトリに 一文字追加し
        現行ディレクトリに ':'を 一文字追加し
        カレントドライブの 指定ドライブのカレントディレクトリを 現行ディレクトリに 追加し
        "C:\$$CDIR$$.TXT"で 現行ディレクトリ保管先を 新規オープンし
        現行ディレクトリを 現行ディレクトリ保管先に 一行書き込み
        現行ディレクトリ保管先を クローズする。

"popcdir.src"はこの様になっています。

※ popcdir.src -- "$$CDIR$$.TXT"ファイルから復元するディレクトリーを読みだし、
※ 現行ディレクトリーを変更する。

復元ディレクトリ保管先は ファイル。

メインとは
        復元ディレクトリは 文字列

        "C:\$$CDIR$$.TXT"で 復元ディレクトリ保管先を オープンし
        復元ディレクトリ保管先から 一行読み出し
        復元ディレクトリ保管先を クローズし
        読み出し文字列を 復元ディレクトリに 入れ
        復元ディレクトリ 0を 指定ドライブにカレントディレクトリ設定する。

この様にしてバッチファイルの中で使用します。

	@echo off
	pushcdir
	chdir \directory1
	JOOB1
	chdir \directory2
	JOB2
	popcdir
	@echo on

まず現在のディレクトリを保存し、directory1に移動してJOB1を実行し、 次にdirectory2に移動してJOB2を実行し、元のディレクトリに戻ります。

-- PureMind -- 日本語でプログラミング2020年02月05日 18:48

Pure Mind 5.1のマニュアル類

1985年頃でしょうか、パソコンが普及し始めたころ、日本語Basicとか「日本語」を冠したプログラミング 言語が沢山ありましたが、これらはダブルバイトの文字をデータとして取り扱えるとかコメントに書き込めることを 意味していました。この様な中で純粋な日本語でプログラムを書き下すことができる言語がありました。 Rigy Corporation/Micro Software Associatesから販売されていた「Mind」です。 当初はNECのPC-9801向けのパッケージでしたが、1990年頃には機種依存部分を取り除いた「Pure Mind」が 販売されました。当時から言語オタクであった私は後先考えず手を出しました。当時の私のパソコンには、 ハードディスクが無く、かろうじて日本語入力ができる程度でしたので、Mindのプログラムを心置きなく プログラムを書くには貧弱でしたので、いつしか、Mindから遠ざかってしまいました。

机を整理していたときに、Mindの資料やディスケットが出てきて懐かしく思い調べてみたところ、 DOS/Vの機能を使うためのパッケージなどが追加されて、Free WareとしてVectorから配布されていたことが 分かりました。現在は、Windows版が配布されています。PureMindをもう少し調べてみると Scripts Lab. Inc.にたどり着きました。最近は検索エンジンに 使われていたり、Androidのアプリ開発ができたりと進化しています。

DOS/V用の追加パッケージを入手したくダメ元で問い合わせたところ、Mindの開発者、片桐明氏から直々に メールをいただき、DOS/Vのパッケージだけでなく、PureMind 5.2基本パッケージまで入手することができました。 ありがとうございます。

早速DOS/V機にインストールし、プログラム作成の練習。Mindはforthと同様な構造で プログラムを組み立てます。短いロジックならばそのまま書けるのですが、ちょっと込み入ってくると、 お手上げ状態です。なんとか練習プログラムを完成させることができましたので、公開します。いわゆる"Which"です。 PATHに設定されたリストをたどって、引数の実行ファイルを探すプログラムです。

プログラムはこの様な感じです。 しゃべり言葉で書き下した感じがするプログラムになりました。なんとなく分かっていただけでしょうか。

フルパス名文字列は 文字列実体 長さ 64。

使い方表示とは
        "使い方: WHICH ファイル名"を 表示し 改行すること。

メインとは
    元パス文字列は 文字列
        ファイル名文字列は 文字列

        起動パラメータを ファイル名文字列に 入れ

        ファイル名文字列が 空列? ならば 使い方表示し 終り
        つぎに
        
        "PATH="で 環境変数の検索し
        環境変数を 元パス文字列に 入れ
        
    ここから
        元パス文字列が 空列? ならば 打ち切り
        つぎに
            元パス文字列から ';'を 一文字検索
            元パス文字列を 分断し フルパス名文字列に 入れ
                        '\'を フルパス名文字列に 一文字追加し
                        ファイル名文字列を フルパス名文字列に 追加し
                        フルパス名文字列 ファイル有り? ならば
                            フルパス名文字列を 大文字変換し
                            フルパス名文字列を 表示し 改行し
                        つぎに
        繰り返す。