diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 198395dd..6ebfc221 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -33,7 +33,7 @@ body: attributes: label: Expected behavior description: A clear and concise description of what you expected to happen. - placeholder: I expected... + placeholder: I expected ... validations: required: true - type: textarea diff --git a/SS_benchfore.tpl b/SS_benchfore.tpl index aed9ad82..cd8c4df3 100644 --- a/SS_benchfore.tpl +++ b/SS_benchfore.tpl @@ -798,7 +798,9 @@ FUNCTION void Get_Benchmarks(const int show_MSY) YPR_spr_profit = YPR_spr_revenue - Cost; SPR_Fmult = Fmult; if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - cout << " got Fspr " << SPR_Fmult << " " << SPR_actual / 100. << endl; + { + echoinput << "Calculated Fspr " << SPR_Fmult << " " << SPR_actual / 100. << endl; + } Vbio_spr = totbio; Vbio1_spr = smrybio; Mgmt_quant(10) = equ_F_std; @@ -896,7 +898,7 @@ FUNCTION void Get_Benchmarks(const int show_MSY) Btgt_Fmult = F1(1); if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - cout << " got_F0.1: " << Btgt_Fmult << endl; + echoinput << "Calculated F0.1: " << Btgt_Fmult << endl; SPR_temp = SSB_equil; Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SR_parm_work(2), SR_parm_work(3), SSB_unf, Recr_unf, SPR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR Btgt = Equ_SpawnRecr_Result(1); @@ -1060,7 +1062,9 @@ FUNCTION void Get_Benchmarks(const int show_MSY) Btgt_Fmult = Fmult; if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - cout << " got_Btgt " << Btgt_Fmult << " " << Btgt / SSB_unf << endl; + { + echoinput << "Calculated Btgt: " << Btgt_Fmult << " " << Btgt / SSB_unf << endl; + } YPR_Btgt_enc = YPR_enc; // total encountered yield per recruit YPR_Btgt_dead = YPR_dead; // total dead yield per recruit YPR_Btgt_N_dead = YPR_N_dead; // total dead yield per recruit @@ -1664,14 +1668,14 @@ FUNCTION void Get_Benchmarks(const int show_MSY) Btgt_Fmult2 = Fmult; if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - cout << " got_F_Blimit " << Btgt_Fmult2 << " " << Btgt2 / Blim_report << endl; + echoinput << "Calculated F_Blimit " << Btgt_Fmult2 << " " << Btgt2 / Blim_report << endl; Mgmt_quant(18) = Btgt2; Mgmt_quant(19) = equ_F_std; Mgmt_quant(20) = sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); } // end finding F for Blimit if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - cout << " got Fmsy " << MSY_Fmult << " " << MSY << endl; + echoinput << "Calculated Fmsy " << MSY_Fmult << " " << MSY << endl; // ***************** show management report SS_Label_740 if (show_MSY == 1) diff --git a/SS_global.tpl b/SS_global.tpl index 5c7a1125..5fb2ae86 100644 --- a/SS_global.tpl +++ b/SS_global.tpl @@ -890,7 +890,6 @@ GLOBALS_SECTION BETWEEN_PHASES_SECTION { int j_phase = current_phase(); // this is the phase to come - cout << current_phase() - 1 << " " << niter << " -log(L): " << obj_fun << " between " << endl; // SS_Label_Info_11.1 #Save last value of objective function if (j_phase > 1) @@ -922,16 +921,6 @@ BETWEEN_PHASES_SECTION FINAL_SECTION { // SS_Label_Info_12.1 #Get run ending time - time(&finish); - elapsed_time = difftime(finish, start); - hour = long(elapsed_time) / 3600; - minute = long(elapsed_time) % 3600 / 60; - second = (long(elapsed_time) % 3600) % 60; - cout << endl - << "In final section " << endl; - cout << "Finish time: " << ctime(&finish); - cout << "Elapsed time: "; - cout << hour << " hours, " << minute << " minutes, " << second << " seconds." << endl; if (No_Report == 1) { @@ -940,9 +929,8 @@ FINAL_SECTION else { - cout << " Iterations: " << niter << " -log(L): " << obj_fun << endl; - cout << "Final gradient: " << objective_function_value::pobjfun->gmax << endl - << endl; + cout << "Iterations: " << niter << endl; + echoinput << "Iterations: " << niter << endl; if (objective_function_value::pobjfun->gmax > final_conv) { warnstream << "Final gradient: " << objective_function_value::pobjfun->gmax << " is larger than final_conv: " << final_conv; @@ -997,7 +985,7 @@ FINAL_SECTION } } if (mceval_phase() == 0) - cout << " finished COVAR.SSO" << endl; + echoinput << " finished COVAR.SSO" << endl; } // SS_Label_Info_12.3 #Go thru time series calculations again to get extra output quantities @@ -1013,7 +1001,7 @@ FINAL_SECTION if (Do_Forecast > 0) { show_MSY = 0; - Get_Forecast(); + Get_Forecast(); // First call to forecast } k = Do_Dyn_Bzero; for (j = styr - 2; j <= YrMax; j++) @@ -1062,21 +1050,28 @@ FINAL_SECTION { Get_Benchmarks(show_MSY); if (mceval_phase() == 0) - cout << " finished benchmark" << endl; + { + cout << "Finished calculating benchmarks" << endl; + echoinput << "Finished calculating benchmarks" << endl; + } } } if (Do_Forecast >= 0) { - report5 << "THIS FORECAST FOR PURPOSES OF GETTING DISPLAY QUANTITIES" << endl; + report5 << "THIS FORECAST IS FOR PURPOSES OF GETTING DISPLAY QUANTITIES" << endl; if (did_MSY > 0) show_MSY = 0; // so to not repeat forecast_report.sso Get_Forecast(); - if (mceval_phase() == 0) - cout << " finished forecast" << endl; + if (mceval_phase() == 0) { + cout << "Finished forecast" << endl; + echoinput << "Finished forecast" << endl; + } } if (write_bodywt > 0) { + cout << "Writing wtatage.ss_new" << endl; + echoinput << "Writing wtatage.ss_new" << endl; bodywtout << -9999 << " " << 1 << " " << 1 << " " << 1 << " " << 1 << " " << 0 << " " << Wt_Age_mid(1, 1) << " #terminator " << endl; bodywtout.close(); } @@ -1085,10 +1080,13 @@ FINAL_SECTION // SS_Label_Info_12.3.4 #call fxn STDquant() Process_STDquant(); if (mceval_phase() == 0) - cout << " finished StdDev quantities" << endl; + echoinput << "Finished StdDev quantities" << endl; get_posteriors(); if (mceval_phase() == 0) - cout << " finished posteriors" << endl; + { + cout << "Finished posteriors" << endl; + echoinput << "Finished posteriors" << endl; + } // SS_Label_Info_12.4.2 #Call fxn write_summaryoutput() if (Do_CumReport > 0) @@ -1114,17 +1112,17 @@ FINAL_SECTION // SS_Label_Info_12.4 #Do Outputs // SS_Label_Info_12.4.1 #Call fxn write_bigoutput() write_bigoutput(); - cout << " finished report.sso" << endl; + cout << "Finished final writing of report.sso" << endl; + echoinput << "Finished final writing of report.sso" << endl; } // SS_Label_Info_12.4.4 #Call fxn write_nudata() to create bootstrap data if (N_nudata > 0) { - cout << "Creating bootstrap files: " << N_nudata << " files"; + cout << "Begin writing *.ss_new output files ... "; write_nudata(); - cout << " finished" << endl; - // SS_Label_Info_12.4.5 #Call fxn write_nucontrol() to produce control.ss_new write_nucontrol(); + cout << "Finished writing *.ss_new output files" << endl; } else { @@ -1134,28 +1132,22 @@ FINAL_SECTION } } + echoinput << "Begin final output calculations and warnings" << endl; // SS_Label_Info_12.4.6 #Call fxn write_Bzero_output() appended to report.sso if (pick_report_use(59) == "Y") { - cout << "dynamic Bzero in FINAL_SECTION: "; write_Bzero_output(); - cout << " finished " << endl; } if (pick_report_use(54) == "Y" && Do_Benchmark > 0) { - cout << "setup_benchmark: " << endl; setup_Benchmark(); - cout << "SPR_profile: "; SPR_profile(); - cout << " finished " << endl; } if (pick_report_use(55) == "Y" && Do_Benchmark > 0) { - cout << "Global_MSY: "; Global_MSY(); - cout << " finished " << endl; } if (parm_adjust_method == 3) @@ -1344,7 +1336,8 @@ REPORT_SECTION get_time_series(); // in ADMB's report_section evaluate_the_objective_function(); write_bigoutput(); - cout << "Wrote bigoutput and bodywt for last_phase in REPORT_SECTION and before hessian, no benchmark or forecast " << endl; + echoinput << "Wrote first version of output files (before hessian, benchmark, and forecast)" << endl; + cout << "Wrote first version of output files (before hessian, benchmark, and forecast)" << endl; save_for_report = 0; write_bodywt = 0; // SS2out.close(); diff --git a/SS_objfunc.tpl b/SS_objfunc.tpl index 5c273021..0d6cdab1 100644 --- a/SS_objfunc.tpl +++ b/SS_objfunc.tpl @@ -162,7 +162,7 @@ FUNCTION void evaluate_the_objective_function() } // end having obs for this survey } if (do_once == 1) - cout << " did survey obj_fun " << surv_like << endl; + echoinput << "Finished survey obj_fun " << surv_like << endl; } // SS_Label_Info_25.2 #Fit to discard @@ -234,7 +234,9 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " did discard obj_fun " << disc_like << endl; + { + echoinput << "Finished discard obj_fun " << disc_like << endl; + } } // SS_Label_Info_25.3 #Fit to mean body wt @@ -246,7 +248,7 @@ FUNCTION void evaluate_the_objective_function() mnwt_like(mnwtdata(3, i)) += 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) + mnwtdata(10, i); } if (do_once == 1) - cout << " did meanwt obj_fun " << mnwt_like << endl; + echoinput << " Finished meanwt obj_fun " << mnwt_like << endl; } // SS_Label_Info_25.4 #Fit to length comp @@ -404,7 +406,7 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " did lencomp obj_fun " << length_like_tot << endl; + echoinput << "Finished lencomp obj_fun " << length_like_tot << endl; } // SS_Label_Info_25.5 #Fit to age composition @@ -540,7 +542,7 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " did agecomp obj_fun " << age_like_tot << endl; + echoinput << "Finished agecomp obj_fun " << age_like_tot << endl; } // SS_Label_Info_25.6 #Fit to mean size@age @@ -574,7 +576,7 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " did meanlength obj_fun " << sizeage_like << endl; + echoinput << "Finished meanlength obj_fun " << sizeage_like << endl; } // SS_Label_Info_25.7 #Fit to generalized Size composition @@ -653,7 +655,7 @@ FUNCTION void evaluate_the_objective_function() Morphcomp_like -= Morphcomp_obs(iobs, 5) * Morphcomp_obs(iobs)(6, k) * log(elem_div(Morphcomp_exp(iobs)(6, k), Morphcomp_obs(iobs)(6, k))); } if (do_once == 1) - cout << " did morphcomp obj_fun " << Morphcomp_like << endl; + cout << "Finished morphcomp obj_fun " << Morphcomp_like << endl; } // SS_Label_Info_25.9 #Fit to tag-recapture @@ -692,7 +694,7 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " did tag obj_fun " << TG_like1 << endl + cout << "Finished tag obj_fun " << TG_like1 << endl << TG_like2 << endl; } @@ -706,7 +708,7 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " initequ_catch -log(L) " << equ_catch_like << endl; + echoinput << " initequ_catch -log(L) " << equ_catch_like << endl; // SS_Label_Info_25.11 #Fit to catch by fleet/season if (F_Method > 1) @@ -736,7 +738,7 @@ FUNCTION void evaluate_the_objective_function() } } if (do_once == 1) - cout << " catch -log(L) " << catch_like << endl; + echoinput << " catch -log(L) " << catch_like << endl; } // SS_Label_Info_25.12 #Likelihood for the recruitment deviations @@ -809,7 +811,7 @@ FUNCTION void evaluate_the_objective_function() if (do_recdev == 4) regime_like += square(sum_recdev); if (do_once == 1) - cout << " did recruitdev obj_fun " << recr_like << " " << sd_offset_rec << " " << two_sigmaRsq << endl; + echoinput << "Finished recruitdev obj_fun " << recr_like << " " << sd_offset_rec << " " << two_sigmaRsq << endl; } if (Do_Forecast > 0 && do_recdev > 0) { @@ -1106,7 +1108,7 @@ FUNCTION void evaluate_the_objective_function() if (do_once == 1) { - cout << " OK with obj_func " << obj_fun << endl; + echoinput << " OK with obj_func " << obj_fun << endl; if (SSB_yr(endyr) < 0.01 * SSB_yr(styr)) { warnstream << "1st iteration warning: ssb(endyr)/ssb(styr)= " << SSB_yr(endyr) / SSB_yr(styr) << "; suggest start with larger R0 to get near 0.4; or use depletion fleet option"; @@ -1612,10 +1614,13 @@ FUNCTION void get_posteriors() //******************************************************************** /* SS_Label_FUNCTION 33 get_posteriors (MCMC eval) */ if (rundetail > 1) - cout << " mceval counter: " << mceval_counter << endl; + { + cout << "mceval counter: " << mceval_counter << endl; + } if (rundetail == 0 && double(mceval_counter) / 200. == double(mceval_counter / 200.)) - cout << " mceval counter: " << mceval_counter << endl; - + { + cout << "mceval counter: " << mceval_counter << endl; + } if (mceval_header == 0 && mceval_phase()) // first pass through the mceval phase { // delete any old mcmc output files diff --git a/SS_param.tpl b/SS_param.tpl index a373fb2e..2dc1dbbf 100644 --- a/SS_param.tpl +++ b/SS_param.tpl @@ -17,7 +17,8 @@ PARAMETER_SECTION // clang-format on // set the filename to all ADMB output files to "ss.[ext]" ad_comm::adprogram_name = "ss"; - echoinput << "now in PARAMETER_SECTION " << endl; + echoinput << "Begin setting up parameters" << endl; + cout << "Begin setting up parameters ... "; if (readparfile >= 1) { cout << " read parm file" << endl; diff --git a/SS_popdyn.tpl b/SS_popdyn.tpl index 226bdfbb..89e2d3c6 100644 --- a/SS_popdyn.tpl +++ b/SS_popdyn.tpl @@ -107,13 +107,13 @@ FUNCTION void get_initial_conditions() } #ifdef DO_ONCE if (do_once == 1) - cout << " MG setup OK " << endl; + echoinput << " MGsetup OK " << endl; #endif if (MG_active(2) > 0) get_growth1(); // seasonal effects and CV #ifdef DO_ONCE if (do_once == 1) - cout << " growth1 OK" << endl; + echoinput << " growth1 OK" << endl; #endif if (MG_active(2) > 0 || do_once == 1) { @@ -165,7 +165,7 @@ FUNCTION void get_initial_conditions() #ifdef DO_ONCE if (do_once == 1) - cout << " natmort OK" << endl; + echoinput << "natmort OK" << endl; #endif if (MG_active(4) > 0) @@ -187,7 +187,9 @@ FUNCTION void get_initial_conditions() get_migration(); #ifdef DO_ONCE if (do_once == 1) - cout << " migr OK" << endl; + { + echoinput << "migr OK" << endl; + } #endif if (MG_active(7) > 0) { @@ -211,8 +213,7 @@ FUNCTION void get_initial_conditions() #ifdef DO_ONCE if (do_once == 1) { - cout << " ageerr_key OK" << endl; - echoinput << " ageerr_key recalc in " << y << endl; + echoinput << "age_err key recalc in " << y << endl; } #endif } @@ -226,7 +227,10 @@ FUNCTION void get_initial_conditions() get_selectivity(); #ifdef DO_ONCE if (do_once == 1) - cout << " selex OK, ready to call ALK and fishselex " << endl; + { + echoinput << "selectivity OK" << endl; + echoinput << "Calculate ALK" << endl; + } #endif // SS_Label_Info_23.3 #Loop seasons and subseasons @@ -324,7 +328,7 @@ FUNCTION void get_initial_conditions() #ifdef DO_ONCE if (do_once == 1) - cout << " ready for virgin age struc " << endl; + echoinput << "Begin calculating virgin age struc " << endl; #endif // SS_Label_Info_23.4 #calculate unfished (virgin) numbers-at-age eq_yr = styr - 2; @@ -427,7 +431,7 @@ FUNCTION void get_initial_conditions() // SS_Label_Info_23.5 #Calculate equilibrium using initial F #ifdef DO_ONCE if (do_once == 1) - cout << " ready for initial age struc " << endl; + echoinput << "Begin calculating initial age structure" << endl; #endif eq_yr = styr - 1; bio_yr = styr; diff --git a/SS_prelim.tpl b/SS_prelim.tpl index c42cffdc..a0c82c56 100644 --- a/SS_prelim.tpl +++ b/SS_prelim.tpl @@ -34,6 +34,8 @@ if (WTage_rd > 0) { ad_comm::change_datafile_name("wtatage.ss"); + echoinput << "Begin reading the empirical weight at age file" << endl; + cout << "Reading the empirical weight at age file ..."; *(ad_comm::global_datafile) >> N_WTage_maxage; k = 7 + N_WTage_maxage; echoinput << " N_WTage_max " << N_WTage_maxage << endl; @@ -140,7 +142,8 @@ Wt_Age_t(styr - 3 * nseas + s, f, g) = junkvec2 / temp; } } - echoinput << "finished reading empirical wt-at-age.ss" << endl; + echoinput << "Finished reading the empirical weight at age file" << endl; + cout << "done" << endl; // Done reading the empirical weight at age file } else { @@ -1225,8 +1228,8 @@ } // SS_Label_Info_6.8 #Go thru biological calculations once, with do_once flag=1 to produce extra output to echoinput.sso - cout << " ready to evaluate once in prelim" << endl; - echoinput << " ready to evaluate once in prelim" << endl; + cout << "Evaluating biology calculations once ... "; + echoinput << "Begin evaluating biology calculations once" << endl; ALK_subseas_update = 1; // vector to indicate if ALK needs recalculating do_once = 1; niter = 0; @@ -1238,11 +1241,11 @@ // SS_Label_Info_6.8.1 #Call fxn get_MGsetup() to copy MGparms to working array and applies time-varying factors get_MGsetup(styr); - echoinput << " did MG setup" << endl; + echoinput << "Finished MGsetup" << endl; // SS_Label_Info_6.8.2 #Call fxn get_growth1() to calculate quantities that are not time-varying get_growth1(); - echoinput << " did growth1" << endl; + echoinput << "Finished growth1" << endl; VBK_seas = value(VBK_seas); wtlen_seas = value(wtlen_seas); CVLmin = value(CVLmin); @@ -1387,6 +1390,8 @@ ParmTrace << endl; // SS_Label_Info_6.10 #Preliminary calcs done; Ready for estimation + cout << "done" << endl; // evaluating biology calculations once + echoinput << "Finished evaluating biology calculations once" << endl; if (pick_report_use(60) == "Y") { @@ -1402,12 +1407,12 @@ if (Turn_off_phase < 0) { - cout << " Requested exit after read when turn_off_phase < 0 " << endl; + cout << "Exit requested after read with phase < 0 " << endl; N_nudata = 1; write_nudata(); - cout << " finished nudata report " << endl; + cout << "Finished writing data_echo.ss_new" << endl; write_nucontrol(); - cout << " finished nucontrol report " << endl; + cout << "Finished writing control.ss_new" << endl; exit(1); } @@ -1419,9 +1424,7 @@ } else { - cout << endl - << endl - << "Estimating...please wait..." << endl; + echoinput << endl << endl << "Begin estimating" << endl; } last_objfun = 1.0e30; } // end PRELIMINARY_CALCS_SECTION diff --git a/SS_proced.tpl b/SS_proced.tpl index 78706be0..8d28fff5 100644 --- a/SS_proced.tpl +++ b/SS_proced.tpl @@ -79,12 +79,12 @@ PROCEDURE_SECTION // SS_Label_Info_7.4.1 #Call fxn get_initial_conditions() to get the virgin and initial equilibrium population get_initial_conditions(); if (do_once == 1) - cout << " OK with initial conditions " << endl; + echoinput << "Finished initial_conditions" << endl; // SS_Label_Info_7.4.2 #Call fxn get_time_series() to do population calculations for each year and get expected values for observations get_time_series(); // in procedure_section if (do_once == 1) { - cout << " OK with time series" << endl; + echoinput << "Finished time_series" << endl; } // SS_Label_Info_7.4.3 #Call fxn evaluate_the_objective_function() @@ -141,8 +141,9 @@ PROCEDURE_SECTION show_MSY = 1; } // so only show details if not in mceval if (show_MSY == 1) - cout << "do benchmark and forecast if requested in sdphase" << endl; - + { + echoinput << "Start benchmark and forecast, if requested" << endl; + } setup_recdevs(); y = styr; get_initial_conditions(); @@ -164,8 +165,10 @@ PROCEDURE_SECTION // SS_Label_Info_7.7 #Call fxn Process_STDquant() to move calculated values into sd_containers Process_STDquant(); - if (rundetail > 0 && mceval_phase() == 0) - cout << "finished benchmark, forecast, and sdreporting" << endl; + if (mceval_phase() == 0) + { + echoinput << "Finished benchmark, forecast, and sdreporting" << endl; + } } // end of things to do in std_phase // SS_Label_Info_7.9 #Do screen output of procedure results from this iteration diff --git a/SS_readcontrol_330.tpl b/SS_readcontrol_330.tpl index c40e4ad7..d070dd60 100644 --- a/SS_readcontrol_330.tpl +++ b/SS_readcontrol_330.tpl @@ -17,7 +17,7 @@ echoinput << endl << " Begin reading control file " << endl; cout << " reading from control file" << endl; - ifstream Control_Stream(ctlfilename); // even if the global_datafile name is used, there still is a different logical device created + ifstream Control_Stream(ctlfilename); // even if the global_datafile name is used, there still is a different logical device created // SS_Label_Info_4.1 #Read and store comments at top of control file k = 0; @@ -4341,7 +4341,7 @@ TwoD_AR_cnt = 0; echoinput << " now read 0/1 for 2D_AR" << endl; *(ad_comm::global_datafile) >> TwoD_AR_do; - echoinput << TwoD_AR_do << " #_ 0/1 to request experimental 2D_AR selectivity smoother options " << endl; + echoinput << TwoD_AR_do << " #_ 0/1 to request experimental 2D_AR selectivity smoother options " << endl; if (TwoD_AR_do > 0) { @@ -4696,7 +4696,7 @@ k = 3 * N_TG + 2 * Nfleet1; for (j = 1; j <= k; j++) TG_parm_PH(j) = TG_parm2(j, 7); // write it out due to no typecast available - echoinput << "create tag labels " << endl; + echoinput << "create tag labels " << endl; // SS_Label_Info_4.10.1 #Create parameter count and parameter names for tag parameters onenum = " "; firsttagparm = ParCount; diff --git a/SS_readdata_330.tpl b/SS_readdata_330.tpl index 7e4e3874..9f895a4a 100644 --- a/SS_readdata_330.tpl +++ b/SS_readdata_330.tpl @@ -16,6 +16,7 @@ // clang-format on // ad_comm::change_datafile_name(datfilename); + if (finish_starter == 999) { warnstream << "finish_starter=999, so probably used a 3.24 starter.ss; please update"; @@ -1111,7 +1112,7 @@ } } } - echoinput << "Successful read of discard data " << endl; + echoinput << "Successful read of discard data " << endl; echoinput << "Index Survey_name N Super_Per Min_val max_val // Observations:" << endl; for (f = 1; f <= Nfleet; f++) { diff --git a/SS_write.tpl b/SS_write.tpl index 85630718..f5adc79e 100644 --- a/SS_write.tpl +++ b/SS_write.tpl @@ -794,7 +794,7 @@ FUNCTION void write_SS_summary() // report2 < j) {