home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / lssyslvl.cmd < prev    next >
OS/2 REXX Batch file  |  2001-05-01  |  24KB  |  546 lines

  1. /*---------------------------------------------------------------------------*\
  2. |   Get Software levels                       (C) Alain Rykaert - AUG95-OCT00 |
  3. \*---------------------------------------------------------------------------*/
  4.     Version = '3.15a (C) AR - DEC2000'
  5.     Say '* LSSYSLVL Version' Version
  6.  
  7.     Call Init                                 /* init dll's and other stuff*/
  8.  
  9.    'if not exist' LSRDrive'\ibmlan\tmp md' LSRDrive'\ibmlan\tmp'
  10.     TempFile = LSRDrive'\ibmlan\tmp\lssyslvl.tmp'         /* Temporary file*/
  11.  
  12.     Parse Upper Arg DCName OutFileName
  13.  
  14.     If DCName = '' | OutFileName = ''
  15.       Then Do
  16.              Say '*'
  17.              Say '* Get LAN Server Software inventory'
  18.              Say '*'
  19.              Say '* Usage: LSSYSLVL {DCName} {OutputFileName}'
  20.              Say '*'
  21.              Say '* Sample: LSSYSLVL \\BEDDC01 LSSYSLVL.CSV'
  22.              Say '*'
  23.              Exit
  24.            End
  25.       Else Nop
  26.  
  27.     DCName = Strip(DCName,'L','\')
  28.     Say '* Server Name:' '\\'DCName
  29.     Say '* Output FileName:' OutFileName
  30.  
  31.     RC = NetGetInfo(370, 'ServerModalInfo', '\\'DCName)  /* get server role*/
  32.     If RC = 0
  33.       Then Do
  34.              ServerRole = ServerModalInfo.Role
  35.              If WordPos('Primary', ServerRole) > 0     /* check server role*/
  36.                Then Nop
  37.                Else Do
  38.                       Say '! This is not a Primary Domain Controller' '07'x
  39.                       Exit
  40.                     End
  41.            End
  42.       Else Say RC
  43.  
  44.     RC = NetGetInfo(340, 'ServerName', '\\'DCName, 'Servers')/* get all servers*/
  45.     If RC = 0
  46.       Then Do
  47.             'if exist' OutFileName 'del' OutFileName
  48.              OutText = '***' Date() Time() '*** LSSYSLVL Version:' Version
  49.              Call Logit OutFileName OutText
  50.              Call Logit OutFileName ' '
  51.              OutText = "SERVER  " ';',
  52.                        "TIME "    ';',
  53.                        "INST    " ';',
  54.                        "OS2    "  ';',
  55.                        "FIX "     ';',
  56.                        "MPTS   "  ';',
  57.                        "SERVER "  ';',
  58.                        "TCPIP  "  ';',
  59.                        "TCPSTCK"  ';',
  60.                        "CM2    "  ';',
  61.                        "PCOMM"    ';',
  62.                        "NETFIN"   ';',
  63.                        "ADSM   "  ';',
  64.                        "DB2    "  ';',
  65.                        "FFST   "  ';',
  66.                        "SD     "  ';'
  67.              If Trace Then Say OutText
  68.              Call Logit OutFileName OutText
  69.  
  70.              Call RxStemSort 'ServerName'
  71.              Say '* Total defined servers:' ServerName.0
  72.              Do i = 1 to ServerName.0
  73.                Counter = '('Right(i,Length(ServerName.0))'/'Right(ServerName.0,Length(ServerName.0))')'
  74.                Say '* ServerName:' Counter ServerName.i
  75.                OutText = Left(ServerName.i,9) || ';'
  76.                If NetGetInfo(370, 'ServerModalInfo', '\\'ServerName.i) = 0 &,
  77.                  Stream('\\'ServerName.i'\ibmlan$\ibmlan.ini', 'C', 'Query Exists') <> ''
  78.                  Then Call GetInfo ServerName.i
  79.                  Else Say '09'x '> not found'
  80.                Call Logit OutFileName OutText
  81.              End
  82.            End
  83.       Else Say RC
  84.  
  85.     Exit
  86.  
  87.  GETINFO:/* ----------------------------------------------------------------*/
  88.  
  89.     Parse Arg ServerName
  90.  
  91.     CSD_OS2    = ''                                                  /* os2*/
  92.     DRV_OS2    = ''
  93.     VER_OS2    = ''
  94.     FIX_OS2    = ''
  95.  
  96.     CSD_MPTS   = ''                                                 /* mpts*/
  97.     DRV_MPTS   = ''
  98.     VER_MPTS   = ''
  99.     TCPSTCK    = ''                                         /* TCP/IP Stack*/
  100.  
  101.     CSD_LSR    = ''                                           /* lan server*/
  102.     DRV_LSR    = ''
  103.     VER_LSR    = ''
  104.  
  105.     CSD_TCP    = ''                                               /* tcp/ip*/
  106.     DRV_TCP    = ''
  107.     VER_TCP    = ''
  108.  
  109.     CSD_CM2    = ''                                                 /* cm/2*/
  110.     DRV_CM2    = ''
  111.     VER_CM2    = ''
  112.  
  113.     CSD_PCOM   = ''                                                /* pcomm*/
  114.     DRV_PCOM   = ''
  115.     VER_PCOM   = ''
  116.  
  117.     CSD_NETFIN = ''                                            /* netfinity*/
  118.     DRV_NETFIN = ''
  119.     VER_NETFIN = ''
  120.  
  121.     CSD_ADSM   = ''                                                 /* adsm*/
  122.     DRV_ADSM   = ''
  123.     VER_ADSM   = ''
  124.  
  125.     DRV_DB2    = ''                                                 /* db/2*/
  126.     CSD_DB2    = ''
  127.     VER_DB2    = ''
  128.  
  129.     DRV_FFST   = ''                                               /* FFST/2*/
  130.     CSD_FFST   = ''
  131.     VER_FFST   = ''
  132.  
  133.     DRV_SD     = ''                                             /* softdist*/
  134.     CSD_SD     = ''
  135.     VER_SD     = ''
  136.  
  137.     Call Time('R')                                       /* Reset the timer*/
  138.  
  139.     BatchFile = '\\'ServerName'\ibmlan$\netprog\batch.cmd'/* make a batch file*/
  140.    'if exist' BatchFile 'del' BatchFile
  141.    'if exist' TempFile  'del' TempFile
  142.  
  143.     Call LineOut BatchFile, '@echo off'
  144.     Call LineOut BatchFile, 'set'
  145.     Call LineOut BatchFile, 'ver /r'
  146.     Call LineOut BatchFile, '\mptn\bin\inetver'
  147.     Call Stream  BatchFile, 'C', 'Close'
  148.     Call ChkFile BatchFile
  149.  
  150.    'net admin \\'ServerName '/c batch >' TempFile
  151.     Call Stream TempFile, 'C', 'Close'
  152.     If Stream(TempFile, 'C', 'Query Size') > 0
  153.       Then Nop
  154.       Else Do
  155.              Say '! Error: tempfile' TempFile 'is not valid' '07'x
  156.              Return
  157.            End
  158.  
  159.  /* Get all Syslevels */
  160.  
  161.     Call SysFileSearch 'COMSPEC=', TempFile, 'Stem'
  162.     If Stem.0 = 1
  163.       Then Do
  164.              Parse Var Stem.1 . '=' ServerBootDrive ':' .
  165.              If Trace Then Say '> Boot Drive:' ServerBootDrive
  166.              LibPath = ''
  167.              Call SysFileSearch 'LIBPATH=', '\\'ServerName'\'ServerBootDrive'$\config.sys', 'Stem'
  168.              Do j = 1 to Stem.0
  169.                Stem.j = Translate(Stem.j)
  170.                If Left(Strip(Stem.j), 8) = 'LIBPATH='
  171.                  Then Parse Value Stem.j With . '=' LibPath
  172.                  Else Nop
  173.              End
  174.              If LibPath = ''
  175.                Then Do
  176.                       Say '! Error: could not determine LibPath' '07'x
  177.                       Return
  178.                     End
  179.                Else If Trace Then Say '> LibPath:' LibPath
  180.            End
  181.       Else Do
  182.              Say '! Error: could not determine ComSpec' '07'x
  183.              Return
  184.            End
  185.  
  186.     Call SysFileSearch 'Inet Version:', TempFile, 'Stem'    /* TCP/IP Stack*/
  187.     If Stem.0 = 1
  188.       Then Do
  189.              Parse Var Stem.1 . ':' TcpStck .
  190.              If Trace Then Say '> TCP/IP Stack:' TcpStck
  191.            End
  192.       Else Nop
  193.  
  194.     Call SysFileSearch 'SOCKETS.SYS:', TempFile, 'Stem'     /* TCP/IP Stack*/
  195.     If Stem.0 = 1
  196.       Then Do
  197.              Parse Var Stem.1 . ':' TcpStck .
  198.              If Trace Then Say '> TCP/IP Stack:' TcpStck
  199.            End
  200.       Else Nop
  201.  
  202.     Do While LibPath <> ''
  203.       DriveLetter = ''
  204.       Parse Upper Value LibPath With QPath ';' LibPath
  205.       If Pos(':',QPath) > 0
  206.         Then Parse Var QPath DriveLetter ':' QPath
  207.         Else Nop
  208.       Select
  209.        When QPath = '\IBMLAN\NETLIB'                          /* Lan Server*/
  210.          Then Do
  211.                 DRV_LSR = '\\'ServerName'\'DriveLetter'$'
  212.                 CSD_LSR = RxSysLevel(DRV_LSR'\ibmlan\syslevel.req', 'Level')
  213.                 VER_LSR = RxSysLevel(DRV_LSR'\ibmlan\syslevel.req', 'Ver')
  214.               End
  215.        When QPath = '\IBMCOM\DLL'                                   /* MPTS*/
  216.          Then Do
  217.                 DRV_MPTS = '\\'ServerName'\'DriveLetter'$'
  218.                 CSD_MPTS = RxSysLevel(DRV_MPTS'\ibmcom\syslevel.trp', 'Level')
  219.                 VER_MPTS = RxSysLevel(DRV_MPTS'\ibmcom\syslevel.trp', 'Ver')
  220.               End
  221.        When QPath = '\TCPIP\DLL'                                  /* TCP/IP*/
  222.          Then Do
  223.                 DRV_TCP = '\\'ServerName'\'DriveLetter'$'
  224.                 CSD_TCP = RxSysLevel(DRV_TCP'\tcpip\bin\syslevel.tcp', 'Level')
  225.                 VER_TCP = RxSysLevel(DRV_TCP'\tcpip\bin\syslevel.tcp', 'Ver')
  226.                 If CSD_TCP = 'ERROR'
  227.                  Then CSD_TCP = RxSysLevel(DRV_TCP'\tcpip\syslevel.tcp', 'Level')
  228.                  Else Nop
  229.               End
  230.        When QPath = '\CMLIB\DLL'                                    /* CM/2*/
  231.          Then Do
  232.                 DRV_CM2 = '\\'ServerName'\'DriveLetter'$'
  233.                 CSD_CM2 = RxSysLevel(DRV_CM2'\cmlib\syslevel.acs', 'Level')
  234.                 VER_CM2 = RxSysLevel(DRV_CM2'\cmlib\syslevel.acs', 'Ver')
  235.               End
  236.        When QPath = '\PCOMOS2'                                     /* PCOMM*/
  237.          Then Do
  238.                 DRV_PCOM = '\\'ServerName'\'DriveLetter'$'
  239.                 CSD_PCOM = RxSysLevel(DRV_PCOM'\pcomos2\syslevel.pcs', 'Level')
  240.                 VER_PCOM = RxSysLevel(DRV_PCOM'\pcomos2\syslevel.pcs', 'Ver')
  241.                 Parse Var VER_PCOM Begin '.' Between '.' Rest
  242.                 VER_PCOM = Begin || '.' || Between
  243.               End
  244.        When QPath = '\SQLLIB\DLL'                                   /* DB/2*/
  245.          Then Do
  246.                 DRV_DB2 = '\\'ServerName'\'DriveLetter'$'
  247.                 If Stream(DRV_DB2'\sqllib\syslevel.ce2', 'C', 'Query Exists') <> ''
  248.                   Then Do
  249.                          CSD_DB2 = RxSysLevel(DRV_DB2'\sqllib\syslevel.ce2', 'Level')
  250.                          VER_DB2 = RxSysLevel(DRV_DB2'\sqllib\syslevel.ce2', 'Ver')
  251.                        End
  252.                   Else Do
  253.                          CSD_DB2 = RxSysLevel(DRV_DB2'\sqllib\syslevel.dba', 'Level')
  254.                          VER_DB2 = RxSysLevel(DRV_DB2'\sqllib\syslevel.dba', 'Ver')
  255.                        End
  256.               End
  257.        When QPath = '\NETFIN'                                  /* NetFinity*/
  258.          Then Do
  259.                 DRV_NETFIN = '\\'ServerName'\'DriveLetter'$'
  260.                 CSD_NETFIN = RxSysLevel(DRV_NETFIN'\netfin\syslevel.snf', 'Level')
  261.                 VER_NETFIN = RxSysLevel(DRV_NETFIN'\netfin\syslevel.snf', 'Ver')
  262.                 Parse Var VER_NETFIN Begin '.' Between '.' Rest
  263.                 VER_NETFIN = 'N' || Begin || '.' || Between
  264.              /*
  265.                 QNetfin = Stream(DRV_NETFIN'\netfin\syslevel.snf', 'C', 'Query DateTime')
  266.                 Say QNetfin
  267.                 Parse Var QNetfin . '-' . '-' . '0' Time1 ':' Time2 ':' .
  268.                 VER_NETFIN = 'N' || Time1 || '.' || Time2
  269.                 Say Ver_Netfin
  270.               */
  271.               End
  272.        When QPath = '\SYSVIEW2\BIN'                           /* SystemView*/
  273.          Then Do
  274.                 DRV_NETFIN = '\\'ServerName'\'DriveLetter'$'
  275.                 CSD_NETFIN = RxSysLevel(DRV_NETFIN'\sysview2\bin\syslevel.svc', 'Level')
  276.                 VER_NETFIN = RxSysLevel(DRV_NETFIN'\sysview2\bin\syslevel.svc', 'Ver')
  277.                 Parse Var VER_NETFIN Begin '.' Between '.' Rest
  278.                 VER_NETFIN = 'S' || Begin || '.' || Between
  279.               End
  280.        When QPath = '\TME10\BIN'                                  /* TME 10*/
  281.          Then Do
  282.                 DRV_NETFIN = '\\'ServerName'\'DriveLetter'$'
  283.                 CSD_NETFIN = RxSysLevel(DRV_NETFIN'\tme10\bin\syslevel.svc', 'Level')
  284.                 VER_NETFIN = RxSysLevel(DRV_NETFIN'\tme10\bin\syslevel.svc', 'Ver')
  285.                 Parse Var VER_NETFIN Begin '.' Between '.' Rest
  286.                 VER_NETFIN = 'T' || Begin || '.' || Between
  287.               End
  288.        When QPath = '\ADSM' | QPath = '\ADSM\API'                   /* ADSM*/
  289.          Then Do
  290.                 DRV_ADSM = '\\'ServerName'\'DriveLetter'$'
  291.                 If Stream(DRV_ADSM'\adsm\read.me', 'C', 'Query Exists') <> ''
  292.                   Then Do                             /* This is a verion 2*/
  293.                          If SysFileSearch('Version', DRV_ADSM'\adsm\read.me', 'Stem') = 0
  294.                            Then Do
  295.                                   Parse Var Stem.1 . AVer ',' . ARel ',' . ALvl
  296.                                   VER_ADSM = 'V' || AVer || 'R' || ARel || 'L' || Space(Translate(ALvl, '','.'), 0)
  297.                                End
  298.                            Else Nop
  299.                        End
  300.                   Else Do                            /* This is a version 3*/
  301.                          If SysFileSearch('Version', DRV_ADSM'\adsm\readme.txt', 'Stem') = 0
  302.                            Then Do
  303.                                   Parse Var Stem.1 . AVer . ARel ',' . ALvl .
  304.                                   VER_ADSM = 'V' || AVer || 'R' || ARel || 'L' || Space(Translate(ALvl, '','.'), 0)
  305.                                End
  306.                            Else Nop
  307.                    End
  308.               End
  309.        When QPath = '\ADSMCV3\API'                                  /* ADSM*/
  310.          Then Do
  311.                 DRV_ADSM = '\\'ServerName'\'DriveLetter'$'
  312.                 If Stream(DRV_ADSM'\adsmcv3\read.me', 'C', 'Query Exists') <> ''
  313.                   Then Do                             /* This is a verion 2*/
  314.                          If SysFileSearch('Version', DRV_ADSM'\adsmcv3\read.me', 'Stem') = 0
  315.                            Then Do
  316.                                   Parse Var Stem.1 . AVer ',' . ARel ',' . ALvl
  317.                                   VER_ADSM = 'V' || AVer || 'R' || ARel || 'L' || Space(Translate(ALvl, '','.'), 0)
  318.                                End
  319.                            Else Nop
  320.                        End
  321.                   Else Do                            /* This is a version 3*/
  322.                          If SysFileSearch('Version', DRV_ADSM'\adsmcv3\readme.txt', 'Stem') = 0
  323.                            Then Do
  324.                                   Parse Var Stem.1 . AVer . ARel ',' . ALvl .
  325.                                   VER_ADSM = 'V' || AVer || 'R' || ARel || 'L' || Space(Translate(ALvl, '','.'), 0)
  326.                                End
  327.                            Else Nop
  328.                    End
  329.               End
  330.        When QPath = '\SOFTDIST\BIN'                                   /* SD*/
  331.          Then Do
  332.                 DRV_SD = '\\'ServerName'\'DriveLetter'$'
  333.                 CSD_SD = RxSysLevel(DRV_SD'\softdist\bin\syslevel.fnd', 'Level')
  334.                 VER_SD = RxSysLevel(DRV_SD'\softdist\bin\syslevel.fnd', 'Ver')
  335.               End
  336.  
  337.        When QPath = '\PGMS\PCOMOS2'                      /* PCOMM at Morgan*/
  338.          Then Do
  339.                 DRV_PCOM = '\\'ServerName'\'DriveLetter'$'
  340.                 CSD_PCOM = RxSysLevel(DRV_PCOM'\pgms\pcomos2\syslevel.pcs', 'Level')
  341.                 VER_PCOM = RxSysLevel(DRV_PCOM'\pgms\pcomos2\syslevel.pcs', 'Ver')
  342.                 Parse Var VER_PCOM Begin '.' Between '.' Rest
  343.                 VER_PCOM = Begin || '.' || Between
  344.               End
  345.        When QPath = '\PGMS\NETFIN'                   /* NetFinity at Morgan*/
  346.          Then Do
  347.                 DRV_NETFIN = '\\'ServerName'\'DriveLetter'$'
  348.                 CSD_NETFIN = RxSysLevel(DRV_NETFIN'\pgms\netfin\syslevel.snf', 'Level')
  349.                 VER_NETFIN = RxSysLevel(DRV_NETFIN'\pgms\netfin\syslevel.snf', 'Ver')
  350.                 Parse Var VER_NETFIN Begin '.' Between '.' Rest
  351.                 VER_NETFIN = 'N' || Begin || '.' || Between
  352.               End
  353.        When QPath = '\PGMS\SYSVIEW2\BIN'            /* SystemView at Morgan*/
  354.          Then Do
  355.                 DRV_NETFIN = '\\'ServerName'\'DriveLetter'$'
  356.                 CSD_NETFIN = RxSysLevel(DRV_NETFIN'\pgms\sysview2\bin\syslevel.svc', 'Level')
  357.                 VER_NETFIN = RxSysLevel(DRV_NETFIN'\pgms\sysview2\bin\syslevel.svc', 'Ver')
  358.                 Parse Var VER_NETFIN Begin '.' Between '.' Rest
  359.                 VER_NETFIN = 'S' || Begin || '.' || Between
  360.               End
  361.        When QPath = '\PGMS\ADSM'                          /* ADSM at Morgan*/
  362.          Then Do
  363.                 DRV_ADSM = '\\'ServerName'\'DriveLetter'$'
  364.                 If Stream(DRV_ADSM'\pgms\adsm\read.me', 'C', 'Query Exists') <> ''
  365.                   Then Do                             /* This is a verion 2*/
  366.                          If SysFileSearch('Version', DRV_ADSM'\pgms\adsm\read.me', 'Stem') = 0
  367.                            Then Do
  368.                                   Parse Var Stem.1 . AVer ',' . ARel ',' . ALvl
  369.                                   VER_ADSM = 'V' || AVer || 'R' || ARel || 'L' || Space(Translate(ALvl, '','.'), 0)
  370.                                End
  371.                            Else Nop
  372.                        End
  373.                   Else Do                            /* This is a version 3*/
  374.                          If SysFileSearch('Version', DRV_ADSM'\pgms\adsm\readme.txt', 'Stem') = 0
  375.                            Then Do
  376.                                   Parse Var Stem.1 . AVer . ARel ',' . ALvl .
  377.                                   VER_ADSM = 'V' || AVer || 'R' || ARel || 'L' || Space(Translate(ALvl, '','.'), 0)
  378.                                End
  379.                            Else Nop
  380.                    End
  381.               End
  382.        When QPath = '\PGMS\SOFTDIST\BIN'                    /* SD at Morgan*/
  383.          Then Do
  384.                 DRV_SD = '\\'ServerName'\'DriveLetter'$'
  385.                 CSD_SD = RxSysLevel(DRV_SD'\pgms\softdist\bin\syslevel.fnd', 'Level')
  386.                 VER_SD = RxSysLevel(DRV_SD'\pgms\softdist\bin\syslevel.fnd', 'Ver')
  387.               End
  388.        When QPath = '\NF'                             /* NetFinity at Anhyp*/
  389.          Then Do
  390.                 DRV_NETFIN = '\\'ServerName'\'DriveLetter'$'
  391.                 CSD_NETFIN = RxSysLevel(DRV_NETFIN'\nf\syslevel.snf', 'Level')
  392.                 VER_NETFIN = RxSysLevel(DRV_NETFIN'\nf\syslevel.snf', 'Ver')
  393.                 Parse Var VER_NETFIN Begin '.' Between '.' Rest
  394.                 VER_NETFIN = Begin || '.' || Between
  395.               End
  396.        When QPath = '\PCOM'                               /* PCOMM at Anhyp*/
  397.          Then Do
  398.                 DRV_PCOM = '\\'ServerName'\'DriveLetter'$'
  399.                 CSD_PCOM = RxSysLevel(DRV_PCOM'\pcom\syslevel.pcs', 'Level')
  400.                 VER_PCOM = RxSysLevel(DRV_PCOM'\pcom\syslevel.pcs', 'Ver')
  401.                 Parse Var VER_PCOM Begin '.' Between '.' Rest
  402.                 VER_PCOM = Begin || '.' || Between
  403.               End
  404.        OtherWise Nop
  405.       End
  406.     End
  407.  
  408.  /* Get the Sys & Buildlevel of base OS/2 */
  409.  
  410.     Call SysFileSearch 'REVISION', TempFile, 'Stem'
  411.     If Stem.0 = 1
  412.       Then Do
  413.              Parse Var Stem.1 . BLD_OS2 .
  414.              If Trace Then Say '> Build OS2:' BLD_OS2
  415.            End
  416.       Else Nop
  417.  
  418.     Build_List = '9.035 9.034 9.033 9.032 9.031 9.030 9.029 9.028 9.027 9.026 9.025 9.023',
  419.                  '8.266 8.265 8.264 8.263 8.262 8.261 8.260 8.259 8.258 8.257 8.256 8.255',
  420.                  '8.254 8.253 8.252 8.251 8.250 8.249 8.248 8.247 8.246 8.245 8.244 8.243',
  421.                  '8.242 8.241 8.240 8.239 8.238 8.237 8.236 8.235 8.234 8.232 8.200 8.169',
  422.                  '8.168 8.167 8.162'
  423.                                                 /* List the known FixPaks */
  424.     Fix_Paks = 'M011  M010  M009  M008  M007  M006  M005  M004  M003  M002  M001  None',
  425.                'W042  W041  W040  W039  W038  W037  W036  W035  W034  W033  W032  W031',
  426.                'W030  W029  W028  W027  W026  W025  W024  W023  W022  W021  W020  W019',
  427.                'W018  W017  W016  W015  W014  W013  W012  W011  W010  W010  None  W008',
  428.                'W008  W5/6  None'
  429.  
  430.     z = Wordpos(BLD_OS2, Build_List)              /* Is this a known Build?*/
  431.     If z <> 0
  432.       Then FIX_OS2 = Word(Fix_Paks, z)            /* Yes, find FixPak level*/
  433.       Else Nop
  434.  
  435.     CSD_OS2 = RxSysLevel('\\'ServerName'\'ServerBootDrive'$\os2\install\syslevel.os2', 'Level')
  436.     VER_OS2 = RxSysLevel('\\'ServerName'\'ServerBootDrive'$\os2\install\syslevel.os2', 'Ver')
  437.  
  438.     If Stream('\\'ServerName'\'ServerBootDrive'$\os2\syslevel.epw', 'C', 'Query Exists') <> ''
  439.       Then Do
  440.              CSD_FFST = RxSysLevel('\\'ServerName'\'ServerBootDrive'$\os2\syslevel.epw', 'Level')
  441.              VER_FFST = RxSysLevel('\\'ServerName'\'ServerBootDrive'$\os2\syslevel.epw', 'Ver')
  442.            End
  443.       Else CSD_FFST = 'N/A'
  444.  
  445.  /* Get the OS/2 installation date */
  446.     GetInstall = Stream('\\'ServerName'\'ServerBootDrive'$\os2\ini.rc', 'C', 'Query TimeStamp')
  447.     Parse Var GetInstall Year '-' Month '-' Day .
  448.     Install = Year || Month || Day
  449.     If Trace Then Say '> Install Date:' Install
  450.  
  451.  /* Build all together */
  452.     OutText = OutText Right(Trunc(Time('E'),2),5) ';',
  453.                       Left(Install,8)             ';',
  454.                       Left(CSD_OS2,7)             ';',
  455.                       Left(FIX_OS2,4)             ';',
  456.                       Left(CSD_MPTS,7)            ';',
  457.                       Left(CSD_LSR,7)             ';',
  458.                       Left(CSD_TCP,7)             ';',
  459.                       Left(TCPSTCK,7)             ';',
  460.                       Left(CSD_CM2,7)             ';',
  461.                       Left(VER_PCOM,5)            ';',
  462.                       Left(VER_NETFIN,6)          ';',
  463.                       Left(VER_ADSM,7)            ';',
  464.                       Left(CSD_DB2,7)             ';',
  465.                       Left(CSD_FFST,7)            ';',
  466.                       Left(CSD_SD,7)              ';'
  467.  
  468.     If Trace Then Say OutText
  469.  
  470.    'net use \\'ServerName'\'Left(ServerBootDrive,1)'$ /d >nul 2>nul'
  471.    'net use \\'ServerName'\ipc$ /d >nul 2>nul'
  472.    'net use \\'ServerName'\ibmlan$ /d >nul 2>nul'
  473.  
  474.     Return
  475.  
  476.  INIT:/* --------------------------------------------------------------------*/
  477.  
  478.    '@echo off'
  479.  
  480.     If Value('TREES',,'OS2Environment') = ''           /* Check for Tracing*/
  481.       Then Trace = 0
  482.       Else Trace = 1
  483.  
  484.     BootDrive = Left(Value('Comspec',,'OS2Environment'),2)
  485.  
  486.     Redir = '>nul'
  487.  
  488.     If RxFuncQuery('SysLoadFuncs')
  489.       Then Do
  490.              Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  491.              Call SysLoadFuncs
  492.            End
  493.       Else Nop
  494.  
  495.     LSRDrive = ''                      /* Check for Lan Server Drive Letter*/
  496.     PPath = Translate(Value('PATH',,'OS2Environment'))
  497.     x = Pos('\IBMLAN\NETPROG;', PPath) -2
  498.     If x > 0
  499.       Then LSRDrive = SubStr(PPath, x, 2)
  500.       Else Do
  501.              Say '! Could not determine the Lan Requester path'
  502.              Exit
  503.            End
  504.  
  505.     Call ChkFile LSRDrive'\ibmlan\netlib\lsrxut.dll'
  506.     If RxFuncQuery('LoadLSRXUTFuncs')
  507.       Then Do
  508.              Call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs'
  509.              Call LoadLsRxutFuncs
  510.            End
  511.       Else Nop
  512.  
  513.     Call ChkFile BootDrive'\os2\dll\rxutils.dll'
  514.     If RxFuncQuery('RxLoadFuncs')
  515.       Then Do
  516.              Call RxFuncAdd 'RxLoadFuncs', 'RXUTILS', 'RxLoadFuncs'
  517.              Call RxLoadFuncs
  518.            End
  519.       Else Nop
  520.  
  521.     Return
  522.  
  523.  CHKFILE:/* -----------------------------------------------------------------*/
  524.  
  525.     Parse Arg File_To_Check
  526.  
  527.     If Stream(File_To_Check, 'C', 'Query Exists') = ''
  528.       Then Do
  529.              Say '! File not found:' File_To_Check
  530.              Exit
  531.            End
  532.       Else Nop
  533.  
  534.     Return
  535.  
  536.  LOGIT:/* -------------------------------------------------------------------*/
  537.  
  538.     Parse Arg OutFileName OutText
  539.  
  540.     If LineOut(OutFileName, OutText) = 0
  541.       Then Call Stream OutFileName, 'C', 'Close'
  542.       Else Say '! Error while writing:' OutFileName '07'x
  543.  
  544.     Return
  545.  
  546.