home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmigaPlus / Tools / Development / envCPP31 / c++ / rexx / run.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2002-01-01  |  5.1 KB  |  229 lines

  1. /* rexx macro */
  2.  
  3. options results                             /* enable return codes     */
  4.  
  5. if (left(address(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  6.  
  7.     address 'GOLDED.1'
  8.  
  9. 'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */
  10.  
  11. if (RC ~= 0) then
  12.  
  13.     exit
  14.  
  15. options failat 6                            /* ignore warnings         */
  16.  
  17. signal on syntax                            /* ensure clean exit       */
  18.  
  19. /* ------------------------- INSERT YOUR CODE HERE: -------------------- */
  20.  
  21. /* INPUT: SOFTWARE/K (supported values: SAS/C,SAS/C-GNUMAKE,VBCC,DICE,DICE-GNUMAKE,STORMC,GENERIC) */
  22.  
  23. parse upper arg SOFTWARE .
  24.  
  25. if (SOFTWARE = "") then
  26.  
  27.     SOFTWARE = "GENERIC"
  28.  
  29. 'QUERY CAT'
  30.  
  31. if (RESULT = "deutsch") then do
  32.  
  33.     STRING.sSELECTPROGRAM = "Programm auswählen"
  34.     STRING.sFILENOTFOUND  = "Programm nicht gefunden:"
  35. end
  36. else do
  37.  
  38.     STRING.sSELECTPROGRAM = "Choose program"
  39.     STRING.sFILENOTFOUND  = "Program not found:"
  40. end
  41.  
  42. 'QUERY PATH VAR=PATH'
  43.  
  44. R = pragma('D', PATH)
  45.  
  46. /* determine program name from options file or makefile */
  47.  
  48. call getprojectname(SOFTWARE)
  49.  
  50. if (PROJECTNAME = "") then do
  51.  
  52.     if (PROJECTNAME = "") then
  53.  
  54.         'REQUEST FILE TITLE="' || STRING.sSELECTPROGRAM || '" PATH="' || PATH || '" VAR=PROJECTNAME'
  55. end
  56.  
  57. if (PROJECTNAME ~= "") then do
  58.  
  59.     if (exists(PROJECTNAME)) then
  60.         'RUN ASYNC STACK=16384 CMD="*"' || PROJECTNAME || '*"" DIR="' || PATH || '"'
  61.     else
  62.         'REQUEST PROBLEM="' || STRING.sFILENOTFOUND || ' «' || PROJECTNAME || '»' || '"'
  63. end
  64.  
  65. /* ---------------------------- END OF YOUR CODE ----------------------- */
  66.  
  67. 'UNLOCK' /* VERY important: unlock GUI */
  68. EXIT
  69.  
  70. SYNTAX:
  71.  
  72. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  73. 'UNLOCK'
  74. EXIT
  75.  
  76. /* /// "getprojectname" */
  77.  
  78. getprojectname: procedure expose CONFIG. STRING. PROJECTNAME OBJFOLDER
  79.  
  80.     parse upper arg SOFTWARE
  81.  
  82.     /* try to read project name from options file or makefile */
  83.  
  84.     PROJECTNAME = ""
  85.     OBJFOLDER   = ""
  86.  
  87.     call readoptions(SOFTWARE)
  88.  
  89.     if (PROJECTNAME = "") then do
  90.  
  91.         call readmakefile(SOFTWARE)
  92.  
  93.         if (PROJECTNAME = "") then do
  94.  
  95.             if (SOFTWARE ~= "") then do
  96.  
  97.                 /* try again but ignore specified compiler */
  98.  
  99.                 call readoptions("")
  100.  
  101.                 if (PROJECTNAME = "") then
  102.  
  103.                     call readmakefile("")
  104.             end
  105.         end
  106.     end
  107.  
  108.     return
  109.  
  110. /* /// */
  111. /* /// "readoptions" */
  112.  
  113. readoptions: procedure expose CONFIG. STRING. PROJECTNAME OBJFOLDER GSTFILE
  114.  
  115.     /* read compiler-specific options file in project folder (if any exists) */
  116.  
  117.     parse upper arg SOFTWARE
  118.  
  119.     if ((SOFTWARE = "") | (SOFTWARE = "SAS/C") | (SOFTWARE = "SAS/C-GNUMAKE")) then do
  120.  
  121.         if (exists("scoptions")) then do
  122.  
  123.             if open('HANDLE', "scoptions", 'READ') then do
  124.  
  125.                 do until eof('HANDLE')
  126.  
  127.                     DATA = readln('HANDLE')
  128.  
  129.                     if (upper(left(DATA, 12)) = "PROGRAMNAME=") then do
  130.  
  131.                         PROJECTNAME = compress(substr(DATA, 13), '"')
  132.                     end
  133.                     else if (left(DATA, 11) = "OBJECTNAME=") then
  134.  
  135.                         OBJFOLDER = compress(substr(DATA, 12), '"')
  136.  
  137.                     else if (left(DATA, 18) = "GLOBALSYMBOLTABLE=") then
  138.  
  139.                         GSTFILE = compress(substr(DATA, 19), '"')
  140.                 end
  141.  
  142.                 R = close('HANDLE')
  143.             end
  144.         end
  145.     end
  146.  
  147.     return
  148.  
  149. /* /// */
  150. /* /// "readmakefile" */
  151.  
  152. readmakefile: procedure expose CONFIG. STRING. PROJECTNAME
  153.  
  154.     parse upper arg SOFTWARE
  155.  
  156.     /* locate makefile */
  157.  
  158.     MAKEFILE = ""
  159.  
  160.     if ((SOFTWARE = "") | ((SOFTWARE ~= "SAS/C") & (SOFTWARE ~= "DICE"))) then do
  161.  
  162.         if (exists("makefile")) then
  163.  
  164.             MAKEFILE = "makefile"
  165.     end
  166.  
  167.     if (MAKEFILE = "") then do
  168.  
  169.         if ((SOFTWARE = "") | (SOFTWARE = "SAS/C")) then do
  170.  
  171.             if (exists("smakefile")) then
  172.  
  173.                 MAKEFILE = "smakefile"
  174.         end
  175.  
  176.         if (MAKEFILE = "") then do
  177.  
  178.             if ((SOFTWARE = "") | (SOFTWARE = "DICE")) then do
  179.  
  180.                 if (exists("dmakefile")) then
  181.  
  182.                     MAKEFILE = "dmakefile"
  183.             end
  184.         end
  185.     end
  186.  
  187.     /* try to locate executable name in makefile */
  188.  
  189.     if (MAKEFILE ~= "") then do
  190.  
  191.         if (open('HANDLE', MAKEFILE, 'READ') ~= 0) then do
  192.  
  193.             POS = 0
  194.  
  195.             do until (eof('HANDLE') | (PROJECTNAME ~= ""))
  196.  
  197.                 DATA = readln('HANDLE')
  198.  
  199.                 if (MAKEFILE = "smakefile") then do
  200.  
  201.                     if (pos("sc link to", DATA) ~= 0) then do
  202.  
  203.                         parse var DATA with 'sc' 'link' 'to' '"' PROJECTNAME '"' .
  204.  
  205.                         if (PROJECTNAME = "") then
  206.  
  207.                             parse var DATA with 'sc' 'link' 'to' PROJECTNAME .
  208.                     end
  209.                 end
  210.                 else if (left(DATA, 3) = "EXE") then do
  211.  
  212.                     parse var DATA with 'EXE' '=' '"' PROJECTNAME '"'.
  213.  
  214.                     if (PROJECTNAME = "") then
  215.  
  216.                         parse var DATA with 'EXE' '=' PROJECTNAME .
  217.                 end
  218.             end
  219.  
  220.             R = close('HANDLE')
  221.  
  222.             PROJECTNAME = compress(PROJECTNAME, '"')
  223.         end
  224.     end
  225.  
  226.     return
  227.  
  228. /* /// */
  229.