home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 8 Other
/
08-Other.zip
/
lsmt213c.zip
/
setsel.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-10-09
|
10KB
|
306 lines
/*---------------------------------------------------------------------------*\
| SET all Application-Selector from a LS 3.0 and higher |
| and dump it to an ASCII File |
| (C) Alain Rykaert - IBM-Belgium - MAY96 |
\*---------------------------------------------------------------------------*/
Parse Arg Option
Call INIT /* Initialisation of DLL's and other stuff*/
Call CHKOPT /* Check Options & display Welcome*/
Call CHKPWS /* Check the PWS & Admin name*/
Call MAIN /* do the main job*/
Call QUIT /* Quit*/
MAIN:/* ------------------------------------------------------ MAIN: -------*/
Call Time('R')
'if exist' CHKF 'del' CHKF
EC = 0
ExitCode = X2D('FE00') /* Good CID Return code*/
do while Lines(INPF)
LLINE = LineIN(INPF)
OLINE = LLINE
parse value LLINE with OPT ';' LLINE
select
when OPT = '',
| LLINE = '',
| Left(Strip(OPT),1) = '*' then Iterate
when Translate(OPT) = 'OPT' then Call COLUMNS
when Translate(OPT) = 'A' then Call UPDSEL
when Translate(OPT) = 'D' then Call DELSEL
when Translate(OPT) = 'U' then Call UPDSEL
otherwise Iterate
end
if EC
then do
Call LineOut CHKF, OLINE
EC = 0
ExitCode = X2D('1604') /* Bad CID return code*/
end
else Nop
end
say '0909'x 'Total Time =' Trunc(Time('E'),2)
Return
ADDSEL:/* ---------------------------------------------------- ADDSEL: -----*/
/* Goto the UPDSEL section */
DELSEL:/* ---------------------------------------------------- DELSEL: -----*/
Parse Value LLINE with USERID ';' LLINE
USERID = Strip(USERID)
RC = NetDelete(32, '\\'SRVNAME, USERID)
if RC = 0
then RC = ''
else Nop
Call LOGIT 'Delete all Applications for', USERID, RC
Return
UPDSEL: /*---------------------------------------------------- UPDSEL: -----*/
EC = 0 /* Reset the Error Check Flag */
Parse Value LLINE with USERID ';' LLINE
USERID = Strip(USERID)
if \MUTE
then do
Call SysCurState OFF
Call SysCurPos 20,16
say ESC'[K'
Call SysCurPos 20,16
end
else Nop
say ' Update User =' USERID
CHKAPPL = ''
RC = NetGetInfo(32, 'ApplSelInfo', '\\'SRVNAME, USERID) /* Get current Sel */
if RC = 0
then do
Call RxStemSort 'ApplSelInfo'
do i = 1 to ApplSelInfo.Count
CHKAPPL = CHKAPPL ApplSelInfo.i.AppName
end
end
else Nop
/* say '-' USERID 'has following Application Selector :' CHKAPPL */
i = 1
do while LLINE <> ''
i = i + 1
parse value LLINE with FLAG ';' LLINE
FLAG = Translate(Strip(FLAG))
APPL = COLNAME.i /* Reminder : COLNAME = Application Name */
if FLAG = 'X'
then do
if Wordpos(APPL,CHKAPPL) > 0
then Nop
else do
RC = NetGetInfo(30, 'ApplInfo', '\\'SRVNAME, APPL)
if RC = 0
then Nop
else do /* could not retieve Appl Info from Appl */
RC = ''
Call LOGIT 'Get ApplInfo for Application', APPL, RC
Return /* leave the update */
end
RC = NetAdd(32, '\\'SRVNAME, APPL, USERID, ApplInfo.AppType)
if RC = 0
then RC = ''
else Nop
Call LOGIT 'Add Application on User', USERID '-' APPL, RC
end
end
else do
if Wordpos(APPL,CHKAPPL) > 0
then do
RC = NetDelete(32, '\\'SRVNAME, USERID, APPL)
if RC = 0
then RC = ''
else Nop
Call LOGIT 'Del Application on User', USERID '-' APPL, RC
end
else Nop
end
end
Return
SETINFO: /*--------------------------------------------------- SETINFO: ----*/
RC = NetSetInfo(70, COLNAME, GROUPINFO.COLNAME, '\\'SRVNAME, GROUPINFO.NAME)
if RC = 0
then RC = ''
else EC = 1
if COLNAME = 'PASSWORD'
then Call LOGIT 'Update Groups', GROUPINFO.NAME '-' '****', RC
else Call LOGIT 'Update Groups', GROUPINFO.NAME '-' GROUPINFO.COLNAME, RC
Return
COLUMNS: /*--------------------------------------------------- COLUMNS: ----*/
BANNER = 'OPT'
i = 0
do while LLINE <> ''
i = i + 1
parse value LLINE with COLNAME.i ';' LLINE
BANNER = BANNER';'COLNAME.i
end
COLT = i /* Total numbers of columns */
Call LineOut CHKF, BANNER
Return
CHKOPT: /*---------------------------------------------------- CHKOPT: -----*/
SRVNAME = ''
INPF = 'SELECTOR.CSV'
LOGF = 'LSMT.LOG'
CHKF = 'SELECTOR.CHK'
PIPE = ''
TRACE = 0
MUTE = 0
OPTION = Translate(OPTION)
do while OPTION <> ''
Parse value OPTION with ARGUMENT ' ' OPTION
select
when Left(ARGUMENT,5) = '/SRV:' then SRVNAME = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/INP:' then INPF = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/LOG:' then LOGF = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/CHK:' then CHKF = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/PIP:' then PIPE = Substr(ARGUMENT,6)
when Left(ARGUMENT,2) = '/M' then MUTE = 1
when Left(ARGUMENT,2) = '/T' then TRACE = 1
otherwise Nop
end
end
if SRVNAME = '' then signal GETHELP
if \MUTE
then do
Topic1 = 'SETWELCOME'
Topic_String.Topic1.1 = SRVNAME
Topic_String.Topic1.2 = INPF
Topic_String.Topic1.3 = LOGF
Topic_String.Topic1.4 = CHKF
Topic_String.Topic1.5 = PIPE' '
Topic_List = 'WELCOMELOGO' Topic1 'SETSEL'
Call GETANS
Parse VALUE SysCurPos() With Old_R Old_C; 'pause'
Call SysCurPos Old_R, Old_C; say ESC'[K'
end
else do
say 'ServerName =' SRVNAME
say 'InputFile =' INPF
say 'LogFile =' LOGF
say 'CheckFile =' CHKF
end
Return
CHKPWS: /*---------------------------------------------------- CHKPWS: -----*/
RC = NetGetInfo(350, 'WKSTAINFO','')
if RC = 0
then do
ADMNAME = WKSTAINFO.UserName
PWSNAME = WKSTAINFO.ComputerName
end
else do
Call LOGIT 'WKSTAINFO' USERID.i ':' RC
Call Quit
end
Return
INIT: /*------------------------------------------------------ INIT: -------*/
Call RgUtil '/m' /* Rexx Utilities */
Call RgUtils '/m' /* Rexx Utilities */
Call RgLSRXUT '/m' /* Lan Server Rexx Utils */
Parse Upper Source . . P_NAME
PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
'@echo off'
ESC = '1B'x
REDIR = '>NUL 2>NUL'
Resource_File = 'LSMT.RSC'
Call CHKFILE Resource_File
Return
GETANS: /*---------------------------------------------------- GETANS: -----*/
Vars_List = Ansi_Say(Resource_File Topic_List)
Parse VALUE SysCurPos() With Old_R Old_C
Do While Vars_List <> ''
Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List
Call SysCurPos Row, Column
Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m'
End
Call SysCurPos Old_R, Old_C
Return
GETHELP: /*--------------------------------------------------- GETHELP: ----*/
if \MUTE
then do
Topic1='SETHELP'
Topic_String.Topic1.1 = PRGN
Topic_List=Topic1
Call GETANS
end
else say 'Incorrect options.'
Call QUIT
Return
CHKFILE: /*--------------------------------------------------- CHKFILE: ----*/
Parse Arg FILE
RC = Stream(FILE, 'C', 'QUERY EXIST')
if RC = ''
then do
say ' File' FILE 'not found.'
Call QUIT
end
else Nop
Call Stream FILE, 'C', 'CLOSE'
Return
LOGIT: /*----------------------------------------------------- LOGIT: ------*/
FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
Return
QUIT: /*------------------------------------------------------ QUIT: -------*/
Call LineOut 'LSMT.END', PRGN, 1
Call Stream 'LSMT.END', 'C', 'CLOSE'
Call Stream INPF, 'C', 'CLOSE'
Call Stream LOGF, 'C', 'CLOSE'
Call Stream CHKF, 'C', 'CLOSE'
Exit ExitCode
/*--------------------------------------------------------------------------*/