$FREQUENCY_QUERY = $dbh->prepare("SELECT `id`, `frequencies`
FROM `microwave-frequencies`
ORDER BY `frequencies` DESC");
$CHANNEL_QUERY = $dbh->prepare("SELECT `channel`
FROM `microwave-modulation-lookup`
WHERE `rate` = '$DATA_RATE'");
$SITE_A_ANTENNA_LENGTH_QUERY = $dbh->prepare("SELECT `length`
FROM `microwave-antenna-length-lookup`");
$SITE_B_ANTENNA_LENGTH_QUERY = $dbh->prepare("SELECT `length`
FROM `microwave-antenna-length-lookup`");
$FREQUENCY_QUERY->execute( );
while ( ($FREQUENCY_ID) = @FREQUENCY_QUERY = $FREQUENCY_QUERY->fetchrow_array() )
{
$FREQUENCY_ID = "$FREQUENCY_QUERY[0]";
$FREQUENCY = "$FREQUENCY_QUERY[1]";
$CHANNEL_QUERY->execute( );
while ( ($CHANNEL_SIZE) = @CHANNEL_QUERY = $CHANNEL_QUERY->fetchrow_array() )
{
$CHANNEL_SIZE = "$CHANNEL_QUERY[0]";
$SITE_A_ANTENNA_LENGTH_QUERY->execute( );
foreach ( ($SITE_A_ANTENNA_LENGTH) = @SITE_A_ANTENNA_LENGTH_QUERY = $SITE_A_ANTENNA_LENGTH_QUERY->fetchrow_array() )
{
$SITE_A_ANTENNA_LENGTH = "$SITE_A_ANTENNA_LENGTH_QUERY[0]";
$SITE_B_ANTENNA_LENGTH_QUERY->execute( );
foreach ( ($SITE_B_ANTENNA_LENGTH) = @SITE_B_ANTENNA_LENGTH_QUERY = $SITE_B_ANTENNA_LENGTH_QUERY->fetchrow_array() )
{
$SITE_B_ANTENNA_LENGTH = "$SITE_B_ANTENNA_LENGTH_QUERY[0]";
&conflict_check;
&calculate_rsl;
&calculate_oav_h;
&calculate_oav_v;
&calculate_licence_fee;
$tb->addRow( "$TABLE_ROW_COUNT", "$DATA_RATE Mbps", "$FREQUENCY GHz", "$CHANNEL_SIZE MHz", "$SITE_A_ANTENNA_LENGTH", "$SITE_B_ANTENNA_LENGTH", "$OVERALL_AVAILABILITY_H_RESULT %", "$OVERALL_AVAILABILITY_V_RESULT %", "£$ANNUAL_LICENCE_FEE", "Link Details" );
$TABLE_ROW_COUNT++;
if ($LINK_TYPE eq 'Core Infrastructure') {
if ($OVERALL_AVAILABILITY_H_RESULT >= 99.99) {
$tb->setCellClass ($TABLE_ROW_COUNT, 7, 'tbrowgreen');
}
elsif ($OVERALL_AVAILABILITY_H_RESULT < 99.99) {
$tb->setCellClass ($TABLE_ROW_COUNT, 7, 'tbrowerror');
}
if ($OVERALL_AVAILABILITY_V_RESULT >= 99.99) {
$tb->setCellClass ($TABLE_ROW_COUNT, 8, 'tbrowgreen');
}
elsif ($OVERALL_AVAILABILITY_V_RESULT < 99.99) {
$tb->setCellClass ($TABLE_ROW_COUNT, 8, 'tbrowerror');
}
}
elsif ($LINK_TYPE eq 'Customer Link') {
if ($OVERALL_AVAILABILITY_H_RESULT >= 99.95) {
$tb->setCellClass ($TABLE_ROW_COUNT, 7, 'tbrowgreen');
}
elsif ($OVERALL_AVAILABILITY_H_RESULT < 99.95) {
$tb->setCellClass ($TABLE_ROW_COUNT, 7, 'tbrowerror');
}
if ($OVERALL_AVAILABILITY_V_RESULT >= 99.95) {
$tb->setCellClass ($TABLE_ROW_COUNT, 8, 'tbrowgreen');
}
elsif ($OVERALL_AVAILABILITY_V_RESULT < 99.95) {
$tb->setCellClass ($TABLE_ROW_COUNT, 8, 'tbrowerror');
}
}
}
}
}
}
####
sub conflict_check {
if (($FREQUENCY eq '7') && ($SITE_A_ANTENNA_LENGTH eq '0.3')) {
next;
}
if (($FREQUENCY eq '7') && ($SITE_B_ANTENNA_LENGTH eq '0.3')) {
next;
}
if (($FREQUENCY eq '11') && ($SITE_A_ANTENNA_LENGTH eq '0.3')) {
next;
}
if (($FREQUENCY eq '11') && ($SITE_B_ANTENNA_LENGTH eq '0.3')) {
next;
}
if (($FREQUENCY eq '28') && ($SITE_A_ANTENNA_LENGTH eq '0.8')) {
next;
}
if (($FREQUENCY eq '28') && ($SITE_B_ANTENNA_LENGTH eq '0.8')) {
next;
}
...and so on...