ГНЦ ИФВЭ
ОУ У-70
Система Управления комплекса У-70  

Программирование на Верхнем Уровне СУ

Библиотеки программных объектов СУ

Пример 1 управляющей ПП

Текст управляющей ПП, которая выполняет следующие функции:

редактирует физические параметры типа "статус";
поддерживает работу с архивами физических управляющих параметров.

ПП использует следующие таблицы БД ССУДА:

Имя таблицы Тип таблицы Тип параметров Кол. плоскостей Кол. строк Кол. столбцов Номер копии
B_PP_EXA  PASSPORT Физические 1 5 стандарт 1
B_PD_EXADATAФизические3320 5 1
#include <stdio.h>
#include <stdlib.h>
#include "/prg/prg.h"
#include "/prg/prgclass.h"

/*******************************************************************
*/
class AppCntr : public ApplicationControl
{
  class classPPtable *PP_tbl; // описания физ. управл. параметров
  class classPDtable *PD_tbl; // значения физ. управл. параметров
 
  int FunIni( int narg, char *sarg[] );
  int FunEditOnly( short int narchive );
};
/*******************************************************************
выделить цветом значения физических параметров, не равные 0
*/
int AppCntr::FunEditOnly( short int narchive )
{
  int i, j;
  int natt=PD_tbl->GetNatt();  // кол. параметров
  int ntup=PD_tbl->GetNtup();  // кол. значений каждого параметра
  unsigned char *pd;
  
  for (i=0; i<natt; i++)
  {
    pd=(unsigned char*)PD_tbl->GetAdrParam( i+1 );
    for (j=0; j<ntup; j++)
      if ((pd[j] & ~PRG_COLOR_VAR)) pd[j] |= PRG_COLOR_VAR;
  }
  return 0;
}
/*******************************************************************
создание и инициализация объектов
*/
int AppCntr::FunIni( int narg, char *sarg[] )
{
  //..... создать объекты
  if (!(PP_tbl=NewPPtable())) return 1;
  if (!(PD_tbl=NewPDtable())) return 1;
  if (AdrPar.SetPar( PP_tbl, PD_tbl ) == -1) return 1; // парный
  //..... инициализировать объекты
  if (PP_tbl->Ini( "B_PP_EXA",     // имя таблицы
                   1,              // номер плоскости
                   1, 5 )          // номера начальной, конечной строк
	         ) return 1;
  if (PD_tbl->Ini( "B_PD_EXA",     // имя таблицы
	           1, 5,           // номера начального, конечного столбцов
	           20,             // число значений
	           1,              // есть редактирование
	           1 )) return 1;  // горизонтальное расположение
  return 0;
}
/*******************************************************************
*/
int main( int narg, char *sarg[] )
{
  AppCntr Ap;
  return Ap.MakeRun( narg, sarg );
}
/*******************************************************************
*/
Компиляция и сборка управляющей ПП (файл name.c)
Ldb=/usr/usera/voevodin/rt-data/ccydalib/ccydalib.a
Llib=/prg/prgclass.a /prg/prg.a /prg/bmplib.a
Lobj=name.o
name: $(Lobj)
	g++ -o name $(Lobj) $(Llib) $(Ldb) -lm
	strip -s name
	ls -l name
name.o: /prg/prg.h /prg/prgclass.h name.cc
	g++ -c name.cc

Автор © Клименков Е.В.