COMPOPT [option=value ...]
|
このシステムコマンドは、各種のコンパイラオプションを設定するために使用します。 設定したオプションは、Natural プログラミングオブジェクトのコンパイル時に評価されます。
オプションなしで COMPOPT
コマンドを入力すると、画面が表示されます。この画面では、以降で説明するオプションを有効または無効にできます。
個々のオプションのデフォルト設定は、Natural パラメータファイル内の対応するプロファイルパラメータを使用して設定されます。
このドキュメントでは、次のトピックについて説明します。
COMPOPT | オプションなしで COMPOPT システムコマンドを発行すると、ダイアログボックスが表示されます。 ここで使用可能なキーワードについては、次で説明します。
『Natural スタジオの使用』ドキュメントの「コンパイラオプション」も参照してください。 |
---|---|
COMPOPT option=value |
ダイアログボックスでオプションを変更する代わりに、 例: COMPOPT DBSHORT=ON |
次のコンパイラオプションを使用できます。 各オプションの目的および可能な設定の詳細については、対応する Natural プロファイルパラメータの解説を参照してください。
KCHECK
| PCHECK
| DBSHORT
| PSIGNF
| TQMARK
| THSEP
| GFID
| MASKCME
コンパイラパラメータは、次のような異なるレベルで指定できます。
個々のコンパイラパラメータのデフォルト設定は、コンフィグレーションユーティリティの[コンパイラオプション]カテゴリを使用して指定し、Natural パラメータファイル NATPARM
に保存されます。
セッション開始時に、対応するプロファイルパラメータを指定することによって、コンパイラオプション設定を上書きできます。
アクティブな Natural セッション中に COMPOPT
システムコマンドを使用してコンパイラパラメータの値を変更するには、次の 2 つの方法があります。コマンド割り当て(COMPOPT
optionvalue)を使用して直接行う方法、およびオプションなしで COMPOPT
コマンドを発行して=[コンパイラオプション]ダイアログボックスを表示する方法です。 コンパイラオプションに割り当てられた設定は、次の LOGON
コマンドを別のライブラリに発行するまで有効です。 別のライブラリへの LOGON
時には、デフォルト設定(上記の項目 1 を参照)に戻ります。 次に例を示します。
OPTIONS KCHECK=ON DEFINE DATA LOCAL 1 #A (A25) INIT <'Hello World'> END-DEFINE WRITE #A END
プログラムやサブプログラムなどの Natural プログラミングオブジェクトに、OPTIONS
ステートメントを使用してコンパイラパラメータを設定できます。 次に例を示します。
OPTIONS KCHECK=ON WRITE 'Hello World' END
OPTIONS
ステートメントで定義したコンパイラオプションは、このプログラミングオブジェクトのコンパイルにのみ影響し、COMPOPT
コマンドで設定した一連の設定を更新することはありません。
次に示すトピックは、COMPOPT
コマンドをリモートメインフレーム環境で使用する場合にのみ適用されます。
コンパイラキーワードパラメータは、次のような異なるレベルで指定できます。
個々のキーワードパラメータのデフォルト設定は、Natural パラメータモジュール NATPARM
の NTCMPO
マクロに指定します。
セッション開始時に、プロファイルパラメータ CMPO
でコンパイラキーワードパラメータを上書きできます。
アクティブな Natural セッション中に COMPOPT
システムコマンドを使用してコンパイラキーワードパラメータを変更するには 2 つの方法があります。コマンド割り当て(COMPOPT= optionvalue
)を使用して直接行う方法、およびキーワードパラメータなしで COMPOPT
コマンドを発行して[Compilation Options]画面を表示する方法です。 コンパイラオプションに割り当てられた設定は、次の LOGON
コマンドを別のライブラリに発行するまで有効です。 LOGON
時には、NTCMPO
マクロおよびプロファイルパラメータ CMPO
(上記参照)のいずれかあるいはその両方で設定されたデフォルト設定に戻ります。 次に例を示します。
OPTIONS KCHECK=ON DEFINE DATA LOCAL 1 #A (A25) INIT <'Hello World'> END-DEFINE WRITE #A END
プログラムやサブプログラムなどの Natural プログラミングオブジェクトに、OPTIONS
ステートメントを使用してコンパイラパラメータ(オプション)を設定できます。 次に例を示します。
OPTIONS KCHECK=ON WRITE 'Hello World' END
OPTIONS
ステートメントで定義したコンパイラオプションは、このプログラミングオブジェクトのコンパイルにのみ影響し、COMPOPT
コマンドで設定した一連の設定を更新することはありません。
次のオプションを使用できます。
これらのオプションは、CMPO
プロファイルパラメータと NTCMPO
パラメータマクロのいずれかまたは両方のキーワードサブパラメータに対応します。
ON | プログラミングオブジェクトでのフィールド宣言が、重要な Natural キーワードの集合に対してチェックされます。 定義された変数名がこれらのキーワードのいずれかに一致する場合、プログラミングオブジェクトがチェックまたはカタログされたときに構文エラーが報告されます。 |
---|---|
OFF | キーワードチェックは実行されません。 これはデフォルト値です。 |
『プログラミングガイド』の「Natural 予約キーワードのチェックの実行」セクションには、KCHECK
オプションでチェックされるキーワードのリストが記載されています。
『プログラミングガイド』の「Natural 予約キーワードのアルファベット順リスト」セクションには、Natural のすべてのキーワードおよび予約語の概要が記載されています。
ON |
コンパイラが、 パラメータチェックは、 このチェックを行うには、次の条件が必須です。
これに該当しない場合、 CATALL コマンドを PCHECK=ON で使用する場合の問題点
上述したように、 ただし、呼び出し側のオブジェクトが外部サブルーチンであるか、または 解決策:
|
---|---|
OFF | パラメータチェックは実行されません。 これはデフォルト値です。 |
ON |
プログラミングオブジェクト内のデータベースフィールド名は、対応する DDM に定義されるようなロングネームとみなされますが、例外として、2 文字のフィールド名は、基礎となるデータベースシステムで使用されるようなショートネームとみなされます。 これはデフォルト値です。 たとえ
|
---|---|
OFF | プログラミングオブジェクト内のすべてのデータベースフィールド名は、長さに関係なくロングネームとみなされます。 これにより、プログラムのデータベースフィールド名が誤って解釈される可能性を回避できます。 この設定を使用して、ショートネームの使用を全体的に禁止することができます。 |
Natural コンパイラによってデータベースフィールド(DDM に定義されているフィールド)と DBSHORT=ON
が解決されるときは、フィールド名の長さを使用して、識別子が "db-short-name" と "db-long-name" のどちらを表すかが判断されます。 フィールド名の長さが 2 文字のときは、"db-short-name" 参照が想定されますが、それ以外のすべての識別子は "db-long-names" として処理されます。
一般的な Natural 規則に従うと、DEFINE DATA LOCAL
が指定されたときに、プログラムで "db-short-names" を使用することはできません。ビュー定義や FIND
ステートメントの検索式にフィールドリストを作成したり、READ
ステートメントや HISTOGRAM
ステートメントに読み込み順序制御フィールドを指定することもできません。 これらの制限は、DBSHORT
オプションの ON
/OFF
にかかわらず、Natural コンパイラによって制御されます。
DBSHORT
の目的は、コンパイラの動作を次のように変更することです。
DBSHORT=ON | すべてが上記の「予備知識」のとおりに動作します。 |
---|---|
DBSHORT=OFF | あらゆるデータベースフィールド識別子は、何文字で構成されているかにかかわらず "db-long-name" とみなされます。 つまり、DDM のロングネーム列(DDM 表示では "Name" と表記)のみが、参照フィールドを確認するために考慮され、DDM ショートネーム(DDM 表示では "DB" と表記)は完全に無視されます。 |
DBSHORT=ON
の目的は、Natural プログラムで "db-long-name" を使用する代わりに "db-short-names" を使用して、データベースフィールドを参照できるようにすることです。
DBSHORT=OFF
を主に使用するのは、2 バイトの長さしかない識別子を持つロングネームが DDM に定義されている場合です。 DDM の生成時に、この DDM でアクセスする、基礎となるデータベースが DB2 などの SQL の場合には、2 バイトのロングネームを作成するだけで済みます。
これ以外のすべてのデータベースタイプについては、2 バイトの名前の長さでロングフィールドを定義しようとすると、エラー SYSDDM4219(SYSDDM
ユーティリティ)が発生します。
ただし、DBSHORT=OFF
が設定されているときは、DDM の "db-short-name" はコンパイラでチェックされません。 したがって、プログラムで db-short-field が使用されると、構文エラー NAT0981 が発生します。
ON | パック型数値の正の符号は、内部的に H'F' として表されます。 これはデフォルト値です。 |
---|---|
OFF | パック型数値の正の符号は、内部的に H'C' として表されます。 |
このオプションは、プロファイルパラメータ TS(非標準の小文字使用が行われる地域のための出力変換)を、Natural システムライブラリ(SYSTEM
を除いた "SYS" で始まる名前のライブラリ)のみに適用するか、またはすべてのユーザーライブラリにも適用するかを決定します。
TSENABL=ON
でカタログされた Natural オブジェクトでは、そのオブジェクトがシステムライブラリにない場合でも TS
パラメータが決定されます。
ON | プロファイルパラメータ TS は、すべてのライブラリに適用されます。
|
---|---|
OFF | プロファイルパラメータ TS は、Natural システムライブラリのみに適用されます。 これはデフォルト値です。
|
このオプションを使用すると、Natural によるグローバルフォーマット ID の内部生成を制御して、フォーマットバッファ変換の再利用に関する Adabas のパフォーマンスに影響を与えることができます。
ON | グローバルフォーマット ID がすべてのビューに対して生成されます。 これはデフォルト値です。 |
---|---|
VID | グローバルフォーマット ID が、ローカル/グローバルデータエリアのビューに対してのみ生成されます。プログラム内で定義されたビューに対しては生成されません。 |
OFF | グローバルフォーマット ID は生成されません。 |
グローバルフォーマット ID の詳細については、Adabas のドキュメントを参照してください。
GFID=abccddee
要素 | 説明 |
---|---|
a | x'F9' |
b | x'22' または x'21'(DB ステートメントに依存) |
cc | 物理データベース番号(2 バイト) |
dd | 物理ファイル番号(2 バイト) |
ee | ランタイムによって作成される番号(2 バイト) |
GFID=abbbbbbc
:ファイル番号が 255 以下で、Adabas バージョンが 6.2 より低い場合(NTDB
マクロ参照)
要素 | 説明 |
---|---|
a | x'F8'、x'F7'、または x'F6' |
bbbbbb | STOD 値の 1~6 バイト |
c | 物理ファイル番号 |
GFID=axbbbbbc
:ファイル番号が 255 よりも大きく、Adabas バージョンが 6.2 より低い場合
要素 | 説明 |
---|---|
a | x'F8'、x'F7'、または x'F6' |
x | 物理ファイル番号 - 上位バイト |
bbbbb | STOD 値の 2~6 バイト |
c | 物理ファイル番号 - 下位バイト |
GFID=abbbbbb
:Adabas バージョン 6.2 以降の場合
要素 | 説明 |
---|---|
a | x'F8'、x'F7'、または x'F6'
上記の意味は次のとおりです。 F6= |
bbbbbbb | STOD 値の 1~7 バイト |
注意:
STOD はストアクロック機械命令(STCK)の戻り値です。
このオプションは、小文字または大文字と小文字が混在するプログラムソースをメインフレームプラットフォームで使用できるようにします。 これにより、小文字または混在文字で記述されたプログラムを、他のプラットフォームからメインフレーム環境に移行しやすくなります。
ON | プログラムソースですべての小文字/大文字を許可します。 |
---|---|
OFF | 大文字モードのみを許可します。 このためには、キーワード、変数名および識別子を大文字で定義する必要があります。 これはデフォルト値です。 |
LOWSRCE=ON
を指定して小文字を使用するときは、次の点を考慮してください。
変数名の構文規則では、2 つ目以降の位置でも小文字が許可されます。 したがって、小文字による変数と大文字による変数という 2 つの変数を定義できます。
例:
DEFINE DATA LOCAL 1 #Vari (A20) 1 #VARI (A20)
LOWSRCE=OFF
を指定すると、上記の変数は異なるものとみなされます。
LOWSRCE=ON
の場合、コンパイラでは大文字と小文字が区別されないため、小文字と大文字は同様に扱われます。 同じ名前の変数を重複して定義することは許可されないため、これは構文エラーになります。
I/O ステートメントまたは MOVE EDITED
ステートメントでセッションパラメータ EM
(編集マスク)を使用する場合は、変数に割り当てられたデータ設定のレイアウトに影響する文字(EM
制御文字)およびデータ設定にテキストの部分を挿入する文字があります。
例:
#VARI :='1234567890' WRITE #VARI (EM=XXXXXxxXXXXX)
LOWSRCE=OFF
の場合、英字形式の変数には大文字の X、H、およびシルコンフレクス(^)記号しか使用できなくなるため、出力は "12345xx67890" になります。
LOWSRCE=ON
の場合、x は大文字 X として扱われるため、このフィールドフォーマットの EM
制御文字として解釈され、出力は "1234567890" になります。 この問題を回避するには、定数テキストの部分をアポストロフィ(')で囲んでください。
例:
WRITE #VARI(EM=XXXXX'xx'XXXXX)
このテキストの部分は、LOWSRCE
の設定にかかわらず EM
制御文字とはみなされません。
すべての変数名は LOWSRCE=ON
によって大文字に変換されるので、I/O ステートメント(INPUT
、WRITE
、または DISPLAY
)の変数名の表示は異なります。
例:
MOVE 'ABC' to #Vari DISPLAY #Vari
LOWSRCE=OFF
の場合、上記の例は次のように出力されます。
#Vari -------------------- ABC
LOWSRCE=ON
の場合、上記の例は次のように出力されます。
#VARI -------------------- ABC
ON | テキスト定数内の二重引用符は、シングルアポストロフィとして出力されます。 これはデフォルト値です。 |
---|---|
OFF | テキスト定数内の二重引用符は変換されず、二重引用符として出力されます。 |
例:
RESET A(A5) A:= 'AB"CD' WRITE '12"34' / A / A (EM=H(5)) END
TQMARK ON
の場合、次のように出力されます。
12'34 AB'CD C1C27DC3C4
TQMARK OFF
の場合、次のように出力されます。
12"34 AB"CD C1C27FC3C4
このオプションは、コンパイル時に千桁単位セパレータの使用を有効または無効にするために使用できます。 プロファイルパラメータ THSEP
、プロファイル/セッションパラメータ THSEPCH
、および『プログラミングガイド』の「セパレータ文字の表示方法のカスタマイズ」セクションを参照してください。
ON | 千桁単位セパレータを使用します。 文字列リテラルの一部ではないすべての千桁単位セパレータは、内部で制御文字と置き換えられます。 |
---|---|
OFF | 千桁単位セパレータを使用しません。つまり、コンパイラによって千桁単位セパレータ制御文字は生成されません。 これが互換性のある設定です。 |
CPAGE
オプションを使用して、変換ルーチンをアクティブにすることができます。変換ルーチンは、ランタイム時にオブジェクトが起動されると、すべての英数字定数を、コンパイル時にアクティブであったコードページからランタイム時にアクティブなコードページに変換します。
『Unicode およびコードページのサポート』ドキュメントの「プロファイルパラメータ」も参照してください。
ON | 英字文字列に対するコードページのサポートは有効です。 |
---|---|
OFF | 英字文字列に対するコードページのサポートは無効です。 これはデフォルト値です。 |
DB2ARRY
オプションを使用すると、SQL ステートメントの SELECT
または INSERT
を 1 回実行することによって、複数行を DB2 から取得または DB2 に挿入できるようになります。 これにより、配列を SQL SELECT
ステートメントの受け取りフィールドおよび SQL INSERT
ステートメントのソースフィールドとして指定できます。 DB2ARRY
を ON
に指定すると、DB2 の VARCHAR/GRAPHIC 列に対して Natural の英数字配列を使用できなくなります。 代わりに、Natural のロング英数字変数を使用する必要があります。
ON | DB2 配列のサポートが有効です。 |
---|---|
OFF | DB2 配列のサポートが無効です。 これはデフォルト値です。 |
次のオプションを使用できます。
これらのオプションは、CMPO
プロファイルパラメータと NTCMPO
パラメータマクロのいずれかまたは両方のキーワードサブパラメータに対応します。
Natural バージョン 2.3 では、FIND
ステートメントの WITH
節のマルチプル設定フィールドに使用する比較ロジックが変更されています。 これは、特定形式の FIND
ステートメントが含まれるバージョン 2.2 プログラムがバージョン 3.1 でコンパイルされると、異なる結果が返されることを意味します。 このオプションを使用して、バージョン 3.1 の拡張比較ロジックとは異なる方法でマルチプル設定フィールドが使用される
WITH
節を含む FIND
ステートメントを検索できます。
ON | コンパイル時に検出された、該当する形式のすべての FIND ステートメントに対し、エラー NAT0998 が返されます。
|
---|---|
OFF | 該当する形式の FIND ステートメントの検索は実行されません。 これはデフォルト値です。
|
FIND
ステートメントの WITH
節のマルチプルバリューフィールドに対する比較ロジックが Natural バージョン 2.3 で変更されたのは、他のステートメント(IF
など)の変換ロジックに合わせるためです。
FIND
ステートメントの 4 種の形式を区別できます。次の例の MU
は、マルチプルバリューフィールドを表します。
FIND XYZ-VIEW WITH MU = 'A'
バージョン 2.2 以降では、MU
の少なくとも 1 つ以上のオカレンスに "A" の値があるレコードが返されます。
FIND XYZ-VIEW WITH MU NOT EQUAL 'A'
バージョン 2.2 では、MU
のどのオカレンスにも "A" の値がないレコードが返されます(4. と同じ)。 バージョン 2.3 以降では、MU
の少なくとも 1 つ以上のオカレンスに "A" の値がないレコードが返されます。
FIND XYZ-VIEW WITH NOT MU NOT EQUAL 'A'
バージョン 2.2 では、MU
の少なくとも 1 つ以上のオカレンスに "A" の値があるレコードが返されます(1. と同じ)。 バージョン 2.3 以降では、MU
のすべてのオカレンスに "A" の値があるレコードが返されます。
FIND XYZ-VIEW WITH NOT MU = 'A'
バージョン 2.2 以降では、MU
のどのオカレンスにも "A" の値がないレコードが返されます。 これは、2. と 3. の形式の FIND
ステートメントが含まれるバージョン 2.2 の既存のプログラムをバージョン 2.3 で新たにコンパイルした場合、異なる結果が返されることを意味します。
FINDMUN=ON
を指定すると、コンパイル中に検出された 2. または 3. の形式のすべての FIND
ステートメントに対してエラー NAT0998 が返されます。
このような場合でもバージョン 2.2 のときと同じ結果を取得するには、ステートメントを次のように修正する必要があります。
FIND XYZ-VIEW WITH MU NOT EQUAL 'A'
これを次のように修正します。
FIND XYZ-VIEW WITH NOT MU = 'A'
FIND XYZ-VIEW WITH NOT MU NOT EQUAL 'A'
これを次のように修正します。
FIND XYZ-VIEW WITH MU = 'A'
ON | YYYY マスク文字に一致する有効な年の値の範囲は 1582~2699 で、MASK オプションと MOVE EDITED とを互換します。 プロファイルパラメータ MAXYEAR を 9999 に設定した場合は、有効な年の値の範囲は 1582~9999 です。
|
---|---|
OFF | YYYY マスク文字に一致する有効な年の値の範囲は 0000~2699 です。 これはデフォルト値です。 プロファイルパラメータ MAXYEAR を 9999 に設定した場合は、有効な年の値の範囲は 0000~9999 です。
|
ON | ソースとターゲットの長さと精度が同じである数値変数の割り当ては、Natural バージョン 2.2 の場合と同様に実行されます。 |
---|---|
OFF | ソースとターゲットの長さと精度が同じである数値変数の割り当ては、Natural バージョン 2.3 以降の場合と同様に実行されます。つまり、ソースとターゲットの長さまたは精度が異なっているかのように処理されます。 これはデフォルト値です。 |
重要:
このコンパイラオプションは、Natural バージョン 4.2 で移行をスムーズにするためにのみ使用可能です。 Natural バージョン 4.2 の後のリリースで再び削除されます。
Natural バージョン 4.2 で導入された多数の機能とプログラミング機能は、バージョン 4.2 で開発およびコンパイルされたプログラムをバージョン 4.1 環境でのオペレーションに使用するために再コンパイルするときに、問題を生じる可能性があります。 該当する機能については、下記のリストを参照してください。
V41COMP
オプションによって、このような非互換性を検出し、再コンパイルが失敗した原因を示す理由コードを提供するエラーメッセージを表示することができます。 可能な値は次のとおりです。
ON | バージョン 4.2 でのプログラムのコンパイル時に、バージョン 4.2 ではサポート対象であっても、バージョン 4.1 ではサポートされない構文構造が使用されようとするたびに拒否し、NAT0647 構文エラーと対応する理由コード(下記参照)を出力します。 |
---|---|
OFF | バージョン 4.1 の互換性のテストを実行しません。 これはデフォルト値です。 |
次の表に、バージョン 4.2 と 4.1 におけるコンパイル関連の違いの概要、および互換性のない構文が検出されたときに表示される理由コードを示します。
機能 | バージョン 4.2 | バージョン 4.1 | 理由コード | ||||||
---|---|---|---|---|---|---|---|---|---|
新規フォーマット U(Unicode) | 可能 | 不明 | 001 | ||||||
オカレンスの数が可変である配列
X-array の例: DEFINE DATA LOCAL 1 #ARR (A10/1:*) |
可能 | 不明 | 002 | ||||||
英字およびリテラル(定数)に可能な長さ | 1 バイト~1 GB | 1 バイト~253 バイト(NAT0264) | 003 | ||||||
|
可能 | 不明 | 004 | ||||||
次の新規ステートメント:
|
可能 | 不明 | 005 | ||||||
SET GLOBALS ステートメント:
|
可能 | 不明 | 006 | ||||||
次のシステム変数:
|
可能 | 不明 | 007 | ||||||
未使用 | - | - | 008 | ||||||
INCLUDE で提供されるソースパラメータの長さとタイプ
例: INCLUDE COPY01 'WRITE *LINE' 'WRITE *PROGRAM' |
フォーマット U(Unicode)で長さは指定なし | 英字のみで長さは 80 バイト以下 | 009 | ||||||
データビューでの Adabas LA フィールドにおける次のいずれかの定義
|
可能 | 不明 | 010 |