コンパイラ オプション

注: コマンド ラインからコンパイルする場合、特殊文字 (スペース文字) を含むコンパイラ オプションの値を二重引用符 (" ") で囲みます。たとえば、次のように入力します。
-optexec  vtrace,plitest(b 10)

および

-optexec  plitest(b 10)

次のように入力します。

-optexec  "vtrace,plitest(b 10)"

および

-optexec  "plitest(b 10)"

コンパイラ オプションの値は、特殊文字を含まない場合も二重引用符で囲むことができます。ただし、コンパイラ オプションの値を一重引用符で囲まないでください。

次に、各コンパイラ オプションおよび各オプションのデフォルト設定 (適用できる場合) の一覧を示します。

-#
コンパイラおよびリンカーの呼び出し方法に関する情報を示します。実際にコンパイラやリンカを呼び出すことはありません。また、このオプションは UNIX オプションがどの Micro Focus オプションに変換されるかも示します。例えば、ドライバ コマンド ラインで UNIX の標準 -O オプションが指定されている場合、コンパイラの呼び出しラインでは -opt に変換されます。
-adt
-adt [adt-filename]

PL/I コンパイラによって処理されるデータ構造体を含むファイルを生成します。adt-filename が指定されないと、program-name.adt という名前のファイルが生成されます。このファイルは、これらの PL/I 構造体の記述を使用してセグメント レイアウト ファイル (SLF) とレコード レイアウト ファイル (STR) を作成する Record Layout Editor または Segment Layout Editor によって使用されます。その後、データ ファイル ツールはこれらのレイアウト ファイルを使用してセグメントまたはレコードの編集/処理を支援します (データファイル変換、Data File Editor、IMS Database Editor、IMS Database ローダー)。

レイアウト エディターで ADT ファイルを使用して SLF および STR ファイルを作成します。

-agginit
Open PL/I (スカラー配列のみ) の 7.x バージョンと互換性のある集約の初期化を実行します。

例:

dcl myarr(4) fixed bin(31) static init (1);
put skip list (myarr);

results in:
             1               1               1               1

デフォルトでは、-agginit を使用しない場合、最初の要素のみが初期化されます。

-ascii
すべての文字データに対して、ASCII 文字コードを使用することを指定します。このオプションはデフォルトで設定されています。
-bigendian
データ項目に対して NATIVE 属性が明示的に適用されていない限り、すべての FIXED BINARY、CHARACTER VARYING、GRAPHIC VARYING、および WIDECHAR VARYING 項目は、BIGENDIAN データ属性で暗黙的に宣言されていることを指定します。
-bitsltr
各バイト内のビット文字列を左から右に記憶します。これはビッグエンディアンのビット順序に似ています (Intel のみ)。Intel のデフォルトでは、ビット文字列を右から左へ記憶しますが、オプションを使用した場合、ビット文字列は各バイト内部で左から右に記憶されます。
-c
リンクを抑制し、再配置可能なオブジェクト ファイルを生成します。このオプションは、mfplx のみに適用されます。
-cics
EXEC CICS サポート用に CICS プリプロセッサを呼び出します。これにより、EXEC CICS 文が認識され、ネイティブ PL/I ソース コードが生成されます。
-coffdebug
Visual Studio デバッガーに対して行番号情報を生成し、Open PL/I ソース コードのブレーク ポイント、文のトレーシング、および呼び出しスタック情報を有効にします。
制約事項:
  • 変数の評価はサポートされていません。
  • -coffdebug は 64 ビットの Windows ではサポートされていません。
-compact_msgs
メッセージを改行しません。
-currency_symbol
ピクチャ指定用の代替通貨記号を許可します。文字、10 進数、または 0xDD 形式の 16 進定数を使用できます (例: -currency_symbol £、-currency_symbol 163、-currency_symbol 0xa3)。
-db2
DB2 プリプロセッサ mfdb2 を呼び出します。デフォルトの DB2 プリプロセッサ出力ファイル名は xxx.pp2 です。ここで、xxx はソース ファイルの名前です。-ppdb2 オプションが指定されていない場合、コンパイル段階の完了後にファイル xxx.pp2 は削除されます。-db2 オプションは、mfplx のみに適用されます。
警告: このオプションは、非推奨の mfdb2 プリプロセッサで必要です。EXEC プリプロセッサを使用してください (-sql db2 によって呼び出されます)。
-deb (-debug)
Micro Focus のソースレベルのデバッガーである CodeWatch 用のデバッグ情報を生成します。CodeWatch を使用してソースをデバッグする場合は、このオプションを指定する必要があります。-deb を使用する場合、最適化レベル 1 または 2 のみを指定できます。デフォルトは、-opt 2 です。
-default_binary
FIXED 属性が指定されていて、BINARY または DECIMAL が指定されていない場合、BINARY 属性が指定されているものとみなされます。
-default_decimal 
FIXED 属性が指定されていて、BINARY または DECIMAL が指定されていない場合、DECIMAL 属性が指定されているものとみなされます。このオプションはコンパイラのデフォルトです。
-defext
データ節で外部変数が定義されるようにします。外部ファイルを使用するプログラムには、このオプションを使用する必要があります。

