Что это за элементы в методе?

Это извлечение файла из этого проекта (полный текст здесь):

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 Системная рутина.

Другие вопросы по тегам