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

книги из ГПНТБ / Левковиц, Д. Структуры информационных массивов оперативных систем

.pdf
Скачиваний:
3
Добавлен:
21.10.2023
Размер:
8.9 Mб
Скачать

Третий раздел запроса содержит спецификацию Вы­ ходных устройств (OUTPUT D E V I C E ) . В некоторых си­ стемах речь может идти о выборе выходного устройства.

Эти три различные системные функции

осуществляют

«естественное» разделение операций над

ф а й л а м и ,

кото­

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

Другими

сло­

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

может несколько отличаться от естественного

процесса,

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

свя­

зи с системой и ее -использовании. Таким

образом,

язык

запроса

и процессор

д о л ж н ы

служить

«ограничитель­

ным»

механизмом

или синхронизатором

между челове­

ком

и

машиной.

А

поскольку

человеческое

мышление

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

матом запроса,

проводя его

через последовательность

четких утверждений,

которые

в некоторых

случаях могут

потребовать от

него

поиска

аналоіий

и переработки

«естественного» порядка работы автоматизированной си­ стемы файлов . Изложенное разделение понятий усили­ вает иллюстративные свойства рассмотрения, рельефно

выделяя

основные

функциональные

компоненты

струк­

туры

файла .

 

 

 

 

 

 

Четвертый раздел

запроса

под названием

Условия

(DATA

CONDITIONS)

содержит у п р а в л я ю щ и е

аргумен­

ты или

параметры .

 

Например,

при

действии

 

поиска

д о л ж н ы быть определены ключи, классификаторы

и ус­

ловия

поиска. При

обновлении

у п р а в л я ю щ и м и

парамет­

рами могут быть номер д л я доступа единичной записи и собственно данные обновления. Группу записей лучше

обновлять

не по номеру записи,

а по списковому ключу.

Например,

может потребоваться

обновление в

записях

о воинском

подразделении, относящееся

к определенно­

му воинскому званию. Во всех случаях

р а з д е л

условия,

определяющий условия д л я ключей и

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

при получении доступа к записи,

будет

использован как

запрос. Часто оказывается полезным предоставить поль­ зователю возможность помечать ключи или условие мне­

моническими символами, например KU К2,

Cl, С2

(см.

рис. 4-1), с тем

чтобы далее использовать

 

мнемонику

естественного языка для спецификации имени

ключа или

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

его значения или серии значений, а

так­

ж е требуемого соотношения между именем

и

значением.

70

Д л я прототипа

запроса, ф о р м а т

которого

мы у ж е

рас­

сматривали, это достигается достаточно точно

введением

символов пользователя . А

именно

вслед за

присвоенным

пользователем

символом,

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

как

метка

условия, следует о т к р ы в а ю щ а я скобка, д а л е е

имя

ключа

или классификатора в его системной форме представле­

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

оператор

отношения

(равно,

больше, меньше,

в пределах), д а л е е

цифровое

или

ал­

фавитно-цифровое

значение

или серия значений

за­

висимости от типа оператора отношения), и, наконец,

закрывающая

скобка. Обобщение этой концепции могло

бы привести

к значениям, полученным в результате

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

лежит поле данных, определенное

в р а з д е л е обработка,

а новые

данные, которые

д о л ж н ы

быть добавлены или

внесены

в поле, у к а з а н ы

и помечены в разделе Условие.

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

С помощью метки проектировщик системы может ре­ шать вопрос о том, следует ли пользователю различать

71

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

Пятый раздел запроса содержит спецификацию про­ цесса поисковой Обработки (PROCESSING), являющей­ ся функцией условий. Р а з л и ч а ю т два типа обработки: внутризаписиые логические функции и м е ж з а п и с н а я об­ работка .

В

первом

случае записи извлекаются в оператив­

ную

память

из З У П Д согласно поисковому описку,

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

работки

есть функция одних

лишь

