PL/I はブロックで編成される言語であり、パッケージ、 プロシージャー、開始ブロック、ステートメント、式、 および組み込み関数から構成されます。
PL/I アプリケーション は、 ロード・モジュール と呼ばれる、 1 つまたは複数の個別にロード可能なエンティティーから構成されます。 ロード・モジュールは、1 つまたは複数の独立した コンパイル・エンティティー (コンパイル単位 (CU) と呼ばれます) から 構成されます。 特に明記されていない限り、プログラム とは、 PL/I アプリケーションまたはコンパイル単位のことを意味します。
コンパイル単位は、PL/I PACKAGE または外部 PROCEDURE です。 各パッケージには、0 個かそれ以上のプロシージャーが含まれます。 プロシージャーのいくつかは搬出可能です。 PL/I 外部プロシージャーまたは内部プロシージャーには、 0 個かそれ以上のブロックが入ります。 PL/I ブロックは、 PROCEDURE または BEGIN ブロックのいずれかであり、 それぞれのブロックに、ステートメントまたはブロック (あるいはその両方) が含まれ ます。(設定されない場合もあります)
PL/I ブロックで、高位モジュラー・アプリケーションを処理することができます。 なぜなら、ブロックには、変数名やストレージ・クラスを定義する宣言を入れることができるからです。 そのため、単一ブロックまたはブロック・グループに対して変数の 有効範囲を制限することができます。あるいは、コンパイル単位 またはロード・モジュール全体を通してそれを指定することができます。
ブロックをそれ自体に入れる程度を自由に決めることができるので、 PL/I は、コードを再使用できるよう、 多数のコンパイル単位やアプリケーションが共用できるブロックを 処理することができます。
図 2 で、アプリケーション構造を説明しています。
パッケージについては、パッケージで記載しています。
プロシージャーについては、プロシージャーで記載しています。
開始ブロックについては、開始ブロックで記載しています。