Файл: Левковиц, Д. Структуры информационных массивов оперативных систем.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.10.2024

Просмотров: 86

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

TOTAL ACTIONS AND DOLLARS OR NEW

 

 

CONTRACTS

 

 

 

 

TOTAL ACTIONS 8

 

 

 

TOTAL DOLLARS

§325,800

 

 

CONTRACT MODIFICATIONS AND DOLLARS BY TYPE

CONTRACT MODIFICATION

NUMBER

DOLLARS

Additional Task

 

18

3,252,000

Change of Scope

 

3

70,000

Termination

 

1

65,000

Renegotiation

 

4

120,000

Рис. 4-4. Форма документа для запроса 2.

 

 

головком T O T A L ACTIONS A N D D O L L A R S

OF NE W

CONTRACTS. Поскольку

функция

TAB (пробел)

отсут­

ствует, печать начинается с левой

границы. Н а 3-й стро­

ке (2-я строка пропущена) после

TAB 10 (десяти

про­

белов) печатается метка

T O T A L

A C T I O N ,

непосред­

ственно за меткой начинается 77, интерпретируемая как

промежуточное поле памяти,

ранее определенное в поис­

ковом разделе обработки. Это поле,

как указано выше,

содержит подсчет

или T A L L Y дл я F U L E 1 . Н а 4-й строке

вслед за пробелами печатается

метка T O T A L D O L L A R S

с последующим значением S1,

с о д е р ж а щ и м

сумму AC­

T I O N A M O U N T S

новых контрактов.

 

 

Н а 7-й строке,

начиная от

края,

'печатается заголо ­

вок CONTRACT M O D I F I C A T I O N S

A N D D O L L A R S BY

TYPE; на 9-й строке от к р а я

заголовки — CONTRACT

M O D I F I C T A I O N ,

N U M B E R после TAB (20)

д в а д ц а т ь

пропусков и D O L L A R S после

TAB (40).

 

OUTPUT FORMAT

(LI)"TOTAL ACTIONS AND DOLLARS OF NEW CONTRACTS"

(L3) TAB 10 "TOTAL ACTIONS "Tl

(L4) TAB 10 "TOTAL DOLLARS $"Sl

(L7) "CONTRACT MODIFICATIONS AND DOLLARS BY T Y P E "

(L9) «CONTRACT MODIFICATION» TAB 20

«NUMBER» TAB 40, «DOLLARS»

PRINT (1)

(LIOF) DECODE Dl* TAB 20, T2, TAB 40, S2,- REPEAT

Рис. 4-5. Образец запроса 2.

6-88

81


С л е д у ю щ им форматом вывода

является

PRINT

(1),

на который имеется ссылка

в разделе Обработка, свя­

з а н н а я € FILE3 .

Этот

ответ

будет

выдан в

соответству­

ющее

время при обработке;

в рассматриваемом

приме­

ре оно выполнится для каждого сечения

FILE3 (т. е. для

всех

отличных

между

собой

значений

функций

SAME

Dl*).

Оператор

PRINT

начинается

с 10-й

строки

и

зани­

мает столько последовательных строк, сколько это необ­

ходимо, т. е. д л я

каждого 'повторения PRINT

(1) в

раз­

деле Обработка

намечается следующая

строка

из

раздела Выходной формат . Строка начинается с испол­ нения функции DECODE н а д D1*. Функция переводит значение в поле имени PROCUREMENT A C T I O N в его английский эквивалент, используя код в таблице перево­

да. Печать начинается от левой

границы,

поскольку

предшествующая функция T A B отсутствует. Таким об­

разом,

термины

A D D I T I O N A L

TASK, C H A N G E

OF

SCOPE, T E R M I N A T I O N

R E N E G O T I A T I O N

принадле­

ж а т полю PROCUREMENT

A C T I O N

с кодом,

более

4,

и выбираются из файла согласно логическому

в ы р а ж е ­

нию поиска FILE2 . На

той

ж е

строке

находится

функ­

ция TAB 20,

после

чего

печатается

значение

из

Т2.

Из

р а з д е л а Обработка

поиска по запросу

видно,

что

значе­

ние из Т2 есть подсчет

 

числа

сечений

по

значениям

PROCUREMENT A C T I O N , т. е. кратность,

с

которой

данное значение PROCUREMENT A C T I O N

