Как изменить основную команду в Edit
Я хочу добавить несколько ярлыков в ISPF Edit.
Например, я хотел бы ввести T для "TOP" и B для "BOT". Как я могу это сделать? Я пытался войти
define t alias top
в командной строке, но это не сработало: у меня есть "КОМАНДА ВЕРХА НЕ НАЙДЕНА", если я использую ярлык.
Как мне этого добиться? И как сделать этот ярлык доступным каждый раз, когда я открываю Редактировать?
2 ответа
Гибким решением было бы создать начальный макрос редактирования, который выполняет двойную функцию. При первом вызове в качестве начального макроса редактирования он определяет такие команды, как 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
будет иметь ведущий восклицательный знак.
Создав один макрос, вы можете упростить добавление новых команд в будущем.
Установка ISPLF SAMPLIB (обычно называется ISP.SISPSAMP
, но может отличаться в вашей установке) имеет несколько примеров макросов, все начинающиеся с ISR*. Есть сценарии REXX, CLIST, COBOL и примеры PL/I. (Нет ассемблера, но его создание - тривиальное упражнение.)
TOP и BOTTOM являются командами в таблице команд ISPF. Они не являются командами РЕДАКТИРОВАТЬ. Это алиасы для UP MAX и DOWN MAX. Команда ISPF должна иметь длину не менее 2 байтов, поэтому вы не можете создать новый ALIAS в таблице команд для UP MAX, используя 1-байтовый символ. Вы можете определить макрос Edit с именем T. Макрос может сделать что-то вроде
/* REXX */
address ISREDIT "MACRO"
address ISREDIT "LOCATE 0"
exit(0)
B для ДНА может быть
/* REXX */
address ISREDIT "MACRO"
address ISREDIT "LOCATE .ZLAST"
exit(0)
Обратите внимание, что B поставит вас на последнюю строку, а не на последнюю полную страницу, как это делает BOTTOM. Для TOP и BOTTOM лично я бы использовал PF7 или PF8 с M в командной строке, чтобы выполнить максимальную прокрутку. Это всего лишь 1 символ с PFKEY в отличие от клавиши ввода.