Network Users' Group ``wheel'' / Dai ISHIJIMA's Page / ソフトウェアのページ
CP/MとTurbo Pascalでリダイレクト | CP/Mで日本語表示

最終更新日: 2013-01-07
初版: 2001/10/13


CP/MとTurbo Pascalでリダイレクト

1986年〜1987年頃


どうしてこんなのを作ったのか

大学の計算機センターで、プログラミングの講義で使ったのがPascalでした。 今でこそ言語処理系はフリーのものがたくさんありますが、 当時は本格的 (といっても講義で出てくる課題のプログラム程度ですが) な処理系は高価なものばかりでした。

そんななかで、学生でも手の届きそうなのが、 ボーランド社から発売されていたTurbo Pascalでした。 しっかりしたマニュアル、よくできたスクリーンエディタ、 高速なコンパイル(もちろん当時の基準で :-)…。

そのころ使っていたのは8ビットのPC-8801という「マイコン」で、 CP/MというOSが動いていました。 貧弱な環境ながらも、それなりに楽しくプログラミングの勉強ができました。

講義を担当していた先生からすすめられて読んだのが、 いわゆる「古典」である「ソフトウェア作法」でした。 その本には、 「君の使っている処理系にはリダイレクトやパイプラインの機能はあるのか。 なかったら実装してみなよ」 という感じの演習問題がありました。

CP/Mには、 入出力をプログラムが走るときに切替えるリダイレクトの機能は残念ながら ありませんでした。 もちろん、パイプラインもありません。

同じ頃に友人が使っていたMS-DOSにはついていましたが、、、

じゃあ、なかったら作ろうか、となったしだいです。

コマンドラインに「>」や「<」があったら、その次に書かれているものは ファイル名として処理するようにしました。 これでリダイレクトはなんとかできるようになりました。

次は、プログラムの出力を別のプログラムにつなぐ「パイプライン」です。

MS-DOSでは、パイプラインは中間ファイルをつかって実装されていました。

  prog1 | prog2
は、中間ファイルの名前を「tempfile.dat」とすると、
  prog1 > tempfile.dat
  prog2 < tempfile.dat
と等価ということです。

では、これをCP/Mでどう真似るかです。 幸い、CP/Mには「SUBMIT」という、 MS-DOSのバッチファイルの祖先のような機能がありました。 そこで、コマンドラインに「|」があれば、 上のように展開してプログラムを順に実行するようにしました。

ここまでやってしまうと「ソフトウェア作法」に出てくる プログラムを「じゃ、Turbo Pascalで書いてみるか」となってしまって 次のサンプルプログラムを作りました。

こんな大昔の話でも、 なつかしんでいただける方々もいらっしゃるようですね。

サンプルプログラム

関連リンク