появляется

в выборке из FILE2 . После T A B 40

печатается

значение

из FILE2, представляющее

сумму

A C T I O N

A M O U N T S

д л я напечатанного значения PROCUREMENT A C T I O N .

Таким образом, на рис. 4-4

показано,

что

PROCURE­

M E N T A C T I O N

A D D I T I O N A L

T A S K

встречается в

вы­

борке

18 раз,

а

о б щ а я

сумма

в д о л л а р а х ,

 

связанная

с этой

акцией,

равна 3 252 000;

C H A N G E OF

SCOPE

повторяется

три

раза,

а о б щ а я

сумма

по

всем

трем

ак­

циям

равна

70 000

и

т.

д.

Последнее

высказывание

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

оператора PRINT

(1)

 

содержит

функцию REPEAT без аргумента и означает возвраще­

ние управления в блок поиска

раздела

обработки.

Та­

ким образом-,

четыре строки

отчета,

начиная

 

с

10-й

( A D D I T I O N A L

T A S K

183,

252

000),

печатаются в

ре­

зультате четырех последовательных исполнений выска­

зывания PRINT

(1).

 

 

Н а

рис. 4-6

представлен еще

более

сложный пример

языка

запроса,

п р и н а д л е ж а щ и й

тому

ж е прототипу.

82


ACT

5,

PR1,

FA2586

 

 

R E T R I E V E AND REPORT

 

 

OUTPUT D E V I C E

 

 

 

LINE PRINTER

 

 

DATA CONDITIONS

 

 

 

Al

(SEX=M)

 

 

 

 

A2

(AGE .GT. AVERAGE

(AGE))

 

 

A3

(SALARY

.GT. MAX

i R E N T + L I V E X P )

PROCESSING

 

 

 

 

 

INTRA

 

 

 

 

 

 

F I L E

1=A1

AND A2 AND A3

 

 

INTER

 

 

 

 

 

 

FOR

F I L E

1

 

 

 

 

F I L E 2 = NAME, ADDRESS, A2*,

A3*

 

 

FOR

F I L E

2

 

 

 

 

F I L E 3 = SORT A3*, NAME

 

OUTPUT

FORMAT

 

 

 

 

(LIF) WHOLE RECORD

F I L E 3

 

 

Рис. 4-6. Образец запроса 3.

 

В отличие от

предыдущих

примеров в раздел

Условие

может быть включено наименование функции. В процес­ соре этого типа условие выводится из форм Имя/Отно - шение/З'Начение через Имя/Отношение/Функция имени. Это иллюстрируется элементом А2, состоящим из зна­ чений AGE, больших чем A V E R A G E OF AGE . Это озна­

чает,

что

значение

из

А2 образуется

в

результате

вычис­

ления функции A V E R A G E . Возможность работы запро ­

са такого типа в условиях реального

 

м а с ш т а б а

времени

поиска зависит от нескольких факторов .

Во-первых, ес­

ли аргумент

функции

(в н а ш е м

случае AGE)

является

ключом

и

если

справочник

 

организован

правильно,

поиск

в

реальном

масштабе

времени,

возможен .

Схема

справочника,

п о з в о л я ю щ а я реализовать

такой

тип поис­

ка, называется

деревом

и

будет

рассмотрена н и ж е

в гл.

6.

К а ж д о е

из значений

 

AGE

 

можно

поместить

в справочник-дерево

и

далее

вычислить

среднее

значе­

ние.

Если аргументом

функции

служит

классификатор,

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

6*

83


виям ключей

р а з д е л а

Условие, что,

разумеется, отлича­

ется от среднего значения по всему

файлу . В этом

слу­

чае поиск в

реальном

масштабе времени, возможен,

но

при этом пользователи д о л ж н ы понимать и .учитывать

ограниченный смысл указанных функций. Если

ж е в ка­

честве второй

альтернативы функции

всегда

относятся

к файлу в целом, поиск

в реальном

масштабе времени

по

аргументам

классификатора невозможен,

поскольку

для

получения

значений

функции необходим

просмотр

каждой записи файла .

Условие A3 вносит новые осложнения . Аргументом здесь служит арифметическое выражение; трудность со­

стоит в вычислении с л о ж н ы х

аргументов. Если аргумен­

ты RENT и L I V E E X P были

бы ключами,

поиск в

реаль­

