Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Система математического обеспечения ЕС ЭВМ

..pdf
Скачиваний:
24
Добавлен:
22.10.2023
Размер:
10.92 Mб
Скачать

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

Чем больше набор данных, тем менее эффективна такая орга­ низация набора данных, ибо таблица адресов становится велика, занимает достаточно большой объем памяти (оперативной или внешней), соответственно увеличивается время поиска в таблице.

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

Избранный способ должен обеспечивать, во-первых, преобра­ зование любого допустимого ключа в адрес заданного диапазона и, во-вторых, небольшой процент синонимов, т. е. таких блоков, пре­ образование ключей которых приводит к получению одного и того же адреса. Эффективное средство борьбы с синонимами — отведе­ ние под набор данных большего объема памяти, чем требуется. Блок, который записывается по адресу, полученному путем преоб­ разования его ключа в адрес, называется основным. Все другие блоки, при преобразовании ключей которых получается тот же ад­ рес и которые не могут быть записаны по этому адресу, называют­ ся блоками переполнения. Число блоков переполнения можно зна­ чительно снизить, если преобразовывать значение ключа в адрес дорожки, а не в адрес блока.

Если рандомизация ведется до уровня адреса блока, то каж­ дый синоним порождает блок переполнения. Если же рандомиза­ ция выполняется до уровня адреса дорожки, то синонимы не по­ рождают блоков переполнения до тех пор, пока дорожка не будет заполнена. Существуют различные способы рандомизации, напри­ мер деление с остатком, свертка, переход к другой системе счисле­ ния и т. д. Выбор определенного способа производится опытным путем.

171

Базисный прямой метод доступа допускает следующие способы идентификации блока данных.

1.Относительный адрес блока (3-байтовое двоичное число). Используется только для записей фиксированного формата. Управ­ ляющая программа преобразует относительный адрес в физиче­ ский адрес блока.

