Что это за элементы в методе?
Это извлечение файла из этого проекта (полный текст здесь):
Method redirects() [ Private, ProcedureBlock = 0 ]
{
/// Mnemonics
APC d APC^%X364 q
BEL d BEL^%X364 q
CBT(%1) d CBT^%X364(%1) q
CCH d CCH^%X364 q
CHA(%1) d CHA^%X364(%1) q
CHT(%1) d CHT^%X364(%1) q
CNL(%1) d CNL^%X364(%1) q
CPL(%1) d CPL^%X364(%1) q
CPR d CPR^%X364 q
CTC(%1,%2,%3,%4,%5,%6,%7,%8,%9) d CTC^%X364(%1,%2,%3,%4,%5,%6,%7,%8,%9) q
CUB(%1) d CUB^%X364(%1) q
CUD(%1) d CUD^%X364(%1) q
CUF(%1) d CUF^%X364(%1) q
CUP(%2,%1) d CUP^%X364(%2,%1) q
CUU(%1) d CUU^%X364(%1) q
CVT(%1) d CVT^%X364(%1) q
DA d DA^%X364 q
DAQ(%1,%2,%3,%4,%5,%6,%7,%8,%9) d DAQ^%X364(%1,%2,%3,%4,%5,%6,%7,%8,%9) q
DCH(%1) d DCH^%X364(%1) q
DCS d DCS^%X364 q
DL(%1) d DL^%X364(%1) q
DMI d DMI^%X364 q
DSR(%1) d DSR^%X364(%1) q
EA(%1) d EA^%X364(%1) q
ECH(%1) d ECH^%X364(%1) q
ED(%1) d ED^%X364(%1) q
EF(%1) d EF^%X364(%1) q
EL(%1) d EL^%X364(%1) q
EMI d EMI^%X364 q
EPA d EPA^%X364 q
ESA d ESA^%X364 q
FNT d DNT^%X364 q
GSM d GSM^%X364 q
GSS d GSS^%X364 q
HPA(%1) d HPA^%X364(%1) q
HPR(%1) d HPR^%X364(%1) q
HTJ d HTJ^%X364 q
HTS d HTS^%X364 q
HVP(%1,%2) d HVP^%X364(%1,%2) q
ICH(%1) d ICH^%X364(%1) q
IL(%1) d IL^%X364(%1) q
IND d IND^%X364 q
// And others, followed by old style MAC routines
}
Это первый раз, когда я вижу это... И я не могу найти документацию о том, что это за "мнемоника".
Кто они такие? Где документация для этого?
1 ответ
Это стандартная реализация мнемоники для WebTerminal внутри самого WebTerminal.
Чтобы заставить WebTerminal работать как обычный терминал через WebSockets, одной из самых важных вещей является небольшая строка кода.
use $io:(/NOXY:/BREAK):"^" _ ..InitialZName
который выполняется в начале инициализации сервера WebSocket, и который фактически устанавливает имя мнемонического пространства, которое совпадает с именем скомпилированной процедуры WebTerminal (например, WebTerminal.Engine.1.int
).
Эти мнемоники (APC, BEL и т. Д.) Представляют собой небольшие макропрограммы, которые пользователь может вызывать с терминала, используя специальный синтаксис. Например, мнемоника "CHA" используется для установки позиции каретки:
USER > w "Pos 0", /CHA(14), "Pos 14", /CHA(35), "Pos 35"
Pos 0 Pos 14 Pos 35
Для того чтобы пользователь мог получить доступ ко всем этим с помощью этого синтаксиса, необходимо было включить все стандартные имена мнемоник в терминальную подпрограмму, которая по умолчанию устанавливается как мнемоническое пространство для каждого клиента (потому что установка мнемонического пространства по умолчанию, который включайте эти мнемоники, ломает WebTerminal). Единственное оставленное решение - объявить их внутри любого метода (в данном случае, метода с именем "redirects"), используя ProcedureBlock = 0
,
Говоря о синтаксисе, в общем, мы имеем
MNEMONICNAME(%ArgByRef) do MNEMONICNAME^%SYSTEMROUTINE(%ArgByRef) quit
Это просто вызывает все стандартные мнемоники, которые можно найти в ^%X364
Системная рутина.