*************************************************************************** *** Program:.... SYS_FLOW.PRG: System Program Flow *** Updated:.... March 30, 1991 *** Programmer:. R. Paulk *** Notice:..... Copyright (c) Ingenuity, Inc., 1990 **************************************************************************** PARAMETERS rpt_action, page_ct, line_ct SELECT sys_rpts * Set Variables For This Report STORE .F. TO mprg_text, msys_name, mmin_call, mpg_wksht, cal_runtime,; bld_cald, bld_main, bld_clby, prnt_cald, prnt_clby runtm_st = SECONDS() STORE 0 TO prg_cnt, txt_stct, ptxt_lns, pflowxcnt, cald_cnt, clby_cnt,; minor_cnt STORE 1 TO tclby_rec, tminor_rec STORE "" TO proc_done, pproc_name, ptxt_str qpage_ct = page_ct * Process This Report Based On Action Requested IF rpt_action = "Update Features" PUBLIC feat_aray[6] feat_aray[1] = " Include ALL Available Features In This Report"+ SPACE(6) +"ALL_FEAT" feat_aray[2] = " Summary Report -- No Expansion Features Selected"+ SPACE(3) +"SUMMARY" feat_aray[3] = "Include Narrative Description For Each Program"+ SPACE(7) +"PRG_TEXT" feat_aray[4] = "Include System Names & Technical Details"+ SPACE(13) +"SYS_NAME" feat_aray[5] = "Include Minor Procedure & Function Calls"+ SPACE(13) +"MIN_CALL" feat_aray[6] = "Start Each Program On New Page - Worksheet"+ SPACE(11) +"PG_WKSHT" * Insure That Indexes Appropriate For This Report Is Correct IF TRIM(sys_rpts->ntxs_ok) <> "07/SYS7PRGS" REPLACE sys_rpts->ntxs_ok WITH "07/SYS7PRGS" ENDIF RETURN ENDIF SET DEVICE TO PRINT line_ct = line_ct + 3 @ PROW() + 1, 0 SAY "" @ PROW() + 1, mrgn SAY CHR(201) + REPLICATE(CHR(205), 17) +; "µ Report Features Selected Æ" + REPLICATE(CHR(205), 18) + CHR(187) @ PROW() + 1, mrgn SAY CHR(186) + " The Following Features Were Selected For This Report" @ PROW(), mrgn + 64 SAY CHR(186) FOR n = 1 TO LEN(feat_aray) IF CHR(251) $ feat_aray[n] line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY CHR(186) + " " + SUBSTR(feat_aray[n], 1, 52) @ PROW(), mrgn + 64 SAY CHR(186) IF "ALL_FEAT" $ feat_aray[n] STORE .T. TO cal_runtime, mprg_text, msys_name, mmin_call, mpg_wksht ELSEIF "PRG_TEXT" $ feat_aray[n] STORE .T. TO mprg_text ELSEIF "SYS_NAME" $ feat_aray[n] STORE .T. TO msys_name ELSEIF "MIN_CALL" $ feat_aray[n] STORE .T. TO mmin_call ELSEIF "PG_WKSHT" $ feat_aray[n] STORE .T. TO mpg_wksht ELSEIF "SUMMARY" $ feat_aray[n] STORE .F. TO mprg_text, msys_name, mmin_call, mpg_wksht ENDIF ENDIF NEXT line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY CHR(200) + REPLICATE(CHR(205), 63) +CHR(188) CLEAR TYPEAHEAD * If Individual Worksheets Are Required For Each Program IF mpg_wksht FOR n = 1 TO ((max_lines - line_ct) / 2) - 7 line_ct = line_ct + 1 @ PROW() + 1, 00 SAY "" NEXT line_ct = line_ct + 7 @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 65) @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 3) + SPACE(4) +; "Individual Work Sheets For Each Program Will Begin " + SPACE(3) +; REPLICATE(CHR(4), 3) @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 3) + SPACE(4) +; "On The Following Page -- A Table Of Contents Will " + SPACE(3) +; REPLICATE(CHR(4), 3) @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 3) + SPACE(4) +; "Be Printed At The End Of This Report -- Please Place" + SPACE(3) +; REPLICATE(CHR(4), 3) @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 3) + SPACE(4) +; "This Table Of Contents In Front Of This Page Before " + SPACE(3) +; REPLICATE(CHR(4), 3) @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 3) + SPACE(4) +; "Distributing Report " + SPACE(3) +; REPLICATE(CHR(4), 3) @ PROW() + 1, mrgn SAY REPLICATE(CHR(4), 65) SELECT sys_tblc ZAP APPEND BLANK REPLACE sys_tblc->topic WITH " Report Definition Parameters",; sys_tblc->page WITH page_ct ENDIF * Now Get On With The Report line_ct = max_lines + 1 SET DEVICE TO SCREEN CTR_STR(23, " * * * * Printing Report * * * * ", sys_wrkng) *** Programs SELECT sys_call STORE 0 TO pflowxcnt, maxflow_cnt STORE 1 TO pflow_cnt qpage_ct = page_ct + 1 SELECT sys_prgs cal_runtime = IIF(EMPTY(DBFILTER()), cal_runtime, .F.) GOTO TOP prgs_fltr = DBFILTER() DO WHILE !EOF() maxflow_cnt = MAX(sys_prgs->prg_flow, maxflow_cnt) SKIP ENDDO GOTO TOP pproc_rec = RECNO() DO WHILE pflow_cnt <= maxflow_cnt .AND. !EOF() .AND. !abort IF NEXTKEY() <> 0 SET DEVICE TO SCREEN _INKEY("SYS_FLOW", PROCLINE(), .T., .T.) ENDIF * Test Printer Readiness st_tout = SECONDS() DO WHILE rpt_outdev = "LPT1" .AND. !ISPRINTER() .AND. !abort IF (SECONDS() - st_tout) > 60 SET DEVICE TO SCREEN CTR_STR(23, "Printer Not Ready -- Correct Then Any Key To Continue/Escape To Abort", sys_msgs) BEEP("error") key = _INKEY("SYS_FLOW", PROCLINE()) ENDIF ENDDO IF abort LOOP ENDIF SET DEVICE TO PRINT IF line_ct > max_lines EJECT page_ct = page_ct + 1 phdr_aray[1] = "Page No. " + LTRIM(TRAN(page_ct,"99,999")) FOR n = 1 TO LEN(phdr_aray) @ PROW() + 1, M->mrgn SAY SUBSTR(phdr_aray[n], 1, 65) NEXT line_ct = LEN(phdr_aray) ENDIF SET DEVICE TO SCREEN SETCOLOR(sys_hdhi) @ 24, 57 SAY STR(page_ct,3) PICTURE "999" SET DEVICE TO PRINT SET EXACT ON IF (txt_stct > 0) .OR. (qpage_ct <> page_ct .AND. pflow_cnt = pflowxcnt) cntd_txt = REPLICATE(CHR(4), 3) + " " + pproc_type + ": " +; pproc_title + " " + REPLICATE(CHR(4), 3) ctr_pad = ((65 - LEN(cntd_txt)) / 2) line_ct = line_ct + 5 @ PROW() + 1, mrgn + ctr_pad SAY cntd_txt @ PROW() + 1, mrgn + ctr_pad SAY REPLICATE(CHR(205), LEN(cntd_txt)) @ PROW() + 1, 0 SAY "" cntd_txt = "Flow Diagram Sequence #" + TRANSFORM(pflow_cnt, "999") + " Continued" ctr_pad = ((65 - LEN(cntd_txt)) / 2) @ PROW() + 1, mrgn + ctr_pad SAY cntd_txt @ PROW() + 1, 0 SAY "" IF ptxt_lns > 0 line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY CHR(201) + REPLICATE(CHR(205), dx_wide) + CHR(187) ENDIF ENDIF * New Program IF pflow_cnt <> pflowxcnt .AND. qpage_ct = page_ct IF line_ct + 5 >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF IF mpg_wksht .AND. line_ct > 15 line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF line_ct = line_ct + 2 @ PROW() + 2, mrgn SAY " " SELECT sys_prgs GOTO pproc_rec DO WHILE !EOF() SET DEVICE TO SCREEN SETCOLOR(sys_hdhi) @ 24, 73 SAY TRANSFORM(RECNO(), "9,999") IF NEXTKEY() <> 0 _INKEY("SYS_FLOW", PROCLINE(), .T., .T.) ENDIF SET DEVICE TO PRINT DO WHILE sys_prgs->prg_flow > pflow_cnt pflow_cnt = pflow_cnt + 1 ENDDO IF sys_prgs->prg_flow = pflow_cnt .AND. sys_prgs->proc_lncnt > 0 pflowxcnt = pflow_cnt pproc_rec = RECNO() EXIT ENDIF SKIP ENDDO IF pflow_cnt > maxflow_cnt LOOP ENDIF pproc_title = TRIM(sys_prgs->help_hdr) pproc_title = IIF(" " $ pproc_title,; STUFF(pproc_title, AT(" ", pproc_title), 2, ""), pproc_title) pproc_name = UPPER(TRIM(sys_prgs->procname)) pproc_lncnt = "Ln Cnt: " + TRANSFORM(sys_prgs->proc_lncnt, "9,999") + " " pproc_type = IIF(sys_prgs->include_in $ "WXZ","WIP Note ",; IIF(sys_prgs->no_code,"No Code ",; IIF(sys_prgs->type_code = "FC","Function ",; IIF(sys_prgs->type_code = "PC","Procedure",; IIF(sys_prgs->type_code = "MT","Menu ",; IIF(sys_prgs->type_code = "MP","Option ","Program ")))))) SELECT sys_tblc APPEND BLANK REPLACE sys_tblc->topic WITH TRANSFORM(pflow_cnt, "999") + " " + pproc_title,; sys_tblc->page WITH page_ct cntd_txt = REPLICATE(CHR(4), 3) + " " + pproc_type + ": " +; pproc_title + " " + REPLICATE(CHR(4), 3) ctr_pad = ((65 - LEN(cntd_txt)) / 2) line_ct = line_ct + 5 @ PROW() + 1, mrgn + ctr_pad SAY cntd_txt @ PROW() + 1, mrgn + ctr_pad SAY REPLICATE(CHR(205), LEN(cntd_txt)) @ PROW() + 1, 0 SAY "" cntd_txt = "Flow Diagram Sequence #" + TRANSFORM(pflow_cnt, "999") ctr_pad = ((65 - LEN(cntd_txt)) / 2) @ PROW() + 1, mrgn + ctr_pad SAY cntd_txt @ PROW() + 1, 0 SAY "" * Make Called By Boxes STORE 0 TO cald_cnt, clby_cnt, minor_cnt STORE .T. TO bld_cald, bld_main, bld_clby ENDIF SELECT sys_call SET ORDER TO 2 IF bld_cald bld_cald = .F. LOCATE FOR UPPER(TRIM(sys_call->proc_cald)) == pproc_name prnt_cald = IIF(FOUND(), .T., prnt_cald) proc_done = "" ENDIF IF prnt_cald DO WHILE !EOF() .AND. UPPER(TRIM(sys_call->proc_cald)) == pproc_name IF line_ct + 7 >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 EXIT ENDIF clby_name = UPPER(TRIM(sys_call->proc_clby)) IF !(clby_name $ proc_done) proc_done = proc_done + clby_name + "[]" SELECT sys_prgs IF !EMPTY(prgs_fltr) SET FILTER TO GOTO TOP ENDIF LOCATE FOR UPPER(TRIM(sys_prgs->procname)) == clby_name c_desc = sys_prgs->help_hdr c_desc = IIF(" " $ c_desc,; STUFF(c_desc, AT(" ", c_desc), 2, ""), c_desc) c_lncnt = "Ln Cnt: " + TRANSFORM(sys_prgs->proc_lncnt, "9,999") + " " IF !EMPTY(prgs_fltr) h_pack() SET FILTER TO &prgs_fltr. GOTO TOP ENDIF GOTO pproc_rec c_len = cald_cnt + 3 + LEN(c_desc) c_wide = IIF(c_len > 65, 40 - (c_len - 65), 40) c_desc = IIF(c_wide = 40, c_desc, SUBSTR(c_desc, 1, c_wide)) line_ct = line_ct + 2 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), cald_cnt) + " " + CHR(218) +; REPLICATE(CHR(196), c_wide + 2) + CHR(191) @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), cald_cnt) +; CHR(218) + CHR(180) + " " + c_desc +; REPLICATE(" ", c_wide - LEN(c_desc)) + " " + CHR(179) cald_cnt = cald_cnt + 1 IF msys_name line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), cald_cnt) + CHR(179) +; " " + clby_name + REPLICATE(" ", (c_wide - (LEN(clby_name) + LEN(c_lncnt)))) +; c_lncnt + " " + CHR(179) ENDIF line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), cald_cnt) + CHR(192) +; REPLICATE(CHR(196), c_wide + 2) + CHR(217) ENDIF SELECT sys_call SKIP ENDDO IF line_ct >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF line_ct = line_ct + 3 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), cald_cnt) @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(31), cald_cnt) + " Called By" @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), cald_cnt) prnt_cald = .F. ENDIF SELECT sys_prgs GOTO pproc_rec IF bld_main IF line_ct + 6 >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF bld_main = .F. dx_wide = IIF(mprg_text, 67, 46) line_ct = line_ct + 2 @ PROW() + 1, mrgn SAY CHR(201) + REPLICATE(CHR(207), cald_cnt) +; REPLICATE(CHR(205), dx_wide - cald_cnt) + CHR(187) dx_title = " " + CHR(4) + " " + pproc_title + " " + CHR(4) @ PROW() + 1, mrgn SAY CHR(186) + dx_title +; REPLICATE(" ", dx_wide - LEN(dx_title)) + CHR(186) IF msys_name line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY CHR(186) + " " + pproc_name +; REPLICATE(" ", ((dx_wide - 6) - (LEN(pproc_name) + LEN(pproc_lncnt)))) +; pproc_lncnt + " " + CHR(186) ENDIF IF mprg_text line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY CHR(199) + REPLICATE(CHR(196), dx_wide) + CHR(182) ENDIF txt_stct = 1 ENDIF IF mprg_text .AND. txt_stct = 1 IF !EMPTY(sys_prgs->help_text) ptxt_str = pproc_type + " Description & Comments: " + TRIM(sys_prgs->help_text) ELSE ptxt_str = "No Description Or Comments Available For This " + pproc_type ENDIF ptxt_lns = MLCOUNT(ptxt_str, 65, 4, .T.) ENDIF IF mprg_text .AND. ptxt_lns > 0 FOR cur_ln = txt_stct TO ptxt_lns IF NEXTKEY() <> 0 SET DEVICE TO SCREEN _INKEY("SYS_FLOW", PROCLINE(), .T., .T.) SET DEVICE TO PRINT ENDIF line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY CHR(186) + " " + MEMOLINE(ptxt_str, 65, cur_ln, 4, .T.) + " " + CHR(186) ptxt_lns = IIF(cur_ln = ptxt_lns, 0, ptxt_lns) ptxt_str = IIF(cur_ln = ptxt_lns, "", ptxt_str) IF (ptxt_lns > 0 .AND. line_ct + 2 >= max_lines) @ PROW() + 1, mrgn SAY CHR(200) +; REPLICATE(CHR(205), dx_wide) + CHR(188) line_ct = max_lines + 1 txt_stct = cur_ln + 1 EXIT ELSE txt_stct = 0 ENDIF NEXT IF line_ct >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF ENDIF * ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ * Ú´ Name Of Program/Procedure/Function ³ * ³³ XXXXXXXX.XXX Ln Cnt: 9,999 ³ * ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ * ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ * ³Ú´ Name Of Program/Procedure/Function ³ * ³³³ XXXXXXXX.XXX Ln Cnt: 9,999 ³ * ³³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ * ³³ *  Called By * ³³ *ÉÏÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» *º  Program/Procedure/Function Title  º *º XXXXXXXX.XXX Ln Cnt: 9,999 º *ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ *º Text º *º º *ÈÑÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ * ³³ *  Calls * ³³ * ³³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ * ³À´ Name Of Program/Procedure/Function ³ * ³ ³ XXXXXXXX.XXX Ln Cnt: 9,999 ³ * ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ * ³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ * À´ Name Of Program/Procedure/Function ³ * ³ XXXXXXXX.XXX Ln Cnt: 9,999 ³ * ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ SELECT sys_call SET ORDER TO 1 IF bld_clby .AND. ptxt_lns = 0 bld_clby = .F. proc_done = "" LOCATE FOR UPPER(TRIM(sys_call->proc_clby)) == pproc_name prnt_clby = IIF(FOUND(), .T., prnt_clby) IF FOUND() .AND. mmin_call .AND. sys_call->minor_call > 0 tminor_rec = RECNO() clby_cnt = clby_cnt + 1 ENDIF DO WHILE !EOF() .AND. sys_call->minor_call > 0 .AND.; UPPER(TRIM(sys_call->proc_clby)) == pproc_name minor_cnt = IIF(mmin_call, minor_cnt + 1, minor_cnt) SKIP ENDDO tclby_rec = RECNO() DO WHILE !EOF() .AND. UPPER(TRIM(sys_call->proc_clby)) == pproc_name cald_name = UPPER(TRIM(sys_call->proc_cald)) IF !(cald_name $ proc_done) proc_done = proc_done + cald_name + "[]" clby_cnt = clby_cnt + 1 ENDIF SKIP ENDDO line_ct = line_ct + 4 @ PROW() + 1, mrgn SAY CHR(200) + REPLICATE(CHR(209), clby_cnt) +; REPLICATE(CHR(205), dx_wide - clby_cnt) + CHR(188) @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) msg = IIF(clby_cnt > 0, " Calls", " No Calls Made To Other Programs/Procedures/Functions") @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(31), clby_cnt) + msg @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) proc_done = "" ENDIF IF prnt_clby .AND. clby_cnt > 0 SELECT sys_call GOTO tclby_rec DO WHILE !EOF() .AND. UPPER(TRIM(sys_call->proc_clby)) == pproc_name IF line_ct + 4 >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 EXIT ENDIF cald_name = UPPER(TRIM(sys_call->proc_cald)) IF !(cald_name $ proc_done) proc_done = proc_done + cald_name + "[]" SELECT sys_prgs IF !EMPTY(prgs_fltr) SET FILTER TO GOTO TOP ENDIF LOCATE FOR UPPER(TRIM(sys_prgs->procname)) == cald_name .AND.; sys_prgs->proc_lncnt > 0 c_desc = sys_prgs->help_hdr c_desc = IIF(" "$ c_desc,; STUFF(c_desc, AT(" ", c_desc), 2, ""), c_desc) c_lncnt = "Ln Cnt: " + TRANSFORM(sys_prgs->proc_lncnt, "9,999") + " " line_ct = line_ct + 1 IF !EMPTY(prgs_fltr) h_pack() SET FILTER TO &prgs_fltr. GOTO TOP ENDIF GOTO pproc_rec c_len = clby_cnt + 3 + LEN(c_desc) c_wide = IIF(c_len > 65, 40 - (c_len - 65), 40) c_desc = IIF(c_wide = 40, c_desc, SUBSTR(c_desc, 1, c_wide)) @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + CHR(218) +; REPLICATE(CHR(196), c_wide + 2) + CHR(191) clby_cnt = clby_cnt - 1 line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) +; CHR(192) + CHR(180) + " " + c_desc +; REPLICATE(" ", c_wide - LEN(c_desc)) + " " + CHR(179) IF msys_name line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + " " +; CHR(179) + " " + cald_name + REPLICATE(" ", (c_wide - (LEN(cald_name) +; LEN(c_lncnt)))) + c_lncnt + " " + CHR(179) ENDIF line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + " " + CHR(192) +; REPLICATE(CHR(196), c_wide + 2) + CHR(217) ENDIF SELECT sys_call SKIP ENDDO IF line_ct >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF prnt_clby = .F. ENDIF IF mmin_call .AND. clby_cnt > 0 SELECT sys_call GOTO tminor_rec IF line_ct + minor_cnt + 3 >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF line_ct = line_ct + 1 minor_hdr = CHR(180) + " Minor Function & Procedure Calls " + CHR(195) ln = (42 - LEN(minor_hdr)) / 2 minor_hdr = REPLICATE(CHR(196), ln) + minor_hdr ln = 42 - LEN(minor_hdr) minor_hdr = minor_hdr + REPLICATE(CHR(196), ln) @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + CHR(218) +; minor_hdr + CHR(191) minor_max = minor_cnt DO WHILE !EOF() .AND. sys_call->minor_call > 0 .AND.; UPPER(TRIM(sys_call->proc_clby)) == pproc_name cald_name = UPPER(TRIM(sys_call->proc_cald)) SELECT sys_prgs IF !EMPTY(prgs_fltr) SET FILTER TO GOTO TOP ENDIF LOCATE FOR UPPER(TRIM(sys_prgs->procname)) == cald_name .AND.; sys_prgs->proc_lncnt > 0 c_desc = sys_prgs->help_hdr c_desc = IIF(" "$ c_desc,; STUFF(c_desc, AT(" ", c_desc), 2, "") + " ", c_desc) c_lncnt = "Ln Cnt: " + TRANSFORM(sys_prgs->proc_lncnt, "9,999") + " " IF !EMPTY(prgs_fltr) h_pack() SET FILTER TO &prgs_fltr. GOTO TOP ENDIF GOTO pproc_rec clby_cnt = clby_cnt - 1 line_ct = line_ct + 1 IF minor_cnt = minor_max @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) +; CHR(192) + CHR(180) + " " + c_desc + " " + CHR(179) ELSE @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + " " +; CHR(179) + " " + c_desc + " " + CHR(179) ENDIF minor_cnt = minor_cnt - 1 IF msys_name line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + " " + CHR(179) +; " " + cald_name + REPLICATE(" ", (40 - (LEN(cald_name) + LEN(c_lncnt)))) +; c_lncnt + " " + CHR(179) ENDIF SELECT sys_call SKIP ENDDO line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY " " + REPLICATE(CHR(179), clby_cnt) + " " + CHR(192) +; REPLICATE(CHR(196), 42) + CHR(217) IF line_ct >= max_lines line_ct = max_lines + 1 qpage_ct = qpage_ct + 1 LOOP ENDIF ENDIF qpage_ct = page_ct SELECT sys_prgs IF pflow_cnt < maxflow_cnt GOTO pproc_rec ENDIF pflow_cnt = pflow_cnt + 1 IF pflow_cnt > maxflow_cnt EXIT ENDIF ENDDO line_ct = line_ct + 1 @ PROW() + 1, IIF(mrgn > 0, mrgn - 1, mrgn) SAY "" @ PROW() + 1, mrgn + 36 SAY "" @ PROW() + 1, 0 SAY [] && Get Last Line From Some Printers tot_pages = page_ct IF mpg_wksht SELECT sys_tblc GOTO TOP page_ct = 0 DO WHILE !EOF() * Test Printer Readiness st_tout = SECONDS() DO WHILE rpt_outdev = "LPT1" .AND. !ISPRINTER() IF (SECONDS() - st_tout) > 60 SET DEVICE TO SCREEN CTR_STR(23, "Printer Not Ready -- Correct Then Any Key To Continue/Escape To Abort", sys_msgs) BEEP("error") key = _INKEY("SYS_FLOW", PROCLINE()) ENDIF ENDDO SET DEVICE TO PRINT EJECT page_ct = page_ct + 1 phdr_aray[1] = "Table Of Contents -=- Page No. " + LTRIM(TRAN(page_ct,"99,999")) FOR n = 1 TO LEN(phdr_aray) @ PROW() + 1, M->mrgn SAY SUBSTR(phdr_aray[n], 1, 65) NEXT line_ct = LEN(phdr_aray) + 6 @ PROW() + 1, 22 SAY "T A B L E O F C O N T E N T S" @ PROW() + 3, mrgn SAY "Seq # P R O G R A M / P R O C / F U N C T I O N" @ PROW(), mrgn + 58 SAY "P A G E" @ PROW() + 1, mrgn SAY REPLICATE(CHR(205), 65) @ PROW() + 1, 0 SAY "" DO WHILE !EOF() repeat_dot = INT((59 - LEN(TRIM(sys_tblc->topic))) / 2) line_ct = line_ct + 1 @ PROW() + 1, mrgn SAY TRIM(sys_tblc->topic) + REPLICATE(" .", repeat_dot) @ PROW(), mrgn + 60 SAY sys_tblc->page PICTURE "9,999" SKIP IF line_ct > max_lines EXIT ENDIF ENDDO ENDDO tot_pages = tot_pages + page_ct ENDIF EJECT SET DEVICE TO SCREEN SELECT sys_rpts IF (!abort .AND. cal_runtime) .OR. EMPTY(sys_rpts->est_runtim) REPLACE sys_rpts->est_runtim WITH TSTRING((SECONDS() - runtm_st)),; sys_rpts->est_pages WITH tot_pages ENDIF REPLACE sys_rpts->rpt_last_d WITH DATE(), sys_rpts->rpt_last_t WITH TIME() IF SELECT("sys_tblc") <> 0 SELECT sys_tblc ZAP USE ENDIF IF SELECT("sys_call") <> 0 SELECT sys_call USE ENDIF RELEASE ALL RETURN