PL/I で (場合により符号付き) 整数定数が必要とされる場合、制限付き式を使用できます。制限付き式は、コンパイル時に値が計算され、定数として使用される式です。たとえば、式を使用することで、次にような場合に必要な定数を定義できます。
- 静的宣言での文字列の長さ
- 他の (構造体メンバーではない) 記憶域クラスの文字列の長さ
- 静的宣言でのエクステント
- 静的初期化で使用される値
制限付き式は通常の式と同じですが、個々の作用対象は次のいずれかである必要があります。
- 定数または名前付き定数。名前付き定数は、使用する前に宣言する必要があります。
- 制限付き式に適用される組み込み関数。
組み込み関数を使用する場合は、次のいずれかのカテゴリの関数でなければなりません。
- 文字列処理関数 (COPY、REPEAT、LOW、および HIGH)
- 配列処理関数 (DIMENSION、LBOUND、および HBOUND)
- 記憶域制御関数 (BINARYVALUE、LENGTH、MAXLENGTH、NULL、OFFSETVALUE、POINTERVALUE、SIZE、STORAGE、および SYSNULL)
制限付き式の評価は、エントリ宣言の RETURNS 記述子で行われます。