UNALIGNED 属性がレベル 1 構造体レベルで指定されている場合のように、すべての構造体がマップされるようにします。
このオプションは、DEC VAX PL/I のバージョンとの互換性のために用意されています。
-zp1 を使用したコンパイルは、すべての構造体を効果的にパックするため、データ整列に使用されるパッド バイトはすべて除外されます。これは、メインフレームが送信元のファイルにデータ項目がパックされている、または整列されていないレコードを含む場合に便利です。
-zp1 を設定する場合、ずれたデータがハードウェア例外を引き起こす可能性のある RISC アーキテクチャでは特に、コンパイラは予防策を講じる必要があります。
-zp1 コンパイラ オプションは次のように影響します。
- すべての構造体のメンバーは、UNALIGNED 属性がレベル 1 の構造体レベルで指定されたかのように、整列のためのパッド バイトなしでパックされます。
- すべての基底付き変数は整列されていないかのように処理されます。
- すべてのパラメーターは整列されていないかのように処理されます。
- すべての Character Varying データ項目は整列されていないかのように処理されます。CHAR VAR の Open-PL/I のデフォルト配列は、先頭の固定 BIN (15) 長の自然な整列である HALFWORD です。
-zp1 を使用すると、ソース コードを変更せずに引数を渡す際の一貫性を維持するために、引数が構造体のメンバーであり、引数およびパラメーターの記述子が UNALIGNED 属性と ALIGNED 属性間で明示的に異ならない場合、コンパイラは呼び出しポイントでのダミー引数の作成を無効にします。
注: -zp1 を使用すると、パフォーマンスに全体的影響が及ぶ可能性があります。SPARC や AIX/Power などの RISC アーキテクチャでは、コンパイラはメモリ内の非整列データ項目にアクセスするために、バイト アドレス可能な命令のシーケンスを生成する必要があります。Intel
では、コード生成のための変更は必要ありませんが、ずれたデータ項目にハードウェアがアクセスするには追加のクロック サイクルが必要です。