Ptr1 = Ptr1 - 16; Ptr2 = Ptr1 + (I*J);これらの演算を行うために、POINTERADD 組み込み関数を使用することもできます。 結果をロケーター参照として使用する場合には、POINTERADD を使用しなければ なりません。例えば、以下のようになります。
(Ptr1 + 16) -> Based_ptr is invalid pointeradd(Ptr1,16) -> Based_ptr is valid
Bin31 = Ptr2 - Ptr1;
if Ptr2 > Ptr1 then
Bin31 = Ptr2 - Ptr1;Bin31 = Bin31 + binaryvalue(Ptr1);
dcl 1 Cvtprt pointer based(pointervalue(16));
dcl 1 Cvt based(Cvtptr),
2 Cvt ...;
必要であれば、式は FIXED BINARY(31,0) に変換されます。PL/I ブロックでは、ポインター算術を使用して、 構造体または配列変数内の任意のエレメントにアクセスすることができます。 ただし、ブロックは、構造体あるいは配列変数の入っているものに渡さなければならず、その名前の有効範囲内に参照できる集合を持っていなければなりません。