-optexec vtrace,plitest(b 10)
および
-optexec plitest(b 10)
次のように入力します。
-optexec "vtrace,plitest(b 10)"
および
-optexec "plitest(b 10)"
コンパイラ オプションの値は、特殊文字を含まない場合も二重引用符で囲むことができます。ただし、コンパイラ オプションの値を一重引用符で囲まないでください。
次に、各コンパイラ オプションおよび各オプションのデフォルト設定 (適用できる場合) の一覧を示します。
-adt [adt-filename]
PL/I コンパイラによって処理されるデータ構造体を含むファイルを生成します。adt-filename が指定されないと、program-name.adt という名前のファイルが生成されます。このファイルは、これらの PL/I 構造体の記述を使用してセグメント レイアウト ファイル (SLF) とレコード レイアウト ファイル (STR) を作成するレコード レイアウト エディタまたはセグメント レイアウト エディタによって使用されます。その後、データファイル ツールはこれらのレイアウト ファイルを使用してセグメントまたはレコードの編集/処理を支援します (データ ファイルの変換、データファイル エディタ、IMS データベース エディタ、IMS データベース ローダー)。
レイアウト エディタで ADT ファイルを使用して SLF および STR ファイルを作成します。
例:
dcl myarr(4) fixed bin(31) static init (1); put skip list (myarr); results in: 1 1 1 1
デフォルトでは、-agginit を使用しない場合、最初の要素のみが初期化されます。
-dfp -bid
詳細については、本トピックで後述の -dfp オプション、および「Float Decimal (p)」のトピックを参照してください。
-ctf event-severity,type
event-severity |
|
type |
|
-ctf 0,16
CTF トレースの構成で、デバッグ レベルのトレースおよび PL/I #pgm トレース フラグを生成します。
-ctf 3,16
CTF トレースの構成で、エラー レベルのトレースおよび PL/I #pgm トレース フラグを生成します。
-decimal sub-option[,sub-option[...]]
デフォルト:foflonasgn
デフォルト:nofoflondiv
デフォルト:nofoflonmult
デフォルト:forceodd
デフォルト:validate
このオプションの効果はありません。Open PL/I では、暗黙的な動作として、FIXED DECIMAL 算術演算の結果として値 0 が生成された場合に、結果の記号片に値 0xC を割り当てます。
デフォルト:noforcedsign
-defext オプションを使用すると、STATIC EXTERNAL 変数と外部ファイル定数の初期値が定義されます。INITIAL 値を持つ各 STATIC EXTERNAL 変数は、-defext を使用してコンパイルされた 1 つのモジュールだけで宣言されている必要があります。このようにしない場合、INITIAL 値が有効になりません。デフォルトは -nodefext です。
また、各ファイル定数は、それぞれ -defext を使用してコンパイルされた 1 つのモジュールだけで宣言されている必要があります。-defext を使用している場合、ファイルの宣言で指定されているファイル属性は、ファイルが開かれたときに指定される属性にマージされます。これは、VSAM/INDEXED 入出力の実行時に非常に重要です。
詳細については、本トピックで前述の -bid オプション、および「Float Decimal (p)」のトピックを参照してください。
-fixed_bin_max_p を -fbmaxp の同意語として使用することもできます。
-fixed_dec_max_p を -fdmaxp の同意語として使用することもできます。
-flag minimum diagnostic levelminimum diagnostic level には、次を指定できます。
-initcall routine
routine | 手続き型コードの実行前にフェッチして実行するルーチンの名前 |
以下のコマンド行は、-initcall が mfplx コマンド内でどのように使用されるかを示します。
mfplx -deb -defext -initcall DEBINIT foo.pli
DEBINIT: proc(str); dcl str char(*); /* Variables for PLICTF */ dcl EVENT_ERROR fixed bin(31) static init(1000); dcl LEVEL_DEBUG fixed bin(31) static init(0); dcl LEVEL_INFO fixed bin(31) static init(1); dcl LEVEL_WARNING fixed bin(31) static init(2); dcl LEVEL_ERROR fixed bin(31) static init(3); dcl TRACE_FLAGS_ALL fixed bin(31) static init(-1); dcl error_msg char(300) varying; /* Variables for Memory Validation */ DCL _MFP_MEMVALID entry(fixed bin(31) value, *) returns(fixed bin(31)) options(nodescriptor); dcl 01 mem_validate_param, 05 cblte_mv_version fixed bin(31) init(0), 05 cblte_mv_flags fixed bin(31) init(0), 05 cblte_mv_type fixed bin(31) init(0), 05 cblte_mv_size fixed bin(31) init(0), 05 cblte_mv_address poinTer init(NULL); dcl ret fixed bin(31); on error begin; on error system; error_msg = "DEBINIT Error: " || trim(str) || ' :' || oncode(); call PLICTF(EVENT_ERROR, LEVEL_ERROR, TRACE_FLAGS_ALL, error_msg, length(error_msg)); /* Continue processing */ /* don't want to take down user code because of bad initcall code! */ goto end_debcall; end; ret = _MFP_MEMVALID(3, mem_validate_param); if (ret = 1000) then do; error_msg = "Memory Corruption detected: " || trim(str) || ' :' || hex(cblte_mv_address); call PLICTF(EVENT_ERROR, LEVEL_ERROR, TRACE_FLAGS_ALL, error_msg, length(error_msg)); end; end_debcall: end;
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
コンパイラでは、BIT(1) 型ではない IF、WHILE、UNTIL、および WHEN 句を使用できます。この場合、式は変換規則に従って BIT 型に変換されます。また、コンパイラでは A=(B=C) と同等の A=B=C 形式の割り当てを使用できます。-nolaxif も参照してください。
-map と -map:filename は同時に使用できます。
-maxmsg Level,n
次のように、Level は I、W、E、S のいずれかです。
最大数。
デフォルトは -maxmsg W,1000 です。
メッセージ数が許容される最大数を超えた場合にコンパイルが終了します。メッセージが指定した重大度より低い場合、それらの数はカウントされません。n の値の範囲は、0 から 32767 です。0 を指定すると、指定した重大度の最初のエラーが発生すると、コンパイルが終了します。
回復不能な A レベル (中止) エラー メッセージでは、常に終了になります。
例:
-names 'string1' [ 'string2' ]
対応する大文字。この設定は省略可能です。
デフォルトは次のとおりです。
-names '$@#' '$@#'
追加の文字には、必要に応じてデフォルトの $@# またはサブセットと、追加の言語文字を指定する必要があります。
-names '$@#Ј'
便宜を図るため、上記の文字列の代わりに 0xDD..DD 形式の 16 進定数を使用できます。
-names 0x402324a3
-nodefext オプションは、STATIC EXTERNAL 変数および外部ファイル定数の初期値が定義されないようにします (デフォルト)。詳細については、-defext コンパイラ オプションを参照してください。
また、各ファイル定数は、それぞれ -defext を使用してコンパイルされた 1 つのモジュールだけで宣言されている必要があります。-defext を使用している場合、ファイルの宣言で指定されているファイル属性は、ファイルが開いたときに指定される属性にマージされます。これは、VSAM/INDEXED 入出力の実行時に非常に重要です。
初期化されていない自動変数がないかどうかをチェックする診断警告を無効にします。デフォルトは -noinitcheck です。
例:
DCL X FIXED BIN (15); DECLARE Y FIXED BIN (31) BASED (ADDR(X));
これは適切な診断結果になります。
例:
DCL S1 CHAR(10); DECLARE S2 CHAR(20) DEFINED (S1);
これは適切な診断結果になります。
以下のコンパイラ オプションは、-nolaxif の意味を含みます。
上記のコンパイラ オプションでこれをオーバーライドするには、-laxifと組み合わせて設定します。
たとえば、-c を指定した場合、-o オプションがコンパイラに渡されます。-c が指定されていない場合は、-o は ldpli に渡されます。
変換された *PROCESS 指令およびコマンド ライン オプションの処理に関する情報をコンパイラ リストに追加します (-options は -l の意味を含みます)。詳細については、*PROCESS 指令に関するセクションを参照してください。
–pass myid.mypass
myid はリモート DB2 接続のユーザー名で mypass はパスワードです。mfplx は、-pass にユーザー名/パスワードが指定されているかどうかを最初にチェックし、指定されていた場合はこれらの値を使用します。指定されていない場合は、DB2_USERNAME および DB2_PASSSWORD 環境変数に設定されている値が使用されます。
ユーザーが指定した PLITDLI ではなく PLITDLI エントリ ポイントを呼び出す際に、IMS リンケージを指定します。このオプションは、ユーザー プログラム内の宣言 (エントリ記述子リストまたは戻り値の型 (あるいはその両方) なし) に従って DCL PLITDLI ENTRY; を可能にします。
構文:
-pporder "pp-name [ (pp-string)] [ pp-name [ (pp-string)] ] …"
INCL の場合、pp-string 引数は適用できません (または許可されません)。
MACRO の場合、pp-string 引数は、指定時、'CASE(ASIS)' または 'CASE(UPPER)' のいずれかにする必要があります。この引数は、-case_upper の -case_asis のすべてのコマンド ライン引数をオーバーライドします (指定されている場合)。
SQLDB2、SQLOCI、SQLODBC の場合、pp-string 引数 (ある場合) は、-optsql オプションに指定される値になります。この引数は、-optsql のすべてのコマンド ライン引数をオーバーライドします (指定されている場合)。詳細については、Micro Focus SQL ドキュメントを参照してください。
CICS の場合、pp-string 引数 (ある場合) は、-optcics オプションに指定される値になります。この引数は、-optcics のすべてのコマンド ライン引数をオーバーライドします (指定されている場合)。詳細については、Micro Focus CICS ドキュメントを参照してください。
DLI の場合、pp-string 引数 (ある場合) は、-optdli オプションに指定される値になります。この引数は、-optdli のすべてのコマンド ライン引数をオーバーライドします (指定されている場合)。詳細については、Micro Focus DLI ドキュメントを参照してください。
許容される最大呼び出し数は 31 です。
前記の呼び出し先プリプロセッサの選択は、指定されたオプション -incl、-macro、-dli、-sql、および -cics の組み合わせによって決まります。これらのオプションの詳細については、Micro Focus のドキュメントを参照してください。
-prefix のデフォルトは次のとおりです。
-prefix "conversion,fixedoverflow,invalidop,zerodivide,nosize,nostringrange,nostringsize,nosubscriptrange"
次に示す -proto の使用例では、インクルードされたエントリ宣言と実際のプロシージャ宣言の間の一致しない宣言がコンパイラで認識され、次の診断が生成されます。
MFPLI00256W : Parameter "A" type conflicts with the parameter type and/or attributes declared in the EXTERNAL ENTRY declaration for the same PROCEDURE
例:
myproc.dcl ------------ declare myproc external entry( fixed binary(31), fixed binary(15), fixed binary(15)); myproc.pli ------------ %include 'myproc.dcl'; myproc: procedure(a,b,c); declare a fixed binary(15); / * mismatch with “myproc.dcl” */ declare b fixed binary(15); declare c fixed binary(15); end; callmypr.pli ------------- callmypr:proc; %include 'myproc.dcl'; call myproc (1,2,3); end;
-range を使用することは可能ではありますが、実質的には -prefix stringrange,subscriptrange として扱われ、-prefix で指定された同じ条件プレフィックスをオーバーライドします。
-prefix オプションを参照してください。
コンパイル エラー コードのレベル | 戻りコード | 説明 |
---|---|---|
0 | 0 | 診断メッセージなし、または I レベル (情報) のみ |
4 | 0 | W レベル (警告) の診断メッセージ (オブジェクト コードが生成される) |
8 | 1 | E レベル (エラー) の診断メッセージ (オブジェクト コードが生成されるが実行動作は未定義 – ソース コードにエラーが含まれているため修正が必要) |
12 | 1 | S レベル (重大) の診断メッセージ (オブジェクト コードは生成されない) |
16 | 1 | コンパイラの中止 |
この OPTIONS(MAIN) プログラムが CICS の制御下で実行されるように指定します。このようなプログラムは、0、1、または 2 つのパラメーターを持っている場合があります (すべてポインターである必要があります)。そのようなプログラムは、ほぼ常に、-cics を指定し、1 つ以上の -sql および -dli を指定する場合があります。
XMLCHAR 組み込み関数の XML 属性について、アポストロフィ (一重引用符) で囲むか引用符 (二重引用符) で囲むかを指定します。-xmlattr apostrophe がデフォルトです。
XMLCHAR 組み込み関数の XML 出力で生成されるタグについて、すべて大文字にするか宣言で使用されている大文字と小文字の区別を継承するかを指定します。-xmlcase upper がデフォルトです。
構造体レイアウトの例 (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)
例 (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” */
-zp1 を使用したコンパイルは、すべての構造体を効果的にパックするため、データ整列に使用されるパッド バイトはすべて除外されます。これは、メインフレームが送信元のファイルにデータ項目がパックされている、または整列されていないレコードを含む場合に便利です。
-zp1 を設定する場合、ずれたデータがハードウェア例外を引き起こす可能性のある RISC アーキテクチャでは特に、コンパイラは予防策を講じる必要があります。
-zp1 コンパイラ オプションは次のように影響します。
-zp1 を使用する場合、ソース コードを変更せずに引数を渡す際の一貫性を維持するために、引数が構造体のメンバーで、引数とパラメーターの記述子が UNALIGNED 属性と ALIGNED 属性間で明示的に異ならない場合、コンパイラは呼び出しポイントでのダミー引数の作成を無効にします。
-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;
詳細は以下のとおりです。
-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 */