home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a075 / 1.img / TOOLKIT1.EXE / SST175.PRG < prev    next >
Encoding:
Text File  |  1989-10-02  |  28.4 KB  |  1,152 lines

  1. *******************
  2.  
  3. PROCEDURE Word_pro
  4.  
  5.    PARAMETERS test_frame, clip_help, keyfunc
  6.  
  7.    word_color = SETCOLOR()
  8.  
  9.    DO CASE
  10.    CASE PCOUNT() = 0
  11.       test_frame = "*.TXT"
  12.       clip_help = "CLIP"
  13.       IF TYPE("Keystroke()") = "UI"
  14.          keyfunc   = "KEYSTROKE"
  15.       ELSE
  16.          keyfunc   = ""
  17.       ENDIF
  18.    CASE PCOUNT() = 1
  19.       clip_help = "CLIP"
  20.       IF TYPE("Keystroke()") = "UI"
  21.          keyfunc   = "KEYSTROKE"
  22.       ELSE
  23.          keyfunc   = ""
  24.       ENDIF
  25.    CASE PCOUNT() = 3
  26.       IF EMPTY(clip_help)
  27.          clip_help = "CLIP"
  28.       ENDIF
  29.       IF EMPTY(test_frame)
  30.          test_frame = "*.TXT"
  31.       ENDIF
  32.    ENDCASE
  33.  
  34.    IF !FILE("Screen.sys") .AND. TYPE("scrdata") = "U"
  35.       RETURN
  36.    ENDIF
  37.  
  38.    IF TYPE("allscreens") = "A"
  39.       Savearray("SCREENS", allscreens)
  40.       Savearray("COLORS",  allcolor)
  41.       Savearray("WINDOWS", allwindows)
  42.       SAVE ALL TO (scrprog + "Holding.sys")
  43.       Wordproc()
  44.       Bringitup()
  45.       RESTORE FROM (scrprog + "Holding.sys") ADDITIVE
  46.       Restarray("SCREENS", allscreens)
  47.       Restarray("COLORS",  allcolor)
  48.       Restarray("WINDOWS", allwindows)
  49.       ERASE (scrprog + "Holding.sys")
  50.  
  51.       Delfile("*.arr")
  52.    ELSE
  53.       Wordproc()
  54.    ENDIF
  55.  
  56. ********************
  57.  
  58. PROCEDURE Wordproc
  59.  
  60.    PUBLIC tot_line, already
  61.  
  62.    EXTERNAL Dside
  63.  
  64.    STORE "" TO workfile, document, datafile, getfield, mac_file, head_text, foot_text
  65.    STORE .F. TO mergefile, already, file_saved, quit_to, scrhelp
  66.    STORE 0 TO intab, tot_line, left_mar, mac_point
  67.    STORE 1 TO copies, line_sp
  68.    STORE 79 TO right_mar
  69.    STORE " " TO front_file
  70.    STORE "" TO macros, macrostr, use_fils, use_names
  71.    STORE "" TO word_pmts, good_files
  72.    DECLARE macros[12], macrostr[12], use_files[8], use_names[8]
  73.  
  74.    CLEAR SCREEN
  75.    @ 00,00 SAY "Loading Files into Table!"
  76.    SET MESSAGE TO
  77.  
  78.    IF !FILE(clip_help + ".PMT")
  79.        clip_help = ""
  80.    ELSE
  81.       DECLARE word_pmts[DEC_ARRAY(clip_help + ".PMT")]
  82.       DO Restarray WITH clip_help + ".PMT", word_pmts
  83.    ENDIF
  84.  
  85.    AFILL(macros, .F.)
  86.    AFILL(macrostr, "")
  87.  
  88.    FOR tempx = 1 TO 12
  89.       IF tempx <= 8
  90.          use_names[tempx] = " " + TRANSFORM(tempx, "9") + "> No File Issued     "
  91.          use_files[tempx] = ""
  92.       ENDIF
  93.    NEXT
  94.  
  95.    SET KEY 306 TO Build_mac
  96.  
  97.    no_of_file = ADIR(test_frame)
  98.    IF !EMPTY(no_of_file)                && Loading the files for the word processor to scan
  99.       DECLARE good_files[no_of_files]
  100.       ADIR(test_frame, good_files)
  101.       ASORT(good_files)
  102.    ELSE
  103.       good_files = ""
  104.    ENDIF
  105.  
  106.    BRINGSETUP()
  107.  
  108.    IF FILE("Dataname.txt")                      && Load in Databases Only..
  109.       @ 01,00 SAY "Data Table Found!"
  110.       DO Load_data
  111.    ELSE
  112.       DO Use_files
  113.    ENDIF
  114.    @ 0,0 CLEAR
  115.    SET SCOREBOARD OFF
  116.    @  0,0 SAY "Steve Straley's Text Editor"
  117.    PUSHSCREEN(1,1,10,12,.T.,.T.,.T.,.T.)
  118.    DO WHILE .T.
  119.       IF file_saved
  120.          no_of_file = ADIR(test_frame)
  121.          DECLARE good_files[no_of_files]
  122.          ADIR(test_frame, good_files)
  123.          ASORT(good_files)
  124.          file_saved = .F.
  125.       ENDIF
  126.       DO Filestat
  127.       @ 2,2 PROMPT " Open     "
  128.       @ 3,2 PROMPT " Make     "
  129.       @ 4,2 PROMPT " Save     "
  130.       @ 5,2 PROMPT " Clear    "
  131.       @ 6,2 PROMPT " Edit     "
  132.       @ 7,2 PROMPT " Features "
  133.       @ 8,2 PROMPT " Printing "
  134.       @ 9,2 PROMPT " Quit     "
  135.       MENU TO option5
  136.       DO CASE
  137.       CASE option5 = 1
  138.          Open_file()
  139.       CASE option5 = 2
  140.          Crea_file()
  141.       CASE option5 = 3
  142.          @ 24,01 CLEAR
  143.          @ 24,01 SAY "One Moment.  Building Table...."
  144.          Save_file()
  145.          @ 24,01 CLEAR
  146.  
  147.       CASE option5 = 4
  148.          Clean_all()
  149.       CASE option5 = 5
  150.          Edit_file()
  151.       CASE option5 = 6
  152.          Features()
  153.       CASE option5 = 7
  154.          Word4()
  155.       CASE option5 = 8
  156.          @ 12,3 SAY "Are you sure you want to exit? "
  157.          IF PROMPT()
  158.             EXIT
  159.          ELSE
  160.             @ 12,00
  161.          ENDIF
  162.       OTHERWISE
  163.          KEYBOARD "Q"
  164.       ENDCASE
  165.    ENDDO
  166.    POPSCREEN(1,1,10,12,.T.)
  167.    SET KEY ASC("?") TO 
  168.    SET KEY 306 TO
  169.    SET KEY 28 TO
  170.    IF TYPE("Keystroke()") != "UI"
  171.       SET KEY 291 TO
  172.    ENDIF
  173.    
  174.  
  175. ********************
  176.  
  177. PROCEDURE Features
  178.  
  179.    mac_file = "KEYS"
  180.    option6 = 1
  181.    PUSHSCREEN(8,3,19,27,.T.,.T.,.T.,.T.)
  182.    DO WHILE .T.
  183.       mac_file = mac_file + SPACE(8 - LEN(mac_file))
  184.       DO Filestat
  185.       option6 = MAKEMENU("Set Left Margin/Set Right Margin/Set Line Spacing/Number of Copies/Header Information /Footer Information/Set Tab Indent/Save Macro File/Load Macro File/Save ASCII",9,4, "option6", 1, .T.)
  186.       DO CASE
  187.       CASE option6 = 1
  188.          @ 9,31 SAY "═══ " GET left_mar PICT "###" VALID Margin(left_mar, 1)
  189.          READ
  190.          @ 9,31
  191.       CASE option6 = 2
  192.          @ 10,31 SAY "═══ " GET right_mar PICT "###" VALID Margin(right_mar, 2)
  193.          READ
  194.          @ 10,31
  195.       CASE option6 = 3
  196.          @ 11,31 SAY "═══ " GET line_sp PICT "##" VALID Margin(line_sp, 3)
  197.          READ
  198.          @ 11,31 SAY SPACE(40)
  199.       CASE option6 = 4
  200.          @ 12,31 SAY "═══ " GET copies PICT "##" VALID Margin(copies, 4)
  201.          READ
  202.          @ 12,31 SAY SPACE(40)
  203.       CASE option6 = 5
  204.          @ 13,31 SAY "═══ Enter Header Text "
  205.          head_text = FILL_OUT(TRIM(head_text),79)
  206.          @ 14,31 GET head_text PICT "@S20"
  207.          READ
  208.          @ 13,31 SAY SPACE(40)
  209.          @ 14,31 SAY SPACE(40)
  210.       CASE option6 = 6
  211.          @ 14,31 SAY "═══ Enter Footer Text "
  212.          foot_text = FILL_OUT(TRIM(foot_text),79)
  213.          @ 15,31 GET foot_text PICT "@S20"
  214.          READ
  215.          @ 14,31 SAY SPACE(40)
  216.          @ 15,31 SAY SPACE(40)
  217.       CASE option6 = 7
  218.          @ 15,31 SAY "═══ Set Tab to " GET intab PICT "##" VALID Margin(intab, 5)
  219.          READ
  220.          @ 15,31
  221.       CASE option6 = 8
  222.          @ 16,31 SAY "═══ Save to " GET mac_file PICT "@K"
  223.          READ
  224.          IF EMPTY(mac_file) .OR. LASTKEY() = 27
  225.          ELSE
  226.              mac_file = TRIM(mac_file)
  227.              DO Save_mac
  228.          ENDIF
  229.          @ 16,31 SAY SPACE(40)
  230.       CASE option6 = 9
  231.          @ 17,31 SAY "═══ Load from " GET mac_file PICT "@K !!!!!!!!"
  232.          READ
  233.          IF EMPTY(mac_file) .OR. LASTKEY() = 27
  234.          ELSE
  235.              mac_file = TRIM(mac_file)
  236.              DO Load_mac
  237.          ENDIF
  238.          @ 17,31 SAY SPACE(40)
  239.       CASE option6 = 10
  240.          workfile = FILL_OUT(workfile, 12)
  241.          @ 19,31 SAY "═══ SAVE to ASCII File " GET workfile PICT "@K !!!!!!!!!!!!"
  242.          READ
  243.          workfile = LTRIM(TRIM(workfile))
  244.          IF Occurence(".", workfile) > 1
  245.             workfile = SUBSTR(workfile, 1, AT(".", workfile) + 3)
  246.          ENDIF
  247.          IF LASTKEY() <> 27
  248.             @ 20,31 SAY "Now writing file &workfile.  One Moment Please."
  249.             IF !ASCII_SAVE(workfile, .T.)
  250.                RID(20,29, "Now writing file &workfile.  One Moment Please.")
  251.                old_color = SETCOLOR()
  252.                new_color = REVERSE(old_color)
  253.                SETCOLOR(new_color)
  254.                @ 20,31 SAY "Problems Writing the File.   Please Check!!  Any Key!!"
  255.                INKEY(0)
  256.                SETCOLOR(old_color)
  257.             ENDIF
  258.          ENDIF
  259.          @ 19,31 SAY SPACE(40)
  260.       OTHERWISE
  261.          EXIT
  262.       ENDCASE
  263.    ENDDO
  264.    POPSCREEN(8,3,19,27,.T.)
  265.    
  266. ********************
  267.  
  268. PROCEDURE Word4
  269.  
  270.    option6 = 1
  271.    Wpush(9,3,13,13)
  272.    Filestat()
  273.    IF !EMPTY(workfile)
  274.       @ 10,4 SAY "No FIle  "
  275.       @ 11,4 SAY "can be   "
  276.       @ 12,4 SAY "open...! "
  277.       INKEY(0)
  278.    ELSE
  279.       outfile = SPACE(8)
  280.       @ 10,4 PROMPT " Screen  "
  281.       @ 11,4 PROMPT " Printer "
  282.       @ 12,4 PROMPT " File    "
  283.       MENU TO option6
  284.       IF LASTKEY() != 27
  285.          Wpush(13,5,15,50)
  286.          thefile = SPACE(12)
  287.          @ Wrow(1), Wcol(1) SAY "Name of file to print => " GET thefile PICT "@!" VALID FILE(TRIM(thefile))
  288.          READ
  289.          Wpop()
  290.          DO CASE
  291.          CASE option6 = 1
  292.             Pushscreen()
  293.             Merging_it(TRIM(thefile), option6, outfile)
  294.             Popscreen()
  295.  
  296.          CASE option6 = 2
  297.             IF  !ISPRINTER()
  298.                @ 11,25 SAY " ═ Your Printer is NOT on Line"
  299.                INKEY(5)
  300.                @ 11,25 SAY SPACE(31)
  301.             ELSE
  302.                Merging_it(TRIM(thefile), option6, outfile)
  303.             ENDIF
  304.          CASE option6 = 3
  305.             @ 12, 25 SAY " ═ Enter Output File Name ═══"
  306.             @ 12, 17 GET outfile PICT "@!" VALID MAKE_TEXT(outfile, 14, 17)
  307.             READ
  308.             IF !EMPTY(outfile)
  309.                Merging_it(TRIM(thefile), option6, outfile)
  310.             ENDIF
  311.          ENDCASE
  312.          @ 12,17
  313.          @ 14,17
  314.       ENDIF
  315.    ENDIF
  316.    Wpop()
  317.       
  318. ********************
  319.  
  320. PROCEDURE Merging_it
  321.  
  322.    PARAMETERS read_what, whatway, whatfile
  323.  
  324.    nofile = .T.
  325.  
  326.    IF whatway = 3
  327.       @ 24,00
  328.       @ 24,00 SAY "Now printing out &whatfile."
  329.       SET ALTERNATE TO &whatfile
  330.       SET ALTERNATE OFF
  331.    ENDIF
  332.  
  333.    SELECT A
  334.    GO TOP
  335.    DO WHILE BREAKOUT() .AND. DISKSPACE() >= 4096
  336.  
  337.       FOR temp_x = 1 TO copies
  338.  
  339.          Print_st(read_what, whatway, whatfile)
  340.  
  341.          IF LASTKEY() = 27 .OR. INKEY() = 27
  342.             EXIT
  343.          ENDIF
  344.  
  345.          IF whatway = 1
  346.             @ 24,00
  347.             @ 24,00 SAY "Any key..."
  348.             INKEY(0)
  349.          ELSEIF whatway = 2
  350.             @ 24,00 SAY "Any key for next page, 'Q' to Quit.."
  351.             IF Qwait("Q")
  352.                GO BOTTOM
  353.                SKIP
  354.                EXIT
  355.             ENDIF
  356.          ELSE
  357.             SET ALTERNATE ON
  358.             SET CONSOLE OFF
  359.             ?
  360.             ? REPLICATE("-", 80)
  361.             ?
  362.             SET CONSOLE ON
  363.             SET ALTERNATE OFF
  364.          ENDIF
  365.  
  366.       NEXT
  367.  
  368.       IF nofile .OR. EOF()
  369.          EXIT
  370.       ENDIF 
  371.       SKIP
  372.  
  373.    ENDDO
  374.    CLOSE ALTERNATE
  375.  
  376. ********************
  377.  
  378. PROCEDURE Print_st
  379.  
  380.    PARAMETERS _pfile, _pway, _pout
  381.  
  382.    * _pfile is the name of the file to print
  383.    * _pway is the output way: 1 for screen, 2 for printer, 3 for file
  384.    * _pout is the name of the output file
  385.  
  386.    IF _pway = 1
  387.       CLEAR SCREEN
  388.  
  389.    ELSEIF _pway = 2
  390.       SET CONSOLE OFF
  391.       @ 24,00
  392.       @ 24,00 SAY "Printing the file..."
  393.       SET DEVICE TO PRINT
  394.       SET PRINT ON
  395.  
  396.    ELSE
  397.  
  398.       SET CONSOLE OFF
  399.       SET ALTERNATE ON
  400.  
  401.    ENDIF
  402.  
  403.    fhandle = FOPEN(_pfile)
  404.  
  405.    bytes = 1024
  406.  
  407.    end = FSEEK(fhandle, 0, 2)
  408.  
  409.    line = ""
  410.  
  411.    count = 0
  412.  
  413.    FSEEK(fhandle, 0, 0)
  414.    DO WHILE .T.
  415.       char = SPACE(bytes)
  416.       exit = FREAD(fhandle, @char, bytes ) != bytes
  417.       char = line + char
  418.       DO WHILE !EMPTY(char)
  419.          line = STRTRAN(Parsing(@char, CHR(13)+CHR(10) ), CHR(26), "")
  420.          IF nofile
  421.             IF CHR(174)$line
  422.                nofile = .F.
  423.             ENDIF
  424.          ENDIF
  425.          ?? SPACE(left_mar) + Print_stri(line) + REPLICATE( CHR(13)+CHR(10), line_sp)
  426.          count = count + 1
  427.       ENDDO
  428.       IF exit
  429.          line = STRTRAN(line, CHR(26), "")
  430.          ?? SPACE(left_mar) + Print_stri(line) + REPLICATE( CHR(13)+CHR(10), line_sp)
  431.          count = count + 1
  432.          EXIT
  433.       ENDIF
  434.    ENDDO
  435.  
  436.    IF _pway = 2   && To the printer!
  437.       EJECT
  438.    ELSE
  439.       FOR x = 66 TO count STEP -1
  440.          ?
  441.       NEXT
  442.    ENDIF
  443.  
  444.    FCLOSE(fhandle)
  445.    SET CONSOLE ON
  446.    SET DEVICE TO SCREEN
  447.    SET PRINT OFF
  448.    SET ALTERNATE OFF
  449.  
  450. ********************
  451.  
  452. PROCEDURE Filestat
  453.  
  454.    @ 24,00 
  455.    @ 24, 1, IF(!EMPTY(workfile), "Document Name => " + FILL_OUT(workfile, 15), SPACE(29))
  456.    @ 24,40, IF(!EMPTY(datafile), "Data File => " + FILL_OUT(datafile, 15), SPACE(36))
  457.  
  458. ********************
  459.  
  460. PROCEDURE Open_file
  461.  
  462.    SET KEY ASC("?") TO Inq_file
  463.    IF !EMPTY(workfile)
  464.       workfile = TRIM(SUBSTR(workfile, 1, AT(".", workfile)-1))
  465.    ELSE
  466.       workfile = SPACE(13)
  467.    ENDIF
  468.    workfile = FILL_OUT(workfile, 13)
  469.    @ 2,45 SAY [Press "?" to Get Listing]
  470.    @ 2,15 SAY "═══ File " GET workfile PICT "@K@!" VALID(GOOD_TEXT(workfile))
  471.    READ
  472.    @ 2,15 SAY SPACE(64)
  473.    SET KEY ASC("?") TO 
  474.    IF EMPTY(workfile)
  475.       document = ""
  476.       RETURN
  477.    ENDIF
  478.    IF AT(".", workfile) = 0 .AND. test_frame = "*.TXT"
  479.       workfile = Extention(TRIM(workfile), "TXT")
  480.    ENDIF
  481.    IF !FILE(workfile)
  482.       @ 21,00 SAY CENTR("Unable to Open Document.   Any key to continue...")
  483.       INKEY(0)
  484.       workfile = ""
  485.       RETURN
  486.    ENDIF
  487.    already = .F.
  488.    readi = (MEMORY(0) * 1000 ) / 3
  489.  
  490.    _fhandle = FOPEN(workfile)
  491.    FSEEK(_fhandle, 0)
  492.  
  493.    front_file = ""
  494.    IF readi < 1000
  495.       readi = 1000
  496.    ENDIF
  497.  
  498.    document   = FREADSTR(_fhandle, readi)
  499.    FCLOSE(_fhandle)
  500.  
  501.    mergefile = .T.
  502.  
  503. ********************
  504.  
  505. PROCEDURE Inq_file
  506.  
  507.    PARAMETERS p, l, v
  508.  
  509.    KEYBOARD "/" + CHR(13)
  510.  
  511. ********************
  512.  
  513. PROCEDURE Edit_file
  514.  
  515.    IF EMPTY(workfile)
  516.       @ 6,15 SAY "═══ You need to OPEN or MAKE a document first."
  517.       INKEY(0)
  518.       @ 6,15 SAY SPACE(50)
  519.       RETURN
  520.    ENDIF
  521.    PUSHSCREEN()
  522.    @  0, 0 CLEAR
  523.    @  0, 0 SAY "Working with " GET workfile
  524.    CLEAR GETS
  525.    @  1,0 SAY REPLICATE("═", 80)
  526.    @ 21,0 SAY REPLICATE("═", 80)
  527.    @  1,left_mar SAY CHR(209)
  528.    @  1,IF(right_mar <= 79, right_mar, 79) SAY CHR(209)
  529.    @ 21,left_mar SAY CHR(207)
  530.    @ 21,IF(right_mar <= 79, right_mar, 79) SAY CHR(207)
  531.    @ 24,00 SAY "Alt-H for On-Line Help"
  532.    IF TYPE("Keystroke()") = "UI"
  533.       IF !EMPTY(clip_help)
  534.          @ ROW(), COL()+2 SAY "[ OR ] ALT T for Tutorial"
  535.       ENDIF
  536.    ELSE
  537.       SET KEY 291 TO Wordhelp
  538.    ENDIF
  539.    SET SCORE OFF
  540.    SET KEY -4 TO Showfield
  541.  
  542.    Set_macro(.T.)
  543.  
  544.    SET KEY 9 TO Tabbing
  545.    SET KEY -1 TO Showmacro
  546.    SET FUNCTION 10 TO CHR(23)
  547.    right_side = IF(right_mar <= 79, right_mar, 79)
  548.    document =  ASCII_SAVE( MEMOEDIT(document, 2,left_mar, 20, right_side, .T., keyfunc, right_mar), .F. )
  549.    IF LASTKEY() = 23
  550.       Save_file()
  551.    ENDIF
  552.    SET KEY 9 TO
  553.    SET KEY -4 TO
  554.    SET KEY 28 TO
  555.    SET KEY -1 TO
  556.    Set_macro(.F.)
  557.    POPSCREEN()
  558.  
  559. ********************
  560.  
  561. PROCEDURE Tabbing
  562.  
  563.    PARAMETERS p, l, v
  564.  
  565.    KEYBOARD REPLICATE(" ", intab)
  566.  
  567. ********************
  568.  
  569. PROCEDURE Crea_file
  570.    
  571.    IF !EMPTY(workfile)
  572.       workfile = SUBSTR(workfile, 1, AT(".", workfile)-1)
  573.    ENDIF
  574.    workfile = workfile + SPACE(12 - LEN(workfile))
  575.    @ 3,15 SAY "════ File " GET workfile PICT "@K!!!!!!!!!!!!" VALID Make_text(workfile)
  576.    READ
  577.    @ 3,15 SAY SPACE(40)
  578.    IF EMPTY(workfile)
  579.       document = ""
  580.    ELSE
  581.       IF !mergefile
  582.          front_file = ""
  583.       ENDIF
  584.       workfile = Extention(TRIM(workfile), "TXT")
  585.    ENDIF
  586.  
  587. ********************
  588.  
  589. PROCEDURE Clean_all
  590.  
  591.    @  5,15 SAY "════ Are you sure you want to clean out system? "
  592.    IF PROMPT()
  593.       STORE "" TO workfile, document, datafile, clam, front_file
  594.       STORE .F. TO mergefile
  595.       SET KEY -4 TO
  596.    ENDIF
  597.    @  5,15 SAY SPACE(60)
  598.  
  599. ********************
  600.  
  601. PROCEDURE Save_file
  602.  
  603.    IF EMPTY(workfile)
  604.       document = ""
  605.    ELSE
  606.       IF FILE(workfile)
  607.          backup = SUBSTR(workfile, 1, AT(".", workfile)) + "BAK"
  608.          COPY FILE (workfile) TO (backup)
  609.       ENDIF
  610.       IF workfile = "DATANAME.TXT"
  611.          document = FORM(document)
  612.       ENDIF
  613.       SKIP 0
  614.       MEMOWRIT(workfile, document)
  615.       STORE "" TO document, workfile, datafile, front_file
  616.       STORE .F. to mergefile
  617.       STORE .T. TO file_saved
  618.    ENDIF
  619.  
  620. ********************
  621.  
  622. FUNCTION Good_text
  623.  
  624.    PARAMETERS what_file
  625.  
  626.    IF EMPTY(what_file) .OR. FILE(what_file)
  627.       RETURN(.T.)
  628.    ENDIF
  629.    IF EMPTY(LEN(good_files)) 
  630.       ?? "     There are no files on disk to Open "
  631.       STORE "" TO workfile, document
  632.       INKEY(3)
  633.       RETURN(.T.)
  634.    ENDIF
  635.    DO CASE
  636.    CASE AT(".", what_file) = 0
  637.       IF test_frame = "*.TXT"
  638.          what_file = TRIM(what_file) + ".TXT"
  639.       ENDIF
  640.       locat = ASCAN(good_files, TRIM(what_file))
  641.    CASE AT(".TXT", what_file) > 0
  642.       locat = ASCAN(good_files, what_file)
  643.    CASE AT(".", what_file) > 0
  644.       locat = -1
  645.    OTHERWISE
  646.       IF test_frame = "*.TXT"
  647.          locat = 0
  648.       ELSE
  649.          locat = ASCAN(good_files, TRIM(what_file))
  650.       ENDIF
  651.    ENDCASE
  652.  
  653.    IF locat = -1
  654.       RETURN(.T.)
  655.    ENDIF
  656.       
  657.    IF !EMPTY(locat)
  658.       RETURN(.T.)
  659.    ELSE
  660.       where = APOP(2, 25, 20, 15, good_files, .T., "", .T.)
  661.       IF where = 0
  662.          workfile = SPACE(8)
  663.       ELSE
  664.          workfile = good_files[where]
  665.          IF test_frame = "*.TXT"
  666.             workfile = SUBSTR(workfile, 1, AT(".", workfile) - 1)
  667.             workfile = workfile + SPACE(8 - LEN(workfile))
  668.          ENDIF
  669.       ENDIF
  670.       KEYBOARD CHR(13)
  671.       RETURN(.F.)
  672.    ENDIF
  673.  
  674. ********************
  675.  
  676. FUNCTION Make_text
  677.  
  678.    PARAMETERS what_file, mes_row, mes_col
  679.  
  680.    IF PCOUNT() = 1
  681.       mes_row = ROW()
  682.       mes_col = COL()
  683.    ENDIF
  684.  
  685.    IF EMPTY(what_file)
  686.       RETURN(.T.)
  687.    ENDIF
  688.    IF AT(".", what_file) > 0 .AND. AT("TXT", what_file) = 0
  689.       RETURN(.T.)
  690.    ENDIF
  691.    IF AT(".", what_file) = 0
  692.       what_file = TRIM(what_file) + ".TXT"
  693.    ENDIF
  694.    * locat = IF(EMPTY(good_files), 0, ASCAN(good_files, what_file))
  695.    IF !FILE(what_file)
  696.       @ mes_row, mes_col SAY "                             "
  697.       RETURN(.T.)
  698.    ELSE
  699.       @ mes_row, mes_col SAY " That file is already on disk"
  700.       RETURN(.F.)
  701.    ENDIF
  702.  
  703. ********************
  704.  
  705. PROCEDURE Showfield
  706.  
  707.    PARAMETERS p, l, v
  708.  
  709.    _holdcolor = SETCOLOR()
  710.    trow = ROW()
  711.    tcol = COL()
  712.    * First pick the database to work with
  713.    IF GOODFIELD()
  714.       @  1,0 SAY REPLICATE("═", 80)
  715.       IF !EMPTY(getfield)
  716.          SPELLIT(TRIM(getfield))
  717.       ENDIF
  718.    ENDIF
  719.    @ trow, tcol SAY ""
  720.    SETCOLOR(_holdcolor)
  721.  
  722. ********************
  723.  
  724. PROCEDURE Macro_show
  725.  
  726.    PARAMETERS p, l, v
  727.  
  728.    SETCOLOR(word_color)
  729.    mac_point = LASTKEY()
  730.    SET TYPEAHEAD TO LEN(macrostr[mac_point - 375])
  731.    CALL __cclr
  732.    KEYBOARD macrostr[mac_point - 375] + CHR(0)
  733.    
  734. ********************
  735.  
  736. PROCEDURE Spellit
  737.  
  738.    PARAMETERS the_word, extra
  739.  
  740.    IF EMPTY(the_word)
  741.       RETURN
  742.    ENDIF
  743.    extra = IF(PCOUNT() = 1, .T., extra)
  744.    spell = IF(extra, CHR(174), spell)
  745.    spell = spell + ALIAS() + "->" + the_word + IF(extra, CHR(175), spell)
  746.    KEYBOARD spell
  747.  
  748. ********************
  749.  
  750. FUNCTION Goodfield
  751.  
  752.    PRIVATE _amount
  753.    
  754.    SETCOLOR(word_color)
  755.    SET INTENS ON
  756.    _amount = WITHFILE()
  757.    IF !EMPTY(_amount)
  758.       @ 00,40 SAY "Pick the File"
  759.       IF Picktheone(_amount)
  760.          @ 00,40 SAY "Pick the Field to Merge"
  761.          DECLARE all_fields[FCOUNT()]
  762.          AFIELDS(all_fields)
  763.          where_x = Apop(1, 40, 13, 15, all_fields)
  764.          getfield = IF((where_x = 0), SPACE(10), all_fields[where_x])
  765.          Rid(00,40,"Pick the Field to Merge")
  766.          RETURN(.T.)
  767.       ELSE
  768.          @ 00,40 SAY "             "
  769.          RETURN(.F.)
  770.       ENDIF
  771.       Rid(00,40,"Pick the Field to Merge")
  772.    ELSE
  773.       RETURN(.F.)
  774.    ENDIF
  775.  
  776. ********************
  777.  
  778. FUNCTION Withfile
  779.  
  780.    PRIVATE _tmp
  781.  
  782.    _count = 0
  783.    FOR _qaz = 1 TO 50
  784.       _tmp = LTRIM(STR(_qaz))
  785.       SELECT &_tmp.
  786.       IF !EMPTY(LEN(ALIAS()))
  787.          _count = _count + 1
  788.       ENDIF
  789.    NEXT
  790.    RETURN(_count)
  791.  
  792. *******************
  793.  
  794. FUNCTION Picktheone
  795.  
  796.    PARAMETERS _dec
  797.  
  798.    PRIVATE _tarray[_dec]
  799.  
  800.    FOR _qaz = 1 TO 50
  801.       SELECT (_qaz)
  802.       IF !EMPTY(LEN(ALIAS()))
  803.          _tarray[_qaz] = ALIAS()
  804.       ENDIF
  805.    NEXT
  806.    SELECT 1
  807.    where_x = APOP(1, 40, 13, 15, _tarray)
  808.    IF !EMPTY(where_x)
  809.       SELECT(where_x)
  810.       RETURN(.T.)
  811.    ELSE
  812.       RETURN(.F.)
  813.    ENDIF
  814.  
  815. ********************
  816.  
  817. PROCEDURE Build_mac
  818.  
  819.    PARAMETERS p, l, v
  820.    
  821.    SET KEY 306 TO 
  822.    trow = ROW()
  823.    tcol = COL()
  824.    _ocolor = SETCOLOR()
  825.    SETCOLOR(IF(ISCOLOR() .AND. !(IF(TYPE("scrmono")="U", .T., scrmono)), "W+/B", SETCOLOR()))
  826.  
  827.    Wpush(4,0,18,75,3,.T.)
  828.    Wsayget(1,2,"Press key to begin macro / ESC to Abort ═══ ")
  829.    DO WHILE .T.
  830.       the_key = INKEY(0)
  831.       IF (the_key >= 376 .AND. the_key <= 387) .OR. the_key = 27
  832.          EXIT
  833.       ENDIF
  834.    ENDDO
  835.    IF !(the_key = 27)
  836.       mac_point = the_key - 375
  837.       SETCOLOR(_ocolor)
  838.       Wsayget(Wdepth()-4,45, " KEY = ALT " + LTRIM(TRIM(STR(mac_point))) + " " )
  839.       SETCOLOR(IF(ISCOLOR() .AND. !(IF(TYPE("scrmono")="U", .T., scrmono)), "W+/B", SETCOLOR()))
  840.       macros[mac_point] = .T.
  841.       Clear_area()
  842.       IF !EMPTY(macrostr[mac_point])
  843.          Wsayget(1,2,"Do you want to clear the original macro? ")
  844.          IF Prompt()
  845.             macrostr[mac_point] = ""
  846.          ENDIF
  847.          Rid(5, 7, "Do you want to clear the original macro?    ")
  848.       ENDIF
  849.       Wsayget(1,2, "Enter keys to be in the macro. ")
  850.       SETCOLOR(IF(ISCOLOR() .AND. !(IF(TYPE("scrmono")="U", .T., scrmono)), "W*+/R", SETCOLOR()))
  851.       Wsayget(1,35," F10 TO Save! ")
  852.       SETCOLOR(IF(ISCOLOR() .AND. !(IF(TYPE("scrmono")="U", .T., scrmono)), "W+/B", SETCOLOR()))
  853.       tempmacro = macrostr[mac_point]
  854.       infer = .F.
  855.       tempmacro = MEMOTRAN(MEMOEDIT(tempmacro,WROW(3),WCOL(4),WROW(12),WCOL(60),.T.,"Myedit"))
  856.       macrostr[mac_point] = ""
  857.       macrostr[mac_point] = tempmacro
  858.       IF LASTKEY() = 27
  859.          macrostr[mac_point] = tempmacro
  860.       ELSE
  861.          Set_macro(.T.)
  862.       ENDIF
  863.    ENDIF
  864.    Wpop()
  865.    SETCOLOR(_ocolor)
  866.    @ trow, tcol SAY ""
  867.    SET KEY 306 TO Build_mac
  868.    
  869. ********************
  870.  
  871. PROCEDURE Set_macro
  872.  
  873.    PARAMETERS on
  874.  
  875.    IF on
  876.       FOR tempx = 1 TO 12
  877.          IF !EMPTY(macros[tempx])
  878.             SET KEY 375 + tempx TO Macro_show
  879.          ELSE
  880.             SET KEY 375 + tempx TO
  881.          ENDIF
  882.       NEXT
  883.    ELSE
  884.       FOR tempx = 1 TO 12
  885.          SET KEY 375 + tempx TO
  886.       NEXT
  887.    ENDIF
  888.        
  889.  
  890. ********************
  891.  
  892. PROCEDURE Save_mac
  893.  
  894.    FOR _qaz = 1 TO 12
  895.        _ext = LTRIM(TRIM(STR(_qaz)))
  896.        zmac&_ext.   = macros[_qaz]
  897.        zmacstr&_ext.= macrostr[_qaz]
  898.     NEXT
  899.     SAVE ALL LIKE zmac* TO (scrprog + mac_file + ".mac")
  900.     
  901. ********************
  902.  
  903. PROCEDURE Load_mac
  904.  
  905.    IF !FILE(scrprog + mac_file + ".MAC")
  906.       RETURN
  907.    ENDIF
  908.    RESTORE FROM (scrprog + mac_file + ".mac") ADDITIVE
  909.    FOR _qaz = 1 TO 12
  910.       _ext = LTRIM(TRIM(STR(_qaz)))
  911.       macros[_qaz] = zmac&_ext.
  912.       macrostr[_qaz] = zmacstr&_ext.
  913.    NEXT
  914.    RELEASE ALL LIKE zmac*
  915.  
  916. ********************
  917.  
  918. PROCEDURE Showmacro
  919.  
  920.    PARAMETERS p, l, v
  921.  
  922.    _t1 = ROW()
  923.    _t2 = COL()
  924.    Wpush(3,5,18,75,3,.T.)
  925.    Wsayget( 0,10,CHR(194))
  926.    Wsayget( 1, 1, "  Alt 1  │ ")
  927.    Wsayget( 2, 1, "  Alt 2  │ ")
  928.    Wsayget( 3, 1, "  Alt 3  │ ")
  929.    Wsayget( 4, 1, "  Alt 4  │ ")
  930.    Wsayget( 5, 1, "  Alt 5  │ ")
  931.    Wsayget( 6, 1, "  Alt 6  │ ")
  932.    Wsayget( 7, 1, "  Alt 7  │ ")
  933.    Wsayget( 8, 1, "  Alt 8  │ ")
  934.    Wsayget( 9, 1, "  Alt 9  │ ")
  935.    Wsayget(10, 1, "  Alt 0  │ ")
  936.    Wsayget(11, 1, "  Alt -  │ ")
  937.    Wsayget(12, 1, "  Alt =  │ ")
  938.    Wsayget(13, 1, "         │ ")
  939.    Wsayget(14, 1, "         │ ")
  940.    Wsayget(15,10, CHR(193))
  941.    FOR qaz = 1 TO 12
  942.       IF EMPTY(macros[qaz])
  943.          Wsayget(qaz, 15, "---<not set>---")
  944.       ELSE
  945.          the_posit = AT(CHR(13), macrostr[qaz])
  946.          IF the_posit = 0
  947.             the_posit = AT(CHR(9), macrostr[qaz])
  948.             IF the_posit = 0
  949.                the_posit = LEN(macrostr[qaz])
  950.             ELSE
  951.                the_posit = the_posit - 1
  952.             ENDIF
  953.          ELSE
  954.             the_posit = the_posit - 1
  955.          ENDIF
  956.          Wsayget(qaz, 18, SUBSTR(macrostr[qaz], 1, IF((the_posit > 45), 45, the_posit)))
  957.       ENDIF
  958.    NEXT
  959.    Wsayget(14, 30, "Press any key to resume Editing...")
  960.    INKEY(0)
  961.    Wpop()
  962.    @ _t1, _t2, ""
  963.  
  964. ********************
  965.  
  966. FUNCTION Form
  967.  
  968.    PARAMETERS clam
  969.          
  970.    tot_line = MLCOUNT(clam, right_mar - left_mar)
  971.    RETURN( ASCII_SAVE(clam, .F.) )
  972.  
  973. ********************
  974.  
  975. PROCEDURE Load_data
  976.  
  977.    @ 02,00 SAY "Creating Temprorary Data File!"
  978.    CREATE Template
  979.    USE Template
  980.    APPEND BLANK
  981.    REPLACE field_name WITH "Name", field_type WITH "C", field_len WITH 18
  982.    USE
  983.    CREATE Datafile FROM Template
  984.    ERASE Template.dbf
  985.    @ 03,00 SAY "Checking Data Table!"
  986.    USE Datafile
  987.    APPEND FROM Dataname.txt SDF
  988.    GO TOP
  989.    xxx = 1
  990.    @ 04,00 SAY "Creating Menu Items Accordingly!"
  991.    DO WHILE !EOF()
  992.       @ 05+xxx, 00 SAY "         Menu " + LTRIM(TRANSFORM(xxx, "9")) + "!"
  993.       use_files[xxx] = UPPER(TRIM(name))
  994.       SKIP
  995.       use_names[xxx] = " " + TRANSFORM(xxx, "9") + "> " + FILL_OUT(UPPER(TRIM(name)),19)
  996.       SKIP
  997.       xxx = xxx + 1
  998.       IF xxx > 8
  999.          EXIT
  1000.       ENDIF
  1001.    ENDDO
  1002.  
  1003. ********************
  1004.  
  1005. PROCEDURE Use_files
  1006.  
  1007.    c_nter = 1
  1008.    FOR qaz = 1 TO 10
  1009.       ext = LTRIM(TRIM(STR(qaz)))
  1010.       SELECT &ext.
  1011.       IF !EMPTY(ALIAS())
  1012.          j_s_nter = LTRIM(TRIM(STR(c_nter)))
  1013.          use_files[c_nter] = ALIAS()
  1014.          use_names[c_nter] = FILL_OUT(" " + j_s_nter + "> " + ALIAS(), 23)
  1015.          c_nter = c_nter + 1
  1016.       ENDIF
  1017.    NEXT
  1018.  
  1019. ********************
  1020.  
  1021. FUNCTION Ascii_save
  1022.  
  1023.    PARAMETERS ascii_file, returned
  1024.  
  1025.    SKIP 0
  1026.    IF returned
  1027.       MEMOWRIT(ascii_file, document )
  1028.       RETURN((DOSERROR() = 0))
  1029.    ELSE
  1030.       RETURN( HARDCR(ascii_file) )
  1031.    ENDIF                                                                                                                                              
  1032.  
  1033. ********************
  1034.  
  1035. FUNCTION Myedit
  1036.  
  1037.    PARAMETERS _amode, _arow, _acol
  1038.  
  1039.    IF LASTKEY() = -9
  1040.       KEYBOARD CHR(23)
  1041.  
  1042.    ELSEIF LASTKEY() = 279 && Inference
  1043.       IF infer   && inference is on
  1044.       ELSE
  1045.           
  1046.       ENDIF
  1047.       infer = !infer
  1048.  
  1049.    ELSEIF LASTKEY() = 28
  1050.       Wpush(WROW(2), WCOL(2), WROW(12), WCOL(65), 3, .T.)
  1051.       Wsayget(2,10, "Press F10 TO save the macro")
  1052.       Wsayget(3,10, "F1 is this screen")
  1053.       Wsayget(4,10, "ALT I - toggle inference")
  1054.       Wsayget(5,10, "F2 - Show Macros")
  1055.       Wsayget(7,10, "Any key to continue....")
  1056.       INKEY(0)
  1057.       Wpop()
  1058.    ENDIF
  1059.  
  1060.    RETURN(0)
  1061.  
  1062. ********************
  1063.  
  1064. FUNCTION Margin
  1065.  
  1066.    PARAMETERS _themar, _toggle
  1067.  
  1068.    IF _toggle = 1
  1069.       IF _themar < 0
  1070.          @ 9,50 SAY "Margin MUST be > 0"
  1071.          RETURN(.F.)
  1072.       ELSEIF _themar > (right_mar - 5)
  1073.          @ 9,50 SAY "Margin MUST be < " + TRIM(TRANSFORM(right_mar - 5, "@B"))
  1074.          RETURN(.F.)
  1075.       ELSE
  1076.          @ 9,50 SAY SPACE(28)
  1077.          RETURN(.T.)
  1078.       ENDIF
  1079.  
  1080.    ELSEIF _toggle = 2
  1081.       IF _themar > 150
  1082.          @ 10,50 SAY "Margin MUST be < 150"
  1083.          RETURN(.F.)
  1084.       ELSEIF _themar < (left_mar + 5)
  1085.          @ 10,50 SAY "Margin MUST be > " + TRIM(TRANSFORM(left_mar + 5, "@B"))
  1086.          RETURN(.F.)
  1087.       ELSE
  1088.          @ 10,50 SAY SPACE(28)
  1089.          RETURN(.T.)
  1090.       ENDIF
  1091.  
  1092.    ELSEIF _toggle = 3
  1093.       IF _themar < 1
  1094.          @ 11,50 SAY "Line Space Must be > 1 "
  1095.          RETURN(.F.)
  1096.       ELSEIF _themar > 50
  1097.          @ 11,50 SAY "Line Space Must be < 50"
  1098.          RETURN(.F.)
  1099.       ELSE
  1100.          @ 11,50 SAY SPACE(28)
  1101.          RETURN(.T.)
  1102.       ENDIF
  1103.    ELSEIF _toggle = 4
  1104.       IF _themar < 1
  1105.          @ 12,50 SAY "Number of Copies Must be > 1 "
  1106.          RETURN(.F.)
  1107.       ELSEIF _themar > 99
  1108.          @ 12,50 SAY "Number of Copies Must be < 99"
  1109.          RETURN(.F.)
  1110.       ELSE
  1111.          @ 12,50 SAY SPACE(28)
  1112.          RETURN(.T.)
  1113.       ENDIF
  1114.    ELSEIF _toggle = 5
  1115.       IF _themar < 0
  1116.          @ 15,50 SAY "Tab settings MUST be > 0 "
  1117.          RETURN(.F.)
  1118.       ELSEIF _themar > 75
  1119.          @ 15,50 SAY "Tab settings MUST be < 75"
  1120.          RETURN(.F.)
  1121.       ELSE
  1122.          @ 15,50 SAY SPACE(28)
  1123.          RETURN(.T.)
  1124.       ENDIF
  1125.    ENDIF
  1126.  
  1127. ********************
  1128.  
  1129. PROCEDURE Wordhelp
  1130.  
  1131.    PARAMETER wp1, wp2, wp3
  1132.  
  1133.    _cccolor = SETCOLOR()
  1134.    _ncolor = REVERSE(_cccolor)
  1135.    SETCOLOR(_ncolor)
  1136.    Wpush(2,5,11,75,3,.T.)
  1137.    WSAYGET( 1, 3, "  ESC => Exits                ║        Home => Beginning of Line")
  1138.    WSAYGET( 2, 3, "   F1 => This Screen          ║         End => End of Line")       
  1139.    WSAYGET( 3, 3, "   F2 => Show Macros          ║   Ctrl PgUp => Top of File")     
  1140.    WSAYGET( 4, 3, "   F5 => Show Fields          ║   Ctrl PgDn => End of File")
  1141.    WSAYGET( 5, 3, "  F10 => Saves File           ║ Ctrl RArrow => Right One Word")
  1142.    WSAYGET( 6, 3, "ALT H => This Screen          ║ Ctrl LArrow => Left One Word")
  1143.    WSAYGET( 7, 3, "ALT M => Set Macro Keys       ║       Ctrl W=> Saves in Memory")
  1144.    WSAYGET( 8, 3, "ALT W => Saves File           ║                NOT ON DISK!")
  1145.    @ 10,RIGHT_JUST("Press Any Key to Return to Edit", 75) SAY "Press Any Key to Return to Edit"
  1146.    INKEY(0)
  1147.    Wpop()
  1148.    SETCOLOR(_cccolor)
  1149.  
  1150. * End of File
  1151.  
  1152.