VOID r_nxt_row() { /* start of routine */ St_in_retrieve = TRUE; /* process any breaks */ if (St_before_report) { St_break = Ptr_brk_top; /* set up error report flags */ Cact_attribute = NAM_REPORT; Cact_tname = NAM_HEADER; r_do_header(St_break); r_trunc(); r_brkdisp(); St_before_report = FALSE; } else { r_trunc(); r_brkdisp(); if ((St_break = r_find_brk()) != NULL) { Cact_tname = NAM_FOOTER; r_do_footer(St_break); Cact_tname = NAM_HEADER; r_do_header(St_break); } } /* process the detail text */ Cact_attribute = Cact_tname = NAM_DETAIL; r_x_tcmd(Ptr_det_brk->brk_header); r_mov_dat(); /* move data to previous ** spot */ return; }
VOID r_do_page() { /* internal declarations */ bool no_write = FALSE; /* true if St_no_write TRUE ** on entry. */ DB_DATA_VALUE ffdbv; DB_TEXT_STRING *fftext; char ffbuf[20]; /* start of routine */ if (St_p_length <=0) { /* never do page breaks on 0 length page */ return; } St_in_pbreak = TRUE; if (St_no_write) { /* nothing written yet */ r_set_dflt(); no_write = TRUE; /* need to know later */ } /* note: r_set_dflt sets St_no_write to FALSE */ /* temporarily save the current environment */ r_switch(); r_ln_clr(Ptr_pln_top); /* clear out page buffers */ r_x_tab(St_p_lm,B_ABSOLUTE); /* set up error flag switch */ Cact_tname = NAM_FOOTER; if (!no_write) { r_x_tcmd((Ptr_pag_brk)->brk_footer); if ((St_c_cblk>0) || (St_c_lntop->ln_started!=LN_NONE)) { /* something left in the line buffers. Write out */ St_c_cblk = 0; r_x_newline(1); } /* Bug # 3902 */ if (St_ff_on && !St_to_term ) r_wrt(En_rf_unit, ERx("\f"), 1); else if( St_to_term && St_ff_on) { ffdbv.db_data = (PTR) ffbuf; ffdbv.db_length = 1; ffdbv.db_prec = 0; ffdbv.db_datatype = DB_LTXT_TYPE; fftext = (DB_TEXT_STRING *) ffbuf; STcopy(ERx("\f"), (PTR)fftext->db_t_text); fftext->db_t_count = 1; r_x_print( &ffdbv, ffdbv.db_length, FALSE); } } /* determine the next page number */ if (St_nxt_page >= 0) { St_p_number = St_nxt_page; St_nxt_page = -1; } else if (!no_write) { St_p_number++; } St_l_number = 1; St_pos_number = 1; /* if the St_do_phead is set to FALSE (at the very end of the ** report, don't put out a header for the next page */ if (St_do_phead == TRUE) { Cact_tname =NAM_HEADER; r_x_tcmd((Ptr_pag_brk)->brk_header); } St_in_pbreak = FALSE; if( St_adjusting) { r_stp_adjust(); /* in case anything is there */ } if ((St_c_cblk>0) || (St_c_lntop->ln_started!=LN_NONE)) { /* something left in the line buffers. Write out */ St_c_cblk = 0; r_x_newline(1); } /* get back the old environment */ r_switch(); r_x_tab(St_left_margin,B_ABSOLUTE); /* go to report margin */ return; }