Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения

Реинжиниринг имитационной модели работы железной дороги на основании данных из Информационного Фонда производственно-экономических показателей

Работа из раздела: «Производство и технологии»

20

/

/

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

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

На сегодняшний день разработана «Имитационная модель работы железной дороги». Программный комплекс реализует работу модели, которая на основе исходных значений факторов (технологических показателей работы дорог) рассчитывает значения измерителей, переменные расходы по статьям, прогнозное значение расходов по статье. Имитационная модель работы железной дороги может быть использована в рамках управленческого учета для оперативной оценки влияния изменения первичных факторов на величину расходов сети дорог и дорог.

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

ГЛАВА 1. ПРЕДПРОЕКТНЫЙ АНАЛИЗ

1. Анализ существующей информационной технологии

1.1.1 Общий анализ

В основе расчетов лежит связь расходов по отдельным статьям «Номенклатуры расходов» с объемными измерителями работы железнодорожного транспорта - калькуляционными измерителями. По имеющимся формулам на основании факторов, рассчитываем измерители. На основе измерителей и расходов по статьям за предшествующий год и отношение измерителей на прогнозируемый год к измерителю прошлого года находятся расходы по статьям на прогнозируемый год. Новые значения расходов по каждой i-ой статье номенклатуры под влиянием изменения j-ого калькуляционного измерителя определяются по формуле:

,(1)

, (2)

, (3)

Где Ei(0) -- фактические расходы по i-ой статье номенклатуры

Eij (1) -- расчетное значение расходов по i-ой статье номенклатуры под влиянием изменения j-ого измерителя

Eфот ij (1) -- расчетное значение расходов на оплату труда (ФОТ) по i-ой статье номенклатуры под влиянием изменения j-ого измерителя

Icost4-- для расчета расходов по статьям номенклатуры относящимся к амортизации основных средств: индекс стоимости основных средств. Для статей с выделением части расходов на электроэнергию и топливо: индекс цен на электроэнергию и индекс цен на топливо, соответственно. Для остальных статей расходов: индекс цен на материалы (индекс цен производителей промышленной продукции)

Icost3-- индекс роста заработной платы (индекс потребительских цен)

Ij-- индекс изменения j-ого измерителя под влиянием одного или нескольких первичных факторов

izj(0)-- фактическое значение j-ого измерителя;

izj(1)-- расчетное значение j-ого измерителя после изменения одного или нескольких факторов.

P3 -- основные зависящие расходы по статье, в т.ч. ФОТ, %

P4 -- основные зависящие расходы по статье, в т.ч. прочие расходы, %

Fi -- ФОТ по статье i

Имитационная модель позволяет моделировать величины расходов при изменении заданной совокупности факторов.

1.1.2 Анализ источников информации

В базовой модели, реинжиниринг которой необходимо было произвести, в качестве источников данных были использованы отчетные формы в формате EXCEL. Данные EXCEL-файлы были созданы программистом на основании «Стандартных форм отчетности» МПС.

Из данных, в виде EXCEL - файлов, отбираются необходимые показатели, которые в дальнейшем извлекаются из EXCEL в SAS.

Отчетные формы в формате EXCEL:

Справочник соответствия измерителей статьям расходов,

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

6 жел,

Расчетные формулы для измерителей,

Справочник общехозяйственных расходов,

ЦО-1

ЦО-2,

ЦО-5,

ЦО-11,

ЦО-22

ЦО-31

ЦТО,

ТХО-2,

ЛО-4.

1.1.3 Анализ имитационной модели работы железной дороги

DFD-модель имитационной модели работы железной дороги на момент начала реинжиниринга.

Рис 1. Контекстная диаграмма имитационной модели работы железной дороги на момент начала реинжиниринга.

На этой DFD-модели представлена взаимосвязь имитационной модели с внешними сущностями (рис 1):

- с источником данных, которыми являются «отчетные формы», где хранятся данные,

- с «итоговыми данными», где хранятся рассчитанные данные,

- с «интерфейсом ввода данных», с помощью которого пользователь вводит факторы моделирования и индексы фонда оплаты труда и амортизации, индексы цен на материалы, электроэнергию, топливо.

Рис.2. диаграмма первого уровня, детализирующая контекстную диаграмму работы ИМРЖД (имитационной модели работы железной дороги)

На этой DFD-модели изображены процессы работы имитационной модели железнодорожного транспорта (рис 2).

Под процессами, в нашей модели, подразумеваем

1. прогнозирование расходов по статьям на основе предшествующего года на прогнозируемый год,

2. моделирование расходов по статьям. В данном случае, под моделированием понимаем вычисления оценки величины расходов при изменении заданной совокупности факторов.

DFD- модель процесса прогнозирования расходов (рис 3).

Рис. 3. детализация процесса прогнозирование расходов

Описание алгоритма прогнозирования эксплуатационных расходов. Для вычисления необходимо

1) извлечь из всех отчетных форм значения факторов предшествующего года,

2) рассчитать измерители предшествующего года по формулам на основании справочника формул,

3) извлечь из 6 жел статьи расходов за предшествующий год,

4) извлечь из всех отчетных форм факторы прогнозируемого года,

5) рассчитать расходы по статье на прогнозируемый год.

6) вывести рассчитанные значения.

DFD- модель процесса моделирования расходов (рис 4).

Рис. 4. детализация процесса моделирование расходов

Описание алгоритма моделирования эксплуатационных расходов на железной дороге. Для вычисления необходимо:

1) извлечь из всех отчетных форм значения факторов предшествующего года,

2) рассчитать измерители предшествующего года по формулам на основании справочника формул,

3) извлечь из 6 жел статьи расходов предшествующего года,

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

5) рассчитать измененные измерители, на основании введенных факторов моделирования,

6) рассчитать моделированные расходы по статьям,

7) вывести рассчитанные значения.

1.1.4 Анализ интерфейса

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

Рис. 5. Первая форма интерфейса

На рис. 5 представлена первая форма интерфейса, с которого осуществляется переход на форму выбора необходимого типа результатов для просмотра прогноза расходов по статьям (рис 6).

Рис. 6. Вторая форма интерфейса

Рис. 7. Третья форма интерфейса

Рис. 8. Четвертая форма интерфейса

На рис. 7, 8 представлены результаты прогнозирования расходов по статьям и вывод прогноза по хозяйствам.

1.1.5 Анализ модульной структуры

Данный программный продукт состоит из отдельных модулей, которые вызываются через интерфейс и используются другими модулями.

Модульная структура.

20

/

/

Рис. 9. модульная структура программы

1.1.6 Недостатки программного продукта

Исходя из проведенного анализа, выявляются следующие недостатки программного продукта:

- недостаточная точность прогноза. При сравнительной оценке по данным сети дорог за 1999-2000 гг. точность прогноза по модели (отклонение прогнозного значения от фактического) составило 1,5%, возможно это происходит из-за неверного написания программ.

- недостаточная безошибочность исходных данных в виде EXCEL- файлов. В связи с тем, что данные для программного продукта создавались вручную, то вероятности наличия ошибок равны 0,2.

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

- интерфейс не позволяет произвести просмотр необходимых промежуточных и частичных данных.

1.1.7 Достоинства программного продукта

К достоинствам существующей системы относятся:

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

- четкость формулировки алгоритмов вычисления измерителей на основании формул, изложенных в технической документации,

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

1.2 Обоснование целесообразности разработки

Page: 19 Несмотря на общий успех модели, вышеприведенные недостатки являются существенными и нуждаются в исправлении.

В целях повышения безошибочности исходных данных требуется разработать модель для работы с другими источниками данных, изображённой на Рис 6.

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

На этой DFD-модели (рис 6) представлена взаимосвязь новой имитационной модели с внешними сущностями:

· с «детальной таблицей», где хранятся данные,

· с «итоговыми данными», где хранятся рассчитанные данные,

· с «интерфейсом ввода данных», с помощью которого пользователь вводит факторы моделирования и индексы фонда оплаты труда, индексы стоимости основных средств, индексы цен на материалы, электроэнергию, топливо.

Рис .6. Контекстная диаграмма имитационной модели работы железной дороги после реинжиниринга

DFD- модель «детальной таблицы ИФ ПЭП»

Рис. 7. Контекстная диаграмма регулярной загрузки детальной таблицы ИФ ПЭП

На этой DFD-модели представлена взаимосвязь «регулярной загрузки детальной таблицы ИФ ПЭП» с внешними сущностями «имитационной модели работы железной дороги » и с «оператором».

На следующей DFD- модели представлены процессы регулярной загрузки детальной таблицы ИФ ПЭП:

Загрузка из DBF файлов,

Загрузка в детальную таблицу

А также хранилище и SAS файлы

Рис.8. диаграмма первого уровня, детализирующая контекстную диаграмму работы регулярной загрузки детальной таблицы ИФ ПЭП

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

Page: 22В целях повышения безошибочности выходных данных необходимо создать легко проверяемый программный код. В целях обеспечения удобства оператора нужно улучшить интерфейс.

1.3 Требования к разработке

1.3.1 Требования к системе в целом

1.3.1.1 Требования к структурным характеристикам и режимам функционирования

Разрабатываемая модель должна выполнять 2 основные функции:

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

моделирование расходов на заданных значениях факторов.

Данный программный комплекс должен состоять из отдельных модулей.

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

1) извлечение первичных факторов предшествующего и прогнозируемого года,

2) расчет измерителей предшествующего года и прогнозируемого года по формулам на основании справочника формул,

3) извлечение статей расходов за предшествующий год и за прогнозный год,

4) расчет расходов по статье на прогнозируемый год.

5) вывод рассчитанных значений.

Для подсистемы моделирования расходов должны быть созданы модули, которые должны производить:

1) извлечение значений факторов предшествующего года,

2) расчет измерителей предшествующего года и измененных измерителей по формулам на основании справочника формул,

3) извлечение статей расходов предшествующего года,

4) расчет моделированных расходов по статьям,

5) вывод рассчитанных значений.

1.3.1.2 Требования к средствам и способам обмена информацией

На МПС для связи объектов используется СПД, данные передаются по протоколу TCP/IP.

Запрос на извлечение данных, которые необходимы для функционирования программного продукта, должен учитывать утвержденную структуру детальной таблицы ИФ ПЭП.

1.3.1.3 Требования к интегрируемости со смежными системами

Запрос на извлечение данных должен учитывать утвержденную структуру детальной таблицы ИФ ПЭП. Для разработчика дипломного проекта «Разработки ядра имитационной модели работы железной дороги» автор диплома должен предоставить SAS файлы, содержащие формулы для расчета измерителей по факторам, и таблицу, содержащие значения факторов. От разработчика дипломного проекта «Разработки ядра имитационной модели работы железной дороги» должны быть предоставлены рассчитанные значения измерителей по факторам. Для разработчика дипломного проекта «Разработки процедуры прогнозирования показателей железной дороги» автор диплома должен предоставить SAS файлы, содержащие формулы для расчета измерителей по факторам, и таблицы, содержащие значения факторов, перечень статей, справочник соответствия измерителей статьям расходов.

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

1.3.1.4 Требование к показателям назначения

Модель должна обеспечит безошибочность начальных данных.

При попадании данных на вход модели безошибочность должна быть не менее 10-6.

1.3.1.5 Требование к развитию системы

Модель должна обеспечивать:

- легкость введения новых факторов,

- легкость корректировки формул для расчета измерителей

- добавление новых статей,

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

1.3.2 Требования к функциям системы

1.3.2.1 Перечни задач по каждой функции

прогноз эксплуатационных расходов на железной дороге,

· извлечение факторов предшествующего года,

· расчет измерителей предшествующего года по формулам на основании справочника формул,

· извлечение статей расходов за предшествующий год,

· извлечение факторов прогнозируемого года,

· расчет расходов по статье на прогнозируемый год,

· вывод рассчитанных значений.

моделирование расходов на железной дороге,

· извлечение значений факторов предшествующего года,

· расчет измерителей предшествующего года по формулам на основании справочника формул,

· извлечение статей расходов предшествующего года,

· ввод факторов моделирования,

· расчет измененных измерителей,

· расчет расходов по статьям на прогнозируемый год,

· расчет моделированных расходов по статьям,

· вывод рассчитанных значений.

1.3.2.2 Формы представления входной и выходной информации

Входная информация содержится в детальной таблице ИФ ПЭП. Выходные таблицы должны содержать значения полученных расчетов.

1.3.3 Требования к виду обеспечения

1.3.3.1 Требования к информационному обеспечению

Данные должны учитывать утвержденную структуру детальной таблицы ИФ ПЭП.

1.3.3.2 Требования к программному обеспечению

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

1.3.3.3 Требования к техническому обеспечению

Платформа IBM, система Windows, SAS версии не ниже 8 (SAS 8.1 или SAS 8.2).

1.4 Анализ исходных данных

Источником данных для дипломного проекта является Информационный Фонд Производственно-Экономических Показателей (ИФ ПЭП). ИФ ПЭП является составной частью Центра Ситуационного Управления отраслью (ЦСУ МПС России).

Из детальной таблицы ИФ ПЭП извлекаются данные, соответствующие следующим формам стандартной отчетности МПС

Ц0-1 (факторы описаны в примечание)

ЦО-2,

ЦО-5 (факторы описаны в примечание)

ЦО-11 (факторы описаны в примечание)

ЦО-22 (факторы описаны в примечание)

ЦО-31(факторы описаны в примечание)

ЦТО,

ТХО-2 (факторы описаны в примечание)

6 жел содержит фактические величины расходов по статьям (см примечание)

- справочник общехозяйственных расходов

Расчетные формулы для измерителей и справочник соответствия измерителей статьям расходов создаются вручную, на основании документации. Индексы изменения расходов вводятся вручную.

Полный перечень факторов и формул для измерителей приведен в приложении 1 и в приложении 2.

ГЛАВА 2. РАЗРАБОТКА СИСТЕМЫ

2.1 Выбор средства разработки системы

Разработка данного дипломного проекта осуществляется в среде SAS 8.2

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

- SAS/Base,

- SAS/AF.

SAS/Base ориентирован на обработку данных. Это высокоуровневый процедурный язык программирования, причисляемый к группе языков «четвертого поколения» 4GL Программа на языке SAS представляет собой последовательность шагов обработки данных. Интерфейс может быть создан с использованием продукта SAS/AF, которой является средой быстрой разработки.

2.2 Обоснование выбора технологии создания распределенных «клиент-серверных» приложений

При реализации поставленной задачи использовалась технология «толстый» клиент. Обоснованием является небольшое количество пользователей и большая потребность в вычислительных ресурсах при низком объеме данных.

2.3. Анализ и выбор источников исходных данных

2.3.1 Выделение необходимых исходных данных для создания данного программного продукта

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

Для выполнения данного проекта будут использоваться таблицы справочников ИФ ПЭП из библиотек DATA, REF. DATA - это библиотека наборы данных, используемые при формировании детальной таблицы. REF - библиотека содержащая справочники.

2.3.2 Описание источников

Описание библиотеки DATA

Таблица Base, в которой содержатся детальные данные.

Таблица 1

Описания колонок таблицы Base

Название колонки

Тип колонки

Описание колонки

Date

number

Дата отчетности

Dor_id

text

Код дороги

Var_id

text

Код показателя

Operiod

text

Признак отчетности

fact

number

Значение показателя

Описание библиотеки REF

Таблица VAR, содержит характеристики используемых в хранилище показателей

Таблица 2

Описания колонок таблицы Ref

Название колонки

Тип колонки

Описание колонки

name

text

Название показателя

Tya_id

text

Код тяги

Var_id

text

Код показателя

Dv_id

text

Код движения

Таблица Hoz, содержит перечень хозяйств и их коды.

Таблица 3

Описания колонок таблицы Hoz

Название колонки

Тип колонки

Описание колонки

Hoz_id

Text

Код хозяйства

Name

Text

Наименование хозяйства

Таблица Dor, содержит перечень дорог и их коды.

Таблица 4

Описания колонок таблицы Dor

Название колонки

Тип колонки

Описание колонки

Dor_id

Text

Код дороги

Name

Text

Наименование дороги

2.3.3 Описание созданных справочников

Справочник первичных факторов. Factor1, создан путем извлечения факторов из ИФ ПЭП

Таблица 5

Описания колонок таблицы Factor1

Название колонки

Тип колонки

Описание колонки

Var_id

Text

Код фактора

name

Text

Наименование фактора

Справочник измерителей Izmerit, создан на основании документации

Таблица 6

Описание колонок таблицы Izmerit

Название колонки

Тип колонки

Описание колонки

Name

Text

Наименование измерителя

Var_id

Text

Код измерителя

formula

Text

Формула расчета измерителя по факторам

index

Number

Порядок расчета формул

Набор factor_first, создан путем извлечения факторов из ИФ ПЭП, содержит данные о первичных факторах

Таблица 7

Описания колонок таблицы factor_first

Название колонки

Тип колонки

Описание колонки

operiod

Text

Код отчетного опериода

Var_id

Text

Код фактора

Dor_id

Text

Код дороги

date

Number

Отчетная дата

fact

Number

Значение

Справочник статей расходов var4

Таблица 8

Описания колонок таблицы var4

Название колонки

Тип колонки

Описание колонки

Name

Text

Наименование статьи

Var_id

Text

Код статьи

stati

Text

Номер статьи

Справочник соответствия статьи и измерителя sprav_stat

Таблица 8

Описания колонок таблицы sprav_stat

Название колонки

Тип колонки

Описание колонки

Dv_id

Number

Код сообщения

Stati

Text

Номер статьи

str

Number

Номер строки в 6 жел

Var_id_izmer

Text

Код измерителя

I3

Number

Номер индекса цен на фот

I4

Number

Номер индекса цен на расход по статье

P3

Number

Основные зависящие расходы, в т.ч. ФОТ, %

P4

Number

Основные зависящие расходы, в т.ч. прочие расходы, %

P2

Number

Основные зависящие расходы по хозяйству , в т.ч. ФОТ, %

Набор Stat_1 содержит полные данные о статьях.

Таблица 9

Описания колонок таблицы Stat_1

Название колонки

Тип колонки

Описание колонки

Name

Text

Наименование статьи

Var_id

Text

Код статьи

Stati

Text

Номер статьи

Str

Number

Номер строки в 6 жел

Date_bas

Number

Отчетная дата прогнозного года

Fact

Number

Значение

Var_id_izmer

Text

Код измерителя

I3

Number

Номер индекса цен на фот

I4

Number

Номер индекса цен на расход по статье

P3

Number

Основные зависящие расходы, в т.ч. ФОТ, %

P4

Number

Основные зависящие расходы, в т.ч. прочие расходы, %

P2

Number

Основные зависящие расходы по хозяйству , в т.ч. ФОТ, %

Name_fot

Text

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

Fact_fot

Number

Значение расхода по фот

Var_id_fot

Text

Код статьи расхода на фот

I_izm_b_p

Number

Индекс изменения измерителя

Fact_prog

Number

Значение расхода статьи на прогнозируемый год

Date_prog

Number

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

Fact_fot_prog

Number

Значение расхода по фот на прогнозируемый год

Dv_id

Number

Код сообщения

Справочник измерителей Izmet, содержит полные сведения о измерителях

Таблица 10

Описания колонок таблицы Izmer

Название колонки

Тип колонки

Описание колонки

Date_bas

Number

Отчетная дата прогнозного года

Var_id

Text

Код измерителя

Dor_id

Text

Код дороги

operiod

Text

Код отчетного опериода

I_izm_b_p

Number

Индекс изменения измерителя

Fact_prog

Number

Значение расхода статьи на прогнозируемый год

Date_prog

Number

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

Fact_prog

Number

Значение расхода статьи на прогнозный год

2.2 Архитектура системы

2.2.1 Функциональная структура программы

Данный программный проект выполняет все функции, изложенные в 1 главе. Произведено вычисление прогноза и моделирование расходов по статьям. Программный код разбит на модули и имеют комментарии. Разработан интерфейс для удобства пользователя.

2.2.2 Иерархия модулей

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

Модули были созданы согласно требованиям.

Рис. 9. модульная структура программного продукта данного дипломного проекта

2.2.3 Описание модулей

Модуль «извлечение статей расходов» выполняет следующие операции

Рис. 10. Описание модуля «извлечение статей расходов»

Модуль «извлечение первичных факторов» выполняет следующие операции

Рис 11. Описание модуля «извлечение первичных факторов»

Модуль «расчет измерителей» выполняет следующие операции

Рис. 12. Описание модуля «расчет измерителей»

Модуль «расчет расходов» выполняет следующие операции

Рис. 13. Описание модуля «расчет измерителей»

Рассмотрим подробно предопределенный процесс «вычисления прогнозных зависящих расходов по статье».

Рис. 14. процесс «вычисления прогнозных зависящих расходов по статье»

Алгоритм расчета зависящих расходов по статям, относящихся к амортизации вагонов, и к амортизации локомотивов в грузовом и пассажирском движении.

Рис.15. алгоритм расчета зависящих расходов по статьям, относящихся к амортизации

Алгоритм расчета зависящих расходов по статям 138, 196

- 138 «Экипировка электровозов»

- 196, «Экипировка тепловозов»

Рис. 16. алгоритм расчета зависимых расходов на экипировку

Алгоритм расчета по статям, на которые влияют несколько измерителей.

Расходы по отдельным статьям номенклатуры относятся не на один, а на несколько измерителей.

