我想在ISPF編輯中添加一些快捷方式。如何更改編輯中的主命令
例如,我想輸入T代表「TOP」,B代表「BOT」。我怎樣才能做到這一點?我試圖進入
define t alias top
在命令行
,但沒有奏效:我有「top命令未找到」如果我使用的快捷方式。
我該如何做到這一點?如何在每次打開編輯時使用此快捷方式?
我想在ISPF編輯中添加一些快捷方式。如何更改編輯中的主命令
例如,我想輸入T代表「TOP」,B代表「BOT」。我怎樣才能做到這一點?我試圖進入
define t alias top
在命令行
,但沒有奏效:我有「top命令未找到」如果我使用的快捷方式。
我該如何做到這一點?如何在每次打開編輯時使用此快捷方式?
一個靈活的解決方案是創建一個雙重任務的初始編輯宏。在首次調用初始編輯宏時,它將諸如T
和B
之類的命令定義爲自身的別名。這些命令然後使ISPF調用相同的宏並執行相應的操作。爲此,請使用ISPF變量ZEDTMCMD
作爲主邏輯驅動程序;它由編輯器用調用宏的命令設置。
這是一個非常普遍的REXX解決方案稱爲MYMACRO
:
/* REXX */
address 'ISREDIT'
parse source . . s3 .
'MACRO' /* You can specify optional arguments if you want */
/* Easier to work with upper case and no leading or trailing blanks */
address 'ISPEXEC' 'VGET (ZEDTMCMD)'
invoke_cmd = translate(strip(zedtmcmd))
select
when invoke_cmd == s3 then do /* first time call */
'DEFINE T ALIAS' s3
'DEFINE B ALIAS' s3
end
when invoke_cmd == 'T' then 'UP MAX'
when invoke_cmd == 'B' then 'DOWN MAX'
otherwise nop
end
exit 0
接下來,指定MYMACRO
作爲初始編輯宏。這可以在幾個地方指定,但最簡單的是在主編輯面板上(選項2)。
請注意,您的宏需要使用標準的查詢(DD SYSEXEC,SYSPROC,或DD SYSUEXEC或SYSUPROC如果ALTLIB是活動的,或者ISPCLIB)被發現。
如果你決定編寫一個程序,它會更復雜一點。你必須:
!
所以ISPF知道調用它的程序,而不是一個腳本(這意味着最大的名稱7個字符)的初始編輯宏觀領域的名稱;SELECT
之前刪除前導感嘆號;'DEFINE MYMACRO MACRO PGM'
作爲第一次調用邏輯的第一行,所以ISPF知道它是一個程序,而不是腳本。在這種情況下,當作爲初始編輯宏執行時,ZEDTMCMD
將具有前導感嘆號。
通過創建一個宏,您可以更輕鬆地在將來添加新的命令。
ISPF安裝SAMPLIB(通常命名爲ISP.SISPSAMP
,但在您的安裝中可能會有所不同)有幾個示例宏,全部以ISR *開頭。有REXX腳本,CLIST,COBOL和PL/I示例。 (沒有彙編程序,但創建一個是一個簡單的練習。)
感謝您的詳細回答。不幸的是,我似乎無法在SYSEXEC和SYSPROC中編寫代碼,所以我認爲我在這裏沒有可用的解決方案... – FredericP
您應該可以使用'ALTLIB';每次登錄時都必須執行此操作,但除了指向SYSUPROC和SYSUEXEC外,還可以指向自己的庫,例如'ALTLIB ACT USER(*)DATASET(dsn)'。我只在上面輕描淡寫,但如果你讓我知道你可以發出'ALTLIB',我會將它添加到答案中。 [ALTLIB]記錄在[這裏](https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ikjc500/altlib.htm),並且有一個很好的討論關於在ISPF下使用'ALTLIB'。如果你有一個在登錄時運行的exec,你可以給它添加'ALTLIB'。 – zarchasmpgmr
我試圖自己使用ALTLIB,但沒有達到......你能指出正確的方式來寫它嗎? – FredericP
TOP和BOTTOM是ISPF命令表中的命令。他們不是編輯命令。它們是ALIAS的UP MAX和DOWN MAX。 ISPF命令的長度必須至少爲2個字節,因此無法使用1個字節的字符在UP MAX的命令表中創建新的ALIAS。 您可以定義稱爲T.宏可以做類似
/* REXX */
address ISREDIT "MACRO"
address ISREDIT "LOCATE 0"
exit(0)
B中BOTTOM可能是
/* REXX */
address ISREDIT "MACRO"
address ISREDIT "LOCATE .ZLAST"
exit(0)
注意B將讓你在最後一行,而不是最後一個完整的編輯宏像BOTTOM這樣的頁面實際上是這樣。對於TOP和BOTTOM,我個人只是在命令行上使用PF7或PF8來執行最大滾動。它只有一個字符與PFKEY而不是Enter鍵。
什麼是巧合。昨天我正在使用初始編輯宏(儘管程序而不是腳本,但概念相同)。 – zarchasmpgmr