VOLUME ATTRIBUTES

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 6.0


VOLUME ATTRIBUTES (volume; size; used; free)

引数説明
volume文字列ボリュームの名前
size数値ボリュームのサイズ(バイト単位)
used数値使用サイズ(バイト単位)
free数値空きサイズ(バイト単位)

説明

VOLUME ATTRIBUTESコマンドは、引数volumeに渡した名前を持つボリュームのサイズ、使用サイズおよび空きサイズをバイト単位で表わして返します。

Note: volumeがマウントされていないリモートボリュームを示す場合、OK変数に0が代入され、3つの引数は-1を返します。

例題

このアプリケーションには、夜間や週末に実行し、ディスク上に大規模な中間ファイルを格納するバッチ処理がいくつか含まれています。このプロセスをできる限り自動的かつ柔軟にするには、中間ファイルを格納するために十分な空きサイズを持つ最初のボリュームを自動的に見つけるルーチンを作成します。例えば以下のようなプロジェクトメソッドを作成します。

      ` Find volume for space プロジェクトメソッド
      ` Find volume for space ( 実数 ) -> 文字列
      ` Find volume for space ( 必要なサイズ ) -> ボリューム名または空の文字列

   C_STRING(31;$0)
   C_STRING(255;$vsDocName)
   C_LONGINT($vlNbVolumes;$vlVolume)
   C_REAL($1;$vlSize;$vlUsed;$vlFree)
   C_TIME($vhDocRef)

      `戻り値を初期化する
   $0:=""
      `エラー阻止メソッドを使用し、すべのI/O処理を保護する
   ON ERR CALL("ERROR METHOD")
      `ボリュームのリストを取得する
   ARRAY STRING(31;$asVolumes;0)
   gError:=0
   VOLUME LIST($asVolumes)
   If (gError=0)
         `Windowsで実行しいる場合、(通常の) 2つのフロッピーディスクドライブは省略する
      If (On Windows )
         $vlVolume:=Find in array($asVolumes;"A:\")
         If ($vlVolume>0)
            DELETE FROM ARRAY($asVolumes;$vlVolume)
         End if 
         $vlVolume:=Find in array($asVolumes;"B:\")
         If ($vlVolume>0)
            DELETE FROM ARRAY($asVolumes;$vlVolume)
         End if 
      End if 
      $vlNbVolumes:=Size of array($asVolumes)
         `それぞれのボリュームに対し
      For ($vlVolume;1;$vlNbVolumes)
            `サイズ、使用サイズ、空きサイズを取得する
         gError:=0
         VOLUME ATTRIBUTES($asVolumes{$vlVolume};$vlSize;$vlUsed;$vlFree)
         If (gError=0)
               `空きサイズは十分にありますか(必要なサイズに32KBを加えたサイズ) ?
            If ($vlFree>=($1+32768))
                  `もし十分であれば、ボリュームがアンロックされいるかどうかをチェック...
               $vsDocName:=$asVolumes{$vlVolume}+Char(Directory symbol )+"XYZ"+String(Random)+".TXT"
               $vhDocRef:=Create document($vsDocName)
               If (OK=1)
                  CLOSE DOCUMENT($vhDocRef)
                  DELETE DOCUMENT($vsDocName)
                     `すべ問題がなければ、ボリュームの名前を返す
                  $0:=$asVolumes{$vlVolume}
                  $vlVolume:=$vlNbVolumes+1
               End if 
            End if 
         End if 
      End for 
   End if 
   ON ERR CALL("")

このプロジェクトメソッドがアプリケーションに追加されると、例えば、以下のように記述することができます。

   $vsVolume:=Find volume for space (100*1024*1024)
   If($vsVolume#"")
      ` Continue
   Else
      ALERT("A volume with at least 100 MB of free space is required!")
   End if

参照

VOLUME LIST.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次