Отчётность IBM Rational ClearCase. Часть 2

Источник: developerworks
Рустам Зайдуллин, ведущий инженер, ТатАСУнефть" ОАО "Татнефть" Александр Новичков, руководитель отдела внедрения и консалтинга, СМ-Консалт

Тип значения по умолчанию задаётся Integer, для метрики L_C необходимо указать тип Real (рисунок 3).

Рисунок 3. Меняем тип данных значения атрибута
Рисунок 3. Меняем тип данных значения атрибута

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

Рисунок 4. Типы атрибутов для метрик
Рисунок 4. Типы атрибутов для метрик

Итак, по порядку. Сначала необходимо определить дату отчётного периода. За окончание периода примем текущую дату, а начало периода введёт пользователь. Для ввода данных используем интерфейс clearprompt. Можно было бы запросить дату одной строкой, но во избежание ввода некорректной даты (ошибок в формате ввода, или ввода даты позднее текущей) организуем ввод в графическом интерфейсе, из списка. Запрашиваем дату в следующем порядке: год, месяц, день. Для начала определим текущую дату.

use Time::localtime;
use Time::tm;

$tm = localtime;

$cyear = $tm->year+1900;
$cmon = $tm->mon+1;
$cday = $tm->mday;
$chour = $tm->hour;
$cminutes = $tm->min;

$cdato="$cday-$cmon-$cyear.$chour:$cminutes";

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

for ($y = 2005; $y < $cyear+1; $y++)
{
	$years="$years,$y";
};
$years=substr($years,1,length($years));

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

prompty: $lab=system("clearprompt list -outfile date -items \"$years\" -prompt 
		\"Выберите год начала периода (дд-мм-гггг)\"");
if ($lab != 0) 
{
	Win32::MsgBox("Операция прервана пользователем");
	exit(1);
};

open(FL, "date") // die "Can't open file \n";
$i=0;
while (<FL>) 
{
@pas[$i]=split(FL);
$i=$i+1;
};
close FL;

$year=$pas[0];
if ($year eq "") 
{
	goto prompty ;
}
else
{
	chop($year);
};
@pas[0]="";

Описанное диалоговое окно имеет следующий вид (рисунок 5).

Рисунок 5. Диалог ввода даты
Рисунок 5. Диалог ввода даты

Сразу выполняем проверку, является ли введённый год високосным. Эта информация будет нужна далее, при выводе диалога выбора дня текущего периода.

@mdays = qw(31 28 31 30 31 30 31 31 30 31 30 31);
if (($year % 4) == 0)
{
if ($year % 100 != 0) 
	{ 
$mdays[1] = 29;
}
	elsif ($year % 400 == 0)
	{ 
$mdays[1] = 29;
	}
};
Читать часть 3


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=22797