home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / getsel.cmd < prev    next >
OS/2 REXX Batch file  |  2000-02-16  |  8KB  |  245 lines

  1. /*---------------------------------------------------------------------------*\
  2. |   GET all Application-Selector from a LS 3.0 and higher                     |
  3. |   and dump it to an ASCII File                                              |
  4. |                                     (C) Alain Rykaert - IBM-Belgium - MAY96 |
  5. \*---------------------------------------------------------------------------*/
  6.  
  7.     Parse Arg Option
  8.  
  9.     Call INIT                    /* Initialisation of DLL's and other stuff*/
  10.     Call CHKOPT                          /* Check Options & display Welcome*/
  11.     Call CHKPWS                               /* Check the PWS & Admin name*/
  12.     Call MAIN                                            /* do the main job*/
  13.     Call QUIT                                                       /* Quit*/
  14.  
  15.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  16.  
  17.     Call Time('R')
  18.    'if exist' OUTF 'del' OUTF
  19.     Call LineOut OUTF, '* Place a "X" on each user you want to select an application'
  20.  
  21.     RC = NetEnumerate(30, 'APPLNAME', '\\'SRVNAME)
  22.     if RC = 0
  23.      then Call RxStemSort 'APPLNAME'
  24.      else do
  25.              Call LOGIT 'Get Applications', SRVNAME, RC
  26.              Return
  27.           end
  28.  
  29.     UL = 1                             /* Determine the Maximum USER length*/
  30.  /* RC = NetEnumerate(280, 'USERS', '\\'SRVNAME) */
  31.     RC = WfrxUserEnum('\\'SRVNAME,'USERS')
  32.     if RC = 0
  33.      then do i = 1 to USERS.0
  34.              if Length(USERS.i) > UL then UL = Length(USERS.i)
  35.           end
  36.      else do
  37.              Call LOGIT 'Get Users', SRVNAME, RC
  38.              Return
  39.           end
  40.  
  41.     HEADER  = 'OPT;'Left('USERS',UL,' ',)';'
  42.     ALLAPPL = ''
  43.     EMTAPPL = ''
  44.  
  45.     HEADER = HEADER || ALLAPPL
  46.     do i = 1 to APPLNAME.0
  47.        CL = Length(APPLNAME.i)
  48.        ALLAPPL = ALLAPPL || Left(APPLNAME.i,CL,' ') || ';'/* All   Appls Line*/
  49.        EMTAPPL = EMTAPPL || Left(' ',CL,' ') || ';'     /* Empty Appl  Line*/
  50.     end
  51.     HEADER = HEADER || ALLAPPL
  52.     Call LineOut OUTF, HEADER
  53.  
  54.     RC = NetEnumerate(280, 'USERS', '\\'SRVNAME)
  55.     if RC = 0
  56.      then Call RxStemSort 'USERS'
  57.      else do
  58.               Call LOGIT 'Get Users', SRVNAME, RC
  59.               Return
  60.           end
  61.  
  62.     do i = 1 to USERS.0
  63.        if i // MAXLINES = 0
  64.         then Call LineOut OUTF, HEADER
  65.         else Nop
  66.  
  67.        if \MUTE
  68.         then do
  69.                 Call SysCurState OFF
  70.                 Call SysCurPos 20,0
  71.              end
  72.         else Nop
  73.        say '0909'x ESC'[K Total Users =' i'/'Users.0 USERS.i
  74.  
  75.        OUT     = ''
  76.        TMPAPPL = EMTAPPL
  77.  
  78.        RC = NetGetInfo(32, 'ApplSelInfo', '\\'SRVNAME, USERS.i)
  79.        if RC = 0
  80.         then do
  81.                 Call RxStemSort 'ApplSelInfo'
  82.                 do j = 1 to ApplSelInfo.Count
  83.                    LEN = 1
  84.                    do k = 1 to APPLNAME.0
  85.                       APPLLEN = Length(APPLNAME.k)
  86.                       if ApplSelInfo.j.AppName = APPLNAME.k
  87.                         then TMPAPPL = Overlay(Center('X',APPLLEN,' '),TMPAPPL, LEN)
  88.                         else Nop
  89.                       LEN = LEN + APPLLEN + 1
  90.                    end
  91.                 end
  92.              end
  93.         else nop
  94.  
  95.        OUT = '   ;'Left(USERS.i,UL,' ')';'TMPAPPL
  96.        Call LineOut OUTF, OUT
  97.  
  98.     end
  99.  
  100.     if \MUTE then say '0909'x ' Total Time  =' Trunc(Time('E'),2)
  101.  
  102.     Call Stream OUTF, 'C', 'CLOSE'
  103.  
  104.     Call SysSetObjectData OUTF, 'ICONFILE='Directory()'\Selector.Ico'
  105.  
  106.     Return
  107.  
  108.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  109.  
  110.     SRVNAME = ''
  111.     OUTF = 'SELECTOR.CSV'
  112.     LOGF = 'LSMT.LOG'
  113.     PIPE = ''
  114.     TRACE = 0
  115.     MUTE = 0
  116.  
  117.     OPTION = Translate(OPTION)
  118.     do while OPTION <> ''
  119.        Parse value OPTION with ARGUMENT ' ' OPTION
  120.        select
  121.         when Left(ARGUMENT,5) = '/SRV:'  then SRVNAME = Substr(ARGUMENT,6)
  122.         when Left(ARGUMENT,5) = '/OUT:'  then OUTF    = Substr(ARGUMENT,6)
  123.         when Left(ARGUMENT,5) = '/LOG:'  then LOGF    = Substr(ARGUMENT,6)
  124.         when Left(ARGUMENT,5) = '/PIP:'  then PIPE    = Substr(ARGUMENT,6)
  125.         when Left(ARGUMENT,2) = '/M'     then MUTE    = 1
  126.         when Left(ARGUMENT,2) = '/T'     then TRACE   = 1
  127.         otherwise Nop
  128.        end
  129.     end
  130.  
  131.     if SRVNAME = '' then signal GETHELP
  132.  
  133.     if \MUTE
  134.      then do
  135.              Topic1 = 'GETWELCOME'
  136.              Topic_String.Topic1.1 = SRVNAME
  137.              Topic_String.Topic1.2 = OUTF
  138.              Topic_String.Topic1.3 = LOGF
  139.              Topic_String.Topic1.4 = PIPE' '
  140.              Topic_List='WELCOMELOGO' Topic1 'GETSEL'
  141.              Call GETANS
  142.              Parse VALUE SysCurPos() With Old_R Old_C; 'Pause'
  143.              Call SysCurPos Old_R, Old_C; say ESC'[K'
  144.           end
  145.      else do
  146.              say 'ServerName =' SRVNAME
  147.              say 'OutputFile =' OUTF
  148.              say 'LogFile    =' LOGF
  149.           end
  150.     Return
  151.  
  152.  CHKPWS:/* ---------------------------------------------------- CHKPWS: -----*/
  153.  
  154.     RC = NetGetInfo(350, 'WKSTAINFO','')
  155.     if RC = 0
  156.      then do
  157.              ADMNAME = WKSTAINFO.UserName
  158.              PWSNAME = WKSTAINFO.ComputerName
  159.           end
  160.      else do
  161.             Call LOGIT 'Get PWS Info', ,RC
  162.             Call Quit
  163.           end
  164.     Return
  165.  
  166.  INIT:/* ------------------------------------------------------ INIT: -------*/
  167.  
  168.     Call RgUtil   '/m'                                    /* Rexx Utilities*/
  169.     Call RgUtils  '/m'                                    /* Rexx Utilities*/
  170.     Call RgNPipes '/m'                                       /* Named Pipes*/
  171.     Call RgLSRXUT '/m'                             /* Lan Server Rexx Utils*/
  172.  
  173.     Parse Upper Source . . P_NAME
  174.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  175.  
  176.    '@echo off'
  177.     ESC   = '1B'x
  178.     REDIR = '>NUL 2>NUL'
  179.     MAXLINES = 20              /* Number of Lines to separate with a header*/
  180.  
  181.     Resource_File = 'LSMT.RSC'
  182.     Call CHKFILE Resource_File
  183.  
  184.     Return
  185.  
  186.  GETANS:/* ---------------------------------------------------- GETANS: -----*/
  187.  
  188.     Vars_List =Ansi_Say(Resource_File Topic_List);
  189.     Parse VALUE SysCurPos() With Old_R Old_C;
  190.     Do While Vars_List <> '';
  191.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List;
  192.        Call SysCurPos Row, Column;
  193.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m';
  194.        End;
  195.     Call SysCurPos Old_R, Old_C;
  196.  
  197.     Return
  198.  
  199.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  200.  
  201.     if \MUTE
  202.      then do
  203.              Topic1                = 'GETHELP'
  204.              Topic_String.Topic1.1 =  PRGN
  205.              Topic_List            =  Topic1
  206.              Call GETANS
  207.           end
  208.      else say 'Incorrect options.'
  209.  
  210.     Call QUIT
  211.  
  212.     Return
  213.  
  214.  CHKFILE:/* --------------------------------------------------- CHKFILE: ----*/
  215.  
  216.     Parse Arg FILE
  217.  
  218.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  219.     if RC = ''
  220.      then do
  221.              say ' File' FILE 'not found.'
  222.              Call QUIT
  223.           end
  224.      else Nop
  225.  
  226.     Return
  227.  
  228.  LOGIT:/* ----------------------------------------------------- LOGIT: ------*/
  229.  
  230.     FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
  231.     RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
  232.  
  233.     Return
  234.  
  235.  QUIT:/* ------------------------------------------------------ QUIT: -------*/
  236.  
  237.     Call LineOut 'LSMT.END', PRGN, 1
  238.     Call Stream  'LSMT.END', 'C', 'CLOSE'
  239.     Call Stream   LOGF,      'C', 'CLOSE'
  240.     Call Stream   OUTF1,     'C', 'CLOSE'
  241.     Call Stream   OUTF2,     'C', 'CLOSE'
  242.     Exit
  243.  
  244.  /*--------------------------------------------------------------------------*/
  245.