Расходы по статьям:

ст. 091 «Работа электровозов в грузовом движении»

ст. 092 «Работа электровозов в хозяйственном движении»

ст. 153 «Работа тепловозов в грузовом движении»

ст. 154 «Работа тепловозов в хозяйственном движении»

ст. 108 «Работа электровозов в пассажирском движении»

ст. 168 «Работа тепловозов в пассажирском движении»

ст. 122 «Работа электросекций»

ст. 181 «Работа дизельных поездов»

распределяются по данным прогнозного года между тремя измерителями:

расходы по фонду оплаты труда относятся на измеритель 'локомотиво-часы на участке';

расходы на материалы и смазку относятся на измеритель 'локомотиво-километры';

расходы на оплату электроэнергии для тяги поездов относятся на измеритель 'расход электроэнергии'.

Алгоритм расчета зависящих расходов по статье 001.

Расходы по статье 001 'Продажа билетов во внутригосударственном сообщении' предварительно распределяются между перевозками в дальнем и пригородном сообщении пропорционально приведенному количеству отправленных пассажиров:

Рис. 17. алгоритм расчета прогноза по статьям, на которые влияют несколько измерителей

Рис. 18. Алгоритм расчета по 001 статье

Алгоритм расчета зависящих расходов по статьям 322, 323, 329 330, 330,333 334.

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

ст. 322 «Текущее содержание пути и постоянных устройств»

ст. 323 «Одиночная смена материалов верхнего строения пути, пополнение и замена балласта»

ст. 329, 330 «Отчисления в резерв на капитальный ремонт земляного полотна, искусственных сооружений и верхнего строения пути»

ст. 330 «Отчисления в резерв на капитальный ремонт верхнего строения пути»

Рис. 19. Алгоритм расчета зависящих расходов по статьям 322, 323, 329 330, 330,333 334

На расходы, относящиеся к главным, станционным и подъездным путям, производятся по данным базового периода пропорционально приведенной развернутой длине главных и станционных путей, включая подъездные пути:

Расходы, приходящиеся на текущее содержание подъездных путей, относятся полностью на грузовые перевозки.

Расходы по амортизации земляного полотна, искусственных сооружений и верхнего строения пути (ст. 333, 334) распределяются между главными и станционными путями (без учета подъездных путей) пропорционально приведенной длине главных и станционных путей по данным базового периода.

Рассмотрим подробно предопределенный процесс «вычисления прогнозных условно-постоянных расходов по статье».

Рис. 20. Процесс «вычисления прогнозных условно-постоянных расходов по статье»

Алгоритм расчета условно-постоянных расходов по статье 001.

Рис.21. Алгоритм расчета условно-постоянных расходов по статье 001

Алгоритм расчета условно-постоянных расходов по статьям 322, 323, 329 330, 330,333 334.

Рис. 22. Алгоритм расчета условно-постоянных расходов по статьям 322, 323, 329 330, 330,333 334.

Алгоритм расчета условно-постоянных расходов по статям 138, 197

Рис. 23. Алгоритм расчета условно-постоянных расходов по статям 138, 197

Алгоритм расчета условно-постоянных расходов по статям, относящихся к амортизации вагонов, и к амортизации локомотивов в грузовом и пассажирском движении.

Рис. 24. Алгоритм расчета условно-постоянных расходов по статям, относящихся к амортизации

2.2.4 Результат выполнения программы

На первой форме вам необходимо ввести данные и выбрать расчет прогноза.

Если вам необходимо просмотреть начальные данные:

- перечень факторов и их значения,

- перечень измерителей и их значение,

- перечень статей и значение их расходов,

то выберите кнопки с надписью «просмотр…» .

если необходимо просмотреть полученный прогноз, то выберите кнопку «просмотр прогноза»

Для моделирования расходов, нажмите на кнопку соответствующего названия.

Рис. 25. Первая форма интерфейса.

Форма 2 (рис 26) представляет моделирование расходов.

Для этого необходимо из списка выбрать фактор и изменить его значение.

Далее нажмите на кнопку «сформировать новую таблицу» и произвести расчет нажав на «моделирование прогноза».

Рис. 26. Вторая форма интерфейса

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

Рис.27. Третья форма интерфейса

Форма 4 позволяет просмотреть перечень и значение факторов

Рис. 28. Четвертая форма интерфейса

Форма 5 на рисунке 28 -просмотр измерителей

Рис. 29. Пятая форма интерфейса

Форма 6 выводит значение статей расходов за прогнозный год, на основании которого строится прогноз. (Рис. 30)

Рис. 30. Шестая форма интерфейса

ГЛАВА 3. СИСТЕМАТЕХНИЧЕСКИЕ РАСЧЕТЫ

3.1 Расчет безошибочности вводимых данных

3.1.1 Обеспечение безошибочности данных

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

3.1.1.1 Расчет безошибочности существующей системы

Все необходимые данные для работы программного продукта были введены оператором, затем которые подвергались конкретной обработке (сортировке, анализу и т.д.)

Информационная цепь, соответствующая существующей технологии изображена на рис.31.

20

/

/

Рис. 31. Информационная цепь

Оценим безошибочность данных для рассматриваемой информационной цепи. Для чего рассчитаем показатель безошибочности и сравним полученный показатель с предельно допустимым значением вероятности возникновения ошибок во вводимых данных Qвд=10-6 на символ.

Таблица 11

Вероятности возникновения или пропуска ошибок

Номер операции

Операция

Вероятность

(0,1)

Ввод данных с клавиатуры

q1=6,7*10-4

(1,2)

Визуальный контроль по экрану монитора

1=0,2

(2,3)

Обработка на ЭВМ (обобщение)

q2 из расчетов

(3,4)

Логический контроль

2=0,3

Найдем выражения для оценки вероятностей наличия ошибок до и после каждой операции контроля данных в информационной цепи:

n

QВ=1-?(1-qj); (4)

j=1

qj - вероятность возникновения ошибок при выполнении j-й операции обработки. При малых qj << 1 обычно можно считать.

n

QВ=?qj; (5)

j=1

Q1=q1;

Q2=q1*1;

Y-выходной параметр, зависящий от первичных погрешностей входных параметров X1,…,Xn

ц - формула расчета прогноза по статьям расходов на оплату труда.

ц=F*P*I*J

Безошибочность данных на выходе операции обобщения можно определить, установив границы допуска ( удоп1, удоп2 ) на выходной параметр Y и найдя вероятность того, что выходной параметр находится в границах допуска.

Пусть границы допуска на выходной параметр равны:

удоп1=10-6

удоп2 =9*10-6

Выражения для математического ожидания и дисперсии случайной величины Y:

my=ц(mx1 , … mxn) (6)

у2=?( d ц/ d xj)2m уxj 2 (7)

Математические ожидания каждого элемента формулы:

mF=11355,03

mP=0,5

mI=1.99

mJ=1.17

my=11355,03*0,5*1.99*1.17=13218,95

уу2=?{(P*I*J)2+(F*I*J)2+(F*P*J)2+(F*P*I)2}=1,34+698914969,88+441253

64,31 +127650562,65=870690898,18

уу =29507,47

(d ц/ d xj)2m -значение частной производной по xj при значениях всех остальных величин, равных их математическим ожиданиям.

Допущения:

- величины первичных погрешностей подчинены нормальному закону распределения;

-математические ожидания величин погрешностей равны нулю.

Qв'=1-Ф(и1) - Ф(и2); (8)

и1= (удоп1- my)/ уу= (10-6-13218,95)/ 29507,47=-0,447?-0,45

и2= (удоп2- my)/ уу =(9*10-6-13218,95) /29507,47=-0,445?-0,44

Ф(и1)=Ф(-0,45) =1- Ф(0,45)

Ф(и2)=Ф(-0,44) =1- Ф(0,44)

Qв'=1-1+0,67364-1+0,67003=0,34367= q2

Q4 =( Q2 +q2)*2= (q1*1 +q2)*2

Qв= Q4 =(6,7*10-4*0,2 +0,34367)* 0,3=0,1031412

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

Любая ошибка в исходных данных влияет на работу системы справочников в целом. (все формулы были взяты из источника [2])

3.1.1.2 Расчет безошибочности созданной системы

Все необходимые данные для работы программного продукта извлекаются из ИФ ПЭП. Данные ИФ ПЭП были внесены оператором. После извлечения необходимых данных приступаем к конкретной операции обобщения (вычисляем прогноз по формуле)

Информационная цепь, соответствующая существующей технологии изображена на рис. 32.

20

/

/

Рис. 32. Информационная цепь

Оценим безошибочность данных для рассматриваемой информационной цепи. Для чего рассчитаем показатель безошибочности и сравним полученный показатель с предельно допустимым значением вероятности возникновения ошибок во вводимых данных Qвд=10-6 на символ.

Таблица 12

Вероятности возникновения или пропуска ошибок

Номер операции

Операция

Вероятность

(0,1)

Ввод данных с клавиатуры

q1=6,7*10-4

(1,2)

Визуальный контроль по экрану монитора

1=0,2

(2,3)

Передача данных по оптоволоконному каналу

q2=10-8

(3,4)

Контроль на четность

2=1,2*10-3

(4,5)

Обработка на ЭВМ (обобщение)

q3 из расчета

(5,6)

Логический контроль на совпадение взаимосвязей

3=10-7

Найдем выражения для оценки вероятностей наличия ошибок до и

Q=0

Q= q2

Q= Q*2= q2*2

Заменяем ТСПД с локальным контролем

20

/

/

Рис. 32 ТСПД с локальным контролем

на ТСПД без локального контроля

20

/

/

Рис. 33 ТСПД без локального контроля

Q1=q1;

Q2=к*q1*1= 2*q1*1

Q4= Q2+ q 2*2

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

Qв'=1-1+0,67364-1+0,67003=0,34367= q3

Qв = (Q4+ q3)* 3

Qв =( 2*q1*1+ q 2*2+ q3)* 3

Qв =( 2*6,7*10-4*0,2+ 10-8*1,2*10-3+ 0,34367)* 10-7=0,343938* 10-7

Полученное значение показателя безошибочности ниже предельно допустимое значение, следовательно, безошибочность данных в существующей системе удовлетворяет требованиям. (все формулы были взяты из источника [2])

3.2 Анализ роли человека

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

В нашей системе есть 3 класса персонала. 1 класс - операторы, которые вводили данные в ИФ ПЭП. От безошибочности работы операторов зависят результаты прогноза, которые получает персонал 2 класса - аналитики в процессе работы с программным продуктом. К 3-му классу персонала относятся эксперты, от выводов которых зависит развитие железнодорожного транспорта.

Все три класса персонала можно объединить под словом пользователь.

Пользователь- человек в нашей системе. Для необходимых расчетов пользователю необходимо вводить данные и на основе полученных результатов делать выводы и принимать решения, но все решения должны быть приняты только на основании рекомендаций, полученных от модели в виде результатов.

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

ГЛАВА 4. РАСЧЕТ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ

4.1 Постановка экономической задачи:

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

Рассмотрим целесообразность создания данной системы с экономической точки зрения. Разрабатываемая система должна отвечать определенным экономическим требованиям, иначе разработка станет убыточным предприятием, не оправдывающим затраченные на нее время и средства.

Основными результатами автоматизации являются:

- экономия времени руководителя - лица принимающего решения при работе с затратами по статьям;

- замещение ручного ввода данных готовой детальной таблицей ИХ ПЭПа.

- повышение точности прогноза.

4.2 Расчет затрат на разработку «ИМРЖД»

Затраты на разработку «ИМРЖД» определяются как сумма затрат на техническое, программное, информационное и организационное обеспечение.

4.2.1 Затраты на техническое обеспечение включают:

Стоимость вычислительной техники

Так как «ИМРЖД» реализуется на имеющемся оборудовании (компьютер IBM Pentium 3, т.к. диплом разрабатывается на кафедре АСУ), используя часть свободного ресурса, то рассчитывается удельная стоимость технического обеспечения.

Куд=Ц*t/T, (9) [3]

где

Ц - первоначальная стоимость используемого оборудования;

t - время разработки «ИМРЖД» ;

T - временной ресурс имеющегося оборудования;

Ц = 1000 (долларов США)*30 рублей (курс доллара США на момент покупки компьютера)=30000 рублей.

t = 4 месяца*22 рабочих дня*8 часов=704 часа.

Т = 12 месяцев * 3 года* 22 рабочих дня*8 часов=6336 часа в год.

Следовательно, затраты на техническое обеспечение (Зто), равны удельной стоимости вычислительной техники.

Зто = Куд=30000руб.*704/6336=3 333 рублей.

4.2.2 Расчет затрат на разработку программных средств

Так как программные средства разрабатываются на кафедре АСУ, то все необходимые средства программирования уже куплены, то есть студент имеет оборудованное рабочее место.

Будем считать, что число пользователей этих программных продуктов =100, так как обычно программные продукты кафедра покупает не на один год, а на несколько лет и ими могут пользоваться несколько студентов. Так как разработка программ выполняется студентами, то их зарплата составляет 300 руб:

количество разработчиков - один;

заработная плата (разработчиком является студент)

=300руб./(22дня*8часов)= 1,7 рубля в час.

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

Используя таблицу факторов влияющих на уровень ПО, проведем расчет уровня ПО и нормативной трудоемкости (таблица 3).

Для оценки стоимости ПО или затрат на разработку в денежном выражении была составлена следующая таблица (таблица 4):

Таблица 13

Оценка стоимости ПО

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

Трудоемкость (чел. час)

Зарплата исполнителя

(руб./час)

Э/Э + Ач (в час)

Накладные расходы в час

Сумма затрат по этапу

1. Получение задания и изучение задачи

2. Изучение литературы по проблеме

4.Определение возможных путей решения задачи

24

24

24

1,7

0

0

122,4

3. Анализ существующей технологии.

6.Разработка технологии решения задачи

7. Составление алгоритма решения задачи

9. Разработка программного кода

10. Тестирование и отладка программы (локально на определенном куске данных )

11.Первичный прогон на реальном наборе данных

12. Анализ полученных результатов

13.Корректировка программы

14. Разработка интерфейса

15. Вторичное тестирование и отладка в сети на реальных данных

16. Написание инструкции пользователя

168

16

24

200

24

8

16

36

120

24

16

1,7

2,5

2,5

4368.4

5.Консультация у эксперта

36

12+

1.7

2,5

2,5

673.2

8.Консультация у программиста

8

8+

1.7

2,5

2,5

117.6

Суммарная трудоемкость

768

Суммарные расходы по всем этапам

5281.6

Затраты на организационное обеспечение рассчитываются как произведение трудоемкости составления и написания инструкции пользователя в человеко-часах на часовые затраты на проектирование.

Так как разработка осуществляется студентом, то ЕСН не платится.

В этой таблице:

Зч с ЕСН (преподавателя за консультацию) - Зарплата человека за 1 час, включая единый социальный налог. Она рассчитывается по формуле: у программиста

(10) [3]

у эксперта

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

Сэнерг+Ач - стоимость 1 часа электроэнергии и амортизации техники и ПО (считаем, что компьютер потребляет 0,6 кВт/ч а стоимость 1 кВт/ч = 1 руб.)

Часовая амортизация (Ач) зависит от цены компьютера и режима его работы, рассчитывается по формуле:

Aч=Цэвм*0,11/Т , (11) [3]

где

Цэвм - цена ЭВМ;

0,11 - годовая норма амортизации;

Т-время работы компьютера в год (12мес.*22дня*8часов=2112 часов в год).

Aч=30000 рублей*0,11/ 2112 часов=1,5 рубля в час;

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

Мы получили, что стоимость разработанного ПО равна:

Сразраб.ПО = 5281.6 руб. В этой стоимости уже учтена амортизация техники и ПО.

4.3 Затраты на информационное обеспечение

Затраты на информационное обеспечение традиционно включают в себя расходы на проектирование и разработку базы данных. Так как разработка ИМРЖД не предполагает разработку базы данных, следовательно затраты на информационное обеспечение принимаем равными нулю.

Итого, общая стоимость разработки

Сразработки= Стехники и ПОразраб.ПО =3 333 +5281.6 =8614.6 руб.

4.4 Расчет затрат на эксплуатацию ИМРЖД

В процессе эксплуатации ИМРЖД возникают затраты, сведенья о которых сведены в таблицу 4.4.1. «Смета затрат в час на эксплуатацию системы». Затраты, возникающие на всех этапах, однородны, то есть используется один компьютер и в процессе эксплуатации ИМРЖД участвует один человек.

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

150 рублей в месяц (6,8 рублей в день, 0,85 рубля в час). На малоценные и быстроизнашивающиеся предметы -40 рублей в месяц (1,8 рубля в день, 0,23 рубля в час).

Затраты на основную зарплату производственного персонала определяется следующим образом: ИМРЖД эксплуатирует один человек, его заработная плата равна средней заработной плате НИАЦ - 7000 рублей в месяц. Отчисления на единый социальный налог равны 39% от заработной платы.

Стоимость электроэнергии равна 1 рубль за 1 киловатт. Принимаем, что компьютер потребляет 1 киловатт в час.

Эксплуатация ИМРЖД ведется весь рабочий день (8*22=176 часов в месяц), затраты на электроэнергию для освещения равны 176 рублей в месяц (8 рубля в день, 1 рубля в час).

Затраты на отопление составляют 10 рублей в месяц на одно рабочее место (6,8 рублей в день, 0,85 рублей в час).

Расходы на электроэнергию для отопления и освещения=1+0.85=1.85 рублей в час

Заработная плата производственного персонала по эксплуатации системы составит

7000/(22*8)=40 рублей в час

Амортизация основного производственного оборудования составляет 11% в год от стоимости основного оборудования. Следовательно

30000*0,11/(12*22*8)=1,5 рубля в час

Стоимость программного обеспечения вычисляются исходя из того, что стоимость программного продукта фирмы SAS Institute, в котором разрабатывается рассматриваемое приложение, равна 30 000 000 рублей. Но корпорация закупает этот программный продукт с учетом того, что кроме данного разработчика пользоваться системой SAS (для параллельной разработки каких-либо других программных приложений) будут также и другие разработчики. И поэтому, для разработки данного приложения затраты на покупку программного обеспечения можно принять равными 1/3000 части от общей стоимости. Таким образом:

Спо = 30 000 000 / 3000 = 10 000 рублей

Амортизация программного обеспечения равна 10% в год от стоимости программного обеспечения. Следовательно

10 000*0,1/(12*22*8)=0,36 рубля в час.

Зарплата персонала и расходы по ремонту основных средств равна 5% от стоимости основного оборудования (в год) и следовательно

30 000*0,05/(12*22*8)= 0,7 рубля в час.

Накладные расходы принимаются равными 30% от прямых затрат.

Таблица 14

Затраты в час на эксплуатацию системы

Наименование статей

Затраты (рубли)

1.Материальные затраты (бумага, дискеты, расходные материалы для принтера, запасные части для ремонта)

0,85

2.Малоценные и быстроизнашивающиеся предметы (ручки, мышки, и т. п.)

0,23

3.Прямые расходы по заработной плате

а) Основная заработная плата производственного персонала

б) Отчисления на единый социальный налог

Итого с начислениями:

40

15,6

55,6

4.Расходы на электроэнергию для технических целей (1 компьютер)

1

5.Расходы на электроэнергию для отопления и освещения

1,85

6.Амортизация основного производственного оборудования

1,5

7.Амортизация программного обеспечения

0,36

8.Зарплата персонала и расходы по ремонту основных средств

0,7

Итого прямых затрат

62.09

Накладные расходы

18,63

ВСЕГО

80.72

Для выяснения характеристик базовой модели и новой, произведем сравнение интерфейсов.

Таблица 15

Сравнение интерфейсов

свойства

важность

Интерфейс базовый

Интерфейс новый

Балл

вес

балл

Вес

1.количество уровней

2

2

4

4

8

2. удовство пользования

5

3

15

5

25

3. удобство просмотра

4

3

12

4

16

4.возможность редактирования

3

5

15

5

15

5. интегрируемость с другими интерфейсами

1

1

1

5

5

? 47

? 69

Вывод:

Затраты на разработку модели=8614,6 руб в час.

Затраты на эксплуатацию модели =80,72 руб в час.

Суммарный балл интерфейса = 69.

ГЛАВА 5. РАЗРАБОТКА МЕРОПРИЯТИЙ ПО ОХРАНЕ ТРУДА НА РАБОЧЕМ МЕСТЕ

5.1 Расчет воздухообмена в помещении

5.1.1 Введение

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

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

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

5.1.2 Анализ условий труда пользователя

Помещение, в котором находится рабочее место пользователя, имеет следующие характеристики:

длина помещения: 8м;

ширина помещения: 5 м;

высота помещения: 3.5 м;

число окон: 2;

число рабочих мест: 16;

освещение: искусственное;

число вычислительной техники: 15.

Рис.33. рабочее помещение

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

- недостаточное освещение;

- шум от работающих машин;

- облучение от экрана дисплея;

- выделение избытков теплоты.

Кроме того, в помещение могут попадать частички пыли.

5.1.3 Постановка задачи

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

5.1.4 Расчет вентиляции

5.1.4.1 Анализ микроклимата

Необходимым условием жизнедеятельности человека является поддержка постоянства температуры тела, благодаря свойству терморегуляции, т.е. свойству организма регулировать отдачу тепла в окружающую среду. Поэтому большое значение имеет микроклимат в помещении, где работает инженер-программист. Метеорологические условия на производстве определяются следующими параметрами:

