home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
lansystk.zip
/
MPTSUTIL
/
APPLETS
/
CASENG1.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1998-05-08
|
13KB
|
457 lines
/* Stripped by STRIPRX.EXE */
parse arg cmdline
OPTIONS "ETMODE"
logfile = "caseng1.log"
CALL LINEOUT logfile,"CasEng1 was invoked at" TIME() "on" DATE()
CALL LINEOUT logfile,cmdline
SIGNAL ON HALT NAME getout
SIGNAL ON SYNTAX NAME getout
irc = 99
cq = "CASSETUPQ"
newq = RXQUEUE('Create',cq)
IF newq <> cq THEN
CALL RXQUEUE "DELETE",newq
oq = RXQUEUE('SET',cq)
CALL Init
cmdline = STRIP(cmdline,'b')
IF LEFT(cmdline,2) = "/?" | LEFT(cmdline,2) = "-?" THEN SIGNAL help
CALL LoadRexxUtil
IF ParseCL(cmdline) <> rc.GOOD_RC THEN
SIGNAL BadCL
CALL BuildReplacementMatrix
IF ParseProfile(profile)<>rc.GOOD_RC THEN
SIGNAL BadProfile
irc = ApplyApplication()
SIGNAL CommonExit
Init:
rc.GOOD_RC = 0
rc.USER_TERMINATED = 1
rc.BAD_EARLY = 22
rc.BAD_LATE = 33
rc.BAD_RC = 99
rc.Popup_Environment = "cmsgbox"
msg.MsgFileName = "cassetup.MSG"
msgbase = 131
msg.BAD_PARM_TEXT = msgbase + 0
msg.HELP_TEXT = msg.BAD_PARM_TEXT + 1
msg.HELP_TITLE = msg.HELP_TEXT + 1
msg.BAD_CL_TEXT = msg.HELP_TITLE + 1
msg.BAD_CL_TITLE = msg.BAD_CL_TEXT + 1
msg.BAD_PROFILE_TEXT = msg.BAD_CL_TITLE + 1
msg.BAD_PROFILE_TITLE = msg.BAD_PROFILE_TEXT + 1
msg.NO_REXXUTILS_TEXT = msg.BAD_PROFILE_TITLE + 1
msg.NO_REXXUTILS_TITLE = msg.NO_REXXUTILS_TEXT + 1
msg.IN_DRIVE_TEXT = msg.NO_REXXUTILS_TITLE + 1
msg.CMD_ERROR_TEXT = msg.IN_DRIVE_TEXT + 1
msg.CMD_ERROR_TITLE = msg.CMD_ERROR_TEXT + 1
msg.INSERT_DISKETTE_TITLE = msg.CMD_ERROR_TITLE + 1
msg.CANCEL_TEXT = msg.INSERT_DISKETTE_TITLE + 1
msg.CANCEL_TITLE = msg.CANCEL_TEXT + 1
rc.MB_OK = 1
rc.MB_CANCEL = 2
rc.MB_ABORT = 3
rc.MB_RETRY = 4
rc.MB_IGNORE = 5
rc.MB_YES = 6
rc.MB_NO = 7
rc.MB_ENTER = 8
glob.curdir = SafeDirectory()
PARSE SOURCE . . pgmfile
loaddir = FILESPEC("DRIVE",pgmfile)||FILESPEC("PATH",pgmfile)
RETURN
ParseCL: PROCEDURE EXPOSE profile source target workdir dlldir fixdir errorTag errorData rc.
parse arg cmdline
profile = ""
source = ""
target = ""
workdir = ""
dlldir = ""
fixdir = ""
DO WHILE cmdline <> ""
PARSE VAR cmdline parm cmdline
PARSE VAR parm tag"="data
tag = TRANSLATE(STRIP(tag, 'b'))
tag = SUBSTR(tag,2)
SELECT
WHEN tag = "P" THEN profile = strip(data,'b')
WHEN tag = "S" THEN source = strip(data,'b')
WHEN tag = "T" THEN target = strip(data,'b')
WHEN tag = "W" THEN workdir = strip(data,'b')
WHEN tag = "D" THEN dlldir = strip(data,'b')
WHEN tag = "F" THEN fixdir = strip(data,'b')
OTHERWISE nop
END
END
IF profile = "" THEN
RETURN rc.BAD_RC
IF STREAM(profile,'c','query exists') = "" THEN
RETURN rc.BAD_RC
IF target = "" THEN
RETURN rc.BAD_RC
CALL CreateDir(target)
CALL SysFileTree target,"MYSTEM","D"
IF MyStem.0 = 0 THEN
RETURN rc.BAD_RC
IF dlldir = "" THEN
dlldir = workdir
IF dlldir = "" THEN
RETURN rc.BAD_RC
CALL CreateDir(dlldir)
CALL SysFileTree dlldir,"MYSTEM","D"
IF MyStem.0 = 0 THEN
RETURN rc.BAD_RC
IF workdir = "" THEN
RETURN rc.BAD_RC
CALL CreateDir(workdir)
CALL SysFileTree workdir,"MYSTEM","D"
IF MyStem.0 = 0 THEN
RETURN rc.BAD_RC
ThePath = VALUE("PATH",,"OS2ENVIRONMENT")
CALL VALUE "PATH",workdir";"ThePath,"OS2ENVIRONMENT"
IF fixdir <> "" THEN
CALL SysFileTree fixdir,"MYSTEM","D"
IF MyStem.0 = 0 THEN
RETURN rc.BAD_RC
source = strip(source,'t','\')
IF source = "" THEN
RETURN rc.BAD_RC
RETURN rc.GOOD_RC
BuildReplacementMatrix: PROCEDURE EXPOSE app. source target loaddir workdir dlldir fixdir
app.0MAT.0 = 10
app.0MAT.1.0tag = "$S"
app.0MAT.1.0rep = source
app.0MAT.2.0tag = "$T"
app.0MAT.2.0rep = target
app.0MAT.3.0tag = "$C"
app.0MAT.3.0rep = loaddir
app.0MAT.4.0tag = "$W"
app.0MAT.4.0rep = workdir
app.0MAT.5.0tag = "$D"
app.0MAT.5.0rep = dlldir
app.0MAT.6.0tag = "$F"
app.0MAT.6.0rep = fixdir
app.0MAT.7.0tag = "$A1"
app.0MAT.7.0rep = LEFT(source,1)":"
app.0MAT.8.0tag = "$A2"
app.0MAT.8.0rep = LEFT(target,1)":"
app.0MAT.9.0tag = "$A3"
app.0MAT.9.0rep = LEFT(glob.curdir,1)":"
app.0MAT.10.0tag = "$A4"
app.0MAT.10.0rep = glob.curdir
RETURN
ParseProfile: PROCEDURE EXPOSE app. rc. msg.
parse arg profile
IF STREAM(profile,'c','query exists') = "" THEN RETURN rc.BAD_RC
KWs = "APPNICK APPDIR OS PACKAGE PROGTYPE "
KWs = KWs || "NUMDSKT METHOD COPYSUBDIR FIXTO FIXLEVEL "
KWs = KWs || "MSSUBDIR PROMPT PROMPTRC"
KStems = "SETUP MSCMD IMAGELOAD XDISKETTE"
KWcnt = 13
DO i = 1 to KWcnt
INTERPRET "app."||WORD(KWs,i)||"="||"''"
END
app.SETUP.0 = 0
app.MSCMD.0 = 0
app.ImageLoad.0 = 0
app.NUMDSKT = 0
DO WHILE LINES(profile) > 0
line = STRIP(LINEIN(profile),'b')
IF LEFT(line,1) = "*" | line = "" THEN
ITERATE
PARSE VAR line key"="val
key = TRANSLATE(STRIP(key,'b'))
PARSE VAR key keystem".".
val = strip(val,'b')
IF WORDPOS(keystem, KWs)<>0 | WORDPOS(keystem,KStems) <> 0 THEN
INTERPRET "app."||key"='"val"'"
END
CALL STREAM profile,'c','CLOSE'
IF DATATYPE(app.METHOD,"N") <> 1 THEN RETURN BAD_RC
IF app.METHOD < 1 | app.METHOD > 3 THEN RETURN BAD_RC
IF DATATYPE(app.ImageLoad.0,"N") <> 1 THEN
app.ImageLoad.0 = 0
IF DATATYPE(app.SETUP.0,"N") <> 1 THEN
app.SETUP.0 = 0
IF app.ImageLoad.0 < 1 & app.METHOD = 2 THEN RETURN BAD_RC
DO i = 1 to app.ImageLoad.0
IF app.ImageLoad.i = "" THEN RETURN BAD_RC
IF app.ImageLoad.i = "APP.IMAGELOAD."i THEN RETURN BAD_RC
END
DO i = 1 to app.SETUP.0
IF DATATYPE(app.SETUP.i.0,"N") <> 1 THEN
app.SETUP.i.0 = 0
DO j = 1 to app.SETUP.i.0
IF app.SETUP.i.j = "" THEN RETURN BAD_RC
IF app.SETUP.i.j = "APP.SETUP."i"."j THEN RETURN BAD_RC
END
END
IF app.OS <> 1 & app.OS <> 2 THEN app.OS = 1
IF app.PACKAGE <> 1 & app.PACKAGE <> 2 THEN app.PACKAGE = 1
IF app.PROGTYPE < 1 | app.PROGTYPE > 4 THEN app.PROGTYPE = 4
RETURN rc.GOOD_RC
ApplyApplication: PROCEDURE EXPOSE app. rc. msg.
IF app.method = 3 THEN
DO
CALL msgbox app.prompt,"Application Image Load Information","OK","INFORMATION"
IF app.promptrc <> "" THEN
RETURN app.promptrc
ELSE
RETURN rc.GOOD_RC
END
irc = DoSetupSteps()
IF irc <> rc.GOOD_RC THEN RETURN irc
IF app.method = 1 THEN
irc = DoXCopyCommand()
IF irc = rc.GOOD_RC THEN
irc = DoCopyCommand()
RETURN irc
DoSetupSteps: PROCEDURE EXPOSE app. rc. msg.
steps = app.SETUP.0
DO i = 1 to steps
IF app.SETUP.i = "APP.SETUP."i THEN
app.SETUP.i = ""
IF app.SETUP.i <> "" THEN
DO
TheMsg = GetMsg(msg.IN_DRIVE_TEXT,app.SETUP.i,app.0MAT.1.0rep)
VolSer = ""
MarkerFile = ""
IF app.SETUP.i.0VolSer <> "APP.SETUP."i".0VOLSER" THEN
VolSer = app.SETUP.i.0VolSer
IF app.SETUP.i.0MarkerFile <> "APP.SETUP."i".0MARKERFILE" THEN
IF STRIP(app.SETUP.i.0MarkerFile) <> "" THEN
MarkerFile = app.SETUP.i.0MarkerFile
AlwaysPrompt = app.SETUP.i.0AlwaysPrompt
irc = PromptForDiskette(TheMsg,volser,markerfile,AlwaysPrompt)
IF irc <> rc.GOOD_RC THEN
RETURN irc
END
commands = app.SETUP.i.0
DO j = 1 to commands
IF app.SETUP.i.j.0GOODRC <> "APP.SETUP."i"."j".0GOODRC" THEN
TheGoodRc = app.SETUP.i.j.0GOODRC
else
TheGoodRc = 0
irc = ExecuteCommand(app.SETUP.i.j,TheGoodRc)
IF irc <> rc.GOOD_RC then
RETURN irc
END
END
RETURN rc.GOOD_RC
DoXCopyCommand: PROCEDURE EXPOSE app. rc. msg.
DO i = 1 to app.NumDskt
msgtext = app.XDISKETTE.i.0Prompt
IF msgtext = "APP.XDISKETTE."i".0PROMPT" THEN
msgtext = "Diskette" i
TheMsg = GetMsg(msg.IN_DRIVE_TEXT,msgtext,app.0MAT.1.0rep)
TheVolSer = app.XDISKETTE.i.0VolSer
IF TheVolSer = "APP.XDISKETTE."i".0VOLSER" THEN
TheVolSer = ""
TheMarkerFile = app.XDISKETTE.i.0MarkerFile
IF TheMarkerFile = "APP.XDISKETTE."i".0MARKERFILE" THEN
TheMarkerFile = ""
AlwaysPrompt = app.XDISKETTE.i.0AlwaysPrompt
irc = PromptForDiskette(TheMsg,TheVolSer,TheMarkerFile,AlwaysPrompt)
IF irc <> rc.GOOD_RC THEN
RETURN irc
IF app.COPYSUBDIR = "Y" THEN
flag = "/s /e"
ELSE
flag = "/e"
irc = ExecuteCommand("XCOPY $S\*.* $T" flag, "0")
IF irc <> rc.GOOD_RC THEN
LEAVE
end
RETURN irc
DoCopyCommand: PROCEDURE EXPOSE app. rc. msg.
irc = rc.GOOD_RC
DO i = 1 to app.ImageLoad.0
IF POS(".",app.IMAGELOAD.i.0GOODRC) = 0 THEN
TheGoodRc = app.IMAGELOAD.i.0GoodRC
ELSE
TheGoodRc = 0
irc = ExecuteCommand(app.IMAGELOAD.i,TheGoodRC)
IF irc <> rc.GOOD_RC THEN
LEAVE
END
RETURN irc
ExecuteCommand: PROCEDURE EXPOSE app. rc. msg.
arg cmdline,goodrcs
logfile = "caseng1.log"
cmdline = StringReplace(cmdline)
CALL LINEOUT logfile,cmdline
ADDRESS CMD "@cmd /C" cmdline
TheRC = rc
CALL LINEOUT logfile,"The return code was" TheRc
DO i = 1 to WORDS(goodrcs)
IF TheRC = WORD(goodrcs,i) THEN
RETURN rc.GOOD_RC
END
CALL msgbox GetMsg(msg.CMD_ERROR_TEXT,cmdline,TheRc),GetMsg(msg.CMD_ERROR_TITLE),"OK","ERROR"
ADDRESS CMD "@PAUSE"
RETURN rc.BAD_LATE
PromptForDiskette: PROCEDURE EXPOSE app. rc. msg.
parse arg TheMsg,VolSer,MarkerFile,AlwaysPrompt
SomethingToCheck = 0
IF VolSer <> "" | MarkerFile <> "" THEN
SomethingToCheck = 1
loop = 1
DO WHILE loop = 1
IF AlwaysPrompt = 1 | CheckForDiskinDrive(VolSer,MarkerFile) = 0 THEN
DO
irc = msgbox(TheMsg,GetMsg(msg.INSERT_DISKETTE_TITLE),"OKCANCEL","WARNING")
IF irc <> rc.MB_OK THEN
return rc.USER_TERMINATED
END
loop = 0
IF CheckForDiskinDrive(VolSer,MarkerFile) = 0 THEN
loop = 1
END
RETURN rc.GOOD_RC
CheckForDiskInDrive: PROCEDURE EXPOSE app. rc.
parse arg VolSer,MarkerFile
source = LEFT(app.0MAT.1.0rep,1)
driveinfo = SysDriveInfo(source)
IF driveinfo = "" THEN RETURN 0
IF VolSer <> "" THEN
DO
Parse Var driveinfo . . . vollbl
IF STRIP(vollbl,'b') <> volser THEN
RETURN 0
END
IF MarkerFile <> "" THEN
DO
path = STRIP(app.0MAT.1.0rep,'t','\')
CALL SysFileTree path"\"MarkerFile,"MYSTEM","F"
IF MyStem.0 = 0 THEN
RETURN 0
END
RETURN 1
LoadRexxUtil: PROCEDURE EXPOSE rc.
irc = RxFuncAdd("SysLoadFuncs","REXXUTIL","SysLoadFuncs")
irc = RxFuncQuery("SysLoadFuncs")
IF irc <> 0 THEN SIGNAL No_RexxUtils
irc = SysLoadFuncs()
RETURN
GetMsg: PROCEDURE EXPOSE rc. msg.
parse arg msgno,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
TheMsg = SysGetMessage(msgno,msg.MsgFileName,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9)
IF rc.Popup_Environment = "cmsgbox" THEN
DO
CRLF = D2C(13)||D2C(10)
n = POS(CRLF,TheMsg)
DO WHILE n > 0
TheMsg = OVERLAY(" ~",TheMsg,n,2)
n = POS(CRLF,TheMsg)
END
END
RETURN TheMsg
msgbox: PROCEDURE EXPOSE rc. msg.
PARSE ARG message,title,buttons,icon
done = 0
DO WHILE done = 0
done = 1
IF rc.Popup_Environment = "cmsgbox" THEN
DO
message = TRANSLATE(message,"'",'"')
title = TRANSLATE(title,"'",'"')
message = '"'message'"'
title = '"'title'"'
ADDRESS CMD '@cmsgbox' message title buttons icon
irc = rc
END
ELSE
irc = RxMessageBox(message,title,buttons,icon)
IF irc = rc.MB_CANCEL THEN
DO
circ = msgbox(GetMsg(msg.Cancel_Text),GetMsg(msg.Cancel_Title),"YESNO","WARNING")
IF circ = rc.MB_NO THEN
done = 0
END
END
RETURN irc
CreateDir: PROCEDURE EXPOSE rc.
arg path
workpath = path
segments.0 = 0
CALL SysMkDir workpath
MyStem.0 = 0
CALL SysFileTree workpath,"MYSTEM","D"
IF MyStem.0 > 0 THEN
RETURN rc.GOOD_RC
DO while workpath <> ""
PARSE VAR workpath ThisSeg"\"workpath
i = segments.0 + 1
segments.i = ThisSeg
segments.0 = i
END
workpath = segments.1
CALL SysMkDir workpath
DO i = 2 to segments.0
workpath = workpath || "\" || segments.i
CALL SysMkDir workpath
END
RETURN
StringReplace: PROCEDURE EXPOSE app.
arg TheString
Do i = 1 to app.0MAT.0
len = LENGTH(app.0MAT.i.0tag) - 1
n = POS(app.0MAT.i.0tag,TheString)
DO WHILE n > 0
NewString = SUBSTR(TheString,1,n-1)||app.0MAT.i.0rep||SUBSTR(TheString,n+len+1)
TheString = NewString
n = POS(app.0MAT.i.0tag,TheString)
END
END
RETURN TheString
SafeDIRECTORY: procedure
parse arg indir
whereami = ""
getflag = 1
if indir <> "" then do
whereami = "DIRECTORY"(indir)
if whereami = "" then getflag = 0
end
if getflag = 1 then do
temp = RXQUEUE("DELETE","DIRQUE1")
nq = RXQUEUE("CREATE","DIRQUE1")
oq = RXQUEUE("SET",nq)
do i =1 to queued()
pull zzz
end
"@CD |" RXQUEUE nq
parse pull whereami
temp = RXQUEUE("DELETE",nq)
nq = RXQUEUE("SET",oq)
end
return whereami
help:
CALL msgbox GetMsg(msg.HELP_TEXT),GetMsg(msg.HELP_TITLE),"OK","ERROR"
irc = rc.USER_TERMINATED
SIGNAL CommonExit
BadCL:
CALL msgbox GetMsg(msg.BAD_CL_TEXT,CmdLine),GetMsg(msg.BAD_CL_TITLE),"OK","ERROR"
irc = rc.USER_TERMINATED
SIGNAL CommonExit
BadProfile:
CALL msgbox GetMsg(msg.BAD_PROFILE_TEXT, profile),GetMsg(msg.BAD_PROFILE_TITLE),"OK","ERROR"
irc = rc.BAD_EARLY
SIGNAL CommonExit
No_RexxUtils:
CALL msgbox GetMsg(msg.NO_REXXUTILS_TEXT),GetMsg(msg.NO_REXXUTILS_TITLE),"OK","ERROR"
irc = rc.BAD_EARLY
SIGNAL CommonExit
getout:
logfile = "caseng1.log"
TheRc = rc
CALL LINEOUT logfile,"CASENG1 error trapped."
IF DATATYPE(TheRc,'W') THEN
CALL LINEOUT logfile,"The error was" errortext(TheRc)
CALL LINEOUT logfile,"Error detected on line" sigl":"
CALL LINEOUT logfile,sourceline(sigl)
irc = rc.BAD_EARLY
SIGNAL CommonExit
CommonExit:
CALL STREAM "casent1.log",'c','close'
CALL LINEOUT "QUEUE:",irc
EXIT irc