¦cck_salary1¦ Проверканасоответствие¦ spsotr.arm ¦ ¦
¦ ¦ окладов разрядам ¦ spr6.arm ¦ ¦
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
¦chk_slalry2¦Проверка на соответствие ¦ spsotr.arm ¦ ¦
¦ ¦окладов фонду зарплаты ¦ fonds.dat ¦ ¦
¦ ¦ ¦ ¦ ¦
L-----------+-------------------------+--------------+------------------
Модуль Windenv
Процедура Savewindow(x1,y1,x2,y2:byte; var a:buffertype)
Сохраняет в оперативной памяти содержимое прямоугольной области экрана.
x1,y1,x2,y2 - Координаты области экрана. а - переменная, в которую заносится адрес области ОП. Процедура loadwindow(x1,y1,x2,y2:byte; var a:buffertype)
Восстанавливает прямоугольную область экрана, предварительно сохраненную процедурой Savewindow, и освобождает оперативную память, в которй хранилась область. Область экрана должна иметь ту же форму, но, вообще говоря, не обязательно те же координаты, что и сохраненная. x1,y1,x2,y2 - Координаты области на экране. а - адрес в оперативной памяти, где хранится область. Модуль Inter
Функция Max(a,b:integer):integer возвращает максимум из чисел a и b.
Функция Min(a,b:integer):integer
Возвращает минимум из чисел а и b.
Процедура curs_off
Делает курсор на экране невидимым.
Процедура Error(s:string);
Создает в центре экрана окно красного цвета необходимого размера и выводит в него сообщение об ошибке, после чего ждет нажатия на любую клавишу.
s - Сообщение об ошибке.
Процедура Input(x,y,l:byte;var s:string;w:settype)
Расширенная процедура ввода. Позволяет вводить строчку заданной длины, отслеживая недопустимые символы. Позволяет использовать клавиши "Влево","Вправо", Del,Backspase. Позволяет использовать строку по умолчанию, есть возможность Undo.
x,y - Координаты вводимой строки на экране.
l - Максимальная длина вводимой строки.
s - Строка по умолчанию. В ней же возвращается введенная строка. Если в течении ввода была нажата клавиша ESC, возвращается пустая строка.
w - Множество допустимых символов. МодульFiles2
Функция FOpen(FName:string;FMode:Word):Word
Открывает безтиповый файл. Возвращает заголовок файла.
В случае ошибки внутренняя переменная Fsuccess принимает значение False.
Fname - Имя файла.
Fmode - Режим (0 - только для чтения,1 - только для записи, 2 - и для чтения, и для записи.) Функция FCreate(FName:String;FAttr:Word):Word
Создает безтиповый файл. Возвращает заголовок файла.
В случае ошибки внутренняя переменная Fsuccess принимает значение False.
FName - Имя файла.
FAttr - атрибуты создаваемого файла.
Функция FRead(Handle,Segment,Offset,Bytes:Word):Word
Читает из безтипового файла блок. В случае ошибки чтения внутренняя переменная Fsuccess принимает значение False. Возвращает количество реально прочитанных байтов.
Наndle - Заголовок файла.
Segment - Сегментная часть адреса в оперативной памяти, в которую производится чтение.
Offset - Смещение этой области относительно сегмента в оперативной памяти.
Bytes - Сколько байтов необходимо прочитать.
Функция FWrite(Handle,Segment,Offset,Bytes:Word):Word
Записывает в безтиповый файл блок памяти. В случае ошибки записи внутренняя переменная Fsuccess принимает значение false. Возвращает количество реально записанных байтов. Наndle - Заголовок файла.
Segment - Сегментная часть адреса в оперативной памяти, из которой происходит чтение.
Offset - Смещение этой области относительно сегмента в оперативной памяти.
Bytes - Сколько байтов необходимо записать.
Процедура FClose(Handle:Word)
Закрывает безтиповый файл. В случае ошибки внутренняя переменная Fsuccess принимает значение False.
Наndle - Заголовок файла.
Процедура FSeek(Handle:Word; PosPnt:LongInt)
Перемещает указатель безтипового файла.
В случае ошибки внутренняя переменная Fsuccess принимает значение False.
Наndle - Заголовок файла.
PosPnt - новое положение указателя.
Функция FTell(Handle:Word):LongInt
Возвращает позицию указателя файла.
В случае ошибки внутренняя переменная Fsuccess принимает значение False.
Наndle - Заголовок файла.
Функция FSize(FName:String;FAttr:Word):LongInt
Возвращает размер файла в байтах.
В случае ошибки внутренняя переменная Fsuccess принимает значение
False.
FName - Имя файла.
FAttr - Атрибуты файла.
Модуль Field
В программе используются специальные обьекты, которые мы в дальнейшем будем именовать "Таблицами".
Ониописаныниже:
type ftype=array [1..32000] of word
fieldtype=record
field: ^ftype;
tc,tb:byte;
xmax,ymax:integer;
currentx,currenty:integer;
end;
Функция creatfield(var T:fieldtype;X,Y:integer):integer
Создает таблицу заданного размера. Возвращает признак успеха.
T - Таблица.
X - Размер по горизонтали.
Y - Размер по вертикали.
Процедура clearfield(var T:fieldtype;Beg:integer;Textc,Textb:byte)
Очищает созданную таблицу и устанавливает цвет текста и фона для выводимой информации.
T - Таблица.
Beg - Строка таблицы, начиная с которой идет очищение.
Textc - цвет текста для выводимой информации.
Textb - цвет фона для выводимой информации.
Процедура Window_To_Field(T:fieldtype;X1,Y1,X2,Y2,Xx,Yy:integer)
Сохраняет прямоугольную область экрана в таблицу. Для правильной работы процедуры необходимо, чтобы эта область умещалась в таблицу, иначе будет сохранена только часть области.
T - Таблица.
X1,Y1,X2,Y2 - координаты области на экране.
Xx,Yy - Координаты области внутри таблицы.
Процедура field_to_window(T:fieldtype;X1,Y1,X2,Y2,Xx,Yy:integer)
Выводит часть таблицы на экран. Для правильной работы процедуры необходимо, чтобы область не выходила за границы таблицы, иначе на экране будет только часть области.
T - Таблица
X1,Y1 - Координаты левого верхнего угла области.
X2,Y2 - Координаты правого нижнего угла области.
Xx,Yy - Координаты области внутри таблицы.
Процедура put_char(T:fieldtype;X,Y:integer;Sym,Textc,Textb:byte)
Выводит в таблицу символ по заданным координатам с заданным цветом текста и цветом фона.
T - Таблица.
X,Y - Координаты в таблице.
Sym - Код символа.
Textc - Цвет текста.
Textb - Цветфона.
Процедура deletefield(var T:fieldtype)
Удаляет таблицу,высвобождает память,занятую ей.
T - Таблица.
Модуль Data
Процедура strtotable(X,Y,L:integer;Source:arr;T:fieldtype)
Выводит в таблицу строку символов.
X,Y - координаты в таблице.
L - Максималная длина строки.
Sourсe - Массив, в котором находится строка.
T - Таблица.
Процедура numtotable(X,Y,L:integer;D:longint;T:fieldtype)
Выводит в таблицу целое число.
X,Y - координаты в таблице.
L - Максималная длина поля.
D - Выводимое число.
T - Таблица.
Процедура tabletostr(X,Y,L:integer;varS:string;T:fieldtype);
Считывает поле из таблицы.
X,Y - координаты в таблице.
L - Максималная длина поля.
S - Строка, в которую помещается поле.
T - Таблица.
Модуль Types
Описание типов
rectype= record
len :word;
typ: char;
end;
Запись, описывающая поле в базе данных.
len - длина поля в текстовом представлении.
typ - типполя.
fileinfo= record
Name:string[20];
Size:longint;
Nf:byte;
Ptr:longint;
Names:longint;
LNames:longint;
end;
Запись, хранящая информацию о файле базы данных.
Name - Имя реального файла на диске.
Size - Его размер.
Nf - Число полей в базе.
Ptr - Ссылка на файл описания полей.
Names - Ссылка на файл имен полей.
LNames - Длина участка в файле имен полей.
schet=record
Cod:string[10];
Name:string[30];
Debet,Kredit:longint;
end;
Запись файла счетов.
Cod - Код счета.
Name - Имя счета.
Debet - Дебет счета.
Kredit - Кредитсчета.
windowtype=record
X1,Y1:byte;
X2,Y2:byte;
Save:buffertype;
X,Y:integer;
NF:integer;
Currentline:integer;
currentrow:integer;
priority:longint;
end;
Запись, описывающая обьект "окно" в системе многооконного интерфейса.
X1,Y1 - Координаты левого верхнего угла окна на экране.
X2,Y2 - Координаты правого нижнего угла окна на экране.
Save - Буфер, хранящий образ окна.
X,Y - Координаты окна левого верхнего угла в таблице
NF - Номер файла базы, с которым связано окно.
Currenline - Текущая запись в файле.
Currentrow - Текущее поле в файле.
Priority - Приоритетокна.
fnw = record
Dat:Date;
F:string[25];
Tab:string[10];
Sum:longint;
Cod:string[10];
end;
Запись в файлах начислений и взысканий.
Dat - Дата начисления.
F - Фамилия сотрудника.
Tab - Табельный номер.
Sum - Сумма.
Cod - Код начисления.
sp_nal = record
Kod:string[10];
Name:string[25];
Val:string[15];
end;
Запись в файле-справочнике налогов.
Kod - Код налога.
Name - Название налога.
Val - Величинаналога.
string1=string[15];
pl_p=record
Numb:longint;
D:date;
Source::string[30];
Bank1:string[30];
Cod1:string[10];
Dest:string[30];
Bank2:string[30];
Cod2:string[10];
Debet:string[10];
Credit:string[10];
Sum:longint;
Target:string[30];
end;
Запись в файле платежных поручений.
Numb - Номер платежного поручения.
D - Дата.
Source - Плательщик.
Bank1 - Банк плательщика.
Cod1 - Код плательщика.
Dest - Получатель.
Bank2 - Банк получателя.
Cod2 - Код получателя.
Debet - Дебетуемый счет.
Crtedit - Кредитуемый счет.
Sum - Сумма.
Target - Назначение.
great_book_type=record
num:longint;
target:string[30];
sum:longint;
cod1,cod2:string[15];
end;
Запись в файле главной книги.
Num - Порядковый номер.
Target - Назначение платежа.
Sum - Сумма.
Cod1 - Дебетуемый счет.
Cod2 - Кредитуемыйсчет.
levels=record
L:longint;
Coeff:string[15];
end;
Запись в справочнике разрядов.
L - Разряд.
Coeff - Коэффициент.
Sp_sotr= record
Tab:string[10];
Name:string[25];
Raz:longint;
Oklad:longint;
Prof:string[6];
Obosnov:string[30];
end;
Запись в справочнике сотрудников.
Tab - Табельный номер
Name - Ф.И.О.
Raz - Разряд.
Oklad - Оклад.
Prof - Членство в профсоюзе.
Obosnov - Обоснование оклада.
spr_nw=record
Kod:string[10];
Name:string[30];
end;
Запись в файле-справочнике начислений.
Кod - Код начисления.
Name - Наименование начисления.
index=record
Beg:longint;
Key:date;
Len:longint;
end;
Запись в индексном файле.
Beg - Адрес начала данных.
Кеу - Ключ для доступа.
Len - Длина данных.
Sal=record
Num:longint;
Dd:date;
Tab:string[10];
Oklad:longint;
Pn:longint;
Penf:longint;
Ost:longint;
Plus:longint;
Minus:longint;
Itog:longint;
end;
Запись в ведомости зарплаты.
Num - Номер по порядку.
Dd - Дата.
Tab - Табельный номер.
Oklad - Оклад.
Pn - Подоходный налог.
Penf - Пенсионный фонд.
Ost - Остаток.
Plus - Начисления.
Minus - Взыскания.
Itog - Итого на руки.
Модуль Main
Процедура Readfileinfo(Number:integer;varR:rec; varName:string1; var N:integer; var Aon:strarr)
Процедура считывает структуру рабочего файла из файла-каталога. Number - Номер рабочего файла. R- Массив, в котором возвращается информация о файле. Массив содержит столько элементов, сколько полей в рабочем файле.