1) температурой воздуха t (C);

2) относительной влажностью (%);

3) скоростью движения воздуха на рабочем месте, V(м/с).

Основной принцип нормирования микроклимата - создание оптимальных условий для теплообмена тела человека с окружающей средой. Выделяемая организмом человека теплота должна отводиться в окружающую среду. Соответствие между количеством этой теплоты и охлаждающей способностью среды характеризует ее как комфортную. В условиях комфорта у человека не возникает беспокоящих его температурных ощущений холода или перегрева. В 'Общих санитарно-гигиенических требованиях к воздуху рабочей зоны' (ГОСТ 12.1.005-88) установлены оптимальные и допустимые параметры микроклимата в зависимости от времени года, категории работ и рабочих мест (постоянных и непостоянных).

Таблица 16

Параметры микроклимата [5]

Период года

Категория работ

Зона

Температура, °C

Относит. влажность, %

Скорость движения, м/с

холдн.

Легкая

оптим.

22-24

40-60

0.1

доп.

25-18

75

<0.1

Теплый

Легкая

оптим.

23-25

40-60

0.1

доп.

28-22

55

0.1-0.2

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

5.1.4.2 Определение потребного воздухообмена (теплый период)

Влага выделяется в результате испарения со свободной поверхности воды и влажных поверхностей материалов и кожи, в результате дыхания людей и т.д. Количество влаги, выделяемое людьми, г/ч, определяется по формуле:

W=n*w (12.)

где n - число людей, n = 16 человек;

w - количество влаги, выделяемое одним человеком, г/ч, принимаем по таблице 2.24[5]

w = 82,5 г/ч при t = 22С

По формуле (1.) получаем:

W = 16 * 82,5 = 1320 (г/ч)

Теперь можно определить потребный воздухообмен:

(13.)

где W - количество водяного пара, выделяющегося в помещении, г/ч, W = 1320 г/ч;

D, d - влагосодержание вытяжного и приточного воздуха, г/кг, определяется по температуре и относительной влажности воздуха;

p - плотность приточного воздуха, р = 1.2 кг/ м3;

d = 10 г/кг при температуре рабочей зоны 22 С;

D = 16 г/кг -принимается равным предельно допустимому, т.е. при tр.з.=26 С , =75 %. Таким образом расход воздуха составит :

Теперь проведем расчет выделений тепла.

Тепловыделения от людей зависят от тяжести работы, температуры и скорости движения окружающего воздуха. Считается, что женщина выделяет 85% тепловыделений взрослого мужчины. В расчетах используется явное тепло, т. е. тепло воздействующее на изменение температуры воздуха в помещении. Тепловыделения от людей :

Qл = n * q, (14.)

где n - количество людей в помещении, 9 мужчин и 7 женщина;

q - удельная теплота , выделяемая человеком (явное тепло при t = 22 С), Вт ; q = 85 Вт; тепловыделение q определим по таблице 2.24[9].

Тогда общее тепловыделение людей:

Qл = 9 * 85 + 7* 0.85 * 85 = 1270.75 Вт.

Воздухообмен по углекислому газу.

Взрослый человек при легкой работе выделяет mCO2 =25 г/ч*чел. Тогда

МСО2=9*25+0,85*7*25=373.75 г/ч

Расчет тепла, поступающего в помещение от солнечной радиации Qост производится по формуле:

Qост = Fост * qост * Aост, (15)

где Fост - площадь поверхности остекления, м,

Fост= 9 м;

qост - тепловыделения от солнечной радиации, Вт/м, через 1 м поверхности остекления (с учетом ориентации по сторонам света), Выбирается по таблице 2.16 [9] qост = 150 Вт/м, т.е окна с двойным остеклением с металлическими переплетами; Aост - коэффициент учета характера остекления, Aост=1.15 (двойное остекление в одной раме).

Подставив все полученные значения в формулу (4.), получим:

Qост = 9 * 150 * 1.15 = 1552,5 Вт.

Расчет тепловыделений от источников искусственного освещения Qосв, Вт, производится по формуле:

Qосв = N * g * 1000 , (16.)

где N - суммарная мощность источников освещения, кВт,

N= 2 * 6 * 0.08 = 0.960 кВт

где 0.08 кВт - мощность одной лампы, а всего в помещении 6 светильников по 2 лампы в каждом;

g- коэффициент тепловых потерь, g = 0.55 для люминесцентных ламп. таблица 2.2 [10]

По формуле (5.) имеем:

Qосв = 0.96 * 0.55 * 1000 = 528 Вт.

Для расчета тепловыделений от устройств вычислительной техники используется формула (16.) с коэффициентом тепловых потерь равном = 0.5. В помещении стоят 15 компьютеров типа IBM PC с мощностью 63.5 Вт источника питания. Тогда :

Qвт = 15 * 0.0635 * 0.5 * 1000 = 476.25 Вт.

Таким образом, в помещении выделяется всего избыточного тепла:

Qизб = Qл + Qост + Qосв + Qвт = 3573.35 Вт.

При открытии дверей и окон естественный расход тепла:

Qрасх = 0.1 * Qизб = 357.335 (Вт). (17.)

По формуле (18.) посчитаем объем вентилируемого воздуха для теплого времени года:

(18.)

где Qизб - теплоизбытки, Qизб = 3827.5 Вт;

Ср - массовая удельная теплоемкость воздуха,

Ср = 1000 Дж/(кг* С);

р - плотность приточного воздуха, р = 1.2 кг/м3 ;

tуд, tпр - температуры удаляемого и приточного воздуха, С;

Температура удаляемого воздуха определяется по формуле:

tуд = tрз + а * (Н - 2),

где tрз = 22 С;

а - нарастание температуры воздуха на каждый 1 м высоты, С/м, а =0.5 С/м; [10]

Н - высота помещения, Н = 3.5 м.

Следовательно, tуд = 22 + 0.5 * (3.5 - 2) = 23 С.

Температура приточного воздуха tпр при наличии избытков тепла должна быть на 5 С ниже температуры воздуха в рабочей зоне, поэтому tпр = 17 С. Подставив полученные значения в формулу (18.) найдем:

При одновременном выделении тепла и влаги сравниваются соответствующие воздухообмены, потребные для их удаления, и выбирается наибольший. Поскольку Gт= 1913.75 м3/ч,а G = 183м3/ч,то систему вентиляции будем проектировать для воздухообмена Gвент = 1913.75 м3/ч.

K= Gт/V;

где V-объем помещения V=8*5*3.5=140,

К=1912,75/140=13,6,

5.1.4.3 Определение потребного воздухообмена (теплый период ) для допущения

Допустим, что в нашем помещении находится 6 человек, 6 ЭВМ.

Произведем расчеты для этого допущения.

W = 6 * 82,5 = 495 (г/ч)

Qл = 3* 85 + 3* 0.85 * 85 = 471.75 Вт.

МСО2=3*25+0,85*3*25=138.75 г/ч

Qост = 9 * 150 * 1.15 = 1552,5 Вт.

Qосв = 0.96 * 0.55 * 1000 = 528 Вт.

Qвт = 6 * 0.0635 * 0.5 * 1000 = 190,5 Вт.

Таким образом, в помещении выделяется всего избыточного тепла:

Qизб = Qл + Qост + Qосв + Qвт = 2742,75 Вт.

При открытии дверей и окон естественный расход тепла:

Qрасх = 0.1 * Qизб = 274,275 (Вт). (17.)

K= Gт/V;

где V-объем помещения V=8*5*3.5=140,

К=1371.375/140=9,7

Согласно санитарным правилам и нормам, площадь на одно рабочее место с ПЭВМ для взрослых пользователей должна составлять не менее 6,0 кв. м, а объем - не менее 20,0 куб. м.

Схемы размещения рабочих мест с ПЭВМ должны учитывать расстояния между рабочими столами с видеомониторами, которое должно быть не менее 2,0 м.

Таким образом, в рабочем помещение площадь 40 м2 должны находиться 6-ть сотрудников.

5.2 Расчет необходимого количества переносных средств пожаротушения (огнетушителей)

5.2.1 Введение

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

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

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

Для начала необходимо ознакомиться с необходимыми обозначениями и терминами.

5.2.2 Определения, обозначения и сокращения

В настоящих нормах применяются следующие термины с соответствующими определениями и сокращениями:

Заряд огнетушителя - количество огнетушащего вещества, находящегося в корпусе огнетушителя, выраженное в единицах массы или объема.

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

Обслуживание техническое - комплекс мероприятий, направленных на поддержание или восстановление работоспособного состояния огнетушителя.

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

Огнетушащее вещество (ОТВ) - вещество, обладающее физико-химическими свойствами, позволяющими создать условия прекращения горения.

Огнетушитель - переносное или передвижное устройство для тушения очага пожара за счет выпуска запасенного огнетушащего вещества (ГОСТ 12.2.047).

Огнетушитель водный (ОВ) - огнетушитель с зарядом воды или воды с добавками (ГОСТ 12.2.047).

Огнетушитель пенный - огнетушитель с зарядом водного раствора пенообразующих добавок.

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

Огнетушитель химический пенный (ОХП) - пенный огнетушитель с зарядом химических веществ, которые в момент приведения его в действие вступают в реакцию с образованием пены и избыточного давления (ГОСТ 12.2.047).

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

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

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

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

Огнетушитель комбинированный - огнетушитель с зарядом двух различных огнетушащих веществ, которые находятся в разных емкостях огнетушителя.

Огнетушитель передвижной - огнетушитель массой более 20 кг, смонтированный на колесах или на тележке.

Огнетушитель порошковый (ОП) - огнетушитель с зарядом огнетушащего порошка.

Огнетушитель с термическим элементом - огнетушитель, подача огнетушащего вещества в котором осуществляется в результате теплового воздействия на ОТВ электрического тока или продуктов химической реакции компонентов специального элемента.

Огнетушитель углекислотный (ОУ) - огнетушитель с зарядом двуокиси углерода (ГОСТ 12.2.047).

Огнетушитель хладоновый (ОХ) - огнетушитель с зарядом огнетушащего вещества на основе галоидированных углеводородов (ГОСТ 12.2.047).

Огнетушитель с эжектором - огнетушитель, подача огнетушащего вещества в котором осуществляется в результате эжекции ОТВ потоком выходящего газа.

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

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

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

Ранг очага пожара - условное обозначение сложности модельного очага пожара.

Регенерация ОТВ - восстановление первоначальных свойств ОТВ путем проведения определенных технологических операций.

Средства пожаротушения первичные - устройства, инструменты и материалы, предназначенные для локализации или тушения пожара на начальной стадии его развития (огнетушители, песок, войлок, кошма, асбестовое полотно, ведра, лопаты и др.).

5.2.3 Область применения

Настоящие нормы пожарной безопасности (введены в действие 1 марта 1998 г.) распространяются на переносные и передвижные огнетушители (общей массой до 400 кг), предназначенные для тушения пожаров классов А, B, C, Е, и устанавливают требования к выбору, размещению, техническому обслуживанию огнетушителей, а также - к техническому оснащению организаций, осуществляющих перезарядку и испытания огнетушителей.

Нормы не распространяются на не перезаряжаемые (одноразовые) огнетушители.

5.2.4 Общие положения

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

По взрывопожарной и пожарной опасности помещения и здания подразделяются на категории А, Б, В1 -- В4, Г и Д.

Категории взрывопожарной и пожарной опасности помещений и зданий определяются для наиболее неблагоприятного в отношении пожара или взрыва периода исходя из вида находящихся в аппаратах и помещениях горючих веществ и материалов, их количества и пожароопасных свойств, особенностей технологических процессов.

Для расчетов нам необходимо знать правила пожарной безопасности в Российской Федерации

5.2.4.1 Правила пожарной безопасности в Российской Федерации. ППБ-01-93.

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

Основные требования к вычислительным центрам

1. Хранилище для информации, помещения для хранения перфокарт, перфолент, магнитных лент и пакетов магнитных дисков должны располагаться в обособленных помещениях, оборудованных негорючими стеллажами и шкафами. Хранить перфокарты, перфоленты и магнитные ленты на стеллажах следует в металлических кассетах.

В машинных залах ЭВМ не разрешается устанавливать шкафы для хранения материалов и предметов.

2. Над и под машинными залами ЭВМ не допускается размещать пожароопасные и взрывоопасные помещения и склады.

3. ремонтировать блоки ЭВМ непосредственно в машинных залах не разрешается.

4. В машинных залах ЭВМ допускаются иметь в небьющейся таре не больше 0,5 л ЛВЖ для мелкого ремонта и ТО машин.

5. не разрешается оставлять без наблюдения включенную в сеть радиоэлектронную аппаратуру, используемую для испытаний и контроля ЭВМ.

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

5.2.5 Классификация огнетушителей и ОТВ

Огнетушители делятся на переносные (массой до20 кг) и передвижные (массой не менее 20, но не более 400 кг). Передвижные огнетушители могут иметь одну или несколько емкостей для зарядки ОТВ, смонтированных на тележке.

По виду применяемого огнетушащего вещества огнетушители подразделяют на:

- водные (ОВ);

- пенные, которые, в свою очередь, делятся на:

а) воздушно-пенные (ОВП);

б) химические пенные (ОХП);

- порошковые (ОП);

- газовые, которые подразделяются на:

а) углекислотные (ОУ);

б) хладоновые (ОХ);

- комбинированные.

Водные огнетушители по виду выходящей струи подразделяют на:

- огнетушители с компактной струей - ОВ(К);

- огнетушители с распыленной струей (средний диаметр капель более 100 мкм) - ОВ(Р);

- огнетушители с мелкодисперсной распыленной струей (средний диаметр капель менее 100 мкм)- ОВ(М).

Рис. 35. классификация огнетушителей

Огнетушители воздушно-пенные по параметрам формируемого ими пенного потока подразделяют на:

- низкой кратности, кратность пены от 5 до 20 включительно - ОВП(Н);

- средней кратности, кратность пены свыше 20 до 200 включительно - ОВП(С).

По принципу вытеснения огнетушащего вещества огнетушители подразделяют на:

- закачные;

- с баллоном сжатого или сжиженного газа;

- с газогенерирующим элементом;

- с термическим элементом;

- с эжектором.

По значению рабочего давления огнетушители подразделяют на огнетушители низкого давления (рабочее давление ниже или равно 2,5 МПа при температуре окружающей среды (20 ± 2) ° С) и огнетушители высокого давления (рабочее давление выше 2,5 МПа при температуре окружающей среды (20 ± 2) ° С).

По возможности и способу восстановления технического ресурса огнетушители подразделяют на:

- перезаряжаемые и ремонтируемые;

- неперезаряжаемые.

По назначению, в зависимости от вида заряженного ОТВ, огнетушители подразделяют:

- для тушения загорания твердых горючих веществ (класс пожара А);

- для тушения загорания жидких горючих веществ (класс пожара В);

- для тушения загорания газообразных горючих веществ (класс пожара С);

- для тушения загорания металлов и металлосодержащих веществ (класс пожара Д);

- для тушения загорания электроустановок, находящихся под напряжением (класс пожара Е).

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

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

Огнетушащие порошки в зависимости от классов пожара, которые ими можно потушить, делятся на:

- порошки типа АВСЕ - основной активный компонент - фосфорно-аммонийные соли;

- порошки типа ВСЕ - основным компонентом этих порошков могут быть бикарбонат натрия или калия; сульфат калия; хлорид калия; сплав мочевины с солями угольной кислоты и т. д.;

- порошки типа Д - основной компонент - хлорид калия; графит и т. д.

В зависимости от назначения порошковые составы делятся на порошки общего назначения (типа АВСЕ, ВСЕ) и порошки специального назначения (которые тушат, как правило, не только пожар класса Д, но и пожары других классов).

В качестве поверхностно-активной основы заряда воздушно-пенного огнетушителя применяют пенообразователи общего или целевого назначения. Дополнительно заряд огнетушителя может содержать стабилизирующие добавки (для повышения огнетушащей способности, увеличения срока эксплуатации, снижения коррозионной активности заряда).

По химическому составу пенообразователи подразделяют на синтетические (углеводородные и фторсодержащие) и протеиновые (фторпротеиновые).

5.2.6 Выбор огнетушителей

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

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

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

Не следует использовать порошковые огнетушители для защиты оборудования, которое может выйти из строя при попадании порошка (электронно-вычислительные машины, электронное оборудование, электрические машины коллекторного типа).

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

Запрещается применять углекислотные огнетушители для тушения пожаров электрооборудования, находящегося под напряжением выше 10 кВ.

Углекислотные огнетушители с диффузором, создающим струю ОТВ в виде снежных хлопьев, как правило, применяют для тушения пожаров класса А.

Углекислотные огнетушители с диффузором, создающим поток ОТВ в виде газовой струи, следует применять для тушения пожаров класса Е.

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

Воздушно-пенные огнетушители применяют для тушения пожаров класса А (как правило, со стволом пены низкой кратности) и пожаров класса В.

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

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

Водные огнетушители следует применять для тушения пожаров класса А.

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

Рекомендации по выбору огнетушителей для тушения пожаров различных классов приведены в табл. 17.

Определение необходимого минимального количества огнетушителей для защиты конкретного объекта производят по таблицам .

При возможности возникновения на защищаемом объекте значительного очага пожара (предполагаемый пролив горючей жидкости может произойти на площади более 1 м2) необходимо использовать передвижные огнетушители.

Допускается помещения, оборудованные автоматическими установками пожаротушения, обеспечивать огнетушителями на 50 % исходя из их расчетного количества.

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

Таблица 17

Эффективность применения огнетушителей в зависимости от класса пожара и заряженного ОТВ

ОГНЕТУШИТЕЛИ

Класс пожара

Водные

Воздушно-пенные

Порошковые

Углекислотные

Хладоновые

Р

М

Н

С

A

+++

++

++

+

++ 2)

+

+

B

-

+

+1)

++1)

+++

+

++

C

-

-

-

-

+++

-

+

D

-

-

-

-

+++ 3)

-

-

E

-

-

-

-

++

+++ 4)

++

Примечания:1) Использование растворов фторированных пленкообразующих пенообразователей повышает эффективность пенных огнетушителей (при тушении пожаров класса В) на одну-две ступени

2) Для огнетушителей, заряженных порошком типа АВСЕ

3) Для огнетушителей, заряженных специальным порошком и оснащенных успокоителем порошковой струи

4) Кроме огнетушителей, оснащенных металлическим диффузором для подачи углекислоты на очаг пожара.

Знаком +++ отмечены огнетушители, наиболее эффективные при тушении пожара данного класса; ++ огнетушители, пригодные для тушения пожара данного класса; + огнетушители, недостаточно эффективные при тушении пожара данного класса; - огнетушители, непригодные для тушения пожара данного класса.

Если на объекте возможны комбинированные очаги пожара, то предпочтение при выборе огнетушителя должно отдаваться более универсальному по области применения огнетушителю (из рекомендованных для защиты данного объекта), имеющему более высокий ранг.

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

Два или более огнетушителя, имеющие более низкий ранг, не могут заменять огнетушитель с более высоким рангом, а лишь дополняют его (исключение может быть сделано только для воздушно-пенных огнетушителей).

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

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

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

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

Расчет необходимого количества огнетушителей следует вести по каждому помещению и объекту отдельно.

При наличии рядом нескольких небольших помещений одной категории пожарной опасности количество необходимых огнетушителей определяют с учетом суммарной площади этих помещений.

Комплектование технологического оборудования огнетушителями осуществляют согласно требованиям технической документации на это оборудование или соответствующих правил пожарной безопасности.

Комплектование импортного оборудования огнетушителями производится согласно условиям договора на его поставку.

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

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

На огнетушители, заряженные одним видом ОТВ, организация (предприятие) оформляет инструкцию по применению и техническому обслуживанию, которую согласовывает с местным органом Государственной противопожарной службы. Инструкция должна содержать следующие сведения:

- марки огнетушителей;

- основные параметры огнетушителей;

- ограничения по температуре эксплуатации огнетушителей;

- действия персонала в случае пожара;

- порядок приведения огнетушителей в действие;

- основные тактические приемы работы с огнетушителями при тушении возможного пожара на защищаемом объекте;

- действия персонала после тушения пожара;

- объем и периодичность проведения технического обслуживания огнетушителей;

- правила техники безопасности при использовании и техническом обслуживании огнетушителей.

В инструкции по эксплуатации углекислотных огнетушителей должно быть указано на:

- возможность накопления зарядов статического электричества на диффузоре огнетушителя (особенно если диффузор изготовлен из полимерных материалов);

- снижение эффективности огнетушителей при отрицательной температуре окружающей среды;

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

- опасность снижения содержания кислорода в воздухе помещения в результате применения углекислотных огнетушителей (особенно передвижных);

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

В инструкции по эксплуатации хладоновых огнетушителей должно быть указано на:

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

- повышение коррозионной активности хладона при контакте с парами или каплями воды;

- возможность отрицательного воздействия хладонов на окружающую среду.

В инструкции по эксплуатации воздушно-пенных огнетушителей должно быть указано на:

- возможность замерзания рабочего раствора огнетушителей при отрицательных температурах и необходимость переноса их в зимнее время в отапливаемое помещение;

- высокую коррозионную активность заряда огнетушителя;

