2011-07-04 41 views
3

我對OpenVMS的DCL中的一些語法非常困惑。例如,這些都是一些混淆這我行:OpenVMS中的DCL符號語法

$ wo = "write sys$output" 

是否造成寫SYS $輸出符號wo

$ billing_run_number == p1 

p1傳遞給.com文件的參數被執行的時候?可以提供多少個參數?

$ wo "BILLING_RUN_NUMBER = ''billing_run_number'" 

是否將''abc'替換爲符號abc的內容?爲什麼它是'abc'而不是'abc'?我們可以使用「」嗎?

$ if ((status .nes. "P") .and. (status .nes. "M")) .or. (ftp_status .nes. "Y") 

.nes.是什麼意思?等於?我也見過.ne。 ,.eqs。太。他們有什麼不同?

爲什麼「和」和「或」被兩個點包圍?一個DCL特定的語法?

如果有任何易於理解的免費在線教程,會是不錯的選擇。謝謝你們!

回答

4

from memory:$ wo = "write sys$output"就像你說的那樣,將wo指定爲「write sys $ output」的別名,VMS相當於Unix stdout。

.nes.與「不等於字符串」相比,.ne.是一個數字「不等於」。

p1是您猜測的(第一個)參數。我不記得p1是否通過p9或更多,或者是否沒有任何限制。 p0可能是程序名,就像Python的sys.argv [0]一樣。

命令過程最多接受8個參數,稱爲P1 .. P8。

一個單引號(')內插以下變量的名字,所以wo "BILLING_RUN_NUMBER = ''billing_run_number'"將輸出,例如,BILLING_RUN_NUMBER = '42',假設P1等於42.我不記得確切DCL怎麼知道該怎麼做時,看到兩個單報價在那樣的行...

官方的咒語是「」符號」有由符號

的值代替實際DCL文本會得到你開始至少...大多數商店在三環活頁夾中使用VMS有幾百磅的文檔。問問周圍。

1

是p1傳遞給.com文件時執行的 ?它可以提供多少個 參數?

您最多可以傳遞8個參數。每個被定義爲P1,P2 ...P8

如果需要超過8個參數,你可以使用招像

@my_dcl 「my_p1」 「my_p2」 「my_p3」 「my_p4」 「my_p5」 「my_p6」 「my_p7」 「my_p8 my_p9 my_p10」

my_dcl,P8將在一個單個字符串中包含「my_p8 my_p9 my_p10」的值。

$ WO 「BILLING_RUN_NUMBER = 'billing_run_number'」

是'ABC'通過符號ABC的內容 substituded?爲什麼它'abc' 但不是'abc'?我們可以使用「」嗎? (狀態.nes。「P」).and。(狀態 .nes。「M」)).or。(或狀態「。」。「P」).and。(狀態 .nes。「M」)).or。 (ftp_status.nes。 「Y」)

單引號表示翻譯字符串的內容。

所以,如果你定義wo = "write sys$output"

可以使用

wo "Hello World!" 

'wo "Hello World!" 

但是,如果你想顯示write sys$output Hello World

如果你嘗試,

wo "'wo Hello World!" 

你會得到WO 'wo Hello World!

所以,你必須用單引號括起來。

前兩個是一個逃脫的單引號,最後一個意思是停止翻譯。

wo「''wo'Hello World!」


像其他的腳本語言,你可以有可變的變量...

var_hidden = "Hello world!" 
my_var = "var_hidden" 
wo 'my_var' 

將打印世界,你好!

2

除了上面提到的文檔,還有通過幫助提示,幫助:=,幫助=和幫助@命令的大量信息。我相信P9-P16在OpenVMS V8.4中可用。

另外,請注意全局符號(使用加倍等號{==或:==}定義)和局部符號(使用單個等號{=或:=}定義)之間的區別。就像區分大小寫的語言一樣,定義A = 1的符號是一個不同於一個定義的A == 1的符號,本地符號可以屏蔽對全局符號的引用 - 還有一些像READ和INQUIRE這樣的命令可以創建符號,但我認爲它們總是一個本地符號 - 驗證,因爲我正在從內存中工作。\

命令SET SYMBOL/SCOPE [= {LOCAL | NOLOCAL},{GLOBAL | NOGLOBAL})也會影響您是否可以看到某些類型的符號。一般情況下,只要有可能就保留本地符號 - 如果更高級別(調用)命令過程需要訪問,或者如果在返回交互式DCL時需要仍然定義的符號,則通常只需要全局符號 - 例外是你運行的任何專門讀取或寫入或創建全局符號的程序 - 很少見,但我遇到過幾個。