Реинжиниринг имитационной модели работы железной дороги на основании данных из Информационного Фонда производственно-экономических показателей
Проект имитационной модели работы железной дороги. Требования к структурным характеристикам, режимам функционирования; средства и способы обмена информацией. Технология создания распределенных клиент-серверных приложений; программное обеспечение ИМРЖД.
Рубрика | Производство и технологии |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 02.06.2012 |
Размер файла | 2,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
ПРИГОРОДНОМ СООБЩЕНИИ'));
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:\dip\izmerit.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:\dip\STATYA.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:\dip\STATYA1.sas';
3.4 Листинг модуля STATYA1.sas', для расчета прогноза
PROC IMPORT OUT= KAT.sprav_stat /*справочник связи статей с
измерителями*/
DATAFILE= "c:\dip\sprav.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:\dip\ekipir.sas';
%include 'C:\dip\_001.sas';
%include 'C:\dip\st330.sas';
%include 'C:\dip\amort.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;
Подобные документы
Сравнительная характеристика эксплуатационных показателей существующих систем диспетчерской централизации. Технико-эксплуатационные требования к системе диспетчерской централизации. Особенности обслуживания устройства Безопасная микро ЭВМ БМ-1602.
дипломная работа [127,4 K], добавлен 28.09.2021Компоновка сборочной линии (СЛ) с вертикально замкнутым и горизонтально замкнутым конвейером спутников. Разработка имитационной модели системы с учетом внештатных ситуаций. Разработка циклограммы работы СЛ и ее описание с помощью логических уравнений.
курсовая работа [60,7 K], добавлен 14.01.2015Сущность системы контроля, предназначенной для обнаружения дефектов различных узлов подвижного состава и централизации информации с линейных пунктов контроля. Описание аппаратуры КТСМ-02. Анализ требований безопасности при обслуживании средств контроля.
дипломная работа [2,5 M], добавлен 08.11.2013Схемы изменения направления движения. Характеристика системы технического обслуживания. Монтажные схемы аппаратуры. Расчет производительности труда работников. Охрана труда и экология на посту электрической централизации. Безопасность движения поездов.
дипломная работа [78,6 K], добавлен 14.11.2008Краткая техническая характеристика основных узлов радиально-сверлильного станка модели 2А55. Проектирование режимов его работы, требования к электроприводу и автоматике. Описание работы принципиальной электрической схемы, выбор электрических аппаратов.
дипломная работа [111,6 K], добавлен 02.11.2010Качественно-количественные операции флотации железной руды. Расчет процесса дробления-грохочения, крупности и выхода продуктов. Показатели обогащения: выход концентратов, хвостов; содержание компонентов. Технологическая эффективность процессов обогащения.
курсовая работа [66,6 K], добавлен 20.12.2014Создание модели пальто с учётом анализа особенностей фигуры заказчицы и направления моды. Выбор методов конструирования, обработки одежды и оборудования. Расчет экономических показателей проектируемой модели. Подготовка производства к ее внедрению.
дипломная работа [132,2 K], добавлен 08.01.2011Построение качественно-количественной схемы подготовительных операций дробления, грохочения железной руды: выбор метода, выход продуктов. Обзор рекомендуемого оборудования. Магнитно-гравитационная технология и флотационное обогащение железной руды.
курсовая работа [67,5 K], добавлен 09.01.2012Технология обогащения железной руды и концентрата, анализ опыта зарубежных предприятий. Характеристика минерального состава руды, требования к качеству концентрата. Технологический расчет водно-шламовой и качественно-количественной схемы обогащения.
курсовая работа [218,3 K], добавлен 23.10.2011Определение годовой программы запуска деталей и фонда времени работы поточной линии. Расчет параметров однопредметной поточной линии. Организация технического обслуживания и обоснование экономических показателей проектируемого поточного производства.
дипломная работа [223,4 K], добавлен 27.05.2012