実行時関数:指定したファイルやディレクトリのフル・パスを返します。
モジュール:USE DFLIB
形式
result = FULLPATHQQ (name, pathbuf)
name
(入力) CHARACTER*(*)。フル・パスを知りたい項目。現在のディレクトリのファイル名,相対ディレクトリ名またはファイル名,または,ネットワーク・ユニフォーム名前付け規約 (UNC) パス名が指定できます。
pathbuf
(出力) CHARACTER*(*)。name で指定した項目のフル・パスを受け取るバッファ。
結果
結果の型は INTEGER(4) です。結果は,フル・パスの長さ (バイト) です。関数が失敗した (通常,不正な名前を使った) 場合,0 が返されます。
フル・パスの長さは,ディレクトリが使用しているドライブ上でどの位深く入れ子になっているかに依存します。フル・パスが pathbuf の大きさよりも長い場合,FULLPATHQQ はバッファに収まるだけの一部のパスのみを返します。
pathbuf に返された文字列を使用する前に,パスの長さを検証してください。遭遇した最も長いフル・パスが使用しているバッファに一致しない場合,より大きな文字バッファを割り当ててください。以下の文を使って可能性のある最大長のパス・バッファを割り当てることができます。
USE DFLIB CHARACTER($MAXPATH) pathbuf
$MAXPATH は,DFLIB.F90 (\DF98\INCLUDE サブディレクトリ) モジュールで定義されているシンボル定数で,値は 260 です。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
USE DFLIB CHARACTER($MAXPATH) buf CHARACTER(3) drive CHARACTER(256) dir CHARACTER(256) name CHARACTER(256) ext CHARACTER(256) file INTEGER(4) len DO WHILE (.TRUE.) WRITE (*,*) WRITE (*,'(A, \)') ' Enter filename (Hit & RETURN to exit): ' len = GETSTRQQ(file) IF (len .EQ. 0) EXIT len = FULLPATHQQ(file, buf) IF (len .GT. 0) THEN WRITE (*,*) buf(:len) ELSE WRITE (*,*) 'Can''t get full path' EXIT END IF ! ! パスを分解します WRITE (*,*) len = SPLITPATHQQ(buf, drive, dir, name, ext) IF (len .NE. 0) THEN WRITE (*, 900) ' Drive: ', drive WRITE (*, 900) ' Directory: ', dir(1:len) WRITE (*, 900) ' Name: ', name WRITE (*, 900) ' Extension: ', ext ELSE WRITE (*, *) 'Can''t split path' END IF END DO 900 FORMAT (A, A) END