данных (условий клю­

ча или

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

этой записи.

Функция

внутризаписной обработки,

о п р е д е л я ю щ а я

поисковый

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

М е ж з а п и с н а я обработка включает

операции над про­

межуточными ф а й л а м и , п о р о ж д а е м ы

м и записями, про­

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

могут отсутствовать. В этом случае формирование

отчет­

ности состоит

в выдаче пользователю

записи по

мере

того, ка к она найдена

и классифицирована

процедурами

внутризаписной

обработки.

 

 

 

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

т а к ж е состоит

из

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

типа программ, с о д е р ж а щ и х встроенные функции языка запроса типа For (цикл в приложении к списку) D'elete key name, add key Name, Sort name, Tally data condition,

Sum

name и т.

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

о локализации

типа

a = ß ,

которое

определено, если

ß — функциональное

в ы р а ж е н и е типа sum name или

A l A N D А2, а

а —

принятый пользователем символ

дл я хранения

мет­

ки ß.

 

 

 

 

72

Шестой раздел запроса содержит Выходной формат

(Output F O R M A T ) . При правильном

формировании от­

четности заголовки и метки д о л ж н ы

либо в явной форме

присутствовать в запросе, либо вызываться из записан­

ных ранее

меченых форм. Кроме того, результаты по­

иска д о л ж н ы быть размещены и упорядочены.

 

Из опыта большинства начинающих программистов

известно,

что стандартные высказывания

ввода-вывода

на

языках

программирования Ф О Р Т Р А Н ,

А Л Г О Л .и да­

же

К О Б О Л требуют большего навыка и

представляют

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

программист, незнакомый

д а ж е с простейшими

процеду­

рами

редактирования при

компиляции, ж е л а л

бы воз­

можно

упростить правила

спецификации, д л я

ф о р м а т о в

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

TALLY, A D D KEY и т. д., пишутся

системными

програм­

мистами

дл я

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

пользователю

удобных

форматных пакетов

(наборов) .

Н а п р и м е р ,

функция

W H O L E RECORD1 NAME может формировать и печатать

(или высвечивать) любую запись в

файле

NAME, ранее

определенную выражением типа NAME-ß. Стандартный

формат

записи

м о ж е т

быть настроен на

формат любой

записи системы. Это

означает,

что

файл

NAME должен

иметь соответствующее описание формата, которое может быть интерпретировано функцией W H O L E RECORD1 . Дальнейшее расширение состояло бы в написании серии

таких- процедур-функций, генерирующих

многообразие

различных специальных форматов общего

назначения

или рассчитанных на специфические требования кон­

кретных пользователей. Исполнительная или вызываю ­

щая программа д л я

этих

функций д о л ж н а

быть предель­

но простой, потому

что она пишется пользователем. Ос­

новные

требования

к

исполнительному

процессору

состоят в

возможности:

 

 

1) з а д а т ь разметку

по строкам и столбцам;

73

2)

з а д а т ь

алфавитно - цифровые

метки;

3)

занести

основные макетные

линии д л я графиков

исхем при работе с ЭЛТ ;

4)вызывать описанные выше системные функции для печати или высвечивания отмеченных переменных из раздела Обработка .

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

стемы

используется

этими людьми

непосредственно

в ф о р м е

отчетов или

визуальных схем

типа проекции

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

Д о сих пор при использовании ЭВ М в работе инфор­ мационных систем внимание фокусировалось в основном

на

улучшениях в области

хранения, поиска,

обновления

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

д о л ж н ы

стать

д л я

руководства и пользователя - непрограммиста

оруди­

ем

оперативного управления,

процедурам

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

данных

необходимо

уделить

дополнительное

внимание.

Из этого не следует, что вопросы автоматической

обра­

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

разви­

тия

не являются главными;

напротив, мы

только

при­

б л и ж а е м с я к пониманию

взаимодействия

стандартных

методов

автоматизированной

информационно-поисковой

системы

(описанной

в последующих главах

этой

книги)

с информационными управляющими системами, систе­

мами

с у п р а в л я ю щ и м

воздействием,

системами

учета

и т. д.

 

 

 

 

 

 

 

 

 

 

На рис. 4-2—4-6 представлены варианты запроса раз­

личного уровня

сложности, имеющие

общий

прототип.

Н а

рис. 4-2 пользователь идентифицируется в

заго­

ловке

ка к >NL 252. Д а л е е

пользователь приписывает за­

просу

приоритет,

равный

единице,

и

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

ключ

доступа к

ф а й л у

12743.

Ключ

этот

м о ж е т быть исполь­

зован

как

код идентификации

ф а й л а

или ка к

код

раз­

решения работ. В начале работы с мультифайловой си­

стемой необходимо идентифицировать

файл

или файлы,

к которым адресован запрос. Д а л е е ,

если,

кроме того,

решены вопросы з а щ и т ы и доступа к файлу, достигается уровень управления файлом вплоть до элементарной за­ писи (см. рис. 3-5), селективно р а з р е ш а ю щ и й или за-

74

 

N.L252,

PR I, FA 12743 '

 

 

 

 

 

 

R E T R I E V E AND REPORT

 

 

 

 

 

OUTPUT

D E V I C E

 

 

 

 

 

 

 

 

TYP

 

 

 

 

 

/

 

DATA CONDITIONS

 

 

 

 

 

 

 

 

