home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1989-10-16 | 41.8 KB | 1,313 lines
******************** PROCEDURE Reporter PARAMETERS which_sst, thru_what, macros_arr with_file = !(PCOUNT() = 0) IF PCOUNT() = 1 thru_what = 1 IF TYPE("which_sst") = "A" PUBLIC macplus[LEN(which_sst)+8] ACOPY(which_sst, macplus, 1, LEN(which_sst), 9) with_file = .F. ELSE PUBLIC macplus[8] ENDIF macplus[1] = "Double" macplus[2] = "Single" macplus[3] = "Begin Macro" macplus[4] = "End Macro" macplus[5] = "Hyphens" macplus[6] = "Page No." macplus[7] = "Date" macplus[8] = "Time" ELSEIF PCOUNT() = 2 .OR. PCOUNT() = 0 PUBLIC macplus[8] macplus[1] = "Double" macplus[2] = "Single" macplus[3] = "Begin Macro" macplus[4] = "End Macro" macplus[5] = "Hyphens" macplus[6] = "Page No." macplus[7] = "Date" macplus[8] = "Time" ELSEIF PCOUNT() = 3 PUBLIC macplus[LEN(macros_arr)+8] ACOPY(macros_arr, macplus, 1, LEN(macros_arr), 9) macplus[1] = "Double" macplus[2] = "Single" macplus[3] = "Begin Macro" macplus[4] = "End Macro" macplus[5] = "Hyphens" macplus[6] = "Page No." macplus[7] = "Date" macplus[8] = "Time" ENDIF Wpush() IF with_file IF !FILE(which_sst + ".SST") Wpop() RETURN ENDIF ENDIF ret_area = LTRIM(TRIM(STR(SELECT()))) filerthere = .F. FOR _qaz = 1 TO 8 SELECT (_qaz) IF !EMPTY(ALIAS()) filerthere = .T. ENDIF NEXT SELECT &ret_area. IF !filerthere @ 24,00 @ 24,00 SAY "No Files are available in the first 8 work areas!" INKEY(0) Wpop() RETURN ENDIF Savearray("Array1", allscreens) Savearray("Array2", allcolor) Savearray("Array3", allwindows) SAVE ALL LIKE * TO Holding.sys IF with_file Init_rpt(which_sst, thru_what) ELSE Reporting() ENDIF Cleanrptup() Wpop() ******************** PROCEDURE Reporting ************************************************************** * ssthead1 - 6 The header for the reports * * sstfoot1 - 3 The footer for reports * * sstcon1 - 12 The contents of the report * * sst_filter The DO WHILE/FILTER for report * * sstfile * * ssttotal1 - 3 The 3 total fields * * ssthcnt The # of lines to print for header * * sstfcnt The # of lines to print for footer * * sstccnt The # of lines to print for contents * * sst_f_str * * sst_ndx * * sst_t_file * * sst_t_ndx * * sstgroup The field the GROUP is made on * * sstsgroup The fields the SUB-GROUP is made on * * ssttotal1 - 3 The names of the fields for Grand Totals * * sststot1 - 3 The names of the fields for Sub Totals * * sst_newg * * sstgname The name of the .GRP/INDEX file * ************************************************************** STORE "" TO sst_f_str, sst_ndx, sst_t_file, sst_t_ndx, sstgroup, sstsgroup, ssttotal, sststot, sst_newg, sstgname STORE "" TO ssthead1, ssthead2, ssthead3, ssthead4, ssthead5, ssthead6 STORE "" TO sstfoot1, sstfoot2, sstfoot3, sst_filter, sstfile STORE "" TO sstcon1, sstcon2, sstcon3, sstcon4 STORE "" TO sstcon5, sstcon6, sstcon7, sstcon8 STORE "" TO sstcon9, sstcon10, sstcon11, sstcon12 STORE "" TO ssttotal1, ssttotal2, ssttotal3, sststot1, sststot2, sststot3 STORE SPACE(132) TO ssthead1, ssthead2, ssthead3, ssthead4, ssthead5, ssthead6 STORE SPACE(132) TO sstfoot1, sstfoot2, sstfoot3, sstcon1, sstcon2, sstcon3, sstcon4 STORE SPACE(132) TO sstcon5, sstcon6, sstcon7, sstcon8, sstcon9, sstcon10, sstcon11, sstcon12 STORE SPACE(100) TO sst_filter STORE SPACE(15) TO sstfile STORE SPACE(10) TO ssttotal1, ssttotal2, ssttotal3, sststot1, sststot2, sststot3 STORE 6 TO ssthcnt STORE 3 TO sstfcnt STORE 12 TO sstccnt STORE 1 TO rpt1, rpt21, print_way STORE 0 TO sst_spec STORE DTOC(DATE()) TO sstdate STORE TIME() TO ssttime STORE .F. TO sst_tog1, fromdisk STORE "0" TO sstpage SET SCOREBOARD OFF SETCOLOR(IF((TYPE("scrcolor") = "U"), "", scrcolor)) CLEAR SCREEN ret_turn = STR(SELECT()) SELECT(0) whatisit = SELECT() SELECT &ret_turn. DECLARE in_files[whatisit] AFILL(in_files, "") IF TYPE("scrleft_1") = "U" .OR. TYPE("scrleft_2") = "U" @ 0,0 SAY "ToolkiT(tm) / On-Line Reporter" ELSEIF scrleft_1 = "Steve Straley's ToolkiT" @ 0,0 SAY scrleft_1 + " / " + scrleft_2 ELSE @ 0,0 SAY scrleft_1 + scrleft_2 ENDIF @ 0,59 SAY "ESC for Previous Menu" Wpush(1,0,8,14,3) DO WHILE .T. STORE TIME() TO ssttime Rpt_stat() Reset() yes_quit = .F. rpt1 = Makemenu("Files/Condition/Design/Generate/Utilities/Quit", Wrow(1),Wcol(1),rpt1,3, .T.) IF EMPTY(rpt1) KEYBOARD "Q" LOOP ENDIF brch = TRANSFORM(rpt1, "9") DO Reporter&brch. IF yes_quit EXIT ENDIF ENDDO Wpop() STORE "" TO sst_f_str, sst_ndx, sst_t_file, sst_t_ndx, sstgroup, sstsgroup, ssttotal, sststot, sst_newg, sstgname STORE "" TO ssthead1, ssthead2, ssthead3, ssthead4, ssthead5, ssthead6 STORE "" TO sstfoot1, sstfoot2, sstfoot3, sst_filter, sstfile STORE "" TO sstcon1, sstcon2, sstcon3, sstcon4 STORE "" TO sstcon5, sstcon6, sstcon7, sstcon8 STORE "" TO sstcon9, sstcon10, sstcon11, sstcon12 STORE "" TO ssttotal1, ssttotal2, ssttotal3, sststot1, sststot2, sststot3 RELEASE sst_f_str, sst_ndx, sst_t_file, sst_t_ndx, sstgroup, sstsgroup, ssttotal, sststot, sst_newg, sstgname RELEASE ssthead1, ssthead2, ssthead3, ssthead4, ssthead5, ssthead6 RELEASE sstfoot1, sstfoot2, sstfoot3, sst_filter, sstfile RELEASE sstcon1, sstcon2, sstcon3, sstcon4 RELEASE sstcon5, sstcon6, sstcon7, sstcon8 RELEASE sstcon9, sstcon10, sstcon11, sstcon12 RELEASE ssttotal1, ssttotal2, ssttotal3, sststot1, sststot2, sststot3 ******************** PROCEDURE Reporter1 IF EMPTY(sst_f_str) .OR. fromdisk IF Set_files() _oldcolor = SETCOLOR() SETCOLOR(Reverse()) @ 24,00 SAY "No Files Are Available!" INKEY(0) SETCOLOR(_oldcolor) @ 24,00 KEYBOARD "QY" + CHR(13) RETURN ENDIF ENDIF rpt21 = 1 Wpush(3, 4, (Occurence("/", sst_f_str) + 5), 20, 3) DO WHILE .T. Rpt_stat() Withquit(.T.) rpt21 = Makemenu(sst_f_str, Wrow(1), Wcol(1), rpt21, 1,.T.,1,12,11) Withquit(.F.) IF rpt21 = 0 EXIT ENDIF IF fromdisk @ 24,00 @ 24,00 SAY "You must CLEAR out the system before selecting!" INKEY(0) @ 24,00 LOOP ENDIF sst_t_file = in_files[rpt21] sst_filter = "" SELECT &sst_t_file. sst_t_ndx = "" IF !EMPTY(INDEXORD()) List_ndx(rpt21) ENDIF ENDDO Wpop() ******************** PROCEDURE Reporter2 STORE 1 TO rpt22 IF !EMPTY(sst_filter) sst_filter = STRTRAN(STRTRAN(STRTRAN(sst_filter, ".AND. !EOF()", ""), " .AND. CONTINUE()"), "!EOF()", "") sst_filter = LTRIM(TRIM(sst_filter)) ttqwrr = SUBSTR(sst_filter, LEN(sst_filter) - 6) IF ".AND."$ttqwrr sst_filter = SUBSTR(sst_filter, 1, LEN(sst_filter) - 5) ENDIF sst_filter = FILL_OUT(sst_filter, 100) ELSE sst_filter = SPACE(100) ENDIF Wpush(4,31,14,70,3) @ Wrow(), Wcol(2) SAY " Report on this condition - F1=Help " Wpush(4,4,15,21, 3) && For all else Reset(.T.) DO WHILE .T. returning = "" STORE 1 TO rpt221 Rpt_stat() KEYBOARD CHR(27) MEMOEDIT(sst_filter,5,33,13,68,.F.) KEYBOARD "" do_get = .F. no_edit = .T. rpt22 = Makemenu("Fields/Dates/Numbers/Strings/Conjunctions/File/Operations/EDIT/REMOVE/Quit",Wrow(1),Wcol(1),rpt22,1) DO CASE CASE rpt22 = 1 returning = Fields_in(0, 5+rpt22,8) CASE rpt22 = 2 returning = Dates_in() CASE rpt22 = 3 returning = Number_in() CASE rpt22 = 4 returning = String_in() CASE rpt22 = 5 returning = Junct_in() CASE rpt22 = 6 returning = Dbase_in() CASE rpt22 = 7 returning = Operat_in() CASE rpt22 = 8 _oldcolor = SETCOLOR() SETCOLOR(Reverse()) sst_filter = STRTRAN(STRTRAN(MEMOEDIT(sst_filter,5,33,13,68,.T.,"Rpthelp1"), CHR(141)+CHR(10), ""), CHR(13) + CHR(10) + "") SETCOLOR(_oldcolor) returning = "" do_get = .T. no_edit = .F. CASE rpt22 = 9 sst_filter = SPACE(100) OTHERWISE EXIT ENDCASE returning = IF(LASTKEY() = 27, "", returning) IF !EMPTY(returning) sst_filter = Fill_out(LTRIM(TRIM(sst_filter)) + returning, 100) ENDIF ENDDO Reset() Wpop() Wpop() ******************** FUNCTION Rpthelp1 IF LASTKEY() = 28 _wcolor = SETCOLOR() SETCOLOR(Reverse()) Wpush(6,35,12,65) @ Wrow(1), Wcol(5), "F1 is this Key" @ Wrow(2), Wcol(5), "F10 to SAVE the editing" @ Wrow(3), Wcol(5), "ESC to Exit" @ Wrow(5), Wcol(5), "Any key to continue..." INKEY(0) Wpop() SETCOLOR(_wcolor) ELSEIF LASTKEY() = 27 RETURN(27) ELSEIF LASTKEY() = -9 KEYBOARD CHR(23) RETURN(0) ELSEIF LASTKEY() = 23 RETURN(0) ELSEIF LASTKEY() = 2 RETURN(100) ENDIF RETURN(32) ******************** PROCEDURE Reporter3 rpt23 = 1 Wpush(5, 6, 11, 21) Reset(.T.) DO WHILE .T. disp_1 = "TAB for macros/special characters" rpt231 = 1 Rpt_stat() rpt23 = Makemenu("Report/Group On/Totals On/Subtotal on/Quit", Wrow(1),Wcol(1),rpt23,3,.T.,1,20,12) DO CASE CASE rpt23 = 1 Pushscreen() Palate() SET KEY 9 TO Special SET KEY 271 TO Show_file SET KEY 22 TO Change_ins SET KEY 3 TO SET KEY 18 TO KEYBOARD CHR(23) Insert_tog(24,70,!READINSERT()) reportstr = "....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3" + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(ssthead1, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(ssthead2, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(ssthead3, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(ssthead4, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(ssthead5, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(ssthead6, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon1, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon2, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon3, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon4, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon5, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon6, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon7, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon8, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon9, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon10, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon11, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstcon12, 130), 1, 130) + CHR(141) + CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstfoot1, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstfoot2, 130), 1, 130) + CHR(141)+CHR(10) reportstr = reportstr + SUBSTR(Fill_out(sstfoot3, 130), 1, 130) + CHR(141)+CHR(10) @ 2, 2 SAY " Header 1 =>" @ 3, 2 SAY " 2 =>" @ 4, 2 SAY " 3 =>" @ 5, 2 SAY " 4 =>" @ 6, 2 SAY " 5 =>" @ 7, 2 SAY " 6 =>" @ 8, 2 SAY "Contents 1 =>" @ 9, 2 SAY " 2 =>" @ 10, 2 SAY " 3 =>" @ 11, 2 SAY " 4 =>" @ 12, 2 SAY " 5 =>" @ 13, 2 SAY " 6 =>" @ 14, 2 SAY " 7 =>" @ 15, 2 SAY " 8 =>" @ 16, 2 SAY " 9 =>" @ 17, 2 SAY " 10 =>" @ 18, 2 SAY " 11 =>" @ 19, 2 SAY " 12 =>" @ 20, 2 SAY " Footer 1 =>" @ 21, 2 SAY " 2 =>" @ 22, 2 SAY " 3 =>" @ 23, 2 SAY "TAB for Macros - SHIFT TAB for fields - Maximum Width is 132 " SETCOLOR(Reverse()) reportstr = HARDCR(MEMOEDIT(reportstr, 1, 16, 22, 75, .T., "Repkeys", 131)) Parsing(@reportstr, CHR(13)+CHR(10) ) && The first one for the banner ssthead1 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) ssthead2 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) ssthead3 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) ssthead4 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) ssthead5 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) ssthead6 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon1 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon2 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon3 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon4 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon5 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon6 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon7 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon8 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon9 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon10 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon11 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstcon12 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstfoot1 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstfoot2 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) sstfoot3 = Fill_out(Parsing(@reportstr, CHR(13)+CHR(10) ), 130) SET KEY 3 TO SET KEY 9 TO SET KEY 271 TO SET KEY 22 TO Popscreen() CASE rpt23 = 2 && Group on @ 18, 45 SAY "ESC Key Turns OFF" sstgroup = Fields_in(0, 4, 24) IF EMPTY(sstgname) sstgname = "NONAME" ENDIF IF LASTKEY() <> 27 IF !EMPTY(sst_t_ndx) ndxstring = STRTRAN(NDXSTRVAL(sstgroup), '"') + " + " + sst_t_ndx ELSE ndxstring = STRTRAN(NDXSTRVAL(sstgroup), '"') ENDIF IF TYPE(ndxstring) != "U" .OR. TYPE(ndxstring) != "UE" IF !EMPTY(sst_t_file) @ 23,00 SAY "One Moment to Re-Group!" INDEX ON &ndxstring. TO (sstgname + ".grp") @ 23,00 ENDIF ENDIF ENDIF @ 18, 45, SPACE(20) CASE rpt23 = 3 Wpush(Wrow(4), 8, Wrow(4)+4, 23) DO WHILE .T. Withquit(.T.) rpt231 = Makemenu(ssttotal1 + "/" + ssttotal2 + "/" + ssttotal3, Wrow(1),Wcol(1), rpt231,1,.T.) Withquit(.F.) DO CASE CASE rpt231 = 0 EXIT OTHERWISE eext = LTRIM(TRIM(STR(rpt231))) in_dummy = FIELDS_IN(2, 4, 26) IF LASTKEY() <> 27 ssttotal&eext. = in_dummy ENDIF ENDCASE ENDDO Wpop() CASE rpt23 = 4 Wpush(Wrow(5), 8, Wrow(5)+4, 23) DO WHILE .T. Withquit(.T.) rpt231 = Makemenu(sststot1 + "/" + sststot2 + "/" + sststot3, Wrow(1),Wcol(1),rpt231, 1, .T.) Withquit(.F.) DO CASE CASE rpt231 = 0 EXIT OTHERWISE eext = LTRIM(TRIM(STR(rpt231))) in_dummy = FIELDS_IN(2, 4, 26) IF LASTKEY() <> 27 sststot&eext. = in_dummy ENDIF ENDCASE ENDDO Wpop() OTHERWISE EXIT ENDCASE ENDDO Reset() Wpop() ******************** FUNCTION Repkeys PARAMETERS _mode, _row, _col IF _row = 1 KEYBOARD CHR(24) ENDIF IF _col > 130 .AND. _row = 22 KEYBOARD CHR(8) ENDIF IF _row >= 23 KEYBOARD REPLICATE(CHR(5), 22) + REPLICATE(CHR(24), 21) ENDIF RETURN(0) ******************** PROCEDURE Change_ins PARAMETERS p, l, v Insert_tog(24,70,.T.) ******************** PROCEDURE Complete PARAMETERS p, l, v togo = VAL(SUBSTR(v, 7)) KEYBOARD REPLICATE(CHR(13), 12 - togo + 1) ******************** PROCEDURE Reporter4 rpt24 = 1 IF TYPE("nocode") = "U" Wpush(6,6,12,18) ELSE Wpush(6,6,11,18) ENDIF DO WHILE .T. Rpt_stat() Reset() IF TYPE("nocode") = "U" rpt24 = Makemenu("Screen/Printer/File/Code/Quit", Wrow(1), Wcol(1),rpt24,3,.T.,1,20,9) ELSE rpt24 = Makemenu("Screen/Printer/File/Quit", Wrow(1), Wcol(1),rpt24,3,.T.,1,20,9) ENDIF Reset(.T.) IF TYPE("nocode") = "U" IF rpt24 = 0 .OR. rpt24 = 5 EXIT ENDIF ELSE IF rpt24 = 0 .OR. rpt24 = 4 EXIT ENDIF ENDIF DO CASE CASE rpt24 = 4 Wpush(Wrow(5), Wcol(2), Wrow(7), Wcol(2) + 44) @ Wrow(1),Wcol(1) SAY "Enter Program/File Name =" GET sstfile PICT "@!@K" VALID !FILE(TRIM(sstfile) + IF(AT(".", sstfile) = 0, ".PRG", "")) READ Wpop() IF LASTKEY() = 27 LOOP ENDIF Wpush(Wrow(5), Wcol(2), Wrow(7), Wcol(2) + 42) @ Wrow(1),Wcol(1) SAY "Writing Code Section. One Moment Please!" SET CONSOLE OFF Gen_code() RENAME (sstfile + ".TXT") TO (sstfile + ".prg") SET CONSOLE ON Wpop() OTHERWISE IF rpt24 = 3 Wpush(Wrow(4), Wcol(2), Wrow(7), Wcol(2) + 36) DO WHILE .T. @ Wrow(1),Wcol(1) SAY "Enter File Name =>" GET sstfile PICT "@!" READ IF LASTKEY() = 27 EXIT ENDIF IF FILE(TRIM(sstfile) + IF(AT(".", sstfile) = 0, ".TXT", "")) @ Wrow(2), Wcol(1) SAY "File Exists. Try Again or ESC" ELSE EXIT ENDIF ENDDO Wpop() ENDIF IF LASTKEY() = 27 LOOP ENDIF print_file = sstfile Pushscreen() Gen_report(rpt24) Popscreen() IF rpt24 = 3 && Don't adjust this.... scr_level = scr_level - 1 ENDIF ENDCASE ENDDO Wpop() ******************** PROCEDURE Reporter5 STORE 1 TO rpt15, rpt151 Wpush(7,6,17,25) Rpt_stat() DO WHILE .T. Reset() rpt15 = Makemenu("Empty System/Restore Report/Save Report/Printer Controls/Header Lines/Footer Lines/Content Lines/Toggles/Quit", Wrow(1), Wcol(1),rpt15,3,.T.) Reset(.T.) DO CASE CASE rpt15 = 1 ********************************************************** * ssthead1 - 6 The header for the reports * * sstfoot1 - 3 The footer for reports * * sstcon1 - 12 The contents of the report * * sst_filter The DO WHILE/FILTER for report * * sstfile * * ssttotal1 - 3 The 3 total fields * * ssthcnt The # of lines to print for header * * sstfcnt The # of lines to print for footer * * sstccnt The # of lines to print for contents * * sst_f_str * * sst_ndx * * sst_t_file * * sst_t_ndx * * sstgroup The field the GROUP is made on * * sstsgroup The fields the SUB-GROUP is made on * * ssttotal * * sststot * * sst_newg * * sstgname The name of the .GRP/INDEX file * ********************************************************** STORE "" TO sst_f_str, sst_ndx, sst_t_file, sst_t_ndx, sstgroup, sstsgroup, ssttotal, sststot, sst_newg, sstgname STORE SPACE(132) TO ssthead1, ssthead2, ssthead3, ssthead4, ssthead5, ssthead6 STORE SPACE(132) TO sstfoot1, sstfoot2, sstfoot3, sstcon1, sstcon2, sstcon3, sstcon4 STORE SPACE(132) TO sstcon5, sstcon6, sstcon7, sstcon8, sstcon9, sstcon10, sstcon11, sstcon12 STORE SPACE(100) TO sst_filter STORE SPACE(15) TO sstfile STORE SPACE(10) TO ssttotal1, ssttotal2, ssttotal3 STORE 6 TO ssthcnt STORE 3 TO sstfcnt STORE 12 TO sstccnt STORE 0 TO sst_spec STORE DTOC(DATE()) TO sstdate STORE TIME() TO ssttime STORE "0" TO sstpage STORE .F. TO sst_tog1, fromdisk Rpt_stat() CASE rpt15 = 2 Wpush(Wrow(3), 8, Wrow(6), 52) DO WHILE .T. SET KEY ASC("?") TO Showsst get_file = SPACE(14) @ Wrow(3), Wcol(2) SAY " ? to Inquire " @ Wrow(1), Wcol(2) SAY "Enter File Name =>" GET get_file PICT "@K@!" VALID !(LASTKEY() = ASC("?")) READ SET KEY ASC("?") TO IF LASTKEY() = 27 .OR. EMPTY(get_file) EXIT ENDIF Clear_area() IF !FILE(TRIM(get_file) + ".SST") @ Wrow(2), Wcol(2) SAY "That is NOT on file...." ELSE RESTORE FROM (TRIM(get_file) + ".sst") ADDITIVE AFILL(in_files, "") toggle = .F. FOR x = 1 TO LEN(in_files) SELECT (x) IF !EMPTY(ALIAS()) in_files[x] = ALIAS() ENDIF NEXT * the previous code may appear to be duplicated * but because of the special testing condition within * the next FOR loop, I wanted to play safe and * just stuff the array as expected. FOR x = 1 TO LEN(in_files) SELECT (x) IF !EMPTY(ALIAS()) IF ALIAS() = sst_t_file fromdisk = .T. toggle = .T. EXIT ENDIF ENDIF NEXT IF toggle .AND. !EMPTY(sst_t_file) SELECT &sst_t_file. Rpt_stat() ELSE @ 24,00 @ 24,01 SAY " Files ARE Not Available. Error Condition. Any Key!!!" INKEY(0) KEYBOARD "E" EXIT ENDIF ssthead1 = Fill_out(ssthead1 , 130) ssthead2 = Fill_out(ssthead2 , 130) ssthead3 = Fill_out(ssthead3 , 130) ssthead4 = Fill_out(ssthead4 , 130) ssthead5 = Fill_out(ssthead5 , 130) ssthead6 = Fill_out(ssthead6 , 130) sstfoot1 = Fill_out(sstfoot1 , 130) sstfoot2 = Fill_out(sstfoot2 , 130) sstfoot3 = Fill_out(sstfoot3 , 130) sstcon1 = Fill_out(sstcon1 , 130) sstcon2 = Fill_out(sstcon2 , 130) sstcon3 = Fill_out(sstcon3 , 130) sstcon4 = Fill_out(sstcon4 , 130) sstcon5 = Fill_out(sstcon5 , 130) sstcon6 = Fill_out(sstcon6 , 130) sstcon7 = Fill_out(sstcon7 , 130) sstcon8 = Fill_out(sstcon8 , 130) sstcon9 = Fill_out(sstcon9 , 130) sstcon10 = Fill_out(sstcon10 , 130) sstcon11 = Fill_out(sstcon11 , 130) sstcon12 = Fill_out(sstcon12 , 130) IF !EMPTY(sstgname) IF FILE(sstgname + ".GRP") RUN REN &sstgname..grp Noname.grp ELSE sstgname = LTRIM(TRIM(get_file)) ENDIF ENDIF EXIT ENDIF ENDDO Wpop() CASE rpt15 = 3 go_file = " " Wpush(Wrow(4),8, Wrow(7),48) DO WHILE .T. @ Wrow(1), Wcol(2) SAY "Enter File Name =>" GET go_file PICT "@!" READ sstgname = TRIM(go_file) IF FILE("NONAME.GRP") RUN REN Noname.grp &sstgname..grp ENDIF IF LASTKEY() = 27 .OR. EMPTY(go_file) EXIT ENDIF IF !FILE(TRIM(go_file) + ".SST") fhandle = FCREATE(TRIM(go_file)) IF fhandle > 4 FCLOSE(fhandle) SAVE ALL LIKE sst* TO (TRIM(go_file) + ".sst") EXIT ENDIF ELSE @ Wrow(2), Wcol(2) SAY "Already Exists. Overwrite? " IF Prompt() SAVE ALL LIKE sst* TO (go_file + ".sst") EXIT ENDIF ENDIF ENDDO Wpop() CASE rpt15 = 4 Wpush(Wrow(3),20,Wrow(3)+13,37) DO WHILE .T. rpt151 = Makemenu("Printer Status/Condense/Bold/Normal/Italic/Wide/Pica/Elite/Emphasize/Underline/Quit",Wrow(1),Wcol(1),rpt151,3,.T.) DO CASE CASE rpt151 = 0 EXIT CASE rpt151 = 1 Wpush(10,10,12,70) @ Wrow(1), Wcol(2) SAY IF( ISPRINTER(), "The Printer is On-Line and Ready.... Any key to continue", " Your Printer is NOT ready! Any key to continue") INKEY(0) Wpop() OTHERWISE Wpush(17,20,19,55) IF ISPRINTER() @ Wrow(1), Wcol(2) SAY "Initializing Printer..." SET PRINTER ON SET CONSOLE OFF DO CASE CASE rpt151 = 2 && Condense ?? CHR(27) + CHR(15) CASE rpt151 = 3 && Bold ?? CHR(27) + "G" CASE rpt151 = 4 && Normal ?? CHR(27) + "@" CASE rpt151 = 5 && Italic ?? CHR(27) + "4" CASE rpt151 = 6 && Wide ?? CHR(27) + "W1" CASE rpt151 = 7 && Pica ?? CHR(27) + "P" CASE rpt151 = 8 && Elite ?? CHR(27) + "M" CASE rpt151 = 9 && Emphasize ?? CHR(27) + "E" CASE rpt151 = 10 && Underline ?? CHR(27) + "-1" ENDCASE SETPRC(0,0) SET PRINTER OFF SET CONSOLE ON ELSE @ Wrow(1), Wcol(2) SAY " Printer Not on line. Any Key!!" INKEY(0) ENDIF Wpop() ENDCASE ENDDO Wpop() CASE rpt15 >= 5 .AND. rpt15 <= 8 Wpush(Wrow(1)+rpt15, 9, Wrow(3)+rpt15, 48) IF rpt15 = 5 @ Wrow(1), Wcol(2) SAY "Number of Header Lines => " GET ssthcnt PICT "#" VALID(ssthcnt >= 0 .AND. ssthcnt <= 6) READ ELSEIF rpt15 = 6 @ Wrow(1), Wcol(2) SAY "Number of Footer Lines => " GET sstfcnt PICT "#" VALID(sstfcnt >= 0 .AND. sstfcnt <= 6) READ ELSEIF rpt15 = 7 @ Wrow(1), Wcol(2) SAY "Number of Content Lines => " GET sstccnt PICT "##" VALID(sstccnt >= 0 .AND. sstccnt <= 12) READ ELSE @ Wrow(1),Wcol(2) SAY " Total without Printing? " @ Wrow(1),Wcol(28) SAY "" sst_tog1 = !Prompt() ENDIF Wpop() OTHERWISE EXIT ENDCASE ENDDO Wpop() ******************** PROCEDURE Showsst IF EMPTY(ADIR("*.sst")) Wpush(7,50,10,76) @ Wrow(1), Wcol(1), "No Report Files on disk." @ Wrow(2), Wcol(1), "Press any key to move on." INKEY(0) Wpop() ELSE DECLARE tempsst[ADIR("*.sst")] ADIR("*.sst", tempsst) get_file = Apick(Apop(4,50,16,20,tempsst,.T.), tempsst) RELEASE tempsst ENDIF ******************** PROCEDURE Reporter6 @ 7,18 SAY "Are you sure you want to Quit? " yes_quit = Prompt() Rid(7,18, "Are you sure you want to Quit? " ) ******************** PROCEDURE List_ndx PARAMETER f_o the_area = in_files[f_o] SELECT &the_area sst_ndx = "" rpt22 = 1 _sstcount = 0 FOR qaz = 1 TO 10 DECLARE ndxfiles[10] AFILL(ndxfiles, "") SET ORDER TO qaz IF !EMPTY(INDEXKEY(qaz)) ndxfiles[qaz] = IF(LEN(INDEXKEY(qaz)) > 20, SUBSTR(INDEXKEY(qaz), 1, 20), INDEXKEY(qaz)) _sstcount = _sstcount + 1 ENDIF NEXT IF EMPTY(INDEXORD()) RETURN ENDIF Wpush(4+f_o, 4, (_sstcount + 2 + 4+f_o), 36) rpt22 = 1 DO WHILE .T. Rpt_stat() Reset() Withquit(.T.) rpt22 = Makemenu(ndxfiles, 5+f_o, 5, rpt22, 1,.T.,1,20,27) Withquit(.F.) IF rpt22 = 0 KEYBOARD CHR(27) EXIT ENDIF Reset(.T.) SET ORDER TO rpt22 sst_spec = INDEXORD(rpt22) sst_t_ndx = INDEXKEY(sst_spec) ENDDO Wpop() ******************** PROCEDURE Rpt_stat STORE TIME() TO ssttime @ 24,00 SAY "" _oldcolor = SETCOLOR() SETCOLOR(Reverse()) @ 24,00 CLEAR IF !EMPTY(sst_t_file) @ 24,00 SAY " USING " + Upperlower(sst_t_file) IF TYPE("rpt15") != "U" IF ALIAS() != sst_t_file .AND. rpt15 = 2 RETURN ENDIF ENDIF SELECT &sst_t_file. ENDIF IF EMPTY(sst_t_ndx) @ 24,LEN(sst_t_file) + 7 CLEAR ELSE @ 24,LEN(sst_t_file) + 7 SAY " in " + LOWER(sst_t_ndx) + " Order " SET ORDER TO sst_spec ENDIF IF !EMPTY(sstgroup) @ 24,50 SAY "Grouped on &sstgroup." ELSE @ 24,50 CLEAR ENDIF SETCOLOR(_oldcolor) ******************** FUNCTION Dates_in pass_back = "" Wpush( 5+rpt22, 6, 18+rpt22, 28 ) rpt221 = Makemenu("Year/What Month/Char to Date/Date to Char/Date to String/System Date/System Time/Day of Week/What Day of Week /System Seconds/Month of Year/Quit",Wrow(1), Wcol(1),rpt221,1,.T.) Wpop() IF rpt221 = 1 RETURN(" YEAR(" + Fields_in(3,5,30) + ")") ELSEIF rpt221 = 2 RETURN(" MONTH(" + Fields_in(3,5,30) + ")") ELSEIF rpt221 = 3 RETURN(" CTOD(" + Fields_in(1,5,30) + ")") ELSEIF rpt221 = 4 RETURN(" DTOC(" + Fields_in(3,5,30) + ")") ELSEIF rpt221 = 5 RETURN(" DTOS(" + Fields_in(3,5,30) + ")") ELSEIF rpt221 = 6 RETURN(" DATE() ") ELSEIF rpt221 = 7 RETURN(" TIME() ") ELSEIF rpt221 = 8 RETURN(" DOW(" + Fields_in(3,5,30) + ")") ELSEIF rpt221 = 9 RETURN(" DAY(" + Fields_in(3,5,30) + ")") ELSEIF rpt221 = 10 RETURN(" SECONDS() ") ELSEIF rpt221 = 11 RETURN(" CMONTH(" + Fields_in(3,5,30) + ")") ELSE RETURN("") ENDIF ******************** FUNCTION Number_in Wpush(5+rpt22,6,14+rpt22,28) rpt221 = Makemenu("Number to String /Absolute Value/Exponential/Logarithm/Remainder of/Square Root/Round Off/Quit",Wrow(1),Wcol(1),rpt221) Wpop() IF rpt221 = 1 RETURN(" STR(" + Fields_in(2,5,30) + ")") ELSEIF rpt221 = 2 RETURN(" ABS(" + Fields_in(2,5,30) + ")") ELSEIF rpt221 = 3 RETURN(" EXP(" + Fields_in(2,5,30) + ")") ELSEIF rpt221 = 4 RETURN(" LOG(" + Fields_in(2,5,30) + ")") ELSEIF rpt221 = 5 RETURN(" MOD(" + Fields_in(2,5,35) + "," + Fields_in(2,6,30) + ")") ELSEIF rpt221 = 6 RETURN(" SQRT(" + Fields_in(2,5,30) + ")") ELSEIF rpt221 = 7 RETURN(" ROUND(" + Fields_in(2,5,30) + ")") ELSE RETURN("") ENDIF ******************** FUNCTION String_in pass_back = "" Wpush( 5+rpt22,6,13+rpt22,50) rpt221 = Makemenu("ASCII Value/CHR Value/Value of/Transform to/Portion of String/Trim/Left Trim/All Trim/Expand String/All Upper Case/Proper Name/All Lower Case/Quit",Wrow(1),Wcol(1),rpt221,1,.T.,1,Wrow()+6) Wpop() DO CASE CASE rpt221 = 1 pass_back = " ASC(" CASE rpt221 = 2 pass_back = " CHR(" CASE rpt221 = 3 pass_back = " STR(VAL(" + FIELDS_IN(2,5,50) + "))" CASE rpt221 = 4 pass_back = ' TRANSFORM(' + FIELDS_IN(1,5,50)+ ', "@X") ' CASE rpt221 = 5 t_h_one = FIELDS_IN(1,5,50) CASE rpt221 = 6 pass_back = " TRIM(" + FIELDS_IN(1,5,50) + ")" CASE rpt221 = 7 pass_back = " LTRIM(" + FIELDS_IN(1,5,50) + ")" CASE rpt221 = 8 pass_back = " LTRIM(TRIM(" + FIELDS_IN(1,5,50) + "))" CASE rpt221 = 9 pass_back = " EXPAND(" + FIELDS_IN(1,5,50) + ")" CASE rpt221 = 10 pass_back = " UPPER(" + FIELDS_IN(1,5,50) + ")" CASE rpt221 = 11 pass_back = " UPPERLOWER(" + FIELDS_IN(1,5,50) + ")" CASE rpt221 = 12 pass_back = " LOWER(" + FIELDS_IN(1,5,50) ENDCASE IF LASTKEY() = 27 pass_back = "" ENDIF RETURN(pass_back) ******************** FUNCTION Junct_in Wpush(5+rpt22,6,12+rpt22,17) rpt221 = Makemenu("And /Not /Or /True /False /Quit",Wrow(1),Wcol(1),rpt221) Wpop() IF rpt221 = 1 RETURN(" .AND. ") ELSEIF rpt221 = 2 RETURN(" .NOT. ") ELSEIF rpt221 = 3 RETURN(" .OR. ") ELSEIF rpt221 = 4 RETURN(" .T. ") ELSEIF rpt221 = 5 RETURN(" .F. ") ELSE RETURN("") ENDIF ******************** FUNCTION Dbase_in Wpush(5+rpt22,6,14+rpt22,29) rpt221 = Makemenu("Relate Files/Last Record Number/Empty Expression /Beginning of File/End of File/Last Record Number/Deleted Record/Quit",Wrow(1),Wcol(1),rpt221) Wpop() IF rpt221 = 1 RETURN(" RELATE(" + TIE_TOGET() + ")") ELSEIF rpt221 = 2 RETURN(" LASTREC() ") ELSEIF rpt221 = 3 RETURN(" EMPTY( " + FIELDS_IN(0,5,50) + ")") ELSEIF rpt221 = 4 RETURN(" BOF() ") ELSEIF rpt221 = 5 RETURN(" EOF() ") ELSEIF rpt221 = 6 RETURN(" RECNO() ") ELSEIF rpt221 = 7 RETURN(" DELETED() ") ELSE RETURN("") ENDIF ******************** FUNCTION Operat_in Wpush( Wrow(8),8,Wrow(8)+8,68) rpt221 = Makemenu("Plus/Minus/Greater Than/Less Than/Greater Than or Equal Too/Less Than or Equal Too/Not Equal/Equal To/Multiply/Divide/Exponential/Quit",Wrow(1),Wcol(1),rpt221,3,.T.,1,Wrow(6)) Wpop() IF rpt221 = 1 RETURN(" + ") ELSEIF rpt221 = 2 RETURN(" - ") ELSEIF rpt221 = 3 RETURN(" > ") ELSEIF rpt221 = 4 RETURN(" < ") ELSEIF rpt221 = 5 RETURN(" >= ") ELSEIF rpt221 = 6 RETURN(" <= ") ELSEIF rpt221 = 7 RETURN(" <> ") ELSEIF rpt221 = 8 RETURN(" = ") ELSEIF rpt221 = 9 RETURN(" * ") ELSEIF rpt221 = 10 RETURN(" / ") ELSEIF rpt221 = 11 RETURN(" ** ") ELSE RETURN("") ENDIF ******************** PROCEDURE Special PARAMETERS p, l, v SET KEY 9 TO SET KEY 271 TO IF TYPE(v) = "U" overto = 0 ELSE overto = LEN(TRIM(&v.)) ENDIF t_tog_mag = 1 Pushscreen(2,10,15,50,.T.,.F.,.F.) t_tog_mag = APOP(4, 20, 10, LENGTH_EL(macplus)+8, macplus) infront = IF(!READINSERT(), "", CHR(22)) DO CASE CASE t_tog_mag = 0 CASE t_tog_mag = 1 KEYBOARD infront + REPLICATE(CHR(205), 130) + CHR(1) CASE t_tog_mag = 2 KEYBOARD infront + REPLICATE(CHR(196), 130) + CHR(1) CASE t_tog_mag = 3 KEYBOARD infront + REPLICATE(CHR(4), overto) + CHR(174) CASE t_tog_mag = 4 KEYBOARD infront + REPLICATE(CHR(4), overto) + CHR(175) CASE t_tog_mag = 5 KEYBOARD infront + REPLICATE("-", 130) + CHR(1) CASE t_tog_mag = 6 KEYBOARD infront + REPLICATE(CHR(4), overto) + CHR(174) + "sstpage" + CHR(175) CASE t_tog_mag = 7 KEYBOARD infront + REPLICATE(CHR(4), overto) + CHR(174) + "sstdate" + CHR(175) CASE t_tog_mag = 8 KEYBOARD infront + REPLICATE(CHR(4), overto) + CHR(174) + "ssttime" + CHR(175) OTHERWISE KEYBOARD infront + REPLICATE(CHR(4), LEN(TRIM(&v.))) + CHR(174) + macplus[t_tog_mag] + CHR(175) ENDCASE Popscreen(2,10,15,50) SET KEY 9 TO Special SET KEY 271 TO Show_file ******************** PROCEDURE Show_file PARAMETERS p, l, v * To really 'INSERT' the stuff, a drop marker should be placed into the field * BEFORE this procedure is called. That way, the 'overto' variable will contain * the right number of characters to shove the new stuff to (with one extra * character of course. If not, then the new field will be added to the end * of the current string, not at a specific marker. SET KEY 271 TO SET KEY 9 TO IF TYPE(v) != "C" overto = 0 ELSE overto = LEN(TRIM(&v)) && Calculate the number of characters already in string ENDIF IF !EMPTY(sst_t_file) return_to = sst_t_file this_way = 1 Wpush(1, 50, Occurence("/", sst_f_str)+3, 66) Withquit(.T.) this_way = Makemenu(sst_f_str, Wrow(1),Wcol(1),this_way, 1,.T.,1,12,11) Withquit(.F.) IF !EMPTY(this_way) goto_file = in_files[this_way] SELECT &goto_file prefix = CHR(16) + ALIAS() + "->" + FIELDS_IN(0, 2+this_way, 53) + CHR(17) infront = IF(!READINSERT(), "", CHR(22)) IF LASTKEY() != 27 KEYBOARD infront + REPLICATE(CHR(4), overto) + CHR(174) + prefix + CHR(175) ENDIF ENDIF SELECT &return_to Wpop() ENDIF SET KEY 9 TO Special SET KEY 271 TO Show_file ******************* FUNCTION Tie_toget retuned = ALIAS() @ 20, 55 SAY "First, Pick the Field to" @ 21, 55 SAY " tie everything to." field_first = FIELDS_IN(0,5,35) IF LASTKEY() = 27 SCROLL(20,55,21,79,0) RETURN("") ENDIF all_others = sst_f_str back_area = "" SCROLL(20,55,21,79,0) DO WHILE .T. all_others = STRTRAN(all_others, "/" + ALIAS()) IF LEN(all_others) < 2 EXIT ENDIF this_way = 1 @ 20,55 SAY "Now Choose the Files to" @ 21,55 SAY " tie the field to." Wpush(4,35, Occurence("/", all_others)+6, 51) this_way = MAKEMENU(all_others,Wrow(1),Wcol(1),1, 1,.T.,1,12,11) Wpop() @ 20,55 SAY " " @ 21,55 SAY " " IF EMPTY(this_way) EXIT ENDIF parse_it = SUBSTR(Occur_at("/", all_others, this_way - 1), 2) IF EMPTY(AT("/", parse_it)) goto_file = parse_it ELSE goto_file = SUBSTR(parse_it, 1, AT("/", parse_it) -1) ENDIF IF EMPTY(goto_file) SCROLL(20,55,21,79,0) @ 20,53 SAY "That File does NOT contain" @ 21,53 SAY "the selected field. KEY.." INKEY(0) SCROLL(20,53,21,79,0) ELSE SELECT &goto_file. back_area = back_area + CHR(64 + SELECT()) +"/" ENDIF ENDDO SELECT &retuned. back_area = back_area + "Z" get_it_bck = back_area + '", "' + field_first RETURN('"' + get_it_bck + '"') ********************* PROCEDURE Reset PARAMETERS _off IF PCOUNT() = 0 SET KEY 18 TO Homeit SET KEY 3 TO Endit ELSE SET KEY 18 TO SET KEY 3 TO ENDIF ******************** PROCEDURE Homeit KEYBOARD CHR(1) ******************** PROCEDURE Endit KEYBOARD CHR(6) ******************** PROCEDURE Withquit PARAMETERS _with IF _with SET KEY ASC("Q") TO _Force SET KEY ASC("q") TO _Force ELSE SET KEY ASC("Q") TO SET KEY ASC("q") TO ENDIF ********************* PROCEDURE _force KEYBOARD CHR(27) * End of File