-defext オプションを使用すると、STATIC EXTERNAL 変数と外部ファイル定数の初期値が定義されます。INITIAL 値を持つ各 STATIC EXTERNAL 変数は、-defext を使用してコンパイルされた 1 つのモジュールだけで宣言されている必要があります。このようにしない場合、INITIAL 値が有効になりません。デフォルトは -nodefextです。

また、各ファイル定数は、それぞれ -defext を使用してコンパイルされた 1 つのモジュールだけで宣言されている必要があります。-defext が使用されている場合、ファイルの宣言で指定されているファイル属性は、ファイルが開かれたときに指定される属性にマージされます。これは、VSAM/INDEXED I/O の実行時に非常に重要です。

-dli
EXEC DLI サポート用に DL/I プリプロセッサを呼び出します。これにより、EXEC DLI 文が認識され、ネイティブ PL/I ソース コードが生成されます。このオプションは、EXEC プリプロセッサ (EXEC PP) により処理され、サポートされます。
-dll
フェッチ可能なプロシージャとして使用できるオブジェクトを生成します。フェッチ可能な共有プロシージャ オブジェクトをビルドするには、ご使用のオペレーティング システムに基づき、-dll を使用してください。
-E
任意の指定されたプリプロセッサ (-macro、-db2) がソース ファイルで実行されるようにし、その出力を保存します。ただし、コンパイラは実行せずに停止します。
-ebcdic
すべての文字データに対して、EBCDIC 文字コードを使用することを指定します。
注: -ebcdic コンパイラ オプションでは、WCHAR および GRAPHIC データ型はサポートされていません。
-err_on_stdout
STDERR ではなく STDOUT にコンパイラのエラー メッセージを表示または印刷します。
-exp
アセンブリ言語文の形式で、生成されたコードの展開リストをリスティング ファイル内に作成します。
-f
-flag と同義です。
-fb7asfb15
FIXED BINARY (7) を FIXED BINARY (15) として処理します。Open PL/I の以前のバージョンとの下位互換性を維持するために使用します。
-fdasfb
浮動小数データが浮動バイナリとして内部的にコーディングされるようにします。このオプションにより、より高速なコードが生成されますが、算術結果の最小有効桁において精度が低くなります。デフォルトは -fdasfb です。「-nofdasfb オプション」も参照してください。
-fdmaxp n
最大固定小数点の精度 n を指定します。推奨値は次のとおりです。
15
z/OS のデフォルト。
18
Enterprise Developer リリース 2.1 以前の Open PL/I のデフォルト。
31
Enterprise Developer リリース 2.2 以降の Open PL/I のデフォルト。

最大固定小数点の精度 31 は許容される最大値です。

-fixed_dec_max_p-fdmaxp の同義語として使用することもできます。

-flag
メッセージの最低限の診断レベルを指定します。このレベル以下の診断は抑制されます。-f と同義です。
-flag minimum diagnostic level
最小診断レベルには、次を指定できます。
I
情報 (Informational) レベル以上の診断メッセージを生成します (すべてのメッセージをリストします。これはデフォルトの設定です)。
W
警告 (Warning) レベル以上の診断メッセージを生成します。
E
エラー (Error) レベル以上の診断メッセージを生成します。
S
重大 (Severe) レベル以上の診断メッセージを生成します。
-fmaxp
浮動小数点の精度が三角組み込み関数および次の算術組み込み関数に使用されるようにします。EXP、LOG、LOG10、LOG2、SQRT -fmaxp がデフォルトです。三角組み込み関数および名前付き算術組み込み関数の標準 PL/I 変換規則には、-nofmaxp を使用してください。
-full_list
このオプションは、通常、%INCLUDE 文によってインクルードされるコードの前に配置される %NOLIST 指令を省略するように、マクロ プリプロセッサに指示します。これにより、インクルードされているコードがコンパイル リストで表示されるようになります。
-graphic
GRAPHIC データ型のサポートを有効にします。
注: -graphic と EBCDIC データおよび定数との併用はサポートされていません。
-help
使用できるコンパイラ オプションのリストをコンソールまたは STDOUT 出力と、EXIT に印刷します。
-highbif
このオプションを使用すると、HIGH() 組み込み関数から返される値を変更できるようになります。例えば、-highbif 127 とすることができます (デフォルト値は 255 ですが、Open PL/I の古いバージョンとの互換性のために値 127 が使用される場合もあります)。
-incl
選択した、またはデフォルトのインクルード文を処理するインクルード プリプロセッサを呼び出し、別のプリプロセッサまたは Open PL/I コンパイラによって 1 つのソース ファイルとして処理できるデッキを生成します。
-ipath dirlist
%INCLUDE 文を使用してソース プログラム テキストにインクルードするファイルを、指定されたディレクトリで検索するように、コンパイラに指示します。 dirlist はフォームのディレクトリの順番リストです。
dirname[:dirname] ...

-ipath オプションにより、コンパイラはこれらのディレクトリを指定された順番で検索し、%INCLUDE 文を処理するためのファイルを検出するように指示されます (ただし、%INCLUDE 文に絶対ディレクトリ パスが指定されている場合を除きます)。

例えば、ソース プログラムに次が含まれているとします。

%INCLUDE partlist;

