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

Произвольно




  1. Тип данных 7 введен для передачи произвольных данных без перекоди­ровок.

  2. Тип данных 8 используется для кодирования структур данных, состоящих из набора элементов разных типов. При этом элементом записи становится теговая запись.

  3. Структура блока:

< Информационная < Номер < Номер < Контрольная < Резерв

часть (512 байт)> письма (2 байт)> блока (2 байт)> сумма (2 байт)> (1 байт)>

  1. Структура письма:

< Запись типа 255> < Запись типа Х> <... ><Запись типа 254 >

X - от 1 до 253 включ.

  1. Структура записи:

<Тип записи <Тип данных <Количество элементов <Данные VAR1>

(1 байт)> (1 байт)> данных (2 байг)>

  1. Структура служебных записей в соответствии с табл. 2,

  2. Записи типа 255 и 254 содержатся в каждом письме и имеют одина­ковую структуру.

  3. Запись типа 253 устанавливает соответствие между глобальными кодами идентификаторов (00300 - 10099) или пользовательскими кодами (10100 - 32699) и локальными типами записей (1 - 249).

  4. Структура записи типа 253:

<Тип <1 код <Л/-код

дескриптора (2 байт)> идентификатора (2 байт)> идентификатора (2 байг)>

  1. Если тип дескриптора равен нулю, то определяется таблица данных по столбцам. При этом каждый порядковый код идентификатора ставится в соот­ветствие записи типа К данного письма. Запись с типом К содержит весь массив значений для данного идентификатора.

  2. Е

    Ине. Я* дубликата Не нзм.

    Инв. Ne подлинника 5670 N°. изв.

    сли тип дескриптора находится в диапазоне от 1 до 252, то опреде­ляется таблица данных по строкам. При этом тип дескриптора интерпретируется как тип записи, задающей таблицу (строки таблицы задаются как реализация дан­ного типа записи). Каждый код идентификатора ставится в соответствие каждому элементу строки.

Остальные значения типа дескриптора зарезервированы.

  1. НАБОР ОПЕРАЦИЙ С МЛ

    1. Теговый метод записи предоставляет набор операций, которые можно разделить на следующие группы:

  1. инициализация: IN IT PR;

  2. открытие и закрытие: OPEN PR, С LOS PR;

  3. чтение: READPC,READTG-, READRM,SKIPRM,READBT,

  4. запись: WRITRC, WRITTG, WRITRM, WRITBT;

  5. поиск: NEXTLT, INFLTtFINDLT.

  1. Любая из операций вызывается с помощью оператора CALL и содержит не менее одного аргумента. Блок управления посылкой (РОВ -PARCEL CONTROL BLOCK}, является рабочей областью для всех подпрограмм с закрытой для пользо­вателя структурой.

  2. Длина блока L РСВ в байтах рассчитывается по формуле:

L = 544 + 10* Lv где Lj ~ длина в байтах переменной типа INTEGER на данной ЭВМ, (для ЕС LT = 4, для БЭСМ-6 - 6, для СМ ЭВМ - 2).

    1. Блок РСВ вводится в память пользователя и используется всеми под­программами тегового метода. Пользователю модификация РСВ запрещена.

  1. ПОДПРОГРАММЫ ТЕГОВОГО МЕТОДА

    1. Подпрограмма 1NITPR.

