ものすごくマイナーな言語「PL/M」。苦労した記憶はあるけれど、仕様は完全に忘れました。

こんにちわ。

自分が昔、さわったことのあるプログラミング言語や、知っているプログラミング言語についてご紹介していますが、その中でもめちゃくちゃマイナーな言語「PL/M」をご紹介します。

さわったことがあるのは30年近く前、それも一度っきり。

しかもネットで情報を検索してもほとんど出てきません。

多少、間違っている?かもしれませんが、どんな言語なのか雰囲気が少しでも伝わればうれしいです。

スポンサーリンク
スポンサーリンク




PL/Mですが

PL/Iという言語があるのですが、言語仕様が複雑なため、大型計算機以外では余り使われませんでした、それをインテルのi8080のために作られたサブセット版がPL/Mです。

日本でも10~30年くらい前に使われていて、現在でも一部の機器などでPL/Mで開発されたプログラムが動いている。。。かもしれません。

特に組み込み系の高級言語での開発では、C言語が出てくるまではPascalやPL/Mでした。

共に、メモリの確保やポインターなどを利用したプログラミングが可能でした。

既に言語使用についてはほとんど忘れてしまいました。

ですが、do; で始まり、end ***; で終わったり、declare で変数の宣言してたと思います。

また、関数も同様に全て宣言します。

ちなみにPL/Mは、Programming Language for Microcomputersの略らしいです。

ぼくは、てっきり Programming Language for Manufacturingだと思ってました。(笑)

ウィキペディアにサンプルコードが載っていましたので、ご参考までに

FIND: PROCEDURE(PA,PB) BYTE;
  DECLARE (PA,PB) BYTE;
  /* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */
  DECLARE J ADDRESS,
    (K, MATCH) BYTE;
  J = BACK ;
  MATCH = FALSE;
    DO WHILE NOT MATCH AND (MAXM > J);
    LAST,J = J + 1; /* START SCAN AT J */
    K = PA ; /* ATTEMPT STRING MATCH AT K */
      DO WHILE SCRATCH(K) = MEMORY(LAST) AND
        NOT (MATCH := K = PB);
      /* MATCHED ONE MORE CHARACTER */
      K = K + 1; LAST = LAST + 1;
      END;
    END;
  IF MATCH THEN /* MOVE STORAGE */
    DO; LAST = LAST – 1; CALL MOVER;
    END;
  RETURN MATCH;
  END FIND;

こんな感じ

ぼくがさわったプログラムは

また、20代の社会人生活のカテゴリーでも書こうとおもっているのですが、ある東海地方の企業で、組み込み機器系のプログラムを書くことになった時です。

要は取引先の企業で大きな計測機器のシステムを作っていたのですが、そのプログラムの納品が間に合わないからと、応援に行くことになったわけです。

もちろん、うちの会社ではPL/Mなど書ける人がいなかったわけで、「とりあえず、こいつに行かせとくか。なんとなくほかの人の書いたプログラムを見よう見まねで書けると思うから」みたいな感じでぼくが行かされたわけです。

その計測機器ですが、なんだか切断された板状のものをカメラで移して、一定の大きさになっているかどうかを判定するような。。。そんなものだったと思います。

もちろん、コアの部分はぼくが書くわけではなく、データの格納や格納したデータを一覧で表示するようなそんな部分を担当させてもらいました。

新入社員で、しかも遠距離出張でのプログラミングでしたので、大変でしたけれどいい経験をさせてもらいました。

PL/Iも触ったことはありませんでしたし、パスカルチックな言語に振れたものもそれっきりでしたけれど。。。

今回も最後までおつきあい、ありがとうございました。

スポンサーリンク
スポンサーリンク




スポンサーリンク




シェアする

  • このエントリーをはてなブックマークに追加

フォローする