- необходимость ежегодной перезарядки огнетушителя с корпусом из углеродистой стали (из-за недостаточной стабильности заряда при контакте с материалом корпуса огнетушителя);

- возможность загрязнения компонентами, входящими в заряд огнетушителей, окружающей среды.

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

5.2.7 Размещение огнетушителей

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

Для размещения первичных средств пожаротушения в производственных и складских помещениях, а также на территории защищаемых объектов должны оборудоваться пожарные щиты (пункты).

В помещениях, насыщенных производственным или другим оборудованием, заслоняющим огнетушители, должны быть установлены указатели их местоположения. Указатели должны быть выполнены по ГОСТ 12.4.026 и располагаться на видных местах на высоте 2,0 - 2,5 м от уровня пола, с учетом условий их видимости.

Расстояние от возможного очага пожара до ближайшего огнетушителя определяется требованиями правил , оно не должно превышать 20 м для общественных зданий и сооружений; 30 м - для помещений категорий А, Б и В; 40 м - для помещений категорий В и Г; 70 м - для помещений категории Д.

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

Запорно-пусковое устройство огнетушителей и дверцы шкафа (в случае их размещения в шкафу) должны быть опломбированы.

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

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

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

Водные и пенные огнетушители, установленные вне помещений или в не отапливаемом помещении и не предназначенные для эксплуатации при отрицательных температурах, должны быть сняты на холодное время года (температура воздуха ниже 1°С). В этом случае на их месте и на пожарном щите должна быть помещена информация о месте нахождения огнетушителей в течение указанного периода и о месте нахождения ближайшего огнетушителя.

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

. В общественных зданиях и сооружениях на каждом этаже должны размещаться не менее двух ручных огнетушителей.

Помещения категории Д могут не оснащаться огнетушителями, если их площадь не превышает 100 м2.

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

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

5.2.8 Определение необходимого количества огнетушителей

Выбор типа и расчет необходимого количества огнетушителей следует производить в зависимости от их огнетушащей способности, предельной площади, класса пожара горючих веществ и материалов в защищаемом помещении или на объекте согласно ИСО № 3941-77:

- класс А- пожары твердых веществ, в основном органического происхождения, горения которых сопровождается тлением,

- класс В- пожары горючих жидкостей или плавящихся твердых веществ.

- класс С- пожары газов,

- класс Д- пожары металлов и их сплавов,

- класс (Е)- пожары, связанные с горением электроустановок.

Таблица 18

Нормы оснащения помещений переносными огнетушителями

Категория помещения (по НПБ 105-95)

Предельная защищаемая площадь, м2

Класспожара

Пенные и водные огнетушители вместимостью 10 л

Порошковыеогнетушителивместимостью, л

Хладоновые огнетушители вместимостью

Углекислотные огнетушители вместимостью, л

2

5

10

2 (3) л

2

5 (8)

А,Б,В (горючие газы и жидкости)

200

А

В

С

Д

Е

2++

4+

-

-

-

-

-

-

-

-

2+

2+

2+

2+

2+

1++

1++

1++

1++

1++

-

4+

4+

-

-

-

-

-

-

-

-

-

-

-

2++

В

400

А

Д

Е

2++

-

-

4+

-

-

2++

2+

2++

1+

1++

1+

-

-

2+

-

-

4+

2+

-

2++

Г

800

В

С

2+

-

-

4+

2++

2++

1+

1+

-

-

-

-

-

-

Г, Д

1800

А

Д

Е

2++

-

-

4+

-

2+

2++

2+

2++

1+

1++

1+

-

-

2+

-

-

4+

-

-

2++

Общественные здания

800

А

Е

4++

-

8+

-

4++

4++

2+

2+

-

4+

-

4+

4+

2++

Примечания:

1. Для тушения очагов пожаров различных классов порошковые огнетушители должны иметь соответствующие заряды: для класса А - порошок типа АВСЕ; для классов В, С и Е - типа ВСЕ или АВСЕ и для класса Д -типа Д.

2. Знаком ++ отмечены рекомендуемые к оснащению объектов огнетушители; знаком + огнетушители, применение которых допускается при отсутствии рекомендуемых или при соответствующем обосновании; знаком - огнетушители, которые не допускаются для оснащения данных объектов.

3. В замкнутых помещениях объемом не более 50 м2 для тушения пожаров вместо переносных огнетушителей, или дополнительно к ним, могут быть использованы огнетушители самосрабатывающие порошковые.

Для предельной площади помещений разных категорий (максимальной площади, защищаемой одним или группой огнетушителей) необходимо предусматривать число огнетушителей одного из типов, указанное в табл. 1 или 2 перед знаком ++ или +.

Таблица 19

Нормы оснащения помещений передвижными огнетушителями

Категория помещения

Предельная защищаемая площадь, м2

Класс пожара

Воздушно-пенные огнетушители вместимостью 100 л

Комбинированные огнетушители (пена-порошок) вместимостью 100 л

Порошковые огнетушители вместимостью

Углекислотные огнетушители вместимостью, л

100 л

25

80

А, Б, В (горючие газы и жидкости)

500

А

В

С

Д

Е

1++

2+

-

-

-

1++

1++

1+

-

-

1++

1++

1++

1++

1+

-

-

-

-

2+

3+

3+

3+

-

1++

В (кроме горючих газов и жидкостей), Г

800

А

В

С

Д

Е

1++

2+

-

-

-

1++

1++

1+

-

-

1++

1++

1++

1++

1+

4+

-

-

-

1++

2+

3+

3+

-

1+

Примечания:

1. Для тушения очагов пожара различных классов порошковые огнетушители должны иметь соответствующие заряды: для класса А - порошок типа АВСЕ; для классов В, С и Е - типа ВСЕ или АВСЕ и для класса Д - типа Д

2. Знаком ++ отмечены рекомендуемые к оснащению объектов огнетушители; знаком + огнетушители, применение которых допускается при отсутствии рекомендуемых или при соответствующем обосновании; знаком - огнетушители, которые не допускаются для оснащения данных объектов.

5.2.9 Расчет необходимого числа огнетушителей

Помещение - компьютерная аудитория 1313

Площадь помещение 40 м2

В аудитории расположено по периметру 15 компьютеров.

Рис. 36. Помещение (аудитория)

Этот тип помещения следует оборудовать хладовыми и углекислотными огнетушителями с учетом предельной допустимой концентрацией огнетушащего вещества.

Если на помещение площадью 800 м2 требуется 1 углекислотный передвижной огнетушитель для пожара класса Е и 2 углекислотного передвижного огнетушителя для пожара класса А.

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

На помещение площадью 800 м2 требуется, вместимостью 25 литров 2 углекислотных передвижных огнетушителей.

Если на помещение площадью 800 м2 требуется 2 углекислотных ручных огнетушителей вместимостью 5 литров для пожара класс Е и 4 углекислотных ручных огнетушителей вместимостью 5 литров для пожара класса А.

Расчетное число огнетушителей (ручных)=2*40/800=0.1, значит, в этом помещении должен быть 1 ручной углекислотный огнетушитель вместимостью 5 литра для пожара класса Е.

Расчетное число огнетушителей (ручных)=4*40/800=0.2, значит, в этом помещении должен быть 1 ручной углекислотный огнетушитель вместимостью 5 литра для пожара класса А.

На помещение площадью 40 м2 требуется 1 ручной углекислотный огнетушитель вместимостью 5 литра.

имитационный железный дорога информация

СПИСОК ЛИТЕРАТУРЫ

1. Техническая документация НИАЦа

2. Г.В. Дружинин, И.В. Сергеева. «Качество информации»

3. Лекции по «Маркетингу на транспорте» преподаватель Ефимова О.В.

4. СниП 2.04.05-68 “Отопление, вентиляция и кондиционирование воздуха”

5. Р.В. Щекин “Справочник по теплогазоснабжению и вентиляции” часть 2

6 В.Н. Богославский “Отопление и вентиляция” часть 2

7. И.Р. Староверов. Справочник проектировщика “Вентиляция и кондиционирование воздуха”

8. Р.В. Русланов “Отопление и вентиляция жилых и общественных зданий”

9. В.П. Титов “Курсовое и дипломное проектирование по вентиляции”

10. О.Д. Волков “Проектирование вентиляции промышленного здания”

11. Правила пожарной безопасности в Российской Федерации (ППБ-01-93).

12. Применение огнетушителей в производственных, складских и общественных зданиях и сооружениях: Рекомендации/ Навценя Н.В., Исавнин Н.В., Матюшин А.В. и др. - М.: ВНИИПО, 1986. - 31 с.

13. Рекомендации по проектированию, созданию и оснащению пунктов технического обслуживания и ремонта переносных порошковых огнетушителей / Зозуля И.И., Коваленко В.В., Мельниченко И.М., Гром В.В. - Киев: КФ ВНИИПО, 1985. - 33 с.

14. Тактика тушения электроустановок, находящихся под напряжением: Рекомендации. - М.: ВНИИПО, 1986. - 16 с.

ПРИЛОЖЕНИЕ 1

Таблица 20

Перечень первичных факторов Имитационной модели работы железной дороги (многофакторной модели расчета эксплуатационных расходов)

№ п./п.

Наименование показателя (фактора)

Единицы измерения

Обозначения

Грузовые перевозки

Отправление грузов

тыс. тонн

P

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

тонн

Pгр.

Отношение порожнего пробега вагонов к груженому по видам тяги

%

пор.гр

Средняя техническая скорость движения поездов по видам тяги

км/час

Vт.

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

час

tгр.

Cреднее время простоя вагона под одной технической операцией с переработкой

час

tтр.пер.

Cреднее время простоя вагона под одной технической операцией без переработки

час

tтр.б.п.

Груженый рейс вагона

км

Rгр.

Вагонное плечо

км

Lв.

Время оборота вагона в части простоев на технических станциях

час

тех.

Коэффициент местной работы

ед.

kм.

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

км

L

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

тонн

Отношение суммы погруженных и выгруженных тонн грузов к общей величине перевезенных тонн грузов;

м.

Средняя масса тары вагона по видам тяги

тонн

Средний состав грузового поезда

ваг.

Среднесуточный пробег локомотива по видам тяги

км

Sл.

Пробег сборных поездов по видам тяги

лок-км

NS1

Пробег грузовых поездов по видам тяги

лок-км

NS2

Масса локомотива

тонн

Норма затрат маневровых локомотиво-часов на 1000 вагоно-километров грузовых вагонов

лок-час / км

B

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

ед.

Отношение вспомогательного линейного пробега локомотивов к пробегу во главе поездов по видам тяги

ед.

лин.

Участковая скорость движения сборных поездов по видам тяги

км/час

Vуч.сб.

Пассажирские перевозки

Дальнее следование

Отправление пассажиров в дальнем сообщении

тыс. чел.

P

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

чел.

Pн.

Среднесуточный пробег локомотивов по видам тяги

Км

Sл.

Средняя техническая скорость по видам тяги

км/час

Vt

Масса локомотива

Норма расхода электроэнергии (топлива) на тягу поездов

квт*ч (кг) на 10000 т-км брутто

a e(t)

Норма затрат маневровых локомотиво-часов на 1 поездо-км в пассажирском движении

A

Средняя дальность поездки пассажира в дальнем следовании

Км

lп.

Средняя масса пассажирского вагона по видам тяги

тонн

Средний состав пассажирского поезда по видам тяги

Ваг.

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

ед.

Отношение вспомогательного линейного пробега локомотивов к пробегу во главе поездов по видам тяги

ед.

лин

Пригородное сообщение

Отправление пассажиров в пригородном сообщении

тыс.чел.

P

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

Чел.

Pн.

Среднее количество вагонов в составе одной секции по видам тяги

Ваг.

Среднесуточный пробег секции по видам тяги

Км.

Sс.

Среднее количество секций в составе поезда по видам тяги

секций

Масса брутто одной секции по видам тяги

тонн

qбр.

Норма расхода электроэнергии (топлива) на 10000 ткм брутто

квт*ч (кг) на 10000 т-км брутто

a e(t)

Средняя дальность поездки одного пассажира в пригородном сообщении

км.

lпр.

Средняя техническая скорость по видам тяги

км/час

Vт.

Вспомогательные факторы

Эксплуатационная длина

км

Развернутая длина станционных путей

км

Эксплутационная длина электрифицированных линий

км

Развернутая длина контактной сети

км

Эксплутационная длина участков с автоблокировкой

Км

Парк электровозов(инвентарный)

ед.

Парк тепловозов(инвентарный)

ед.

Вагонный парк (инвентарный)

ед.

Парк МВС(инвентарный)

ед.

Парк дизель-поездов(инвентарный)

ед.

Индекс цен на материалы (индекс цен производителей промышленной продукции)

%

Индекс роста заработной платы (индекс потребительских цен)

%

Индекс цен на электроэнергию

%

Ieln

Индекс цен на топливо

%

Itopl

Индекс стоимости основных средств

%

ПРИЛОЖЕНИЕ 2

Таблица 21

Методика расчета калькуляционных измерителей

№№

п/п

Измеритель

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

Вагоно-километры (раздельно по видам тяги)

nS = PL*(1+пор.гр.)/Pгр.

Вагоно-часы (раздельно по видам тяги)

nH = nS*24/Sв.

Поездо-часы сборных поездов (раздельно по видам тяги)

Nh=NS*сб./vуч. сб.

Локомотиво-километры (раздельно по видам тяги)

MS = NS*(1+)

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

MH = MSл/vуч. лок.

Локомотиво-часы (раздельно по видам тяги)

MH = MSл*24/ Sл.

Тонно-километры брутто вагонов и локомотивов (раздельно по видам тяги)

PLбр = PL + qт*nS + Pл* MSл

Расход электроэнергии (топлива)

E(T) = PLбрв*a e(t)/10000

Локомотиво-часы специальных маневровых локомотивов (раздельно по видам тяги)

MHман. =b*nS/1000

Количество грузовых отправок (раздельно по видам тяги)*

O = PL*м./l/Pо

Отправленные вагоны (раздельно по видам тяги)*

N=PL*м./l/Pст.

Вспомогательные измерители

Маршрутное плечо

Lм.= (Rп.*tтр.пер.-

- Rп.*tтр.б.п.+Rп.*tтр.б.п./Lв.) /

/тех.

Тонно-километры брутто вагонов (раздельно по видам тяги)

PLбрв = PL+ qт*nS

Тарифный грузооборот по данному виду тяги

PLт = P*l*pl/м.

Эксплуатационный грузооборот по данному виду тяги

PL = PLт* kpl

Рабочий парк грузовых вагонов***

nр = nH/t/24

Эксплуатируемый парк локомотивов***

Mэ = MH/t/24

Поездо-километры (раздельно по видам тяги)

NS= PLбрв/Qбр.

Масса поезда брутто (раздельно по видам тяги)

Qбр.=mс(qт+ Pгр./(1+пор.гр.))

Доля сборных поездов в общем поездном пробеге (раздельно по видам тяги)

сб.= NS1/NS2

Локомотиво-километры линейного пробега (раздельно по видам тяги)

MSл. = NS*(1+л.)

Коэффициент разрыва тарифного и эксплуатационного грузооборота (раздельно по видам тяги)

kpl = PL/ PLт

Продолжение таблицы 21

Средняя дальность перевозки 1 т груза (в среднем по видам тяги)**

L= PLт/P

Статическая нагрузка вагона (раздельно по видам тяги)

Pст. = Pгр.* Rгр./(l*kpl)

Полный рейс вагона (раздельно по видам тяги)

Rп= Rгр*(1+пор.гр.)

Таблица 22

Методика расчета калькуляционных измерителей. Пассажирские перевозки (дальнее следование)

№№

п/п

Измеритель

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

Вагоно-километры

Ns = PL/Pн.

Вагоно-часы

Nh = nS*24/Sв.

Вагоно-часы в движении

Nh= nS/vм.

Локомотиво-километры общего пробега

MS = NS*(1+всп.гл.)

Локомотиво-часы на участке

MH = MSл/vуч. лок.

Локомотиво-часы

MH = MSл*24/Sл.

Тонно-километры брутто вагонов и локомотивов

PLбр = PLбрв + Pл*MSл

Расход электроэнергии (топлива)

E(T) = PLбрв*a e(t)/10000

Локомотиво-часы специальных маневровых локомотивов

MHман. =a*NS

Количество отправленных пассажиров

Пдо = PL/lп.

Вспомогательные измерители

Пассажирооборот по данному виду тяги

PL = P*lп.*pl

Тонно-километры брутто вагонов

PLбрв = qт*nS+0,1*Pн.*nS

Поездо-километры

NS= nS /mс.

Маршрутная скорость движения поездов

vм.=0,9* Vу

Локомотиво-километры линейного пробега

MSл = NS*(1+лин.гл.)

Среднесуточный пробег пассажирского вагона

Sв.= nS/nр./365

Таблица 23

Методика расчета калькуляционных измерителей. Пассажирские перевозки (пригородное сообщение)

№№ п/п А

Измеритель Б

Формула расчета величины измерителя 1

Секцие-километры

NS = PL/Pн./nс

Секцие-часы

NH = NS*24/Sс.

Секцие-часы на участке

Mh = NS /vуч

Тонно-километры брутто

PLбр = qбр.* NS+0,1*PL

Расход электроэнергии (топлива)

E(T) = PLбр*a e(t)/10000

6.

Количество отправленных пассажиров

Ппро = PL/lпр.

Вспомогательные измерители

Пассажирооборот по данному виду тяги

PL = P*lпр..*pl

Эксплуатируемый парк секций МВС (дизель-поездов)

Nэ = NH/t/24

ПРИЛОЖЕНИЕ 3

3.1 Листинг модуля Factor1, для извлечения первичных факторов

/*программа основная, главный модуль, подключается к первому

фрейму*/

/*создана студенткой Андрейчевой Е.Д.*/

/*группа уаи-511*/

data kat.var1; /*корирование данных из реф в свою библиоиотеку*/

set ref.var(keep=var_id name);

name=upcase(name);

name=compbl(name);

run;

data kat.var1; /* исправление ошибок */

set kat.var1;

