2012-03-16 72 views
1

我想知道在VMS上使用文件名和邏輯名的靈活性(在這種情況下〜文件名別名)的明顯限制。 您可以使用[dir]名稱或[.subdir]名稱等名稱,並且可以將它們與設備(如dskxy:[dir]名稱或甚至dskxy:[。subdir]名稱)結合使用。 然後有邏輯名稱,例如SYS $ LOGIN,你可以形成像SYS $ LOGIN:name這樣的文件名。 自然使用這將是SYS $ LOGIN:[。subdir]名稱,但似乎並未被接受。 我忽略了一些東西還是它剛性不靈活?VMS文件名可以結合邏輯名稱和子目錄嗎?

回答

2

事實上,令人沮喪的是SYS $ LOGIN:[.X]沒有解析。 在遊戲中考慮修復這個問題的方式太晚了,「做我的意思,而不是我說的」。 OpenVMS的政策是'做我所說的,做得很好'。

它還挺有道理的,如果你考慮到例如映射到一個無效的語法:

dev:[logindir][.x] 

但是這會工作:

dev:[logindir.][x] 

微妙的,但在把所有重要的區別「」 有人可能會爭辯說,任何「] [」應該默默地被放棄吧?

dskxy:[。subdir]名稱可用,因爲當前默認目錄是在那裏編織的。 它映射到dev:[default_dir.subdir]名稱

而這裏可能是這個原因從未改變的原因。 SYS $ LOGIN:[.X]是否包含解析中當前的默認目錄? 你不期望,但現有的OpenVMS主導行爲表示它應該在那裏。

你可以在某些種類的解決它通過定義例如紮根目錄:

$定義/反=隱瞞sys_login開發:[default_dir]

現在你可以說$ DIR sys_login: subdir]

但現在領先時期一定不能在那裏,邏輯本身什麼都不做。 它需要sys_login:[000000]才能工作。

不是真的幫你在這裏嗎?

希望這有助於一點, 海恩

+1

是的,謝謝。有關這種古怪的一點聊天很放鬆...... – user1274247 2012-03-19 14:45:16

2

SYS $登錄不是一個好等值「家」的根,因爲它是相當一個邏輯目錄,你需要在「設置默認」的。

如果您需要引用「home」下的目錄,則可能需要定義與sys $登錄目錄對應的根/設備邏輯。

$定義/工作家庭$ R「F $ STR(F $ trnlnm( 「SYS $登錄」) - 「] [ 」 - 「]」「]」 +)/反=隱瞞

注意「。」「和」隱藏「,這些會將其定義爲根設備。 很好記住,不能有雙重隱藏的邏輯,因爲CLI只翻譯一次(因此從翻譯後的sys $登錄中減去「。」[「])。 這將其定義在「工作級別」上,即作業中的所有進程都會知道它。

有了這個定義放入LOGIN.COM會讓你參考的東西,如: 家$ R:[MYDIR]等同於「/家庭$ R/MYDIR」

希望它將使你的VMS體驗更令人滿意。

相關問題