2.Относительный адрес дорожки (2-байтовый двоичный номер

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

3.Относительный адрес дорожки и ключ. Управляющая про­ грамма вычисляет физический адрес дорожки и осуществляет по­ иск блока на этой дорожке по ключу.

4.Физический адрес блока. Использование физических адресоз приводит к тому, что набор данных становится неперемещаемым.

При использовании для идентификации блока данных относи­ тельного адреса дорожки и ключа можно запросить расширенный поиск (задание полей DCBOPTCD и DCBL1MCT блока управле­ ния данными), который состоит в том, что поиск блока по ключу ограничивается просмотром не одной дорожки, а некоторого коли­ чества дорожек или блоков, заданного программистом в блоке уп­ равления данными. Расширенный поиск можно использовать также при добавлении блоков для поиска свободного места в наборе дан­ ных.

Базисный прямой метод доступа позволяет во время чтения или записи блока данных получать в определенной области, указанной в соответствующей макрокоманде, адрес этого блока данных в форме, определенной в поле DCBOPTCD блока управления дан­ ными.

Если несколько подзадач выполняют одновременно обновление некоторого блока данных одного и того же набора данных, ссыла­ ясь при этом на один блок управления данными, то базисный пря­ мой метод доступа дает возможность подзадаче, первой выдавшей макрокоманду READ, предотвратить обновление этого блока дру­ гими подзадачами (если в макрокоманде READ указан соответст­ вующий операнд). Остальные подзадачи начнут работу с этим бло­ ком данных только после выполнения в данной подзадаче макро­ команды WRITE или RELEX.

Набор данных с прямой организацией создается с помощью

специального

режима

базисного

последовательного

метода досту­

п а -р еж и м а

создания

набора

данных с прямой

организацией.

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

Рассмотрим два примера, иллюстрирующие создание и обра­ ботку набора данных с прямой организацией. В первом примере создается набор данных с прямой организацией. Создание набора данных выполняется на базе последовательного набора данных,

172

находящегося на магнитной ленте. Создаваемый набор данных име­ ет следующие характеристики: формат записи F, записи имеют 4-байтовые ключи, диапазон изменения которых 1050—6050. За­ прос памяти под набор данных делается на 5000 записей. Если за­ пись с некоторым ключом из указанного диапазона отсутствует, записывается фиктивная запись.

C I K L

S P A V N

F I K T •

E N D

К О N E C

O B L V V O D

V I V O D

L

O P E N

L A

G E T

L R

C

B N E

W R I T E C H E C K

AH

В

C

BH

W R I T E C H E C K

AH

BR L A

BR

CL O S E

DS ' ’

DC B

D C B

10, = F '1 0 5 0 '

( V I V O D , ( O U T P U T ) , V V O D )

5, S P A V N V V O D

3,

1

 

1 0 , 0 ( 3 )

F IK T

 

B L O K 1 . S F , V I V O D , (3)

B L O K !

10, =

H T

C I K L

 

10, =

F '6 0 4 9 '

K O N E C

B L O K 2 , S D , V I V O D , O B L

B L O K 2

10, = H T 5

5, F IK T 5

( V V O D , , V I V O D )

C L 5 0

D S O R G = P S , M A C R F = ( G L ) , E O D A D = E N D , D D N A M E = H A B

D S O R G = P S , M A C R F = ( W L ) , D D N A M E = H A B 2

Для входного последовательного набора данных открывается блок управления данными VVOD в режиме ввода (INPUT), а для выходного— блок управления данными VIVOD в режиме вывода (OUPUT). Считывание входного последовательного набора данных осуществляется с помощью макрокоманды GET в режиме указа­ ния. После выполнения этой макрокоманды адрес очередной логи­ ческой записи находится в регистре 1.

Если это следующая запись формируемого набора данных с прямой организацией, то используется макрокоманда WRITE для ее записи на том прямого доступа.

Если же запись с некоторым ключом из вышеуказанного диа­ пазона отсутствует во входном наборе данных, то в формируемый набор помещается фиктивная запись (режим SD макрокоманды

WRITE).

Формирование набора данных с прямой организацией заверша­ ется после записи в него 5000 блоков данных, после чего выпол­ няется закрытие всех блоков управления данными.

Во втором примере осуществляется добавление блоков данных в только что созданный набор данных с прямой организацией. До­ полнительные блоки вводятся с магнитной ленты.

173

C IK L

••

V V O D

V I V O D

K L U C H

D A N N

O S T A T O K

O P E N

G E T

Р

S H

S T

W R I T E W A I T C L C

B E

D C B '

D C B

D S

D S

D S

( V I V O D , ( O U T P U T ) , V V O D ) V V O D , K L U C H

3, K L U C H

3 , = H T 0 5 0 '

3, O S T A T O K

B L O K , D A , V I V O D , D A N N ,' S ' , K L U C H , O S T A T O K + 1 E C B = B L O K

B L O K + 1 ( 2 ) , = X ' 0 0 0 0 ' C IK L

D S O R G = P S , M A C R F = ( G M ) , E O D A D = N N N , D D N A M E = H A B 1

D S O R G = D A , M A C R F = ( W A ) , D D N A M E = H A B 2 F

CL 100

F

Для входного последовательного набора ' данных

открыва

ется блок управления данными VVOD в режиме ввода

(INPUT),

а для набора данных с прямой организацией — VIVOD в режиме вывода (OUTPUT). Считывание входного набора данных осуществ­ ляется с помощью макрокоманды GET в режиме пересылки (пос­ ледовательный метод доступа с очередями). В результате очеред­ ная логическая запись помещается в область KLUCH. После это­ го, используя ключ, вычисляют относительный номер блока, кото­ рый запоминается в области OSTATOK.

Последующая макрокоманда WRITE помещает данную логиче­ скую запись как блок данных в набор данных с прямой организа­ цией.

В данном примере синхронизация операции вывода с выполне­ нием программы осуществляется с помощью макрокоманды WAIT. Анализ ошибочных ситуаций при выводе возлагается на програм­ миста.

7. ОСОБЕННОСТИ РЕАЛИЗАЦИИ языков ПРОГРАММИРОВАНИЯ

АЛГОЛА-60, ФОРТРАНА IV, КОБОЛА И ПЛ/1 ДЛЯ ОС ЕС ЭВМ

7.1. СТРУКТУРА СИСТЕМЫ ПРОГРАММИРОВАНИЯ'

Каждая из систем программирования ОС ЕС рассчитана на оп­ ределенный класс проблемных программистов (пользователей) и дает им возможность записывать алгоритмы и запросы на предо­ ставление услуг из определенного подмножества полного набора услуг ОС ЕС таким образом, что становится необязательным зна­ комство ни с внутренним устройством системы и ОС ЕС, ни с пол­ ным набором возможностей и услуг ОС ЕС.

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

Трансляторы обсуждаемых систем программирования относят­ ся к типу компилирующих программ и называются в дальнейшем компиляторами. Порцией исходного текста для каждого процесса компиляции служит так называемый исходный модуль: для Алго-

ла-60 и

ПЛ/1

это программа или процедура, для

Кобола — про­

грамма,

для

Фортрана IV — главная

программа,

подпрограмма

или подпрограмма-функция. Результат

компиляции, называемый

объектным модулем, теряет, с точки зрения редактора связей, ис­ ходную языковую индивидуальность и обрабатывается затем на общих основаниях.

7.2.ФОРТРАН IV ОС ЕС

Всистему программирования Фортран IV входят два компи­ лятора: отладочный компилятор G и оптимизирующий компилятор

Н. Общая часть языковых версий для этих компиляторов содер­ жит в виде правильного подмножества ANS-Фортран, известный ранее как ASA-Фортран. Общие для G и Н расширения языка ANS-Фортран представляют собой, с одной стороны, элементы Фортрана V, ставшие традиционными для современных реализа­ ций, с другой — средства совместимости с ранними версиями язы­ ка, в частности, с Фортраном II. Кроме того, как и при любой реа­ лизации, существуют машинозависимые уточнения стандартного языка и элементы, зависимые от конкретной операционной систе­ мы. Ниже приведена схема состава языка Фортран IV ОС ЕС.

175

Ф о р т р а н _ IV О С Е С ~

■ A N S - Ф о р т р а н г э П р о м е ж у т о ч н ы й Ф о р т р а н г э Б а з и с н ы й Ф о р т р а н М а ш и н о з а в и с и м ы е у т о ч н е н и я

G— р а с ш и р е н и я — тольк о

Н— р а с ш и р е н и я — т ол ь к о

Э л е м е н т ы

Ф о р т р а н а

V

Э л е м е н т ы

Ф о р т р а н а

II

{О С Е С — за в и с и м ы е эл е м е н т ы

7.2.1. Машинозависимые уточнения языка

Для величин типа INTEGER максимум равен 231—1, т. е. 2147483647.

Для величин типа REAL:

максимум равен 1663, т. е. около 1075; минимум, отличный от нуля, равен 16~65, т. е. около 10~78;

количество значащих шестнадцатеричных цифр в зависи­ мости от объявления (TYPE DECLARATION) равно 6 или 14, т. е. около 7.2 или 16.8 десятичных цифр.

7.2.2. Элементы Фортрана V

Литерный набор для записи исходных программ расширен символом денежной единицы, относящимся к классу букв (см. приложение 2), а также двумя специальными литерами: ’-апост­ роф, & — логическое «И». Литеральные константы разрешается специфицировать заключением в одиночные апострофы.

Вводится понятие шестнадцатеричной константы для инициа­ лизации значений переменных. Шестнадцатеричная константа ог­ раничивается слева буквой Z, справа — ограничителем. Цифры шестнадцатеричной константы помещаются по две на каждый байт в правой части участка памяти, отведенного для соответствующей переменной, и дополняются слева нулями. При нехватке места в памяти обрезаются левые цифры константы.

Символическое имя может содержать символ денежной едини­ цы и, в частности, начинаться с этого символа. Размерность мас­ сивов может достигать 7. Разрешаются смешанные арифметиче­ ские выражения, т. е. операнды арифметических операций могут не совпадать по типу и по длине. Перед выполнением операции производится выравнивание типов и длин по старшему операнду согласно следующей схеме старшинства:

1( 2)

1(4)

/

С ( 8 ) — »-С (16)

■R(4)

R ( 8 ) — ►С (16) ,

 

 

N

где I, R и С обозначают соответственно INTEGER, REAL и COMP­ LEX; цифрами обозначены длины в байтах.

Окончательный результат вычислений выравнивается по типу и длине левой части высказывания (statement) присваивания или по типу и длине, определяемым местом арифметического выраже­ ния: имеются в виду такие случаи, как индексное выражение или фактический параметр-выражение,-

176

Индексное выражение может иметь вид произвольного смешан­

ного

арифметического

выражения с целыми и

действительными

операндами. Выражение

может содержать элементы массивов и

обращения к функциям. Результат приводится к целому типу.

В

операциях отношения могут участвовать

смешанные целые

и действительные выражения.

 

При неодназначной записи более чем двух операций возведения в степень подряд подразумевающиеся скобки расставляются, на­ чиная справа.

При возведении в степень показатель не может быть комплекс­ ным, а при комплексном основании — и действительным выраже­ нием.

При выравнивании действительной величины по комплексной мнимая часть принимается равной нулю. При выравнивании комп­ лексной величины по действительной мнимая часть игнорируется.

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

Высказывание PAUSE может иметь, кроме стандартных, сле­ дующий формат:

P A U S E ’ л и т е р а л ь н а я к о н с т а н т а ’

Выполнение этого высказывания состоит в передаче его текста оператору и переходе программы в состояние ожидания до вмеша­ тельства оператора.

Выполнение высказывания STOP в форме:

S T O P а

где а — не более чем пятизначное целое, влечет прекращение ра­ боты программы с передачей текста этого высказывания оператору.

Высказывание чтения может иметь, кроме стандартного, сле­ дующий формат:

READ (al, а2, ERR= a3, END —а4) список

где a l — целая переменная или константа длины 4, представляю­ щая собой ссылочный номер набора данных, получающий реальное содержание в dd-картах определения данных, внешних по отношению к фортрановской программе вы­ сказываниях языка управления заданиями ОС ЕС;

а2 — метка или массив с форматными данными, или NA- MELIST-имя;

аЗ — метка высказывания, получающего управление при ошиб­ ке ввода-вывода;

а4 — метка высказывания, получающего управление при попыт­ ке прочитать запись конца файла.

)2. Заказ 3414.

177

Отсутствие одного из двух последних параметров или обоих сразу влечет в соответствующих ситуациях прекращение работы программы. Порядок записи параметров END и ERR несуществен.

Параметры высказывания

W R I T E ( a l , a 2 ) сп и с ок

аналогичны первым двум параметрам высказывания READ. Введено новое высказывание

N A M E L I S T / x l / с п и с о к 1 / х 2 / с п и с о к 2 . . .

где х 1, х2,... — NAMELIST-имена, указываемые в высказываниях чтения и записи и связывающие эти высказывания с соответствую­ щим^ NAMELIST-именам списками.

Данные для ввода и вывода по NAMELIST имеют формат

п р о б е л

&

N A M E L I S T — имя

 

 

с 1 1 = с п и с о к

11,

с 12 =

с п и с о к

12, .«

п р о б е л

 

 

 

 

с 2 1 = сп и с ок

21,

с22 =

сп и с о к

22, . . .

E N D

где cij — имя простой или индексированной переменной, или имя массива;

список ij — список целых и действительных констант, разде­ ленных запятыми.

Повторяющиеся группы констант могут быть изображены в со­ кращающей записи аналогично группам повторения в форматах

к * { ( с п и с о к к о н с т а н т )|к о н с т а н т а }

где к — коэффициент повторения.

Введены дополнительные спецификации форматов:

Z — для шестнадцатеричных полей данных, которые обрабаты­ ваются подобно шестнадцатеричным «литералам, дополняясь при вводе слева нулями, а при выводе — пробелами;

G — обобщенная спецификация для целых, действительных, двойной точности и логических данных, играющая роль специфи­ каций I, F,D,L в соответствии с объявленным или умалчиваемым типом переменных в списке ввода-вывода;

’литерал’ — используется наряду с обычным обозначением ли­ тералов: wH литерал;

Т — для указания номера той позиции в записи, начиная с ко­ рой производится передача данных.

Первая литера в записи, предназначенной для вывода на пе­ чать, действует как литера управления кареткой и на печать не выводится. Укажем рекомендуемые программисту значения первой литеры:

пробел— передвинуть каретку на одну строку (к началу сле­ дующей строки);

О — передвинуть каретку на две строки;

— — передвинуть каретку на три строки;

178

1— передвинуть каретку к первой строке следующей стра. ницы;

+— подавить переход к следующей строке.

Если запись передается не на печать или если первая литера

не специфицирована как wH или

то первая литера представ­

ляет собой обычные данные.

 

Если при печати числа по спецификациям I, D, Е, F или G ши­ рина поля указана недостаточной для выдачи старших значащих цифр, то все поле заполняется звездочками.

В стандартной записи высказываний ввода-вывода

R E A D

( a l , а 2 ) сп и с о к

R E A D

( а ) сп и с ок

W R I T E ( а ) сп и с ок

E N D F I L E

а

R E W I N D

а

B A C K S P A C E а

первый параметр везде специфицируется и трактуется так же, как ссылочный номер набора данных в высказывании чтения.

В Фортране IV ЕС для ввода-вывода с прямым доступом к на­ борам данных введены следующие высказывания: DEFINE FILE, READ, WRITE, FIND.

D E F I N E F I L E a l ( k 1 , c l , b l , p i ) , а 2 ( к 2 , c2, b2, p 2 ) , . . .

где al, a2,. . . — беззнаковые целые константы, определяющие ссы­ лочные номера наборов данных;

к1, к2,. . . — беззнаковые целые константы, определяющие ко­ личество записей в соответствующих наборах дан­ ных;

с1, с2,. . . — максимальная длина записи (целая константа без знака) в наборах данных al, а2,...;

Ы, Ь2,... — принимают значения L, Е и U; U обозначает, что записи измеряются в словах и предназначены для бесформатных данных; Е обозначает, что записи измеряются в байтах и предназначены для фор­ матных данных; L обозначает, что записи измеря­ ются в байтах и могут содержать как форматные, так и бесформатные данные;

р1, р2,. . . — имена простых целых переменных, играющих роль указателей записи при операциях ввода-вывода.

Высказывание DEFINE FILE используется для декларирова­ ния описания наборов данных с прямым доступом и должно пред­ шествовать первому упоминанию этих наборов в операциях READ, WRITE и FIND:

R E A D ( а ’р, х, E R R = c ) сп и с о к

где а — ссылочный номер набора данных;

р— целое выражение, определяющее относительный номер за­ писи в наборе данных, начиная с которой выполняется чтение;

12*

179

х— метка формата или имя массива с форматными данными; при бесформатном чтении этот параметр опускается;

с— метка, по которой передается управление при возникно­ вении состояния ошибки устройства ввода-вывода;

W R I T E ( а ’р, х ) сп и с ок

где параметры а, р и х имеют тот же смысл, что и соответствую­ щие параметры высказывания прямого READ.

F I N D ( a ’p)

где параметры а и р по смыслу подобны соответствующим пара­ метрам прямых READ и WRITE.

Это высказывание позволяет совмещать во времени операции поиска указанной записи и ввода-вывода предыдущей записи.

Высказывание DATA записывается в форме:

D A T A а 1 / с I /, а 2 / с 2 / , . . .

где а — список имен простых переменных, массивов и элементов массивов, при этом в качестве индексов используются це­ лые беззнаковые константы;

с— список констант, в котором повторяющиеся группы кон­ стант могут быть записаны с коэффициентом повторения

к* аналогично группам констант высказывания NAMELIST.

Программист имеет возможность управлять правилами умол­ чания с помощью следующего высказывания:

 

 

 

IM P L IC I T

тип

1*к1 (а 1), тип

2*к 2 ( а 2 ) . . .

 

 

 

 

где

тип

г — тип (INTEGER, REAL, COMPLEX

или

LOGICAL),

 

 

который в данной программной единице будет припи­

 

 

сываться по умолчанию всем именам, идентификато­

 

 

ры которых начинаются с одной из указанных в спис­

 

 

ке ai литер;

 

 

 

при этом груп­

 

 

аг — список литер, разделенных запятыми;

 

 

па алфавитноупорядоченных литер

а п , а п +

и . . . ,

а п

 

 

может быть записана в сокращенной форме ап—an + j ;

 

* Ы — опция1,

где k

определяет

умалчиваемую

длину для

 

 

имен г-го списка:

 

 

 

 

 

 

 

 

 

 

 

 

Д л и н а , п р и п и с ы в а е м а я

 

 

 

Тип

 

 

 

и м ен а м си с т е м о й в о т ­

 

 

 

 

 

Д л и н а

с у т с т в и е

оп ц и и

 

 

 

 

INTEGER

2

или

4

 

4

 

 

 

 

 

 

REAL

 

4

или

8

 

4

 

 

 

 

 

 

COMPLEX

8

или

16

 

8

 

 

 

 

 

 

LOGICAL

1

или

4

 

4

 

 

 

 

 

1 П о д оп ц и ей п о н и м а е т с я у к а з а н и е п р о гр а м м и с т а о в ы б р а н н о й

им у с л у г е

или

в о з м о ж н о с т и

си ст ем ы

п р о гр а м м и р о в а н и я и з

о п р е д е л я е м о г о

д л я

к а ж д о г о

к он ­

к р етн ого

с л у ч а я

сп и ск а

у с л у г или в о з м о ж н о с т е й ; о т с у т с т в и е

т а к о г о

у к а з а н и я

обы ч н о в л еч ет п р и м е н е н и е н е к от ор ы х , о п р е д е л е н н ы х д л я

д а н н о г о с л у ч а я ,

п р а ­

вил

у м о л ч а н и я .

 

 

 

 

 

 

 

 

 

 

180

Соседние файлы в папке книги из ГПНТБ