OCT 1 02636-87 МЛ |
г-* Посылка 1 — |
|
—* -j Посылка М |
|
||||||||||||||||||
Блок 1 |
Блок 2 |
Блок 3 |
Блок 1 |
Блок 2 |
Блок 3 |
Блок 4 |
|
Блок 1 |
Блок 2 |
«к к» XX XX |
і |
ж ж ж ж ж ж ж ж ж ж ж ж |
||||||||||
— Письмо 1 — |
—*— Письмо 2 —— |
|
—■— Письмо Л/ —— |
• ТМ ТМ |
ї |
ТМ ТМ |
Формат данных на МЛ Черг. 1 —•— 512 байт —*— |
2 байт |
■ 2 байт |
2 байт |
10 байт |
Блок 1 |
||||||||||
1-я запись |
2-я |
запись |
3-я запись (начало) |
П |
Б |
К |
Р |
||||||||
3-я запись (конец) |
4-я запись (начало) |
П |
Б |
К |
Р |
—Блок 2 |
|||||||||
4-я запись (продолжение) |
П |
Б |
К |
Р |
Блок 3 |
||||||||||
4-я запись (конец) |
5-я запись |
/////"/ |
П |
Б |
К |
Р |
Блок 4 |
Пример письма, содержащего 5 записей: —— Т ег *- |
|
|||
Тип записи |
Тип данных |
Количество элементов данных |
Элементы данных |
|
1 байт |
1 байт |
2 байт |
|
Структура теговой записи
Черт. 3
C. 15
CD CO
П - номер письма;
Б - номер блока в письме;
К - контрольная сумма;
Р - резерв;
/ - признак окончания записи.
Черт. 2
Таблица 2
Инв. Я* дубликата № изм.
Инв. № подлинника 5670 Ns изв.
Тип записи |
Тип данных |
Кол. элементов |
Содержание |
255 |
2 |
4 |
Тип ФД (1 - 32767) Дата создания (день, месяц, год) |
254 |
1 |
0 |
— |
253 |
2 |
VAR |
Дескриптор данных |
250 |
1 |
VAR |
Произвольно |
Тип данных 7 введен для передачи произвольных данных без перекодировок.
Тип данных 8 используется для кодирования структур данных, состоящих из набора элементов разных типов. При этом элементом записи становится теговая запись.
Структура блока:
< Информационная < Номер < Номер < Контрольная < Резерв
часть (512 байт)> письма (2 байт)> блока (2 байт)> сумма (2 байт)> (1 байт)>
Структура письма:
< Запись типа 255> < Запись типа Х> <... ><Запись типа 254 >
X - от 1 до 253 включ.
Структура записи:
<Тип записи <Тип данных <Количество элементов <Данные VAR1>
(1 байт)> (1 байт)> данных (2 байг)>
Структура служебных записей в соответствии с табл. 2,
Записи типа 255 и 254 содержатся в каждом письме и имеют одинаковую структуру.
Запись типа 253 устанавливает соответствие между глобальными кодами идентификаторов (00300 - 10099) или пользовательскими кодами (10100 - 32699) и локальными типами записей (1 - 249).
Структура записи типа 253:
<Тип <1 код <Л/-код
дескриптора (2 байт)> идентификатора (2 байт)> идентификатора (2 байг)>
Если тип дескриптора равен нулю, то определяется таблица данных по столбцам. При этом каждый порядковый код идентификатора ставится в соответствие записи типа К данного письма. Запись с типом К содержит весь массив значений для данного идентификатора.
Е
Ине. Я* дубликата Не нзм.
Инв. Ne подлинника 5670 N°. изв.
сли тип дескриптора находится в диапазоне от 1 до 252, то определяется таблица данных по строкам. При этом тип дескриптора интерпретируется как тип записи, задающей таблицу (строки таблицы задаются как реализация данного типа записи). Каждый код идентификатора ставится в соответствие каждому элементу строки.Остальные значения типа дескриптора зарезервированы.
НАБОР ОПЕРАЦИЙ С МЛ
Теговый метод записи предоставляет набор операций, которые можно разделить на следующие группы:
инициализация: IN IT PR;
открытие и закрытие: OPEN PR, С LOS PR;
чтение: READPC,READTG-, READRM,SKIPRM,READBT,
запись: WRITRC, WRITTG, WRITRM, WRITBT;
поиск: NEXTLT, INFLTtFINDLT.
Любая из операций вызывается с помощью оператора CALL и содержит не менее одного аргумента. Блок управления посылкой (РОВ -PARCEL CONTROL BLOCK}, является рабочей областью для всех подпрограмм с закрытой для пользователя структурой.
Длина блока L РСВ в байтах рассчитывается по формуле:
L = 544 + 10* Lv где Lj ~ длина в байтах переменной типа INTEGER на данной ЭВМ, (для ЕС LT = 4, для БЭСМ-6 - 6, для СМ ЭВМ - 2).
Блок РСВ вводится в память пользователя и используется всеми подпрограммами тегового метода. Пользователю модификация РСВ запрещена.
ПОДПРОГРАММЫ ТЕГОВОГО МЕТОДА
Подпрограмма 1NITPR.
Вызов: CALL IN1TPR (TAPEfNUMPARtNCHTJNDl
ТАРЕ - массив, содержащий имя. НМЛ (для ОС ЕС не используется); NONPAR - последовательный номер посылки на магнитной ленте;
NCHT - номер канала, с которым будет вестись работа. Должен обеспечиваться подпрограммой ввода-вывода;
JND - код завершения операции:
INO-L - нормальное завершение;
ZA27--1 - достигнут конец ленты;
IND* -2 - ошибка при- установке.
Подпрограмма INITPR устанавливает МЛ на нужную посылку.
П
Инв. М* дубликата изм
Инв, Ns подлинника 5670 Ns изв.
одпрограмма OPEN PR.Вызов: CALL OPEN PR (РСВ, NCOP , MAXL&, NCHT, IER, INO), NCOP-I - запрашивается операция чтения;
NCOP-2 - запрашивается операция записи;
MAXL&-0 - контроль за максимальным размером записи не производится;
MAXL&-N - при попытке считать с ленты массив, который занимает более N -байт, будет создана ошибочная ситуация;
NCRT-N - номер канала, с которым будет вестись работа;
IER — указывает способ обработки ошибочных ситуаций;
IER-0 - выполнение программы прекращается. Выдается сообщение об ошибке;
IER -I - возвращается код завершения;
IND — код завершения:
/N0 = / - все нормально;
JNO-~I - конец посылки;
JND~~2 - ошибка ввода/вывода при открытии.
Подпрограмма OPENPR производит инициализацию РСВ. Если NCOP=!t то производится чтение первого блока ленты. Данная подпрограмма должна идти раньше других подпрограмм тегового метода, относящаяся к данному РСВ.
Подпрограмма CLOSPR. Вызов: CALL CLOSPR (РСВ,INO).
Подпрограмма CLOSPR производит запись на МЛ последнего незавершенного блока для операций NCOP-2 (запись), а также ленточной марки.
Подпрограмма READRC.
Вызов: CALL READRC (PCS, NTYPR, NTYPD, KE, MAS, I NO).
NTYPR — 0 . . • 255 - тип записи;
NTYPR - 1 ... 5 - тип данных; ,
KE~O . . . 32767 - количество элементов данных;
NAS - массив пользователя;
I ND -I - нормальное завершение;
I ND ~~1 - конец посылки.
Подпрограмма RE ADR С позволяет за одно обращение считать с ленты следующую запись вместе с тегом. Содержимое тега записывается в ячейки NTYPR, NTYPD, КЕ ; а элементы записи после соответствующей перекодировки помещаются в массив MAS, Если был указан параметр MAXL&, го производится контроль за длиной записи.
Подпрограмма WRITRC.
Вызов: CALL WRITRC(PCB, NTYPR, NTYPD,KE, MAS, IND).
Инв. Jfe дубликата N° Изм.
Инв. К* подлинника 5670 N° изв.
Подпрограмма WRITRC помещает на ленту массив /%А5 , состоящий из КЕ-элеменгов. Автоматически формируется тег записи и производится перекодировка элементов в коды ЕС.
Подпрограмма RE.ADTG.
Вызов: CALL READTG(PCB,NTYPRtNTYPDтKEtIND).
Подпрограмма READTG читает только тег очередной записи. Сама запись читается с помощью подпрограммы READRM либо пропускается с помощью подпрограммы SKIPRM . После подпрограммы READT& не может идти сразу подпрограмма READRC . Если подпрограмма READTG вызывается дважды подряд, го между этими вызовами производится вызов подпрограммы SKI PRM •
Подпрограмма WRTTTG,
Вызов: CALL WRITTG(PCBtNTYPR, NTYPD,KEtIND).
Подпрограмма WRITTG производит запись на МЛ тега. Запись можно потом переслать с помощью подпрограммы WRITRM , После подпрограммы WRITT& не может идти сразу подпрограмма WRITRC.
Подпрограмма READRM.
Вызов: CALL READRM (РСВ, MAS,IND).
Подпрограмма READRM осуществляет пересылку элементов записи, которые не были считаны. Подпрограмма READRM может встречаться только после подпрограммы READTG.
Подпрограмма WR1TRM.
Вызов: CALL WRITRM (PCS, MAS,IND).
Подпрограмма WRITRM записывает на МЛ запись, тег которой был ранее помешен на МЛ с помощью подпрограммы WRITTG. Может употребляться только после подпрограммы WRITTG.
Подпрограмма SKIPRM.
Вызов: CALL SKIPRM (РСВ .IND).
Подпрограмма SKIPRM производит фиктивное чтение записи, тег которой был ранее прочитан с помощью подпрограммы READTG. Подпрограмма SKIPRM может употребляться только после подпрограммы READTG.
Подпрограмма WRITBT.
Вызов: CALL WRITBT (РСВ, IND).
Подпрограмма WRITBT производит запись на МЛ очередного блока, который содержится в буферном поле РСВ с последующей очисткой буферного поля.
Подпрограмма READBT.
Вызов: CALL READBT(РСВ, IND).
Подпрограмма READBT производит чтение с МЛ очередного блока в буферное поле РСВ,ОСТ 1 02636-87 с. 20
Подпрограмма NEXTLT позволяет перейти к обработке следующего письма, ■ не окончив обработку текут его (при чтении) и начать формирование нового письма при записи.
Вызов: CALL INFLT(РСВ, NLET, NBL). NLET — номер текущего письма; NBL - номер текущего блока. Подпрограмма INFLT выдает пользователю информацию о номере письма и - блока, который сейчас обрабатывается.
Вызов: CALL FINDLT(РСВ, NLET, NBL,IND). IND~~! - поиск окончился неудачно; IND-1 - удачно. Подпрограмма FINDLT может использоваться при операции чтения (NCOP-T) для установок на нужный номер письма или блока. Искать можно либо то, либо другое. Один из аргументов ( NLET или NBL ) должен быть равен 0.
5. КОДЫ ЗАВЕРШЕНИЯ И СООБЩЕНИЯ
|
|
|