前回は、古式ゆかしくWRITE文とFORMAT文を使って「ラインプリンタ」風出力を行ってみました。実際は標準出力に印字するだけだけれども。今回はREAD文とFORMAT文をつかって「カードリーダ」(といっても磁気カードとかRFIDではないよん。紙カードだよ)からの読み込みを行ってみます。実際には標準入力なんだけれども。
※「 ソフトな忘却力」投稿順 Index はこちら
※実機動作確認には以下を使用しております。
-
- Windows 11 PC (i5-1235U)
- Ubuntu 24.04 LTS on WSL2
- QEMU 8.2.2
- FreeDOS 1.3
- OpenWatcom FORTRAN 77 Version 1.9
紙カードとカードパンチャ
今回はFORTRAN-77コンパイラに、太古の時代の紙カードからの入力っぽく動いていただこうという趣向っす。しかし、昨今のお姉さん、お兄さんがたには紙カードもカードパンチャも見たことない人がほとんどじゃないかと思うのでちょいとネットを検索してみました。
御本家IPSJ様のコンピュータ博物館の以下のページに「カードパンチャ」と「パンチカード」の写真があります。
【日立】 H-1562 カード穿孔機,H-1564 カード穿孔機,H-1592 カード穿孔機
個人的には、IBM製のオフライン『穿孔機』だった記憶なんだけれども、日立製でも雰囲気はかわりませぬなあ(古い話、日立はIBMと「プラグコンパチブル」機をやっていた遠い記憶。今となってはどーでもいい話かも知れんが。)
プログラミングもカード、ドドッドド。データもカード、ドッドドド(宮沢賢治か?)打ち間違えるとそのカードはダメダメね。カードは生協で100枚200円だったことをよく覚えておりますぞ。1000行のプログラム書こうと思ったら2000円か。今となってはとんでもないな。モッタイナイので左側しか使っていないプログラムカードを回収して「読み飛ばし」いれてデータ入力に使っておりましたぞ。
さて今回使用しているOpenWatcomのFORTRAN-77コンパイラ、古式ゆかしく、READ文でデバイス番号5を指定すると「カードリーダ」みたいです。ただし今時のパソコンに接続されているのはFelica系のRFIDを読み取るカードリーダであって、紙カードではないので無用。実際は標準入力から読み取るのでテキストファイルの1行1行をカードだと思って入力、リダイレクトしてやれば良いみたい。
今回使ったプログラム
今回使用したプログラムは、カード1枚から3個の浮動小数を読み取って、それをそのままラインプリンタに出力するもの。なんも処理なんてしないずら。プログラムはこんな感じ。
途中空白行など入れてないのは(勿論WatcomFORTRANは入れ放題だけれども)紙カード1枚2円のためです。キッチリ左寄せで書く(パンチする)のは後で回収して右側を使うためっす。ホントか?
ビルドしてEXECUTE
プログラムのビルドは以下で。
wfl /l=dos TREAD0.FOR
これで実行ファイル TREAD0.EXE が生成されます。
カード風に1行がカード1枚のつもりでデータを記入したファイル TREAD0.DAT を作製し、上記で生成したTREAD0.EXEプログラムに食わせたところが以下に。
読んで書いたな。これで紙カードリーダも自由自在か?