FULLPATHQQ

実行時関数:指定したファイルやディレクトリのフル・パスを返します。

モジュール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

関連情報

SPLITPATHQQ

		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