home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / qbasic / qb4auto.arc / COMPILE.ATO < prev   
Text File  |  1988-11-20  |  5KB  |  130 lines

  1. '
  2. '  Quickbasic 4.0 "Auto-Compiler" version 1.0
  3. '  by Jeff Goza (c) 1988
  4. '  Non-commercial use only
  5. '
  6. '  This is a "simple" program that is run under QB 4.0 that will compile
  7. '  any Quickbasic programs found in the current directory.  Before this
  8. '  is run you will need to make sure that all of the programs have been
  9. '  save in the Quickbasic TEXT format (pure ascii).  Also any libraries
  10. '  (including the qb support libraries) MUST be located in the compile
  11. '  directory.  After the program finishes it will erase all of the .obj
  12. '  files that are created.
  13. '
  14. '  Before running, make sure your PATH command knows where the QB files
  15. '  BC and Link are located.  Also, since the program uses "SHELL" make sure
  16. '  it can find command.com.   Another, obvious, note is that all of the
  17. '  include files your program uses must be in the current directory as well.
  18. '
  19. '  This program was originally written to help me on a _LARGE_ project
  20. '  to simplify the process of recompiling all of the source code.  I am
  21. '  supplying it in source code, rather than .exe, so you can modify
  22. '  it for your needs.
  23. '
  24. '  Im not going to give the traditional "if you find this program useful
  25. '  send me XXX dollars" speech.  But, since I am not adverse to money, Ill
  26. '  give my address and if the urge strikes you can send me some.  I would also
  27. '  like to hear from others who program in Quickbasic.  I do vertial market
  28. '  programming and would like to talk (write) to others who do that as well.
  29. '
  30. '  Comments, suggestions, money to:
  31. '
  32. '       Jeff Goza
  33. '       PO Box 6401
  34. '       Abilene, Tx 79608
  35. '      
  36. '       CServe : 75056,3555
  37. '       Genie  : J.Goza (or maybe JGoza, i forget)
  38. '
  39. '  p.s.  This program is called COMPILE.ATO instead of COMPILE.BAS so
  40. '        it is not compiled each time it is run.  Load it with LOAD
  41. '        compile.ato
  42. '
  43. '
  44.  
  45. a$ = ""                                                 'clear keyboard
  46. CLS : DIM arr$(70), li$(26)                             '70 files max (modify as needed)
  47. PRINT "Building Directory..."
  48.  
  49. start$ = TIME$                                          'get time started
  50.  
  51. OPEN "error.lst" FOR OUTPUT AS #5: CLOSE #5             'error file
  52. SHELL "dir *.bas > dir.lst"                             'read current directory
  53.  
  54. OPEN "dir.lst" FOR INPUT AS #1
  55.  FOR x = 1 TO 4: INPUT #1, a$: NEXT x                   'throw out first 4 lines
  56.  
  57.  x = 0
  58.  WHILE NOT EOF(1)
  59.   INPUT #1, a$                                                          'read the directory into an array
  60.   IF MID$(a$, 10, 3) = "BAS" THEN x = x + 1: arr$(x) = LEFT$(a$, 8)     'get only .bas files
  61.  WEND
  62.  
  63.  FOR y = 1 TO x                                                 'do all basic files
  64.  
  65.   CLS
  66.   LOCATE 1, 1: PRINT "Working on file "; y; " of "; x;          'show were its at
  67.   fil$ = LEFT$(arr$(y), 8): fil$ = LTRIM$(RTRIM$(fil$))         'get file name ready
  68.   LOCATE 2, 1: PRINT "File Name         : "; fil$               'show current file being done
  69.  
  70.   s1$ = "BC " + fil$ + "/X;"
  71.  
  72.   ' mofidy the BC statement as needed to include whatever switches your
  73.   ' program requires.
  74.  
  75.   s2$ = "LINK /ex /noe /seg:256 " + fil$ + "+MYLIBRARY.lib," + fil$ + ".exe,nul;"
  76.  
  77.   ' modify the link statement as needed.  you can insert the name of your
  78.   ' library in the MYLIBRARY location.  If you are not using a library
  79.   ' you can remove it completly.
  80.  
  81.   SHELL s1$                                     'execute BC
  82.  
  83. '
  84. '
  85. ' -- Check for errors --------------------------------------------------------
  86. '    Severe Errors only, warning errors not reported.
  87. '
  88.  
  89.      FOR y% = 1 TO 24
  90.       FOR zz% = 1 TO 80
  91.        li$(y%) = li$(y%) + CHR$(SCREEN(y%, zz%))
  92.       NEXT zz%
  93.      NEXT y%
  94.  
  95.      FOR y% = 1 TO 24
  96.       sev = INSTR(li$(y%), "Sev")
  97.       IF sev > 0 THEN
  98.         howmanysev = SCREEN(y%, sev - 2)
  99.         hms$ = CHR$(howmanysev)
  100.         hms = VAL(hms$)
  101.         IF hms > 0 THEN
  102.          OPEN "error.lst" FOR APPEND AS #5
  103.          PRINT #5, "Severe Error(s) in "; arr$(y); "  Did not compile succesfully!"
  104.          CLOSE #5
  105.         END IF
  106.       END IF
  107.      NEXT y%
  108.  
  109. ' -- End of Check for Errors -------------------------------------------------
  110.  
  111.   SHELL s2$                                     'execute link
  112.  
  113. a$ = INKEY$: IF a$ = "@" THEN END               'press "@" to abort program
  114.  
  115. FOR y% = 1 TO 24: li$(y%) = "": NEXT y%         'clear screen array
  116. NEXT y                                          'do next file
  117.  
  118. KILL "*.obj"                                    'kill all .obj files
  119.  
  120. FOR z% = 1 TO 10: SOUND 100 + z%, z%: NEXT z%   'im done, say so
  121.  
  122. PRINT
  123. PRINT
  124. PRINT "Start Time : "; start$                   'show how long the compile/
  125. PRINT "End   Time : "; TIME$                    'link process took
  126. PRINT
  127.  
  128. END                                             'end it
  129.  
  130.