(Code_z = zap.code_z) do
Begin
Nachisl:= zap.kol_vo * zap.rasz;
Sum_z:= sum_z + nachisl;
Read (Mainfile, zap);
End;
{Добавление}
Writeln (‘ Итого по цеху’, code_z,
‘ начислено ‘, Sum_file:10:2);
Sum_file:= sum_file + Sum_z;
End;
Writeln (‘ Итого по заводу начислено ‘,
Sum_file:10:2);
Readln; End.
{ необходимо особо учитывать случай обработки последней записи}
{Добавление}
1. Имея в наличии текущий код цеха code_z, необходимо обратиться к соответствующему справочнику тем видом доступа, который позволяет тип файла(прямой для типизированного файла-справочника, последовательный для текстового) и выбрать из него запись с нужным кодом цеха.
Затем из записи получить нужное значение «расшифровки» кода цеха – его название. (Для этого может быть написана последовательность операторов, процедура, функция)
Далее это название вписывается в формируемую итоговую запись в нужное место.
После этого запись готова к выводу.
ПРИМЕР ПРЯМОГО ДОСТУПА К СПРАВОЧНИКУ
(на базе предыдущего примера)
...
While (not EOF (mainfile)) and
(Code_z = zap.code_z) do
|
|
Begin
Nachisl:= zap.kol_vo * zap.rasz;
Sum_z:= sum_z + nachisl;
Read (Mainfile, zap);
End;
{ Первоначальный вариант }
Writeln (‘ Итого по цеху’, code_z,
‘ начислено ‘, Sum_file:10:2);
{ Вариант с использованием прямого доступа
к справочнику}
...
While (not EOF (mainfile)) and
(Code_z = zap.code_z) do
Begin
Nachisl:= zap.kol_vo * zap.rasz;
Sum_z:= sum_z + nachisl;
Read (Mainfile, zap);
End;
{формирование итоговой записи}
{1 – миним.номер цеха}
num_zap_spr1:= Code_z – 1;
{нахождение в справочнике записи
с данным номером цеха}
seek(F_spr1, num_zap_spr1);
{чтение из справочника записи с данным номером цеха}
read (F_spr1,zap_spr1);
Writeln (‘ Итого по цеху’, code_z,
Zap_spr1.nazv_z,
{поле с названием данного цеха}
‘ начислено ‘, Sum_file:10:2);
...
При использовании текстового справочника: вместо SEEK(...)и др. нужен цикл поиска по файлу-справочнику записи с данным кодом цеха code_z, получение из неё поля с названием данного цеха и вставка названия в формируемую итоговую запись.
О сортировке записей по нескольким признакам
В постановке задач совместной обработки файлов содержится требование упорядоченности записей основного файла по некоторым указанным признакам. Для решения этой задачи может быть предложен такой приём.
В описание типа записи для файла необходимо добавить специальное поле типа STRING, значение которого и позволить сортировать записи. Дадим ему условное имя SortField:
...
SortField: string;
...
При вводе значений полей очередной записи значение этого поля формируется следующим образом.