home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / getgrps1.cmd < prev    next >
OS/2 REXX Batch file  |  1998-04-29  |  8KB  |  239 lines

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