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

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

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

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

Добавлен: 19.10.2024

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

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

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

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

слов индекс,

цикл

или гнездо. Некоторые терминальные

устройства.

та>к ж е

как pura M A C H 10, имеют кодовую

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

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

просу.

И м я

это может и не оказаться среди имен,

поме­

ченных

в р а з д е л е Условие. Например, возможна

т а к а я

строка: F I L E 2 = SIRT SS

LYLBER; в

этом случае

файл

FILE2 строится по порядку номеров социального инди­

видуального

страхования.

З а м е т и м

т а к ж е ,

что

FILE2

в этом примере состоял из полных

записей

и

раздел

Условие не

с о д е р ж а л требования какой-либо

специфиче­

ской выборки элементов данных .

 

 

 

Р а з д е л

Выходной ф о р м а т д о л ж е н иметь

непосред­

ственную и

простую процедуру построчного

редактиро­

вания, д л я которой пользователь указывает строку или

начало

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

строк, на

которых д о л ж н ы

быть

размещены

различные

заголовки и данные. Запись

( L I )

на

рис. 4-2

означает

1-ю строку.

Операция TAB

принадлежит к функциям процессора запроса . Его ис­ полнение вызывает табуляцию указанного числа пробе­

лов, в нашем случае 20.

Алфавитно - цифровая информа­

ция, взятая в

кавычки,

д о л ж н а быть

отпечатана

бук­

вально. Таким

образом,

цель первого

ответа

состоит

в изображении

слов PROGRAMMER

L I S T I N G

на

1-й

строке дисплея, начиная с 20-й позиции. Второй ответ С указывает на то, что изображение должно начаться с 3-й строки и занять столько строк (L3F), сколько необходи­ мо д л я выполнения последующей команды печати. Функ­

ция W H O L E

RECORD означает отсутствие

выборки

дан ­

ных,

т. е. что

и з о б р а ж е н д о л ж е н

быть весь

ф а й л

с

мет­

кой

FILE2 с

использованием для

каждой

записи

 

ранее

размещенного ф о р м а т а изображения . При этом, естест­

венно, необходимо убедиться, что любой аргумент

(в на­

шем случае FILE2) функции W H O L E RECORD

ранее

определен в запросе. В нашем случае это сделано при

описании межзаписной обработки, когда F I L E 2

опреде­

лен как операция сортировки по AGE F I L E 1 ,

который

77


AQT 1, PRIORITY I, FA 1234

R E T R I E V E AND REPORT

OUTPUT D E V I C E

TYP

DATA CONDITIONS

D! (PROCUREMENT ACTION.LT.5)

D2(BUS1NESS TYPE = J)

D3(D2* = K)

 

PROCESSING

 

 

 

 

 

 

 

 

 

 

INTRA

 

 

 

 

 

 

 

 

 

 

 

 

 

F I L E 1 = D1 AND

D2

 

 

 

 

 

 

 

 

F I L E 2 = ( ~ D I

AND (D2 OR

D3)

 

 

 

 

 

INTER

 

 

 

 

 

 

 

 

 

 

 

 

FOR

F I L E 1

 

 

 

 

 

 

 

 

 

 

 

T O T A L L Y

Dl

 

 

 

 

 

 

 

 

 

S1 = SUM ACTION AMOUNT

 

 

 

 

 

FOR

F I L E 2

 

 

 

 

 

 

 

 

 

 

F I L E

3 = SORT DI*

 

 

 

 

 

 

 

 

FOR

F I L E

3, SAME DI*

 

 

 

 

 

 

 

 

T2=TALLY

 

 

 

 

 

 

 

 

 

 

S2=SUM ACTION AMOUNT

 

 

 

 

 

 

PRINT (1)

 

 

 

 

 

 

 

 

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

 

 

 

 

в свою очередь определяется логической

функцией

вну-

тіризаписной

обработки.

 

 

 

 

 

 

 

 

На рис. 4-3 представлен несколько более сложный

пример. У к а з а н ы

три

типа

условий.

Первое

из

них

PROCUREMENT

A C T I O N < б

(при этом

предполагает ­

ся,

что значения

PROCUREMENT A C T I O N д л я

задан ­

ного

типа записи

закодированы

как

числа);

второе —

BUSINESS

T Y P E = / .

третье — BUSINESS

TYPE = К.

В действительности, следует ожидать, что значение

поля

данных (ключа или классификатора)

под

именем

PRO­

C U R E M E N T A C T I O N представляет собой

выражение на

естественном

языке типа

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

A D D I T I O N A L

TASK, C H A N G E

OF SCOPE и т. д. Однако

из

сообра­

жений экономии памяти эти термины часто бывает по­ лезно кодировать целыми числами. К а к показано в этом

примере,

если

коды классифицированы и сгруппирова­

ны, они

могут

облегчить поиск (предполагается, что все

поставки с присвоенным кодом менее пяти весьма инте­ ресуют пользователя) . В нашем примере они представ­ ляют новый тип контрактов (NEW CONTRACT TYPES) 78


в противоположность модифицированным типам кон­

трактов. Внутри записи можно кодировать

как Имена,

так и Значения . В любом случае желательно

разрешить

пользователю специфицировать или название на естест­

венном

языке,

или

код

Имени или Значения . Это

требу­

ет составления таблицы

перевода

из естественного

языка

в код, а если, кроме того, желательно

получить изобра­

жение на естественном языке с входных

кодированных

записей, то

и ' о б р а т н о й

таблицы

перевода.

 

 

 

 

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

функция

 

Обработки

вызовет

созда­

ние

двух

ф а й л о в :

одного

из

них

из

Dl

Ç]D2,

