home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxne.zip / TRY.CMD < prev    next >
OS/2 REXX Batch file  |  1993-09-13  |  5KB  |  237 lines

  1. /*
  2.     TRY.CMD Try NETAPI commands
  3.  
  4.     Commands:
  5.     API name    -    select API set to use
  6.     SERVER '\\name' -   select server to use
  7.     INFO level  -    show field names for api structures at 'level'
  8.  
  9.   Enter commands without preceding Net or API name or first parameter
  10.  
  11. ie NetUserGetInfo('\\Server', 'UserID', 1, Info) is typed as
  12.     GetInfo 'userid', 1, info
  13.  
  14. The normal GetInfo and Enum functions should display their result when entered
  15.  
  16. functions can also be executed normally using say or call
  17. eg say NetUserDel('server', 'userid')
  18.  
  19. */
  20.  
  21. call rxfuncadd SysLoadFuncs, REXXUTIL, SysLoadFuncs
  22. call SysLoadFuncs
  23. if rxfuncadd(NetLoadFuncs, "RexxNet", NetLoadFuncs) = 20 then do
  24.     say "Failed to find DLL"
  25.     signal done
  26. end
  27. call NetLoadFuncs
  28. if rxfuncquery('NetAppGetInfo') then do
  29.     say "Still cannot find function"
  30.     signal done
  31. end
  32.  
  33.   parse upper arg api server
  34.   if api = '' then
  35.     say 'Must Specific API before using'
  36.   if server = '' then do
  37.     say 'Server must be specified if other than local'
  38.     server = ''
  39.   end
  40.   trace = ''
  41.   call main
  42. done:
  43.   call NetDropFuncs
  44.   call SysDropFuncs
  45.   exit                  /* The only exit.           */
  46.  
  47. main:
  48.   trace 'Off'
  49.   do foreverrx = 1               /* Loop forever.         */
  50.     call charout '', "--> "
  51.     parse pull func args
  52.     if func = '' then
  53.     leave
  54.     parse upper var func func
  55.     if func = 'EXIT' then
  56.     leave
  57.     if func = 'SAY' then do
  58.     signal on syntax name again
  59.     interpret "say " args
  60.     iterate
  61.     end
  62.     if pos('=', args) then do
  63.     signal on syntax name again
  64.     interpret func args
  65.     iterate
  66.     end
  67.     if func = 'TRACE' then do
  68.     parse var args func args
  69.     trace all
  70.     end
  71.     else
  72.     trace (trace)       /* Need these on same line.    */
  73.     signal on syntax            /* Enable syntax trap.     */
  74.     interpret 'call ' func args
  75.     trace 'Off'                    /* Don't trace rexxtry.      */
  76.   end
  77.   signal done
  78.  
  79. syntax:
  80.   signal on syntax name external
  81.   call generic func args
  82.   signal main
  83.  
  84. external:
  85.   signal on syntax name again
  86.   interpret "'@"||func args "'"
  87.   signal main
  88.  
  89. again:
  90.   trace 'Off'
  91.   say rc ',' errortext(rc)
  92.   signal main
  93.  
  94. api:
  95.     parse upper var args api
  96.     return
  97.  
  98. server:
  99.     server = args
  100.     return
  101.  
  102. trace:
  103.     trace = args
  104.     return
  105.  
  106. exit:
  107.     signal done
  108.  
  109. drop:
  110.     drop args
  111.     return
  112.  
  113. cls:
  114.     call SysCls
  115.     return
  116.  
  117. /*
  118. *****************************************************
  119.     INFO    return Data structure members
  120. */
  121. info:
  122.     parse arg level
  123.     interpret 'call Net'||api||'Info level, Names.'
  124.     do i = 0 to Names.0
  125.     say Names.i
  126.     end
  127.     return
  128.  
  129. /*
  130. *****************************************************
  131.     ENUM    enumerate data
  132. */
  133. enum:
  134.     select
  135.     when api = 'ALIAS' then
  136.     parse var args level ',' type ',' stem ',' other
  137.     when api = 'APP' then
  138.     parse var args userid ',' level ',' type ',' stem ',' other
  139.     when api = 'ACCESS' then
  140.     parse var args base ',' recur ',' level ',' stem ',' other
  141.     otherwise
  142.     parse var args level ',' stem ',' other
  143.     end
  144.     interpret 'retc = Net'||api||func||'(' server ',' args ')'
  145.     if retc \= 0 then
  146.     call error
  147.     else
  148.     call show level stem 1 api
  149.     return
  150.  
  151. /*
  152. *****************************************************
  153.     GETINFO    get data on one entry
  154. */
  155. getinfo:
  156.     select
  157.     when api = 'APP' then
  158.     parse var args who ',' what ',' level ',' stem ',' other
  159.     when api = 'WKSTA' then
  160.     parse var args level ',' stem ',' other
  161.     when api = 'ACCESS' then
  162.     parse var args resource ',' level ',' stem ',' other
  163.     otherwise
  164.     parse var args who ',' level ',' stem ',' other
  165.     end
  166.     interpret 'retc = Net'||api||func||'(' server ',' args ')'
  167.     if retc \= 0 then
  168.     call error
  169.     else
  170.     call show level stem 0 api
  171.     return
  172.  
  173. /*
  174. *****************************************************
  175.     Generic functions - no return display
  176. */
  177.  
  178. generic:
  179.     interpret 'retc = Net'||api||func||'(' server ',' args ')'
  180.     call error
  181.     return
  182.  
  183.  
  184. /* ------------------------------------------- */
  185.  
  186. d:
  187.   parse arg Stem level newapi
  188.   call show level stem 0 newapi
  189.   return
  190.  
  191. de:
  192.   parse arg Stem level newapi
  193.   call show level stem 1 newapi
  194.   return
  195.  
  196.  
  197. show:
  198.   parse arg level Stem enum newapi
  199.   interpret 'call Net'||newapi||'Info level, Names.'
  200.  
  201.   if enum = 1 then do
  202.     interpret 'range =' Stem||'.Entries'
  203.     say range
  204.     do j = 0 to range - 1
  205.     interpret 'call showline' Stem||'.'||j
  206.     onscreen = 24 % Names.0
  207.     if j - (j % onscreen) * onscreen = onscreen - 1 then do
  208.         call charout '', "Pause.."
  209.         parse pull quit
  210.         if quit \= '' then
  211.         leave
  212.     end
  213.     end
  214.   end
  215.   else
  216.     call showline Stem
  217.   return
  218.  
  219. showline:
  220.   parse arg nstem
  221.   do i = 1 to Names.0
  222.     interpret 'say Names.i' nstem||'.'||Names.i
  223.   end
  224.   return
  225.  
  226. error:
  227.     if retc \= 0 then do
  228.     if retc < 2100 then
  229.         say SysGetMessage(retc)
  230.     else
  231.         say SysGetMessage(retc, "NET.MSG")
  232.     end
  233.     else
  234.     say "Completed Successfully"
  235.     return
  236.  
  237.