また、コンパイラの呼び出しコマンドは次のとおりであったとします。

mfplx source_file -ipath .:/u/libr1:/u/libr2

この場合、コンパイラはまず現在の作業ディレクトリで「PARTLIST」を検索し、次に /u/ libr1、最後に /u/ libr2 ディレクトリを検索します。それでも検出できなかった場合は、同じディレクトリで「partlist (小文字)」を検索します。

Windows 環境では、次のコンパイラ呼び出しが上記に相当します。

mfplx source_file -ipath .;drive:\libr1;drive:\libr2
-ipubr
INT または POSINT を使用して生成された符号なし整数のビットと、UNSPEC で返されたビット ストリングを反転します。
-isuffix string
%INCLUDE 文で指定されたファイル名に string が付加されるようにします。ただし、%INCLUDE 文の引用符付きファイル名形式が使用されている場合は除きます。

例えば、ソース プログラムに次が含まれているとします。

%INCLUDE partlist;

また、コンパイラの呼び出しコマンドは次のとおりであったとします。

mfplx source_file -isuffix .INC

この場合、コンパイラは partlist.inc という名前のファイルを検索します。

-l [file]
コンパイラ リストを生成します。 file は、このリストが出力されるファイルの名前です。ファイル名を指定しない場合、コマンド ラインのソース ファイル名の後に、このオプションを配置する必要があります。そうしないと、エラー メッセージが表示されます。リストを含むファイルのデフォルト名は xxx.list です。ここで xxx は、名前の中の最後の「.」(含まれる場合) の直前までのソース ファイル名 (パス名を除く) です。例えば、ソース ファイル名が prog.pl1, の場合、デフォルトのリストは prog.list (Windows システムの場合は prog.lst) です。-exp、-map、または -xref が指定されている場合は、デフォルトでコンパイラ リストが生成されます。
-laxbased
BASED 変数の記憶域のチェックを無効にします。これは Open PL/I のデフォルトです。「–nolaxbased」も参照してください。
-laxdefined
DEFINED 変数のタイプと記憶域のチェックを無効にします。これは Open PL/I のデフォルトです。「–nolaxdefined」も参照してください。
-longint
Fixed Binary 変数のデフォルト精度を (15) から (31) に変更します。
-lowercase
大文字の内部、外部の変数および定数の名前を、すべて小文字に変換します。
-macro
Open PL/I マクロ プリプロセッサ mfpp を呼び出します。デフォルトのプリプロセッサ出力ファイル名は xxx.pp です。 ここで、xxx はソース ファイルの名前です。-pp オプションが指定されていない場合、コンパイル段階の完了後に xxx.pp ファイルは削除されます。-macro オプションは、mfplx のみに適用されます。
-map
次のいずれかを実行します。
  • コロンまたは引数を指定せずに -map を使用した場合、リスティング ファイルの最後に記憶域の割り当てマップが生成されます。
  • コロンおよび引数を指定して -map を使用した場合 (例:-map:filename (filename はリンカー マップ ファイルのファイル名))、このオプションは ldpli に渡され、指定されたファイル名のリンカー マップが生成されます。

-map add -map:filename は同時に使用できます。

-margins l,r
マージンを設定します。コンパイラは、ソース ファイル内のこのマージンの内側の文字はソース コードとして解釈し、その外側の文字はすべて無視します。 l は、ソース コードとして解釈される一番左の文字の列番号、r はその一番右の文字の列番号です。タブが使用されている場合、各タブは 1 つの文字としてカウントされます。-margins オプションは、ソースの *PROCESS 文によりオーバーライドされる場合があります。
注: 左右のマージンを区切るカンマの前後には、スペースを入れないでください。
-maxmsg
コンパイル時に生成される、指定した重大度以上の診断の最大数を指定します。
-maxmsg Level,n

次のように、Level は I、W、E、S のいずれかです。

I
I レベル (情報) で始まるすべてのコンパイラ メッセージを最大数に対してカウントします。
W
W レベル (警告) で始まるすべてのコンパイラ メッセージを最大数に対してカウントします。
E
E レベル (エラー) で始まるすべてのコンパイラ メッセージを最大数に対してカウントします。
S
S レベル (重大) のみを最大に対してカウントします。
n

最大数。

デフォルトは -maxmsg W,1000 です。

メッセージ数が許容される最大数を超えた場合にコンパイルが終了します。メッセージが指定した重大度より低い場合、それらの数はカウントされません。n の値の範囲は、0 ? 32767 です。0 を指定すると、指定した重大度の最初のエラーが発生すると、コンパイルが終了します。

回復不能な A レベル (中止) エラー メッセージでは、常に終了になります。

-names
コンパイラ オプションを介して識別子に言語外の文字を追加します。*PROCESS NAMES() と実質的に同様です。

例:

-names 'string1' [ 'string2' ]
string1
識別子に追加する言語外の文字
string2

対応する大文字オプション。

デフォルトは次のとおりです。

-names '$@#' '$@#'

追加の文字には、必要に応じてデフォルトの $@# またはサブセットと、追加の言語文字を指定する必要があります。

-names '$@#?'

便宜を図るため、上記の文字列の代わりに 0xDD..DD 形式の 16 進定数を使用できます。

