Natural for UNIX では、オペレーティングシステム機能からアクセスできるファイルにオブジェクトを保存します。オブジェクトが Adabas システムファイルに保存されている Natural for Mainframes とは異なり、Natural for UNIX では、ディスク上の特定のディレクトリにオブジェクトを保存します。そのため、Adabas などのデータベースは、Natural for UNIX でNatural を実行する必要はありません。
このドキュメントでは、次のトピックについて説明します。
デフォルトでは、Natural ライブラリは、特定の Natural バージョンの Natural ルートディレクトリの下にサブディレクトリとして作成されます。サブディレクトリの名前はライブラリと同じです。
Natural オブジェクトは、サブディレクトリにファイルとして保存されます。Natural オブジェクトのファイル名には、次の形式があります。
file-name.NKT
file-name | これはオブジェクトの名前です。『Natural の使用』の「オブジェクトの命名規則」も参照してください。 | ||||||||
N | 拡張子の最初の文字は常に "N" です。これは "Natural" を表します。 | ||||||||
K |
|
||||||||
T | 拡張子の 3 番目の文字は、オブジェクトのタイプを表します。有効な値の詳細については、次のリストを参照してください。 |
例えば、ソースプログラム TESTPROG
はファイル TESTPROG.NSP として保存され、マップ TESTMAP
に対して生成されるコードはファイル TESTMAP.NGM として保存されます。
注意:
ファイル名はオブジェクト名とは異なる場合があります。現在のオブジェクト名と対応する内部オブジェクト名の両方がファイル FILEDIR.SAG に記述されます。
可能な拡張子では、次のオブジェクトタイプに対してそれぞれの文字および数字が使用されます。
文字または数字 | オブジェクトタイプ |
---|---|
A | パラメータデータエリア(PDA) |
C | コピーコード |
D | DDM |
G | グローバルデータエリア(GDA) |
H | Helproutine |
L | ローカルデータエリア(LDA) |
M | マップ |
N | Subprogram |
P | プログラム |
S | サブルーチン |
T | テキスト |
4 | クラス |
5 | コマンドプロセッサ |
7 | 関数 |
8 | アダプタ |
デフォルトでは、Natural によって割り当てられたオブジェクトはアクセス権 "rw-rw-rw-".を取得します。これにより、オーナー(他のユーザー)のグループに属していないユーザーが、Natural プログラムを再カタログできるようにします。これが望ましくない場合は、UNIX
ユーティリティ umask
を実行し、適切なマスクを設定する必要があります。
Natural アプリケーションを開発するユーザーは、アプリケーションに属するすべてのオブジェクトに対し、読み取りおよび書き込みアクセス権を保持する必要があります。通常の実稼働環境では、書き込みアクセス権がメンテナンスチームに制限される場合があります。アクセス権が低すぎるためにオブジェクトにアクセスできない場合、Natural はオブジェクトが見つからなかったときと同様に動作します。
Natural システムファイル FNAT
(システムプログラム用)と FUSER
(ユーザー作成プログラム用)は、異なるサブディレクトリにあります。
FNAT
は以下のディレクトリ構造を想定しています。
FNAT LIBDIR.SAG SYSTEM FILEDIR.SAG SRC GP ERR RES SYS* FILEDIR.SAG SRC GP ERR RES
ファイル LIBDIR.SAG は、FNAT
でのみ利用可能です。Natural を使用してインストールされたすべての Software AG 製品に関する情報が含まれています。この情報は、システムコマンド SYSPROD
を使用して表示できます。
FUSER
は以下のディレクトリ構造を想定しています。
FUSER SYSTEM FILEDIR.SAG SRC GP ERR RES user-library1 FILEDIR.SAG SRC GP ERR RES
ユーザーライブラリの名前を "SYS" という文字で始めることはできません。
ディレクトリ構造は、Natural のインストール中に生成されます。システムおよびユーザーライブラリを表すディレクトリには、次のものが含まれています。
FILEDIR.SAG
このファイルには、Natural によって使用される内部ライブラリ情報が含まれています。詳細については、次の「ファイル FILEDIR.SAG」を参照してください。
DDM はローカルライブラリに保存できます。プログラムで DDM が使用されている場合、Natural は最初に現在のライブラリを検索し、次に steplib を検索してから、ライブラリ SYSTEM
を検索します。DDM が見つからない場合、プログラムはコンパイルされず、エラーメッセージが表示されます。ただし、FDDM モードが有効になっている場合は、Natural はシステムファイル FDDM
.でのみ DDM を検索します。
システムファイル FNAT
、FUSER
および FDDM
へのパスは、コンフィグレーションユーティリティで定義します。システムファイルはバージョンに依存します。したがって、Natural は現行の Natural バージョンのシステムファイルにのみアクセスできます。FNAT
システムファイルは 1 つのみ持つことをお勧めします。ただし、複数の FUSER
システムファイルを定義することは可能です(例えば、目的ごとに異なる開発領域がある場合)。
システムファイル FDDM
は、すべての DDM を保存できるコンテナです。
FDDM
は以下のディレクトリ構造を想定しています。
FDDM SYSTEM FILEDIR.SAG SRC GP
デフォルトでは、システムファイル FDDM
はアクティブではありません。このモードを使用するには、次の説明に従って FDDM モードをアクティブにする必要があります。
FDDM モードがアクティブの場合(グローバルコンフィグレーションファイルでデータベース ID とファイル番号の両方が 0 に一致しない場合)、すべての DDM が保存され、システムファイル FDDM
に読み込まれます。ライブラリに格納された DDM は、Natural からアクセスできません。これは、すべての DDM がシステムファイル FDIC
に保存されるメインフレームに類似しています。
グローバルコンフィグレーションファイルで FDDM
システムファイルが未定義の場合、DDM は Natural ライブラリ FUSER
および FNAT
に保存されます。
FDDM モードをアクティブ化するには
FDDM モードで DDM を保存する空のディレクトリを作成します。ディレクトリには、Natural の命名規則に対応する任意の名前を付けることができます。
コンフィグレーションユーティリティを呼び出します。
グローバルコンフィグレーションファイル(カテゴリ System Files)で、システムファイル FDDM
のデータベース ID とファイル番号を割り当て、最初のステップで作成したディレクトリへのパスを定義します。
必要なパラメータファイルを選択します。
パラメータ FDDM
を見つけます。
ヒント:
"FDDM" を検索して、このパラメータを見つけます。詳細については、『コンフィグレーションユーティリティ』ドキュメントの「パラメータの検索」を参照してください。
パラメータ FDDM
には、グローバルコンフィグレーションファイルで定義したものと同じデータベース ID とファイル番号を指定します。
変更を保存します。
以下の説明に従って、必要な DDM をすべてシステムファイル FDDM
に移行します。
FDDM モードで使用できるすべての DDM は、システムファイル FDDM
に含まれている必要があります。特に、Natural に付属するライブラリ SYSEXDDM
のサンプル DDM は、システムファイル FDDM
で使用できることが必要です。
DDM を FDDM
システムファイルに移行する場合は、以下のようなさまざまな方法を選択できます。
オブジェクトハンドラを使用できます。これは、FDDM
システムファイルをサポートし、DDM を FDDM
システムファイルに移行可能にします。DDM は Natural ライブラリからアンロードでき、アクティブな Natural セッションの FDDM
システムファイルに保存できます。
重要:
開発環境を完全に移行するには、オブジェクトハンドラを使用することをお勧めします。
また、SYSMAIN
ユーティリティのコピー機能または移動機能を使用して DDM を移行することもできます。この場合、古い環境を再度使用するために、最初に FDDM
パラメータを非アクティブ化する必要があります。
これらの代替策についての詳細は次に説明します。
注意:INPL
ユーティリティは、FDDM モードがアクティブでない場合は Natural ライブラリに、または FDDM モードがアクティブな場合はシステムファイル FDDM
に、DDM をロードします。ロードされた INPL ファイルが両方のモードで動作するように設計されている場合、このことで多少影響を受ける可能性があります。このためには、DDM が Natural ライブラリおよび FDDM
システムファイルで使用できることが必要です。
オブジェクトハンドラを使用して DDM をシステムファイル FDDM
に移行するには
上述の説明に従って、FDDM モードをアクティブ化します。
修正されたパラメータファイル(パラメータ FDDM
のパスが定義されているパラメータファイル)を使用して、Natural を起動します。
ダイレクトコマンド SYSOBJH
を発行して、オブジェクトハンドラを呼び出します。
次の手順は、オブジェクトハンドラウィザードを使用することを前提としています。
メインメニューで、Unload 機能をマークして ENTER キーを押します。
結果の画面で、オプション[Unload objects into Natural work file(s)]をマークして ENTER キーを押します。
結果の画面で、オプション[Set additional options]をマークして ENTER キーを押します。
結果の画面で、オプション[Use FDDM file for processing DDMs]を非アクティブ化し、ENTER キーを押して前の画面に戻ります。
これにより、(移行される DDM が含まれる)古い環境がアクティブになります。このオプションを非アクティブ化しないと、移行する DDM にアクセスできません。
ENTER キーを繰り返し押して、アンロードするオブジェクトタイプを選択する画面を表示します。
オプション[Natural library objects only]は、デフォルトで選択されています。このオプションは次の手順で必要です。
ENTER キーを押します。
表示される画面で、フィールド[Library]と[Object name]にアスタリスク(*)を入力します。さらに、フィールド[More detailed specification of objects]にマークを付けます。ENTER キーを押します。
結果の画面で、オプション[Error messages]および[Shared resources]を非アクティブ化します。[Natural types]フィールドで「"V"」と入力し、ENTER キーを押します。
ENTER キーを押して、処理するコマンドを表示します。
ENTER キーを押して、アンロード機能を開始します。
オブジェクトがアンロードされたら、メインメニューに戻ります。
メインメニューで、Load 機能をマークして ENTER キーを押します。
結果の画面で、オプション[Load objects from Natural work file(s)]をマークして ENTER キーを押します。
結果の画面で、オプション[Set additional options]をマークして ENTER キーを押します。
結果の画面で、オプション[ Use FDDM file for processing DDMs]をアクティブ化します。
これにより、FDDM
システムファイルが含まれる新しい環境がアクティブになります。
注意:
DDM は同じ名前で異なるライブラリに存在することができます。FDDM
システムファイルの DDM が上書きされないようにして同じ名前の DDM を検出するには、[Do not replace]オプションを使用して DDM をロードすることをお勧めします。このオプションは、オプション[Use FDDM file for processing DDMs]と同じページにあります。
ENTER キーを押して前の画面に戻ります。
ENTER キーを繰り返し押して、ロードするオブジェクトタイプを選択する画面を表示します。
オプション[Load all option from the work file]は、デフォルトで選択されています。このオプションは次の手順で必要です。
ENTER キーを押します。
これで、処理するコマンドが表示されます。
ENTER キーを押してオブジェクトをロードします。
すべての DDM をシステムファイル FDDM
に移行したら、FDDM
が使用されているかどうかを確認できます。
FDDM
が使用されているかどうかを確認するには
Natural を開始します。
システムコマンド SYSPROF
を発行します。
FDDM
ファイルが表示されている場合、Natural はこのシステムファイルに保存されている DDM のみにアクセスします。
FDDM
ファイルが表示されない場合、または予期されるファイルが表示されない場合は、セッションに使用されるパラメータファイルを改訂します。
Natural 開発者は、すべてのオブジェクトに対して読み取り、書き込み、および削除を行う権限を持っている必要があります。
エンドユーザーは、生成されたプログラムの読み取り権限のみを必要とします(場合によっては、ソースの読み取り権限も必要です)。
オペレーティングシステムユーティリティを使用して Natural ファイルにアクセスしないでください。これらのユーティリティは、Natural ディレクトリ情報を変更したり、破壊したりする可能性があります。
コードページの競合が発生することがあるため、外部のエディタは使用しないことをお勧めします。競合が発生すると、必ずではありませんが、ソースコードが破損するおそれがあります。
プライベートデータファイルはディレクトリ FUSER
、FNAT
および FDDM
に保存しないでください。Natural により予期しない方法で削除または変更される可能性があります。
UNIX アプリケーションの作業ディレクトリとして、ディレクトリ FNAT
、FUSER
および FDDM
のいずれも使用しないでください。Natural システムコマンドの発行時に問題を引き起こす可能性があります。
Natural からアクセスするオブジェクトのファイル名(8.3 フォーマットのファイル名を含むパス)は、255 バイトを超えてはなりません。
ファイル FILEDIR.SAG は最大 60000 個のオブジェクトをサポートします。オブジェクトのプログラミングモード(ストラクチャードまたはレポーティング)や内部的に変換されたオブジェクト名など、Natural によって使用される内部ライブラリ情報が含まれています。これらの内部オブジェクト名は、Natural オブジェクトを保存する際に、以下の名前でディスクに自動的に作成されます。
8 文字を超える名前(DDM の場合もあります)
Natural ではサポートされているものの、オペレーティングシステムではサポートされていない特殊文字を含む名前。
内部オブジェクト名は一意であり、現在のオブジェクト名の省略形と任意の数値で構成されます。現在のオブジェクト名と対応する内部オブジェクト名の両方が FILEDIR.SAG に記載されます。
オブジェクトが正しいディレクトリにある場合でも、このライブラリ情報が FILEDIR.SAG に含まれた後でのみ Natural で使用できます。Natural 内で作成されたオブジェクトの場合、ライブラリ情報は自動的に組み込まれます。その他のオブジェクトでは、SYSMAIN
ユーティリティの Import 機能を使用する必要があります。
ユーティリティ FTOUCH
は、Natural の外部で FILEDIR.SAG の更新に使用できます。
Natural ライブラリ内のディレクトリファイル FILEDIR.SAG および Natural エラーメッセージファイルは、プラットフォームに依存しないポータブル名フォーマットで作成されます。例えば、異なる Windows、UNIX、OpenVMS の各プラットフォーム間で、オペレーティングシステムのコマンドを使用してライブラリをコピーするだけで
FUSER
ライブラリを交換できます。
FNAT
システムファイルは、Natural のインストールに付属し、バージョン固有かつプラットフォーム固有です。したがって、異なるプラットフォーム間で FNAT
システムファイルを共有することはお勧めしません。特に、Windows プラットフォーム上の FNAT
システムファイルには、一部の UNIX または OpenVMS プラットフォームの FNAT
システムファイルとまったく異なる一連のユーティリティが含まれています。
異なるプラットフォーム間で FUSER
システムファイルを共有することが可能になりましたが、実行する場合は慎重に処理する必要があります。これは、Natural のロックメカニズムはマシン境界を越えるものではなく、したがって、異なるプラットフォーム上の 2 つの Natural セッションで、予期しない結果を伴って同じオブジェクトを同時に修正する可能性があるためです。
以下では次のトピックについて説明します。
移植対象のアプリケーションがシステム変数 *LANGUAGE
を使用する場合は、次の情報に注意する必要があります。
ほとんどすべての Natural オブジェクトは、大文字のみを含む名前でシステムファイルに保存されます。例外は、言語依存オブジェクト(特定の言語用に作成されたオブジェクト)です。言語依存オブジェクトの名前には、小文字を含めることができます。Windows は大文字と小文字が厳格には区別されない(case-preserving)オペレーティングシステムであるため(一方 UNIX は大文字と小文字が区別される(case-sensitive)オペレーティングシステム)、UNIX で作成された名前が Windows で競合を起こしたり、UNIX で開発されたアプリケーションが Windows で予期しない結果を招くことがあります。
注意:
OpenVMS は Windows と同様に動作します。大文字と小文字は区別されません。ただし、ファイル名は常に大文字で作成されます。
コマンド SAVE PGM&
は、オブジェクト名に言語識別子を含むオブジェクトを作成します。結果のオブジェクト名は、次の *LANGUAGE
の設定によって異なります。
*LANGUAGE の設定
|
次の名前のオブジェクトが作成されます |
---|---|
33 | PGMX (大文字の X を使用)
|
59 | PGMx (小文字の x を使用)
|
UNIX(PGMX.NGP および PGMx.NGP)で作成された異なるオブジェクトは、ファイル FILEDIR.SAG 内で名前 PGMx
.および PGMX
のエントリを取得します。これら 2 つのオブジェクトには、Natural が実行される環境に応じて異なる処理が行われます。
Natural for UNIX で PGMX
を実行する場合、ファイル PGMX.NGP はバッファプールにロードされ、実行されます。
Natural for Windows で PGMX
を実行する場合、ファイル PGMX.NGP または PGMx.NGP のいずれかがバッファプールにロードされ、実行されます。これは、Windows がこれらの 2 つのオブジェクトを区別しておらず、1 つの同じオブジェクトとして扱うためです。したがって、FUSER
またはそのような FUSER
のコピーを共有するアプリケーションが異なって動作する可能性があります。
64 ビットプラットフォームで作成されていない、非ポータブルフォーマットの古いメッセージファイルは読み取れません。
アプリケーションを 32 ビットプラットフォームから 64 ビットプラットフォームに移行する場合は、最初に古いメッセージファイルをポータブルフォーマットに変換する必要があります。これを行うには、SYSERR ユーティリティのエクスポート機能およびインポート機能を使用します。まず、メッセージファイルをテキストファイルにエクスポートし、次にテキストファイルを Natural にインポートして新しいメッセージファイルを生成します。これにより、Windows、UNIX、OpenVMS で読み取り可能なポータブルメッセージファイルが作成されます。エクスポート機能およびインポート機能の詳細については、『ツールおよびユーティリティ』ドキュメントの「メッセージファイルとテキストファイルの生成」を参照してください。
セマフォは、Natural システムファイルへのアクセスを同期するために使用されます。これには追加のオペレーティングシステムリソースが必要なため、カーネルパラメータ SEMMNI
および SEMMNS
を、アクセスされるシステムファイル数に合わせて増やすことを検討する必要があります。
セマフォを使用すると、複数のユーザーがシステムファイル FNAT
および FUSER
を扱う権限を持つことができます。セマフォ ID は、ロックファイル(*.LCK)とともに保存されます。さらに Natural セッションが開始されると、バッファプールはセマフォ ID と対応するロックファイルを探して同期します。
ロックファイルが存在しない場合は、新しいセマフォ ID とロックファイルが生成されます。これは、同期が不可能であることを意味します。
注意:
1 つのリソースのみを削除することはできません。セマフォ ID と対応するロックファイルを必ず削除する必要があります。
Natural ライブラリを保存するために NFS(Network File System)を使用する場合、Natural ライブラリを保存するディレクトリをネットワークのファイルサーバーから NFS を経由してマウントすると、障害が発生することがあります。
これは、Natural オブジェクトの更新中に各ライブラリに保存された FILEDIR.SAG ファイルをロックする必要があるためです。
NFS のロックが、関与しているプラットフォーム間で不適合があったり、正しく設定されていないと、Natural は要求が処理されるまでに終了できない状態でハングすることがあります。この要求は、通常、関連するシステムのコンソールに表示されるか、システムに依存する別のログファイルに記録されます。
ニュークリアスがハングしたり、終了できない障害を回避するには、Natural ライブラリをローカルディスクにだけ保存します。