ном

масштабе

времени

по

условию

A3

логически

был

бы

невозможен,

поскольку

 

тогда

через

справочник

д о л ж н ы быть вычислены

все

параметры

комбинации

значений из обоих множеств. Помимо того, что процесс

этот займет много времени, эти комбинации

сами

по

себе

бессмысленны.

 

Следовательно,

единственное

ра­

зумное решение состоит в том, что

 

этот

тип

.условий

действует только

 

на

 

выбранном

 

списком

лодфайле,

(т. е. как классификатор) . При этом опять

ж е

пользо­

ватель

д о л ж е н

сознавать,

что

условие

 

прнложимо

не

к

полному

файлу,

 

а

к

его

подфайлу,

 

образованному

с

помощью

ключей.

 

 

 

 

 

 

 

 

 

 

 

 

 

Внутризаписная

логика

поиска

в

приводимом

приме­

ре

представлена

 

конъюнкцией

трех

элементов.

М е ж з а ­

писная обработка найденного ф а й л а

(файл

с

 

меткой

FILE1)

состоит

в

создании

файла

меткой

F I L E 2 ) ,

представляющего

собой

выборку полей

из к а ж д о й

запи­

си

F I L E 1

(т. е.

полей

ключей

или

классификаторов)

с

именами

N A M E ,

ADRESS,

AGE,

SALARY.

Может

оказаться,

что

при

этом

д а н н ы е т а к ж е

редактируются и

подвергаются

выборке. Д а л е е ,

все

записи F I L E 2

сорти­

руются

по

N A M E

 

внутри

SALARY,

и

отсортированный

файл

получает

метку

FILE3 .

 

 

 

 

 

 

 

 

 

 

Р а з д е л

Выходной

формат состоит из

печати

 

FILE3,

начиная

с

1-й строки. Следует заметить,

что

в докумен­

те появятся только четыре отобранных поля

(FILE2),

отсортированных

 

по

N A M E в

пределах

SALARY.

По­

скольку

заголовки и пропуски в указаниях д л я

печати

от­

сутствуют, из библиотеки процессора запроса

 

может

быть

выбран

стандартный

формат

 

печати

записи

и

84


MR76, PRIORITY 2, FA8721

UPDATE

DATA CONDITIONS

 

Al

(ACC NO. = 67215)

 

 

 

 

 

A2

(GRADE=67)

 

 

 

 

PROCESSING

 

 

 

 

 

 

 

INTRA

 

 

 

 

 

 

 

 

F I L E

1=A1

 

 

 

 

 

 

FOR

F I L E 1

 

 

 

 

 

 

 

D E L E T E KEY GRADE

 

 

 

 

 

 

ADD KEY A2

 

 

 

 

Рис. 4-7.

Образец запроса 4 (обновление).

 

 

с его

помощью

под

управлением

системной

функции

W H O L E RECORD

отпечатана соответствующая

стра­

ница

документа.

 

 

 

 

 

 

 

Н а

рис. 4-7 и

4-8 представлены варианты формули - .

ровки

задачи обновления

файла

на языке

прототипа

запроса. Первый

из

них,

идентифицируемый как

MR 76,

не содержит требований на работу с внешними устрой­

ствами. Р а з д е л

Условие содержит

имена полей данных

и значения, участвующие

в

обновлении; AI

— номер до­

ступа единичной

записи,

А2

— имя

ключа

и значение,

MR77,

PRIORITY 2, FA8721

 

 

UPDATE

 

 

 

 

 

 

OUTPUT D E V I C E

 

 

 

 

 

TYP

 

 

 

 

 

 

DATA CONDITIONS

 

 

 

 

В (YEAR.BTW.1966,

1969)

 

С (TYPE=XL78)

 

 

 

D (STR COL PLAN NO. 87Ѳ5231Е)

 

PROCESSING

 

 

 

 

 

 

INTRA

 

 

 

 

 

 

 

F I L E

1=B

AND

С

 

 

INTER

 

 

 

 

 

 

 

FOR

F I L E

1

 

 

 

 

D E L E T E DATA E7

 

 

ADD

DATA

F7

D

 

 

RESTORE F I L E 1

 

OUTPUT FORMAT

 

 

 

 

(LIF) DATA

F I L E 1

 

 

Рис. 4-8. Образец

запроса

5

(обновление).

85