home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lansystk.zip / MPTSUTIL / APPLETS / CASENG1.CMD < prev    next >
OS/2 REXX Batch file  |  1998-05-08  |  13KB  |  457 lines

  1. /* Stripped by STRIPRX.EXE */
  2. parse arg cmdline
  3. OPTIONS "ETMODE" 
  4. logfile = "caseng1.log"
  5. CALL LINEOUT logfile,"CasEng1 was invoked at" TIME() "on" DATE()
  6. CALL LINEOUT logfile,cmdline
  7. SIGNAL ON HALT NAME getout
  8. SIGNAL ON SYNTAX NAME getout
  9. irc = 99
  10. cq = "CASSETUPQ" 
  11. newq = RXQUEUE('Create',cq) 
  12. IF newq <> cq THEN
  13. CALL RXQUEUE "DELETE",newq
  14. oq = RXQUEUE('SET',cq) 
  15. CALL Init 
  16. cmdline = STRIP(cmdline,'b')
  17. IF LEFT(cmdline,2) = "/?" | LEFT(cmdline,2) = "-?" THEN SIGNAL help
  18. CALL LoadRexxUtil 
  19. IF ParseCL(cmdline) <> rc.GOOD_RC THEN 
  20. SIGNAL BadCL 
  21. CALL BuildReplacementMatrix 
  22. IF ParseProfile(profile)<>rc.GOOD_RC THEN 
  23. SIGNAL BadProfile 
  24. irc = ApplyApplication() 
  25. SIGNAL CommonExit
  26. Init:
  27. rc.GOOD_RC = 0
  28. rc.USER_TERMINATED = 1
  29. rc.BAD_EARLY = 22
  30. rc.BAD_LATE = 33
  31. rc.BAD_RC = 99
  32. rc.Popup_Environment = "cmsgbox"
  33. msg.MsgFileName = "cassetup.MSG"
  34. msgbase = 131
  35. msg.BAD_PARM_TEXT = msgbase + 0 
  36. msg.HELP_TEXT = msg.BAD_PARM_TEXT + 1 
  37. msg.HELP_TITLE = msg.HELP_TEXT + 1
  38. msg.BAD_CL_TEXT = msg.HELP_TITLE + 1
  39. msg.BAD_CL_TITLE = msg.BAD_CL_TEXT + 1
  40. msg.BAD_PROFILE_TEXT = msg.BAD_CL_TITLE + 1
  41. msg.BAD_PROFILE_TITLE = msg.BAD_PROFILE_TEXT + 1
  42. msg.NO_REXXUTILS_TEXT = msg.BAD_PROFILE_TITLE + 1
  43. msg.NO_REXXUTILS_TITLE = msg.NO_REXXUTILS_TEXT + 1
  44. msg.IN_DRIVE_TEXT = msg.NO_REXXUTILS_TITLE + 1
  45. msg.CMD_ERROR_TEXT = msg.IN_DRIVE_TEXT + 1
  46. msg.CMD_ERROR_TITLE = msg.CMD_ERROR_TEXT + 1
  47. msg.INSERT_DISKETTE_TITLE = msg.CMD_ERROR_TITLE + 1
  48. msg.CANCEL_TEXT = msg.INSERT_DISKETTE_TITLE + 1
  49. msg.CANCEL_TITLE = msg.CANCEL_TEXT + 1
  50. rc.MB_OK = 1
  51. rc.MB_CANCEL = 2
  52. rc.MB_ABORT = 3
  53. rc.MB_RETRY = 4
  54. rc.MB_IGNORE = 5
  55. rc.MB_YES = 6
  56. rc.MB_NO = 7
  57. rc.MB_ENTER = 8
  58. glob.curdir = SafeDirectory()
  59. PARSE SOURCE . . pgmfile
  60. loaddir = FILESPEC("DRIVE",pgmfile)||FILESPEC("PATH",pgmfile)
  61. RETURN
  62. ParseCL: PROCEDURE EXPOSE profile source target workdir dlldir fixdir errorTag errorData rc.
  63. parse arg cmdline
  64. profile = ""
  65. source = ""
  66. target = ""
  67. workdir = ""
  68. dlldir = ""
  69. fixdir = ""
  70. DO WHILE cmdline <> ""
  71. PARSE VAR cmdline parm cmdline
  72. PARSE VAR parm tag"="data
  73. tag = TRANSLATE(STRIP(tag, 'b'))
  74. tag = SUBSTR(tag,2) 
  75. SELECT
  76. WHEN tag = "P" THEN profile = strip(data,'b')
  77. WHEN tag = "S" THEN source = strip(data,'b')
  78. WHEN tag = "T" THEN target = strip(data,'b')
  79. WHEN tag = "W" THEN workdir = strip(data,'b')
  80. WHEN tag = "D" THEN dlldir = strip(data,'b')
  81. WHEN tag = "F" THEN fixdir = strip(data,'b')
  82. OTHERWISE nop 
  83. END 
  84. END 
  85. IF profile = "" THEN
  86. RETURN rc.BAD_RC
  87. IF STREAM(profile,'c','query exists') = "" THEN
  88. RETURN rc.BAD_RC
  89. IF target = "" THEN
  90. RETURN rc.BAD_RC
  91. CALL CreateDir(target)
  92. CALL SysFileTree target,"MYSTEM","D"
  93. IF MyStem.0 = 0 THEN
  94. RETURN rc.BAD_RC
  95. IF dlldir = "" THEN
  96. dlldir = workdir
  97. IF dlldir = "" THEN
  98. RETURN rc.BAD_RC
  99. CALL CreateDir(dlldir)
  100. CALL SysFileTree dlldir,"MYSTEM","D"
  101. IF MyStem.0 = 0 THEN
  102. RETURN rc.BAD_RC
  103. IF workdir = "" THEN
  104. RETURN rc.BAD_RC
  105. CALL CreateDir(workdir)
  106. CALL SysFileTree workdir,"MYSTEM","D"
  107. IF MyStem.0 = 0 THEN
  108. RETURN rc.BAD_RC
  109. ThePath = VALUE("PATH",,"OS2ENVIRONMENT")
  110. CALL VALUE "PATH",workdir";"ThePath,"OS2ENVIRONMENT"
  111. IF fixdir <> "" THEN
  112. CALL SysFileTree fixdir,"MYSTEM","D"
  113. IF MyStem.0 = 0 THEN
  114. RETURN rc.BAD_RC
  115. source = strip(source,'t','\')
  116. IF source = "" THEN
  117. RETURN rc.BAD_RC
  118. RETURN rc.GOOD_RC
  119. BuildReplacementMatrix: PROCEDURE EXPOSE app. source target loaddir workdir dlldir fixdir
  120. app.0MAT.0 = 10
  121. app.0MAT.1.0tag = "$S" 
  122. app.0MAT.1.0rep = source
  123. app.0MAT.2.0tag = "$T" 
  124. app.0MAT.2.0rep = target
  125. app.0MAT.3.0tag = "$C" 
  126. app.0MAT.3.0rep = loaddir
  127. app.0MAT.4.0tag = "$W"
  128. app.0MAT.4.0rep = workdir
  129. app.0MAT.5.0tag = "$D"
  130. app.0MAT.5.0rep = dlldir
  131. app.0MAT.6.0tag = "$F"
  132. app.0MAT.6.0rep = fixdir
  133. app.0MAT.7.0tag = "$A1"
  134. app.0MAT.7.0rep = LEFT(source,1)":"
  135. app.0MAT.8.0tag = "$A2"
  136. app.0MAT.8.0rep = LEFT(target,1)":"
  137. app.0MAT.9.0tag = "$A3"
  138. app.0MAT.9.0rep = LEFT(glob.curdir,1)":"
  139. app.0MAT.10.0tag = "$A4"
  140. app.0MAT.10.0rep = glob.curdir
  141. RETURN
  142. ParseProfile: PROCEDURE EXPOSE app. rc. msg.
  143. parse arg profile
  144. IF STREAM(profile,'c','query exists') = "" THEN RETURN rc.BAD_RC
  145. KWs = "APPNICK APPDIR OS PACKAGE PROGTYPE "
  146. KWs = KWs || "NUMDSKT METHOD COPYSUBDIR FIXTO FIXLEVEL "
  147. KWs = KWs || "MSSUBDIR PROMPT PROMPTRC"
  148. KStems = "SETUP MSCMD IMAGELOAD XDISKETTE"
  149. KWcnt = 13
  150. DO i = 1 to KWcnt
  151. INTERPRET "app."||WORD(KWs,i)||"="||"''"
  152. END
  153. app.SETUP.0 = 0
  154. app.MSCMD.0 = 0
  155. app.ImageLoad.0 = 0
  156. app.NUMDSKT = 0
  157. DO WHILE LINES(profile) > 0
  158. line = STRIP(LINEIN(profile),'b') 
  159. IF LEFT(line,1) = "*" | line = "" THEN 
  160. ITERATE
  161. PARSE VAR line key"="val 
  162. key = TRANSLATE(STRIP(key,'b'))
  163. PARSE VAR key keystem".".
  164. val = strip(val,'b')
  165. IF WORDPOS(keystem, KWs)<>0 | WORDPOS(keystem,KStems) <> 0 THEN
  166. INTERPRET "app."||key"='"val"'"
  167. END
  168. CALL STREAM profile,'c','CLOSE'
  169. IF DATATYPE(app.METHOD,"N") <> 1 THEN RETURN BAD_RC 
  170. IF app.METHOD < 1 | app.METHOD > 3 THEN RETURN BAD_RC 
  171. IF DATATYPE(app.ImageLoad.0,"N") <> 1 THEN
  172. app.ImageLoad.0 = 0
  173. IF DATATYPE(app.SETUP.0,"N") <> 1 THEN
  174. app.SETUP.0 = 0
  175. IF app.ImageLoad.0 < 1 & app.METHOD = 2 THEN RETURN BAD_RC 
  176. DO i = 1 to app.ImageLoad.0
  177. IF app.ImageLoad.i = "" THEN RETURN BAD_RC
  178. IF app.ImageLoad.i = "APP.IMAGELOAD."i THEN RETURN BAD_RC
  179. END
  180. DO i = 1 to app.SETUP.0
  181. IF DATATYPE(app.SETUP.i.0,"N") <> 1 THEN
  182. app.SETUP.i.0 = 0
  183. DO j = 1 to app.SETUP.i.0
  184. IF app.SETUP.i.j = "" THEN RETURN BAD_RC
  185. IF app.SETUP.i.j = "APP.SETUP."i"."j THEN RETURN BAD_RC
  186. END
  187. END
  188. IF app.OS <> 1 & app.OS <> 2 THEN app.OS = 1
  189. IF app.PACKAGE <> 1 & app.PACKAGE <> 2 THEN app.PACKAGE = 1
  190. IF app.PROGTYPE < 1 | app.PROGTYPE > 4 THEN app.PROGTYPE = 4
  191. RETURN rc.GOOD_RC
  192. ApplyApplication: PROCEDURE EXPOSE app. rc. msg.
  193. IF app.method = 3 THEN 
  194. DO
  195. CALL msgbox app.prompt,"Application Image Load Information","OK","INFORMATION"
  196. IF app.promptrc <> "" THEN 
  197. RETURN app.promptrc
  198. ELSE
  199. RETURN rc.GOOD_RC
  200. END 
  201. irc = DoSetupSteps() 
  202. IF irc <> rc.GOOD_RC THEN RETURN irc
  203. IF app.method = 1 THEN 
  204. irc = DoXCopyCommand()
  205. IF irc = rc.GOOD_RC THEN
  206. irc = DoCopyCommand()
  207. RETURN irc
  208. DoSetupSteps: PROCEDURE EXPOSE app. rc. msg.
  209. steps = app.SETUP.0
  210. DO i = 1 to steps
  211. IF app.SETUP.i = "APP.SETUP."i THEN 
  212. app.SETUP.i = ""
  213. IF app.SETUP.i <> "" THEN 
  214. DO
  215. TheMsg = GetMsg(msg.IN_DRIVE_TEXT,app.SETUP.i,app.0MAT.1.0rep)
  216. VolSer = ""
  217. MarkerFile = ""
  218. IF app.SETUP.i.0VolSer <> "APP.SETUP."i".0VOLSER" THEN
  219. VolSer = app.SETUP.i.0VolSer
  220. IF app.SETUP.i.0MarkerFile <> "APP.SETUP."i".0MARKERFILE" THEN
  221. IF STRIP(app.SETUP.i.0MarkerFile) <> "" THEN
  222. MarkerFile = app.SETUP.i.0MarkerFile
  223. AlwaysPrompt = app.SETUP.i.0AlwaysPrompt 
  224. irc = PromptForDiskette(TheMsg,volser,markerfile,AlwaysPrompt)
  225. IF irc <> rc.GOOD_RC THEN
  226. RETURN irc
  227. END
  228. commands = app.SETUP.i.0
  229. DO j = 1 to commands
  230. IF app.SETUP.i.j.0GOODRC <> "APP.SETUP."i"."j".0GOODRC" THEN
  231. TheGoodRc = app.SETUP.i.j.0GOODRC
  232. else
  233. TheGoodRc = 0
  234. irc = ExecuteCommand(app.SETUP.i.j,TheGoodRc)
  235. IF irc <> rc.GOOD_RC then
  236. RETURN irc
  237. END
  238. END
  239. RETURN rc.GOOD_RC
  240. DoXCopyCommand: PROCEDURE EXPOSE app. rc. msg.
  241. DO i = 1 to app.NumDskt
  242. msgtext = app.XDISKETTE.i.0Prompt
  243. IF msgtext = "APP.XDISKETTE."i".0PROMPT" THEN
  244. msgtext = "Diskette" i
  245. TheMsg = GetMsg(msg.IN_DRIVE_TEXT,msgtext,app.0MAT.1.0rep)
  246. TheVolSer = app.XDISKETTE.i.0VolSer
  247. IF TheVolSer = "APP.XDISKETTE."i".0VOLSER" THEN
  248. TheVolSer = ""
  249. TheMarkerFile = app.XDISKETTE.i.0MarkerFile
  250. IF TheMarkerFile = "APP.XDISKETTE."i".0MARKERFILE" THEN
  251. TheMarkerFile = ""
  252. AlwaysPrompt = app.XDISKETTE.i.0AlwaysPrompt 
  253. irc = PromptForDiskette(TheMsg,TheVolSer,TheMarkerFile,AlwaysPrompt)
  254. IF irc <> rc.GOOD_RC THEN
  255. RETURN irc
  256. IF app.COPYSUBDIR = "Y" THEN
  257. flag = "/s /e"
  258. ELSE
  259. flag = "/e"
  260. irc = ExecuteCommand("XCOPY $S\*.* $T" flag, "0")
  261. IF irc <> rc.GOOD_RC THEN
  262. LEAVE
  263. end 
  264. RETURN irc
  265. DoCopyCommand: PROCEDURE EXPOSE app. rc. msg.
  266. irc = rc.GOOD_RC
  267. DO i = 1 to app.ImageLoad.0
  268. IF POS(".",app.IMAGELOAD.i.0GOODRC) = 0 THEN
  269. TheGoodRc = app.IMAGELOAD.i.0GoodRC
  270. ELSE
  271. TheGoodRc = 0
  272. irc = ExecuteCommand(app.IMAGELOAD.i,TheGoodRC)
  273. IF irc <> rc.GOOD_RC THEN
  274. LEAVE
  275. END
  276. RETURN irc
  277. ExecuteCommand: PROCEDURE EXPOSE app. rc. msg.
  278. arg cmdline,goodrcs
  279. logfile = "caseng1.log"
  280. cmdline = StringReplace(cmdline)
  281. CALL LINEOUT logfile,cmdline
  282. ADDRESS CMD "@cmd /C" cmdline
  283. TheRC = rc
  284. CALL LINEOUT logfile,"The return code was" TheRc
  285. DO i = 1 to WORDS(goodrcs)
  286. IF TheRC = WORD(goodrcs,i) THEN
  287. RETURN rc.GOOD_RC
  288. END
  289. CALL msgbox GetMsg(msg.CMD_ERROR_TEXT,cmdline,TheRc),GetMsg(msg.CMD_ERROR_TITLE),"OK","ERROR"
  290. ADDRESS CMD "@PAUSE"
  291. RETURN rc.BAD_LATE
  292. PromptForDiskette: PROCEDURE EXPOSE app. rc. msg. 
  293. parse arg TheMsg,VolSer,MarkerFile,AlwaysPrompt 
  294. SomethingToCheck = 0 
  295. IF VolSer <> "" | MarkerFile <> "" THEN
  296. SomethingToCheck = 1
  297. loop = 1
  298. DO WHILE loop = 1
  299. IF AlwaysPrompt = 1 | CheckForDiskinDrive(VolSer,MarkerFile) = 0 THEN 
  300. DO
  301. irc = msgbox(TheMsg,GetMsg(msg.INSERT_DISKETTE_TITLE),"OKCANCEL","WARNING")
  302. IF irc <> rc.MB_OK THEN
  303. return rc.USER_TERMINATED
  304. END
  305. loop = 0
  306. IF CheckForDiskinDrive(VolSer,MarkerFile) = 0 THEN
  307. loop = 1
  308. END
  309. RETURN rc.GOOD_RC
  310. CheckForDiskInDrive: PROCEDURE EXPOSE app. rc.
  311. parse arg VolSer,MarkerFile
  312. source = LEFT(app.0MAT.1.0rep,1)
  313. driveinfo = SysDriveInfo(source)
  314. IF driveinfo = "" THEN RETURN 0
  315. IF VolSer <> "" THEN
  316. DO
  317. Parse Var driveinfo . . . vollbl
  318. IF STRIP(vollbl,'b') <> volser THEN
  319. RETURN 0
  320. END
  321. IF MarkerFile <> "" THEN
  322. DO
  323. path = STRIP(app.0MAT.1.0rep,'t','\')
  324. CALL SysFileTree path"\"MarkerFile,"MYSTEM","F"
  325. IF MyStem.0 = 0 THEN
  326. RETURN 0
  327. END
  328. RETURN 1
  329. LoadRexxUtil: PROCEDURE EXPOSE rc.
  330. irc = RxFuncAdd("SysLoadFuncs","REXXUTIL","SysLoadFuncs")
  331. irc = RxFuncQuery("SysLoadFuncs")
  332. IF irc <> 0 THEN SIGNAL No_RexxUtils
  333. irc = SysLoadFuncs()
  334. RETURN
  335. GetMsg: PROCEDURE EXPOSE rc. msg.
  336. parse arg msgno,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  337. TheMsg = SysGetMessage(msgno,msg.MsgFileName,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9)
  338. IF rc.Popup_Environment = "cmsgbox" THEN
  339. DO 
  340. CRLF = D2C(13)||D2C(10)
  341. n = POS(CRLF,TheMsg)
  342. DO WHILE n > 0
  343. TheMsg = OVERLAY(" ~",TheMsg,n,2)
  344. n = POS(CRLF,TheMsg)
  345. END
  346. END
  347. RETURN TheMsg
  348. msgbox: PROCEDURE EXPOSE rc. msg.
  349. PARSE ARG message,title,buttons,icon
  350. done = 0
  351. DO WHILE done = 0
  352. done = 1
  353. IF rc.Popup_Environment = "cmsgbox" THEN
  354. DO
  355. message = TRANSLATE(message,"'",'"')
  356. title = TRANSLATE(title,"'",'"')
  357. message = '"'message'"'
  358. title = '"'title'"'
  359. ADDRESS CMD '@cmsgbox' message title buttons icon
  360. irc = rc
  361. END
  362. ELSE
  363. irc = RxMessageBox(message,title,buttons,icon)
  364. IF irc = rc.MB_CANCEL THEN
  365. DO
  366. circ = msgbox(GetMsg(msg.Cancel_Text),GetMsg(msg.Cancel_Title),"YESNO","WARNING")
  367. IF circ = rc.MB_NO THEN
  368. done = 0
  369. END
  370. END
  371. RETURN irc
  372. CreateDir: PROCEDURE EXPOSE rc.
  373. arg path
  374. workpath = path
  375. segments.0 = 0
  376. CALL SysMkDir workpath
  377. MyStem.0 = 0
  378. CALL SysFileTree workpath,"MYSTEM","D"
  379. IF MyStem.0 > 0 THEN
  380. RETURN rc.GOOD_RC
  381. DO while workpath <> ""
  382. PARSE VAR workpath ThisSeg"\"workpath
  383. i = segments.0 + 1
  384. segments.i = ThisSeg
  385. segments.0 = i
  386. END
  387. workpath = segments.1
  388. CALL SysMkDir workpath
  389. DO i = 2 to segments.0
  390. workpath = workpath || "\" || segments.i
  391. CALL SysMkDir workpath
  392. END
  393. RETURN
  394. StringReplace: PROCEDURE EXPOSE app.
  395. arg TheString
  396. Do i = 1 to app.0MAT.0
  397. len = LENGTH(app.0MAT.i.0tag) - 1
  398. n = POS(app.0MAT.i.0tag,TheString)
  399. DO WHILE n > 0
  400. NewString = SUBSTR(TheString,1,n-1)||app.0MAT.i.0rep||SUBSTR(TheString,n+len+1)
  401. TheString = NewString
  402. n = POS(app.0MAT.i.0tag,TheString)
  403. END
  404. END
  405. RETURN TheString
  406. SafeDIRECTORY: procedure
  407. parse arg indir
  408. whereami = ""
  409. getflag = 1
  410. if indir <> "" then do
  411. whereami = "DIRECTORY"(indir)
  412. if whereami = "" then getflag = 0
  413. end
  414. if getflag = 1 then do
  415. temp = RXQUEUE("DELETE","DIRQUE1")
  416. nq = RXQUEUE("CREATE","DIRQUE1")
  417. oq = RXQUEUE("SET",nq)
  418. do i =1 to queued()
  419. pull zzz
  420. end
  421. "@CD |" RXQUEUE nq
  422. parse pull whereami
  423. temp = RXQUEUE("DELETE",nq)
  424. nq = RXQUEUE("SET",oq)
  425. end
  426. return whereami
  427. help:
  428. CALL msgbox GetMsg(msg.HELP_TEXT),GetMsg(msg.HELP_TITLE),"OK","ERROR"
  429. irc = rc.USER_TERMINATED
  430. SIGNAL CommonExit
  431. BadCL:
  432. CALL msgbox GetMsg(msg.BAD_CL_TEXT,CmdLine),GetMsg(msg.BAD_CL_TITLE),"OK","ERROR"
  433. irc = rc.USER_TERMINATED
  434. SIGNAL CommonExit
  435. BadProfile:
  436. CALL msgbox GetMsg(msg.BAD_PROFILE_TEXT, profile),GetMsg(msg.BAD_PROFILE_TITLE),"OK","ERROR"
  437. irc = rc.BAD_EARLY
  438. SIGNAL CommonExit
  439. No_RexxUtils:
  440. CALL msgbox GetMsg(msg.NO_REXXUTILS_TEXT),GetMsg(msg.NO_REXXUTILS_TITLE),"OK","ERROR"
  441. irc = rc.BAD_EARLY
  442. SIGNAL CommonExit
  443. getout:
  444. logfile = "caseng1.log"
  445. TheRc = rc
  446. CALL LINEOUT logfile,"CASENG1 error trapped."
  447. IF DATATYPE(TheRc,'W') THEN
  448. CALL LINEOUT logfile,"The error was" errortext(TheRc)
  449. CALL LINEOUT logfile,"Error detected on line" sigl":"
  450. CALL LINEOUT logfile,sourceline(sigl)
  451. irc = rc.BAD_EARLY
  452. SIGNAL CommonExit
  453. CommonExit:
  454. CALL STREAM "casent1.log",'c','close'
  455. CALL LINEOUT "QUEUE:",irc
  456. EXIT irc
  457.