
книги из ГПНТБ / Система математического обеспечения ЕС ЭВМ
..pdfДвойная точность в IMPLICIT указывается не как DOUBLE PRECISION, а как REAL *8.
В объявлениях типов возможны некоторые дополнительные по сравнению со стандартом указания
Тип *к а1 *к1 |
(размерность 1) [/cl/], а2*к2 |
(размерность 2) [/c2/],..s |
||||
где а — имя простой переменной, массива или функции; |
массива, |
|||||
размерность — обычные указания |
о |
размерах |
||||
количество измерений может достигать семи; |
|
|||||
*кг — опция |
длины, подобная |
введенной |
для |
высказывания |
||
IMPLICIT, причем * k i (i¥=0) относится |
только |
к имени |
||||
аг, тогда как *к относится ко всем остальным именам; |
||||||
а — список констант, форма |
записи и смысл которого подоб |
ны списку констант высказывания DATA. Указание /а’/ может отсутствовать;
Тип — одно из слов: INTEGER, REAL, LOGICAL или COMPLEX. Тип DOUBLE PRECISION эквивалентен REAL*8. Ини циализация данных списком констант в этом объявлении запрещена.
При взаимодействии COMMON и EQUIVALENCE разрешает ся увеличение общих областей в сторону больших, но нё меньших адресов.
Имя функции в высказывании FUNCTION может быть снаб жено приставкой указания длины *к.
Всписке фиктивных аргументов высказывания SUBROUTINE разрешается указывать фиктивные метки в форме звездочки *.
Всписке фактических параметров высказывания CALL разре шаются указания в форме & Ь, где b — метка высказывания, при надлежащего той программной единице, к которой принадлежит данное CALL.
Высказывание RETURN может иметь вид:
RETURN х
где х — целая константа (простая целая переменная) длины 4, рав ная порядковому номеру метки в перечне фиктивных меток списка формальных параметров высказывания SUBROUTINE, принадле жащего той же программной единице, что и данное RETURN. Фак тическое значение метки, определяющее точку возврата по RE TURN х, должно быть указано в соответствующем высказывании
CALL.
Если фиктивный аргумент заключен в разрезы (ограничен спра ва и слева знаками косой черты), то данная подпрограмма йе от водит для такого аргумента специального места в памяти, а ис пользует каждый раз память, которая выделяется в вызывающих подпрограммах соответствующим действительным параметрам.
Разрешается передавать переменные размерности массивов в объектное время во время работы программы чеоез блоки COM MON. -
Дополнительные точки входа в программную единицу опреде
181
ляются с помощью высказывания ENTRY, записываемого в сле дующей форме:
ENTRY имя входа (список параметров)
где имя входа — внешнее имя, употребляемое при вызовах, на ряду с именем программной единицы SUBROUTINE или FUN CTION;
список параметров записывается и используется по правилам, существующим в языке для списка формальных параметров про цедуры или функции.
В качестве фактического параметра могут использоваться ли тералы; литеры спецификации ’и’ или wH при этом опускаются.
В подпрограмме BLOCK DATA разрешается использование вы сказывания IMPLICIT.
7.2.3. Элементы Фортрана II
Для совместимости с Фортраном II в Фортране IV ОС ЕС раз решается использование высказываний ввода-вывода в форме:
READ |
х,список |
PUNCH |
х, список |
х, список |
для соответственно ввода с перфокарт, вывода на перфокарты и вывода на печать списка данных под управлением форматных дан ных, содержащихся в высказывании FORMAT с меткой х или в массиве с именем х.
Функции некоторых высказываний ранних версий языка Форт ран выполняются или имитируются библиотечными подпрограм мами, вызов которых осуществляется посредством высказывания
CALL.
Для установки псевдорегистров LIGHT используется подпро грамма
LIGHT (к),
где при к = 1,2,3 или 4 включается k-й псевдорегистр, а при к = 0 все четыре псевдорегистра выключаются (к — целое выражение).
Для проверки состояния псевдорегистров используется подпро грамма
SLITET (к, х),
в результате выполнения которой по заданному целым выражени ем к номеру псевдорегистра SLITE целая переменная х устанав ливается в 1 или 2 соответственно тому, включен или выключен псевдорегистр.
Сброс памяти осуществляется подпрограммами:
DUMP (al, el, xl, a2, e2, x2,...)
и
PDUMP (al, el, xl, a2, e2, x2,...)
из которых первая прекращает после сброса выполнение програм мы, а из второй происходит выход на продолжение выполнения
182
программы и где ai и et задают начало и конец i-й области памя ти, подлежащей сбросу по формату xi. Существует следующее соот ветствие между целой константой xi и форматами:
0 — шестнадцатеричный, |
6 |
— REAL*8 |
1 — LOGICAU1, |
7 |
— COMPLEX*8, |
2 — LOGICAL*4, |
8 |
— COMPLEX*16, |
3 — INTEGERS, |
9 |
— литеральный, |
4 — INTEGER*4, |
10— REAL*16, |
|
5 — REAL*4, |
11 |
— COMPLEX*32. |
Подпрограмма
DVCHK (k)
устанавливает k равным 2, если состояние деления на нуль имеет место, и равным 1 в противном случае.
Подпрограмма
OVERFL (к)
устанавливает к равным 1, если имеет место состояние переполне ния порядка; равным 3 при состоянии исчезновения порядка и рав ным 2 в отсутствие этих состояний.
Подпрограмма
EXIT
прекращает выполнение программы.
7.2.4. ОС ЕС — зависимые элементы языка Фортран ЕС
Важнейшая системозависимая особенность языка Фортран IV ОС ЕС заключается в том, что фортранные программы пользовате ля не содержат элементов, зависящих от операционной системы непосредственно. Такая зависимость может проявляться в програм мах лишь косвенно — через ограничения на доступные программи сту размеры внешней и внутренней памяти, через эксплуатацион ные характеристики внешних устройств, через соглашения об орга низации оверлейных программ с запланированным перекрытием и т. д. Прямая зависимость от операционной системы вынесена из фортранных программ в сопровождающие их программы, написан- ^ ные на языке управления заданиями.
i
S
7.2.5. G-расширения Фортрана ОС ЕС
При использовании компилятора G в фортранные программы могут быть включены следующие отладочные высказывания.
Объявление о подключении отладочного пакета;
DEBUGG опция 1, опция 2 ,..,
183
где
( UNIT (х)
SUBCHK (al,a2,...J опция t'= ) TRACE
INIT (kl, k2,...) SUBTRACE
целая константа x — ссылочный номер набора данных для вы вода отладочной информации;
а — имя массива, для которого в объектное время проверяется соответствие текущих индексных значений объявлению массива;
TRACE — заказ на трассирование меток;
к — имя переменной или массива, все изменения значений ко торых прослеживаются и передаются в набор данных х;
SUBTRACE — заказ на трассирование имени данной программ ной единицы.
Высказывание
АТ метка
определяет начало того участка программной единицы, где акти визирован отладочный пакет.
Включение и отключение трассирования меток производится высказываниями
TRACE ON
И
TRACE OFF
7.2.6. Н-расширения Фортрана IV ОС ЕС
Оптимизирующий компилятор Е[ предоставляет гибкие средства планирования ввода-вывода с помощью высказываний асинхрон ного ввода-вывода: READ, WRITE и WAIT.
Асинхронное чтение:
READ (a, ID=k)' список имен массивов
где а — ссылочный номер набора данных; к — целое выражение, идентифицирующее своим значением
данное высказывание. Асинхронная запись:
WRITE (a, ID = к)' список имен массивов
где а и к трактуются так же, как при описании асинхронного чте ния.
Асинхронное ожидание:
WAIT (a, ID = k, COND= p, NUM=c) список имен массивов
где а — ссылочный номер набора данных; к — целое выражение, идентифицирующее своим значением
одно из высказываний асинхронного чтения или записи, не обяза тельно принадлежащее той же программной единице, что и'WAIT данное высказывание WAIT относится к тому высказыванию REAr или WRITE, которое еще не завершено другим WAIT, имеет то:
184
же идентифицирующий номер и сообщается с тем же набором дан ных; по высказыванию WAIT производится приостановка выпол нения программы пользователя вплоть до момента завершения операции ввода-вывода соответствующим высказыванием READ
или WRITE;
р — имя переменной, значение которой после выполнения WAIT устанавливается равным 1 при успешном завершении операции ввода-вывода; равным 2 при возникновении состояния ошибки устройства и равным 3 при обращении к записи END OF FILE;
рдолжно быть целым;
с— имя целой переменной, значение которой по завершении WAIT равно числу байтов переданной информации.
Повышенная точность:
во всех вышеописанных декларациях типов, позволяющих ука зывать точность, для компилятора Н допускаются указания вида
REAU16
и
COMPLEX*32
Ввод-вывод данных с повышенной точностью производится под контролем спецификации формата Q.
7.3. АЛГОЛ-бО ОС ЕС
Язык Алгол-60 ЕС является представлением реализации под множества, рекомендованного ИСО в качестве стандарта языка Алгол-601, расширенным введением декларатора (описателя) CODE. Ниже приводятся ограничения и особенности реализации.
Особенности представления основных символов эталонного язы ка связаны с ограниченностью литерного набора стандартных уст ройств подготовки данных:
Символы эталонного |
48-литерный |
59-литерный |
|
языка |
|
набор |
набор |
a . . . г |
а . . . Z |
A . . . Z |
|
0 ... 9 |
0 ... |
9 |
0 ... 9 |
+ —Х Ж = |
LESS |
у* **= |
+ - * / ’/’**= |
< |
|
< |
|
< |
NOTGREATER |
< = |
|
> |
NOTLESS |
> = |
|
GREATER |
> |
||
Ф |
NOT EQUAL |
ч =» |
|
= |
EQUIV |
EQUIV |
|
гэ |
IMPL |
AND NOT |
IMPL |
V А ч |
OR |
|& '1 |
|
0.[• 1 ю'; := |
’POWER’ 1** |
|
|
t |
|
Остальные символы эталонного языка, изображаемые жирным шрифтом или подчеркиванием, в Алголе-60 ЕС представляются со-
1 Programming Language ALGOL-60, ISO, Ref. N: ISO/R 1538—1971 (E).
185
ответствующими прописными буквами и заключаются в апостро фы: ’GO ТО’, ’BEGIN’ и т. п.
Исключен декларатор own. В качестве меток нельзя использо вать целые константы. Формальные параметры должны быть пол ностью описаны и совпадать по виду и типу с фактическими пара метрами в случае вызова по имени.
Идентификаторы различаются по первым шести литерам, ос тальные литеры компилятор игнорирует.
Если тип арифметического выражения нельзя определить ина че, как вычислив это выражение или установив тип или значение фактического параметра, то тип принимается REAL.
Высказывание (оператор) GO ТО с неопределенным указате лем переключателя имеет неопределенный результат.
Алгольный компилятор и ОС ЕС дают возможность сепа ратной трансляции отдельных процедур, которые могут быть затем объединены в единую рабочую программу. Процедура, предназна ченная для сепаратной трансляции, не должна заключаться в скобки BEGIN и END.
В вызывающей программе предварительно оттранслированная процедура должна быть декларирована заголовком процедуры и подставленным вместо тела процедуры декларатором CODE.
В дополнение к процедурам ввода-вывода:
INSYMBOL,
OUTSYMBOL,
INREAL,
OUTREAL,
INARRAY,
OUTARRAY,
в Алголе-60 ЕС введены дополнительно следующие процедуры ввода-вывода:
IN1NTEGER, |
— для целых величин; |
OUTINTEGER |
|
1NBOOLEAN, |
— для булевых величин; |
OUTBOQLEAN |
|
1NTARRAY, |
— для целых массивов; |
OUTARRAY |
|
INBARRAY, |
— для булевых массивов; |
OUTBARRAY |
|
OUTSTRING |
— для вывода строк, |
в результате чего устраняется необходимость в процедуре IENCTH. Параметры этих процедур декларируются в стиле реко мендаций ИСО. По умолчании принимается соглашение о том, что «номер канала», равный нулю, соответствует вводу с перфокарт,
а«номер канала», равный 1, соответствует выводу на печать.
ВАлголе-60 ЕС введены три дополнительных высказывания: SYSACT, PUT и GET, — позволяющие программисту с повышенной гибкостью и эффективностью управлять потоками данных.
18G
7.4. КОБОЛ ЕС
Язык программирования Кобол ЕС представляет собой расши рение CODASYL COBOL уровня 1965 г. Основные отличия состо ят в следующем.
В секции ввода-вывода раздела среды ENVIRONMENT DIVI SION введена статья
ORGANISATION IS k
где k — одно из резервированных слов: INDEXED, DIRECT или RELATIVE, определяющих прямую, индексированную или относи тельную организацию данных в соответствующем файле.
Введены операции над числами с плавающей точкой, не превы шающими 0,72* 1076. В связи с этим в числовых литералах и статье PICTURE используются знаки: . (точка) и Е (указатель поля по рядка числа).
В раздел процедур включена новая секция — секция связен, с помощью высказываний которой (CALL и ENTER) программист может организовать связь объектной кобольной программы с дру гими, независимо компилированными и необязательно кобольными программами. Кобольная программа, предназначенная для сепа ратной компиляции и последующего вызова из другой программы, должна содержать описание точки входа
ENTER LINKAGE.
ENTER имя входа [USING список аргументов].
ENTER COBOL.
и описание точки выхода
ENTER LINKAGE.
RETURN.
ENTER COBOL.
Вызов из основной программы записывается в форме:
ENTER LINKAGE.
CALL имя входа USING список аргументов.
ENTER COBOL.
В высказывании IF может быть указано тестирование состоя ния переполнения страницы при выводе на печать:
IF имя — переполнения ...
где имя — переполнения должно быть специфицировано в статье APPLY параграфа ввода-вывода:
APPLY имя — переполнения ТО FOPM—OVERFLOW ON имя файла
В раздеде процедур введено высказывание REWRITE?
REWRITE имя — записи FROM имя данных
INVALID KEY повелительное — высказывание ...
для обновления записи на устройстве ввода-вывода с прямым до ступом.
187
Введена возможность редактирования данных под управлением высказывания TRANSFORM в разделе процедур:
(фигуративная — константа — 1) TRANSFORM имя—данных CHARACTER FROM <не — числовой — литерал— 1 |
(имя — данных — 1 J
фигуративная — константа —2 {не — числовой — литерал — 2
имя— данных — 2
где FROM-нараметр и ТО-параметр определяют способ редакти рования данных имя — данных; результат редактирования остает ся в имя—данных. Представление об использовании TRANSFORM можно получить из следующего примера: если имя — данных со держит
A1BICI
то в результате выполнения
TRANSFORM имя — данных CHARACTER FROM ’АВСГ ТО Ч23Х’
имя — данных будет содержать
IX2X3X +
Введена статья RECORD KEY в параграфе FILE — CONTROL для спецификации ключа записи при индексной организации файла.
Для повышения эффективности использования случайного до ступа к индексно организованному файлу в параграфе FILE — CONTROL вводится статья
TRACK.AREA IS { целоГ ^™ 1^ } CHARACTER
для спецификации размера необходимой области памяти, который не может быть меньше, чем размер трека плюс одна логическая запись.
Отладочные средства Кобол ЕС позволяют свободно разме щать в кобольной программе отладочные высказывания TRACE, EXHIBIT и ON или группировать последние в отладочные пакеты.
Трассирование программы включается высказыванием
READY TRACE
и отключается высказыванием
RESET TRACE
Вывод отладочных данных производится по высказыванию
( NAMED
EXHIBIT { CHANGED NAMED
( CHANGED
/и м я — д а н н ы х
/л и т е р а л
Это высказывание в предложениях должно быть последним. Форма CHANGED указывает, что выводиться должны лишь те данные, значения которых изменились после момента последнего из предыдущих случаев выполнения EXHIBIT CHANGED.
188
Для отладочного исполнения отдельных частей программы предназначается высказывание
ON kl |
AND EVERY k2 UNTIL k3 |
| ^ <^ ^ и^ ^ 0®!^,®ЫС1Сазива',ие j |
|
/ ELSE |
1 |
/ высказывание |
1 |
1 OTHERWISE / |
( NEXT SENTENCE J |
Параметры высказывания к1,к2икЗ играют роль, аналогичную роли параметров подразумевающихся циклов в Фортране.
Параграфы исходной машины и объектной машины записыва ются в форме:
SOURCE — COMPUTER. ЕС номер — модели.
OBJECT — COMPUTER. ЕС номер — модели.
7.5.ПЛ/1 ЕС
Вспецификациях языка ПЛ/1 ЕС введено более 600 изменений, уточнений, добавлений и удалений по сравнению со спецификация ми 1966 г.1.
Из особенностей, отлйчающих язык ПЛ/1 ЕС, наиболее харак терными и заслуживающими внимания являются, на наш взгляд,
следующие.
Понятие переменной обобщается на случай файла.
Имя — файла — переменной должно быть декларировано явно указаниям атрибута VARIABLE вместе с атрибутом FILE, при этом не допускаются атрибуты описания файла, т. е. INPUT, OUT PUT, UPDATE, DIRECT, BUFFERED и т. п. Эти атрибуты исполь зуются для декларирования имени — файла — константы. Напри мер, если декларирован файл А, а файл В имеет атрибут VARIABLE, то после выполнения высказывания
В=А;
результат выполнения высказываний
ON ENDFILE В;
и
ON ENDFILE А;
будет одинаковым.
Программист имеет возможность локально в пределах блока управлять применением правил умолчания. Для этого использует ся высказывание DEFAULT в одной из следующих двух форм:
DEFAULT ALL [спецификация — атрибутов]
или
DEFAULT список спецификаций — умолчания;
где спецификация — атрибутов имеет вид:
f список атрибутов [VALUE (список спецификаций — значений)] (VALUE (список спецификаций — значений)
1 Универсальный язык программирования. Пер. под ред. В. М. Курочкина.
М., «Мир», 1968.
189
в |
качестве элемента |
списка спецификаций — умолчания могут |
||
быть указаны либо |
|
|
|
|
d д м г " р ( / идентификатор |
\ |
Г /идентификатор |
\ 1 , [спецификация — |
|
■ |
11 Цбуква 1: буква 2 |
/ |
[Дбуква 1 : буква 2 |
атрибутов] |
либо
RANGE (*) [спецификация — атрибутов]
либо
.DESCRIPTOR [спецификация — атрибутов]
либо
CONSTANT [спецификация — атрибутов]
под спецификацией — значений здесь понимаются специфика ции точности, CHARACTER выражение, BIT выражение, AREA выражение;
знак * означает ссылку на все идентификаторы, находящиеся в области действия DEFAULT;
указание DESCRIPTOR обозначает распространение влияния DEFAULT на все непустые дескрипторы в явно декларированных атрибутах ENTRY;
указание CONSTANT распространяет влияние DEFAULT на константы.
Высказывание DEFAULT представляет собой естественное обоб щение фортранного IMPLICIT.
Введены высказывания FLOW и NOFLOW для включения и со ответственно выключения отладочных средств, подобных отладоч ным средствам в Фортране.
Определено содержание понятия физического файла — набора данных.
76. ОСОБЕННОСТИ КОМПИЛЯЦИИ
Устройство компиляторов с языков Ассемблера, Фортрана, Ко бола, Алгола и ПЛ/1 позволяет оценить время работы каждого из них с помощью единой формулы
T=K+R*n+ D*s+M*m,
где К — константа, не зависящая от длины обрабатываемой про граммы и включающая время процессора и системы для всех ша гов задания;
R — коэффициент, определяющий дополнительное время обра ботки одной карты исходной программы в среднем;
п — количество карт исходной программы; для Ассемблера в их число следует включить карты, выработанные макрогенерато ром;
D — коэффициент, определяющий дополнительное время обра ботки одного высказывания в макроопределениях; для Фортрана — среднее время обработки одной подпрограммы, затрачиваемое до полнительно;
190