PL/I

PL/I（ピーエルワン）は、汎用プログラミング言語の一つ。名前は英語の「」に由来する。

PL/Iは科学技術用、工業用、商業用などにデザインされた命令型プログラミング言語である。1964年に生まれ、教育機関、商用、工業で使用されてきた。

PL/Iの主要な用途はデータ処理で、再帰および構造化プログラミングに対応する。言語の構文は英語に似ており、検証や操作が可能な幅広い機能のセットを持ち、複合的なデータ型を記述することに適している。

 呼称 
提案当時は「NPL」英語「」に由来する名前。と呼ばれていた。初期には「PL/1」と表記していたが、その後「PL/I」が正式名称となった（I はローマ数字）。同時期の「DL/I」（ディー・エル・ワン、IBMの階層型データベース照会言語）と同じネーミングと考えられる。

 特徴 
 言語としての特徴 
FORTRANの記述形式
COBOLのレコード構造や入出力機能
ALGOLのアルゴリズム記述能力
を同時に持っている。

予約語が無いのも特徴。

 長所 
商用計算と科学技術計算を、1つの言語で記述できる
最初から構造化されている
積み木構造(初歩的機能から入門し、徐々に高度な機能を学習できる)
IBMメインフレーム(OS/390、z/OS、IMS、CICSなど)で広く使われている

 短所 
言語仕様が複雑で大規模なため、当時の小型機では性能的に厳しく、大型機以外に広まらなかった

 歴史 
1963年 IBMとそのユーザー団体(SHARE)が提案

1965年 IBMが完成させた

1979年 ISOで標準化

科学技術計算向けのFORTRAN、ビジネス処理向けのCOBOLと言われていた時代に、ALGOL並のアルゴリズム記述能力も加え、ひとつの言語であらゆるニーズを満たすために開発されたプログラミング言語。

言語仕様が複雑なため、大型計算機以外では余り使われなかったが、デジタルリサーチ社のゲイリー・キルドールが、インテルのi8080のために、サブセット版のPL/M英語「」に由来する名前。および、一部をPL/Mで記述し、オペレーティングシステムCP/Mを作った。また、CP/M上で動作するPL/I(PL/I-80)も作成している。

UNIX開発のきっかけとなったMultics（のちにMulticsは「成功しなかったプロジェクト」と見なされることとなる）は、PL/Iで書かれていた。Multicsの失敗はPL/Iが原因ではなかったものの、記述言語においても簡潔極まるC言語を生んだ事は皮肉である。これについてはエピソードも参照のこと。

2016年時点でも、メインフレームで稼働する銀行の勘定系システムの多くはCOBOLまたはPL/Iで記述されているFinTech時代の今、COBOLやPL/I、メインフレームが勘定系システムで必要な理由 - atmarkIT。

 エピソード 
IBMのPL/Iコンパイラでは、メッセージIDが「IBM」で始まる。IBMが当時PL/Iに力を入れていたためと言われている。

BSDがネットワークサポートの一環としてカーネルにネットワークインタフェースの構造体を導入した際、これをstruct ifnetと名付けた。その際、コメントとしてWould like to call this struct ``if'', but C isn't PL/1.（この構造体をstruct ``if''と呼びたいところだが、C言語はPL/1ではない。）が添えられた。 本文にある当該コメントが削除されたコミット。

 コードの実例 
HELLO:PROC OPTIONS(MAIN);
 DCL HELLO1        CHAR(12)  INIT('HELLO WORLD!');
 DCL 1 HELLO2,
      2 HELLO2_1   CHAR(12)  INIT('HELLO WORLD!');
 DISPLAY('HELLO WORLD!');
 DISPLAY(HELLO1);
 DISPLAY(HELLO2);
END HELLO;

 関連項目 
 COBOL
 FORTRAN
 ALGOL

 脚注 
注釈

出典

 外部リンク 
IBM Enterprise PL/I for z/OS V3.9の発表(2009年10月21日) - 日本IBM
PL/I RESOURCES
Micro Focus Open PL/I
PL/I for GCC（GCCにPL/Iのフロントエンドを開発するプロジェクト）

Category:プログラミング言語