K l (NAME = SMITH

 

 

 

 

 

 

 

 

K2(AGE.BTW,21,30)

 

 

 

 

 

 

 

K3(Kl* = GORDON)

 

 

 

 

 

 

 

K4 (JOB = PROGRAMMER )

 

 

 

 

 

 

C l ( L O C N = PHILA)

 

 

 

 

 

 

 

 

C2(DRAFT=IA)

 

 

 

 

 

 

PROCESSING

 

 

 

 

 

 

 

 

INTRA

 

 

 

 

 

 

 

 

 

 

File

1=K2(K1 +

( ~ K 4 ) K 3 ) C 1 ( ~ C 2 )

 

 

 

INTER

 

 

 

 

 

 

 

 

 

 

FOR

F I L E 1

 

 

 

 

 

 

 

 

 

 

F I L E 2 = SORT AGE

 

 

 

OUTPUT FORMAT

 

 

 

 

 

 

(LI)

TAB'20,"PROGRAMMER

LISTING"

 

 

(L3F)

WHOLE RECORD

F I L E

2

 

 

 

 

 

 

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

запроса

1.

 

 

п р е щ а ю щ ий доступ к фиксированным

записям внутри

файла . Выходным

устройством

может

быть

пишущая

машинка .

Если

система имеет

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

выходное

устройство или если адрес устройства

(а,

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

тип) у к а з а н

в

поле

идентификатора,

раздел

Выходное

устройство

в

запросе

может быть

полностью

опущен.

Запрос состоит в поиске и формировании отчетности по

шести условиям д л я данных. Метки данных

(рис. 4-2)

имеют

простое разъяснение:

первые

четыре

из них —

ключи,

две последние — классификатдры .

Однако,

как

уже было указано, эти метки

(Kl,

К2

и т.

д.)

не

могут

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

ключей

и

классифи­

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

машинных

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

Если

ж е

поиск

по списку не­

возможен

по той причине,

что либо

вопрос

пользователя

не содержит ключей, либо

в дизъюнкции логического вы­

ражения

запроса отсутствуют

неотрицаемые ключи,

75

пол ьз овате ль извещается об этом, после чего он может соответственно модифицировать вопрос.

Вприведенном примере пользователь определил

Ключ и соотношения И м я Ключа/Значение

как

N A M E

равно

S M I T H ,

AGE

менаду 21 и 30,

N A M E

равно GOR­

DON, JOB

равно PROGRAMMER . Д л я удобства

элемент

N A M E

в

 

тройке

N A M E / R E L A T I O N / V A L ' U E

можно

не

повторять,

 

приписав

соответствующему

 

обозначению

данных

 

метку

со

спецальньш

символом

 

(например,

звездой) .

 

Таким

образом,

при написании

условия

КЗ

И м я

Ключа

N A M E

обозначается

ссылкой

на

К1*.

За-,

прос

содержит

два

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

L'OCATION - PHILA,

DRAFT - IA .

 

 

 

 

 

 

 

 

 

 

 

 

 

Логика

внутризаітисной

обработки принадлежит

ти­

пу a = i ß .

В левой

части

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

промежуточ­

ного

файла,

определенное

пользователем,

справа — ло­

гическое

выражение, аргументами

которого

с л у ж а т

мет­

ки раздела

Условие.

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

примере

со­

здается

ф а й л с

меткой

F I L E 1 и

вызываются

процедура

поиска

по

списку

и

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

обработка,

которая

д о л ж н а

найти

все

записи

относительно

людей

«в

воз­

расте от

21

до

30

лет

по

имени

S M I T H

или

GORDON,

при

условии,

что

GORDON — непрограммист,

ж и в у щ и х

в Филадельфии

и

не

п о д л е ж а щ и х

призыву

по

статье

1А». Следует отметить, что справочный просмотр ука­

жет, что поиск по списку возможен, потому что

к а ж д а я

дизъюнкция логического в ы р а ж е н и я (приведенного

к

нормальной дизъюнктивной форме) содержит по

край­

ней

мере

один

неотрицаемый

ключ.

Однако

 

усло­

вия Cl и не С2"

могут быть

проверены

только

после

того,

как

запись

перенесена

из-

З У П Д

в оперативную

память .

 

 

 

 

 

 

 

 

 

 

Вторая

часть

раздела Обработка, ф о р м и р у ю щ а я

от­

чет,

интерпретируется следующим

образом . Д л я

каждой

записи

из

файла

F I U E l построить

второй

ф а й л

с

меткой

FILE2, отсортированный по значениям из

поля

с

именем

A G E . Подчеркивающие линии иа рис. 4-2 не несут смыс­

ловой

нагрузки — они выделяют типы функции

или

дей­

ствий

процессора

запроса . Употребление

а б з а ц е в

в

рас ­

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

выделения области управле­

ния циклом for т а к ж е чисто

условно, хотя

и может иметь

практическое значение. Суть дела в том,

что

непрограм­

мисты непривычны

к гнездовым процедурам,

в то

время

к а к программисты

постоянно пользуются

ими в

форме

76

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

слов индекс,

цикл

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

устройства.

та>к ж е

как 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

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