Sure, use the shared variable to pass values back and forth, for example:
Main report
Group header formula:
whileprintingrecords;
shared numbervar SubPassedNum := 0;
Then in the details you call a subreport, and in the subreport you want to return a value to the main report:
Subreport report footer:
whileprintingrecords;
shared numbervar SubPassedNum := sum({table.field});
Then back in the main report you want to use the subreport value:
Main report
Group Footer formula:
whileprintingrecords;
shared numbervar SubPassedNum;
{maintable.somefield}-SubPassedNum
-k