Вызов: CALL IN1TPR (TAPEfNUMPARtNCHTJNDl

ТАРЕ - массив, содержащий имя. НМЛ (для ОС ЕС не используется); NONPAR - последовательный номер посылки на магнитной ленте;

NCHT - номер канала, с которым будет вестись работа. Должен обес­печиваться подпрограммой ввода-вывода;

JND - код завершения операции:

INO-L - нормальное завершение;

ZA27--1 - достигнут конец ленты;

IND* -2 - ошибка при- установке.

Подпрограмма INITPR устанавливает МЛ на нужную посылку.



  1. П

    Инв. М* дубликата изм

    Инв, 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 то производится чтение первого блока ленты. Данная подпрограмма должна идти раньше других подпрограмм тегового метода, относящаяся к данному РСВ.

  1. Подпрограмма CLOSPR. Вызов: CALL CLOSPR (РСВ,INO).

Подпрограмма CLOSPR производит запись на МЛ последнего незавершенного блока для операций NCOP-2 (запись), а также ленточной марки.

  1. Подпрограмма 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&, го производится конт­роль за длиной записи.

  1. Подпрограмма WRITRC.

Вызов: CALL WRITRC(PCB, NTYPR, NTYPD,KE, MAS, IND).

Инв. Jfe дубликата N° Изм.

Инв. К* подлинника 5670 N° изв.

Подпрограмма WRITRC помещает на ленту массив /%А5 , состоящий из КЕ-элеменгов. Автоматически формируется тег записи и производится перекодиров­ка элементов в коды ЕС.

  1. Подпрограмма RE.ADTG.

Вызов: CALL READTG(PCB,NTYPRtNTYPDтKEtIND).

Подпрограмма READTG читает только тег очередной записи. Сама запись читается с помощью подпрограммы READRM либо пропускается с помощью подпрограммы SKIPRM . После подпрограммы READT& не может идти сразу подпрограмма READRC . Если подпрограмма READTG вызывается дважды подряд, го между этими вызовами производится вызов подпрограммы SKI PRM

  1. Подпрограмма WRTTTG,

Вызов: CALL WRITTG(PCBtNTYPR, NTYPD,KEtIND).

Подпрограмма WRITTG производит запись на МЛ тега. Запись можно потом переслать с помощью подпрограммы WRITRM , После подпрограммы WRITT& не может идти сразу подпрограмма WRITRC.

  1. Подпрограмма READRM.

Вызов: CALL READRM (РСВ, MAS,IND).

Подпрограмма READRM осуществляет пересылку элементов записи, которые не были считаны. Подпрограмма READRM может встречаться только после под­программы READTG.

  1. Подпрограмма WR1TRM.

Вызов: CALL WRITRM (PCS, MAS,IND).

Подпрограмма WRITRM записывает на МЛ запись, тег которой был ранее помешен на МЛ с помощью подпрограммы WRITTG. Может употребляться только после подпрограммы WRITTG.

  1. Подпрограмма SKIPRM.

Вызов: CALL SKIPRM (РСВ .IND).

Подпрограмма SKIPRM производит фиктивное чтение записи, тег которой был ранее прочитан с помощью подпрограммы READTG. Подпрограмма SKIPRM может употребляться только после подпрограммы READTG.

  1. Подпрограмма WRITBT.

Вызов: CALL WRITBT (РСВ, IND).

Подпрограмма WRITBT производит запись на МЛ очередного блока, который содержится в буферном поле РСВ с последующей очисткой буферного поля.

  1. Подпрограмма READBT.

Вызов: CALL READBT(РСВ, IND).

Подпрограмма READBT производит чтение с МЛ очередного блока в буферное поле РСВ,ОСТ 1 02636-87 с. 20

  1. Подпрограмма NEXTLT Вызов: CALL NEXTLT (РСВ, IND).

Подпрограмма NEXTLT позволяет перейти к обработке следующего письма,

■ не окончив обработку текут его (при чтении) и начать формирование нового письма при записи.

  1. Подпрограмма 1NFLT.

Вызов: CALL INFLT(РСВ, NLET, NBL).

NLET — номер текущего письма;

NBL - номер текущего блока.

Подпрограмма INFLT выдает пользователю информацию о номере письма и - блока, который сейчас обрабатывается.

  1. Подпрограмма FLNDLT.

Вызов: CALL FINDLT(РСВ, NLET, NBL,IND).

IND~~! - поиск окончился неудачно;

IND-1 - удачно.

Подпрограмма FINDLT может использоваться при операции чтения (NCOP-T) для установок на нужный номер письма или блока. Искать можно либо то, либо другое. Один из аргументов ( NLET или NBL ) должен быть равен 0.

  1. Привязка к определенному каналу ввода/вывода осуществляется при вызове подпрограммы OPENPR . До этого момента нужно выполнить системную программу открытия в подпрограмме INITPR . Нужно обратить внимание, что теговый метод позволяет обрабатывать одновременно несколько посылок, исполь- зуя различные РСВ.

5. КОДЫ ЗАВЕРШЕНИЯ И СООБЩЕНИЯ

  1. 101 ERTAP1 - код операции не равен 1 или 2;

  2. 102 ERTAP2 попытка закрыть закрытую посылку;

  3. 103 ERTAP3 - посылка для чтения не открыта;

  4. 104 - принимающий массив меньше считанной записи;

  5. 105 ER ТАР5 - считан неверный тип данных;

  6. 107 ERTAP7 - посылка для записи не открыта;

  7. 108 ER TAPS записывается необслуживаемый тип данных;

  8. 109ERTAP9 - нет перекодировки из кодов ЕС;

  9. 110 ERTAP10 - незавершенная запись;

  10. 111ERTAP11 - отрицательное количество элементов;

  11. 112 ERTAP12 - отрицательный размер массива;

  12. 113 ERTAPf5 - пустая посылка;

  13. 114 ERTAP14 - неверная последовательность операций;

  14. 115 ERTAP15 — попытка вести поиск по двум аргументам;

  15. 116ERTAP16 — отрицательный номер блока или письма;

  16. 117 ERT АР 17 - ошибочная контрольная сумма.