-names 0x402324a3
-nest
DO ...END、PROC ...END などのネストがリスティング ファイルで表示されるようにします。リスティング ファイルの詳細については、「-l オプション」を参照してください。
-nocicsdebug
CodeWatch を使用して、CICS プリプロセッサによって生成された中間ファイルではなく、元のソース ファイルをデバッグできます。また、コンパイラ診断が元のソース ファイルを参照するのに行番号を使用するようにします。これはデフォルトの設定です。-nocicsdebug コマンドは mfplx と kixplt にのみ適用されます。
-nodebuginfo
%FILE および %LINE 情報で、改行しないようにコンパイラに指示します。
-nodefext

-nodefext オプションは、STATIC EXTERNAL 変数および外部ファイル定数の初期値が定義されないようにします (デフォルト)。詳細については、「-defextコンパイラ オプション」を参照してください。

また、各ファイル定数は、それぞれ -defext を使用してコンパイルされた 1 つのモジュールだけで宣言されている必要があります。-defext が使用されている場合、ファイルの宣言で指定されているファイル属性は、ファイルが開いたときに指定される属性にマージされます。これは、VSAM/INDEXED I/O の実行時に非常に重要です。

-nofdasfb
浮動小数データが 2 進化 10 進数として内部的にコーディングされるようにします。デフォルト設定は -fdasfb です。
-nofmaxp
三角組み込み関数および特定の算術組み込み関数の精度を決定するのに、標準の PL/I 変換規則が使用されるようにします。デフォルトは -fmaxp です。
-noincludes
%INCLUDE ファイルの内容をコンパイルされたソースにインクルードしないように、コンパイラまたはマクロ プリプロセッサ (またはその両方) に指示します。
-nolaxbased
BASED (ADDR(x)) の形式を使用して宣言した BASED 変数の場合、基底付き変数「x」を使用した記憶域チェックを有効にします。 –laxbased は Open PL/I のデフォルトです。
注: -cics-sql-dli-mvs、または –ims のオプションのすべてが –nolaxbased の意味を含みます。–laxbased と組み合わせて使用する場合は上書きできます。

例:

DCL S1 CHAR(10); DECLARE S2 CHAR(20) DEFINED (S1);

これは適切な診断結果になります。

-nolaxdefined
DEFINED 変数の場合、DEFINED 変数と基底付き変数についてタイプと記憶域のチェックの両方を可能にします。 –laxdefined は Open PL/I のデフォルトです。
注: -cics-sql-dli-mvs–ims のオプションのすべてが –nolaxdefined の意味を含みます。–laxdefined と組み合わせて使用する場合は上書きできます。

例:

DCL X FIXED BIN (15); DECLARE Y FIXED BIN (31) BASED (ADDR(X));

これは適切な診断結果になります。

-nolaxdcl
宣言されていない変数を、コンパイラで宣言しないようにコンパイラに指示します。
-nomacro
Open PL/I マクロ プリプロセッサの呼び出しを抑制します。デフォルトは -nomacro です。
-noobj
構文と意味のチェックのためだけにコンパイルを実行します。オブジェクト ファイルは生成しません。
-noopt
最適化せずにコンパイルを実行します。これはデフォルトの設定です。
-norange
添え字参照およびサブストリング バインドの妥当性をチェックするためのコードの生成を抑制します。このオプションは、プログラムのデバッグ後に、実行時間のパフォーマンスを改善するために使用してください。デフォルトは --norange です。
-noopt
最適化せずにコンパイルを実行します。これはデフォルトの設定です。
-not_symbol
代替 NOT シンボルを指定できるようにします。文字、10 進数、または 0xDD 形式の 16 進定数を使用できます。『言語リファレンス』マニュアルの「%PROCESS」も参照してください。
-nounixdebug
ONLOC 組み込み関数で使用するための、または致命的なランタイム エラーが発生したときにソース ファイルと行番号をレポートするために必要な、追加のオブジェクト ファイル データが生成されないようにします。
-nounrefexternals
オブジェクト ファイル内で、プログラムで参照されていない外部エントリ シンボルが生成されないようにします。これはデフォルトの設定です。
-nowarn
すべての情報 (INFORMATIONAL) および警告 (WARNING) レベルの診断を抑制します。これは –flag オプションを E に設定するに相当します。
-[no]xref
プログラムで使用されている名前の相互参照テーブルをインクルードしないようにコンパイラに指示します。詳細については、「-xref コンパイラ オプション」を参照してください。
-O
コンパイラ段階の最適化を呼び出します。このオプションは、-opt オプションに相当し、mfplx のみに適用されます。
-o file
file で指定した名前でオブジェクト ファイルに名前をつけます。-o が指定されていない場合、デフォルトのファイル名は xxx.oです。ここで、xxx は、名前にある最後の "." (該当する場合) を除く、ソース ファイル名までです。例えば、ソース ファイル名が prog.pl1 の場合、デフォルトのオブジェクト ファイル名は prog.o (Windows システムの場合は prog.obj) です。

-c が指定されている場合、-o オプションがコンパイラに渡されます。-c が指定されていない場合は、-o は ldpli に渡されます。