name=tranwrd(name,'/ ЗАТРАТЫ НАОПЛАТУ ТРУДА /','/ ЗАТРАТЫ

НА ОПЛАТУ ТРУДА /');

name=tranwrd(name,'ВАГОНО-КМ','ВАГОНО-КИЛОМЕТРЫ');

name=tranwrd(name,'СР-СУТ.ПРОБЕГ ГР.ВАГ.','СРЕДНЕСУТОЧНЫЙ

ПРОБЕГ ГРУЗОВОГО ВАГОНА');

name=tranwrd(name,'Тех.','Техническое');

name=tranwrd(name,'обслуж.','обслуживание');

name=tranwrd(name,'Обслуж.','обслуживание');

name=tranwrd(name,'текущ.','текущий');

name=tranwrd(name,'ТЕХ.','ТЕХНИЧЕСКОЕ');

name=tranwrd(name,'ОБСЛУЖ.','ОБСЛУЖИВАНИЕ');

name=tranwrd(name,'ТЕКУЩ.','ТЕКУЩИЙ');

name=tranwrd(name,'КАП.','КАПИТАЛЬНЫЙ');

name=tranwrd(name,'Т.Д.','Т Д');

name=tranwrd(name,'ПРОИЗВ.ТРУДА','ПРОИЗВОДИТЕЛЬНОСТЬ

ТРУДА');

name=tranwrd(name,'ПРОИЗВОД.ТРУДА ','ПРОИЗВОДИТЕЛЬНОСТЬ

ТРУДА ');

name=tranwrd(name,'СРЕДНЯЯТЕХНИЧЕСКАЯ','СРЕДНЯЯ

ТЕХНИЧЕСКАЯ');

name=tranwrd(name,'ЭКСПЛ.','ЭКСПЛУАТАЦИОННЫЕ');

name=tranwrd(name,'(СТ. ','(СТ.');

name=tranwrd(name,'(СТ ','(СТ.');

name=tranwrd(name,'Ж. Д.','ЖЕЛЕЗНОЙ ДОРОГИ');

name=tranwrd(name,'ПАССА-ЖИРСКИХ','ПАССАЖИРСКИХ');

name=tranwrd(name,'УПРАВ.','УПРАВЛЕНИЯ');

name=tranwrd(name,'ДОЛЯПАССАЖИРООБОРОТА','ДОЛЯ

ПАССАЖИРООБОРОТА');

run;

/*выбор первичных факторов по названию */

data kat.var_fact;

set kat.var1 ;

qwe=index(upcase(name),upcase('НОРМА РАСХОДА

ЭЛЕКТРОЭНЕРГИИ НА 10000 ТКМ БРУТТО'));

qwer=index(upcase(name),upcase('СРЕДНЯЯ ДАЛЬНОСТЬ

ПЕРЕВОЗКИ '));

qwer1=index(upcase(name),upcase('ДИНАМИЧЕСКАЯ НАГРУЗКА

ГРУЖЕНОГО ВАГОНА'));

qwer2=index(upcase(name),upcase('ОТНОШЕНИЕ ПОРОЖНЕГО

ПРОБЕГА ВАГОНОВ К ГРУЖЕНОМУ'));

qwer3=index(upcase(name),upcase('СРЕДНЕСУТОЧНЫЙ ПРОБЕГ

ГРУЗОВОГО ВАГОНА'));

qwer4=index(upcase(name),upcase('СРЕДНЯЯ ТЕХНИЧЕСКАЯ

СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ'));

qwer5=index(upcase(name),upcase('СРЕДНЯЯ УЧАСТКОВАЯ

СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ'));

qwer6=index(upcase(name),upcase('УЧАСТКОВАЯ СКОРОСТЬ

ЛОКОМОТИВОВ'));

qwer7=index(upcase(name),upcase('УЧАСТКОВАЯ СКОРОСТЬ

ДВИЖЕНИЯ СБОРНЫХ ПОЕЗДОВ'));

qwer8=index(upcase(name),upcase('СРЕДНЕЕ ВРЕМЯ ПРОСТОЯ

ВАГОНА ПОД 1 ГРУЗОВОЙ ОПЕРАЦИЕЙ'));

qwer9=index(upcase(name),upcase('СРЕДНЕЕ ВРЕМЯ ПРОСТОЯ ПОД

ОДНОЙ ТЕХНИЧЕСКОЙ ОПЕРАЦИЕЙ С ПЕРЕРАБОТКОЙ'));

qwer10=index(upcase(name),upcase('СРЕДНЕЕ ВРЕМЯ ПРОСТОЯ ПОД

ОДНОЙ ТЕХНИЧЕСКОЙ ОПЕРАЦИЕЙ БЕЗ ПЕРЕРАБОТКИ'));

qwer11=index(upcase(name),upcase('ГРУЖЕНЫЙ РЕЙС ВАГОНА'));

qwer12=index(upcase(name),upcase('ВАГОННОЕ ПЛЕЧО'));

qwer13=index(upcase(name),upcase('ВРЕМЯ ОБОРОТА ВАГОНА В

ЧАСТИ ПРОСТОЕВ НА ТЕХНИЧЕСКИХ СТАНЦИЯХ'));

qwer14=index(upcase(name),upcase('КОЭФФИЦИЕНТ МЕСТНОЙ

РАБОТЫ'));

qwer15=index(upcase(name),upcase('СРЕДНЯЯ МАССА ОДНОЙ

ГРУЗОВОЙ ОТПРАВКИ'));

qwer16=index(upcase(name),upcase('ОТНОШЕНИЕ СУММЫ

ПОГРУЖЕННЫХ ТОНН ГРУЗОВ К ОБЩЕЙ ВЕЛИЧИНЕ

ПЕРЕВЕЗЕННЫХ ТОНН ГРУЗОВ'));

qwer17=index(upcase(name),upcase('СРЕДНЯЯ МАССА ТАРЫ

ВАГОНА'));

qwer18=index(upcase(name),upcase('СРЕДНИЙ СОСТАВ ГРУЗОВОГО

ПОЕЗДА'));

qwer19=index(upcase(name),upcase('СРЕДНЕСУТОЧНЫЙ ПРОБЕГ

ЛОКОМОТИВА'));

qwer20=index(upcase(name),upcase('ПРОБЕГ СБОРНЫХ ПОЕЗДОВ'));

qwer21=index(upcase(name),upcase('ПРОБЕГ ГРУЗОВЫХ ПОЕЗДОВ'));

qwer22=index(upcase(name),upcase('МАССА ЛОКОМОТИВА'));

qwer23=index(upcase(name),upcase('ОТНОШЕНИЕ

ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ

ВО ГЛАВЕ ПОЕЗДОВ'));

qwer24=index(upcase(name),upcase('ОТНОШЕНИЕ

ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ

К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ'));

qwer25=index(upcase(name),upcase('ОТПРАВЛЕНО ПАССАЖИРОВ В

ДАЛЬНЕМ СЛЕДОВАНИИ'));

qwer26=index(upcase(name),upcase('НАСЕЛЕННОСТЬ

ПАССАЖИРСКОГО ВАГОНА В ДАЛЬНЕМ СЛЕДОВАНИИ'));

qwer27=index(upcase(name),upcase('СРЕДНЕСУТОЧНЫЙ ПРОБЕГ

ПАССАЖИРСКОГО ВАГОНА'));

qwer28=index(upcase(name),upcase('СРЕДНЕСУТОЧНЫЙ ПРОБЕГ

ЛОКОМОТИВОВ '));

qwer29=index(upcase(name),upcase('СРЕДНЯЯ ТЕХНИЧЕСКАЯ

СКОРОСТЬ'));

qwer30=index(upcase(name),upcase('МАССА ЛОКОМОТИВА'));

qwer31=index(upcase(name),upcase('СРЕДНЯЯ УЧАСТКОВАЯ

СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ '));

qwer32=index(upcase(name),upcase('НОРМА ЗАТРАТ МАНЕВРОВЫХ

ЛОКОМОТИВО-ЧАСОВ'));

qwer33=index(upcase(name),upcase('СРЕДНЯЯ ДАЛЬНОСТЬ ПОЕЗДКИ

ПАССАЖИРА В ДАЛЬНЕМ СЛЕДОВАНИИ'));

qwer34=index(upcase(name),upcase('СРЕДНЯЯ МАССА

ПАССАЖИРСКОГО ВАГОНА'));

qwer35=index(upcase(name),upcase('СРЕДНИЙ СОСТАВ

ПАССАЖИРСКОГО ПОЕЗДА'));

qwer36=index(upcase(name),upcase('ОТПРАВЛЕНО ПАССАЖИРОВ В

ПРИГОРОДНОМ СООБЩЕНИИ'));

qwer37=index(upcase(name),upcase('НАСЕЛЕННОСТЬ

ПАССАЖИРСКОГО ВАГОНА'));

qwer38=index(upcase(name),upcase('СРЕДНЕЕ КОЛИЧЕСТВО

ВАГОНОВ В СОСТАВЕ ОДНОЙ СЕКЦИИ'));

qwer39=index(upcase(name),upcase('СРЕДНЕСУТОЧНЫЙ ПРОБЕГ

СЕКЦИИ'));

qwer40=index(upcase(name),upcase('СРЕДНЕЕ КОЛИЧЕСТВО

СЕКЦИЙ В СОСТАВЕ ПОЕЗДА'));

qwer41=index(upcase(name),upcase('МАССА БРУТТО ОДНОЙ

СЕКЦИИ '));

qwer42=index(upcase(name),upcase('НОРМА РАСХОДА'));

qwer43=index(upcase(name),upcase('СРЕДНЯЯ ДАЛЬНОСТЬ ПОЕЗДКИ

ОДНОГО ПАССАЖИРА В ПРИГОРОДНОМ СООБЩЕНИИ'));

qwer44=index(upcase(name),upcase('СРЕДНЯЯ ТЕХНИЧЕСКАЯ

СКОРОСТЬ '));

qwer45=index(upcase(name),upcase('ЭКСПЛУАТАЦИОННАЯ

ДЛИНА'));

qwer46=index(upcase(name),upcase('РАЗВЕРНУТАЯ ДЛИНА

СТАНЦИОННЫХ ПУТЕЙ'));

qwer47=index(upcase(name),upcase('ЭКСПЛУТАЦИОННАЯ ДЛИНА

ЭЛЕКТРИФИЦИРОВАННЫХ ЛИНИЙ'));

qwer48=index(upcase(name),upcase('РАЗВЕРНУТАЯ ДЛИНА

КОНТАКТНОЙ СЕТИ'));

qwer49=index(upcase(name),upcase('ЭКСПЛУТАЦИОННАЯ ДЛИНА

УЧАСТКОВ С АВТОБЛОКИРОВКОЙ'));

qwer50=index(upcase(name),upcase('ПАРК ЭЛЕКТРОВОЗОВ

(ИНВЕНТАРНЫЙ)'));

qwer51=index(upcase(name),upcase('ПАРК ТЕПЛОВОЗОВ

(ИНВЕНТАРНЫЙ)'));

qwer52=index(upcase(name),upcase('ВАГОННЫЙ ПАРК'));

qwer53=index(upcase(name),upcase('ПАРК МВС'));

qwer54=index(upcase(name),upcase('ПАРК ДИЗЕЛЬ-ПОЕЗДОВ'));

qwer55=index(upcase(name),upcase('СТОИМОСТЬ 1-ГО КВТ

ЭЛЕКТРОЭНЕРГИИ'));

qwer56=index(upcase(name),upcase('СТОИМОСТЬ 1 ТОННЫ

УСЛОВНОГО ТОПЛИВА'));

qwer57=index(upcase(name),upcase('СРЕДНЕСПИСОЧНАЯ

ЧИСЛЕННОСТЬ РАБОТНИКОВ '));

qwer58=index(upcase(name),upcase('СРЕДНЯЯ ЗАРАБОТНАЯ

ПЛАТА'));

qwer59=index(upcase(name),upcase('ИНДЕКС ИЗМЕНЕНИЯ ЦЕН НА

ПОТРЕБЛЯЕМЫЕ ЖЕЛЕЗНОДОРОЖНЫМ ТРАНСПОРТОМ

РЕСУРСЫ'));

qwer60=index(upcase(name),upcase('УЧАСТКОВАЯ СКОРОСТЬ

ДВИЖЕНИЯ ПРИГОРОДНЫХ ПОЕЗДОВ'));

if qwer ne 0 AND QWE=0 OR QWER1 NE 0 or qwer2 ne 0 or qwer3 ne 0

or qwer4 ne 0

or qwer5 ne 0 or qwer6 ne 0 or qwer7 ne 0 or qwer8 ne 0 or qwer9 ne 0 or

qwer10 ne 0

or qwer11 ne 0 or qwer12 ne 0 or qwer13 ne 0 or qwer14 ne 0 or qwer15 ne 0 or qwer16 ne 0

or qwer17 ne 0 or qwer18 ne 0 or qwer19 ne 0 or qwer20 ne 0 or qwer21 ne 0 or qwer22 ne 0

or qwer23 ne 0 or qwer24 ne 0 or qwer25 ne 0 or qwer26 ne 0 or qwer27 ne 0 or qwer28 ne 0

or qwer29 ne 0 or qwer30 ne 0 or qwer31 ne 0 or qwer32 ne 0 or qwer33 ne 0 or qwer34 ne 0

or qwer35 ne 0 or qwer36 ne 0 or qwer37 ne 0 or qwer38 ne 0 or qwer39 ne 0 or qwer40 ne 0

or qwer41 ne 0 or qwer42 ne 0 or qwer43 ne 0 or qwer44 ne 0 or qwer45 ne 0 or qwer46 ne 0

or qwer47 ne 0 or qwer48 ne 0 or qwer49 ne 0 or qwer50 ne 0 or qwer51 ne 0 or qwer52 ne 0

or qwer53 ne 0 or qwer54 ne 0 or qwer55 ne 0 or qwer56 ne 0 or qwer57 ne 0 or qwer58 ne 0

or qwer59 ne 0 or qwer60 ne 0;

keep name var_id;

run;

data kat.var_fact; /*удаление лишних факторов*/

set kat.var_fact;

qwer60=index(upcase(name),upcase('(ДОП.ПОК.)'));

if qwer60=0;

drop qwer60;

run;

proc sort data=kat.var_fact;

by name;

run;

/*замена в названиях*/

data kat.var_fact1;

set kat.var_fact;

name=tranwrd(name,'ВАГОННЫЙ ПАРК ПАССАЖИРСКИЙ (ИНВЕНТАРНЫЙ)','ВАГОННЫЙ ПАРК (ИНВЕНТАРНЫЙ)');

var_id=tranwrd(var_id,35040,16610);

name=tranwrd(name,'ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ / ЭЛЕТКРОВОЗЫ/ГРУЗ.ДВ.','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (ГРУЗОВОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ / ЭЛЕКТРОВОЗЫ/ПАСС.ДВ.','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ / ТЕПЛОВОЗЫ/ГРУЗ.ДВ.','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (ГРУЗОВОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ / ТЕПЛОВОЗЫ/ПАСС.ДВ.','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ЛИНЕЙНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ / ТЕПЛОВОЗЫ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ)','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ / ЭЛЕКТРОВОЗЫ (ПАСАЖИРСКОЕ ДВИЖЕНИЕ)','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ОТНОШЕНИЕ СУММЫ ПОГРУЖЕННЫХ ТОНН ГРУЗОВ К ОБЩЕЙ ВЕЛИЧИНЕ ПЕРЕВЕЗЕННЫХ ТОНН ГРУЗОВ','ОТНОШЕНИЕ СУММЫ ПОГРУЖЕННЫХ И ВЫГРУЖЕННЫХ ТОНН ГРУЗОВ К ОБЩЕЙ ВЕЛИЧИНЕ ПЕРЕВЕЗЕННЫХ ТОНН ГРУЗОВ');

name=tranwrd(name,'ПРОБЕГ СБОРНЫХ ПОЕЗДОВ (ЭЛЕКТРОТЯГА)','ПРОБЕГ СБОРНЫХ ПОЕЗДОВ / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ПРОБЕГ СБОРНЫХ ПОЕЗДОВ (ТЕПЛОТЯГА)','ПРОБЕГ СБОРНЫХ ПОЕЗДОВ / ТЕПЛОВОЗЫ');

name=tranwrd(name,'СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВА В ДАЛЬНЕМ СЛЕДОВАНИИ (ТЕПЛОВОЗНАЯ ТЯГА)','СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВОВ В ДАЛЬНЕМ СЛЕДОВАНИИ / ТЕПЛОВОЗЫ');

name=tranwrd(name,'СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВА В ДАЛЬНЕМ СЛЕДОВАНИИ (ЭЛЕКТРОВОЗЫ)','СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВОВ В ДАЛЬНЕМ СЛЕДОВАНИИ / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВА В ГРУЗОВОМ ДВИЖЕНИИ (ТЕПЛОВОЗЫ)','СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВА (В ГРУЗОВОМ ДВИЖЕНИИ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВА В ГРУЗОВОМ ДВИЖЕНИИ (ЭЛЕКТРОВОЗЫ)','СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ЛОКОМОТИВА (В ГРУЗОВОМ ДВИЖЕНИИ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'СРЕДНИЙ СОСТАВ ГРУЗОВОГО ПОЕЗДА /ТЕПЛОВОЗЫ','СРЕДНИЙ СОСТАВ ГРУЗОВОГО ПОЕЗДА / ТЕПЛОВОЗЫ');

name=tranwrd(name,'СРЕДНЯЯ ДАЛЬНОСТЬ ПЕРЕВОЗКИ ГРУЗОВ','СРЕДНЯЯ ДАЛЬНОСТЬ ПЕРЕВОЗКИ 1 Т ГРУЗА');

name=tranwrd(name,'СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ,ИСКЛ.ЛОКОМОТИВЫ ОДИНОЧНОГО СЛЕДОВАНИЯ,КМ/ЧАС,ТЕПЛОВОЗЫ','СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ / ТЕПЛОВОЗЫ');

name=tranwrd(name,'СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ,ИСКЛ.ЛОКОМОТИВЫ ОДИНОЧНОГО СЛЕДОВАНИЯ,КМ/ЧАС,ЭЛЕКТРОВОЗЫ','СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ ПОЕЗДА В ПАССАЖИРСКОМ ДВИЖЕНИИ / ЭЛЕКТРОВОЗЫ (ДАЛЬНЕЕ СЛЕДОВАНИЕ)','СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ В ПАССАЖИРСКОМ ДВИЖЕНИИ (ДАЛЬНЕЕ СЛЕДОВАНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ ПОЕЗДА В ПАССАЖИРСКОМ ДВИЖЕНИИ/ ТЕПЛОВОЗЫ','СРЕДНЯЯ ТЕХНИЧЕСКАЯ СКОРОСТЬ В ПАССАЖИРСКОМ ДВИЖЕНИИ (ДАЛЬНЕЕ СЛЕДОВАНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'ЭКСПЛУТАЦИОННАЯ ДЛИНА УЧАСТКОВ С АВТОБЛОКИРОВКОЙ','ЭКСПЛУАТАЦИОННАЯ ДЛИНА УЧАСТКОВ С АВТОБЛОКИРОВКОЙ');

name=tranwrd(name,'СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ПАССАЖИРСКОГО ВАГОНА - ВСЕГО','СРЕДНЕСУТОЧНЫЙ ПРОБЕГ ПАССАЖИРСКОГО ВАГОНА');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ГРУЗОВОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ','УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ГРУЗОВОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ГРУЗОВОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ','УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ГРУЗОВОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ','УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ','УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ОТПРАВЛЕНО ПАССАЖИРОВ В ДАЛЬНЕМ СЛЕДОВАНИИ','ОТПРАВЛЕНИЕ ПАССАЖИРОВ В ДАЛЬНЕМ СООБЩЕНИИ');

name=tranwrd(name,'ОТПРАВЛЕНО ПАССАЖИРОВ В ПРИГОРОДНОМ СООБЩЕНИИ','ОТПРАВЛЕНИЕ ПАССАЖИРОВ В ПРИГОРОДНОМ СООБЩЕНИИ');

if name ne 'МАССА БРУТТО ОДНОЙ СЕКЦИИ / АВТОМОТРИСЫ' and var_id~=13060 and var_id~=200255

and var_id~=13070 and var_id~=200256 and var_id~=13090 and var_id~=13080 and var_id~=37470

and var_id~=12040 and var_id~=12070 and var_id~=12130 and var_id~=12140 and var_id~=12110

and var_id~=12120 and var_id~=12100 and var_id~=13210 and var_id~=13220 and var_id~=13200

and var_id~=13230 and var_id~=20880 and var_id~=12995 and var_id~=21120 and var_id~=22690

and var_id~=21110 and var_id~=22705 and var_id~=21125 then output;

run;

data kat.var_fact1;

set kat.var_fact1;

if var_id=37610 then name='НАСЕЛЕННОСТЬ ПАССАЖИРСКОГО ВАГОНА В ПРИГОРОДНОМ СООБЩЕНИИ / ДИЗЕЛЬ-ПОЕЗДА';

if var_id=37600 then name='НАСЕЛЕННОСТЬ ПАССАЖИРСКОГО ВАГОНА В ПРИГОРОДНОМ СООБЩЕНИИ / МВС';

run;

/*вывод отдельных первичных факторов*/

DATA VAR_FACTY1;

SET kat.VAR1;

IF var_id='13740' or var_id='22550' or var_id='22520' or var_id='22580'

or var_id='36210' or var_id='35380' or var_id='35390' or var_id='35400'

or var_id='35410' or var_id='35420' or var_id='35370' or var_id='3300'

or var_id='36130' or var_id='17220' or var_id='36140' or var_id='36150'

or var_id='36160' or var_id='13870' or var_id='13870' or var_id='36180'

or var_id='13900' or var_id='11650' or var_id='11640' or var_id='13710'

or var_id='13700' or var_id='12923' or var_id='11510' or var_id='22070'

or var_id='22060' or var_id='2120' or var_id='11570' or var_id='12926'

or var_id='11710' or var_id='11720' or var_id='13000' or var_id='13010'

or var_id='20570' or var_id='20580' or var_id='12930' or var_id='50040'

or var_id='50050' or var_id='37300' or var_id='50060' or var_id='37310'

or var_id='22580' or var_id='22520' or var_id='22550' or var_id='36210'

or var_id='22590' or var_id='22530' or var_id='22560' or var_id='22500'

or var_id='16610' or var_id='22060' or var_id='22070'

then output;

run;

/*исправление в них*/

DATA VAR_FACTY1;

SET VAR_FACTY1;

name=tranwrd(name,'СРЕДНИЙ ПРОСТОЙ ВАГОНА ПОД 1 ГРУЗОВОЙ ОПЕРАЦИЕЙ','СРЕДНЕЕ ВРЕМЯ ПРОСТОЯ ВАГОНА ПОД ОДНОЙ ГРУЗОВОЙ ОПЕРАЦИЕЙ');

name=tranwrd(name,'КОЭФФИЦИЕНТ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВА В ГРУЗОВОМ ДВИЖЕНИИ (ТЕПЛОВОЗЫ)','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (В ГРУЗОВОМ ДВИЖЕНИИ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'КОЭФФИЦИЕНТ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВА В ГРУЗОВОМ ДВИЖЕНИИ (ЭЛЕКТРОВОЗЫ)','ОТНОШЕНИЕ ВСПОМОГАТЕЛЬНОГО ПРОБЕГА ЛОКОМОТИВОВ К ПРОБЕГУ ВО ГЛАВЕ ПОЕЗДОВ (В ГРУЗОВОМ ДВИЖЕНИИ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ОТПРАВЛЕНО ГРУЗОВ - ВСЕГО','ОБЪЕМ ГРУЗОВ');

name=tranwrd(name,'ЛОКОМОТИВО-КМ В ГОЛОВЕ ПОЕЗДОВ, ГРУЗОВОЕ ДВИЖЕНИЕ, ВКЛ. ПЕРЕДАТОЧНЫЕ И ВЫВОЗНЫЕ, ЭЛЕКТРОВОЗЫ','ПРОБЕГ ГРУЗОВЫХ ПОЕЗДОВ / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'ЛОКОМОТИВО-КМ В ГОЛОВЕ ПОЕЗДОВ, ГРУЗОВОЕ ДВИЖЕНИЕ, ВКЛ. ПЕРЕДАТОЧНЫЕ И ВЫВОЗНЫЕ, ТЕПЛОВОЗЫ','ПРОБЕГ ГРУЗОВЫХ ПОЕЗДОВ / ТЕПЛОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ В ГРУЗОВОМ ДВИЖЕНИИ (ЭЛЕКТРОВОЗЫ)','СРЕДНЯЯ УЧАСТКОВАЯ СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ (В ГРУЗОВОМ ДВИЖЕНИИ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ В ГРУЗОВОМ ДВИЖЕНИИ (ТЕПЛОВОЗЫ)','СРЕДНЯЯ УЧАСТКОВАЯ СКОРОСТЬ ДВИЖЕНИЯ ПОЕЗДОВ (В ГРУЗОВОМ ДВИЖЕНИИ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ','СРЕДНЯЯ УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ЭЛЕКТРОВОЗЫ');

name=tranwrd(name,'УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ','СРЕДНЯЯ УЧАСТКОВАЯ СКОРОСТЬ ЛОКОМОТИВОВ (ПАССАЖИРСКОЕ ДВИЖЕНИЕ) / ТЕПЛОВОЗЫ');

name=tranwrd(name,'ПРОСТОЙ ВАГОНА НА 1 ТЕХНИЧЕСКОЙ СТАНЦИИ БЕЗ ПЕРЕРАБОТКИ','СРЕДНЕЕ ВРЕМЯ ПРОСТОЯ НА ОДНОЙ ТЕХНИЧЕСКОЙ СТАНЦИИ БЕЗ ПЕРЕРАБОТКИ');

name=tranwrd(name,'ПРОСТОЙ ВАГОНА НА 1 ТЕХНИЧЕСКОЙ СТАНЦИИ С ПЕРЕРАБОТКОЙ','СРЕДНЕЕ ВРЕМЯ ПРОСТОЯ НА ОДНОЙ ТЕХНИЧЕСКОЙ СТАНЦИИ С ПЕРЕРАБОТКОЙ');

name=tranwrd(name,'ИНВЕНТАРНЫЙ ЛОКОМОТИВНЫЙ ПАРК ТЕПЛОВОЗОВ','ПАРК ТЕПЛОВОЗОВ (ИНВЕНТАРНЫЙ)');

name=tranwrd(name,'ИНВЕНТАРНЫЙ ЛОКОМОТИВНЫЙ ПАРК ЭЛЕКТРОВОЗОВ','ПАРК ЭЛЕКТРОВОЗОВ (ИНВЕНТАРНЫЙ)');

name=tranwrd(name,'ЦЕНА ЭЛЕКТРОЭНЕРГИИ -

ВСЕГО','СТОИМОСТЬ 1-ГО КВТЧ ЭЛЕКТРОЭНЕРГИИ');

name=tranwrd(name,'ЦЕНА УСЛОВНОГО ТОПЛИВА -

ВСЕГО','СТОИМОСТЬ 1 ТОННЫ УСЛОВНОГО ТОПЛИВА');

name=tranwrd(name,'СРЕДНЕМЕСЯЧНАЯ ЗАРАБОТНАЯ ПЛАТА

КОНТИНГЕНТА, ЗАНЯТОГО НА ПЕРЕВОЗКАХ - ВСЕГО','СРЕДНЯЯ

ЗАРАБОТНАЯ ПЛАТА');

name=tranwrd(name,'ВЕС ПОЕЗДА','СРЕДНЯЯ МАССА ПОЕЗДА');

RUN;

proc sort data=work.var_facty1;

by name;

run;

proc sort data=kat.var_fact1;

by name;

run;

data kat.factor1;/*слияние 2 наборов с первичными факторами*/

merge kat.var_fact1 work.var_facty1;

by name ;

run;

/*извлечение из пэпа значений факторов за декабрь*/

data kat.base;

set data.base (keep= var_id fact date operiod dor_id);

length dor_id $ 25;

m=month(date);

d=year(date);

if m='12' and (d=&d1 or d=&d2) then output;

drop d m;

run;

/* выбор данных по дороге */

data kat.base1;

set kat.base;

if dor_id=&dor1 then output;

run;

/*значения факторов*/

proc sql;

create table kat.factor_first as

select distinct b.*, c.name

from kat.base1 as b, kat.factor1 as c

where c.var_id= b.var_id;

quit;

/* выбор факторов, у которых опериод не м */

data f;

set kat.factor_first;

if var_id='36160' or var_id='36130' or var_id='36150' or var_id='36140' or

var_id='35380'

or var_id='35390' or var_id='35400' or var_id='35410' or var_id='35420' or

var_id='35370'

or var_id='36180' or var_id='50040'

then output;

run;

data f;

set f;

if operiod='Q' then output;

run;

data f;

set f;

operiod='M';

run;

data kat.factor_first;

set kat.factor_first;

if operiod='M';

run;

proc sort data=KAT.factor_first;

by date var_id ;

run;

proc sort data=f;

by date var_id ;

run;

data kat.factor_first1;

merge kat.factor_first WORK.f;

by date var_id ;

run;

/*справочник факторов*/

data kat.factor_first;

set kat.factor_first1;

label date='дата';

label fact='значение фактора';

label dor_id='код дороги';

label operiod='опериод';

label name='название фактора';

label var_id='код фактора';

run;

%include 'C:dipizmerit.sas';

3.2 Листинг модуля izmerit.sas', для расчета измерителей

PROC IMPORT OUT= kat.izmerit

DATAFILE= 'c:dipизмерители с формулами4.xls'

DBMS=EXCEL2000 REPLACE;

GETNAMES=YES;

RUN;

data kat.izmerit;

set kat.izmerit;

name=upcase(name);

name=compbl(name);

drop dv_id;

run;

PROC DISPLAY catalog=kat.proba.run.scl;

run;

data kat.izmer_znach1 ;/*значение измерителя на прогнозный год*/

set kat.izmer_znach ;

d=YEAR(date);

rename fact=fact_bas;

rename date=date_bas;

if d=&d1 then output;

drop d;

run;

data kat.izmer_znach2 ;/*значение измерителя на прог-мый год*/

set kat.izmer_znach ;

d=YEAR(date);

rename fact=fact_prog;

rename date=date_prog;

if d=&d2 then output;

drop d;

run;

proc sql;

create table kat.izm_3 as

select distinct b.*, c.fact_prog, c.date_prog

from kat.izmer_znach1 as b, kat.izmer_znach2 as c

where c.var_id=b.var_id;

quit;

data kat.izm; /*расчет индекса измерителя*/

set kat.izm_3;

i_izm_b_p=fact_prog/fact_bas;

fact_prog=round(fact_prog,.001);

fact_bas=round(fact_bas,.001);

i_izm_b_p=round(i_izm_b_p,.001);

run;

/***************************/

data f1 ;/*значение фактора за прогнозный год*/

set kat.factor_first ;

drop name;

if var_id='50020' or var_id='17210' or var_id='50000' or var_id='50030' then

output;

run;

data f1_1 ;/*значение измер за прогнозный год*/

set f1;

d=YEAR(date);

rename fact=fact_bas;

rename date=date_bas;

if d=&d1 then output;

drop d;

run;

data f1_2 ;/*значение измер за прогнозируемый год*/

set f1 ;

d=YEAR(date);

rename fact=fact_prog;

rename date=date_prog;

if d=&d2 then output;

drop d;

run;

proc sql;

create table work.f_1_1 as

select distinct b.*, c.fact_prog, c.date_prog

from work.f1_1 as b, work.f1_2 as c

where c.var_id=b.var_id;

quit;

data kat.izm_up; /*расчет индекса измерителя*/

set f_1_1;

i_izm_b_p=fact_prog/fact_bas;

fact_bas=round(fact_bas,.001);

fact_prog=round(fact_prog,.001);

i_izm_b_p=round(i_izm_b_p,.001);

run;

proc sort data=kat.izm_up ;

by var_id ;

run;

proc sort data= kat.izm;

by var_id;

run;

data kat.izme;

merge kat.izm_up kat.izm;

by var_id;

run;

%include 'C:dipSTATYA.sas';

3.3 Листинг модуля STATYA.sas, для извлечения статей

%let ty='(СТ.';

data kat.var4; /*вывод только статей */

set kat.var1;

qwer=index(upcase(name),upcase(&ty));

if qwer ne 0 ;

drop qwer ;

run;

data var4; /*вывод только статей */

set kat.var1;

if var_id='43420' or var_id='47900' or var_id='43550' or var_id='48030' then

output;

run;

proc sort data=var4;

by var_id ;

run;

proc sort data=kat.var4;

by var_id ;

run;

data kat.var4;/*слияние 2 наборов с первичными факторами*/

merge kat.var4 work.var4;

by var_id ;

run;

data kat.var4; /*исправления в статьях и вывод номера статей */

set kat.var4;

length name1 $300;

length stati $25;

n2=scan(name,2,'.');

n3=substr(n2,1,4);

name3=trim(n3);

name4=tranwrd(name3,')','');

stati=name4;

name1=name;

if var_id='43420' or var_id='47900' or var_id='43550' or var_id='48030' or

var_id='47910' or var_id='48040' then stati='385, 386, 387';

if var_id='47900' then name1='ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ

РАДИОСТАНЦИЙ,

РАДИОУЗЛОВ И УСИЛИТЕЛЕЙ, УСТРОЙСТВ, ВКЛЮЧАЯ

ЭЛЕКТРОПИТАЮЩИЕ,

АППАРАТУРЫ И СООРУЖЕНИЙ РАДИОРЕЛЕЙНОЙ СВЯЗИ,

ТЕЛЕВИЗИОННЫХ ПРОМЫШЛЕННЫХ УСТАНОВОК И

ШИРОКОВЕЩИТЕЛЬНЫ / ЗАТРАТЫ НА ОПЛАТУ ТРУДА /';

if var_id='48030' then name1='ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ

РАДИОСТАНЦИЙ,

РАДИОУЗЛОВ И УСИЛИТЕЛЕЙ, УСТРОЙСТВ, ВКЛЮЧАЯ

ЭЛЕКТРОПИТАЮЩИЕ,

АППАРАТУРЫ И СООРУЖЕНИЙ РАДИО-РЕЛЕЙНОЙ СВЯЗИ,

ТЕЛЕВИЗИОННЫХ ПРОМЫШЛЕННЫХ УСТАНОВОК И

ШИРОКОВЕЩИТЕЛЬН / ЗАТРАТЫ НА ОПЛАТУ ТРУДА /';

drop name4 name3 n3 n2 NAME;

run;

/*data kat.var4; /*исправления в статьях и вывод номера статей */

/*set kat.var4;

if var_id ne '300006' and var_id ne '300007' then output;

run;*/

data kat.var4; /*исправления в статьях и вывод номеров статей */

set kat.var4;

RENAME name1=name;

if var_id=40890 or var_id=45370 then stati='094, 095, 096';

if var_id=40900 or var_id=41090 or var_id=45380 then stati='140, 141,

142';

if var_id=40930 or var_id=45410 then stati='098, 099, 100';

if var_id=40940 or var_id=41130 or var_id=45420 or var_id=45610 then

stati='144, 145, 146';

if var_id=41080 or var_id=45560 then stati='110, 111, 112';

if var_id=41090 or var_id=45570 then stati='140, 141, 142';

if var_id=41120 or var_id=45600 then stati='114, 115, 116';

if var_id=41250 or var_id=45730 then stati='126, 127, 128';

if var_id=41270 or var_id=45750 then stati='130, 131, 132';

if var_id=41280 or var_id=45760 then stati='123, 124';

if var_id=41410 or var_id=45890 then stati='156, 157, 158';

if var_id=41420 or var_id=41610 or var_id=45900 or var_id=46090 then stati='199, 200, 201';

if var_id=41450 or var_id=45930 then stati='160, 161, 162';

if var_id=41460 or var_id=41650 or var_id=46130 or var_id=45940 then stati='203, 204, 205';

if var_id=41600 or var_id=46080 then stati='170, 171, 172';

if var_id=41640 or var_id=46120 then stati='174, 175, 176';

if var_id=41790 or var_id=46270 then stati='185, 186, 187';

if var_id=41810 or var_id=46290 then stati='189, 190, 191';

if var_id=42630 or var_id=42770 or var_id=47110 or var_id=47250 then stati='329, 330';

if var_id=42800 or var_id=42660 or var_id=47140 or var_id=47280 then stati='333, 334';

if var_id=43400 or var_id=43530 or var_id=48010 or var_id=47880 then stati='380, 381';

if var_id=43430 or var_id=47910 or var_id=48040 then stati='388, 389, 390, 391';

if var_id=43560 then stati='388, 389, 390, 391';

if var_id=44210 or var_id=44250 or var_id=48590 or var_id=48730 or var_id=48690 then stati='456 - 476';

if var_id=44220 or var_id=48700 or var_id=48740 or var_id=44260 then stati='485 - 520';

if var_id=44230 or var_id=44270 or var_id=48710 or var_id=48750 then stati='530 - 533';

else stati=stati;

if var_id=47910 then name1='ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ И ЭКСПЛУАТАЦИЯ АППАРАТУРЫ ТЕЛЕГРАФНЫХ

И ТЕЛЕФОННЫХ СТАНЦИЙ, СИСТЕМ ПЕРЕДАЧИ И РАСПОРЯДИТЕЛЬНЫХ

СТАНЦИЙ ОПЕРАТИВНО-ТЕХНОЛОГИЧЕСКОЙ СВЯЗИ, ВОЗДУШНЫХ И КАБЕЛЬНЫХ ЛИНИЙ СВЯЗИ (СТ. / ЗАТРАТЫ НА ОПЛАТУ ТРУДА /';

if var_id=48040 then name1='ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ И ЭКСПЛУАТАЦИЯ АППАРАТУРЫ ТЕЛЕГРАФНЫХ

И ТЕЛЕФОННЫХ СТАНЦИЙ, СИСТЕМ ПЕРЕДАЧИ И РАСПОРЯДИТЕЛЬНЫХ СТАНЦИЙ ОПЕРАТИВНО-ТЕХНОЛОГИЧЕСКОЙ

СВЯЗИ, ВОЗДУШНЫХ И КАБЕЛЬНЫХ ЛИНИЙ СВЯЗИ (СТ. / ЗАТРАТЫ НА ОПЛАТУ ТРУДА /';

if var_id=48170 then name1='СОДЕРЖАНИЕ РЕМОНТНО-РЕВИЗИОННЫХ УЧАСТКОВ И МАСТЕРСКИХ ПО ТЕКУЩЕМУ РЕМОНТУ ОБОРУДОВАНИЯ И ТРАНСПОРТНЫХ

СРЕДСТВ ТЯГОВЫХ ПОДСТАНЦИЙ И ПОСТОВ СЕКЦИОНИРОВАНИЯ (СТ.408) (ГРУЗОВЫЕ ПЕРЕВОЗКИ)

/ ЗАТРАТЫ НА ОПЛАТУ ТРУДА';

if var_id=48320 then name1='СОДЕРЖАНИЕ РЕМОНТНО-РЕВИЗИОННЫХ УЧАСТКОВ И

МАСТЕРСКИХ ПО ТЕКУЩЕМУ РЕМОНТУ ОБОРУДОВАНИЯ И ТРАНСПОРТНЫХ СРЕДСТВ ТЯГОВЫХ

ПОДСТАНЦИЙ И ПОСТОВ СЕКЦИОНИРОВАНИЯ (СТ.408) (ПАССАЖИРСКИЕ ПЕРЕВОЗКИ) / ЗАТРАТЫ НА ОПЛАТУ ТРУДА';

run;

proc sort data=kat.var4;

by stati ;

run;

data work.zxc3; /*присвоение кода движения*/

set kat.VAR4;

qwer6=index(upcase(name),upcase(' КОНТЕЙНЕР'));

qwer7=index(upcase(name),upcase('ГРУЗ'));

if qwer6 ne 0 or qwer7 ne 0 then dv_id=1;

qwer1=index(upcase(name),upcase('(ПАССАЖИРСКИЕ ПЕРЕВОЗКИ)'));

qwer2=index(upcase(name),upcase('(ПАСАЖИРСКИЕ ПЕРЕВОЗКИ)'));

qwer3=index(upcase(name),upcase('ПАССАЖИРСКОМ ДВИЖЕНИЯ'));

qwer4=index(upcase(name),upcase('ПАССАЖИРСКИХ ВАГОНОВ'));

qwer5=index(upcase(name),upcase('ПАССАЖИР'));

qwer6=index(upcase(name),upcase('БАГАЖНЫХ '));

qwer7=index(upcase(name),upcase(' ПОСТЕЛЬН'));

if qwer1 ne 0 or qwer2 ne 0 or qwer3 ne 0 or qwer4 ne 0 or qwer5 ne 0 or qwer6 ne 0 then dv_id=2;

drop qwer qwer1 qwer2 qwer3 qwer4 qwer5 qwer6 qwer7;

qwer1=index(upcase(name),upcase('ДИЗЕЛЬ-ПОЕЗДНЫЕ ДЕПО'));

qwer2=index(upcase(name),upcase('МОТОРВАГОННЫЕ ДЕПО'));

qwer3=index(upcase(name),upcase('ДИЗЕЛЬНЫХ'));

qwer4=index(upcase(name),upcase('ЭЛЕКТРОСЕКЦИЙ '));

drop QWER1 QWER2;

IF QWER1 NE 0 OR QWER2 NE 0 or qwer3 ne 0 or qwer4 THEN dv_id=3;

if stati='041' or stati='048' or stati='054' or stati='057' or stati='072' or stati='092' or stati='093'

or stati='154' or stati='230' or stati='231' or stati='240' or stati='241' or stati='247' or stati='248'

or stati='249' or stati='250' or stati='251' or stati='314' or stati='315' or stati='370'

then dv_id=1;

if stati='001' or stati='002' or stati='003' or stati='004'

or stati='013' or stati='015'

then dv_id=2;

if stati='433' or stati='438' then dv_id=4;

if var_id='40920' or var_id='45400' or var_id='43430' or var_id='47910' or var_id='43430' or var_id='47910'

or var_id='44230' or var_id='48710' or var_id='43420' or var_id='47900' then dv_id=1;

if var_id='41110' or var_id='45590' or var_id='43560' or var_id='48040' or var_id='43560' or var_id='48040'

or var_id='44270' or var_id='48750' or var_id='43550' or var_id='48030' then dv_id=2;

run;

data work.zxc3_1;

set work.zxc3;

IF STATI='001' THEN DV_ID=2;

dv_id=3;

IF STATI='001' THEN OUTPUT;

run;

proc sort data=work.zxc3;

by stati dv_id;

run;

data work.statyi;

merge work.zxc3 work.zxc3_1 ;

by stati dv_id;

run;

data kat.stati1;

set work.statyi;

if dv_id ne . and var_id ne '49200' then output;

run;

proc sort data=kat.stati1;by stati dv_id;run;

%include 'C:dipSTATYA1.sas';

3.4 Листинг модуля STATYA1.sas', для расчета прогноза

PROC IMPORT OUT= KAT.sprav_stat /*справочник связи статей с

измерителями*/

DATAFILE= 'c:dipsprav.xls'

DBMS=EXCEL2000 REPLACE;

GETNAMES=YES;

RUN;

data kat.sprav_stat ;

set kat.sprav_stat;

drop name f11 ;

run;

proc sort data=kat.sprav_stat;

by dv_id stati ;

run;

proc sort data=kat.stati1;

by dv_id stati ;

run;

proc sql; /*справочник код в пэпе статья и вид движения*/

create table kat.var_statji as

select distinct b.*, c.var_id, c.name

from kat.sprav_stat as b, kat.stati1 as c

where c.stati= b.stati and c.dv_id=b.dv_id;

quit;

proc sort data=kat.var_statji; /* статьи с измерителем и с кодом движения

*/

by dv_id stati ;

run;

proc sql; /*расходы статей*/

create table kat.st as

select distinct b.date, b.dor_id, b.operiod, b.fact, c.*

from kat.base1 as b, kat.var_statji as c

where c.var_id= b.var_id;

quit;

data kat.st2;

set kat.st;

run;

data kat.st2;

set kat.st2 (drop= operiod dor_id );

run;

data kat.st2_12345;

set kat.st2 (keep= date stati fact );

d=year(date);

label stati='номер статьи';

if d=1999 then output;

drop d;

run;

data kat.st5;/*вывод фот*/

set kat.st2;

qwer=index(upcase(name),upcase('ЗАТРАТЫ НА ОПЛАТУ ТРУДА'));

if qwer ne 0 ;

rename name=name_fot;

rename fact=fact_fot;

rename var_id=var_id_fot;

label name=name_fot;

drop qwer;

run;

data kat.st4; /*всего затрат*/

set kat.st2;

qwer=index(upcase(name),upcase('ЗАТРАТЫ НА ОПЛАТУ ТРУДА'));

if qwer=0 ;

drop qwer;

run;

proc sort data=kat.st4;

by stati dv_id;

run;

proc sort data=kat.st5;

by stati dv_id ;

run;

proc sql;

create table kat.st_it as

select distinct b.*, c.name_fot, c.fact_fot, c.var_id_fot

from kat.st4 as b, kat.st5 as c

where c.date= b.date and c.stati=b.stati and c.dv_id=b.dv_id;

quit;

proc sql;

create table kat.stat as

select distinct b.*, c.i_izm_b_p

from kat.st_it as b, kat.izme as c

where b.var_id_izm= c.var_id;

quit;

DATA KAT.stat1;

set kat.stat;

d=year(date);

rename date=date_bas;

if d=&d1 then output;

drop d;

run;

DATA KAT.stat2;

set kat.stat;

d=year(date);

rename date=date_prog;

rename fact=fact_prog;

rename fact_fot=fact_fot_prog;

if d=&d2 then output;

drop d;

run;

proc sql;

create table kat.stat_1 as

select distinct b.*, c.date_prog, c.fact_prog, c.fact_fot_prog

from KAT.stat2 as c, KAT.stat1 as b

where b.var_id= c.var_id and b.dv_id=c.dv_id and b.stati=c.stati and

b.name=c.name;

quit;

data kat.stat_12 ; /*отброс сложных статей из справочника*/

set kat.stat_1 ;

if stati ne '138' and stati ne '197' and stati ne '001'

and stati ne '322' and stati ne '323' and stati ne '329, 330' and stati ne '330'

and stati ne '333, 334' and

stati ne '029' and stati ne '030' and stati ne '031' and stati ne '264' and stati ne

'243'

and stati ne '251' and stati ne '053'

and stati ne '102' and stati ne '148' and stati ne '118' and stati ne '164' and

stati ne '207'

then output;

run;

%include 'C:dipekipir.sas';

%include 'C:dip_001.sas';

%include 'C:dipst330.sas';

%include 'C:dipamort.sas';

/**/

data kat.stat_13;

merge ek.p001_it ek.p330_333 ek.AM4 ek.ek_197_ ek.ek_l38_ ;

by stati dv_id var_id_izm;

run;

proc sort data=kat.stat_12 ;

by stati dv_id var_id_izm;

run;

data kat.stat_itog;

merge kat.stat_13 kat.stat_12;

by stati dv_id var_id_izm;

run;

/*расчет прогноза*/

data kat.z;

set kat.stat_itog ;

if i3=21 then i3=&M;

if i3=25 then i3=&A;

if i3=23 then i3=&E;

if i3=22 then i3=&F;

if i3=24 then i3=&T;

if i4=21 then i4=&M;

if i4=25 then i4=&A;

if i4=23 then i4=&E;

if i4=22 then i4=&F;

if i4=24 then i4=&T;

if p4=. then p4=0;

zav=(fact-fact_fot)*p4*i_izm_b_p*I4*i_izm_b_p;

zav_fot=fact_fot*p3*i_izm_b_p*I3*i_izm_b_p;

zav_itog=zav+zav_fot;

if p4=0 then zav_itog=0;

IF stati ne '091'and stati ne '092' and stati ne '154' and stati ne '153' and stati

ne '108' and stati ne '168' and Stati ne '122' and stati ne '181' then output;

run;

proc sort data=kat.z ;

by date_bas dv_id stati ;

run;

data kat.z1_1;

set kat.z ;

by date_bas dv_id stati ;

retain itog;

if first.date_bas=1 or first.dv_id=1 or first.stati=1 then itog=0;

itog=itog+zav_itog;

if last.date_bas=1 or last.dv_id=1 or last.stati=1 ;

run;

data kat.z1_f;

set kat.z ;

by date_bas dv_id stati ;

retain itog_fot;

if first.date_bas=1 or first.dv_id=1 or first.stati=1 then itog_fot=0;

itog_fot=itog_fot+zav_fot;

if last.date_bas=1 or last.dv_id=1 or last.stati=1 ;

run;

data kat.stat_vce;

merge kat.z1_1 kat.z1_f;

by dv_id date_bas stati ;

run;

/**************//*для сложных статей*/

data kat.s091;

set kat.STAT_itog ;

id_E_T='35370';

IF stati='091' OR stati='092' OR stati='154' OR stati='153' OR stati='108' OR

stati='168' OR Stati='122' OR stati='181' then output;

drop ZAV ZAV_FOT;

run;

data kat.s091;

set kat.s091;

if i3=21 then i3=&M;

if i3=25 then i3=&A;

if i3=23 then i3=&E;

if i3=22 then i3=&F;

if i3=24 then i3=&T;

if i4=21 then i4=&M;

if i4=25 then i4=&A;

if i4=23 then i4=&E;

if i4=22 then i4=&F;

if i4=24 then i4=&T;

IF stati='091' then id_E_T='35370';

IF stati='092' then id_E_T='35370';

IF stati='154' then id_E_T='35380';

IF stati='153' then id_E_T='35380';

IF stati='108' then id_E_T='35390';

IF stati='168' then id_E_T='35400';

IF stati='122' then id_E_T='35410';

IF stati='181' then id_E_T='35420';

run;

data kat.f;

set kat.factor_first;

rename fact=fact_e_t;

if var_id='35380' or var_id='35390' or var_id='35400' or var_id='35410' or

var_id='35420' or var_id='35370' then output;

run;

proc sql;

create table kat.st091 as

select distinct b.*, c.fact_e_t

from kat.s091 as b, kat.f as c

where c.var_id=b.id_e_t and c.date=b.date_bas;

quit;

data kat.s091_1;

set kat.st091 ;

if p4=. then p4=0;

/*фот*/

IF STATI='091' AND var_id_izm='5000471' then

zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='091' AND var_id_izm='5000471' then zav_mat=0;

IF STATI='091' AND var_id_izm='5000471' then zav_et=0;

IF STATI='091' AND var_id_izm='5000471' then

zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='091' AND var_id_izm='5000461' then zav_mat=(fact-fact_fot-

fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='091' AND var_id_izm='5000461' then zav_fot=0;

IF STATI='091' AND var_id_izm='5000461' then zav_fot1=0;

IF STATI='091' AND var_id_izm='5000461' then zav_et=0;

/*электр*/

IF STATI='091' AND var_id_izm='500271' then

zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='091' AND var_id_izm='500271' then zav_mat=0;

IF STATI='091' AND var_id_izm='500271' then zav_fot=0;

IF STATI='091' AND var_id_izm='500271' then zav_fot1=0;

IF STATI='092' AND var_id_izm='5000471' then

zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='092' AND var_id_izm='5000471' then zav_mat=0;

IF STATI='092' AND var_id_izm='5000471' then zav_et=0;

IF STATI='092' AND var_id_izm='5000471' then

zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='092' AND var_id_izm='5000461' then zav_mat=(fact-fact_fot-

fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='092' AND var_id_izm='5000461' then zav_fot=0;

IF STATI='092' AND var_id_izm='5000461' then zav_et=0;

IF STATI='092' AND var_id_izm='5000461' then zav_fot1=0;

/*электр*/

IF STATI='092' AND var_id_izm='500271' then

zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='092' AND var_id_izm='500271' then zav_mat=0;

IF STATI='092' AND var_id_izm='500271' then zav_fot=0;

IF STATI='092' AND var_id_izm='500271' then zav_fot1=0;

IF STATI='108' AND var_id_izm='5002401' then

zav_fot=fact_fot*p4*p4*i4;

IF STATI='108' AND var_id_izm='5002401' then zav_mat=0;

IF STATI='108' AND var_id_izm='5002401' then zav_et=0;

IF STATI='108' AND var_id_izm='5002401' then

zav_fot1=fact_fot*p3*p3*i4;

/*мат*/

IF STATI='108' AND var_id_izm='5002301' then zav_mat=(fact-fact_fot-

fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='108' AND var_id_izm='5002301' then zav_fot=0;

IF STATI='108' AND var_id_izm='5002301' then zav_et=0;

IF STATI='108' AND var_id_izm='5002301' then zav_fot1=0;

/*электр*/

IF STATI='108' AND var_id_izm='5000501' then

zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='108' AND var_id_izm='5000501' then zav_mat=0;

IF STATI='108' AND var_id_izm='5000501' then zav_fot=0;

IF STATI='108' AND var_id_izm='5000501' then zav_fot1=0;

IF STATI='153' AND var_id_izm='5000472' then

zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='153' AND var_id_izm='5000472' then zav_mat=0;

IF STATI='153' AND var_id_izm='5000472' then zav_et=0;

IF STATI='153' AND var_id_izm='5000472' then

zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='153' AND var_id_izm='5000462' then zav_mat=(fact-fact_fot-

fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='153' AND var_id_izm='5000462' then zav_fot=0;

IF STATI='153' AND var_id_izm='5000462' then zav_et=0;

IF STATI='153' AND var_id_izm='5000462' then zav_fot1=0;

/*электр*/

IF STATI='153' AND var_id_izm='500272' then

zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='153' AND var_id_izm='500272' then zav_mat=0;

IF STATI='153' AND var_id_izm='500272' then zav_fot=0;

IF STATI='153' AND var_id_izm='500272' then zav_fot1=0;

IF STATI='154' AND var_id_izm='5000472' then

zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='154' AND var_id_izm='5000472' then zav_mat=0;

IF STATI='154' AND var_id_izm='5000472' then zav_et=0;

IF STATI='154' AND var_id_izm='5000472' then

zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='154' AND var_id_izm='5000462' then zav_mat=(fact-fact_fot-

fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='154' AND var_id_izm='5000462' then zav_fot=0;

IF STATI='154' AND var_id_izm='5000462' then zav_et=0;

IF STATI='154' AND var_id_izm='5000462' then zav_fot1=0;

/*электр*/

IF STATI='154' AND var_id_izm='500272' then

zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='154' AND var_id_izm='500272' then zav_mat=0;

IF STATI='154' AND var_id_izm='500272' then zav_fot=0;

IF STATI='154' AND var_id_izm='500272' then zav_fot1=0;

IF STATI='168' AND var_id_izm='5002402' then

zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='168' AND var_id_izm='5002402' then zav_mat=0;

IF STATI='168' AND var_id_izm='5002402' then zav_et=0;

IF STATI='168' AND var_id_izm='5002402' then zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='168' AND var_id_izm='5002302' then zav_mat=(fact-fact_fot-fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='168' AND var_id_izm='5002302' then zav_fot=0;

IF STATI='168' AND var_id_izm='5002302' then zav_et=0;

IF STATI='168' AND var_id_izm='5002302' then zav_fot1=0;

/*электр*/

IF STATI='168' AND var_id_izm='5000502' then zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='168' AND var_id_izm='5000502' then zav_mat=0;

IF STATI='168' AND var_id_izm='5000502' then zav_fot=0;

IF STATI='168' AND var_id_izm='5000502' then zav_fot1=0;

IF STATI='122' AND var_id_izm='5003401' then zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='122' AND var_id_izm='5003401' then zav_mat=0;

IF STATI='122' AND var_id_izm='5003401' then zav_et=0;

IF STATI='122' AND var_id_izm='5003401' then zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='122' AND var_id_izm='5003301' then zav_mat=(fact-fact_fot-fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='122' AND var_id_izm='5003301' then zav_fot=0;

IF STATI='122' AND var_id_izm='5003301' then zav_et=0;

IF STATI='122' AND var_id_izm='5003301' then zav_fot1=0;

/*электр*/

IF STATI='122' AND var_id_izm='500371' then zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='122' AND var_id_izm='500371' then zav_mat=0;

IF STATI='122' AND var_id_izm='500371' then zav_fot=0;

IF STATI='122' AND var_id_izm='500371' then zav_fot1=0;

IF STATI='181' AND var_id_izm='5003502' then zav_fot=fact_fot*p4*i4*i_izm_b_p;

IF STATI='181' AND var_id_izm='5003502' then zav_mat=0;

IF STATI='181' AND var_id_izm='5003502' then zav_et=0;

IF STATI='181' AND var_id_izm='5003502' then zav_fot1=fact_fot*p3*i3*i_izm_b_p;

/*мат*/

IF STATI='181' AND var_id_izm='5003302' then zav_mat=(fact-fact_fot-fact_e_t)*p4*i4*i_izm_b_p;

IF STATI='181' AND var_id_izm='5003302' then zav_fot=0;

IF STATI='181' AND var_id_izm='5003302' then zav_et=0;

IF STATI='181' AND var_id_izm='5003302' then zav_fot1=0;

/*электр*/

IF STATI='181' AND var_id_izm='500372' then zav_et=fact_e_t*p4*i4*i_izm_b_p;

IF STATI='181' AND var_id_izm='500372' then zav_mat=0;

IF STATI='181' AND var_id_izm='500372' then zav_fot=0;

IF STATI='181' AND var_id_izm='500372' then zav_fot1=0;

if p4=0 then itog1=0;

itog1=zav_fot+zav_mat+zav_et+zav_fot1;

itog_f=zav_fot1;

if itog1=. then itog1=0;

run;

proc sort data=kat.s091_1 ;

by dv_id date_bas stati ;

run;

data kat.s091_1_1;

set kat.s091_1 ;

by dv_id date_bas stati ;

retain itog;

if first.stati=1 then itog=0;

itog=itog+itog1;

if last.stati=1 ;

run;

data kat.s091_f;

set kat.s091_1 ;

by dv_id date_bas stati ;

retain itog_fot;

if first.stati=1 then itog_fot=0;

itog_fot=itog_fot+itog_f;

if last.stati=1 ;

run;

data kat.stat_091;

merge kat.s091_1_1 kat.s091_f;

by dv_id date_bas stati ;

run;

data kat.stat_091;

set kat.stat_091;

keep dv_id date_prog fact_prog fact_fot_prog stati str itog itog_fot;

run;

proc sort data=kat.stat_091;

by dv_id stati ;

run;

data kat.stat_vce;

set kat.stat_vce;

keep dv_id date_prog fact_prog fact_fot_prog stati str itog itog_fot;

run;

proc sort data=kat.stat_vce ;

by dv_id stati ;

run;

data kat.stat_prognoznaya;

merge kat.stat_vce kat.stat_091;

by dv_id stati ;

run;

data kat.stat_prognoznaya;

set kat.stat_prognoznaya;

if fact_prog=. then fact_prog=0;

if fact_fot_prog=. then fact_fot_prog=0;

if fact_prog ne 0 and fact_fot_prog ne 0 then output;

run;

data kat.stat_prognoznaya;/*таблица с прогнозом*/

set kat.stat_prognoznaya;

otk1=abs(fact_prog-itog);

otk=otk1/fact_prog;

otk2=abs(fact_fot_prog-itog_fot);

otk3=otk2/fact_fot_prog;

drop otk1 otk2;

label dv_id='вид движения';

label dv_id1='вид движения';

label stati='номер статьи';

label str='номер строки';

label date_prog='дата прогноза';

label fact_prog='значение затрат по стаье прогнозируемого года ';

label fact_fot_prog='значение затрат на оплату труда прогнозируемого

года';

label itog='значение прогноза затраты по статье';

label itog_fot='значение прогноза затрат на оплату труда';

label otk='отклонение от прогноза';

label otk3='отклонение от прогноза затрат на оплату труда';

if dv_id=1 then dv_id1='грузовое движение';

if dv_id=2 then dv_id1='пассажирское дальнего следования';

if dv_id=3 then dv_id1='пассажирское пригородного следования';

if dv_id=4 then dv_id1='международное сообщение';

drop dv_id;

run;

data kat.stat_prognoznaya1;

set kat.stat_prognoznaya;

if otk>1 then output;

run;

3.5 Листинг модуля ekipir.sas', для распределения средств

/*экипировка*/

data ek.f2;

set kat.factor_first;

rename fact=fact_p;

d=year(date);

if d=&d1 and (var_id=22550 or var_id=22520 or var_id=22580 or

var_id=36210) then output;

drop d;

run;

data ek.f2_1;

set ek.f2;

run;

/*расчет по формулам*/

proc sort data=ek.f2_1;

by date dor_id operiod var_id;

run;

proc transpose data=ek.f2_1

out=ek.f_3;

by date dor_id operiod ;

* var fact_p;

run;

data ek.f21;

set ek.f_3;

rename col1=p_e_g;

rename col2=p_e_h;

rename col3=p_e_p;

rename col4=p_e_m;

drop _name_;

run;

data ek.f21;

set ek.f21;

pe_pr=p_e_h+p_e_g+0.5*p_e_p+0.5*p_e_m;

k1=p_e_p/pe_pr;

k2=(p_e_g+p_e_h)/pe_pr;

k1=round(k1,.001);

k2=round(k2,.001);

run;

proc sql;

create table ek.ek_138 as

select distinct b.*, c.*

from ek.ek as b, ek.f21 as c

where c.dor_id=b.dor_id ;

quit;

proc sort data= ek.ek_138 ;

by date dv_id stati ;

run;

data ek.ek1012;

set ek.EK_138;

by stati;

rename fact=fact12;

rename fact_fot=factf12;

if str='1012' then output;

run;

data ek.ek1011;

set ek.EK_138;

rename fact=fact11;

rename fact_fot=factf11;

if str='1011' then output;

run;

data ek.ek1011;

set ek.ek1011;

by stati;

rename str=str1011;

if last.stati=0 ;

run;

proc sql;

create table ek.ek_l as

select distinct b.*, c.var_id_izm, c.fact12, c.str , c.factf12

from ek.ek1011 as b, ek.ek1012 as c

where c.stati=b.stati ;

quit;

data ek.ek_l2;

set ek.ek_l;

ek_l=fact11+fact12;

ek_e_p=ek_l*k1;

ek_e_g_h=ek_l*k2;

ek_e_m=fact12-ek_e_p;

ek_e_m_g=fact11-ek_e_g_h;

ek2=ek_e_p+ek_e_m;

ek1=ek_e_g_h+ek_e_m_g;

/*fot*/

fek_l=factf11+factf12;

fek_e_p=fek_l*k1;

fek_e_g_h=fek_l*k2;

fek_e_m=factf12-fek_e_p;

fek_e_m_g=factf11-fek_e_g_h;

fek2=fek_e_p+fek_e_m;

fek1=fek_e_g_h+fek_e_m_g;

run;

data ek.ek_l2;

set ek.ek_l2;

keep stati ek_e_m_g ek_e_m ek_e_g_h ek_e_p fek_e_m_g fek_e_m

fek_e_g_h fek_e_p;

run;

proc transpose data=ek.ek_l2

out=ek.ek_1234;

by stati;

var ek_e_m_g ek_e_m ek_e_g_h ek_e_p fek_e_m_g fek_e_m fek_e_g_h

fek_e_p;

run;

data ek.ek_l21;

set ek.ek_1234;

rename col2=fact;

rename _name_=str1;

drop col1 col3;

run;

data ek.ek_l21f;

set ek.ek_l21;

rename fact=fact_fot;

if str1='fek_e_m_g' or str1='fek_e_m' or str1='fek_e_g_h' or str1='fek_e_p'

then output;

run;

data ek.ek_l21;

set ek.ek_l21;

if str1 ne 'fek_e_m_g' and str1 ne 'fek_e_m' and str1 ne 'fek_e_g_h' and str1

ne 'fek_e_p' then output;

run;

data ek.ek_l21;

set ek.ek_l21;

if str1='ek_e_m_g' then str=1011 ;

if str1='ek_e_g_h' then str=1011 ;

if str1='ek_e_m' then str=1012 ;

if str1='ek_e_p' then str=1012 ;

if str1='ek_e_m_g' then var_id_izm='5000511';

if str1='ek_e_g_h' then var_id_izm='5000461';

if str1='ek_e_p' then var_id_izm='5002301';

if str1='ek_e_m' then var_id_izm='5002801' ;

drop str1;

run;

data ek.ek_l21f;

set ek.ek_l21f;

if str1='fek_e_m_g' then str=1011 ;

if str1='fek_e_g_h' then str=1011 ;

if str1='fek_e_m' then str=1012 ;

if str1='fek_e_p' then str=1012 ;

if str1='fek_e_m_g' then var_id_izm='5000511';

if str1='fek_e_g_h' then var_id_izm='5000461';

if str1='fek_e_p' then var_id_izm='5002301';

if str1='fek_e_m' then var_id_izm='5002801' ;

drop str1;

run;

data ek.ek_l21_;

set ek.ek_l21;

if var_id_izm='5002801' then var_id_izm='50000';

run;

data ek.ek_l21_f;

set ek.ek_l21f;

if var_id_izm='5002801' then var_id_izm='50000';

run;

proc sort data=ek.ek_l21_ ;

by stati str var_id_izm;

run;

proc sort data=ek.ek_l21 ;

by stati str var_id_izm;

run;

data ek.q138;

merge ek.ek_l21_ ek.ek_l21;

by stati str var_id_izm;

run;

proc sort data=ek.ek_l21_f;

by stati str var_id_izm;

run;

proc sort data=ek.ek_l21f ;

by stati str var_id_izm;

run;

data ek.q138f;

merge ek.ek_l21_f ek.ek_l21f;

by stati str var_id_izm;

run;

proc sql;

create table ek.q138_it as

select distinct b.*, c.fact_fot

from ek.q138 as b, ek.q138f as c

where c.stati=b.stati and c.str=b.str and c.var_id_izm=b.var_id_izm;

quit;

data ek.q138_it;

merge ek.q138f ek.q138;

by stati str var_id_izm;

run;

data EK.ek ;

set ek.ek ;

drop fact fact_fot;

run;

proc sql;/* выходная таблица статьи 137*/

create table ek.ek_l38_ as

select distinct b.*, c.fact, c.fact_fot

from ek.ek as b, ek.q138_it as c

where c.stati=b.stati and c.str=b.str and c.var_id_izm=b.var_id_izm;

quit;

proc sort data=ek.ek_l38_ ;

by stati dv_id var_id_izm;

run;

/*статья 197*/

data EK.ek ;

set kat.stat_1 ;

if stati='197' then output;

run;

data ek.f2;

set kat.factor_first;

rename fact=fact_p;

d=year(date);

if d=&d1 and (var_id=22500 or var_id=22530 or var_id=22590 or

var_id=22560) then output;

drop d;

run;

data ek.f2_1;

set ek.f2;

run;

proc sort data=ek.f2_1;

by date dor_id operiod var_id;

run;

proc transpose data=ek.f2_1

out=ek.f_3;

by date dor_id operiod ;

run;

data ek.f21;

set ek.f_3;

rename col1=p_e_g;

rename col2=p_e_h;

rename col3=p_e_p;

rename col4=p_e_m;

drop _name_;

run;

data ek.f21;

set ek.f21;

pe_pr=p_e_h+p_e_g+0.5*p_e_p+0.5*p_e_m;

k1=p_e_p/pe_pr;

k2=(p_e_g+p_e_h)/pe_pr;

k1=round(k1,.001);

k2=round(k2,.001);

run;

proc sql;

create table ek.ek_138 as

select distinct b.*, c.*

from ek.ek as b, ek.f21 as c

where c.dor_id=b.dor_id ;

quit;

proc sort data= ek.ek_138 ;

by date dv_id stati ;

run;

data ek.ek1012;

set ek.EK_138;

by stati;

rename fact=fact72;

rename fact_fot=factf72;

if str='1472' then output;

run;

data ek.ek1011;

set ek.EK_138;

rename fact=fact71;

rename fact_fot=factf71;

if str='1471' then output;

run;

data ek.ek1011;

set ek.ek1011;

by stati;

rename str=str1471;

if last.stati=0 ;

run;

proc sql;

create table ek.ek_l as

select distinct b.*, c.var_id_izm, c.fact72, c.str , c.factf72

from ek.ek1011 as b, ek.ek1012 as c

where c.stati=b.stati ;

quit;

data ek.ek_l2;

set ek.ek_l;

ek_l=fact71+fact72;

ek_e_p=ek_l*k1;

ek_e_g_h=ek_l*k2;

ek_e_m=fact72-ek_e_p;

ek_e_m_g=fact71-ek_e_g_h;

ek2=ek_e_p+ek_e_m;

ek1=ek_e_g_h+ek_e_m_g;

/*fot*/

fek_l=factf71+factf72;

fek_e_p=fek_l*k1;

fek_e_g_h=fek_l*k2;

fek_e_m=factf72-fek_e_p;

fek_e_m_g=factf71-fek_e_g_h;

fek2=fek_e_p+fek_e_m;

fek1=fek_e_g_h+fek_e_m_g;

run;

data ek.ek_l2;

set ek.ek_l2;

keep stati ek_e_m_g ek_e_m ek_e_g_h ek_e_p fek_e_m_g fek_e_m

fek_e_g_h fek_e_p;

run;

proc transpose data=ek.ek_l2

out=ek.ek_1234;

by stati;

var ek_e_m_g ek_e_m ek_e_g_h ek_e_p fek_e_m_g fek_e_m fek_e_g_h

fek_e_p;

run;

data ek.ek_l21;

set ek.ek_1234;

rename col2=fact;

rename _name_=str1;

drop col1 col3;

run;

data ek.ek_l21f;

set ek.ek_l21;

rename fact=fact_fot;

if str1='fek_e_m_g' or str1='fek_e_m' or str1='fek_e_g_h' or str1='fek_e_p'

then output;

run;

data ek.ek_l21;

set ek.ek_l21;

if str1 ne 'fek_e_m_g' and str1 ne 'fek_e_m' and str1 ne 'fek_e_g_h' and str1

ne 'fek_e_p' then output;

run;

data ek.ek_l21;

set ek.ek_l21;

if str1='ek_e_m_g' then str=1471 ;

if str1='ek_e_g_h' then str=1471 ;

if str1='ek_e_m' then str=1472 ;

if str1='ek_e_p' then str=1472 ;

if str1='ek_e_m_g' then var_id_izm='5000512';

if str1='ek_e_g_h' then var_id_izm='5000462';

if str1='ek_e_p' then var_id_izm='5002302';

if str1='ek_e_m' then var_id_izm='5002802' ;

drop str1;

run;

data ek.ek_l21f;

set ek.ek_l21f;

if str1='fek_e_m_g' then str=1471 ;

if str1='fek_e_g_h' then str=1471 ;

if str1='fek_e_m' then str=1472 ;

if str1='fek_e_p' then str=1472 ;

if str1='fek_e_m_g' then var_id_izm='5000512';

if str1='fek_e_g_h' then var_id_izm='5000462';

if str1='fek_e_p' then var_id_izm='5002302';

if str1='fek_e_m' then var_id_izm='5002802' ;

drop str1;

run;

data ek.ek_l21_;

set ek.ek_l21;

if var_id_izm='5002802' then var_id_izm='50000';

run;

data ek.ek_l21_f;

set ek.ek_l21f;

if var_id_izm='5002802' then var_id_izm='50000';

run;

proc sort data=ek.ek_l21_ ;

by stati str var_id_izm;

run;

proc sort data=ek.ek_l21 ; /*

by stati str var_id_izm;

run;

data ek.q138;

merge ek.ek_l21_ ek.ek_l21;

by stati str var_id_izm;

run;

proc sort data=ek.ek_l21_f;

by stati str var_id_izm;

run;

proc sort data=ek.ek_l21f ;

by stati str var_id_izm;

run;

data ek.q138f;

merge ek.ek_l21_f ek.ek_l21f;

by stati str var_id_izm;

run;

proc sql;

create table ek.q138_it as

select distinct b.*, c.fact_fot

from ek.q138 as b, ek.q138f as c

where c.stati=b.stati and c.str=b.str and c.var_id_izm=b.var_id_izm;

quit;

data ek.q138_it;

merge ek.q138f ek.q138;

by stati str var_id_izm;

run;

data EK.ek ;

set ek.ek ;

drop fact fact_fot;

run;

proc sql;/* выходная таблица статьи 137*/

create table ek.ek_197_ as

select distinct b.*, c.fact, c.fact_fot

from ek.ek as b, ek.q138_it as c

where c.stati=b.stati and c.str=b.str and c.var_id_izm=b.var_id_izm;

quit;

proc sort data=ek.ek_197_ ;

by stati dv_id var_id_izm;

run;

data kat.stat_13;

merge ek.p001_it ek.p330_333 ek.AM4 ek.ek_197_ ek.ek_l38_ ;

by stati dv_id var_id_izm;

run;

proc sort data=kat.stat_12 ;

by stati dv_id var_id_izm;

run;

data kat.stat_itog;

merge kat.stat_13 kat.stat_12;

by stati dv_id var_id_izm;

run;

3.6 Листинг модуля amort.sas', для распределения средств

/*амортизация*/

data EK.am;

set kat.stat_1 ;

if stati='029' or stati='030' or stati='031' or stati='264' or stati='243' or

stati='251' or stati='053'

or stati='102' or stati='148' or stati='118' or stati='164' or stati='207' then

output;

run;

data EK.am;

set EK.am;

if stati='029' or stati='030' or stati='031' or stati='264' then ind='35040';

if stati='243' or stati='251' or stati='053' then ind='16610';

if stati='102' or stati='148' or stati='118' then ind='22060';

if stati='164' or stati='207' or stati='178' then ind='22070';

run;

data ek.AM1;

set kat.factor_first;

rename fact=fact_p;

D=YEAR(DATE);

if D=&D1 and (var_id=35040 or var_id=16610 or var_id=22060 or

var_id=22070) then output;

drop d;

rename date=date_b;

rename fact=fact_b;

run;

data ek.AM2;

set kat.factor_first;

rename fact=fact_p;

D=YEAR(DATE);

if D=&D2 and (var_id=35040 or var_id=16610 or var_id=22060 or

var_id=22070) then output;

drop d;

rename date=date_p;

rename fact=fact_p;

run;

proc sql;

create table ek.am3 as

select distinct b.*, c.fact_p

from ek.AM1 as b, ek.AM2 as c

where c.var_id=b.var_id ;

quit;

data ek.AM3;

set ek.AM3;

i=fact_p/fact_b;

i=round(i,.001);

run;

proc sql;

create table ek.am4 as

select distinct b.*, c.i

from ek.AM as b, ek.AM3 as c

where c.var_id=b.ind ;

quit;

data ek.AM4;/*итог амортиз.*/

set ek.AM4;

fact1=fact*i;

drop fact i ind;

rename fact1=fact;

run;

proc sort data=ek.AM4;

by stati dv_id var_id_izm;

run;

3.6 Листинг модуля _001.sas', для распределения средств по 1 статье.

/*001*/

data EK._001;

set kat.stat_1 ;

if stati='001' then output;

run;

data ek.p2;

set kat.izmer_znach1;

rename date_bas=date;

if var_id=500290 or var_id=500380 then output;

run;

proc sort data=ek.p2;

by date dor_id operiod var_id;

run;

proc transpose data=ek.p2

out=ek.p_3;

by date dor_id operiod ;

run;

data ek.p21;

set ek.p_3;

rename col1=ds;

rename col2=ps;

drop _name_;

run;

data ek.p21;

set ek.p21;

p_pr=ds+ps*0.5;

k1=0.5*ps/p_pr;

k2=ds/p_pr;

k1=round(k1,.001);

k2=round(k2,.001);

run;

proc sql;

create table ek.p_001 as

select distinct b.*, c.*

from ek._001 as b, ek.p21 as c

where c.dor_id=b.dor_id ;

quit;

data ek.p_001;

set ek.p_001;

e_p=fact*k1;

e_d=fact*k2;

fe_p=fact_fot*k1;

fe_d=fact_fot*k2;

keep stati e_p e_d fe_p fe_d dv_id;

run;

proc sort data= ek.p_001;

by stati dv_id;

run;

data ek.p_001;

set ek.p_001;

if dv_id=2 then fact_fot=fe_d ;

if dv_id=2 then fact=e_d;

if dv_id=3 then fact_fot=fe_p ;

if dv_id=3 then fact=e_p;

keep dv_id stati fact fact_fot;

run;

data EK._001 ;

set ek._001;

drop fact fact_fot ;

run;

proc sql;/* выходная таблица статьи 001*/

create table ek.p001_it as

select distinct b.*, c.fact, c.fact_fot

from ek._001 as b, ek.p_001 as c

where c.stati=b.stati and c.dv_id=b.dv_id ;

quit;

proc sort data=ek.p001_it ;

by stati dv_id var_id_izm;

run;

3.7 Листинг модуля st330.sas', для распределения средств на станционные, главные пути

data EK.pyt;

set kat.stat_1 ;

if stati='322' or stati='323' or stati='329, 330' or stati='330' then output;

run;

data ek.p2;

set kat.factor_first;

rename fact=fact_p;

d=year(date);

if d=&d1 and (var_id=50040 or var_id=37300 or var_id=50050 or

var_id=37310) then output;

drop d;

run;

proc sort data=ek.p2;

by date dor_id operiod var_id;

run;

proc transpose data=ek.p2

out=ek.p_3;

by date dor_id operiod ;

* var fact_p;

run;

data ek.p21;

set ek.p_3;

rename col1=l_k_g;

rename col2=l_c_p;

rename col3=n;

rename col4=l_g;

drop _name_;

run;

data ek.p21;

set ek.p21;

lpr=l_g+l_k_g*0.75 +l_c_p*0.4+0.05*n;

k1=(l_c_p*0.4+n*0.05)/lpr;

k2=(l_g+l_k_g*0.75)/lpr;

alpr=l_c_p*0.4+0.05*n;

ak2=(l_g+l_k_g*0.75)/alpr;

k1=round(k1,.001);

k2=round(k2,.001);

ak2=round(ak2,.001);

run;

proc sql;

create table ek.p_330 as

select distinct b.*, c.*

from ek.pyt as b, ek.p21 as c

where c.dor_id=b.dor_id ;

quit;

data ek.p_330;

set ek.p_330;

e_c_p=fact*k1;

e_g=fact*k2;

fe_c_p=fact_fot*k1;

fe_g=fact_fot*k2;

keep stati e_c_p e_g fe_c_p fe_g dv_id;

run;

proc sort data= ek.p_330;

by stati dv_id;

run;

proc transpose data=ek.p_330

out=ek.p330;

by stati dv_id;

var e_c_p e_g fe_c_p fe_g;

run;

data ek.p330;

set ek.p330;

rename col1=fact;

rename _name_=var;

drop col2 col3 col4;

run;

data ek.p330_f;

set ek.p330;

if var='fe_c_p' and dv_id=1 then var_id_izm='500051' ;

if var='fe_g' and dv_id=1 then var_id_izm='500049' ;

if var='fe_c_p' and dv_id=2 then var_id_izm='500280' ;

if var='fe_g' and dv_id=2 then var_id_izm='500260' ;

rename fact=fact_fot;

if var='fe_c_p' or var='fe_g' then output;

run;

data ek.p330;

set ek.p330;

if var='e_c_p' and dv_id=1 then var_id_izm='500051' ;

if var='e_g' and dv_id=1 then var_id_izm='500049' ;

if var='e_c_p' and dv_id=2 then var_id_izm='500280' ;

if var='e_g' and dv_id=2 then var_id_izm='500260' ;

if var='e_c_p' or var='e_g' then output;

drop var;

run;

data ek.p330_1;

set ek.p330;

if var_id_izm='500051' then var_id_izm='17210';

if var_id_izm='500049' then var_id_izm='50000' ;

if var_id_izm='500280' then var_id_izm='17210' ;

if var_id_izm='500260' then var_id_izm='50000' ;

run;

data ek.p330_1f;

set ek.p330_f;

if var_id_izm='500051' then var_id_izm='17210';

if var_id_izm='500049' then var_id_izm='50000' ;

if var_id_izm='500280' then var_id_izm='17210' ;

if var_id_izm='500260' then var_id_izm='50000' ;

run;

proc sort data=ek.p330_1;

by stati dv_id var_id_izm;

run;

proc sort data=ek.p330 ;

by stati dv_id var_id_izm;

run;

data ek.p330_11 ;

merge ek.p330_1 ek.p330 ;

by stati dv_id var_id_izm;

run;

proc sort data=ek.p330_1f;

by stati dv_id var_id_izm;

run;

proc sort data=ek.p330_f ;

by stati dv_id var_id_izm;

run;

data ek.p330_11f ;

merge ek.p330_1f ek.p330_f ;

by stati dv_id var_id_izm;

run;

proc sql;

create table ek.q322_it as

select distinct b.*, c.fact_fot

from ek.p330_11 as b, ek.p330_11f as c

where c.stati=b.stati and c.dv_id=b.dv_id and c.var_id_izm=b.var_id_izm;

quit;

data EK.pyt ;

set ek.pyt;

drop fact fact_fot ;

run;

proc sql

create table ek.p330_it as

select distinct b.*, c.fact, c.fact_fot

from ek.pyt as b, ek.q322_it as c

where c.stati=b.stati and c.dv_id=b.dv_id and c.var_id_izm=b.var_id_izm;

quit;

data EK.pyt;

set kat.stat_1 ;

if stati='333, 334' then output;

run;

data ek.p2;

set kat.factor_first;

rename fact=fact_p;

d=year(date);

if d=&d1 and (var_id=50040 or var_id=37300 or var_id=50050 or

var_id=37310) then output;

drop d;

run;

proc sort data=ek.p2;

by date dor_id operiod var_id;

run;

proc transpose data=ek.p2

out=ek.p_3;

by date dor_id operiod ;

* var fact_p;

run;

data ek.p21;

set ek.p_3;

rename col1=l_k_g;

rename col2=l_c_p;

rename col3=n;

rename col4=l_g;

drop _name_;

run;

data ek.p21;

set ek.p21;

alpr=l_c_p*0.4+0.05*n;

ak2=(l_g+l_k_g*0.75)/alpr;

ak2=round(ak2,.001);

run;

proc sql;

create table ek.p_330 as

select distinct b.*, c.*

from ek.pyt as b, ek.p21 as c

where c.dor_id=b.dor_id ;

quit;

data ek.p_330;

set ek.p_330;

e_g=fact*ak2;

fe_g=fact_fot*ak2;

keep stati e_g fe_g dv_id;

run;

proc sort data= ek.p_330;

by stati dv_id;

run;

proc transpose data=ek.p_330

out=ek.p330;

by stati dv_id;

var e_g fe_g;

run;

data ek.p330;

set ek.p330;

rename col1=fact;

rename _name_=var;

drop col2 col3 col4;

run;

data ek.p330_f;/*к условно-пост части*/

set ek.p330;

if var='fe_g' then var_id_izm='50000' ;

rename fact=fact_fot;

if var='fe_g' then output;

run;

data ek.p330;

set ek.p330;

if var='e_g' then var_id_izm='50000' ;

if var='e_g' then output;

drop var;

run;

proc sort data=ek.p330_f;

by stati dv_id var_id_izm;

run;

proc sort data=ek.p330 ;

by stati dv_id var_id_izm;

run;

data ek.p330_11 ;

merge ek.p330_f ek.p330 ;

by stati dv_id var_id_izm;

run;

data EK.pyt ;

set ek.pyt;

drop fact fact_fot ;

run;

proc sql

create table ek.p333_it as

select distinct b.*, c.fact, c.fact_fot

from ek.pyt as b, ek.p330_11 as c

where c.stati=b.stati and c.dv_id=b.dv_id and c.var_id_izm=b.var_id_izm;

quit;

proc sort data=ek.p330_it;

by stati dv_id var_id_izm;

run;

proc sort data=ek.p333_it ;

by stati dv_id var_id_izm;

run;

data ek.p330_333 ;

merge ek.p330_it ek.p333_it ;

by stati dv_id var_id_izm;

run;

proc sort data=ek.p330_333 ; /*итоговая */

by stati dv_id var_id_izm;

run;

3.8 Листинг SCLкодов интерфейса 1

init:

t3.text=1.331;

t4.text=1.474;

t5.text=1.992;

t6.text=1.402;

t7.text=1.662;

submit continue

proc sql;

create table work.nazvdor as

select distinct name

from ref.dor;

quit;

endsubmit;

declare list nazvaniya;

nazvaniya=makelist();

tab=open('work.nazvdor','i');

do while(fetch (tab) ne -1);

n=getvarc(tab,1);

rc=insertc(nazvaniya, n);

end;

rc=close (tab);

list1.items=copylist(nazvaniya);

call putlist(nazvaniya);

return;

pushbutton1:

d1=t1.text;

call symputn('d1',t1.text);

d2=t1.text;

call symputn('d2',t2.text);

F=t3.text;

call symputn('F',t3.text);

M=t4.text;

call symputn('M',t4.text);

A=t5.text;

call symputn('A',t5.text);

call symputn('d1',t1.text);

E=t6.text;

call symputn('E',t6.text);

T=t7.text;

call symputn('T',t7.text);

dor1=list1.selecteditem;

dor1='''||dor1||''';

submit continue;

%let dor_id=&dor1;

proc sql;

select distinct dor_id into:ww

from ref.dor

where name=&dor1;

quit;

%include 'c:dipfactor1.sas';

endsubmit;

return;

pushbutton3:

call display ('kat.prog.fact.frame');

return;

pushbutton2:

call display ('kat.prog.pokaz1.frame');

return;

pushbutton4:

call display ('kat.prog.izm.frame');

return;

pushbutton5:

call display ('kat.prog.factors1999.frame');

return;

pushbutton6:

call display ('kat.prog.znach.frame');

return;

pushbutton7:

call display ('анин фрейм');

return;

exit:

_STATUS_='H';

return;

3.9 Листинг SCLкодов интерфейса 2

init:

dcl list name_f value_f;

name_f=makelist();

value_f=makelist();

tab=open('kat.factor_first');

do while (fetch(tab) ne -1);

namenum=varnum(tab,'name');

a=getvarc(tab,namenum);

rc=insertc(name_f,a);

valnum=varnum(tab,'fact');

b=getvarn(tab,valnum);

rc=insertn(value_f,b);

end;

factors.items=name_f;

a1=-1;

rc=close(tab);

return;

factors:

if a1 >0 then do;

rc=SETITEMN(value_f,val_f.text,a1);

end;

a1=factors.SelectedIndex;

c1=getitemn(value_f,a1);

val_f.text=c1;

return;

upd:

if a1 >0 then do;

rc=SETITEMN(value_f,val_f.text,a1);

end;

submit continue;

data kat.data;

set kat.factor_first;

delete;

run;

endsubmit;

tabw=open('kat.data','UN');

aaa=listlen(name_f);

put aaa;

do i= 1 to listlen(name_f);

rc=initrow(tabw);

namenum=varnum(tabw,'name');

a=getitemc(name_f,i);

call putvarc(tabw,NAMENUM,a);

valnum=varnum(tabw,'fact');

b=getitemn(value_f,i);

call putvarn(tabw,valnum,B);

rc=append(tabw,'NOINIT' );

end;

rc=close(tabw);

submit continue;

proc sql;

create table kat.factor_first as

select distinct b.date, b.dor_id , b.operiod, b.var_id, c.*

from kat.factor_first as b, kat.data as c

where c.name= b.name;

quit;

endsubmit;

call display('fact.FRAME');

return;

pushbutton1:

submit continue;

%include 'c:dipizmerit.sas';

endsubmit;

return;

exit:

_STATUS_='H';

return;

3.10 Листинг SCLкодов интерфейса 3

pushbutton1:

submit continue;

%include 'c:dipstatya.sas';

endsubmit;

call display('factors1999.FRAME');

return;

exit:

_STATUS_='H';

return;

ref.by 2006—2025
contextus@mail.ru