/* переносит все устр с ретр-а фобос code_retr_fobos на альтаир 1 к 1*/ /* !!!!!!! Расширители Атлас не поддерживаются !!!!!!!!!*/ /* Пультовые номера не меняются*/ /* code_retr_fobos = код ретр фобос */ /* code_retr_altair = код ретр альтаир (новый) */ /* code_duty = код нового АРМ дежурного (может совпадать со старым) */ SET TERM ^ ; CREATE PROCEDURE MOVE_RETR_FOBOS_TO_ATAIR ( code_retr_fobos integer, code_retr_altair integer, code_duty integer) as declare variable cext integer; declare variable even integer; declare variable alt_inp integer; declare variable cdvc integer; declare variable cobj integer; declare variable num_finput integer; declare variable num_fretr integer; begin /*беру Фобос*/ select first 1 ID_NUMBER from device_list where CODE_DEVICE_LIST = :CODE_RETR_FOBOS into :NUM_FRETR; /*беру УОО*/ for select CODE_DEVICE_LIST, PARENT_INPUT, CODE_OBJECT from device_list where PARENT_DEVICE_CODE = :code_retr_fobos into :cdvc, :NUM_FINPUT, :cobj do begin /*беру код расширителя альтаир*/ CEXT=NULL; even = (:NUM_FRETR-1) - (((:NUM_FRETR-1)/2) * 2); select first 1 CODE_DEVICE_LIST from DEVICE_LIST where PARENT_DEVICE_CODE = :code_retr_altair and PARENT_INPUT = (:NUM_FINPUT-1)/20 + 1 + (:EVEN * 6) into :CEXT; if(CEXT is not null) then begin /*переключаю устройство*/ alt_inp = :NUM_FINPUT - (((:NUM_FINPUT-1)/20) * 20); update device_list set PARENT_DEVICE_CODE = :CEXT, PARENT_INPUT = :ALT_INP where CODE_DEVICE_LIST = :CDVC; /*переключаю объект*/ update defence_object set MAIN_HANDLER = :CODE_DUTY where code_object = :cobj; end end end^ SET TERM ; ^ execute PROCEDURE MOVE_RETR_FOBOS_TO_ATAIR ( /*!!!!!! Здессь вставить параметры !!!!!!*/ code_retr_fobos, code_retr_altair, code_duty ); drop PROCEDURE MOVE_RETR_FOBOS_TO_ATAIR; commit work;