-opt [level]
Open PL/I コンパイラによる最適化レベルを指定します。level は、最適化のレベル (1 ? 3) を表します。デフォルト設定は -noopt です。level がインクルードされていない場合、プログラムはレベル 3 で最適化されます。-deb が指定されていない場合、-opt 2 が許可される最大レベルになります。-opt -deb は、-opt 2 -deb に相当します。
-optcics
CICS オプションが CICS ECM に渡されるようにします。
-optdli
DL/I オプションが DL/I (IMS) ECM に渡されるようにします。
-optexec {sub-option}[,sub-option]
EXEC プリプロセッサ用にオプションを指定できます。-optexec オプションには、次のものを使用できます。
[NO]PLITEST
GUI CodeWatch デバッガーを起動するために自動呼び出しを挿入するように EXEC プリプロセッサに指示します。

-optexec オプションを PLITEST パラメーターと使用しても、CICS の元で実行する PL/I プログラムをデバッグできます。実行中、最初に実行可能な文 (実行環境に応じて、PROCEDURE 文または PROCEDURE 文に続く最初の文のいずれか) でプログラムが停止します。このオプションと PLITEST を使用する場合、適切なプログラム ソース ファイルを指定し、CODEWATCH_SRCPATH および CODEWATCH_STBPATH 環境変数を使用してファイルをデバッグします。

NEWNAME(newname)
PROCEDURE 文に指定されている可能性がある他の名前に加えて、最も外側の外部プロシージャの名前を指定します。プロシージャに関する名前が実行ファイルの名前と一致しない場合はこれを使用します。 (newname) は実行ファイル名と同じ名前です。
trace
プリプロセッサが source.trc ファイルを作成するようにします。ここで source はソースファイルの名前です。
ctrace
サポート窓口へトレースファイルの提出が必要な場合に、トレースファイルを作成します。
strace
プログラムによって呼び出された内部関数からログ ファイルを作成します。
vtrace
プログラムの動的なビジュアル トレースを作成します。
-optsql
SQL オプションが SQL ECM に渡されるようにします。
-or_symbol
代替 OR シンボルを指定できるようにします。文字、10 進数、または 0xDD 形式の 16 進定数を使用できます。『言語リファレンス』マニュアルの「%PROCESS」も参照してください。
-pass
リモート DB2 データベースに接続します。ユーザ名とパスワードを指定して、このオプションを使用できます。フォーマットは次のとおりです。
–pass myid.mypass

myid はリモート DB2 接続のユーザー名で mypass はパスワードです。mfplx は最初にユーザー名/パスワードについて -pass をチェックし、指定された場合これらの値を使用します。指定されない場合、DB2_USERNAME および DB2_PASSSWORD 環境変数の値セットを使用します。

-pic
共有ライブラリへのリンクに適した、位置に依存しないコードを生成します。このオプションは、Solaris、SUSE Linux、および Red Hat Linux のみで使用可能です。
このオプションは、共有オブジェクトにインクルードするためにコードをコンパイルする場合に使用してください。
-pl1g
以前のリリースの動作と互換性がなくなるような形で変更されている特定の演算について、Open PL/I 5.0 よりも前のリリースの動作が、Open PL/I で保持されるようにします。例えば、TIME() は小数点以下 3 桁 (1/1000) を含む値を返しますが、 -pl1g を使用すると、小数点以下 2 桁 (1/100) のみが返されるようになります。
-plitdli

ユーザーが指定した PLITDLI ではなく PLITDLI エントリ ポイントを呼び出す際に、IMS リンケージを指定します。このオプションは、ユーザー プログラム内の宣言 (エントリ記述子リストまたは戻り値の型 (あるいはその両方) なし) に従って DCL PLITDLI ENTRY; を可能にします。

-pp [file]
Open PL/I マクロ プリプロセッサの出力ファイルのファイル名を指定します。-pp オプションで作成された出力ファイルは、コンパイル段階の完了後も維持されます。このオプションは、mfplx および mfpp のみに適用されます。
-ppcics [file]
CICS プリプロセッサの出力のファイル名を指定します。-ppcics オプションで作成された出力ファイルは、コンパイル段階の完了後も維持されます。このオプションは、mfplx のみに適用されます。
-ppdli[file]
DL/I プリプロセッサの出力のファイル名を指定します。-ppdli オプションで作成された出力ファイルは維持され、ダウンストリーム プリプロセッサまたは PL/I コンパイラで消費されます。
-ppdb2 [file]
DB2 プリプロセッサの出力のファイル名を指定します。-ppdb2 オプションで作成された出力ファイルは、コンパイル段階の完了後も維持されます。このオプションは、mfplx のみに適用されます。
-ppsql [file]
SQL プリプロセッサの出力のファイル名を指定します。-ppsql オプションで作成された出力ファイルは、コンパイル段階の完了後も維持されます。このオプションは、mfplx のみに適用されます。
-proto
エントリ宣言のパラメータと引数の対応について、より広範なプロトタイプ チェックを提供します (-vax を使用する場合もデフォルトで想定されています)。

例:

declare myproc external entry(
      fixed binary(31),
      fixed binary(15),
      fixed binary(15));

   myproc: procedure(a,b,c);        /* mismatch diagnosed, -proto and -vax */
      declare a fixed binary(15);
      declare b fixed binary(15);
      declare c fixed binary(15);

   end t660;
