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

  1. /*---------------------------------------------------------------------------*\
  2. |   GET DASD limits infos from a LAN Server 3.0 and higher                    |
  3. |   and dump it to an ASCII File                                              |
  4. |       (C) Alain Rykaert IBM-Belgium & Hermann Pauli IBM-Germany 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.     if PrgGET
  19.      then call GET
  20.      else call SET
  21.  
  22.     Return
  23.  
  24.  GET:/* ------------------------------------------------------ GET:  -------*/
  25.  
  26.     Call Time('R')
  27.  
  28.     'if exist' IOUTF 'del' IOUTF
  29.  
  30.     /* Enumerate DASD directory limit on server */
  31.     DASDInfo.DirPath    = StartPath
  32.     DASDInfo.recursive  = Recurse
  33.     DASDInfo.BufferSize = Buffer
  34.  
  35.     RC = NetEnumerate(NETDASD, 'DASDInfo', '\\'SRVNAME)
  36.  
  37.     if RC = 0
  38.      then do
  39.              if DASDInfo.EntriesAvail > DASDInfo.count
  40.               then do
  41.                       Call LOGIT 'NetEnum. DASD', 'Buffer =' Buffer,,
  42.                                  'Buffer error, increase buffer or use more',
  43.                                  'specific start path'
  44.                       return
  45.                    end
  46.               else nop
  47.  
  48.              Call RxStemSort 'DASDInfo'
  49.              Call LineOut IOUTF, BANNER
  50.              do i = 1 to DASDInfo.count
  51.                 if i // 20 = 0
  52.                  then Call LineOut IOUTF, BANNER
  53.                  else Nop
  54.                 if \MUTE
  55.                  then do
  56.                          Call SysCurState OFF
  57.                          Call SysCurPos 23 , 0
  58.                       end
  59.                  else Nop
  60.                 say '0909'x 'Total DASD limits =' i
  61.                 Call WRITEIT i
  62.             end
  63.          end
  64.      else do
  65.              Call LOGIT 'NetEnum. DASD',DASDInfo.DirPath , RC
  66.              return
  67.           end
  68.     Call LineOut IOUTF, ' '
  69.  
  70.     say '0909'x 'Total Time  =' Trunc(Time('E'),2)
  71.  
  72.     Return
  73.  
  74.  WRITEIT:/* ---------------------------------------------------- WRITEIT: -----*/
  75.  
  76.     parse arg ActPath
  77.  
  78.     DASDINFO.ActPath.OPT = Left('',COLL.1,' ')    /* Column 1 must be BLANK*/
  79.     DASDINFO.ActPath.RESOURCE_NAME = DASDINFO.DirPath || DASDINFO.ActPath.RESOURCE_NAME
  80.  
  81.     OUT = ''
  82.     do j = 1 to COLT
  83.        COLNAME = COLN.j
  84.        DATA.j = Left(DASDINFO.ActPath.COLNAME, COLL.j, ' ')
  85.        OUT = OUT || DATA.j || ';'
  86.     end
  87.     Call LineOut IOUTF, OUT
  88.     Call Stream  IOUTF, 'C', 'CLOSE'
  89.  
  90.     Return
  91.  
  92.  SET:/* ------------------------------------------------------ SET:  -------*/
  93.  
  94.     /* Check whether .INI file is correct */
  95.     /* read each line and do opt          */
  96.  
  97.     Call Time('R')
  98.     CHKLines = 0
  99.     EC = 0
  100.     do while Lines(IOUTF)
  101.        LLINE = TRANSLATE(LineIN(IOUTF))
  102.        OLINE = LLINE
  103.        LLINE = Strip(LLINE)
  104.  
  105.        parse value LLINE with OPT ';' LLINE
  106.        OPT = Translate(Strip(Opt))
  107.        select
  108.         when OPT = '' | LLINE = '' then Iterate
  109.         when Left(OPT,1)   = '*'   then Iterate
  110.         when OPT           = 'OPT' then nop
  111.         when OPT           = 'D'   then Call DELDASD
  112.         when OPT           = 'A'   then Call ADDDASD
  113.         when OPT           = 'U'   then Call UPDDASD
  114.         otherwise
  115.          do
  116.             call ToCheck
  117.             call Logit 'Main','wrong input allowed options only A, U and D.',,
  118.                               'Invalid option' OPT
  119.          end
  120.        end
  121.        if EC
  122.         then do
  123.                 call ToCheck
  124.                 EC = 0
  125.              end
  126.         else Nop
  127.     end
  128.  
  129.     say ;say '0909'x 'Total Time  =' Trunc(Time('E'),2)
  130.  
  131.     Return
  132.  
  133.  DELDASD:/* --------------------------------------------------- ToCheck: ----*/
  134.  
  135.     i = 1
  136.     do while LLINE <> ''
  137.        parse value LLINE with Value ';' LLINE
  138.        i = i+1
  139.        ColName          = Strip(COLN.i)
  140.        DasdInfo.ColName = Strip(Value)
  141.     end
  142.     RC = NetDelete(NETDASD, DasdInfo.resource_name,'\\'SRVNAME)
  143.     if RC <> 0
  144.      then do
  145.              call Logit 'NETDELETE DASD' ,  DasdInfo.resource_name , RC
  146.              EC = 1
  147.              return
  148.           end
  149.      else call Logit 'Delete DASD' , DasdInfo.resource_name
  150.  
  151.     return
  152.  
  153.  ADDDASD:/* --------------------------------------------------- ToCheck: ----*/
  154.     DasdInfo.flag = NoComp
  155.     i = 1
  156.     do while LLINE <> ''
  157.        parse value LLINE with Value ';' LLINE
  158.        i = i+1
  159.        ColName          = Strip(COLN.i)
  160.        DasdInfo.ColName = Strip(Value)
  161.     end
  162.  
  163.     /* Set new DASD directory values */
  164.  
  165.     RC = NetAdd(NETDASD, 'DasdInfo','\\'SRVNAME)
  166.     if RC <> 0
  167.      then do
  168.              call Logit 'NETADD DASD' ,  DasdInfo.resource_name , RC
  169.              EC = 1
  170.              return
  171.           end
  172.      else call Logit 'Add DASD' , DasdInfo.resource_name
  173.  
  174.     return
  175.  
  176.  UPDDASD:/* --------------------------------------------------- ToCheck: ----*/
  177.     i = 1
  178.     do while LLINE <> ''
  179.        parse value LLINE with Value ';' LLINE
  180.        i = i+1
  181.        ColName          = Strip(COLN.i)
  182.        DasdInfo.ColName = Strip(Value)
  183.     end
  184.  
  185.     /* Set new DASD directory values */
  186.     DirPath             = Strip(DasdINFO.RESOURCE_NAME)
  187.  
  188.     if DirPath = ''
  189.      then do
  190.             call Logit 'SETDASD UPDATE' , 'No Ressource defined' , 'No Ressource'
  191.             EC = 1
  192.             call return
  193.           end
  194.  
  195.     if COLP.MAX > 0
  196.      then do
  197.              RC = NetSetInfo(NETDASD, 'max', DasdInfo.MAX,,
  198.                              '\\'SRVNAME, DirPath, NoComp)
  199.              if RC <> 0
  200.               then do
  201.                       call Logit 'NETSETINFO Update' , 'max =' DasdInfo.MAX, RC
  202.                       EC = 1
  203.                       return
  204.                    end
  205.               else call Logit 'Upd. DASD max' , DirPath '-' DasdInfo.MAX
  206.           end
  207.      else nop
  208.  
  209.     if COLP.THRESH > 0
  210.      then do
  211.              RC = NetSetInfo(NETDASD, 'thresh', DasdInfo.THRESH ,,
  212.                              '\\'SRVNAME, DirPath, NoComp)
  213.              if RC <> 0
  214.               then do
  215.                       call Logit 'NETSETINFO Update' ,,
  216.                                  'thresh =' DasdInfo.THRESH, RC
  217.                       EC = 1
  218.                       return
  219.                    end
  220.               else call Logit 'Upd. DASD thresh' , DirPath '-' DasdInfo.THRESH
  221.           end
  222.      else nop
  223.  
  224.     if COLP.DELTA > 0
  225.      then do
  226.              RC = NetSetInfo(NETDASD, 'delta', DasdInfo.DELTA,,
  227.                              '\\'SRVNAME, DirPath, NoComp)
  228.              if RC <> 0
  229.               then do
  230.                       call Logit 'NETSETINFO Update' ,,
  231.                                  'delta =' DasdInfo.DELTA, RC
  232.                       EC = 1
  233.                       return
  234.                    end
  235.               else call Logit 'Upd. DASD delta' , DirPath '-' DasdInfo.DELTA
  236.           end
  237.      else nop
  238.  
  239.     return
  240.  
  241.  ToCheck:/* --------------------------------------------------- ToCheck: ----*/
  242.  
  243.     CHKLines = CHKLines + 1
  244.     if CHKLines = 1 | CHKLines // 20 = 0
  245.      then call LineOut CHKF, ALIASLst
  246.      else nop
  247.     Call LineOut CHKF, OLINE
  248.     return
  249.  
  250.  COLUMNS: /* --------------------------------------------------- COLUMNS: -*/
  251.  
  252.     BANNER = ''
  253.     i = 0
  254.     COLP.     = 0
  255.     do while Lines(COLF)
  256.        LLINE = LineIn(COLF)
  257.        if Left(LLINE, 1) = '*',
  258.         | Strip(LLINE) = ''
  259.         then iterate
  260.         else Nop
  261.        i = i + 1
  262.  
  263.        parse value LLINE with COLN ';' COLL
  264.        COLN      = Strip(COLN)
  265.        COLN.i    = COLN
  266.        COLL.i    = Strip(COLL)
  267.        COLP.COLN = i
  268.  
  269.        BANNER = BANNER || Left(COLN.i, COLL.i, ' ') || ';'
  270.     end
  271.  
  272.     COLT = i
  273.  
  274.     Return
  275.  
  276.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  277.  
  278.     SRVNAME = ''; IOUTF  = 'RXDASD.CSV'; LOGF   = 'LSMT.LOG' ; PIPE      = ''
  279.     CHKF    = 'RXDASD.CHK'
  280.     TRACE   = 0 ; MUTE   = 0           ; Buffer = 4096       ; StartPath = ''
  281.     Recurse = 1 ; PrgGet = 1           ; NoComp = 0
  282.  
  283.     OPTION = Translate(OPTION)
  284.     do while OPTION <> ''
  285.        Parse value OPTION with ARGUMENT ' ' OPTION
  286.        select
  287.         when Left(ARGUMENT,5) = '/SRV:'   then SRVNAME   = Substr(ARGUMENT,6)
  288.         when Left(ARGUMENT,5) = '/INP:'   then IOUTF     = Substr(ARGUMENT,6)
  289.         when Left(ARGUMENT,5) = '/OUT:'   then IOUTF     = Substr(ARGUMENT,6)
  290.         when Left(ARGUMENT,5) = '/LOG:'   then LOGF      = Substr(ARGUMENT,6)
  291.         when Left(ARGUMENT,5) = '/CHK:'   then CHKF      = Substr(ARGUMENT,6)
  292.         when Left(ARGUMENT,5) = '/PIP:'   then PIPE      = Substr(ARGUMENT,6)
  293.         when Left(ARGUMENT,5) = '/BUF:'   then Buffer    = Substr(ARGUMENT,6)
  294.         when Left(ARGUMENT,6) = '/PATH:'  then StartPath = Substr(ARGUMENT,7)
  295.         when Left(ARGUMENT,6) = '/NOREC'  then Recurse   = 0
  296.         when Left(ARGUMENT,4) = '/SET'    then PrgGet    = 0
  297.         when Left(ARGUMENT,4) = '/GET'    then PrgGet    = 1
  298.         when Left(ARGUMENT,7) = '/NOCOMP' then NoComp    = 1
  299.         when Left(ARGUMENT,2) = '/M'      then MUTE      = 1
  300.         when Left(ARGUMENT,2) = '/T'      then TRACE     = 1
  301.         otherwise Nop
  302.        end
  303.     end
  304.     if SRVNAME = '' then signal GETHELP
  305.  
  306.     if \MUTE
  307.      then do
  308.              if PrgGet
  309.               then do
  310.                       Topic1='RXDASDGET'
  311.                       Topic_String.Topic1.1=SRVNAME;
  312.                       Topic_String.Topic1.2=IOUTF;
  313.                       Topic_String.Topic1.3=LOGF;
  314.                       Topic_String.Topic1.4=StartPath' ';
  315.                       Topic_String.Topic1.5=Buffer;
  316.                       if Recurse then Topic_String.Topic1.6='Yes';
  317.                                  else Topic_String.Topic1.6='No';
  318.                       Topic_String.Topic1.7=PIPE' ';
  319.                       Topic_List='RXDASDWELCOME' Topic1;
  320.                       Call GETANS
  321.                    end
  322.               else do
  323.                       Topic1='RXDASDSET'
  324.                       Topic_String.Topic1.1=SRVNAME;
  325.                       Topic_String.Topic1.2=IOUTF;
  326.                       Topic_String.Topic1.3=LOGF;
  327.                       if NoComp then Topic_String.Topic1.4='No';
  328.                                 else Topic_String.Topic1.4='Yes';
  329.                       Topic_String.Topic1.5=PIPE' ';
  330.                       Topic_List='RXDASDWELCOME' Topic1;
  331.                       Call GETANS
  332.                    end
  333.              Parse VALUE SysCurPos() With Old_R Old_C; '@pause'
  334.              Call SysCurPos Old_R, Old_C; say ESC'[K'
  335.           end
  336.      else do
  337.              say 'ServerName =' SRVNAME
  338.              say 'LogFile    =' LOGF
  339.              if PrgGet then do
  340.                                say 'OutputFile =' IOUTF
  341.                                say 'StartPath  =' StartPath
  342.                                say 'Buffer     =' Buffer
  343.                                if Recurse
  344.                                 then say 'Recurse    =' 'YES'
  345.                                 else say 'Recurse    =' 'NO'
  346.                             end
  347.                        else do
  348.                                say 'InputFile ='  IOUTF
  349.                                if NoComp
  350.                                 then say 'Compare    =' 'NO'
  351.                                 else say 'Compare    =' 'YES'
  352.                             end
  353.  
  354.             'pause'
  355.           end
  356.     Return
  357.  
  358.  CHKPWS:/* ---------------------------------------------------- CHKPWS: -----*/
  359.  
  360.     RC = NetGetInfo(350, 'WKSTAINFO','')
  361.     if RC = 0
  362.      then do
  363.              ADMNAME = WKSTAINFO.UserName
  364.              PWSNAME = WKSTAINFO.ComputerName
  365.           end
  366.      else do
  367.             Call LOGIT 'Get PWS Info', ,RC
  368.             Call Quit
  369.           end
  370.     Return
  371.  
  372.  INIT:/* ------------------------------------------------------ INIT: -------*/
  373.  
  374.     Call RgUtil   '/m'                                    /* Rexx Utilities*/
  375.     Call RgUtils  '/m'                                    /* Rexx Utilities*/
  376.     Call RgLSRXUT '/m'                             /* Lan Server Rexx Utils*/
  377.  
  378.     Parse Upper Source . . P_NAME
  379.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  380.  
  381.    '@echo off'
  382.     ESC     = '1B'x
  383.  
  384.     NETDASD = 750
  385.  
  386.     COLF    = 'DASD.INI'                         /* Column description file*/
  387.     Call CHKFILE COLF
  388.  
  389.     Resource_File = 'RXDASD.RSC'
  390.     Call CHKFILE Resource_File
  391.  
  392.     Return
  393.  
  394.  GETANS:/* ---------------------------------------------------- GETANS: -----*/
  395.  
  396.     Vars_List =Ansi_Say(Resource_File Topic_List);
  397.     Parse VALUE SysCurPos() With Old_R Old_C;
  398.     Do While Vars_List <> '';
  399.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List;
  400.        Call SysCurPos Row, Column;
  401.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m';
  402.        End;
  403.     Call SysCurPos Old_R, Old_C;
  404.  
  405.     Return
  406.  
  407.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  408.  
  409.     if \MUTE
  410.      then do
  411.              Topic1='RXDASDHELP'
  412.              Topic_String.Topic1.1=PRGN;
  413.              Topic_List=Topic1;
  414.              Call GETANS
  415.           end
  416.      else say 'Incorrect options.'
  417.     Call QUIT
  418.  
  419.     Return
  420.  
  421.  CHKFILE:/* --------------------------------------------------- CHKFILE: ----*/
  422.  
  423.     Parse Arg FILE
  424.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  425.     if RC = ''
  426.      then do
  427.              say ' File' FILE 'not found.'
  428.              Call QUIT
  429.           end
  430.      else Nop
  431.     Call Stream FILE, 'C', 'CLOSE'
  432.  
  433.     Return
  434.  
  435.  LOGIT:/* ----------------------------------------------------- LOGIT: ------*/
  436.  
  437.     FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
  438.     RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
  439.  
  440.     Return
  441.  
  442.  QUIT:/* ------------------------------------------------------ QUIT: -------*/
  443.  
  444.     Call LineOut 'LSMT.END', PRGN, 1
  445.     Call Stream  'LSMT.END', 'C', 'CLOSE'
  446.     Call Stream   COLF,      'C', 'CLOSE'
  447.     Call Stream   LOGF,      'C', 'CLOSE'
  448.     Call Stream   IOUTF,     'C', 'CLOSE'
  449.     Exit
  450.  
  451.  /*--------------------------------------------------------------------------*/
  452.