C$CHDIR

現在の作業ディレクトリを変更します。
制限事項:このルーチンはネイティブ COBOL でのみサポートされます。
注:この ACUCOBOL-GT ライブラリ ルーチンはこの COBOL バージョンで利用できます。この COBOL システムの互換性の問題は、トピックの終わりにある「互換性の問題」節に表示されます。

使用法

CALL "C$CHDIR"
USING DIR-NAME, ERR-NUM

パラメーター

DIR-NAME PIC X(n) 新しいディレクトリの名前またはスペースを含めます。

シン クライアントをサポートする "@[DISPLAY]:" が許可されます。次に例を示します。

C$CHDIR "@[DISPLAY]:C:\path"

シン クライアント環境では、表示ホスト上で現在のデフォルトのディレクトリを取得するには、DIR_NAME で "@[DISPLAY]:" の後にスペースを入れます。

ERR-NUM PIC 9(9) COMP-4 (オプション)    戻されたエラー メッセージ、または成功の場合はゼロを保持します。

コメント

2 番目の USING パラメーターを渡す場合、PIC 9(9) COMP-4 と記述する必要があります。このパラメーターは、ディレクトリの変更が成功した場合、ゼロに設定されます。それ以外は、オペレーティング システムのエラー番号が含まれます。

DIR-NAME にスペースが含まれる場合、現在のデフォルトのディレクトリがその中に戻されます。この場合、ERR-NUM は使用されません。それ以外は、新しいデフォルトのディレクトリにするディレクトリの名前を DIR-NAME に含める必要があります。Windows マシンでは、この中にドライブ名を入れることができます。ERR-NUM を渡す場合、変更が成功すると、このパラメーターはゼロに設定されます。それ以外は、オペレーティング システムから戻されるエラー値が ERR-NUM に含まれます。

存在しないディレクトリへの切り替えが可能なシステム (VMS など) と、切り替えが許可されないシステム (Windows、UNIX) があります。

このルーチンの動作は、FILENAME_SPACES 構成変数の影響を受けます。FILENAME_SPACES の値は、ファイル名でスペースが許可されるかどうかによって決まります。

重要

C$CHDIR を使用する場合、CODE_PREFIX 構成エントリを作成してオブジェクト ファイルの場所を検索します。CODE-PREFIX で指定されるすべての検索場所がフル パス名であることを確認します。CODE_PREFIX で現在のディレクトリ名や相対パス名を使用しないでください。フル パス名を使用しない場合、ランタイム システムは、オブジェクト ファイルを再度開く必要があるときにそのファイルを見つけることができません。

たとえば、ランタイム システムは、次の場合にオブジェクト ファイルを再度開く必要があります。

  • ソース デバッガーを使用している場合
  • プログラムにセグメンテーション (オーバーレイ) が含まれる場合
  • オブジェクト ライブラリを使用している場合

オブジェクト ファイルが、現在のディレクトリ、または現在のディレクトリに相対的な指定ディレクトリで最初に見つかり、現在のディレクトリを C$CHDIR ルーチンで変更した場合、ランタイム システムは、オブジェクト ファイルを再度開く必要があるときにそのファイルを見つけることができません。これにより、致命的なエラーが生じ、プログラムが停止します。

C$CHDIR を使用する際にデバッグ モードで実行している場合、必ず環境ではなく構成ファイルで CODE_PREFIX を設定してください。デバッグ モードではない場合は、環境で CODE_PREFIX を設定できます。

互換性の問題

  • この COBOL システムで "@[DISPLAY]" はサポートされていません。
  • FILENAME_SPACES 構成変数は、この COBOL システムでサポートされていません。スペースを含むファイル名を使用するには、名前を引用符で囲みます。
  • CODE_PREFIX 構成変数は、この COBOL システムでサポートされていません。