$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...