| 
  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. КОДЫ ЗАВЕРШЕНИЯ И СООБЩЕНИЯ 
  | 
 
  | 
 
| 
  |