-range
コンパイル時にすべての静的配列バインド参照を検証し、すべての添え字参照およびサブストリング バインドが実行時に有効かチェックするコードを生成します。チェック用コードは、実行時間のパフォーマンスを低下させるため、注意してください。

実行時に配列バインドまたはストリング バインドを超過すると、必要に応じて SUBSCRIPTRANGE または STRINGRANGE 状態が発生します。添え字およびサブストリングに関連するプログラミング エラーをデバッグするには、このオプションを使用してください。デバッグ済みコードには、-norange オプションを使用してください。デフォルトは --norange です。

-report [file]
Open PL/I ソース チェッカーの出力のファイル名を指定します。このオプションが使用されていない場合、チェッカーの出力は標準のエラー ファイルに転送されます。このオプションは、mfplx のみに適用されます。
-setnull n
NULL 組み込み関数が NULL ポインター n を戻すように指定します。ここで n は 10 進値です。このオプションが指定されていない場合、NULL 組み込み関数の値は、すべてのビットが 1 に設定されたアドレスになります。
-setstack
自動ストレージを 0 に初期化します。
-shortint
デフォルトの FIXED BINARY 精度を 15 に設定するように、コンパイラに指示します。
-sql
EXEC SQL サポート用に SQL プリプロセッサを呼び出します。これにより、EXEC SQL 文が認識され、ネイティブ PL/I ソース コードが生成されます。このオプションは、EXEC プリプロセッサ (EXEC PP) により処理され、サポートされます。-sql オプションには、次のものを使用できます。
odbc
ODBC 準拠のデータベースを指定します。
db2
IBM、DB2、または UDB データベースを指定します。
oci
Oracle の「Call」インターフェイス データベースを指定します。
-stardesc
パラメーター宣言の配列バインドまたは文字列の長さがアスタリスク (*) で表されている場合のみ、呼び出しに対して引数記述子を生成するようにコンパイラに指示します。(これは、7.0 より前のリリースのコンパイラの動作です。)このオプションが使用されていない場合、コンパイラは、配列、構造体、および文字列の引数に対して記述子を生成します。
-stat
各コンパイラ段階が完了するたびに、コンパイラの統計情報を標準出力に印刷します。
-stbout
出力オブジェクト ファイルと一緒に、 .stb ファイルを生成します。
注: このオプションを使用する際には、CODEWATCH_STBPATH および CODEWATCH_SRCPATH 変数を適切な位置に設定する必要がある場合があります。
-strip (ldpli)
デバッグ情報を生成しないように Idpli に指示します。
-structure_fillers
埋め草文字が含まれる構造体に対して、警告を生成するようにコンパイラに指示します。
-systemcics

この OPTIONS(MAIN) プログラムが CICS の制御下で実行されるように指定します。このようなプログラムは、0、1、または 2 つのパラメーターを持っている場合があります (すべてポインターである必要があります)。そのようなプログラムは、ほぼ常に、-cics を指定し、1 つまたは複数の –sql および –dli を指定する場合があります。

-systemims
この OPTIONS(MAIN) プログラムが IMS の制御下で実行されるように指定します。このようなプログラムは、0 から n 個のパラメーターを持っている場合があります (すべてポインターである必要があります)。または、そのようなプログラムは、1 つまたは複数の –sql および –dli を指定する場合があります。
-systemmvs
この OPTIONS(MAIN) プログラムが MVS の制御下で実行されるように指定します。そのようなプログラムは、最大 1 つのパラメーターを持つ場合があり、そのパラメーターは CHAR(n) VARYING である必要があります。このとき、「n」は * ではありません。または、そのようなプログラムは、1 つまたは複数の -cics–sql、および –dli を指定する場合があります。
-unaligned
このコンパイル時のスイッチは、RISC アーキテクチャで使用するために追加されました。このスイッチは、メモリの位置を指定する、すべての基底付き参照に対してバイト命令が生成されるようにします。
-unrefexternals
外部エントリ シンボルがプログラムで参照されていない場合でも、オブジェクト ファイルに外部エントリ シンボルが生成されるようにします。
-v
コンパイル フェーズおよびリンク ステップ フェーズに関連する stdout に情報を印刷します。このオプションは、mfplx のみに適用されます。
-variant string
Open PL/I マクロ プリプロセッサにバリアント ストリング (string) を渡します。このオプションは、mfplx のみに適用されます。
-vax
元々は Digital Equipment Corporation の VAX プラットフォーム向け PL/I コンパイラで記述されたプログラムを、次のように適合させます。
  • 浮動バイナリ (24) を浮動バイナリ (23) に相当するものとして有効にします。
  • 浮動バイナリ (53) を 浮動バイナリ (52) に相当するものとして有効にします。
  • FIXED 属性が指定されていて、BINARY または DECIMAL が指定されていない場合、BINARY 属性が指定されているものとみなされます。
