|
Несмотря на некоторые трудности, возникшие у меня в последнее время, я решил больше не откладывать написание этой статьи (благо смена 31-го декабря позволяет спокойно выполнить задуманное). |
Для начала, наверное, следует сказать, что MPTMON имеет средства для хранения, извлечения и выполнения команд, находящихся в файлах. Сами файлы могут располагаться как на жестких дисках, так и на ленте и магнитооптических дисках. С помощью всего этого можно организовать автоматическое выполнение команд, сохранять, а затем восстанавливать тестовое окружение (идентификаторы и макросы) и проч. Далее дано описание команд использующихся для этих целей, я не буду рассматривать команду INC VAX, т.к. я не представляю себе как ее практически можно использовать на типичной станции.
Команда позволяет сохранить в файл все идентификаторы (symbols) и макросы, которые на момент выполнения команды находятся в памяти. При записи, в начале записываются все идентификаторы в виде DEF .имя_идентиф = значение, впрочем, тут же выполняется и другое форматирование (например, если значение идентификатора является указателем). Делается это для последующего извлечения этих идентификаторов из файла. После идентификаторов записываются макросы. При удачном открытии файла выводится символ '[', каждый удачно записанный блок отмечается выводом символа '&', а при удачном закрытии файла выводится символ ']'.
Для записи предусмотрены т.н. Save/Retrieve файлы с идентификаторами с 950 по 959. Длина записи этих файлов равна одному байту, а размер 32767 записей, и того 32767 байт. Если при задании команды был опущен второй параметр, то по умолчанию будет использован файл 950. В MPTMON USER MANUAL не рекомендуется использовать двойное устройство (т.е. желательно использовать не 1032, а 1 и 2), мотивируется это снижением скорости выполнения команды при той же надежности.
Ради эксперимента, я попытался осуществить запись в файлы с идентификаторами отличными от 950-959 (я понимаю, что практического смысла это не имеет, всегда можно "раскидать" файлы по разным устройствам). Как видно ниже в логе, мне удалось осуществить задуманное только с файлами 960 и 971, у которых в FDB совпадали параметры авторизации и размер записи, а запись в библиотечный файл (969Т) не удалась по причине выполняющейся проверки на то, что идентификатор файла находится в пределах от 0 до 5000 и не входит в диапазон с 961 по 969 включительно (мне не понятно, почему из этого диапазона выпал 960-й файл, вероятно, это ошибка, но чья?).
>SAV 4021T,4999T
*** ERROR: IOS OPEN ERROR
ERROR CODE 030D - HARD_ERROR: UNAUTHORISED ACCESS
>SAV 4021T,899T
*** ERROR: INVALID RECORD SIZE
>SAV 4021T,970T
*** ERROR: IOS OPEN ERROR
ERROR CODE 030B - HARD_ERROR: FILE NOT DEFINED
>SAV 4021T,971T
[&&&&&&&&&&&&&&&&&&&&&]
>SAV 4021T,969T
*** ERROR: INVALID FILE ID
>SAV 4021T,960T
[&&&&&&&&&&&&&&&&&&&&&]
>MM
OPTS-3 PECHORA 2001-12-31 11:58:28 MO
001 0130/0006/0001
<DISPLAY-FDB:LFILID=950.
SEQ=7662.011231 9002
COM=0395
JOB SUBMITTED
9000
RESULT FOLLOWS
OPTS-3 PECHORA 2001-12-31 11:58:48 MO
001 0130/0006/0001
SEQ=7662.011231 00336 P6M802
PERIPHERAL SERVICE ROUTINES REPORT OF
DISPLAY FDB SUCCESSFUL
-----------------------------------------------------------------------
LFILID = 950
LFILNAME = A950AA01
RECORLEN = 1 FILELEN = 32767
AUTHREAD = AR AUTHWRIT = JR
AUTHMDFY = SR TRSLFRMT = NOTRANS
ACCATTR = SEQMDFY RCVATTR = OFF
FILETYPE = SYS DATATYPE = ASCII
TIMRST = TOTOPEN TIMCLASS = MEDIUM
-----------------------------------------------------------------------
PFILNAME = MPTM*M*S*S0--SYST
DEVLIST = B'11111000
DISK: ALOCSIZE = 0 CAT = DYNAMIC LR
TAPE: BLOCKLEN = 0 GENNBR = 1 ACCESS =
VDU: INPTDELM = >
LAST REPORT NO = 00336
>MM
OPTS-3 PECHORA 2001-12-31 11:59:09 MO
001 0130/0006/0001
<DISPLAY-FDB:LFILID=971.
SEQ=7663.011231 9002
COM=0395
JOB SUBMITTED
9000
RESULT FOLLOWS
OPTS-3 PECHORA 2001-12-31 11:59:17 MO
001 0130/0006/0001
SEQ=7663.011231 00336 P6M802
PERIPHERAL SERVICE ROUTINES REPORT OF
DISPLAY FDB SUCCESSFUL
-----------------------------------------------------------------------
LFILID = 971
LFILNAME = A971AA01
RECORLEN = 1 FILELEN = 32767
AUTHREAD = AR AUTHWRIT = JR
AUTHMDFY = SR TRSLFRMT = NOTRANS
ACCATTR = SEQWRITE RCVATTR = OFF
FILETYPE = SYS DATATYPE = ASCII
TIMRST = TOTOPEN TIMCLASS = LONG
-----------------------------------------------------------------------
PFILNAME = MPTM*LISTF---SYST
DEVLIST = B'11011000
DISK: ALOCSIZE = 0 CAT = DYNAMIC LR
TAPE: BLOCKLEN = 0 GENNBR = 1 ACCESS =
VDU: INPTDELM =
LAST REPORT NO = 00336
|
Команда извлекает из файлов информацию (идентификаторы и макросы) записанную командой SAV [IOS] и помещает ее в память. При чтении происходит выполнение MPTMON команд, если они встречаются в потоке, соответственно, определяются или изменяют своё значение идентификаторы и заново определяются макросы. Поэтому при попытке повторного определения макроса происходит ошибка и чтение из файла прекращается, что видно на приведенном ниже примере.
>RET 4021T,971T
[&&&&&&&&&&&&&]
>DIR
I V F VDN CEIDS LPTMNEM RID REL
DTTRACER RTTRACER PATCHK1 PATCHK OPEN READ CLOSE IOERR
MAKEDUR
>RET 4021T,960T
[& *** ERROR: MACRO ALREADY DEFINED - DEF MAC I
]
>
|
Команда читает и выполняет MPTMON команды из файла, чтение происходит до первой встреченной ошибки или до конца файла. В силу того, что и INC и RET работают с файлами одной структуры (только текст в ASCII коде без управляющей информации), команду INC можно использовать вместо RET (что и продемонстрировано ниже). Так же с помощью этой команды можно организовать автоматическое выполнение последовательности команд предварительно записанной в файл.
>REM MAC
>REM SYM
>INC 1,950T
>DIR
CEIDS LPTMNEM RID REL DTTRACER RTTRACER PATCHK1 PATCHK
OPEN READ CLOSE IOERR MAKEDUR
>
|
Не знаю как у вас на станции, а у нас часть файлов (950-959) присутствует на диске. Содержимое некоторых файлов очень любопытное и местами полезное, поэтому, если вы еще не просмотрели содержимое этих файлов, то я вам рекомендую это сделать. Честно говоря, я сам эти файлы в полной мере никогда не использовал, я лишь пользуюсь некоторыми, найденными в них, макросами. Чего и вам желаю.
Всем удачи 2002-м году!
|
Максим Осташов Размещено на www.s12most.mailru.com 31 декабря 2001 |