Natural には、Natural ソースオブジェクトの同時更新を防止するロックメカニズムが用意されています。 このメカニズムを使用すると、ローカルメインフレーム環境か、メインフレームサーバーに接続した SPoD(Natural Single Point of Development)環境、またはその両方で編集されたソースオブジェクトをロックできます。
プロファイルパラメータ SLOCK
を使用すると、さまざまなオブジェクトのロックメカニズムを有効または無効にできます(『パラメータリファレンス』を参照)。
ローカル環境および SPoD 環境におけるロックSLOCK=PRE
を設定すると、ローカル環境、SPoD 環境、または混合環境で編集されたソースオブジェクト、あるいは Natural ISPF を使用して編集されたソースオブジェクトのロックが有効になります。
SLOCK=PRE
は混合環境で作業する場合の推奨設定です。
SPoD 環境におけるロック
デフォルト設定 SLOCK=SPOD
では、SPoD 環境でのみオブジェクトのロックが有効になります。 ソースオブジェクトは、Natural スタジオを使用して編集した場合にのみロックされます。 詳細については、『Natural for Windows』ドキュメントの「SPoD
を使用したリモート開発」セクションの「オブジェクトのロック」を参照してください。
SPoD 環境では、SLOCK=SPOD
を設定すると Natural バージョン 4.1(およびそれ以前)と SPoD バージョン 2.1(およびそれ以前)との互換性が確保されます。
最新の修正のチェックSLOCK=POST
を設定すると、編集中のソースオブジェクトがソースワークエリアに読み込まれ、複数のユーザーによる編集が可能になります。 ただし、修正を最初に保存したユーザーのみがソースオブジェクトを更新できます。 この更新処理は、データベースに保存されたソースオブジェクトのタイムスタンプとソースワークエリアに読み込まれたソースオブジェクトのタイムスタンプを比較対照する形で行われます。
他のすべてのユーザーは、ソースを保存しようとすると該当するエラーメッセージを受け取ります。 旧バージョンの Natural の SPoD ロックコンセプトとの互換性はありません。
ロックの無効化SLOCK=OFF
を設定すると、すべてのロックメカニズムが無効になります。
ローカル環境で設定されるプロファイルパラメータ SLOCK=PRE
を使用したオブジェクトのロックの原理については、次のセクションで説明します。
次のタイプの Natural オブジェクトのソースは、適切な Natural エディタを使用すると編集中にロックされます。
プログラム
サブプログラム
サブルーチン
コピーコード
ヘルプルーチン
テキスト
マップ
ローカルデータエリア
グローバルデータエリア
パラメータデータエリア
DDM(データ定義モジュール)
Natural エディタを起動すると、ソースワークエリアに格納されたソースはロックされます。 編集するソースオブジェクトが別のユーザーによってすでにロックされていた場合(該当するメッセージが表示される)、エディタにソースは表示されますが画面上部にオブジェクト名が表示されません。 ソースを変更してその変更を保持する場合、そのソースには新しい名前を付けて新規ソースオブジェクトとして保存する必要があります。
注意:
ソースワークエリアへのソースの読み込みに READ
コマンドを使用すると、ソースオブジェクトはロックされません。 ソースオブジェクトは Natural エディタを起動した場合にのみロックされます。
別のユーザーにロックされているソースは保存(SAVE
コマンドおよび STOW
コマンド)できません。
ソースワークエリアに格納されてロックされたソースオブジェクトは、次のいずれかを実行するとロックが解除されます。
ソースワークエリアのクリア。
ソースワークエリアへの別のソースオブジェクトのソース読み込み。
別のライブラリへのログオン。
Natural セッションの終了。
エディタプロファイルで[Leave Editor with Unlock]オプションが設定されている場合に Natural エディタを終了(「全般的な情報」セクションの「エディタプロファイル」の「General Defaults」を参照)。 このオプションにより、エディタを終了するときに、現在のソースワークエリアに格納されているソースのロックを解除するかどうかが決まります。 また、このオプションはマップおよび DDM にも適用されます。
UNLOCK
システムコマンドを使用すると、ロックされたソースオブジェクトを表示したり、必要に応じてロックされたオブジェクトのロックを解除したりできます(『システムコマンド』ドキュメントを参照)。
オブジェクトのロックは、システムコマンド DELETE
や RENAME
、オブジェクトハンドラ、またはユーティリティ SYSMAIN、SYSTRANS、NATLOAD/NATUNLD を使用する場合にも考慮されます。
ソースオブジェクトを移動、削除、名前変更、または置換する場合は、オブジェクトのロック状態がチェックされます。
ソースオブジェクトがロックされている場合、コマンド実行は拒否されます。
ソースオブジェクトがロックされていない場合、コマンドは実行されます。
ユーティリティ SYSRPC、SYSPARM、および SYSERR ではオブジェクトのロックがサポートされていません。