-warn
情報 (INFORMATIONAL) および警告 (WARNING) レベルの診断を抑制しません。これは –flag オプションを「I」に設定するのに相当します。これはデフォルトの設定です。
-window
さまざまな日付関連の組み込み関数で使用される時間幅の引数 w の値を設定します。
w
固定時間幅の開始を表す 1976 などの 4 桁の正の整数または「スライドする」時間幅を表す負の整数のいずれか。たとえば、-window -50 は、プログラムが実行されるよりも 50 年前に開始される時間幅を示します。
-xref full short
リスティング ファイル内に相互参照情報を生成し、生成される相互参照情報のタイプを指定します。相互参照は、プログラムで使用されている名前と、宣言または参照されている文の番号を示します。-xref を使用する場合、END 文でのラベル参照はリスティング ファイルにインクルードされません。

リスト内のすべての識別子および属性をインクルードするには、 -xreffull を使用してください。参照されていない識別子を除外するには、short-xref オプションとともに使用します。

-zalign
z/OS がマッピングおよび整列ルールを集約します。
  • 構造体メンバーのマッピングに影響します。 z/OS の構造体マッピング ルールは、構造体メンバーの整列要件に関してコンパイラ挿入のパッド バイトを最小限に抑えるために「シフトして整列」アルゴリズムを使用します。これは、「構造体」のトピックに記載されている、言語間の互換性を実現するために他の UNIX および Windows のコンパイラと互換性のある、Open PL/I のデフォルトの構造体マッピング ルールとは異なります。
  • デフォルトの浮動バイナリ単精度を 21 に、デフォルトの浮動バイナリ倍精度を 53 (-zfloat を意味する) に設定します。Open PL/I のデフォルトは、それぞれ 23 および 52 です。
  • CHAR、CHAR VAR、GRAPHIC、GRAPHIC VAR、WIDECHAR、WIDECHAR VAR、および PICTURE データ型のデフォルトの整列属性は「unaligned」(-zchar を意味する) であることを指定します。Open PL/I のデフォルトは「aligned」です。
  • Intel 32 ビット システムでの倍精度浮動バイナリのダブルワードを意味します (Open PL/I および Intel のネイティブ デフォルト整列は、Intel 32 ビット システムでのワードです)。
  • Intel 32 ビット システムでの AREA のダブルワードを意味します (Open PL/I のネイティブ デフォルト整列は、Intel 32 ビット システムでのワードです)。

構造体レイアウトの例 (Open PL/I のデフォルト)

以下は、8 バイトのサイズでの 構造体 ST を示します。メンバー「C」はオフセット 0 (バイト整列) で、メンバー「X」はオフセット 4 (ワード整列) です。メンバー間にはコンパイラ挿入のパッド バイトが 3 バイトあります。

       1
       2      dcl 1 ST,
       3            2  C CHAR,
       4            2  X FIXED BIN(31);
       5

NAME             CLASS      SIZE      LOCATION    ATTRIBUTES

ST               BASED      8                    LEVEL 1 STRUCTURE
C               MEMBER      1         00000000   LEVEL 2 CHAR(1)
                            3         00000001    -pad-
X               MEMBER      4         00000004   LEVEL 2 FIXED BIN(31,0)

構造体レイアウトの例 (-zalign)

以下は、5 バイトのサイズでの 構造体 ST を示します (メモリ内で 8 バイトが割り当てられています)。メンバー「C」はオフセット 0 (バイト整列) で、メンバー「X」はオフセット 1 (ワード整列) です。この例では、要求された境界にメンバーを適切に整列させ、コンパイラ挿入のバイトを最小化する (この場合はなくす) ために、各メンバーが 3 バイトだけシフトされています (次に示すように、OFFSET=3)。実際に「シフトして整列」アルゴリズムは、構造体の先頭に向かってメンバー間の自然な整列のギャップを埋めるパッド バイトを伝播します。構造体の外側にシフトされたパッド バイト (つまり最初のメンバーよりも先行する) は、「ハング バイト」と呼ばれます。

       1
       2      dcl 1 ST,
       3            2  C CHAR,
       4            2  X FIXED BIN(31);
       5

NAME             CLASS      SIZE      LOCATION    ATTRIBUTES

ST               BASED      5                     LEVEL 1 STRUCTURE OFFSET=3
C               MEMBER      1         00000000    LEVEL 2 CHAR(1) UNALIGNED
X               MEMBER      4         00000001    LEVEL 2 FIXED BIN(31,0)
注:
  • このオプションは、z/OS の構造体マッピング ルールを一致させるために構造体マッピングが必要な場合にのみ推奨されます。必要な場合の例としては、メインフレームからインポートされた、整列目的の z/OS コンパイラ挿入 (場合によっては削除) のパッド バイトを持つレコード構造体を含むファイルの読み込みが挙げられます。
  • -zalign が 1 つのモジュールのコンパイルに使用される場合、互換性ために所定のプログラム内のすべてのモジュールをコンパイルすることを推奨します。同じプログラム内で -zalign をコンパイル単位と混ぜ合わせても問題ない可能性はありますが、-zalign でコンパイルされたモジュールが「自己完結型」でない場合、問題が発生する可能性があります。
  • 調整可能な構造体 (REFER エクステントまたは非定数サイズのメンバーを持つ) の場合、-zalign「シフトして整列」アルゴリズムによって、非定数オフセットを持つ構造体メンバーにアクセスするためのコードが多く生成される原因となります ("Location" フィールドの -map リストの中で (-V-) と表示される)。構造体のレイアウトに応じて、生成されるコードの量は Open PL/I のデフォルト マッピング ルールと比較して広範囲に及ぶ可能性があります (-zalign を使用しない場合)。最小限のレベル -opt 2 でのコンパイラの最適化が推奨されます。
