home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / getappl.cmd < prev    next >
OS/2 REXX Batch file  |  1996-10-09  |  7KB  |  231 lines

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