home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / apmt34.zip / DUPMNEMS.CMD < prev    next >
OS/2 REXX Batch file  |  1995-05-10  |  5KB  |  189 lines

  1. /******************************************************************/
  2. /* Written by Dev Banerjee   5/5/95                               */
  3. /* This cmd file will take one argument - The title of an already */
  4. /* open PM application window. It will verify that its menu items */
  5. /* have mnemonics defined and flag the duplicate ones. Output is  */
  6. /* logfile based on the argument string.                          */
  7. /* Input argument can can contain wildcard characters * and ?     */
  8. /******************************************************************/
  9. parse arg MainTitle
  10. call LoadFUNC
  11. rc = INIT_SESSION()
  12. if rc \= 0 then signal errorexit
  13. signal on halt name  CLOSE_RIGHT
  14.  
  15. /******************************************************************/
  16. name = strip(MainTitle,'b')
  17. parse var name w1 w2 w3 w4
  18. logfile = w1||w2||w3||w4
  19. logfile = translate(logfile,'_','*')
  20. logfile = strip(substr(logfile,1,8))||'.log'
  21. del logfile
  22. signal on error name  errorexit
  23. call LOGIT 'Checking mnemnics in ' MainTitle
  24.  
  25. rc = SELECT_WINDOW(MainTitle)
  26. if rc > 0 then do
  27.    call LOGIT 'Main window not found on the desktop'
  28.    call CLOSE_RIGHT
  29.    end
  30.  
  31. rc = SYSMENU_SELECT("Minimize")
  32. call checkmenu
  33. call logit 'Finished testing all menu items'
  34. /******************************************************************/
  35.  
  36. CLOSE_RIGHT:
  37. rc = END_SESSION(); call LOG
  38. exit
  39. /******************************************************************/
  40. errorexit:
  41. call DropFUNC
  42. exit
  43. LoadFUNC:
  44.  call rxfuncadd  'APMTLoadFuncs',  'apmtext', 'APMTLoadFuncs'  /* entry points from the DLL    */
  45.  call APMTLoadFuncs;
  46. return
  47.  
  48. DropFUNC:
  49.  call APMTDropFuncs;
  50.  call rxfuncdrop(APMTDropFuncs)
  51. return
  52.  
  53. LOGIT:
  54. parse arg line
  55. call lineout logfile, line
  56. return
  57.  
  58. LOG:
  59. code = rc
  60. out = "Line" sigl ": " Sourceline(sigl) "rc = "rc
  61. if code >0 then do
  62.    call logit out
  63.    call logit apmtmsg
  64.    end
  65. return
  66.  
  67. /*------------------------------------------------------------------*/
  68. checkmenu: procedure expose rc apmtmsg desktop_window. logfile
  69. rc = QUERY_WINDOW_HANDLE("sav_handle")   ;CALL log
  70.  
  71. rc = MENU_QUERY_ALL("menu")
  72. j=0;k=0;l=0
  73. if rc = 0 then,
  74.    do i = 1 to menu.0
  75.       level = 1
  76.       if menu.i \= "" then
  77.          call test_mnem menu.i
  78.       rc = MENU_QUERY_ALL(menu.i,"menu1")
  79.       do j = 1 to menu1.0
  80.          level = 2
  81.          if menu1.j \= "" then
  82.          call test_mnem menu1.j
  83.          rc = MENU_QUERY_ALL(menu.i,menu1.j,"menu2")
  84.          if rc = 0 then,
  85.             do k = 1 to menu2.0
  86.                level = 3
  87.                if menu2.k \= "" then
  88.                call test_mnem menu2.k
  89.                rc = MENU_QUERY_ALL(menu.i,menu1.j,menu2.k,"menu3")
  90.                if rc = 0 then,
  91.                   do l = 1 to menu3.0
  92.                      level = 4
  93.                      if menu3.l \= "" then
  94.                      call test_mnem menu3.l
  95.                      end
  96.                end
  97.  
  98.          end
  99.       end
  100. rc = SELECT_WINDOW_BY_HANDLE(sav_handle)   ;CALL log
  101. return
  102.  
  103.  
  104.  
  105.  
  106. test_mnem: /*procedure expose logfile level i j k l level2 seen*/
  107. parse arg item
  108.  
  109.  
  110. item = strip(item,'b')
  111. n = pos('~',item)
  112. if n = 0
  113.     then do
  114.       mnemonic = ' *** No Mnemonic ***'
  115.       call beeper BA
  116.       end
  117.     else do
  118.       parse value item with item1 '~' item2
  119.       mnemonic = substr(item,n+1,1)
  120.       mnemonicU = translate(mnemonic)
  121.  
  122.       level2 = d2a(0)||d2a(i)||d2a(j)||d2a(k)||d2a(l)
  123.       level2 = substr(level2,1,level)
  124.  
  125.      if seen.level2.mnemonicU  = 'TRUE' then do
  126.         mnemonic = '*** mnemonic 'mnemonic 'already defined ***'
  127.         call beeper ab
  128.         end
  129.         else  seen.level2.mnemonicU = 'TRUE'
  130.  
  131.       item = item1||item2
  132.       end
  133. out = copies('   ',level-1)||' '||left(item,30)
  134. if length(out) > 50 then out = substr(out,1,30)
  135.    else out = out ||copies(' ',50-length(out))
  136. out = out ||mnemonic
  137.  
  138. call lineout logfile, out
  139. return
  140.  
  141.  
  142.  
  143. d2a:
  144. arg num
  145.    t.0 = 'a'
  146.    t.1 = 'b'
  147.    t.2 = 'c'
  148.    t.3 = 'd'
  149.    t.4 = 'e'
  150.    t.5 = 'f'
  151.    t.6 = 'g'
  152.    t.7 = 'h'
  153.    t.8 = 'i'
  154.    t.9 = 'j'
  155.    t.10 = 'k'
  156.    t.11 = 'l'
  157.    t.12 = 'm'
  158.    t.13 = 'n'
  159.    t.14 = 'o'
  160.    t.15 = 'p'
  161.    t.16 = 'q'
  162.    t.17 = 'r'
  163.    t.18 = 's'
  164.    t.19 = 't'
  165.    t.20 = 'u'
  166.    t.21 = 'v'
  167.    t.22 = 'w'
  168.    t.23 = 'x'
  169.    t.24 = 'y'
  170.    t.25 = 'z'
  171.  
  172. return t.num
  173.  
  174.  
  175. /* Beeper: Beep according to passed string */
  176. arg STR .
  177. Note.A = 440
  178. Note.B = 494
  179. Note.C = 524
  180. Note.D = 294
  181. Note.E = 330
  182. Note.F = 349
  183. Note.G = 392
  184. do i = 1 to length(STR)
  185.    next = substr(STR,i,1)
  186.    if Datatype(Note.next,'Number') = 1 then BEEP(Note.next,300)
  187.       else BEEP(50,200)
  188.    end
  189.