制約事項:
  • 複数の REFER エクステントを持つ構造体の場合、コンパイラのリソースが影響を受け、コンパイラが中止になる可能性があります。Micro Focus SupportLine にご連絡ください。
重要: This feature is in Early Adopter Product (EAP) release status. We intend to provide the finalized feature in a future release. Please contact Micro Focus SupportLine if you require further clarification.
-zchar
CHAR、CHAR VAR、GRAPHIC、GRAPHIC VAR、WIDECHAR、WIDECHAR VAR、および PICTURE データ型のデフォルトの整列属性は unaligned であることを指定します。Open PL/I のデフォルトは aligned です。
注: これは、CHAR VAR、GRAPHIC VAR、および WIDECHAR VAR の記憶領域要件に影響します。また、CALL 文でのパラメーターと記述子のマッチングにも影響を与えます。

例 (Open PL/I のデフォルト)

Dcl c  char;
Dcl sub entry (char unaligned);

    Call sub(c);  /* A dummy argument is created for “c” */

Dcl c  char;
Dcl sub entry (char aligned);

Call sub(c);  /* “c” is passed by reference */

Example (-zchar)

Dcl c  char;
Dcl sub entry (char unaligned);

    Call sub(c);  /* “c” is passed by reference */

Dcl c  char;
Dcl sub entry (char aligned);

Call sub(c);  /* A dummy argument is created for “c”  */
-zfloat
浮動バイナリ単精度を「21」に、浮動バイナリ倍精度の最大値を「53」に指定します。Open PL/I のデフォルトは、それぞれ 23 および 52 です。
注: 21 以下の浮動小数点の精度は、IEEE の単精度浮動小数点として実装されます。21 よりも大きい浮動小数点の精度は、IEEE の倍精度浮動小数点として実装されます。
-zp1
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 および RS6000 などの RISC アーキテクチャでは、コンパイラはメモリ内の非整列データ項目にアクセスするために、バイト アドレス可能な命令のシーケンスを生成する必要があります。Intel では、コード生成のための変更は必要ありませんが、ずれたデータ項目にハードウェアがアクセスするには追加のクロック サイクルが必要です。
重要: このリリースを Enterprise Developer 2.2 Update 1 に対するアップグレードとして使用している場合、コンパイルされているすべてのアプリケーションをアップグレード後に -zp1 オプションを使用して再構築する必要があります。

-zp1 オプションの動作は、Enterprise Developer の 2.2 Update 1 よりも前のバージョンに戻っており、Char Varying データ項目に関する追加修正も行われています。

動作は、Enterprise Developer の 2.2 よりも前のバージョンに戻り、–zp1 でコンパイルすると、すべてのパラメーターが非整列として扱われます(Enterprise Developer 2.2 Update 1 では、-zp1 でのコンパイルの動作では、パラメーターは非整列であるかのようには扱われませんでした)。

-zp1 コンパイラ オプションを使用する場合、すべての Character Varying データ項目が非整列であるかのように扱われるようになりました。Open PL/I の前のバージョンでは、Character Varying データ項目には、–zp1 の非整列要件は構造体のメンバーおよびパラメーターにのみ適用されました。

変更を説明するために、次の例について考慮してください。

zptest: proc options(main); 
 
   dcl 1 st1, 
     2 c char, 
     2 x(4) char(7) var init ('a', 'xx', 'yyy', 'zzzz'); 
 
   dcl y(4) char(7) var init ('a', 'xx', 'yyy', 'zzzz'); 
 
   dcl sub entry ((4) char(7) var); 
 
   call sub (x); 
 
   call sub (y); 
 
end; 
 
sub: proc (z); 
 
   dcl z(4) char(7) var; 
 
   dcl i fixed bin(31); 
 
  do i = 1 to hbound(z); 
      z(i)  = 'x'; 
  end; 
 
end; 

詳細は次のとおりです。

  • x および z の場合、各 char (7) var 項目は、7 バイトに 2 バイトを加えた 9 バイトで、4 を掛けて 36 バイトになります。
  • y が、デフォルトでハーフワードに整列されると、配列の各要素が整列されたハーフワードとなり、それぞれが 10 バイト (9 + 1 パッド バイト) で、合計サイズが 40 バイトと等しくなります。
  • call sub (x) では、呼び出し側の引数とパラメーターが一致します。
  • call sub (y) では、y 要素のサイズ (10 バイト) は、パラメーター z 要素サイズ (9 バイト) に対して一致しません (–zp1 のため)。これは正しくなく、プログラムの予期しない動作を引き起こします。

–zp1 を使用する際、このようにすべての Char Varying データ項目を非整列として扱うような修正を行う結果、CHAR VARYING 配列のサイズが Open-PL/I の以前のバージョンのものとは異なるようになります。次に例を示します。

   dcl X(4) char(7) var; 
 
   Put skip list (size(X))  /* size is 36 bytes vs. 40 bytes in previous versions of Open-PL1 */