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

  1. /*---------------------------------------------------------------------------*\
  2. |   GETDOM  all details from all LAN Servers into the Domain                  |
  3. |                  Version 2.12 - (C) Alain Rykaert IBM Belgium - JUN96-AUG96 |
  4. \*---------------------------------------------------------------------------*/
  5.  
  6.  /*==========================================================================*/
  7.  
  8.      COL_Name.0  =  11        ; COL_Len.0 = COL_Name.0
  9.  
  10.      COL_Name.1  = 'NAME'     ; COL_Len.1 = 9
  11.      COL_Name.2  = 'OS2'      ; COL_Len.2 = 8
  12.      COL_Name.3  = 'BUILD'    ; COL_Len.3 = 6
  13.      COL_Name.4  = 'MPTS'     ; COL_Len.4 = 8
  14.      COL_Name.5  = 'LSR'      ; COL_Len.5 = 8
  15.      COL_Name.6  = 'CM2'      ; COL_Len.6 = 8
  16.      COL_Name.7  = 'TCPIP'    ; COL_Len.7 = 8
  17.      COL_Name.8  = 'COMMENT'  ; COL_Len.8 = 35
  18.      COL_Name.9  = 'ROLE'     ; COL_Len.9 = 11
  19.      COL_Name.10 = 'DISC'     ; COL_Len.10 = 5
  20.      COL_Name.11 = 'HIDDEN'   ; COL_Len.11 = 8
  21.  
  22.  /*==========================================================================*/
  23.  
  24.     Parse Arg Option
  25.  
  26.     Call Init                    /* Initialisation of DLL's and other stuff */
  27.     Call Chkopt                          /* Check Options & display Welcome */
  28.     Call Main                                            /* do the main job */
  29.     Call Quit                                                       /* Quit */
  30.  
  31.  MAIN:/* ----------------------------------------------------- MAIN: -------*/
  32.  
  33.  /* Check if this is the Primary DC */
  34.  
  35.     Call ChkServer DCName
  36.  
  37.  /* Get the Domain name from the DC-PR */
  38.  
  39.     Call SysFileSearch 'DOMAIN =', '\\'DCName'\ibmlan$\ibmlan.ini', 'FILE.'
  40.     if FILE.0 = 1
  41.      then Parse Value FILE.1 with . '=' DomainName .
  42.      else do
  43.              say ESC'[0;1;31m Unable to determine the Domains name from',
  44.                  'the Primary Domain Controller' DCName ESC'[0m'
  45.              Pull
  46.              Exit
  47.           end
  48.  
  49.     say
  50.     say '09'x ESC'[0;1;35m The Domains name is' DomainName ESC'[0m'
  51.  
  52.  /* Check if a directory exist for this domain. If needed, create it */
  53.  
  54.     Call ChkDir Directory()'\'DomainName
  55.  
  56.     OutputFile = Directory()'\'DomainName'\'OutputFile
  57.  
  58.     if TXT
  59.      then do
  60.             'if exist' OutputFile 'del' OutputFile
  61.              Call GetBanner
  62.           end
  63.      else Nop
  64.  
  65.     RC = NetGetInfo(340, 'SrvName', '\\'DCName, 'SERVERS')
  66.     if RC = 0
  67.      then do
  68.              Call RxStemSort 'SrvName'
  69.              if TXT then Call LineOut OutputFile, Banner
  70.              do i = 1 to SrvName.0
  71.                 Call ChkDir Directory()'\'DomainName'\'SrvName.i
  72.                 if TXT & i // 20 = 0 then Call LineOut OutputFile, Banner
  73.  
  74.                 say
  75.                 say '09'x ESC'[0;1;36m Server =' i'/'SrvName.0 '-' SrvName.i ESC'[0m'
  76.                 Parse value SysCurPos() with ROW COL
  77.                 Call SysCurPos ROW -1, Length(SrvName.i) + 26
  78.  
  79.                 RC = NetGetInfo(160, 'SrvNameInfo', '\\'SrvName.i)
  80.                 if RC = 0
  81.                  then do
  82.                          say ESC'[0;1;32m OK' ESC'[0m'
  83.                          Call GetInfo SrvName.i
  84.                       end
  85.                  else do
  86.                          Call Beep 100,50
  87.                          say ESC'[0;1;33m Not found' ESC'[0m'
  88.                          ServerInfo = ' ;'Left(SrvName.i, 9, ' ')';'
  89.                          Call LineOut OutputFile, ServerInfo
  90.                          Call Stream OutputFile, 'C', 'CLOSE'
  91.                       end
  92.              end
  93.           end
  94.      else do
  95.              Call Beep 100,50
  96.              say ESC'[0;1;33m Can not get NetGetInfo from \\'DCName ESC'[0m'
  97.           end
  98.  
  99.     Call Stream Directory()'\'OutputFile, 'C', 'CLOSE'
  100.     Call SysSetObjectData Directory()'\'OutputFile, 'ICONFILE='Directory()'\Domain.Ico'
  101.  
  102.     Return
  103.  
  104.  GETINFO:/* --------------------------------------------------- GETINFO: ----*/
  105.  
  106.     Parse Arg Server_Name
  107.  
  108.     CSD_LSR  = ''
  109.     CSD_MPTS = ''
  110.     CSD_OS2  = ''
  111.     BLD_OS2  = ''
  112.     CSD_CM2  = ''
  113.     CSD_TCP  = ''
  114.  
  115.    'net admin \\'Server_Name '/c set >' TempFile
  116.  
  117.  /* determine the Boot Drive */
  118.  
  119.     do while Lines(TempFile)
  120.        LLINE = Translate(LineIn(TempFile))
  121.        Parse Value LLINE with Begin '=' Rest
  122.        if Begin = 'COMSPEC'
  123.         then Boot_UNC = Left(Rest,1)
  124.         else Nop
  125.     end
  126.  
  127.  /* say '09'x ESC'[0;1;36m Boot Drive =' Boot_UNC':' ESC'[0m' */
  128.  
  129.  /* read & interpret the PATH line from the CONFIG.SYS */
  130.  
  131.     Call SysFileSearch 'SET PATH=', '\\'Server_Name'\'Boot_UNC'$\CONFIG.SYS', 'PATH.'
  132.  
  133.     Parse Value PATH.1 with DUMMY '=' LLINE
  134.  
  135.     do while LLINE <> ''
  136.        Parse Value LLINE with Path ';' LLINE
  137.        Path = Translate(Strip(Path))
  138.  
  139.        Select
  140.  
  141.         when SubStr(Path,3) = '\OS2'                            /* OS/2 Base */
  142.          then do
  143.                  OS2_UNC = '\\'Server_Name'\'Left(Path,1)'$'
  144.                  CSD_OS2  = RxSysLevel(OS2_UNC'\OS2\INSTALL\SYSLEVEL.OS2', 'LEVEL')
  145.               end
  146.  
  147.         when SubStr(Path,3) = '\IBMCOM'          /* MPTS */
  148.          then do
  149.                  MPTS_UNC = '\\'Server_Name'\'Left(Path,1)'$'
  150.                  CSD_MPTS = RxSysLevel(MPTS_UNC'\IBMCOM\SYSLEVEL.TRP','LEVEL')
  151.               end
  152.  
  153.         when SubStr(Path,3) = '\IBMLAN\NETPROG'  /* Lan Server */
  154.          then do
  155.                  LSR_UNC = '\\'Server_Name'\'Left(Path,1)'$'
  156.                  CSD_LSR  = RxSysLevel(LSR_UNC'\IBMLAN\SYSLEVEL.SRV','LEVEL')
  157.               end
  158.  
  159.         when SubStr(Path,3) = '\CMLIB'           /* CM/2 */
  160.          then do
  161.                  CM2_UNC = '\\'Server_Name'\'Left(Path,1)'$'
  162.                  CSD_CM2  = RxSysLevel(CM2_UNC'\CMLIB\SYSLEVEL.ACS', 'LEVEL')
  163.               end
  164.  
  165.         when SubStr(Path,3) = '\TCPIP\BIN'       /* TCP/IP */
  166.          then do
  167.                  TCP_UNC = '\\'Server_Name'\'Left(Path,1)'$'
  168.                  CSD_TCP  = RxSysLevel(TCP_UNC'\TCPIP\BIN\SYSLEVEL.TCP', 'LEVEL')
  169.               end
  170.  
  171.         otherwise Nop
  172.  
  173.        end
  174.     end
  175.  
  176.  /* Determine the BUILD level from OS/2 */
  177.  
  178.     Call Stream TempFile, 'C', 'CLOSE'
  179.  
  180.    'net admin \\'Server_Name '/c ver /r >' TempFile
  181.  
  182.     Do 3
  183.         LLINE = LineIn(TempFile)
  184.     end
  185.  
  186.     Parse Value LLINE with . BLD_OS2 .
  187.  
  188.  /* Get Role of this server */
  189.  
  190.     RC = NetGetInfo(370, 'SrvNameModalInfo', '\\'Server_Name)
  191.     Parse Value SrvNameModalInfo.Role with ServerRole .
  192.  
  193.  /* Collect all together */
  194.  
  195.     ServerInfo = ' ;'                                                 ||,
  196.                  Left(SrvNameInfo.Name,   COL_Len.1 ,' ')';'          ||,
  197.                  Left(CSD_OS2,            COL_Len.2 ,' ')';'          ||,
  198.                  Left(BLD_OS2,            COL_Len.3 ,' ')';'          ||,
  199.                  Left(CSD_MPTS,           COL_Len.4 ,' ')';'          ||,
  200.                  Left(CSD_LSR,            COL_Len.5 ,' ')';'          ||,
  201.                  Left(CSD_CM2,            COL_Len.6 ,' ')';'          ||,
  202.                  Left(CSD_TCP,            COL_Len.7 ,' ')';'          ||,
  203.                  Left(SrvNameInfo.Comment,COL_Len.8 ,' ')';'          ||,
  204.                  Left(ServerRole,         COL_Len.9 ,' ')';'          ||,
  205.                  Left(SrvNameInfo.Disc,   COL_Len.10,' ')';'          ||,
  206.                  Left(SrvNameInfo.Hidden, COL_Len.11,' ')';'
  207.  
  208.  /* If '/TXT' specified write the default file 'Domain.CSV' */
  209.  
  210.     if TXT
  211.      then do
  212.              say '09'x ESC'[0;1;36m "'SrvNameInfo.Comment'"' ESC'[0m'
  213.              Call LineOut OutputFile, ServerInfo
  214.              Call Stream OutputFile, 'C', 'CLOSE'
  215.           end
  216.      else Nop
  217.  
  218.  /* if '/OBJ' specified create a folder with pointers to CONFIG.SYS,
  219.     IBMLAN.INI, PROTOCOL.INI etc... */
  220.  
  221.     if OBJ
  222.      then Call MakeObjects
  223.      else Nop
  224.  
  225.  /* Close the temporary file & delete it */
  226.  
  227.     Call Stream TempFile, 'C', 'CLOSE'
  228.    'if exist' TempFile 'del' TempFile
  229.  
  230.     Return
  231.  
  232.  GETBANNER:/* ------------------------------------------------- GETBANNER: --*/
  233.  
  234.     Banner = ' ;'
  235.  
  236.     do i = 1 to COL_Name.0
  237.        Banner = Banner || Left(COL_Name.i, COL_Len.i, ' ') || ';'
  238.     end
  239.  
  240.     Return
  241.  
  242.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  243.  
  244.     DCName = ''
  245.     OutputFile = 'Domain.CSV'
  246.     LOGFile = 'LSMT.LOG'
  247.     OBJ = 0
  248.     TXT = 0
  249.  
  250.     Option = Translate(Option)
  251.     do while Option <> ''
  252.        Parse Value Option with Argument ' ' Option
  253.        Select
  254.         when Left(Argument,5) = '/SRV:' then DCName     = Substr(Argument,6)
  255.         when Left(Argument,5) = '/OUT:' then OutputFile = Substr(Argument,6)
  256.         when Left(Argument,5) = '/LOG:' then LOGFile    = Substr(Argument,6)
  257.         when Left(Argument,4) = '/OBJ'  then OBJ = 1
  258.         when Left(Argument,4) = '/TXT'  then TXT = 1
  259.         otherwise Nop
  260.        end
  261.     end
  262.  
  263.     if DCName = '' | (OBJ + TXT = 0) then signal GetHelp
  264.  
  265.     Return
  266.  
  267.  INIT:/* ------------------------------------------------------ INIT: -------*/
  268.  
  269.     Call RgUtil   '/M'                                     /* Rexx Utilities */
  270.     Call RgUtils  '/M'                                     /* Rexx Utilities */
  271.     Call RgLSRXUT '/M'                              /* Lan Server Rexx Utils */
  272.  
  273.     Parse Upper Source . . P_NAME
  274.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  275.  
  276.    '@echo off'
  277.     ESC   = '1B'x
  278.     REDIR = '>NUL 2>NUL'
  279.     TempFile = 'TEMP.TMP'        /* Temporary file used in the program */
  280.  
  281.     Resource_File = 'LSMT.RSC'   /* Ansi Topics Resource File */
  282.     Call Chkfile Resource_File
  283.  
  284.     Return
  285.  
  286.  GETANS: /*---------------------------------------------------- GETANS: -----*/
  287.  
  288.     Vars_List = Ansi_Say(Resource_File Topic_List)
  289.     Parse VALUE SysCurPos() With Old_R Old_C
  290.     Do While Vars_List <> ''
  291.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List
  292.        Call SysCurPos Row, Column
  293.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m'
  294.        End
  295.     Call SysCurPos Old_R, Old_C
  296.  
  297.     Return
  298.  
  299.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  300.  
  301.     Topic1 = 'GETDOM'
  302.     Topic_String.Topic1.1 = PRGN
  303.     Topic_List = Topic1
  304.  
  305.     Call GETANS
  306.  
  307.     Call QUIT
  308.  
  309.  CHKFILE: /*--------------------------------------------------- CHKFILE: ----*/
  310.  
  311.     Parse Arg FILE
  312.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  313.     if RC = ''
  314.      then do
  315.              say ' File' FILE 'not found.'
  316.              Call QUIT
  317.           end
  318.      else Nop
  319.     Call Stream FILE, 'C', 'CLOSE'
  320.  
  321.     Return
  322.  
  323.  CHKSERVER: /*------------------------------------------------- CHKSERVER: --*/
  324.  
  325.     Parse Arg Server
  326.  
  327.     say
  328.     say ESC'[0;1;33m Check if' Server 'is a Primary Domain Controller ...' ESC'[0m'
  329.  
  330.     Parse value SysCurPos() with ROW COL
  331.     Call SysCurPos ROW -1, 55
  332.  
  333.     RC = NetGetInfo(370, 'ServerModalInfo', '\\'Server)
  334.  
  335.     if RC = 0 & ServerModalInfo.Role = 'Primary server in the domain'
  336.      then say ESC'[0;1;42m OK' ESC'[0m'
  337.      else do
  338.              say ESC'[0;1;41m Not OK' ESC'[0m'
  339.             'start popup "This is not a Primary DC" "LSMT Message"'
  340.              Call Quit
  341.           end
  342.  
  343.     Return
  344.  
  345.  MAKEOBJECTS: /*----------------------------------------------- MAKEOBJECTS */
  346.  
  347.     say '09'x ESC'[0;1;36m "'SrvNameInfo.Comment'"' ESC'[0m'
  348.  
  349.     Class    = 'WPFolder'
  350.     Title    =  DomainName
  351.     Location = '<LSMT_SERVERS>'
  352.     Setup    = 'OBJECTID=<LSMT_SERVERS_'DomainName'>;'             ||,
  353.                'ICONVIEW=FLOWED;'                                  ||,
  354.                'ICONVIEWPOS=40,20,55,65;'                          ||,
  355.                'ICONFONT=10.System VIO;'                           ||,
  356.                'ICONFILE='Directory()'\1001.ico;'                  ||,
  357.                'ALWAYSSORT=YES'
  358.     Update   = 'Update'
  359.     Call CreateObj
  360.  
  361.     Class    = 'WPFolder'
  362.     Title    =  Server_Name || '^' || SrvNameInfo.Comment
  363.     Location = '<LSMT_SERVERS_'DomainName'>'
  364.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'>;'            ||,
  365.                'ICONVIEW=FLOWED;'                                  ||,
  366.                'ICONVIEWPOS=40,20,55,65;'                          ||,
  367.                'ICONFONT=10.System VIO;'                           ||,
  368.                'ICONFILE='Directory()'\os2res63.ico;'              ||,
  369.                'ALWAYSSORT=YES'
  370.     Update   = 'Update'
  371.     Call CreateObj
  372.  
  373.     Class    = 'WPProgram'
  374.     Title    = 'CONFIG.SYS'
  375.     Location = '<LSMT_SERVERS_'Server_Name'>'
  376.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_CONFIG>;'     ||,
  377.                'ICONFILE='Directory()'\1000.ico;'                  ||,
  378.                'PROGTYPE=PM;'                                      ||,
  379.                'EXENAME=e.exe;'                                    ||,
  380.                'PARAMETERS='OS2_UNC'\config.sys'
  381.     Update   = 'Update'
  382.     Call CreateObj
  383.  
  384.     Call CCompare OS2_UNC'\config.sys',
  385.                   Directory()'\'DomainName'\'Server_Name'\config.sys'
  386.  
  387.     Class    = 'WPProgram'
  388.     Title    = 'PROTOCOL.INI'
  389.     Location = '<LSMT_SERVERS_'Server_Name'>'
  390.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_PROTOCOL>;'   ||,
  391.                'ICONFILE='Directory()'\1018.ico;'                  ||,
  392.                'PROGTYPE=PM;'                                      ||,
  393.                'EXENAME=e.exe;'                                    ||,
  394.                'PARAMETERS='MPTS_UNC'\ibmcom\protocol.ini'
  395.     Update   = 'Update'
  396.     Call CreateObj
  397.  
  398.     Call CCompare MPTS_UNC'\ibmcom\protocol.ini',
  399.                   Directory()'\'DomainName'\'Server_Name'\protocol.ini'
  400.  
  401.     Class    = 'WPProgram'
  402.     Title    = 'LANTRAN.LOG'
  403.     Location = '<LSMT_SERVERS_'Server_Name'>'
  404.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_LANTRAN>;'    ||,
  405.                'ICONFILE='Directory()'\netinfo.ico;'               ||,
  406.                'PROGTYPE=PM;'                                      ||,
  407.                'EXENAME=e.exe;'                                    ||,
  408.                'PARAMETERS='MPTS_UNC'\ibmcom\lantran.log'
  409.     Update   = 'Update'
  410.     Call CreateObj
  411.  
  412.     Call CCompare MPTS_UNC'\ibmcom\lantran.log',
  413.                   Directory()'\'DomainName'\'Server_Name'\lantran.log'
  414.  
  415.     Class    = 'WPProgram'
  416.     Title    = 'IBMLAN.INI'
  417.     Location = '<LSMT_SERVERS_'Server_Name'>'
  418.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_IBMLAN>;'     ||,
  419.                'ICONFILE='Directory()'\1055.ico;'                  ||,
  420.                'PROGTYPE=PM;'                                      ||,
  421.                'EXENAME=e.exe;'                                    ||,
  422.                'PARAMETERS='LSR_UNC'\ibmlan\ibmlan.ini'
  423.     Update   = 'Update'
  424.     Call CreateObj
  425.  
  426.     Call CCompare LSR_UNC'\ibmlan\ibmlan.ini',
  427.                   Directory()'\'DomainName'\'Server_Name'\ibmlan.ini'
  428.  
  429.     if Stream(OS2_UNC'\IBM386FS\HPFS386.INI', 'C', 'QUERY EXIST') = ''
  430.      then nop
  431.      else do
  432.              Class    = 'WPProgram'
  433.              Title    = 'HPFS386.INI'
  434.              Location = '<LSMT_SERVERS_'Server_Name'>'
  435.              Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_HPFS386>;'    ||,
  436.                         'ICONFILE='Directory()'\perfmon.ico;'               ||,
  437.                         'PROGTYPE=PM;'                                      ||,
  438.                         'EXENAME=e.exe;'                                    ||,
  439.                         'PARAMETERS='OS2_UNC'\ibm386fs\hpfs386.ini'
  440.              Update   = 'Update'
  441.              Call CreateObj
  442.              Call CCompare OS2_UNC'\ibm386fs\hpfs386.ini',
  443.                            Directory()'\'DomainName'\'Server_Name'\hpfs386.ini'
  444.           end
  445.  
  446.     if CSD_CM2 = ''
  447.      then nop
  448.      else do
  449.              Call SysFileSearch 'CMDefaultCFG', CM2_UNC'\CMLIB\CM.INI', 'FILE.'
  450.              if FILE.0 = 1
  451.               then do
  452.                       Parse Value FILE.1 with '=' NDF_File
  453.  
  454.                       Class    = 'WPProgram'
  455.                       Title    = NDF_File'.NDF'
  456.                       Location = '<LSMT_SERVERS_'Server_Name'>'
  457.                       Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_NDF>;' ||,
  458.                                  'ICONFILE='Directory()'\cm2.ico;'            ||,
  459.                                  'PROGTYPE=PM;'                               ||,
  460.                                  'EXENAME=e.exe;'                             ||,
  461.                                  'PARAMETERS='CM2_UNC'\cmlib\'NDF_File'.NDF'
  462.                       Update   = 'Update'
  463.                       Call CreateObj
  464.                       Call CCompare CM2_UNC'\cmlib\'NDF_File'.ndf',
  465.                                     Directory()'\'DomainName'\'Server_Name'\'NDF_File'.ndf'
  466.                    end
  467.               else Nop
  468.           end
  469.  
  470.     if CSD_TCP = ''
  471.      then nop
  472.      else do
  473.              Call SysFileSearch 'SET ETC=', OS2_UNC'\CONFIG.SYS', 'FILE.'
  474.              if FILE.0 = 1
  475.               then do
  476.                       Parse Value FILE.1 with '=' ETC_Location
  477.                       i = 0
  478.                       do while ETC_Location <> ''
  479.                          i = i + 1
  480.                          Parse Value ETC_Location with Path.i '\' ETC_Location
  481.                       end
  482.                       ETC_UNC = '\\fs2\'Left(Path.1,1)'$\'Path.2'\BIN'
  483.  
  484.                       Class    = 'WPProgram'
  485.                       Title    = 'TCP/IP^Setup.CMD'
  486.                       Location = '<LSMT_SERVERS_'Server_Name'>'
  487.                       Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_SETUP>;'      ||,
  488.                                  'ICONFILE='Directory()'\1065.ico;'                  ||,
  489.                                  'PROGTYPE=PM;'                                      ||,
  490.                                  'EXENAME=e.exe;'                                    ||,
  491.                                  'PARAMETERS='ETC_UNC'\setup.cmd'
  492.                       Update   = 'Update'
  493.                       Call CreateObj
  494.                       Call CCompare ETC_UNC'\setup.cmd',
  495.                                     Directory()'\'DomainName'\'Server_Name'\setup.cmd'
  496.                    end
  497.               else Nop
  498.           end
  499.  
  500.     Class    = 'WPProgram'
  501.     Title    = 'System Info'
  502.     Location = '<LSMT_SERVERS_'Server_Name'>'
  503.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_QSYSTEM>;'    ||,
  504.                'ICONFILE='Directory()'\sysinfo.ico;'               ||,
  505.                'PROGTYPE=windowablevio;'                           ||,
  506.                'EXENAME='Directory()'\q_system.cmd;'               ||,
  507.                'PARAMETERS='Server_Name
  508.     Update   = 'Update'
  509.     Call CreateObj
  510.  
  511.     Call CCompare '\\'Server_Name'\ibmlan$\netprog\qsystem.out',
  512.                   Directory()'\'DomainName'\'Server_Name'\qsystem.out'
  513.  
  514.     Class    = 'WPProgram'
  515.     Title    = 'Lan Server Errors^[GET]'
  516.     Location = '<LSMT_SERVERS_'Server_Name'>'
  517.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_GETERROR>;'   ||,
  518.                'ICONFILE='Directory()'\notedoc.ico;'               ||,
  519.                'PROGTYPE=windowablevio;'                           ||,
  520.                'EXENAME='Directory()'\q_errors.cmd;'               ||,
  521.                'PARAMETERS='Server_Name
  522.     Update   = 'Update'
  523.     Call CreateObj
  524.  
  525.     Call CCompare '\\'Server_Name'\ibmlan$\netprog\neterr.out',
  526.                   Directory()'\'DomainName'\'Server_Name'\neterr.out'
  527.  
  528.     Class    = 'WPProgram'
  529.     Title    = 'Lan Server Errors^[RESET]'
  530.     Location = '<LSMT_SERVERS_'Server_Name'>'
  531.     Setup    = 'OBJECTID=<LSMT_SERVERS_'Server_Name'_RESERROR>;'   ||,
  532.                'ICONFILE='Directory()'\notedoc1.ico;'              ||,
  533.                'PROGTYPE=windowablevio;'                           ||,
  534.                'EXENAME='Directory()'\r_errors.cmd;'               ||,
  535.                'PARAMETERS='Server_Name
  536.     Update   = 'Update'
  537.     Call CreateObj
  538.  
  539.     Return
  540.  
  541.  CREATEOBJ: /*------------------------------------------------- CREATEOBJ: --*/
  542.  
  543.     RC = SysCreateObject(Class, Title, Location, Setup, Update)
  544.     if RC <> 1
  545.        then say ESC'[0;1;41m ErrorCode' RC Title ESC'[0m'
  546.        else Nop
  547.  
  548.     Return
  549.  
  550.  CHKDIR:/* ---------------------------------------------------- CHKDIR: ---*/
  551.  
  552.     Parse Arg Dir_Name
  553.  
  554.     RCode = 0                                      /* Reset the Return Code*/
  555.  
  556.     if Stream(Dir_Name, 'C', 'QUERY EXIST') <> ''       /* is this a file ?*/
  557.      then RCode = 1    /* Bad RC, there already exist a file with this name*/
  558.      else do
  559.              Call SysFileTree Dir_Name, 'DIREXIST', 'DO'/* does this DIR exist ?*/
  560.              if DIREXIST.0 = 0
  561.               then do
  562.                       RC = SysMKDir(Dir_Name)
  563.                       if RC <> 0
  564.                        then RCode = 1
  565.                        else Nop
  566.                    end
  567.               else Nop
  568.           end
  569.  
  570.     if RCode = 1
  571.      then do
  572.              Call Beep 1000,100
  573.              say 'Error while creating' Dir_Name
  574.              Pull
  575.              Exit
  576.           end
  577.      else Nop
  578.  
  579.     Return
  580.  
  581.  CCOMPARE:/* ------------------------------------------------- CCOMPARE: ----*/
  582.  
  583.     Parse Arg Source Target
  584.  
  585.     if Source = '' | Source = '\' | Target = ''
  586.      then Return
  587.      else Nop
  588.  
  589.     Q = Stream(Source, 'C', 'QUERY EXIST')
  590.     if Q <> ''
  591.      then do
  592.              Q1 = Stream(Source, 'C', 'QUERY DATETIME')
  593.              Q2 = Stream(Target, 'C', 'QUERY DATETIME')
  594.              if Q1 <> Q2
  595.               then do
  596.                       say '09'x ESC'[0;1;36m Copy' Source ESC'[0m'
  597.                      'copy' Source Target Redir
  598.                       if RC <> 0
  599.                        then do
  600.                                Call Beep 1000,100
  601.                                say 'BAD COPY'
  602.                                Exit
  603.                             end
  604.                        else Nop
  605.                    end
  606.               else Nop
  607.           end
  608.      else Nop
  609.  
  610.     Return
  611.  
  612.  QUIT:/* ------------------------------------------------------ QUIT: -------*/
  613.  
  614.     Exit
  615.  
  616.  /*--------------------------------------------------------------------------*/
  617.