а другого

из D2\JD3

 

f)

Dl.

Другими

словами, F I L E 1 объединит две

поставки

с кодом, меньшим 5 типа

 

/ ,

a FILE2 — с .кодом,

большим или равным 5, н типом / или

К. М е ж з а п и с н а я

обработка состоит в следующем: д л я всех записей

FIL'El

производится

 

подсчет

 

( T A L L Y ) тех

записей,

д л я

кото­

рых PROCUREMENT A C T I O N меньше

5

(т. е. DJ).

Ре­

зультат подсчета

(TALLY)

хранится

в

буферной

памяти

с

меткой

 

Tl.

 

Поскольку

FIL'El

 

создан

конъюнкцией

DJ

Г] D2,

то очевидно, что TJ содержит

общее

число

за­

писей

F I L E 1 ,

 

потому

что

к а ж д а я

 

запись

удовлетворяет

D1,

 

в то время как, например,

T A L L Y по

D2 д л я

FLLE2,

вообще говоря, не будет подсчетом общего числа

за­

писей д л я

FILE2 . Аналогично, д л я

 

каждой записи

FILE1

суммируются

 

значения

поля

 

A C T I O N

A M O U N T ,

а

эта

сумма

помещается

в S1. Д л я

 

всех

записей FILE2

созда­

ется

третий

ф а й л

с

 

меткой

FILE3,

представляющий

собой

сортировку

SORT

(FILE2)

 

по

PROCUREMENT

A C T I O N

(Dl*).

 

После

этого

д л я

всех записей

FILE3,

имеющих одинаковые значения PROCUREMEN T A C T I ­

ON,

производится

подсчет — T A L L Y

и

результат

поме­

щается

в

Т2,

 

а

сумма

 

соответствующих A C T I O N

A M O ­

UNTS

подсчитывается

и

помещается

в

S2.

Функция

T A L L Y без

аргумента

интерпретируется

как п р и л о ж и м а я

ко всем записям, находящимся под управлением

опера­

тора FOR,

в то время

как

T A L L Y

с аргументом в ы р а ж а ­

ет подсчет только тех записей, которые

удовлетворяют

аргументу.

Таким

образом,

предыдущее

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

T A L L Y Dl

 

могло

бы

 

быть

благодаря

определению

FILE1

просто

 

T A L L Y .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Д а л е е

исполнится

спецификация

печати,

обозначен­

ная

(1).

Это

 

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

находится

в

разделе

выход­

ной формат и будет рассмотрено вместе с другими вы­ сказываниями этого раздела .

79



В

некоторых языках

запроса высказывания

отно­

сительно ф о р м а т а выходных данных

перемешаны с вы­

сказываниями д л я обработки, однако

в

описываемом

прототипе в

целях иллюстрации работы блока обработ ­

ки в

чистом

виде

эти

две

функции

четко

разделены.

Более

того,

такое

разделение может

оказаться

вполне

оправданным

с инженерно-психологической точки зре­

ния, потому

что при продумывании вопросов обработки

информации

человек

обычно знает, какие данные и когда

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

работку, может

оказаться

более предпочтительным.

Н а

принятом

языке вводится высказывание PRINT (п),

что

означает,

что

данные

будут напечатаны согласно

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

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

равным значениям

PROCUREMENT

A C T I O N (PROCUREMENT

A C T I O N

5,

PROCURE­

M E N T A C T I O N

6 и т. д . ) .

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

три послед­

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

тировки

называют

сечениями. Обработка

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

FOR

FILE2 т а к ж е

демонстрирует интересную особен­

ность

во

взаимодействии человек — машина . Л ю д и ,

при­

выкшие

работать

над

составлением

документов

или

использующие их,

знают, что

наиболее

эффективный

способ

классификации

сечений

состоит

в

предваритель­

ной сортировке файла, собирающей одинаковые ключе­

вые значения внутри

сортируемой

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

Разумеется,

здравый

смысл

подсказывал

бы

т а к у ю ж е

процедуру.

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

в целях увеличения эффек ­

тивности обработки естественно

поместить

высказыва ­

ние FILE3='SORT Dl*

по классификации

сечений, хотя

подсчет можно осуществить без. сортировки с помощью одной только функции T 2 = T A L L Y S A M E Dl*. Э т а про ­ цедура, однако, потребовала бы либо многократных про­ ходов по файлу FILE2, либо встроенной сортировки д л я функции SAME .

Н а

рис.

4-4 изображается в о з м о ж н а я

форма доку­

мента,

полученная в

соответствии с выходным

форматом

(рис. 4-5).

Ответ без

метки начинается с

1-й

строки за-

80