2017-06-14 92 views
2

我想在ISPF編輯中添加一些快捷方式。如何更改編輯中的主命令

例如,我想輸入T代表「TOP」,B代表「BOT」。我怎樣才能做到這一點?我試圖進入

define t alias top 
在命令行

,但沒有奏效:我有「top命令未找到」如果我使用的快捷方式。

我該如何做到這一點?如何在每次打開編輯時使用此快捷方式?

+0

什麼是巧合。昨天我正在使用初始編輯宏(儘管程序而不是腳本,但概念相同)。 – zarchasmpgmr

回答

3

一個靈活的解決方案是創建一個雙重任務的初始編輯宏。在首次調用初始編輯宏時,它將諸如TB之類的命令定義爲自身的別名。這些命令然後使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)。

ISPF Edit Entry Panel with highlight of initial macro field

請注意,您的宏需要使用標準的查詢(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示例。 (沒有彙編程序,但創建一個是一個簡單的練習。)

+0

感謝您的詳細回答。不幸的是,我似乎無法在SYSEXEC和SYSPROC中編寫代碼,所以我認爲我在這裏沒有可用的解決方案... – FredericP

+0

您應該可以使用'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

+0

我試圖自己使用ALTLIB,但沒有達到......你能指出正確的方式來寫它嗎? – FredericP

3

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鍵。